linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* PCI: MSI interrupts masked using prohibited method
@ 2008-06-24 10:46 David Vrabel
  2008-06-25 21:20 ` Jesse Barnes
  0 siblings, 1 reply; 30+ messages in thread
From: David Vrabel @ 2008-06-24 10:46 UTC (permalink / raw)
  To: Kernel development list, jbarnes

PCI MSI interrupts are masked and unmasked using a method (by writing
the MSI Enable capability bit) that is prohibited by the PCI specification.

See PCI Local Bus Specification Revision 3.0, section 6.8.1.3. Message
Control for MSI on page 236.

    "MSI Enable:  If 1 and the MSI-X Enable bit in the MSI-X Message
     Control register (see Section 6.8.2.3) is 0, the
     function is permitted to use MSI to request service
     and is prohibited from using its INTx# pin (if
     implemented; see Section 6.2.4 Interrupt pin register).
     System configuration software sets this bit to enable
     MSI. A device driver is prohibited from writing this bit
     to mask a function’s service request."

This behaviour can cause missed interrupts with some devices if the
interrupt is asserted by the hardware while MSI is disabled.

I believe the interrupt should be masked/unmasked on the interrupt
controller (the APIC on x86, for example).   I'm going to test this now
and see if it works.

David
-- 
David Vrabel, Senior Software Engineer, Drivers
CSR, Churchill House, Cambridge Business Park,  Tel: +44 (0)1223 692562
Cowley Road, Cambridge, CB4 0WZ                 http://www.csr.com/

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2008-07-28 22:04 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-24 10:46 PCI: MSI interrupts masked using prohibited method David Vrabel
2008-06-25 21:20 ` Jesse Barnes
2008-06-27 12:17   ` David Vrabel
2008-06-27 17:07     ` Jesse Barnes
2008-07-16 19:43       ` Jesse Barnes
2008-07-16 19:58         ` Matthew Wilcox
2008-07-16 20:35           ` David Miller
2008-07-17 12:16           ` Krzysztof Halasa
2008-07-17 12:43             ` Matthew Wilcox
2008-07-17 13:14           ` David Vrabel
2008-07-17 15:39             ` Matthew Wilcox
2008-07-17 15:58               ` Thomas Gleixner
2008-07-17 16:11                 ` Matthew Wilcox
2008-07-17 17:04                   ` Thomas Gleixner
2008-07-17 16:56                 ` Matthew Wilcox
     [not found]                   ` <487F7DFA.10101@csr.com>
2008-07-17 19:48                     ` Matthew Wilcox
2008-07-18 10:33                       ` David Vrabel
2008-07-22 13:56                         ` Michal Schmidt
2008-07-22 17:52                           ` Jesse Barnes
2008-07-23 13:02                             ` Michal Schmidt
2008-07-25 13:29                             ` Michal Schmidt
2008-07-25 13:42                               ` Matthew Wilcox
2008-07-25 13:53                                 ` Michal Schmidt
2008-07-25 15:51                                   ` Matthew Wilcox
2008-07-28  9:54                                     ` Michal Schmidt
2008-07-25 16:37                                   ` David Vrabel
2008-07-25 16:56                                     ` Matthew Wilcox
2008-07-25 19:12                                       ` Jesse Barnes
2008-07-28  9:59                                       ` Michal Schmidt
2008-07-28 22:04                                         ` Jesse Barnes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).