Re: [PATCH v5 16/21] KVM: vfio: add s390x hook to register KVM guest designation

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

 



On 4/8/22 8:45 AM, Jason Gunthorpe wrote:
On Mon, Apr 04, 2022 at 01:43:44PM -0400, Matthew Rosato wrote:
At the time a KVM is associated with a vfio group, s390x zPCI devices
must register a special guest indication (GISA designation) to allow
for the use of interpretive execution facilities.  This indication is
used to ensure that only the specified KVM can interact with the device.
Similarly, the indication must be removed once the KVM is no longer
associated with the device.

This patch adds an s390-specific hook to invoke a KVM registration routine
for each device associated with the iommu group; in reality, it will be a
NOP for all but zPCI devices on s390x.

Signed-off-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx>
---
  virt/kvm/vfio.c | 35 ++++++++++++++++++++++++++++++++++-
  1 file changed, 34 insertions(+), 1 deletion(-)

I wonder if this should be done in the vfio_pci side from the existing
kvm notifier


So you mean rather than hooking into virt as I do here, drive something out of drivers/vfio/vfio.c:vfio_group_set_kvm? Note, the kvm notifier is handled in vfio, not vfio_pci, so if you want to handle it in vfio_pci I think we'd need to add a new routine to vfio_device_ops and only define it vfio_pci for s390

e.g.

static const struct vfio_device_ops vfio_pci_ops = {
	.name		= "vfio-pci",
[...]
#ifdef CONFIG_S390
	.set_kvm = vfio_pci_zdev_set_kvm,
#endif
};

and something like...

void vfio_group_set_kvm(struct vfio_group *group, struct kvm *kvm)
{
	struct vfio_device *vdev;
	group->kvm = kvm;

	mutex_lock(&group->device_lock);
	list_for_each_entry(vdev, &group->device_list, group_next) {
		if (vdev->ops->set_kvm)
			it->ops->set_kvm(vdev, kvm);
	}
	mutex_unlock(&group->device_lock);

	blocking_notifier_call_chain(&group->notifier,
				VFIO_GROUP_NOTIFY_SET_KVM, kvm);
}






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux