qemu/hw
Alex Williamson 69970fcef9 vfio/pci: Fix RTL8168 NIC quirks
The RTL8168 quirk correctly describes using bit 31 as a signal to
mark a latch/completion, but the code mistakenly uses bit 28.  This
causes the Realtek driver to spin on this register for quite a while,
20k cycles on Windows 7 v7.092 driver.  Then it gets frustrated and
tries to set the bit itself and spins for another 20k cycles.  For
some this still results in a working driver, for others not.  About
the only thing the code really does in its current form is protect
the guest from sneaking in writes to the real hardware MSI-X table.
The fix is obviously to use bit 31 as we document that we should.

The other problem doesn't seem to affect current drivers as nobody
seems to use these window registers for writes to the MSI-X table, but
we need to use the stored data when a write is triggered, not the
value of the current write, which only provides the offset.

Note that only the Windows drivers from Realtek seem to use these
registers, the Microsoft drivers provided with Windows 8.1 do not
access them, nor do Linux in-kernel drivers.

Link: https://bugs.launchpad.net/qemu/+bug/1384892
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org # v2.1+
2015-07-22 14:56:01 -06:00
..
9pfs qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
acpi ich9: fix skipped vmstate_memhp_state subsection 2015-07-20 14:19:40 +03:00
alpha hw/alpha/typhoon.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
arm musicpal: Drop eth_can_receive 2015-07-20 17:47:24 +01:00
audio
block nvme: properly report volatile write caches 2015-07-14 15:55:19 +02:00
bt
char spapr-vty: Use TYPE_ definition instead of hardcoding 2015-07-07 17:44:53 +02:00
core pc,virtio: fixes for 2.4 2015-07-13 13:35:51 +01:00
cpu
cris
display qxl: Fix new function name for spice-server library 2015-07-22 16:38:42 +02:00
dma Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
gpio
i2c
i386 pc,virtio: fixes for 2.4 2015-07-13 13:35:51 +01:00
ide ahci: Force ICC bits in PxCMD to zero 2015-07-20 12:21:18 -04:00
input hid: clarify hid_keyboard_process_keycode 2015-07-17 08:44:41 +02:00
intc xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled 2015-07-07 17:44:52 +02:00
ipack
isa ich9: implement strap SPKR pin logic 2015-07-08 10:09:55 +03:00
lm32 hw/lm32/milkymist.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
m68k m68k: implement more ColdFire 5208 interrupt controller functionality 2015-06-22 14:43:25 +01:00
mem numa,pc-dimm: Store pc-dimm memory information in numa_info 2015-07-03 17:47:58 -03:00
microblaze microblaze: boot: Use cpu_set_pc() 2015-07-09 15:20:40 +02:00
mips target-mips: add Unified Hosting Interface (UHI) support 2015-06-26 09:08:50 +01:00
misc macio: remove nonexistent interrupt on pin 1 2015-07-07 17:44:49 +02:00
moxie
net lan9118: Drop lan9118_can_receive 2015-07-20 17:47:24 +01:00
nvram spapr: Merge sPAPREnvironment into sPAPRMachineState 2015-07-07 17:44:50 +02:00
openrisc
pci pci_add_capability: remove duplicate comments 2015-07-20 14:19:41 +03:00
pci-bridge hw/pci-bridge: format special OFW unit address for PXB host 2015-06-23 22:58:36 +02:00
pci-host piix: piix3 QOMify 2015-06-23 19:57:28 +03:00
pcmcia
ppc timer: rename NSEC_PER_SEC due to Mac OS X header clash 2015-07-20 17:01:00 +01:00
s390x s390/virtio-ccw: Fix migration 2015-07-14 19:10:03 +02:00
scsi qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
sd hw/sd/pxa2xx_mmci: Stop using old_mmio in MemoryRegionOps 2015-06-15 18:06:09 +01:00
sh4 sh4/r2d: convert to new MMIO accessor style 2015-06-12 12:02:48 +02:00
sparc fw_cfg: fix FW_CFG_BOOT_DEVICE update on ppc and sparc 2015-06-10 08:00:37 +02:00
sparc64 fw_cfg: fix FW_CFG_BOOT_DEVICE update on ppc and sparc 2015-06-10 08:00:37 +02:00
ssi
timer timer: rename NSEC_PER_SEC due to Mac OS X header clash 2015-07-20 17:01:00 +01:00
tpm qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
tricore
unicore32 hw/unicore32/puv3.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
usb timer: rename NSEC_PER_SEC due to Mac OS X header clash 2015-07-20 17:01:00 +01:00
vfio vfio/pci: Fix RTL8168 NIC quirks 2015-07-22 14:56:01 -06:00
virtio virtio, vhost, pc fixes for 2.4 2015-07-20 13:25:28 +01:00
watchdog watchdog/diag288: correctly register for system reset requests 2015-07-14 19:10:03 +02:00
xen trivial patches for 2015-06-23 2015-06-23 18:25:55 +01:00
xenpv
xtensa
Makefile.objs