RE: [PATCH] genirq: Give warning when setup an already-setupnon-shared irq

From: Liu, Chuansheng
Date: Mon Jan 14 2013 - 19:53:59 EST




> -----Original Message-----
> From: Thomas Gleixner [mailto:tglx@xxxxxxxxxxxxx]
> Sent: Monday, January 14, 2013 7:16 PM
> To: Liu, Chuansheng
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] genirq: Give warning when setup an already-setup
> non-shared irq
>
> On Thu, 10 Jan 2013, Chuansheng Liu wrote:
> >
> > Meet the case when the request_threaded_irq() with the same irq
> > is called twice continually, get the below mismatch info:
> > "IRQ handler type mismatch for IRQ 323"
>
> I have no idea where you get that from. The mismatch is printed with:
>
> if (!(new->flags & IRQF_PROBE_SHARED)) {
> pr_err("Flags mismatch irq %d. %08x (%s) vs. %08x (%s)\n",
> irq, new->flags, new->name, old->flags,
> old->name);
if (!(new->flags & IRQF_PROBE_SHARED)) {
printk(KERN_ERR "IRQ handler type mismatch for IRQ %d\n", irq);
if (old_name)
printk(KERN_ERR "current handler: %s\n", old_name);
dump_stack();
}
The "IRQ handler type mismatch for IRQ 323" message is coming from the above code,
which is something older than you pasted, but it is the same place.

>
> And its only printed when IRQF_PROBE_SHARED is not set. Your change
> would cause printouts where no printouts are due and it'd change the
> return value from EBUSY to EINVAL.
My test case is below:
request_irq(323, func1,
IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING,
name, dev);
After succeeded, then called it again:
request_irq(323, func1,
IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING,
name, dev);

After the test case, I will get the "mismatch" info.
But in this case, it should not be the "mismatch" case, so I want to give another warning
in case of duplicated setup the same irq with non-shared.
Not sure if it is right. Thanks your pointing out.
>
> Thanks,
>
> tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/