Re: [PATCH v6 13/21] s390: vfio-ap: sysfs interface to view matrix mdev matrix

From: Pierre Morel
Date: Mon Jul 09 2018 - 10:39:12 EST


On 09/07/2018 14:20, Pierre Morel wrote:
On 29/06/2018 23:11, Tony Krowiak wrote:
Provides a sysfs interface to view the AP matrix configured for the
mediated matrix device.

The relevant sysfs structures are:

/sys/devices/vfio_ap
... [matrix]
...... [mdev_supported_types]
......... [vfio_ap-passthrough]
............ [devices]
...............[$uuid]
.................. matrix

To view the matrix configured for the mediated matrix device,
print the matrix file:

ÂÂÂÂcat matrix

Signed-off-by: Tony Krowiak <akrowiak@xxxxxxxxxxxxx>
---
 drivers/s390/crypto/vfio_ap_ops.c | 31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c
index c8f31f3..bc7398d 100644
--- a/drivers/s390/crypto/vfio_ap_ops.c
+++ b/drivers/s390/crypto/vfio_ap_ops.c
@@ -697,6 +697,36 @@ static ssize_t control_domains_show(struct device *dev,
 }
 DEVICE_ATTR_RO(control_domains);

+static ssize_t matrix_show(struct device *dev, struct device_attribute *attr,
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ char *buf)
+{
+ÂÂÂ struct mdev_device *mdev = mdev_from_dev(dev);
+ÂÂÂ struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
+ÂÂÂ char *bufpos = buf;
+ÂÂÂ unsigned long apid;
+ÂÂÂ unsigned long apqi;
+ÂÂÂ unsigned long napm = matrix_mdev->matrix.apm_max + 1;
+ÂÂÂ unsigned long naqm = matrix_mdev->matrix.aqm_max + 1;
+ÂÂÂ int nchars = 0;
+ÂÂÂ int n;
+
+ÂÂÂ for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, napm) {
+ÂÂÂÂÂÂÂ n = sprintf(bufpos, "%02lx\n", apid);
+ÂÂÂÂÂÂÂ bufpos += n;
+ÂÂÂÂÂÂÂ nchars += n;
+
+ÂÂÂÂÂÂÂ for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, naqm) {
+ÂÂÂÂÂÂÂÂÂÂÂ n = sprintf(bufpos, "%02lx.%04lx\n", apid, apqi);
+ÂÂÂÂÂÂÂÂÂÂÂ bufpos += n;
+ÂÂÂÂÂÂÂÂÂÂÂ nchars += n;
+ÂÂÂÂÂÂÂ }
+ÂÂÂ }
+
+ÂÂÂ return nchars;
+}
+DEVICE_ATTR_RO(matrix);
+
+
 static struct attribute *vfio_ap_mdev_attrs[] = {
ÂÂÂÂÂ &dev_attr_assign_adapter.attr,
ÂÂÂÂÂ &dev_attr_unassign_adapter.attr,
@@ -705,6 +735,7 @@ static ssize_t control_domains_show(struct device *dev,
ÂÂÂÂÂ &dev_attr_assign_control_domain.attr,
ÂÂÂÂÂ &dev_attr_unassign_control_domain.attr,
ÂÂÂÂÂ &dev_attr_control_domains.attr,
+ÂÂÂ &dev_attr_matrix.attr,
ÂÂÂÂÂ NULL,
 };


I have still the same remark: what you show here is not what is currently
used by the SIE.
It is not irrelevant but what the guest really use may be more interesting
for the admin.


OK, you implement the right view it in patch 16/21.

Still, what is the purpose of showing this view?


--
Pierre Morel
Linux/KVM/QEMU in BÃblingen - Germany