Re: [PATCH v11 13/19] KVM: s390: pv: destroy the configuration before its memory

Janosch Frank
2022-06-14T14:23:59Z

On 6/3/22 08:56, Claudio Imbrenda wrote:
> Move the Destroy Secure Configuration UVC before the loop to destroy
> the memory. If the protected VM has memory, it will be cleaned up and
> made accessible by the Destroy Secure Configuraion UVC. The struct

s/Configuraion/Configuration/

> page for the relevant pages will still have the protected bit set, so
> the loop is still needed to clean that up.
>
> Switching the order of those two operations does not change the
> outcome, but it is significantly faster.
>
> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>

Reviewed-by: Janosch Frank <frankja@linux.ibm.com>

> ---
> arch/s390/kvm/pv.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c
> index a389555d62e7..6cffea26c47f 100644
> --- a/arch/s390/kvm/pv.c
> +++ b/arch/s390/kvm/pv.c
> @@ -163,6 +163,9 @@ int kvm_s390_pv_deinit_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
> {
> int cc;
>
> + cc = uv_cmd_nodata(kvm_s390_pv_get_handle(kvm),
> + UVC_CMD_DESTROY_SEC_CONF, rc, rrc);
> + WRITE_ONCE(kvm->arch.gmap->guest_handle, 0);
> /*
> * if the mm still has a mapping, make all its pages accessible
> * before destroying the guest
> @@ -172,9 +175,6 @@ int kvm_s390_pv_deinit_vm(struct kvm *kvm, u16 *rc, u16 *rrc)
> mmput(kvm->mm);
> }
>
> - cc = uv_cmd_nodata(kvm_s390_pv_get_handle(kvm),
> - UVC_CMD_DESTROY_SEC_CONF, rc, rrc);
> - WRITE_ONCE(kvm->arch.gmap->guest_handle, 0);
> if (!cc) {
> atomic_dec(&kvm->mm->context.protected_count);
> kvm_s390_pv_dealloc_vm(kvm);