Message ID | 20231006062005.1040296-1-clg@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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. 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 >
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? 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 >> >
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. 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 >>> >>
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 >>>> >>>
Hello Eric, On 10/6/23 14:25, Eric Auger wrote: > 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. So, the issue was a bit complex to dig because it only crashed with a s390 guest under libvirt. This is my all-in-one combo VM which has 2 PCI, 2 AP, 1 CCW passthrough devices and the issue is in AP I think. vfio_ap_realize lacks : @@ -188,6 +188,7 @@ static void vfio_ap_realize(DeviceState error_report_err(err); } + return; error: error_prepend(errp, VFIO_MSG_PREFIX, vbasedev->name); g_free(vbasedev->name); No error were to return and since everything was fine, the error path generated a lot of mess indeed ! If you are ok with the above, I will squash the change in the related patch and send a v2. Thanks, C. > > 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 >>>>> >>>> >
Hi Cédric, On 10/6/23 19:08, Cédric Le Goater wrote: > Hello Eric, > > On 10/6/23 14:25, Eric Auger wrote: >> 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. > > So, the issue was a bit complex to dig because it only crashed > with a s390 guest under libvirt. This is my all-in-one combo VM > which has 2 PCI, 2 AP, 1 CCW passthrough devices and the issue > is in AP I think. > > vfio_ap_realize lacks : > > @@ -188,6 +188,7 @@ static void vfio_ap_realize(DeviceState > error_report_err(err); > } > + return; Hum indeed! Thanks for fixing that. > error: > error_prepend(errp, VFIO_MSG_PREFIX, vbasedev->name); > g_free(vbasedev->name); > > > No error were to return and since everything was fine, the error > path generated a lot of mess indeed ! > > If you are ok with the above, I will squash the change in the > related patch and send a v2. Unfortunately this is not sufficient. There is another regression (crash) on a double free of vbasedev->name as I reported before. I was able to hit it on a failing hotplug. How do you want me to send the fix? I can resend the whole series of just fixes on the related patches. Thanks Eric> Thanks, > > C. > > > > >> >> 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 >>>>>> >>>>> >> >
Hello Eric, >> If you are ok with the above, I will squash the change in the >> related patch and send a v2. > > Unfortunately this is not sufficient. There is another regression > (crash) on a double free of vbasedev->name as I reported before. I was > able to hit it on a failing hotplug. How do you want me to send the > fix? I can resend the whole series of just fixes on the related patches. Please send a v5 for "Prerequisite changes for IOMMUFD support" with the fixes we talked about. I will rebuild a PR next week. Thanks, C.
07.10.2023 13:14, Cédric Le Goater wrote: > Please send a v5 for "Prerequisite changes for IOMMUFD support" with the > fixes we talked about. I will rebuild a PR next week. Can you push the first bugfix at least, so it will not miss stable-8.1.2? Thanks, /mjt
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. We found a couple of issues after further testing. Fixes are under way. Let's drop this PR. I will send a reduced one today. Thanks, C.