[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH v3 4/7] s390x/kvm: interface to interpret AP ins
From: |
David Hildenbrand |
Subject: |
Re: [qemu-s390x] [PATCH v3 4/7] s390x/kvm: interface to interpret AP instructions |
Date: |
Mon, 26 Mar 2018 10:38:22 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 16.03.2018 00:24, Tony Krowiak wrote:
> The VFIO AP device exploits interpretive execution of AP
> instructions (APIE). APIE is enabled by setting a device attribute
> via the KVM_SET_DEVICE_ATTR ioctl.
>
> Signed-off-by: Tony Krowiak <address@hidden>
> ---
> target/s390x/kvm.c | 16 ++++++++++++++++
> target/s390x/kvm_s390x.h | 2 ++
> 2 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index 33e5ec3..2812e28 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -277,6 +277,22 @@ static void kvm_s390_init_dea_kw(void)
> }
> }
>
> +int kvm_s390_set_interpret_ap(uint8_t enable)
> +{
> + struct kvm_device_attr attribute = {
> + .group = KVM_S390_VM_CRYPTO,
> + .attr = KVM_S390_VM_CRYPTO_INTERPRET_AP,
> + .addr = 1,
> + };
> +
> + if (!kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO,
> + KVM_S390_VM_CRYPTO_INTERPRET_AP)) {
> + return -EOPNOTSUPP;
> + }
> +
> + return kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, &attribute);
> +}
> +
> void kvm_s390_crypto_reset(void)
> {
> if (s390_has_feat(S390_FEAT_MSA_EXT_3)) {
> diff --git a/target/s390x/kvm_s390x.h b/target/s390x/kvm_s390x.h
> index 34ee7e7..0d6c6e7 100644
> --- a/target/s390x/kvm_s390x.h
> +++ b/target/s390x/kvm_s390x.h
> @@ -40,4 +40,6 @@ void kvm_s390_crypto_reset(void);
> void kvm_s390_restart_interrupt(S390CPU *cpu);
> void kvm_s390_stop_interrupt(S390CPU *cpu);
>
> +int kvm_s390_set_interpret_ap(uint8_t enable);
> +
> #endif /* KVM_S390X_H */
>
Wonder if a capability - like we use e.g. for SIGP user space
interpretation - would be a better fit.
We can provide the AP feature to the guest in case:
- KVM_S390_VM_CPU_FEAT_AP ("interpretation support") is available
- KVM_S390_VM_CRYPTO_INTERPRET_AP ("interception support") is available
I am missing the second check in your code. (for now you only rely on
KVM_S390_VM_CPU_FEAT_AP)
I think you have to change the order of the patches so they work also
properly when bisectin.
--
Thanks,
David / dhildenb