lkml.org 
[lkml]   [2018]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v3 11/14] s390: vfio-ap: sysfs interface to view matrix mdev matrix
From
Date
On 03/15/2018 05:42 AM, Pierre Morel wrote:
> On 14/03/2018 19:25, 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@linux.vnet.ibm.com>
>> ---
>> drivers/s390/crypto/vfio_ap_ops.c | 39
>> +++++++++++++++++++++++++++++++++++++
>> 1 files changed, 39 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/s390/crypto/vfio_ap_ops.c
>> b/drivers/s390/crypto/vfio_ap_ops.c
>> index 461d450..04f7a92 100644
>> --- a/drivers/s390/crypto/vfio_ap_ops.c
>> +++ b/drivers/s390/crypto/vfio_ap_ops.c
>> @@ -692,6 +692,44 @@ 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;
>> + int nchars = 0;
>> + int n;
>> +
>> + n = sprintf(bufpos, "ADAPTER.DOMAIN\n");
>
> For easy parsing it is better to only report the interesting data
> and let a user space utility make fancy presentation.
Is that your way of saying take the above line out?
>
>
>> + bufpos += n;
>> + nchars += n;
>> +
>> + n = sprintf(bufpos, "--------------\n");
>> + bufpos += n;
>> + nchars += n;
>> +
>> + for_each_set_bit_inv(apid, matrix_mdev->matrix->apm,
>> + matrix_mdev->matrix->apm_max) {
>> + n = sprintf(bufpos, "%02lx\n", apid);
>> + bufpos += n;
>> + nchars += n;
>> +
>> + for_each_set_bit_inv(apqi, matrix_mdev->matrix->aqm,
>> + matrix_mdev->matrix->aqm_max) {
>> + 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,
>> @@ -700,6 +738,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,
>> };
>>
>

\
 
 \ /
  Last update: 2018-03-15 15:53    [W:0.087 / U:6.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site