Re: request_irq returns -ENOSYS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux