From 41b12ce3c47df492fe4591e8099d304ace7c809d Mon Sep 17 00:00:00 2001 From: "Suresh B. Siddha" Date: Mon, 18 Oct 2004 09:02:26 -0700 Subject: [PATCH] Disable SW irqbalance/irqaffinity for E7520/E7320/E7525 v2 As part of the workaround for the "Interrupt message re-ordering across hub interface" errata (page #16 in http://developer.intel.com/design/chipsets/specupdt/30288402.pdf), BIOS may enable hardware IRQ balancing for E7520/E7320/E7525(revision ID 0x9 and below) based platforms. Add pci quirks to disable SW irqbalance/affinity on those platforms. Move balanced_irq_init() to late_initcall so that kirqd will be started after pci quirks. Signed-off-by: Suresh Siddha Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- kernel/irq/proc.c | 3 ++- kernel/irq/spurious.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'kernel') diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index e29a833e065f..2ddbe8404c9c 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c @@ -32,13 +32,14 @@ static int irq_affinity_read_proc(char *page, char **start, off_t off, return len; } +int no_irq_affinity; static int irq_affinity_write_proc(struct file *file, const char __user *buffer, unsigned long count, void *data) { unsigned int irq = (int)(long)data, full_count = count, err; cpumask_t new_value, tmp; - if (!irq_desc[irq].handler->set_affinity) + if (!irq_desc[irq].handler->set_affinity || no_irq_affinity) return -EIO; err = cpumask_parse(buffer, count, new_value); diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index 3081611f9a23..f6297c306905 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c @@ -85,7 +85,7 @@ void note_interrupt(unsigned int irq, irq_desc_t *desc, irqreturn_t action_ret) int noirqdebug; -static int __init noirqdebug_setup(char *str) +int __init noirqdebug_setup(char *str) { noirqdebug = 1; printk(KERN_INFO "IRQ lockup detection disabled\n"); -- cgit v1.2.3