On 07/09/2018 04:38 PM, Pierre Morel wrote:
On 09/07/2018 14:20, Pierre Morel wrote:
On 29/06/2018 23:11, Tony Krowiak wrote:OK, you implement the right view it in patch 16/21.
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.
Still, what is the purpose of showing this view?
I find it to have great value when configuring the mdev. It provides a view of
what has been configured thus far.