On Wed, 20 Mar 2013, Jiri Kosina wrote:
I don't know of any way. In fact, I have been thinking of writing a test driver module, with a module parameter telling it which IRQ number to register for. It seems like the sort of thing that would be useful to have, from time to time.
Ok, so how about this? Daniel, is it enough to make the problem appear on your system (by building this into the kernel and booting with dummy-irq.irq=16)?
Thanks.
From: Jiri Kosina jkosina@suse.cz Subject: [PATCH] dummy-irq: introduce a dummy IRQ handler driver
This module accepts a single 'irq' parameter, which it should register for.
Its sole purpose is to help with debugging of IRQ sharing problems, by force-enabling IRQ that would otherwise be disabled.
Suggested-by: Alan Stern stern@rowland.harvard.edu Signed-off-by: Jiri Kosina jkosina@suse.cz
This is just what I was thinking of. Three extremely minor suggestions...
+static irqreturn_t dummy_interrupt(int irq, void *dev_id) +{
- static int count = 0;
- if (count == 0) {
printk("dummy-irq: interrupt occured on IRQ %d\n", irq);
You probably should put a severity level here. KERN_INFO?
count++;
- }
- return IRQ_NONE;
+}
+static int __init dummy_irq_init(void) +{
- if (request_irq(irq, &dummy_interrupt, IRQF_SHARED, "dummy_irq", &irq)) {
printk(KERN_ERR "dummy-irq: cannot register IRQ %d\n", irq);
return -EIO;
- }
- printk(KERN_INFO "dummy-irq: registered for IRQ %d\n", irq);
- return 0;
+}
+static void __exit dummy_irq_exit(void) +{
- printk(KERN_INFO "dummy-irq unloaded\n");
- free_irq(irq, &irq);
- return;
A return statement isn't needed here.
+}
+module_init(dummy_irq_init); +module_exit(dummy_irq_exit);
+MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Jiri Kosina"); +module_param_named(irq, irq, uint, 0444);
module_param is good enough when the parameter's name is the same as the variable's name.
+MODULE_PARM_DESC(irq, "The IRQ to register for");
Alan Stern