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);