lkml.org 
[lkml]   [2008]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: MSI messages
    From
    Date
    On Sun, 2008-12-21 at 01:13 +0400, Manu Abraham wrote:
    > Grant Grundler wrote:
    > > On Sun, Dec 14, 2008 at 03:15:15PM +0400, Manu Abraham wrote:
    > > ...
    > >>> A "GSI" (Generic Sys Interrupt?) is associated with each entry in
    > >>> the MSI-X table. Driver then calls request_irq() to bind an interrupt
    > >>> handler to each GSI. So the driver never directly sees the "message".
    > >> Oh, you mean the array of irq_handlers in the MSI-X table should
    > >> correspond to a particular message ?
    > >
    > > No. I mean each MSI-X entry has an address+message pair and each MSI-X entry
    > > is associated with the parameters passed to each call of request_irq().
    > > Pass in unique private data to each call of request_irq() and the driver
    > > can determine which message was delivered when the ISR gets called.
    > > (ISR == Interrupt Service Routine, aka driver IRQ handler)
    >
    >
    > Is it possible that even when the config space says that multiple messages
    > are supported, you cannot enable MSI-X ?

    Yes, absolutely. Have a look at pci_msi_check_device() for starters. MSI
    can be disabled globally, or per-device by a quirk, the bridges above
    your device might not support MSI and the arch code may prevent
    MSI/MSI-X for some reason (ie. platform doesn't support it).

    There's also a check in pci_enable_msix() to make sure the entries you
    pass in are valid.

    > ------------- with MSI-X -------------
    >
    > saa716x_pci_init (0): found a NEMO reference board PCIe card
    > ACPI: PCI Interrupt 0000:05:00.0[A] -> GSI 19 (level, low) -> IRQ 19
    > PCI: Setting latency timer of device 0000:05:00.0 to 64
    > saa716x_request_irq (0): Using MSI-X mode
    > saa716x_enable_msix (0): MSI-X request failed

    For starters you should print the error code returned by
    pci_enable_msix() - unfortunately it returns EINVAL for many different
    reasons, but it will narrow it down a bit.

    cheers

    --
    Michael Ellerman
    OzLabs, IBM Australia Development Lab

    wwweb: http://michael.ellerman.id.au
    phone: +61 2 6212 1183 (tie line 70 21183)

    We do not inherit the earth from our ancestors,
    we borrow it from our children. - S.M.A.R.T Person
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2008-12-21 23:15    [W:0.036 / U:0.300 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site