Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dummy irq trace 'Flags mismatch'

24 views
Skip to first unread message

Dave Jones

unread,
Apr 29, 2013, 5:16:32 PM4/29/13
to jko...@suse.cz, Linux Kernel
When set to built-in, the dummy irq driver causes this trace when I boot..

[ 3.996055] genirq: Flags mismatch irq 0. 00000080 (dummy_irq) vs. 00015a20 (timer)
[ 3.997055] Pid: 1, comm: swapper/0 Not tainted 3.9.0+ #29
[ 3.997768] Call Trace:
[ 3.998127] [<ffffffff810f8635>] __setup_irq+0x515/0x550
[ 3.998827] [<ffffffff81f00e8c>] ? loop_init+0x150/0x150
[ 3.999530] [<ffffffff8146adf0>] ? transfer_xor+0x160/0x160
[ 4.000259] [<ffffffff810f8809>] request_threaded_irq+0xf9/0x1a0
[ 4.001041] [<ffffffff81f00e8c>] ? loop_init+0x150/0x150
[ 4.001740] [<ffffffff81f00eb8>] dummy_irq_init+0x2c/0x60
[ 4.002450] [<ffffffff810002e2>] do_one_initcall+0x122/0x170
[ 4.003191] [<ffffffff81ecef5c>] kernel_init_freeable+0x15b/0x1db
[ 4.003978] [<ffffffff81ece7da>] ? do_early_param+0x88/0x88
[ 4.004710] [<ffffffff816a87e0>] ? rest_init+0x140/0x140
[ 4.005413] [<ffffffff816a87ee>] kernel_init+0xe/0x180
[ 4.006094] [<ffffffff816ce91c>] ret_from_fork+0x7c/0xb0
[ 4.006789] [<ffffffff816a87e0>] ? rest_init+0x140/0x140
[ 4.007561] dummy-irq: cannot register IRQ 0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Jiri Kosina

unread,
Apr 30, 2013, 12:59:56 AM4/30/13
to Dave Jones, Linux Kernel
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. 00000080 (dummy_irq) vs. 00015a20 (timer)
> [ 3.997055] Pid: 1, comm: swapper/0 Not tainted 3.9.0+ #29
> [ 3.997768] Call Trace:
> [ 3.998127] [<ffffffff810f8635>] __setup_irq+0x515/0x550
> [ 3.998827] [<ffffffff81f00e8c>] ? loop_init+0x150/0x150
> [ 3.999530] [<ffffffff8146adf0>] ? transfer_xor+0x160/0x160
> [ 4.000259] [<ffffffff810f8809>] request_threaded_irq+0xf9/0x1a0
> [ 4.001041] [<ffffffff81f00e8c>] ? loop_init+0x150/0x150
> [ 4.001740] [<ffffffff81f00eb8>] dummy_irq_init+0x2c/0x60
> [ 4.002450] [<ffffffff810002e2>] do_one_initcall+0x122/0x170
> [ 4.003191] [<ffffffff81ecef5c>] kernel_init_freeable+0x15b/0x1db
> [ 4.003978] [<ffffffff81ece7da>] ? do_early_param+0x88/0x88
> [ 4.004710] [<ffffffff816a87e0>] ? rest_init+0x140/0x140
> [ 4.005413] [<ffffffff816a87ee>] kernel_init+0xe/0x180
> [ 4.006094] [<ffffffff816ce91c>] ret_from_fork+0x7c/0xb0
> [ 4.006789] [<ffffffff816a87e0>] ? 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

Jonathan Corbet

unread,
Apr 30, 2013, 10:00:35 AM4/30/13
to Jiri Kosina, Dave Jones, Linux Kernel
On Tue, 30 Apr 2013 06:59:22 +0200 (CEST)
Jiri Kosina <jko...@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;

Jiri Kosina

unread,
Apr 30, 2013, 4:42:54 PM4/30/13
to Jonathan Corbet, Greg Kroah-Hartman, Dave Jones, Linux Kernel
From: Jonathan Corbet <cor...@lwn.net>
Subject: [PATCH] dummy-irq: require the user to specify an IRQ number

Make sure that we let the user know that without specifying IRQ#,
dummy-irq driver is useless.

Reported-by: Dave Jones <da...@redhat.com>
Signed-off-by: Jonathan Corbet <cor...@lwn.net>
Signed-off-by: Jiri Kosina <jko...@suse.cz>

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;
--
Jiri Kosina
SUSE Labs

Greg Kroah-Hartman

unread,
Apr 30, 2013, 4:50:36 PM4/30/13
to Jiri Kosina, Jonathan Corbet, Dave Jones, Linux Kernel
On Tue, Apr 30, 2013 at 10:42:33PM +0200, Jiri Kosina wrote:
> From: Jonathan Corbet <cor...@lwn.net>
> Subject: [PATCH] dummy-irq: require the user to specify an IRQ number
>
> Make sure that we let the user know that without specifying IRQ#,
> dummy-irq driver is useless.
>
> Reported-by: Dave Jones <da...@redhat.com>
> Signed-off-by: Jonathan Corbet <cor...@lwn.net>
> Signed-off-by: Jiri Kosina <jko...@suse.cz>

Nice, I'll queue this up after 3.10-rc1 is out, thanks.

greg k-h

Jiri Kosina

unread,
Apr 30, 2013, 5:12:25 PM4/30/13
to Greg Kroah-Hartman, Jonathan Corbet, Dave Jones, Linux Kernel
On Tue, 30 Apr 2013, Greg Kroah-Hartman wrote:

> > From: Jonathan Corbet <cor...@lwn.net>
> > Subject: [PATCH] dummy-irq: require the user to specify an IRQ number
> >
> > Make sure that we let the user know that without specifying IRQ#,
> > dummy-irq driver is useless.
> >
> > Reported-by: Dave Jones <da...@redhat.com>
> > Signed-off-by: Jonathan Corbet <cor...@lwn.net>
> > Signed-off-by: Jiri Kosina <jko...@suse.cz>
>
> Nice, I'll queue this up after 3.10-rc1 is out, thanks.

Thanks Greg.

Do you want me to resend this after rc1, or is it somewhere in your
post-rc1 queue already?

--
Jiri Kosina
SUSE Labs

Greg Kroah-Hartman

unread,
Apr 30, 2013, 7:53:34 PM4/30/13
to Jiri Kosina, Jonathan Corbet, Dave Jones, Linux Kernel
On Tue, Apr 30, 2013 at 11:12:04PM +0200, Jiri Kosina wrote:
> On Tue, 30 Apr 2013, Greg Kroah-Hartman wrote:
>
> > > From: Jonathan Corbet <cor...@lwn.net>
> > > Subject: [PATCH] dummy-irq: require the user to specify an IRQ number
> > >
> > > Make sure that we let the user know that without specifying IRQ#,
> > > dummy-irq driver is useless.
> > >
> > > Reported-by: Dave Jones <da...@redhat.com>
> > > Signed-off-by: Jonathan Corbet <cor...@lwn.net>
> > > Signed-off-by: Jiri Kosina <jko...@suse.cz>
> >
> > Nice, I'll queue this up after 3.10-rc1 is out, thanks.
>
> Thanks Greg.
>
> Do you want me to resend this after rc1, or is it somewhere in your
> post-rc1 queue already?

It's in my queue already, no need for you to resend this.

thanks,

greg k-h
0 new messages