From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: David Gibson <david@gibson.dropbear.id.au>, groug@kaod.org, clg@kaod.org
Cc: lvivier@redhat.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [for-5.0 1/4] spapr,ppc: Simplify signature of kvmppc_rma_size()
Date: Tue, 3 Dec 2019 14:32:59 +1100 [thread overview]
Message-ID: <f70c476b-4329-c62f-38ed-0c57137fc93b@ozlabs.ru> (raw)
In-Reply-To: <20191129013504.145455-2-david@gibson.dropbear.id.au>
On 29/11/2019 12:35, David Gibson wrote:
> This function calculates the maximum size of the RMA as implied by the
> host's page size of structure of the VRMA (there are a number of other
> constraints on the RMA size which will supersede this one in many
> circumstances).
>
> The current interface takes the current RMA size estimate, and clamps it
> to the VRMA derived size. The only current caller passes in an arguably
> wrong value (it will match the current RMA estimate in some but not all
> cases).
>
> We want to fix that, but for now just keep concerns separated by having the
> KVM helper function just return the VRMA derived limit, and let the caller
> combine it with other constraints. We call the new function
> kvmppc_vrma_limit() to more clearly indicate its limited responsibility.
>
> The helper should only ever be called in the KVM enabled case, so replace
> its !CONFIG_KVM stub with an assert() rather than a dummy value.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Besides not compiling, otherwise looks good.
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> hw/ppc/spapr.c | 5 +++--
> target/ppc/kvm.c | 5 ++---
> target/ppc/kvm_ppc.h | 7 +++----
> 3 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index d9c9a2bcee..069bd04a8d 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1635,8 +1635,9 @@ void spapr_setup_hpt_and_vrma(SpaprMachineState *spapr)
> spapr_reallocate_hpt(spapr, hpt_shift, &error_fatal);
>
> if (spapr->vrma_adjust) {
> - spapr->rma_size = kvmppc_rma_size(spapr_node0_size(MACHINE(spapr)),
> - spapr->htab_shift);
> + hwaddr vrma_limit = kvmppc_vrma_limit(spapr->htab_shift);
> +
> + spapr->rma_size = MIN(spapr_node0_size(MACHINE(spapr)), vrma_limit);
> }
> }
>
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index c77f9848ec..09b3bd6443 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2101,7 +2101,7 @@ void kvmppc_hint_smt_possible(Error **errp)
>
>
> #ifdef TARGET_PPC64
> -uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift)
> +uint64_t kvmppc_vrma_limit(unsigned int hash_shift)
> {
> struct kvm_ppc_smmu_info info;
> long rampagesize, best_page_shift;
> @@ -2128,8 +2128,7 @@ uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift)
> }
> }
>
> - return MIN(current_size,
> - 1ULL << (best_page_shift + hash_shift - 7));
> + return 1ULL << (best_page_shift + hash_shift - 7));
> }
> #endif
>
> diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
> index 98bd7d5da6..4f0eec4c1b 100644
> --- a/target/ppc/kvm_ppc.h
> +++ b/target/ppc/kvm_ppc.h
> @@ -45,7 +45,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,
> int *pfd, bool need_vfio);
> int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size);
> int kvmppc_reset_htab(int shift_hint);
> -uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift);
> +uint64_t kvmppc_vrma_limit(unsigned int hash_shift);
> bool kvmppc_has_cap_spapr_vfio(void);
> #endif /* !CONFIG_USER_ONLY */
> bool kvmppc_has_cap_epr(void);
> @@ -241,10 +241,9 @@ static inline int kvmppc_reset_htab(int shift_hint)
> return 0;
> }
>
> -static inline uint64_t kvmppc_rma_size(uint64_t current_size,
> - unsigned int hash_shift)
> +static inline uint64_t kvmppc_vrma_limit(unsigned int hash_shift)
> {
> - return ram_size;
> + g_assert_not_reached();
> }
>
> static inline bool kvmppc_hpt_needs_host_contiguous_pages(void)
>
--
Alexey
next prev parent reply other threads:[~2019-12-03 3:33 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-29 1:35 [for-5.0 0/4] Fixes for RMA size calculation David Gibson
2019-11-29 1:35 ` [for-5.0 1/4] spapr,ppc: Simplify signature of kvmppc_rma_size() David Gibson
2019-12-02 7:45 ` Cédric Le Goater
2019-12-02 8:55 ` Greg Kurz
2019-12-02 18:18 ` Cédric Le Goater
2019-12-10 3:58 ` David Gibson
2019-12-03 3:32 ` Alexey Kardashevskiy [this message]
2019-11-29 1:35 ` [for-5.0 2/4] spapr: Don't attempt to clamp RMA to VRMA constraint David Gibson
2019-12-03 3:33 ` Alexey Kardashevskiy
2019-11-29 1:35 ` [for-5.0 3/4] spapr: Clean up RMA size calculation David Gibson
2019-12-03 3:44 ` Alexey Kardashevskiy
2019-12-03 5:06 ` Alexey Kardashevskiy
2019-12-10 5:44 ` David Gibson
2019-12-10 5:29 ` David Gibson
2019-11-29 1:35 ` [for-5.0 4/4] spapr: Correct clamping of RMA to Node 0 size David Gibson
2019-12-03 4:18 ` Alexey Kardashevskiy
2019-12-10 5:21 ` David Gibson
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=f70c476b-4329-c62f-38ed-0c57137fc93b@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=groug@kaod.org \
--cc=lvivier@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).