From: Chen Fan <[email protected]>
v8-v9:
1. Don't use resume notification.
Host vfio driver will process aer.
Poll the vfio_device_info to assure host reset completely.
v7-v8:
1. Use bitmap to record error and resume notification.
v6-v7:
1. Stall any access to the device until resume is signaled.
Do guest directed bus reset after receive resume notification.
If don't get the resume notification after some timeout unplug the device.
2. fix the patches 11/12 as Alex sugguestion.
v5-v6:
1. register resume handler both qemu and kernel to ensure the
reset in order.
2. fix the patches 6/12, 7/12 as Alex and MST sugguestion.
v4-v5:
1. add back the common function 0 hotplug code in pci core.
2. fix a sporadic device stuck on D3 problem when doing aer recovery.
3. fix patches 5/12 ~ 9/12 as Alex sugguestion.
v3-v4:
1. rebase patchset to fit latest master branch.
2. modifying patches 5/10 ~ 8/10 as Alex sugguestion(Thanks).
v2-v3:
1. fix patch 4/9, 5/9 as Alex sugguestion.
2. patches 5/9 ~ 8/9 are made to force limiting that all vfio functions
are combined in the same way as on the host.
v1-v2:
1. limit all devices on same bus in guest are on same bus in host in patch
For now, for vfio pci passthough devices, when qemu receives
an error from host aer report, it just terminate the guest.
But usually user want to know what error occurred. So these patches add
aer capability support for vfio devices, and pass the error to guest.
Then let guest driver to recover from the error.
notes: this series patches enable aer support single/multi-function,
for multi-function, require all the function of the slot assigned to
VM and on the same slot.
Chen Fan (11):
vfio: extract vfio_get_hot_reset_info as a single function
vfio: squeeze out vfio_pci_do_hot_reset for support bus reset
vfio: add aer support for vfio device
vfio: refine function vfio_pci_host_match
vfio: add check host bus reset is support or not
pci: add a pci_function_is_valid callback to check function if valid
vfio: add check aer functionality for hotplug device
vfio: vote the function 0 to do host bus reset when aer occurred
vfio-pci: pass the aer error to guest
vfio: Add waiting for host aer error progress
vfio: add 'aer' property to expose aercap
hw/pci/pci.c | 32 +++
hw/vfio/pci.c | 620 ++++++++++++++++++++++++++++++++++++++++-----
hw/vfio/pci.h | 6 +
include/hw/pci/pci.h | 1 +
linux-headers/linux/vfio.h | 4 +
5 files changed, 597 insertions(+), 66 deletions(-)
--
1.8.3.1