All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bharata B Rao <bharata@linux.ibm.com>
To: Nathan Chancellor <nathan@kernel.org>
Cc: farosas@linux.ibm.com, aneesh.kumar@linux.ibm.com,
	npiggin@gmail.com, kvm-ppc@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, david@gibson.dropbear.id.au
Subject: Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
Date: Tue, 22 Jun 2021 04:47:39 +0000	[thread overview]
Message-ID: <YNFom3Ojb4TGsKj2@in.ibm.com> (raw)
In-Reply-To: <YNDIitJ3Hn1/G8Jw@Ryzen-9-3900X.localdomain>

On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end)
> > +{
> > +	struct kvm_nested_guest *gp;
> > +	long ret;
> > +	unsigned long psize, ap;
> > +
> > +	/*
> > +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> > +	 *
> > +	 * However, nested KVM issues a L2 lpid flush call when creating
> > +	 * partition table entries for L2. This happens even before the
> > +	 * corresponding shadow lpid is created in HV which happens in
> > +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> > +	 * the invalid case, we ignore such flush requests and return success.
> > +	 */
> > +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> > +	if (!gp)
> > +		return H_SUCCESS;
> > +
> > +	/*
> > +	 * A flush all request can be handled by a full lpid flush only.
> > +	 */
> > +	if ((type & H_RPTI_TYPE_NESTED_ALL) = H_RPTI_TYPE_NESTED_ALL)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> > +
> > +	/*
> > +	 * We don't need to handle a PWC flush like process table here,
> > +	 * because intermediate partition scoped table in nested guest doesn't
> > +	 * really have PWC. Only level we have PWC is in L0 and for nested
> > +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> > +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> > +	 * are not removing the higher level page tables and hence there is
> > +	 * no PWC invalidate needed.
> > +	 *
> > +	 * if (type & H_RPTI_TYPE_PWC) {
> > +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> > +	 *	if (ret)
> > +	 *		return H_P4;
> > +	 * }
> > +	 */
> > +
> > +	if (start = 0 && end = -1)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> > +
> > +	if (type & H_RPTI_TYPE_TLB) {
> > +		struct mmu_psize_def *def;
> > +		bool flush_lpid;
> > +		unsigned long nr_pages;
> > +
> > +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> > +			def = &mmu_psize_defs[psize];
> > +			if (!(pg_sizes & def->h_rpt_pgsize))
> > +				continue;
> > +
> > +			nr_pages = (end - start) >> def->shift;
> > +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> > +			if (flush_lpid)
> > +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> > +								RIC_FLUSH_TLB);
> > +
> > +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> > +							   (1UL << def->shift),
> > +							   ap, start, end);
> 
> I have not seen this reported yet so apologies if it has and there is a
> fix I am missing:
> 
> arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>                                                            ap, start, end);
>                                                            ^~
> arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>         unsigned long psize, ap;
>                                ^
>                                 = 0

Thanks for catching this, this wasn't caught in my environment.

I will repost the series with proper initialization to ap.

Regards,
Bharata.

WARNING: multiple messages have this Message-ID (diff)
From: Bharata B Rao <bharata@linux.ibm.com>
To: Nathan Chancellor <nathan@kernel.org>
Cc: farosas@linux.ibm.com, aneesh.kumar@linux.ibm.com,
	npiggin@gmail.com, kvm-ppc@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, david@gibson.dropbear.id.au
Subject: Re: [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE
Date: Tue, 22 Jun 2021 10:05:39 +0530	[thread overview]
Message-ID: <YNFom3Ojb4TGsKj2@in.ibm.com> (raw)
In-Reply-To: <YNDIitJ3Hn1/G8Jw@Ryzen-9-3900X.localdomain>

On Mon, Jun 21, 2021 at 10:12:42AM -0700, Nathan Chancellor wrote:
> > +long do_h_rpt_invalidate_pat(struct kvm_vcpu *vcpu, unsigned long lpid,
> > +			     unsigned long type, unsigned long pg_sizes,
> > +			     unsigned long start, unsigned long end)
> > +{
> > +	struct kvm_nested_guest *gp;
> > +	long ret;
> > +	unsigned long psize, ap;
> > +
> > +	/*
> > +	 * If L2 lpid isn't valid, we need to return H_PARAMETER.
> > +	 *
> > +	 * However, nested KVM issues a L2 lpid flush call when creating
> > +	 * partition table entries for L2. This happens even before the
> > +	 * corresponding shadow lpid is created in HV which happens in
> > +	 * H_ENTER_NESTED call. Since we can't differentiate this case from
> > +	 * the invalid case, we ignore such flush requests and return success.
> > +	 */
> > +	gp = kvmhv_find_nested(vcpu->kvm, lpid);
> > +	if (!gp)
> > +		return H_SUCCESS;
> > +
> > +	/*
> > +	 * A flush all request can be handled by a full lpid flush only.
> > +	 */
> > +	if ((type & H_RPTI_TYPE_NESTED_ALL) == H_RPTI_TYPE_NESTED_ALL)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_ALL);
> > +
> > +	/*
> > +	 * We don't need to handle a PWC flush like process table here,
> > +	 * because intermediate partition scoped table in nested guest doesn't
> > +	 * really have PWC. Only level we have PWC is in L0 and for nested
> > +	 * invalidate at L0 we always do kvm_flush_lpid() which does
> > +	 * radix__flush_all_lpid(). For range invalidate at any level, we
> > +	 * are not removing the higher level page tables and hence there is
> > +	 * no PWC invalidate needed.
> > +	 *
> > +	 * if (type & H_RPTI_TYPE_PWC) {
> > +	 *	ret = do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_PWC);
> > +	 *	if (ret)
> > +	 *		return H_P4;
> > +	 * }
> > +	 */
> > +
> > +	if (start == 0 && end == -1)
> > +		return do_tlb_invalidate_nested_all(vcpu, lpid, RIC_FLUSH_TLB);
> > +
> > +	if (type & H_RPTI_TYPE_TLB) {
> > +		struct mmu_psize_def *def;
> > +		bool flush_lpid;
> > +		unsigned long nr_pages;
> > +
> > +		for (psize = 0; psize < MMU_PAGE_COUNT; psize++) {
> > +			def = &mmu_psize_defs[psize];
> > +			if (!(pg_sizes & def->h_rpt_pgsize))
> > +				continue;
> > +
> > +			nr_pages = (end - start) >> def->shift;
> > +			flush_lpid = nr_pages > tlb_range_flush_page_ceiling;
> > +			if (flush_lpid)
> > +				return do_tlb_invalidate_nested_all(vcpu, lpid,
> > +								RIC_FLUSH_TLB);
> > +
> > +			ret = do_tlb_invalidate_nested_tlb(vcpu, lpid,
> > +							   (1UL << def->shift),
> > +							   ap, start, end);
> 
> I have not seen this reported yet so apologies if it has and there is a
> fix I am missing:
> 
> arch/powerpc/kvm/book3s_hv_nested.c:1334:11: error: variable 'ap' is uninitialized when used here [-Werror,-Wuninitialized]
>                                                            ap, start, end);
>                                                            ^~
> arch/powerpc/kvm/book3s_hv_nested.c:1276:25: note: initialize the variable 'ap' to silence this warning
>         unsigned long psize, ap;
>                                ^
>                                 = 0

Thanks for catching this, this wasn't caught in my environment.

I will repost the series with proper initialization to ap.

Regards,
Bharata.

  reply	other threads:[~2021-06-22  4:47 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-21  8:49 [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM Bharata B Rao
2021-06-21  8:50 ` Bharata B Rao
2021-06-21  8:49 ` [PATCH v8 1/6] KVM: PPC: Book3S HV: Fix comments of H_RPT_INVALIDATE arguments Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:49 ` [PATCH v8 2/6] powerpc/book3s64/radix: Add H_RPT_INVALIDATE pgsize encodings to mmu_psize_def Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:50 ` [PATCH v8 3/6] KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-07-05  4:42   ` David Gibson
2021-07-05  4:42     ` David Gibson
2021-07-06  5:26     ` Bharata B Rao
2021-07-06  5:38       ` Bharata B Rao
2021-07-08  3:58       ` David Gibson
2021-07-08  3:58         ` David Gibson
2021-07-08  4:29         ` Bharata B Rao
2021-07-08  4:41           ` Bharata B Rao
2021-07-12  2:28           ` David Gibson
2021-07-12  2:28             ` David Gibson
2021-06-21  8:50 ` [PATCH v8 4/6] KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21 17:12   ` Nathan Chancellor
2021-06-21 17:12     ` Nathan Chancellor
2021-06-22  4:35     ` Bharata B Rao [this message]
2021-06-22  4:47       ` Bharata B Rao
2021-06-22  7:12       ` Bharata B Rao
2021-06-22  7:24         ` Bharata B Rao
2021-06-23  6:47         ` Michael Ellerman
2021-06-23  6:47           ` Michael Ellerman
2021-06-21  8:50 ` [PATCH v8 5/6] KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21  8:50 ` [PATCH v8 6/6] KVM: PPC: Book3S HV: Use H_RPT_INVALIDATE in nested KVM Bharata B Rao
2021-06-21  8:50   ` Bharata B Rao
2021-06-21 15:07   ` kernel test robot
2021-06-21 15:21     ` Philip Li
2021-06-24 13:59 ` [PATCH v8 0/6] Support for H_RPT_INVALIDATE in PowerPC KVM Michael Ellerman
2021-06-24 13:59   ` Michael Ellerman

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=YNFom3Ojb4TGsKj2@in.ibm.com \
    --to=bharata@linux.ibm.com \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=farosas@linux.ibm.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=nathan@kernel.org \
    --cc=npiggin@gmail.com \
    /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.