Re: [PATCH] CPEI gets warning at kernel/irq/migration.c:27/move_masked_irq()
Arjan van de Ven wrote: >> It'd be nice if we could just teach the userspace balancer to not try to >> move perpcu IRQs? >> >> otoh, the patch is super-cheap. Arjan? > > I can fix irqbalance no problem, however I like the kernel approach as > well, since it's not just irqbalance that moves irqs, sysadmins tend to > do it as well so how about both? Thanks for positive comments. > One thing we probably should do, and that would help irqbalance > immensely, is to export a bitmask for which cpus an interrupt CAN go to, > next to where the current binding interface is. I'll check into that > > Hidetoshi: would it be possible to send me a /proc/interrupts file of > that machine? Here you are. This machine is not special. I guess all ia64 machine will show few or more but almost same lines. CPEI is #30. $ cat /proc/interrupts CPU0 CPU1 28: 0 0 LSAPIC cpe_poll 29: 0 0 LSAPIC cmc_poll 30: 0 0 IO-SAPIC-level cpe_hndlr 31: 0 0 LSAPIC cmc_hndlr 34: 46431881067 IO-SAPIC-edge ide0 39: 0 0 IO-SAPIC-level acpi 45:148560 IO-SAPIC-edge serial 48: 0 0 IO-SAPIC-level uhci_hcd 49: 0 0 IO-SAPIC-level uhci_hcd 50: 0 0 IO-SAPIC-level ehci_hcd 51: 211311257790 IO-SAPIC-level eth0 53: 21778 458314 IO-SAPIC-level ioc0 54: 0 44 IO-SAPIC-level ioc1 232: 0 0 LSAPIC mca_rdzv 238: 0 0 LSAPIC perfmon 239: 214832233 214832003 LSAPIC timer 240: 0 0 LSAPIC mca_wkup 254: 209193611 LSAPIC IPI ERR: 0 Thanks, H.Seto - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] CPEI gets warning at kernel/irq/migration.c:27/move_masked_irq()
> It'd be nice if we could just teach the userspace balancer to not try to > move perpcu IRQs? > > otoh, the patch is super-cheap. Arjan? I can fix irqbalance no problem, however I like the kernel approach as well, since it's not just irqbalance that moves irqs, sysadmins tend to do it as well so how about both? One thing we probably should do, and that would help irqbalance immensely, is to export a bitmask for which cpus an interrupt CAN go to, next to where the current binding interface is. I'll check into that Hidetoshi: would it be possible to send me a /proc/interrupts file of that machine? -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] CPEI gets warning at kernel/irq/migration.c:27/move_masked_irq()
On Tue, 05 Dec 2006 16:35:06 +0900 Hidetoshi Seto <[EMAIL PROTECTED]> wrote: > Hi, > > While running my MCA test (hardware error injection) on 2.6.19, > I got some warning like following: > > > BUG: warning at kernel/irq/migration.c:27/move_masked_irq() > > > > Call Trace: > > [] show_stack+0x40/0xa0 > > sp=e0006b2578d0 bsp=e0006b2510b0 > > [] dump_stack+0x30/0x60 > > sp=e0006b257aa0 bsp=e0006b251098 > > [] move_masked_irq+0xb0/0x240 > > sp=e0006b257aa0 bsp=e0006b251070 > > [] move_native_irq+0xe0/0x180 > > sp=e0006b257aa0 bsp=e0006b251040 > > [] iosapic_end_level_irq+0x30/0xe0 > > sp=e0006b257aa0 bsp=e0006b251020 > > [] __do_IRQ+0x170/0x400 > > sp=e0006b257aa0 bsp=e0006b250fd8 > > [] ia64_handle_irq+0x1b0/0x260 > > sp=e0006b257aa0 bsp=e0006b250fa8 > > [] ia64_leave_kernel+0x0/0x280 > > sp=e0006b257aa0 bsp=e0006b250fa8 > > [] _spin_unlock_irqrestore+0x30/0x60 > > sp=e0006b257c70 bsp=e0006b250f90 > > It comes from: > > [kernel/irq/migration.c] > 26 if (CHECK_IRQ_PER_CPU(desc->status)) { > 27 WARN_ON(1); > 28 return; > 29 } > > By putting some printk in kernel, I found that irqbalance is trying to > move CPEI which is handled as PER_CPU irq. That's why. > > CPEI(Corrected Platform Error Interrupt) is ia64 specific irq, is > allowed to pin to particular processor which selected by the platform, and > even it is PER_CPU but it has set_affinity handler (=iosapic_set_affinity) > as same as other IO-SAPIC-level interrupts. (I don't know why, but > I guess that there would be typical situation where the handler for > migration is needed, such as hotplug - the processor going to be > offline/hot-removed.) > > To shut up this warning, there are 2 way at least: > a) fix CPEI stuff > b) prohibit setting affinity to PER_CPU irq > > I'm not sure what stuff of CPEI need to be fixed, but I think that > returning error to attempting move PER_CPU irq is useful for all > applications since it will never work. > > Following small patch takes b) style. > It works, the warning disappeared and irqbalance still runs well. > > Thanks, > H.Seto > > Signed-off-by: Hidetoshi Seto <[EMAIL PROTECTED]> > > --- > kernel/irq/proc.c |3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > Index: linux-2.6.19/kernel/irq/proc.c > === > --- linux-2.6.19.orig/kernel/irq/proc.c > +++ linux-2.6.19/kernel/irq/proc.c > @@ -54,7 +54,8 @@ static int irq_affinity_write_proc(struc > unsigned int irq = (int)(long)data, full_count = count, err; > cpumask_t new_value, tmp; > > - if (!irq_desc[irq].chip->set_affinity || no_irq_affinity) > + if (!irq_desc[irq].chip->set_affinity || no_irq_affinity || > + CHECK_IRQ_PER_CPU(irq_desc[irq].status)) > return -EIO; It'd be nice if we could just teach the userspace balancer to not try to move perpcu IRQs? otoh, the patch is super-cheap. Arjan? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] CPEI gets warning at kernel/irq/migration.c:27/move_masked_irq()
Hi, While running my MCA test (hardware error injection) on 2.6.19, I got some warning like following: > BUG: warning at kernel/irq/migration.c:27/move_masked_irq() > > Call Trace: > [] show_stack+0x40/0xa0 > sp=e0006b2578d0 bsp=e0006b2510b0 > [] dump_stack+0x30/0x60 > sp=e0006b257aa0 bsp=e0006b251098 > [] move_masked_irq+0xb0/0x240 > sp=e0006b257aa0 bsp=e0006b251070 > [] move_native_irq+0xe0/0x180 > sp=e0006b257aa0 bsp=e0006b251040 > [] iosapic_end_level_irq+0x30/0xe0 > sp=e0006b257aa0 bsp=e0006b251020 > [] __do_IRQ+0x170/0x400 > sp=e0006b257aa0 bsp=e0006b250fd8 > [] ia64_handle_irq+0x1b0/0x260 > sp=e0006b257aa0 bsp=e0006b250fa8 > [] ia64_leave_kernel+0x0/0x280 > sp=e0006b257aa0 bsp=e0006b250fa8 > [] _spin_unlock_irqrestore+0x30/0x60 > sp=e0006b257c70 bsp=e0006b250f90 It comes from: [kernel/irq/migration.c] 26 if (CHECK_IRQ_PER_CPU(desc->status)) { 27 WARN_ON(1); 28 return; 29 } By putting some printk in kernel, I found that irqbalance is trying to move CPEI which is handled as PER_CPU irq. That's why. CPEI(Corrected Platform Error Interrupt) is ia64 specific irq, is allowed to pin to particular processor which selected by the platform, and even it is PER_CPU but it has set_affinity handler (=iosapic_set_affinity) as same as other IO-SAPIC-level interrupts. (I don't know why, but I guess that there would be typical situation where the handler for migration is needed, such as hotplug - the processor going to be offline/hot-removed.) To shut up this warning, there are 2 way at least: a) fix CPEI stuff b) prohibit setting affinity to PER_CPU irq I'm not sure what stuff of CPEI need to be fixed, but I think that returning error to attempting move PER_CPU irq is useful for all applications since it will never work. Following small patch takes b) style. It works, the warning disappeared and irqbalance still runs well. Thanks, H.Seto Signed-off-by: Hidetoshi Seto <[EMAIL PROTECTED]> --- kernel/irq/proc.c |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-2.6.19/kernel/irq/proc.c === --- linux-2.6.19.orig/kernel/irq/proc.c +++ linux-2.6.19/kernel/irq/proc.c @@ -54,7 +54,8 @@ static int irq_affinity_write_proc(struc unsigned int irq = (int)(long)data, full_count = count, err; cpumask_t new_value, tmp; - if (!irq_desc[irq].chip->set_affinity || no_irq_affinity) + if (!irq_desc[irq].chip->set_affinity || no_irq_affinity || + CHECK_IRQ_PER_CPU(irq_desc[irq].status)) return -EIO; err = cpumask_parse_user(buffer, count, new_value); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/