diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2009-04-20 16:02:30 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-22 06:03:04 -0400 |
commit | ff166cb57a17124af75714a9c11f448f56f1a4a3 (patch) | |
tree | 3f8ea84c24a7dbe82a35172ecc7203880d755ffa /arch/x86/kernel/apic/io_apic.c | |
parent | 9d6c26e73bd248c286bb3597aaf788716e8fcceb (diff) |
x86: x2apic, IR: remove reinit_intr_remapped_IO_APIC()
When interrupt-remapping is enabled, we are relying on
setup_IO_APIC_irqs() to configure remapped entries in the
IO-APIC, which comes little bit later after enabling
interrupt-remapping.
Meanwhile, restoration of old io-apic entries after enabling
interrupt-remapping will not make the interrupts through
io-apic functional anyway.
So remove the unnecessary reinit_intr_remapped_IO_APIC() step.
The longer story:
When interrupt-remapping is enabled, IO-APIC entries need to be
setup in the re-mappable format (pointing to
interrupt-remapping table entries setup by the OS). This
remapping configuration is happening in the same place where we
traditionally configure IO-APIC (i.e., in
setup_IO_APIC_irqs()).
So when we enable interrupt-remapping successfully, there is no
need to restore old io-apic RTE entries before we actually do a
complete configuration shortly in setup_IO_APIC_irqs(). Old
IO-APIC RTE's may be in traditional format (non re-mappable) or
in re-mappable format pointing to interrupt-remapping table
entries setup by BIOS. Restoring both of these will not make
IO-APIC functional. We have to rely on setup_IO_APIC_irqs() for
proper configuration by OS.
So I am removing this unnecessary and broken step.
[ Impact: remove unnecessary/broken IO-APIC setup step ]
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Acked-by: Weidong Han <weidong.han@intel.com>
Cc: dwmw2@infradead.org
LKML-Reference: <20090420200450.552359000@linux-os.sc.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic/io_apic.c')
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 14 |
1 files changed, 0 insertions, 14 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 4baa9cbd630a..8aef5f9d9479 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -833,20 +833,6 @@ int restore_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries) | |||
833 | return 0; | 833 | return 0; |
834 | } | 834 | } |
835 | 835 | ||
836 | void reinit_intr_remapped_IO_APIC(int intr_remapping, | ||
837 | struct IO_APIC_route_entry **ioapic_entries) | ||
838 | |||
839 | { | ||
840 | /* | ||
841 | * for now plain restore of previous settings. | ||
842 | * TBD: In the case of OS enabling interrupt-remapping, | ||
843 | * IO-APIC RTE's need to be setup to point to interrupt-remapping | ||
844 | * table entries. for now, do a plain restore, and wait for | ||
845 | * the setup_IO_APIC_irqs() to do proper initialization. | ||
846 | */ | ||
847 | restore_IO_APIC_setup(ioapic_entries); | ||
848 | } | ||
849 | |||
850 | void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries) | 836 | void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries) |
851 | { | 837 | { |
852 | int apic; | 838 | int apic; |