]> git.baikalelectronics.ru Git - kernel.git/commit
PCI: Mark RTL8110SC INTx masking as broken
authorAlex Williamson <alex.williamson@redhat.com>
Thu, 1 May 2014 20:36:31 +0000 (14:36 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 20 May 2014 21:02:30 +0000 (15:02 -0600)
commitc9a1f47b21354f0833c29e6e9f134d7c83f16add
tree98d8b75a02fa5c80be2d403a47383f1ac6af8633
parent9ee4a9b4063e820a5da17071ecd6f4f9b01cdfa5
PCI: Mark RTL8110SC INTx masking as broken

INTx masking does not work on this device.  To see this, configure the
network device UP on an active network, note that the interrupt count
continues to increment for the device in /proc/interrupts.  Use setpci to
set the PCI_COMMAND_INTX_DISABLE bit in the PCI_COMMAND register.  As
expected, the interrupt count ceases to increment.  However, reading the
PCI_STATUS_INTERRUPT bit of the PCI_STATUS register does not indicate that
interrupts are pending and clearing PCI_COMMAND_INTX_DISABLE in the
PCI_COMMAND register does not allow the device to continue operation.

This does not affect operation of the host r8169 driver, but it does
prevent the device from being functional when assigned to a VM, such as
with QEMU and VFIO.  The guest driver successfully probes the device, but
there is no traffic.  Mark INTx masking as broken, allowing the more
restrictive APIC masking to be used instead.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/quirks.c