Re: dummy irq trace 'Flags mismatch'
On Tue, 30 Apr 2013 06:59:22 +0200 (CEST) Jiri Kosina wrote: > Or have it depend on CONFIG_EXPERT would probably make most sense ... ? We could also just have it tell you when you screwed up? Something like the following (compile tested only)? jon --- dummy-irq: require the user to specify an IRQ number Reported-by: Dave Jones Signed-off-by: Jonathan Corbet diff --git a/drivers/misc/dummy-irq.c b/drivers/misc/dummy-irq.c index 7014167..c37eeed 100644 --- a/drivers/misc/dummy-irq.c +++ b/drivers/misc/dummy-irq.c @@ -19,7 +19,7 @@ #include #include -static int irq; +static int irq = -1; static irqreturn_t dummy_interrupt(int irq, void *dev_id) { @@ -36,6 +36,10 @@ static irqreturn_t dummy_interrupt(int irq, void *dev_id) static int __init dummy_irq_init(void) { + if (irq < 0) { + printk(KERN_ERR "dummy-irq: no IRQ given. Use irq=N\n"); + return -EIO; + } if (request_irq(irq, _interrupt, IRQF_SHARED, "dummy_irq", )) { printk(KERN_ERR "dummy-irq: cannot register IRQ %d\n", irq); return -EIO; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: dummy irq trace 'Flags mismatch'
On Tue, 30 Apr 2013 06:59:22 +0200 (CEST) Jiri Kosina jkos...@suse.cz wrote: Or have it depend on CONFIG_EXPERT would probably make most sense ... ? We could also just have it tell you when you screwed up? Something like the following (compile tested only)? jon --- dummy-irq: require the user to specify an IRQ number Reported-by: Dave Jones da...@redhat.com Signed-off-by: Jonathan Corbet cor...@lwn.net diff --git a/drivers/misc/dummy-irq.c b/drivers/misc/dummy-irq.c index 7014167..c37eeed 100644 --- a/drivers/misc/dummy-irq.c +++ b/drivers/misc/dummy-irq.c @@ -19,7 +19,7 @@ #include linux/irq.h #include linux/interrupt.h -static int irq; +static int irq = -1; static irqreturn_t dummy_interrupt(int irq, void *dev_id) { @@ -36,6 +36,10 @@ static irqreturn_t dummy_interrupt(int irq, void *dev_id) static int __init dummy_irq_init(void) { + if (irq 0) { + printk(KERN_ERR dummy-irq: no IRQ given. Use irq=N\n); + return -EIO; + } if (request_irq(irq, dummy_interrupt, IRQF_SHARED, dummy_irq, irq)) { printk(KERN_ERR dummy-irq: cannot register IRQ %d\n, irq); return -EIO; -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: dummy irq trace 'Flags mismatch'
On Mon, 29 Apr 2013, Dave Jones wrote: > When set to built-in, the dummy irq driver causes this trace when I boot.. > > [3.996055] genirq: Flags mismatch irq 0. 0080 (dummy_irq) vs. > 00015a20 (timer) > [3.997055] Pid: 1, comm: swapper/0 Not tainted 3.9.0+ #29 > [3.997768] Call Trace: > [3.998127] [] __setup_irq+0x515/0x550 > [3.998827] [] ? loop_init+0x150/0x150 > [3.999530] [] ? transfer_xor+0x160/0x160 > [4.000259] [] request_threaded_irq+0xf9/0x1a0 > [4.001041] [] ? loop_init+0x150/0x150 > [4.001740] [] dummy_irq_init+0x2c/0x60 > [4.002450] [] do_one_initcall+0x122/0x170 > [4.003191] [] kernel_init_freeable+0x15b/0x1db > [4.003978] [] ? do_early_param+0x88/0x88 > [4.004710] [] ? rest_init+0x140/0x140 > [4.005413] [] kernel_init+0xe/0x180 > [4.006094] [] ret_from_fork+0x7c/0xb0 > [4.006789] [] ? rest_init+0x140/0x140 > [4.007561] dummy-irq: cannot register IRQ 0 Thanks for the report, Dave. That's actually kind of expected -- when one of the handlers on the IRQ line that is being debugged doesn't share IRQs, this is exactly what you want to get by the dummy-irq debugging facility. In this case you haven't specified any IRQ# to the dummy-irq driver via kernel commandline, i.e. IRQ# is 0, and timer is not sharing IRQs, therefore dummy-irq debugging facility did its job, and you know that the IRQ can't be shared. Not really sure whether this is something to fix. We could make dummy-irq a module-only thing, but that might be counter-productive in cases you really want to debug very early problems. Or have it depend on CONFIG_EXPERT would probably make most sense ... ? Thanks, -- Jiri Kosina SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: dummy irq trace 'Flags mismatch'
On Mon, 29 Apr 2013, Dave Jones wrote: When set to built-in, the dummy irq driver causes this trace when I boot.. [3.996055] genirq: Flags mismatch irq 0. 0080 (dummy_irq) vs. 00015a20 (timer) [3.997055] Pid: 1, comm: swapper/0 Not tainted 3.9.0+ #29 [3.997768] Call Trace: [3.998127] [810f8635] __setup_irq+0x515/0x550 [3.998827] [81f00e8c] ? loop_init+0x150/0x150 [3.999530] [8146adf0] ? transfer_xor+0x160/0x160 [4.000259] [810f8809] request_threaded_irq+0xf9/0x1a0 [4.001041] [81f00e8c] ? loop_init+0x150/0x150 [4.001740] [81f00eb8] dummy_irq_init+0x2c/0x60 [4.002450] [810002e2] do_one_initcall+0x122/0x170 [4.003191] [81ecef5c] kernel_init_freeable+0x15b/0x1db [4.003978] [81ece7da] ? do_early_param+0x88/0x88 [4.004710] [816a87e0] ? rest_init+0x140/0x140 [4.005413] [816a87ee] kernel_init+0xe/0x180 [4.006094] [816ce91c] ret_from_fork+0x7c/0xb0 [4.006789] [816a87e0] ? rest_init+0x140/0x140 [4.007561] dummy-irq: cannot register IRQ 0 Thanks for the report, Dave. That's actually kind of expected -- when one of the handlers on the IRQ line that is being debugged doesn't share IRQs, this is exactly what you want to get by the dummy-irq debugging facility. In this case you haven't specified any IRQ# to the dummy-irq driver via kernel commandline, i.e. IRQ# is 0, and timer is not sharing IRQs, therefore dummy-irq debugging facility did its job, and you know that the IRQ can't be shared. Not really sure whether this is something to fix. We could make dummy-irq a module-only thing, but that might be counter-productive in cases you really want to debug very early problems. Or have it depend on CONFIG_EXPERT would probably make most sense ... ? Thanks, -- Jiri Kosina SUSE Labs -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/