lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <adahcpx1y89.fsf@cisco.com>
Date:	Sun, 27 May 2007 19:24:54 -0700
From:	Roland Dreier <rdreier@...co.com>
To:	Manu Abraham <abraham.manu@...il.com>
Cc:	Grant Grundler <grundler@...isc-linux.org>,
	Greg KH <greg@...ah.com>, linux-pci@...ey.karlin.mff.cuni.cz,
	linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: PCIE

 > > At least on my device (PCI ID 1131:7162) there is no MSI-X capability,
 > > so that's not an option for you.  The current Linux implementation
 > > does not support more than one MSI interrupt, so you just get one
 > > interrupt with pci_enable_msi().
 > 
 > This would mean MSI or MSI-X ?  A bit confused now.

As I said, the device I have in my system:

    02:00.0 Multimedia controller: Philips Semiconductors Unknown device 7162
            Subsystem: Animation Technologies Inc. Unknown device 0820
            Flags: bus master, fast devsel, latency 0, IRQ 11
            Memory at 90200000 (64-bit, non-prefetchable) [size=1M]
            Capabilities: [40] Message Signalled Interrupts: Mask- 64bit+ Queue=0/5 Enable-
            Capabilities: [50] Express Endpoint IRQ 0
            Capabilities: [74] Power Management version 2
            Capabilities: [80] Vendor Specific Information

...has only an MSI capability (the "[40] Message Signalled Interrupts"
line).  So MSI-X is not possible, since the device cannot do it.  And
that means you can at most do pci_enable_msi().  The current Linux MSI
support only handles a single interrupt, just like you get normally
(no matter how many MSI interrupts a device can handle).  To get
multiple interrupts from a single device under Linux, you must use
MSI-X and pci_enable_msix -- but for this to work, your device must
support MSI-X of course.

A device that supports both MSI and MSI-X would look like:

    0b:00.0 InfiniBand: Mellanox Technologies MT25204 [InfiniHost III Lx HCA] (rev 20)
            Subsystem: Mellanox Technologies MT25204 [InfiniHost III Lx HCA]
            Flags: bus master, fast devsel, latency 0, IRQ 16
            Memory at fc600000 (64-bit, non-prefetchable) [size=1M]
            Memory at d8800000 (64-bit, prefetchable) [size=8M]
            Capabilities: [40] Power Management version 2
            Capabilities: [48] Vital Product Data
            Capabilities: [90] Message Signalled Interrupts: Mask- 64bit+ Queue=0/5 Enable-
            Capabilities: [84] MSI-X: Enable- Mask- TabSize=32
            Capabilities: [60] Express Endpoint IRQ 0

with both "Message Signalled Interrupts" and "MSI-X" capabilities.

However, as I said before I think you shouldn't worry about MSI right
now.  Since there are many systems where MSI doesn't work, you'll need
to get the driver working with legacy (INTx) interrupts anyway.  And
you seem to be in a bit over your head just doing that without adding
the complexity of MSI on top, hence my recommendation to just focus on
the basic driver.

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ