Re: [PATCH v11 07/14] s390/vfio-ap: sysfs attribute to display the guest's matrix

From: Tony Krowiak
Date: Fri Nov 13 2020 - 12:28:55 EST




On 10/28/20 4:17 AM, Halil Pasic wrote:
On Thu, 22 Oct 2020 13:12:02 -0400
Tony Krowiak <akrowiak@xxxxxxxxxxxxx> wrote:

+static ssize_t guest_matrix_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ ssize_t nchars;
+ struct mdev_device *mdev = mdev_from_dev(dev);
+ struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
+
+ if (!vfio_ap_mdev_has_crycb(matrix_mdev))
+ return -ENODEV;
I'm wondering, would it make sense to have guest_matrix display the would
be guest matrix when we don't have a KVM? With the filtering in
place, the question in what guest_matrix would my (assign) matrix result
right now if I were to hook up my vfio_ap_mdev to a guest seems a
legitimate one.

A couple of thoughts here:
* The ENODEV informs the user that there is no guest running
   which makes sense to me given this interface displays the
   guest matrix. The alternative, which I considered, was to
   display an empty matrix (i.e., nothing).
* This would be a pretty drastic change to the design because
   the shadow_apcb - which is what is displayed via this interface - is
   only updated when the guest is started and while it is running (i.e.,
   hot plug of new adapters/domains). Making this change would
   require changing that entire design concept which I am reluctant
   to do at this point in the game.




+
+ mutex_lock(&matrix_dev->lock);
+ nchars = vfio_ap_mdev_matrix_show(&matrix_mdev->shadow_apcb, buf);
+ mutex_unlock(&matrix_dev->lock);
+
+ return nchars;
+}
+static DEVICE_ATTR_RO(guest_matrix);