lkml.org 
[lkml]   [2018]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 12/15] s390: vfio-ap: sysfs interface to view matrix mdev matrix
    Date
    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");
    + 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,
    };

    --
    1.7.1
    \
     
     \ /
      Last update: 2018-02-27 15:34    [W:4.342 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site