mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
target/s390x/kvm: Refactor AP functionalities
kvm_s390_set_attr() is a misleading name as it only sets attributes for the KVM_S390_VM_CRYPTO group. Therefore, rename it to kvm_s390_set_crypto_attr(). Add new functions ap_available() and ap_enabled() to avoid code duplication later. Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michael Mueller <mimu@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com> Message-ID: <20230823142219.1046522-5-seiden@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
da3c22c74a
commit
354383c122
1 changed files with 17 additions and 7 deletions
|
@ -240,7 +240,7 @@ static void kvm_s390_enable_cmma(void)
|
|||
trace_kvm_enable_cmma(rc);
|
||||
}
|
||||
|
||||
static void kvm_s390_set_attr(uint64_t attr)
|
||||
static void kvm_s390_set_crypto_attr(uint64_t attr)
|
||||
{
|
||||
struct kvm_device_attr attribute = {
|
||||
.group = KVM_S390_VM_CRYPTO,
|
||||
|
@ -265,7 +265,7 @@ static void kvm_s390_init_aes_kw(void)
|
|||
}
|
||||
|
||||
if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO, attr)) {
|
||||
kvm_s390_set_attr(attr);
|
||||
kvm_s390_set_crypto_attr(attr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -279,7 +279,7 @@ static void kvm_s390_init_dea_kw(void)
|
|||
}
|
||||
|
||||
if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO, attr)) {
|
||||
kvm_s390_set_attr(attr);
|
||||
kvm_s390_set_crypto_attr(attr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2288,6 +2288,17 @@ static int configure_cpu_subfunc(const S390FeatBitmap features)
|
|||
return kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, &attr);
|
||||
}
|
||||
|
||||
static bool ap_available(void)
|
||||
{
|
||||
return kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO,
|
||||
KVM_S390_VM_CRYPTO_ENABLE_APIE);
|
||||
}
|
||||
|
||||
static bool ap_enabled(const S390FeatBitmap features)
|
||||
{
|
||||
return test_bit(S390_FEAT_AP, features);
|
||||
}
|
||||
|
||||
static int kvm_to_feat[][2] = {
|
||||
{ KVM_S390_VM_CPU_FEAT_ESOP, S390_FEAT_ESOP },
|
||||
{ KVM_S390_VM_CPU_FEAT_SIEF2, S390_FEAT_SIE_F2 },
|
||||
|
@ -2467,8 +2478,7 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp)
|
|||
return;
|
||||
}
|
||||
/* for now, we can only provide the AP feature with HW support */
|
||||
if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO,
|
||||
KVM_S390_VM_CRYPTO_ENABLE_APIE)) {
|
||||
if (ap_available()) {
|
||||
set_bit(S390_FEAT_AP, model->features);
|
||||
}
|
||||
|
||||
|
@ -2494,7 +2504,7 @@ static void kvm_s390_configure_apie(bool interpret)
|
|||
KVM_S390_VM_CRYPTO_DISABLE_APIE;
|
||||
|
||||
if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO, attr)) {
|
||||
kvm_s390_set_attr(attr);
|
||||
kvm_s390_set_crypto_attr(attr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2548,7 +2558,7 @@ void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp)
|
|||
kvm_s390_enable_cmma();
|
||||
}
|
||||
|
||||
if (test_bit(S390_FEAT_AP, model->features)) {
|
||||
if (ap_enabled(model->features)) {
|
||||
kvm_s390_configure_apie(true);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue