All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@kaod.org>
To: Paul Mackerras <paulus@ozlabs.org>, kvm@vger.kernel.org
Cc: David Gibson <david@gibson.dropbear.id.au>, kvm-ppc@vger.kernel.org
Subject: Re: [PATCH] KVM: PPC: Book3S HV: XIVE: Clear escalation interrupt pointers on device close
Date: Mon, 6 May 2019 17:04:16 +0200	[thread overview]
Message-ID: <4d9e4296-2004-265c-9eb6-748d2f71e98e@kaod.org> (raw)
In-Reply-To: <20190426065414.GC12768@blackberry>

On 4/26/19 8:54 AM, Paul Mackerras wrote:
> This adds code to ensure that after a XIVE or XICS-on-XIVE KVM device
> is closed, KVM will not try to enable or disable any of the escalation
> interrupts for the VCPUs.  

Yes. This is a required cleanup.

Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.


> We don't have to worry about races between
> clearing the pointers and use of the pointers by the XIVE context
> push/pull code, because the callers hold the vcpu->mutex, which is
> also taken by the KVM_RUN code.  Therefore the vcpu cannot be entering
> or exiting the guest concurrently.
> 
> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
> ---
>  arch/powerpc/kvm/book3s_xive.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/arch/powerpc/kvm/book3s_xive.c b/arch/powerpc/kvm/book3s_xive.c
> index 4280cd8..4953957 100644
> --- a/arch/powerpc/kvm/book3s_xive.c
> +++ b/arch/powerpc/kvm/book3s_xive.c
> @@ -1096,6 +1096,21 @@ void kvmppc_xive_disable_vcpu_interrupts(struct kvm_vcpu *vcpu)
>  			arch_spin_unlock(&sb->lock);
>  		}
>  	}
> +
> +	/* Disable vcpu's escalation interrupt */
> +	if (vcpu->arch.xive_esc_on) {
> +		__raw_readq((void __iomem *)(vcpu->arch.xive_esc_vaddr +
> +					     XIVE_ESB_SET_PQ_01));
> +		vcpu->arch.xive_esc_on = false;
> +	}
> +
> +	/*
> +	 * Clear pointers to escalation interrupt ESB.
> +	 * This is safe because the vcpu->mutex is held, preventing
> +	 * any other CPU from concurrently executing a KVM_RUN ioctl.
> +	 */
> +	vcpu->arch.xive_esc_vaddr = 0;
> +	vcpu->arch.xive_esc_raddr = 0;
>  }
>  
>  void kvmppc_xive_cleanup_vcpu(struct kvm_vcpu *vcpu)
> 


WARNING: multiple messages have this Message-ID (diff)
From: "Cédric Le Goater" <clg@kaod.org>
To: Paul Mackerras <paulus@ozlabs.org>, kvm@vger.kernel.org
Cc: David Gibson <david@gibson.dropbear.id.au>, kvm-ppc@vger.kernel.org
Subject: Re: [PATCH] KVM: PPC: Book3S HV: XIVE: Clear escalation interrupt pointers on device close
Date: Mon, 06 May 2019 15:04:16 +0000	[thread overview]
Message-ID: <4d9e4296-2004-265c-9eb6-748d2f71e98e@kaod.org> (raw)
In-Reply-To: <20190426065414.GC12768@blackberry>

On 4/26/19 8:54 AM, Paul Mackerras wrote:
> This adds code to ensure that after a XIVE or XICS-on-XIVE KVM device
> is closed, KVM will not try to enable or disable any of the escalation
> interrupts for the VCPUs.  

Yes. This is a required cleanup.

Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.


> We don't have to worry about races between
> clearing the pointers and use of the pointers by the XIVE context
> push/pull code, because the callers hold the vcpu->mutex, which is
> also taken by the KVM_RUN code.  Therefore the vcpu cannot be entering
> or exiting the guest concurrently.
> 
> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
> ---
>  arch/powerpc/kvm/book3s_xive.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/arch/powerpc/kvm/book3s_xive.c b/arch/powerpc/kvm/book3s_xive.c
> index 4280cd8..4953957 100644
> --- a/arch/powerpc/kvm/book3s_xive.c
> +++ b/arch/powerpc/kvm/book3s_xive.c
> @@ -1096,6 +1096,21 @@ void kvmppc_xive_disable_vcpu_interrupts(struct kvm_vcpu *vcpu)
>  			arch_spin_unlock(&sb->lock);
>  		}
>  	}
> +
> +	/* Disable vcpu's escalation interrupt */
> +	if (vcpu->arch.xive_esc_on) {
> +		__raw_readq((void __iomem *)(vcpu->arch.xive_esc_vaddr +
> +					     XIVE_ESB_SET_PQ_01));
> +		vcpu->arch.xive_esc_on = false;
> +	}
> +
> +	/*
> +	 * Clear pointers to escalation interrupt ESB.
> +	 * This is safe because the vcpu->mutex is held, preventing
> +	 * any other CPU from concurrently executing a KVM_RUN ioctl.
> +	 */
> +	vcpu->arch.xive_esc_vaddr = 0;
> +	vcpu->arch.xive_esc_raddr = 0;
>  }
>  
>  void kvmppc_xive_cleanup_vcpu(struct kvm_vcpu *vcpu)
> 

  reply	other threads:[~2019-05-06 15:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-26  6:54 [PATCH] KVM: PPC: Book3S HV: XIVE: Clear escalation interrupt pointers on device close Paul Mackerras
2019-04-26  6:54 ` Paul Mackerras
2019-05-06 15:04 ` Cédric Le Goater [this message]
2019-05-06 15:04   ` Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4d9e4296-2004-265c-9eb6-748d2f71e98e@kaod.org \
    --to=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=paulus@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.