On 10/28/20 4:17 AM, Halil Pasic wrote:
On Thu, 22 Oct 2020 13:12:02 -0400 Tony Krowiak <[email protected]> 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);

