diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2015-04-13 22:29:58 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2015-04-24 09:36:54 -0400 |
commit | 1f934641294ca2e09016c689862378fbb15da4d4 (patch) | |
tree | 2f453af63dd7cd40f336a668c95635fcdba6e250 /arch/x86/kernel/apic/io_apic.c | |
parent | 0be275e3a5607b23f5132121bca22a10ee23aa99 (diff) |
x86/irq: Remove sis apic bug workaround
The SiS apic bug workaround is now obsolete as we cache the register
values for performance reasons.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Cohen <david.a.cohen@linux.intel.com>
Cc: Sander Eikelenboom <linux@eikelenboom.it>
Cc: David Vrabel <david.vrabel@citrix.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dimitri Sivanich <sivanich@sgi.com>
Cc: Grant Likely <grant.likely@linaro.org>
Link: http://lkml.kernel.org/r/1428978610-28986-22-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/apic/io_apic.c')
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 4fb347f01653..9806f9605bc4 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -18,6 +18,16 @@ | |||
18 | * and Rolf G. Tews | 18 | * and Rolf G. Tews |
19 | * for testing these extensively | 19 | * for testing these extensively |
20 | * Paul Diefenbaugh : Added full ACPI support | 20 | * Paul Diefenbaugh : Added full ACPI support |
21 | * | ||
22 | * Historical information which is worth to be preserved: | ||
23 | * | ||
24 | * - SiS APIC rmw bug: | ||
25 | * | ||
26 | * We used to have a workaround for a bug in SiS chips which | ||
27 | * required to rewrite the index register for a read-modify-write | ||
28 | * operation as the chip lost the index information which was | ||
29 | * setup for the read already. We cache the data now, so that | ||
30 | * workaround has been removed. | ||
21 | */ | 31 | */ |
22 | 32 | ||
23 | #include <linux/mm.h> | 33 | #include <linux/mm.h> |
@@ -66,17 +76,6 @@ | |||
66 | #define for_each_irq_pin(entry, head) \ | 76 | #define for_each_irq_pin(entry, head) \ |
67 | list_for_each_entry(entry, &head, list) | 77 | list_for_each_entry(entry, &head, list) |
68 | 78 | ||
69 | /* | ||
70 | * Is the SiS APIC rmw bug present ? | ||
71 | * -1 = don't know, 0 = no, 1 = yes | ||
72 | * When doing a read-modify-write operation on IOAPIC registers, older SiS APIC | ||
73 | * requires we rewrite the index register again where the read already set up | ||
74 | * the index register. | ||
75 | * The code to make use of sis_apic_bug has been removed, but we don't want to | ||
76 | * lose this knowledge. | ||
77 | */ | ||
78 | int sis_apic_bug = -1; | ||
79 | |||
80 | static DEFINE_RAW_SPINLOCK(ioapic_lock); | 79 | static DEFINE_RAW_SPINLOCK(ioapic_lock); |
81 | static DEFINE_MUTEX(ioapic_mutex); | 80 | static DEFINE_MUTEX(ioapic_mutex); |
82 | static unsigned int ioapic_dynirq_base; | 81 | static unsigned int ioapic_dynirq_base; |
@@ -2320,20 +2319,6 @@ void __init setup_IO_APIC(void) | |||
2320 | ioapic_initialized = 1; | 2319 | ioapic_initialized = 1; |
2321 | } | 2320 | } |
2322 | 2321 | ||
2323 | /* | ||
2324 | * Called after all the initialization is done. If we didn't find any | ||
2325 | * APIC bugs then we can allow the modify fast path | ||
2326 | */ | ||
2327 | |||
2328 | static int __init io_apic_bug_finalize(void) | ||
2329 | { | ||
2330 | if (sis_apic_bug == -1) | ||
2331 | sis_apic_bug = 0; | ||
2332 | return 0; | ||
2333 | } | ||
2334 | |||
2335 | late_initcall(io_apic_bug_finalize); | ||
2336 | |||
2337 | static void resume_ioapic_id(int ioapic_idx) | 2322 | static void resume_ioapic_id(int ioapic_idx) |
2338 | { | 2323 | { |
2339 | unsigned long flags; | 2324 | unsigned long flags; |