qemu-e2k/include/hw
Stefano Stabellini 428c3ece97 fix MSI injection on Xen
On Xen MSIs can be remapped into pirqs, which are a type of event
channels. It's mostly for the benefit of PCI passthrough devices, to
avoid the overhead of interacting with the emulated lapic.

However remapping interrupts and MSIs is also supported for emulated
devices, such as the e1000 and virtio-net.

When an interrupt or an MSI is remapped into a pirq, masking and
unmasking is done by masking and unmasking the event channel. The
masking bit on the PCI config space or MSI-X table should be ignored,
but it isn't at the moment.

As a consequence emulated devices which use MSI or MSI-X, such as
virtio-net, don't work properly (the guest doesn't receive any
notifications). The mechanism was working properly when xen_apic was
introduced, but I haven't narrowed down which commit in particular is
causing the regression.

Fix the issue by ignoring the masking bit for MSI and MSI-X which have
been remapped into pirqs.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-02-06 20:44:10 +02:00
..
acpi acpi: add function to extract oem_id and oem_table_id from the user's SLIC 2016-02-06 20:44:10 +02:00
arm hw/arm/virt: add secure memory region and UART 2016-01-21 14:15:07 +00:00
audio
block fdc: add drive type qapi enum 2016-01-25 14:35:23 -05:00
char i.MX: Split UART emulator in a header file and a source file 2015-08-13 11:26:19 +01:00
cpu icc_bus: drop the unused files 2015-10-02 16:22:02 -03:00
cris
gpio i.MX: add support for lower and upper interrupt in GPIO. 2015-12-17 13:37:13 +00:00
i2c
i386 intel_iommu: large page support 2016-02-06 20:44:10 +02:00
input
intc
ipack
ipmi ipmi: introduce a struct ipmi_sdr_compact 2016-02-06 20:44:09 +02:00
isa isa: Clean up error handling around isa_bus_new() 2016-01-13 11:58:59 +01:00
kvm
lm32
m68k
mem dimm: Correct type of MemoryHotplugState->base 2016-02-06 20:44:10 +02:00
mips net/dp8393x: QOM'ify 2015-06-11 10:13:30 +01:00
misc i.MX: move i.MX31 CCM object to register array 2016-01-11 15:52:18 +00:00
net
nvram fw_cfg: remove offset argument from callback prototype 2015-12-15 11:45:59 +01:00
pci hw/pxb: introduce pxb-pcie expander for PCIe machines 2015-12-22 17:45:13 +02:00
pci-host q35: Remove MCHPCIState.guest_info field 2015-12-22 17:45:13 +02:00
ppc spapr: Remove rtas_st_buffer_direct() 2016-01-30 23:37:36 +11:00
s390x
scsi scsi: remove scsi_req_free prototype 2015-12-04 09:39:55 +03:00
sd sdhci: add optional quirk property to disable card insertion/removal interrupts 2015-12-22 16:34:26 +08:00
sh4
smbios
sparc
ssi xilinx_spips: Separate the state struct into a header 2016-01-21 14:15:03 +00:00
timer pc: acpi: move HPET from DSDT to SSDT 2016-01-09 23:20:18 +02:00
tricore
unicore32
usb
vfio
virtio virtio: introduce virtqueue_alloc_element 2016-02-06 20:44:08 +02:00
watchdog
xen fix MSI injection on Xen 2016-02-06 20:44:10 +02:00
boards.h Move SET_MACHINE_COMPAT macro to boards.h 2016-01-11 15:29:05 +11:00
bt.h bt: check struct sizes 2015-12-04 09:39:55 +03:00
compat.h fdc: change auto fallback drive for ISA FDC to 288 2016-01-25 14:36:01 -05:00
devices.h
elf_ops.h
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h vmstate: define vmstate_info_uinttl 2016-01-16 12:01:23 +00:00
ide.h
irq.h
loader.h
nmi.h
pcmcia.h
platform-bus.h
ptimer.h
qdev-core.h qobject: Rename qtype_code to QType 2015-12-17 08:21:28 +01:00
qdev-dma.h
qdev-properties.h fdc: Add fallback option 2016-01-25 14:35:23 -05:00
qdev.h
stream.h
sysbus.h
usb.h