you are using the "IRQF_SHARED" mode to request_irq, and so the irq_number will be the one which others' device use. Are u sure "dev->irq" is the right one?
BRs Lin 2009/4/20 ASmallCheeseBox <[email protected]>: > > > Hi. I posted this to the forum a couple days ago, to no avail - I hope no-one > minds me reposting here. > > My issue: > > So, I'm merrily writing my device driver for some homebrew hardware using the > Xilinx PCIE endpoint. > > I'm sure this has been working in the past, but now I get -38 (-ENOSYS) > returned from my call to request_irq. I can't for the life of me figure out > why, although I've dug a bit and found that this is being returned by the > following lines in kernel/irq/manage.c: > > 404: if (desc->chip == &no_irq_chip) > 405: return -ENOSYS; > > I think this is telling me that the kernel doesn't know how to handle IRQs > that my card signals, because the IRQ handling hardware isn't supported. Am I > wrong? > > I've tried three different kernel versions (2.6.22, 2.6.27, and 2.6.28) and I > get the same behaviour on each. I've tried twiddling BIOS settings (and even > upgraded the BIOS), I've tried messing about with the kernel command line, > and I've tried registering other IRQ lines instead (ie, some native IRQ). I'm > pretty much at a loss. Trying a different motherboard is on my to-try list, > but I'm trying to avoid that (since I don't have any more yet). > > The relevant call to request_irq: > > // enable IRQ for card > long s=request_irq ( dev->irq, handle_interrupt, IRQF_SHARED, DRIVER_NAME, > dev); > if ( s ) > { > printk(KERN_ALERT "Failed to request IRQ %d (%d)\n", dev->irq, s); > > My IRQ handler is a stub which just returns IRQ_HANDLED. > > I've dug through documentation and my (albeit outdated) paper books, and > can't find anything relevant (at least not for x86). Can anyone suggest > anything I might've overlooked, or point me in the right direction? > > The motherboard has a VIA chipset, and the PCI-e card is a 1-lane Xilinx > board. I've disabled every spurious function I can find in the BIOS. > > Thanks for any help.. > > > > > -- > To unsubscribe from this list: send an email with > "unsubscribe kernelnewbies" to [email protected] > Please read the FAQ at http://kernelnewbies.org/FAQ > > -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to [email protected] Please read the FAQ at http://kernelnewbies.org/FAQ
