Re: [PATCH 09/12] s390x/pci: enable adapter event notification for interpreted devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/8/21 6:29 AM, Thomas Huth wrote:
On 07/12/2021 22.04, Matthew Rosato wrote:
Use the associated vfio feature ioctl to enable adapter event notification
and forwarding for devices when requested.  This feature will be set up
with or without firmware assist based upon the 'intassist' setting.

Signed-off-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx>
---
  hw/s390x/s390-pci-bus.c          | 24 +++++++--
  hw/s390x/s390-pci-inst.c         | 54 +++++++++++++++++++-
  hw/s390x/s390-pci-vfio.c         | 88 ++++++++++++++++++++++++++++++++
  include/hw/s390x/s390-pci-bus.h  |  1 +
  include/hw/s390x/s390-pci-vfio.h | 20 ++++++++
  5 files changed, 182 insertions(+), 5 deletions(-)
[...]
diff --git a/hw/s390x/s390-pci-vfio.c b/hw/s390x/s390-pci-vfio.c
index 78093aaac7..6f9271df87 100644
--- a/hw/s390x/s390-pci-vfio.c
+++ b/hw/s390x/s390-pci-vfio.c
@@ -152,6 +152,94 @@ int s390_pci_update_passthrough_fh(S390PCIBusDevice *pbdev)
      return 0;
  }
+int s390_pci_probe_aif(S390PCIBusDevice *pbdev)
+{
+    VFIOPCIDevice *vdev = container_of(pbdev->pdev, VFIOPCIDevice, pdev);

Should this use VFIO_PCI() instead of container_of ?


Yes, VFIO_PCI(pbdev->pdev) should work.

+    struct vfio_device_feature feat = {
+        .argsz = sizeof(struct vfio_device_feature),
+        .flags = VFIO_DEVICE_FEATURE_PROBE + VFIO_DEVICE_FEATURE_ZPCI_AIF
+    };
+
+    assert(vdev);

... then you could likely also drop the assert(), I think?

If I've understood qom.h correctly then yes you're right, if we use the instance checker VFIO_PCI() we should trigger an assert through object_dynamic_cast_assert() already if the pdev isn't a vfio-pci device -- I just verified that by trying to call VFIO_PCI() with something else and we indeed get an assert e.g. 'VFIO_PCI: Object 0x... is not an instance of type vfio-pci'

So I'll change these and get rid of the extra asserts, thanks.




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux