Re: [PATCH] pci: fix unavailable irq number 255 reported by BIOS

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

 



On 01/22/2016 09:53 AM, Bjorn Helgaas wrote:
On Thu, Jan 21, 2016 at 11:58:26PM +0100, Rafael J. Wysocki wrote:
On Thu, Jan 21, 2016 at 3:41 PM, Cao jin <caoj.fnst@xxxxxxxxxxxxxx> wrote:
Hi,

     IMHO, I think maybe modification on i801_smbus driver is easier.

     Because when i801_smbus request_irq using pci_dev->irq, this
pci_dev->irq seems still holds the value read from register(
pci_setup_device->pci_read_irq), if the value is 255, it is invalid in
register,

Right.

Which is why the PCI core should not leak it into the driver's ->probe callback.

Is there a reserved IRQ value we could use to mean "invalid"?

In many (most) cases, zero indicates no irq.





I guess we have NR_IRQS as a ceiling, so the range of valid IRQs would be
[0 .. NR_IRQS - 1].  It looks like irq_desc() and a few drivers already
rely on NR_IRQS being the bound:

   lpc32xx_kscan_probe
   lpc32xx_nand_probe
   pcmcia_setup_isa_irq
   lpc32xx_rtc_probe
   apbuart_verify_port
   ar933x_uart_verify_port
   lqasc_verify_port

So I guess we could use ~0 as "invalid IRQ", and maybe the PCI core could
set dev->irq to ~0 in these cases, and drivers like i801_smbus could check
for that.  Maybe a wrapper like irq_valid() would be useful.

Bjorn



--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux