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.