This series converts VFIO-PCI to realize. It also aims at improving the error reporting in case of QMP hot-plug.
Before the series, a device_add failure would have reported: {"error": {"class": "GenericError", "desc": "Device initialization failed"}}. Now the actual error cause is reported. A side effect of this series is the cleanup of the error handling in vfio-platform. Git Information: https://github.com/eauger/qemu/tree/v2.7.0_vfio_realize_v5 previous at https://github.com/eauger/qemu/tree/v2.7.0_vfio_realize_v4 History: v4 -> v5: - addded Markus' R-b and took into account his last comments and commit comment rewording suggestions - in vfio_connect_container, return container->error on RAM memory listener initialization failure - reword into "failed reading MSI PCI_CAP_FLAGS" (Alex) - reword error on stat() failure v3 -> v4: - added vfio: Pass an Error object to vfio_connect_container v2 -> v3: - Addressed Markus' comments : - don't use local error object if not necessary - fix some error handling: see individual patches - use error objects also on vfio platform realize path although hot-plug is not allowed, but that's cleaner I think. - bug fix in vfio platform v1 -> v2: - Error object is cascaded downto vfio_intx_enable, vfio_add_capabilities vfio_pci_igd_opregion_init, vfio_get_group, vfio_get_device - Actual migration to realize happens at a later stage following Markus' guidance - special handling of the case where the end-user omits the host property - error_setg_errno now uses positive errno - more detailed commit message - fix "cannot enable AER cannot" functional change Eric Auger (17): vfio/pci: Use local error object in vfio_initfn vfio/pci: Pass an error object to vfio_populate_vga vfio/pci: Pass an error object to vfio_populate_device vfio/pci: Pass an error object to vfio_msix_early_setup vfio/pci: Pass an error object to vfio_intx_enable vfio/pci: Pass an error object to vfio_add_capabilities vfio/pci: Pass an error object to vfio_pci_igd_opregion_init vfio: Pass an Error object to vfio_connect_container vfio: Pass an error object to vfio_get_group vfio: Pass an error object to vfio_get_device vfio/platform: Pass an error object to vfio_populate_device vfio/platform: fix a wrong returned value in vfio_populate_device vfio/platform: Pass an error object to vfio_base_device_init vfio/pci: Conversion to realize vfio/pci: Remove vfio_msix_early_setup returned value vfio/pci: Remove vfio_populate_device returned value vfio/pci: Handle host oversight hw/vfio/common.c | 69 ++++++----- hw/vfio/pci-quirks.c | 14 ++- hw/vfio/pci.c | 271 +++++++++++++++++++++++------------------- hw/vfio/pci.h | 5 +- hw/vfio/platform.c | 66 +++++----- hw/vfio/trace-events | 2 +- include/hw/vfio/vfio-common.h | 7 +- 7 files changed, 246 insertions(+), 188 deletions(-) -- 1.9.1