From: David Gibson <david@gibson.dropbear.id.au>
To: Greg Kurz <groug@kaod.org>
Cc: qemu-ppc@nongnu.org, agraf@suse.de, qemu-devel@nongnu.org,
benh@kernel.crashing.org, bharata@linux.vnet.ibm.com,
clg@kaod.org
Subject: Re: [Qemu-devel] [RFC for-2.13 05/12] target/ppc: Remove fallback 64k pagesize information
Date: Wed, 28 Mar 2018 11:32:04 +1100 [thread overview]
Message-ID: <20180328003204.GD3510@umbus.fritz.box> (raw)
In-Reply-To: <20180327155455.674960b4@bahia.lab.toulouse-stg.fr.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 6751 bytes --]
On Tue, Mar 27, 2018 at 03:54:55PM +0200, Greg Kurz wrote:
> On Tue, 27 Mar 2018 15:37:34 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > CPU definitions for cpus with the 64-bit hash MMU can include a table of
> > available pagesizes. If this isn't supplied ppc_cpu_instance_init() will
> > fill it in a fallback table based on the POWERPC_MMU_64K bit in mmu_model.
> >
> > However, it turns out all the cpus which support 64K pages already include
> > an explicit table of page sizes, so there's no point to the fallback table
> > including 64k pages.
> >
>
> I was thinking that 64k pages came with POWER5+. At least, this is mentioned
> in several places:
>
> https://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.performance/supported_page_sizes_processor_type.htm
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a4a0f2524acc2c602cadd8e743be19d86f3a746b
Ok, I didn't know that. However, that was already wrong - we weren't
setting the MMU_64K bit for POWER5+.
> And we do support POWER5+ with TCG and KVM PR.
Well, theoretically. I doubt it's been tested in years, and I
strongly suspect it won't actually work.
> Shouldn't we include an explicit
> table of pages sizes there as well ?
Yeah, but I think it makes more sense to fix that later. Or, more
likely, not, since no-one actually cares about POWER5.
>
> > That removes the only place which tests POWERPC_MMU_64K, so we can remove
> > it. Which in turn allows some logic to be removed from
> > kvm_fixup_page_sizes().
> >
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> > ---
> > target/ppc/cpu-qom.h | 4 ----
> > target/ppc/kvm.c | 7 -------
> > target/ppc/translate_init.c | 20 ++------------------
> > 3 files changed, 2 insertions(+), 29 deletions(-)
> >
> > diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> > index deaa46a14b..9bbb05cf62 100644
> > --- a/target/ppc/cpu-qom.h
> > +++ b/target/ppc/cpu-qom.h
> > @@ -70,7 +70,6 @@ enum powerpc_mmu_t {
> > #define POWERPC_MMU_64 0x00010000
> > #define POWERPC_MMU_1TSEG 0x00020000
> > #define POWERPC_MMU_AMR 0x00040000
> > -#define POWERPC_MMU_64K 0x00080000
> > #define POWERPC_MMU_V3 0x00100000 /* ISA V3.00 MMU Support */
> > /* 64 bits PowerPC MMU */
> > POWERPC_MMU_64B = POWERPC_MMU_64 | 0x00000001,
> > @@ -78,15 +77,12 @@ enum powerpc_mmu_t {
> > POWERPC_MMU_2_03 = POWERPC_MMU_64 | 0x00000002,
> > /* Architecture 2.06 variant */
> > POWERPC_MMU_2_06 = POWERPC_MMU_64 | POWERPC_MMU_1TSEG
> > - | POWERPC_MMU_64K
> > | POWERPC_MMU_AMR | 0x00000003,
> > /* Architecture 2.07 variant */
> > POWERPC_MMU_2_07 = POWERPC_MMU_64 | POWERPC_MMU_1TSEG
> > - | POWERPC_MMU_64K
> > | POWERPC_MMU_AMR | 0x00000004,
> > /* Architecture 3.00 variant */
> > POWERPC_MMU_3_00 = POWERPC_MMU_64 | POWERPC_MMU_1TSEG
> > - | POWERPC_MMU_64K
> > | POWERPC_MMU_AMR | POWERPC_MMU_V3
> > | 0x00000005,
> > };
> > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> > index 79a436a384..6160356a4a 100644
> > --- a/target/ppc/kvm.c
> > +++ b/target/ppc/kvm.c
> > @@ -425,7 +425,6 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu)
> > static bool has_smmu_info;
> > CPUPPCState *env = &cpu->env;
> > int iq, ik, jq, jk;
> > - bool has_64k_pages = false;
> >
> > /* We only handle page sizes for 64-bit server guests for now */
> > if (!(env->mmu_model & POWERPC_MMU_64)) {
> > @@ -471,9 +470,6 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu)
> > ksps->enc[jk].page_shift)) {
> > continue;
> > }
> > - if (ksps->enc[jk].page_shift == 16) {
> > - has_64k_pages = true;
> > - }
> > qsps->enc[jq].page_shift = ksps->enc[jk].page_shift;
> > qsps->enc[jq].pte_enc = ksps->enc[jk].pte_enc;
> > if (++jq >= PPC_PAGE_SIZES_MAX_SZ) {
> > @@ -488,9 +484,6 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu)
> > if (!(smmu_info.flags & KVM_PPC_1T_SEGMENTS)) {
> > env->mmu_model &= ~POWERPC_MMU_1TSEG;
> > }
> > - if (!has_64k_pages) {
> > - env->mmu_model &= ~POWERPC_MMU_64K;
> > - }
> > }
> >
> > bool kvmppc_is_mem_backend_page_size_ok(const char *obj_path)
> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > index 29bd6f3654..99be6fcd68 100644
> > --- a/target/ppc/translate_init.c
> > +++ b/target/ppc/translate_init.c
> > @@ -10469,7 +10469,7 @@ static void ppc_cpu_instance_init(Object *obj)
> > env->sps = *pcc->sps;
> > } else if (env->mmu_model & POWERPC_MMU_64) {
> > /* Use default sets of page sizes. We don't support MPSS */
> > - static const struct ppc_segment_page_sizes defsps_4k = {
> > + static const struct ppc_segment_page_sizes defsps = {
> > .sps = {
> > { .page_shift = 12, /* 4K */
> > .slb_enc = 0,
> > @@ -10481,23 +10481,7 @@ static void ppc_cpu_instance_init(Object *obj)
> > },
> > },
> > };
> > - static const struct ppc_segment_page_sizes defsps_64k = {
> > - .sps = {
> > - { .page_shift = 12, /* 4K */
> > - .slb_enc = 0,
> > - .enc = { { .page_shift = 12, .pte_enc = 0 } }
> > - },
> > - { .page_shift = 16, /* 64K */
> > - .slb_enc = 0x110,
> > - .enc = { { .page_shift = 16, .pte_enc = 1 } }
> > - },
> > - { .page_shift = 24, /* 16M */
> > - .slb_enc = 0x100,
> > - .enc = { { .page_shift = 24, .pte_enc = 0 } }
> > - },
> > - },
> > - };
> > - env->sps = (env->mmu_model & POWERPC_MMU_64K) ? defsps_64k : defsps_4k;
> > + env->sps = defsps;
> > }
> > #endif /* defined(TARGET_PPC64) */
> > }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2018-03-28 0:39 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-27 4:37 [Qemu-devel] [RFC for-2.13 00/12] target/ppc: Assorted cpu cleanups (esp. hash64 MMU) David Gibson
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 01/12] target/ppc: Standardize instance_init and realize function names David Gibson
2018-03-27 7:12 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 02/12] target/ppc: Simplify cpu valid check in ppc_cpu_realize David Gibson
2018-03-27 6:36 ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2018-03-27 7:13 ` [Qemu-devel] " Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 03/12] target/ppc: Pass cpu instead of env to ppc_create_page_sizes_prop() David Gibson
2018-03-27 7:15 ` Greg Kurz
2018-03-27 8:41 ` Cédric Le Goater
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 04/12] target/ppc: Avoid taking "env" parameter to mmu-hash64 functions David Gibson
2018-03-27 8:17 ` Greg Kurz
2018-03-27 8:45 ` Cédric Le Goater
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 05/12] target/ppc: Remove fallback 64k pagesize information David Gibson
2018-03-27 8:54 ` Cédric Le Goater
2018-03-27 13:54 ` Greg Kurz
2018-03-28 0:32 ` David Gibson [this message]
2018-03-28 8:01 ` Greg Kurz
2018-03-28 8:54 ` David Gibson
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 06/12] target/ppc: Move page size setup to helper function David Gibson
2018-03-27 8:56 ` Cédric Le Goater
2018-03-27 13:58 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 07/12] target/ppc: Split page size information into a separate allocation David Gibson
2018-03-28 7:28 ` Cédric Le Goater
2018-03-29 4:46 ` David Gibson
2018-03-28 8:15 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 08/12] target/ppc: Make hash64_opts field mandatory for 64-bit hash MMUs David Gibson
2018-03-28 7:31 ` Cédric Le Goater
2018-03-28 8:33 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 09/12] target/ppc: Move 1T segment and AMR options to PPCHash64Options David Gibson
2018-03-28 7:40 ` Cédric Le Goater
2018-03-29 4:57 ` David Gibson
2018-03-28 8:48 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 10/12] target/ppc: Fold ci_large_pages flag into PPCHash64Options David Gibson
2018-03-28 7:41 ` Cédric Le Goater
2018-03-28 8:50 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 11/12] target/ppc: Remove unnecessary POWERPC_MMU_V3 flag from mmu_model David Gibson
2018-03-28 7:43 ` Cédric Le Goater
2018-03-28 7:49 ` Cédric Le Goater
2018-03-28 8:47 ` David Gibson
2018-03-28 10:19 ` Cédric Le Goater
2018-03-29 5:02 ` David Gibson
2018-03-28 9:10 ` Greg Kurz
2018-03-27 4:37 ` [Qemu-devel] [RFC for-2.13 12/12] target/ppc: Get rid of POWERPC_MMU_VER() macros David Gibson
2018-03-28 7:50 ` Cédric Le Goater
2018-03-28 9:26 ` Greg Kurz
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=20180328003204.GD3510@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=benh@kernel.crashing.org \
--cc=bharata@linux.vnet.ibm.com \
--cc=clg@kaod.org \
--cc=groug@kaod.org \
--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).