diff options
| author | Suresh B. Siddha <suresh.b.siddha@intel.com> | 2004-10-18 09:02:26 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-10-18 09:02:26 -0700 |
| commit | 41b12ce3c47df492fe4591e8099d304ace7c809d (patch) | |
| tree | 0d11afae5e3cced630038264fbe6c9cfce9fd05b /kernel | |
| parent | c2634010e63ddba0efee4546b3f10f4d19acace2 (diff) | |
[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 <suresh.b.siddha@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/proc.c | 3 | ||||
| -rw-r--r-- | kernel/irq/spurious.c | 2 |
2 files changed, 3 insertions, 2 deletions
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"); |
