Hi Cédric, On 10/6/23 13:46, Eric Auger wrote: > Hi Cédric, > > On 10/6/23 13:42, Eric Auger wrote: >> Hi Cédric, >> >> On 10/6/23 12:33, Cédric Le Goater wrote: >>> On 10/6/23 08:19, Cédric Le Goater wrote: >>>> The following changes since commit >>>> 2f3913f4b2ad74baeb5a6f1d36efbd9ecdf1057d: >>>> >>>> Merge tag 'for_upstream' of >>>> https://git.kernel.org/pub/scm/virt/kvm/mst/qemu into staging >>>> (2023-10-05 09:01:01 -0400) >>>> >>>> are available in the Git repository at: >>>> >>>> https://github.com/legoater/qemu/ tags/pull-vfio-20231006 >>>> >>>> for you to fetch changes up to 6e86aaef9ac57066aa923211a164df95b7b3cdf7: >>>> >>>> vfio/common: Move legacy VFIO backend code into separate >>>> container.c (2023-10-05 22:04:52 +0200) >>>> >>>> ---------------------------------------------------------------- >>>> vfio queue: >>>> >>>> * Fix for VFIO display when using Intel vGPUs >>>> * Support for dynamic MSI-X >>>> * Preliminary work for IOMMUFD support >>> >>> Stefan, >>> >>> I just did some tests on z with passthough devices (PCI and AP) and >>> the series is not bisectable. QEMU crashes at patch : >>> >>> "vfio/pci: Introduce vfio_[attach/detach]_device". >>> >>> Also, with everything applied, the guest fails to start with : >>> >>> vfio: IRQ 0 not available (number of irqs 0) >>> >>> So, please hold on and sorry for the noise. I will start digging >>> on my side. >> I just tested with the head on vfio/pci: Introduce >> vfio_[attach/detach]_device, with PCIe assignment on ARM and I fail to >> reproduce the crash. >> >> Do you try hotplug or something simpler? > > also works for me with hotplug/hotunplug. Please let me know if I can help.
I think this is related to the error handling. if you hotplug a vfio-device and if this encounters an error, vfio_realize fails and you end at the 'error' label where the name of the device is freed: g_free(vbasedev->name); However I see that the vfio_finalize is called (Zhengzhong warned me !!) calls vfio_pci_put_device which calls g_free(vdev->vbasedev.name) again. please try adding vdev->vbasedev.name = NULL after freeing the name in vfio_realize error: so see if it fixes the crash. Then wrt irq stuff, I would be tempted to say it sounds unrelated to the iommufd prereq series but well. Please let me know how you want me to fix that mess, sorry. Eric > > Eric >> >> Thanks >> >> Eric >> >> >>> >>> Thanks, >>> >>> C. >>> >>>> ---------------------------------------------------------------- >>>> Alex Williamson (1): >>>> vfio/display: Fix missing update to set backing fields >>>> >>>> Eric Auger (7): >>>> scripts/update-linux-headers: Add iommufd.h >>>> vfio/common: Propagate KVM_SET_DEVICE_ATTR error if any >>>> vfio/common: Introduce vfio_container_add|del_section_window() >>>> vfio/pci: Introduce vfio_[attach/detach]_device >>>> vfio/platform: Use vfio_[attach/detach]_device >>>> vfio/ap: Use vfio_[attach/detach]_device >>>> vfio/ccw: Use vfio_[attach/detach]_device >>>> >>>> Jing Liu (4): >>>> vfio/pci: detect the support of dynamic MSI-X allocation >>>> vfio/pci: enable vector on dynamic MSI-X allocation >>>> vfio/pci: use an invalid fd to enable MSI-X >>>> vfio/pci: enable MSI-X in interrupt restoring on dynamic >>>> allocation >>>> >>>> Yi Liu (2): >>>> vfio/common: Move IOMMU agnostic helpers to a separate file >>>> vfio/common: Move legacy VFIO backend code into separate >>>> container.c >>>> >>>> Zhenzhong Duan (7): >>>> vfio/pci: rename vfio_put_device to vfio_pci_put_device >>>> linux-headers: Add iommufd.h >>>> vfio/common: Extract out vfio_kvm_device_[add/del]_fd >>>> vfio/common: Move VFIO reset handler registration to a group >>>> agnostic function >>>> vfio/common: Introduce a per container device list >>>> vfio/common: Store the parent container in VFIODevice >>>> vfio/common: Introduce a global VFIODevice list >>>> >>>> hw/vfio/pci.h | 1 + >>>> include/hw/vfio/vfio-common.h | 60 +- >>>> linux-headers/linux/iommufd.h | 444 +++++++++ >>>> hw/vfio/ap.c | 69 +- >>>> hw/vfio/ccw.c | 122 +-- >>>> hw/vfio/common.c | 1885 >>>> +++------------------------------------ >>>> hw/vfio/container.c | 1161 ++++++++++++++++++++++++ >>>> hw/vfio/display.c | 2 + >>>> hw/vfio/helpers.c | 612 +++++++++++++ >>>> hw/vfio/pci.c | 194 ++-- >>>> hw/vfio/platform.c | 43 +- >>>> hw/vfio/meson.build | 2 + >>>> hw/vfio/trace-events | 6 +- >>>> scripts/update-linux-headers.sh | 3 +- >>>> 14 files changed, 2580 insertions(+), 2024 deletions(-) >>>> create mode 100644 linux-headers/linux/iommufd.h >>>> create mode 100644 hw/vfio/container.c >>>> create mode 100644 hw/vfio/helpers.c >>>> >>>