From: Greg Kurz <groug@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: abologna@redhat.com, clg@kaod.org, qemu-ppc@nongnu.org,
qemu-devel@nongnu.org, aik@ozlabs.ru
Subject: Re: [Qemu-devel] [PATCH 4/9] target/ppc: Add kvmppc_hpt_needs_host_contiguous_pages() helper
Date: Mon, 18 Jun 2018 17:32:34 +0200 [thread overview]
Message-ID: <20180618173234.5a307f45@bahia.lan> (raw)
In-Reply-To: <20180618063606.2513-5-david@gibson.dropbear.id.au>
On Mon, 18 Jun 2018 16:36:01 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:
> KVM HV has a restriction that for HPT mode guests, guest pages must be hpa
> contiguous as well as gpa contiguous. We have to account for that in
> various places. We determine whether we're subject to this restriction
> from the SMMU information exposed by KVM.
>
> Planned cleanups to the way we handle this will require knowing whether
> this restriction is in play in wider parts of the code. So, expose a
> helper function which returns it.
>
> This does mean some redundant calls to kvm_get_smmu_info(), but they'll go
> away again with future cleanups.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> target/ppc/kvm.c | 17 +++++++++++++++--
> target/ppc/kvm_ppc.h | 6 ++++++
> 2 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 5c0e313ca6..50b5d01432 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -406,9 +406,22 @@ target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu,
> }
> }
>
> +bool kvmppc_hpt_needs_host_contiguous_pages(void)
> +{
> + PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
> + static struct kvm_ppc_smmu_info smmu_info;
> +
> + if (!kvm_enabled()) {
> + return false;
> + }
> +
> + kvm_get_smmu_info(cpu, &smmu_info);
> + return !!(smmu_info.flags & KVM_PPC_PAGE_SIZES_REAL);
> +}
> +
> static bool kvm_valid_page_size(uint32_t flags, long rampgsize, uint32_t shift)
> {
> - if (!(flags & KVM_PPC_PAGE_SIZES_REAL)) {
> + if (!kvmppc_hpt_needs_host_contiguous_pages()) {
> return true;
> }
>
> @@ -445,7 +458,7 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu)
> /* If we have HV KVM, we need to forbid CI large pages if our
> * host page size is smaller than 64K.
> */
> - if (smmu_info.flags & KVM_PPC_PAGE_SIZES_REAL) {
> + if (kvmppc_hpt_needs_host_contiguous_pages()) {
> if (getpagesize() >= 0x10000) {
> cpu->hash64_opts->flags |= PPC_HASH64_CI_LARGEPAGE;
> } else {
> diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
> index e2840e1d33..a7ddb8a5d6 100644
> --- a/target/ppc/kvm_ppc.h
> +++ b/target/ppc/kvm_ppc.h
> @@ -70,6 +70,7 @@ int kvmppc_resize_hpt_prepare(PowerPCCPU *cpu, target_ulong flags, int shift);
> int kvmppc_resize_hpt_commit(PowerPCCPU *cpu, target_ulong flags, int shift);
> bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu);
>
> +bool kvmppc_hpt_needs_host_contiguous_pages(void);
> bool kvmppc_is_mem_backend_page_size_ok(const char *obj_path);
>
> #else
> @@ -222,6 +223,11 @@ static inline uint64_t kvmppc_rma_size(uint64_t current_size,
> return ram_size;
> }
>
> +static inline bool kvmppc_hpt_needs_host_contiguous_pages(void)
> +{
> + return false;
> +}
> +
> static inline bool kvmppc_is_mem_backend_page_size_ok(const char *obj_path)
> {
> return true;
next prev parent reply other threads:[~2018-06-18 15:33 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-18 6:35 [Qemu-devel] [PATCH 0/9] spapr: Clean up pagesize handling David Gibson
2018-06-18 6:35 ` [Qemu-devel] [PATCH 1/9] target/ppc: Allow cpu compatiblity checks based on type, not instance David Gibson
2018-06-18 13:22 ` Greg Kurz
2018-06-21 5:20 ` Cédric Le Goater
2018-06-18 6:35 ` [Qemu-devel] [PATCH 2/9] spapr: Compute effective capability values earlier David Gibson
2018-06-18 13:37 ` Greg Kurz
2018-06-21 5:32 ` Cédric Le Goater
2018-06-18 6:36 ` [Qemu-devel] [PATCH 3/9] spapr: Add cpu_apply hook to capabilities David Gibson
2018-06-18 15:28 ` Greg Kurz
2018-06-21 5:34 ` Cédric Le Goater
2018-06-18 6:36 ` [Qemu-devel] [PATCH 4/9] target/ppc: Add kvmppc_hpt_needs_host_contiguous_pages() helper David Gibson
2018-06-18 15:32 ` Greg Kurz [this message]
2018-06-21 5:56 ` Cédric Le Goater
2018-06-21 6:34 ` David Gibson
2018-06-18 6:36 ` [Qemu-devel] [PATCH 5/9] spapr: Maximum (HPT) pagesize property David Gibson
2018-06-19 9:23 ` Cédric Le Goater
2018-06-19 11:22 ` David Gibson
2018-06-21 6:22 ` Cédric Le Goater
2018-06-21 11:00 ` David Gibson
2018-06-21 9:19 ` Greg Kurz
2018-06-21 11:01 ` David Gibson
2018-06-18 6:36 ` [Qemu-devel] [PATCH 6/9] spapr: Use maximum page size capability to simplify memory backend checking David Gibson
2018-06-21 6:29 ` Cédric Le Goater
2018-06-21 11:06 ` David Gibson
2018-06-21 10:29 ` Greg Kurz
2018-06-21 11:11 ` David Gibson
2018-06-18 6:36 ` [Qemu-devel] [PATCH 7/9] target/ppc: Add ppc_hash64_filter_pagesizes() David Gibson
2018-06-21 6:38 ` Cédric Le Goater
2018-06-21 11:48 ` Greg Kurz
2018-06-18 6:36 ` [Qemu-devel] [PATCH 8/9] spapr: Limit available pagesizes to provide a consistent guest environment David Gibson
2018-06-21 7:01 ` Cédric Le Goater
2018-06-21 11:52 ` David Gibson
2018-06-21 12:50 ` Cédric Le Goater
2018-06-21 13:58 ` David Gibson
2018-06-21 12:24 ` Greg Kurz
2018-06-21 14:01 ` David Gibson
2018-06-21 14:18 ` Greg Kurz
2018-06-18 6:36 ` [Qemu-devel] [PATCH 9/9] spapr: Don't rewrite mmu capabilities in KVM mode David Gibson
2018-06-21 7:53 ` Cédric Le Goater
2018-06-21 12:01 ` David Gibson
2018-06-21 12:51 ` Cédric Le Goater
2018-06-21 1:08 ` [Qemu-devel] [PATCH 0/9] spapr: Clean up pagesize handling David Gibson
2018-06-21 6:52 ` no-reply
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=20180618173234.5a307f45@bahia.lan \
--to=groug@kaod.org \
--cc=abologna@redhat.com \
--cc=aik@ozlabs.ru \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--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 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.