aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorGravatar Paolo Bonzini <pbonzini@redhat.com> 2018-10-13 12:00:26 +0200
committerGravatar Paolo Bonzini <pbonzini@redhat.com> 2018-10-13 12:00:26 +0200
commit3d0d0d9b1d805e39456a9d49443d847092cb21ab (patch)
tree6e99cda54e3db2f9ce039ac3d1269de2a81cc818 /drivers
parentMerge tag 'kvm-ppc-next-4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/... (diff)
parentMerge branch 'apv11' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390... (diff)
downloadlinux-3d0d0d9b1d805e39456a9d49443d847092cb21ab.tar.gz
linux-3d0d0d9b1d805e39456a9d49443d847092cb21ab.tar.bz2
linux-3d0d0d9b1d805e39456a9d49443d847092cb21ab.zip
Merge tag 'kvm-s390-next-4.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
KVM: s390/vfio-ap: Fixes and enhancements for vfio-ap - add tracing - fix a locking bug - make local functions and data static
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/crypto/vfio_ap_drv.c4
-rw-r--r--drivers/s390/crypto/vfio_ap_ops.c55
2 files changed, 15 insertions, 44 deletions
diff --git a/drivers/s390/crypto/vfio_ap_drv.c b/drivers/s390/crypto/vfio_ap_drv.c
index 8b51821d9bf7..7667b38728f0 100644
--- a/drivers/s390/crypto/vfio_ap_drv.c
+++ b/drivers/s390/crypto/vfio_ap_drv.c
@@ -112,7 +112,7 @@ static void vfio_ap_matrix_dev_destroy(void)
root_device_unregister(matrix_dev->device.parent);
}
-int __init vfio_ap_init(void)
+static int __init vfio_ap_init(void)
{
int ret;
@@ -146,7 +146,7 @@ int __init vfio_ap_init(void)
return 0;
}
-void __exit vfio_ap_exit(void)
+static void __exit vfio_ap_exit(void)
{
vfio_ap_mdev_unregister();
ap_driver_unregister(&vfio_ap_drv);
diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c
index d3d9eb72b0f1..272ef427dcc0 100644
--- a/drivers/s390/crypto/vfio_ap_ops.c
+++ b/drivers/s390/crypto/vfio_ap_ops.c
@@ -77,7 +77,7 @@ static ssize_t name_show(struct kobject *kobj, struct device *dev, char *buf)
return sprintf(buf, "%s\n", VFIO_AP_MDEV_NAME_HWVIRT);
}
-MDEV_TYPE_ATTR_RO(name);
+static MDEV_TYPE_ATTR_RO(name);
static ssize_t available_instances_show(struct kobject *kobj,
struct device *dev, char *buf)
@@ -86,7 +86,7 @@ static ssize_t available_instances_show(struct kobject *kobj,
atomic_read(&matrix_dev->available_instances));
}
-MDEV_TYPE_ATTR_RO(available_instances);
+static MDEV_TYPE_ATTR_RO(available_instances);
static ssize_t device_api_show(struct kobject *kobj, struct device *dev,
char *buf)
@@ -94,7 +94,7 @@ static ssize_t device_api_show(struct kobject *kobj, struct device *dev,
return sprintf(buf, "%s\n", VFIO_DEVICE_API_AP_STRING);
}
-MDEV_TYPE_ATTR_RO(device_api);
+static MDEV_TYPE_ATTR_RO(device_api);
static struct attribute *vfio_ap_mdev_type_attrs[] = {
&mdev_type_attr_name.attr,
@@ -395,7 +395,7 @@ static ssize_t unassign_adapter_store(struct device *dev,
return count;
}
-DEVICE_ATTR_WO(unassign_adapter);
+static DEVICE_ATTR_WO(unassign_adapter);
static int
vfio_ap_mdev_verify_queues_reserved_for_apqi(struct ap_matrix_mdev *matrix_mdev,
@@ -491,7 +491,7 @@ done:
return ret;
}
-DEVICE_ATTR_WO(assign_domain);
+static DEVICE_ATTR_WO(assign_domain);
/**
@@ -537,7 +537,7 @@ static ssize_t unassign_domain_store(struct device *dev,
return count;
}
-DEVICE_ATTR_WO(unassign_domain);
+static DEVICE_ATTR_WO(unassign_domain);
/**
* assign_control_domain_store
@@ -586,7 +586,7 @@ static ssize_t assign_control_domain_store(struct device *dev,
return count;
}
-DEVICE_ATTR_WO(assign_control_domain);
+static DEVICE_ATTR_WO(assign_control_domain);
/**
* unassign_control_domain_store
@@ -630,7 +630,7 @@ static ssize_t unassign_control_domain_store(struct device *dev,
return count;
}
-DEVICE_ATTR_WO(unassign_control_domain);
+static DEVICE_ATTR_WO(unassign_control_domain);
static ssize_t control_domains_show(struct device *dev,
struct device_attribute *dev_attr,
@@ -654,7 +654,7 @@ static ssize_t control_domains_show(struct device *dev,
return nchars;
}
-DEVICE_ATTR_RO(control_domains);
+static DEVICE_ATTR_RO(control_domains);
static ssize_t matrix_show(struct device *dev, struct device_attribute *attr,
char *buf)
@@ -704,7 +704,7 @@ static ssize_t matrix_show(struct device *dev, struct device_attribute *attr,
return nchars;
}
-DEVICE_ATTR_RO(matrix);
+static DEVICE_ATTR_RO(matrix);
static struct attribute *vfio_ap_mdev_attrs[] = {
&dev_attr_assign_adapter.attr,
@@ -727,37 +727,6 @@ static const struct attribute_group *vfio_ap_mdev_attr_groups[] = {
NULL
};
-static void vfio_ap_mdev_copy_masks(struct ap_matrix_mdev *matrix_mdev)
-{
- int nbytes;
- unsigned long *apm, *aqm, *adm;
- struct kvm_s390_crypto_cb *crycb = matrix_mdev->kvm->arch.crypto.crycb;
-
- switch (matrix_mdev->kvm->arch.crypto.crycbd & CRYCB_FORMAT_MASK) {
- case CRYCB_FORMAT2:
- apm = (unsigned long *)crycb->apcb1.apm;
- aqm = (unsigned long *)crycb->apcb1.aqm;
- adm = (unsigned long *)crycb->apcb1.adm;
- break;
- case CRYCB_FORMAT1:
- case CRYCB_FORMAT0:
- apm = (unsigned long *)crycb->apcb0.apm;
- aqm = (unsigned long *)crycb->apcb0.aqm;
- adm = (unsigned long *)crycb->apcb0.adm;
- break;
- default:
- /* cannot happen */
- return;
- }
-
- nbytes = DIV_ROUND_UP(matrix_mdev->matrix.apm_max + 1, BITS_PER_BYTE);
- memcpy(apm, matrix_mdev->matrix.apm, nbytes);
- nbytes = DIV_ROUND_UP(matrix_mdev->matrix.aqm_max + 1, BITS_PER_BYTE);
- memcpy(aqm, matrix_mdev->matrix.aqm, nbytes);
- nbytes = DIV_ROUND_UP(matrix_mdev->matrix.adm_max + 1, BITS_PER_BYTE);
- memcpy(adm, matrix_mdev->matrix.adm, nbytes);
-}
-
/**
* vfio_ap_mdev_set_kvm
*
@@ -814,7 +783,9 @@ static int vfio_ap_mdev_group_notifier(struct notifier_block *nb,
if (!matrix_mdev->kvm->arch.crypto.crycbd)
return NOTIFY_DONE;
- vfio_ap_mdev_copy_masks(matrix_mdev);
+ kvm_arch_crypto_set_masks(matrix_mdev->kvm, matrix_mdev->matrix.apm,
+ matrix_mdev->matrix.aqm,
+ matrix_mdev->matrix.adm);
return NOTIFY_OK;
}