Yup, I've checked dev->IRQ against that which lspci -vv returns, and they're the same. Thanks for the reply. - Al (and apologies if I've submitted this twice - it's 6am and I've exhausted my day's supply of Clever already..) > --- On Sun, 4/19/09, Pei Lin <telent997@xxxxxxxxx> > wrote: > > > From: Pei Lin <telent997@xxxxxxxxx> > > Subject: Re: request_irq returns -ENOSYS > > Cc: kernelnewbies@xxxxxxxxxxxx > > > > 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 > > <asmallcheesebox@xxxxxxxxx>: > > > > > > > > > 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 > > ecartis@xxxxxxxxxxxx > > > Please read the FAQ at > http://kernelnewbies.org/FAQ > > > > > > -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ