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





Reply via email to