Commit cbf367d5 authored by Rorie Reyes's avatar Rorie Reyes Committed by Vasily Gorbik
Browse files

s390/vfio-ap: Notify userspace that guest's AP config changed when mdev removed



The guest's AP configuration is cleared when the mdev is removed, so
userspace must be notified that the AP configuration has changed. To this
end, this patch:

* Removes call to 'signal_guest_ap_cfg_changed()' function from the
  'vfio_ap_mdev_unset_kvm()' function because it has no affect given it is
  called after the mdev fd is closed.

* Adds call to 'signal_guest_ap_cfg_changed()' function to the
  'vfio_ap_mdev_request()' function to notify userspace that the guest's
  AP configuration has changed before signaling the request to remove the
  mdev.

Minor change - Fixed an indentation issue in function
'signal_guest_ap_cfg_changed()'

Fixes: 07d89045 ("s390/vfio-ap: Signal eventfd when guest AP configuration is changed")
Signed-off-by: default avatarRorie Reyes <rreyes@linux.ibm.com>
Reviewed-by: default avatarAnthony Krowiak <akrowiak@linux.ibm.com>
Link: https://lore.kernel.org/r/20250304200812.54556-1-rreyes@linux.ibm.com


Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent c94bff63
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -1870,7 +1870,6 @@ static void vfio_ap_mdev_unset_kvm(struct ap_matrix_mdev *matrix_mdev)
		get_update_locks_for_kvm(kvm);

		kvm_arch_crypto_clear_masks(kvm);
		signal_guest_ap_cfg_changed(matrix_mdev);
		vfio_ap_mdev_reset_queues(matrix_mdev);
		kvm_put_kvm(kvm);
		matrix_mdev->kvm = NULL;
@@ -2057,6 +2056,13 @@ static void vfio_ap_mdev_request(struct vfio_device *vdev, unsigned int count)

	matrix_mdev = container_of(vdev, struct ap_matrix_mdev, vdev);

	get_update_locks_for_mdev(matrix_mdev);

	if (matrix_mdev->kvm) {
		kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
		signal_guest_ap_cfg_changed(matrix_mdev);
	}

	if (matrix_mdev->req_trigger) {
		if (!(count % 10))
			dev_notice_ratelimited(dev,
@@ -2068,6 +2074,8 @@ static void vfio_ap_mdev_request(struct vfio_device *vdev, unsigned int count)
		dev_notice(dev,
			   "No device request registered, blocked until released by user\n");
	}

	release_update_locks_for_mdev(matrix_mdev);
}

static int vfio_ap_mdev_get_device_info(unsigned long arg)