diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-07-05 08:31:29 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-07-05 08:31:29 +0100 |
commit | 52ff658b7e69e45f00679b7f1a29d25ab7ed7f8e (patch) | |
tree | 879b8c70575e6963c2778e10b23583664dcc1cc1 /xen/include/asm-x86/io_apic.h | |
parent | 19fbbfffdc2e8ad2c20f577e2a3e9b46a8a9e1da (diff) | |
download | xen-52ff658b7e69e45f00679b7f1a29d25ab7ed7f8e.tar.gz xen-52ff658b7e69e45f00679b7f1a29d25ab7ed7f8e.tar.bz2 xen-52ff658b7e69e45f00679b7f1a29d25ab7ed7f8e.zip |
x2APIC: improve enabling logic
This patch masks PIC and IOAPIC RTE's before x2APIC enabling, unmask
and restore them after x2APIC enabling. It also really enables
interrupt remapping before x2APIC enabling instead of just checking
interrupt remapping setting. This patch also handles all x2APIC
configuration including BIOS settings and command line
settings. Especially, it handles that BIOS hands over in x2APIC mode
(when there is apic id > 255). It checks if x2APIC is already enabled
by BIOS. If already enabled, it will disable interrupt remapping and
queued invalidation first, then enable them again.
Signed-off-by: Weidong Han <weidong.han@intel.com>
Diffstat (limited to 'xen/include/asm-x86/io_apic.h')
-rw-r--r-- | xen/include/asm-x86/io_apic.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/include/asm-x86/io_apic.h b/xen/include/asm-x86/io_apic.h index d546380435..7d577f39d6 100644 --- a/xen/include/asm-x86/io_apic.h +++ b/xen/include/asm-x86/io_apic.h @@ -199,6 +199,12 @@ extern int (*ioapic_renumber_irq)(int ioapic, int irq); extern void ioapic_suspend(void); extern void ioapic_resume(void); +extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); +extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); +extern int save_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); +extern void mask_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); +extern int restore_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); + #else /* !CONFIG_X86_IO_APIC */ static inline void init_ioapic_mappings(void) {} static inline void ioapic_suspend(void) {} |