aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/io_apic.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2015-04-13 22:29:58 -0400
committerThomas Gleixner <tglx@linutronix.de>2015-04-24 09:36:54 -0400
commit1f934641294ca2e09016c689862378fbb15da4d4 (patch)
tree2f453af63dd7cd40f336a668c95635fcdba6e250 /arch/x86/kernel/apic/io_apic.c
parent0be275e3a5607b23f5132121bca22a10ee23aa99 (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.c35
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 */
78int sis_apic_bug = -1;
79
80static DEFINE_RAW_SPINLOCK(ioapic_lock); 79static DEFINE_RAW_SPINLOCK(ioapic_lock);
81static DEFINE_MUTEX(ioapic_mutex); 80static DEFINE_MUTEX(ioapic_mutex);
82static unsigned int ioapic_dynirq_base; 81static 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
2328static int __init io_apic_bug_finalize(void)
2329{
2330 if (sis_apic_bug == -1)
2331 sis_apic_bug = 0;
2332 return 0;
2333}
2334
2335late_initcall(io_apic_bug_finalize);
2336
2337static void resume_ioapic_id(int ioapic_idx) 2322static void resume_ioapic_id(int ioapic_idx)
2338{ 2323{
2339 unsigned long flags; 2324 unsigned long flags;