Re: MSI and driver APIs

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

 



    Benjamin> I've been looking at MSI/MSI-X support on POWER
    Benjamin> platforms, both under hypervisor or directly on machines
    Benjamin> like the new G5s and I found out that the current code
    Benjamin> in drivers/pci isn't nearly as generic as it claims to
    Benjamin> be and cannot really be re-used as is.

Excellent!  I've always wanted to find time to make the code generic
and add MSI support for some new platform like PPC 440SPe, but it's
never made it very far up my list.

    Benjamin> Thus I would very much like to change the semantics so
    Benjamin> that a driver can be entered with MSIs already assigned
    Benjamin> and enabled, though it has the capability to request
    Benjamin> more MSIs and/or to disable them if the chipset is
    Benjamin> buggy. That could be done either by adding a callback to
    Benjamin> check if MSIs are enabled for a given device for
    Benjamin> example...

It seems OK to me to say that a driver's probe routine could be called
with MSI enabled.  A naive driver would just use the irq number from
the PCI device struct and never care whether interrupts were INTx or
MSI.  This does fall down for hardware like tg3, where something
beyond the simple PCI header manipulation is required to turn on MSI use.

Full MSI-X would be much harder to handle transparently, since
handling multiple different interrupts typically requires a lot more
logic in the driver.

 - R.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux