From: Julien Grall <julien.grall@arm.com> To: Suzuki K Poulose <suzuki.poulose@arm.com>, linux-arm-kernel@lists.infradead.org Cc: ard.biesheuvel@linaro.org, kvm@vger.kernel.org, marc.zyngier@arm.com, catalin.marinas@arm.com, punit.agrawal@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, kristina.martsenko@arm.com, pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu Subject: Re: [PATCH v2 05/17] arm64: Helper for parange to PASize Date: Thu, 26 Apr 2018 11:58:19 +0100 [thread overview] Message-ID: <2910d406-315f-6f0f-7456-df9d80a08087@arm.com> (raw) In-Reply-To: <1522156531-28348-6-git-send-email-suzuki.poulose@arm.com> Hi Suzuki, On 27/03/18 14:15, Suzuki K Poulose wrote: > Add a helper to convert ID_AA64MMFR0_EL1:PARange to they physical > size shift. Limit the size to the maximum supported by the kernel. > We are about to move the user of this code and this helps to > keep the changes cleaner. It is probably worth to mention that you are also adding 52-bit support in the patch. Cheers, > > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Marc Zyngier <marc.zyngier@arm.com> > Cc: Christoffer Dall <cdall@kernel.org> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > arch/arm64/include/asm/cpufeature.h | 16 ++++++++++++++++ > arch/arm64/kvm/hyp/s2-setup.c | 28 +++++----------------------- > 2 files changed, 21 insertions(+), 23 deletions(-) > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > index fbf0aab..1f2a5dd 100644 > --- a/arch/arm64/include/asm/cpufeature.h > +++ b/arch/arm64/include/asm/cpufeature.h > @@ -311,6 +311,22 @@ static inline u64 read_zcr_features(void) > return zcr; > } > > +static inline u32 id_aa64mmfr0_parange_to_phys_shift(int parange) > +{ > + switch (parange) { > + case 0: return 32; > + case 1: return 36; > + case 2: return 40; > + case 3: return 42; > + case 4: return 44; > + /* Report 48 bit if the kernel doesn't support 52bit */ > + default: > + case 5: return 48; > +#ifdef CONFIG_ARM64_PA_BITS_52 > + case 6: return 52; > +#endif > + } > +} > #endif /* __ASSEMBLY__ */ > > #endif > diff --git a/arch/arm64/kvm/hyp/s2-setup.c b/arch/arm64/kvm/hyp/s2-setup.c > index 603e1ee..b1129c8 100644 > --- a/arch/arm64/kvm/hyp/s2-setup.c > +++ b/arch/arm64/kvm/hyp/s2-setup.c > @@ -19,11 +19,13 @@ > #include <asm/kvm_arm.h> > #include <asm/kvm_asm.h> > #include <asm/kvm_hyp.h> > +#include <asm/cpufeature.h> > > u32 __hyp_text __init_stage2_translation(void) > { > u64 val = VTCR_EL2_FLAGS; > u64 parange; > + u32 phys_shift; > u64 tmp; > > /* > @@ -37,27 +39,7 @@ u32 __hyp_text __init_stage2_translation(void) > val |= parange << 16; > > /* Compute the actual PARange... */ > - switch (parange) { > - case 0: > - parange = 32; > - break; > - case 1: > - parange = 36; > - break; > - case 2: > - parange = 40; > - break; > - case 3: > - parange = 42; > - break; > - case 4: > - parange = 44; > - break; > - case 5: > - default: > - parange = 48; > - break; > - } > + phys_shift = id_aa64mmfr0_parange_to_phys_shift(parange); > > /* > * ... and clamp it to 40 bits, unless we have some braindead > @@ -65,7 +47,7 @@ u32 __hyp_text __init_stage2_translation(void) > * return that value for the rest of the kernel to decide what > * to do. > */ > - val |= 64 - (parange > 40 ? 40 : parange); > + val |= 64 - (phys_shift > 40 ? 40 : phys_shift); > > /* > * Check the availability of Hardware Access Flag / Dirty Bit > @@ -86,5 +68,5 @@ u32 __hyp_text __init_stage2_translation(void) > > write_sysreg(val, vtcr_el2); > > - return parange; > + return phys_shift; > } > -- Julien Grall
WARNING: multiple messages have this Message-ID (diff)
From: julien.grall@arm.com (Julien Grall) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 05/17] arm64: Helper for parange to PASize Date: Thu, 26 Apr 2018 11:58:19 +0100 [thread overview] Message-ID: <2910d406-315f-6f0f-7456-df9d80a08087@arm.com> (raw) In-Reply-To: <1522156531-28348-6-git-send-email-suzuki.poulose@arm.com> Hi Suzuki, On 27/03/18 14:15, Suzuki K Poulose wrote: > Add a helper to convert ID_AA64MMFR0_EL1:PARange to they physical > size shift. Limit the size to the maximum supported by the kernel. > We are about to move the user of this code and this helps to > keep the changes cleaner. It is probably worth to mention that you are also adding 52-bit support in the patch. Cheers, > > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Marc Zyngier <marc.zyngier@arm.com> > Cc: Christoffer Dall <cdall@kernel.org> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > arch/arm64/include/asm/cpufeature.h | 16 ++++++++++++++++ > arch/arm64/kvm/hyp/s2-setup.c | 28 +++++----------------------- > 2 files changed, 21 insertions(+), 23 deletions(-) > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > index fbf0aab..1f2a5dd 100644 > --- a/arch/arm64/include/asm/cpufeature.h > +++ b/arch/arm64/include/asm/cpufeature.h > @@ -311,6 +311,22 @@ static inline u64 read_zcr_features(void) > return zcr; > } > > +static inline u32 id_aa64mmfr0_parange_to_phys_shift(int parange) > +{ > + switch (parange) { > + case 0: return 32; > + case 1: return 36; > + case 2: return 40; > + case 3: return 42; > + case 4: return 44; > + /* Report 48 bit if the kernel doesn't support 52bit */ > + default: > + case 5: return 48; > +#ifdef CONFIG_ARM64_PA_BITS_52 > + case 6: return 52; > +#endif > + } > +} > #endif /* __ASSEMBLY__ */ > > #endif > diff --git a/arch/arm64/kvm/hyp/s2-setup.c b/arch/arm64/kvm/hyp/s2-setup.c > index 603e1ee..b1129c8 100644 > --- a/arch/arm64/kvm/hyp/s2-setup.c > +++ b/arch/arm64/kvm/hyp/s2-setup.c > @@ -19,11 +19,13 @@ > #include <asm/kvm_arm.h> > #include <asm/kvm_asm.h> > #include <asm/kvm_hyp.h> > +#include <asm/cpufeature.h> > > u32 __hyp_text __init_stage2_translation(void) > { > u64 val = VTCR_EL2_FLAGS; > u64 parange; > + u32 phys_shift; > u64 tmp; > > /* > @@ -37,27 +39,7 @@ u32 __hyp_text __init_stage2_translation(void) > val |= parange << 16; > > /* Compute the actual PARange... */ > - switch (parange) { > - case 0: > - parange = 32; > - break; > - case 1: > - parange = 36; > - break; > - case 2: > - parange = 40; > - break; > - case 3: > - parange = 42; > - break; > - case 4: > - parange = 44; > - break; > - case 5: > - default: > - parange = 48; > - break; > - } > + phys_shift = id_aa64mmfr0_parange_to_phys_shift(parange); > > /* > * ... and clamp it to 40 bits, unless we have some braindead > @@ -65,7 +47,7 @@ u32 __hyp_text __init_stage2_translation(void) > * return that value for the rest of the kernel to decide what > * to do. > */ > - val |= 64 - (parange > 40 ? 40 : parange); > + val |= 64 - (phys_shift > 40 ? 40 : phys_shift); > > /* > * Check the availability of Hardware Access Flag / Dirty Bit > @@ -86,5 +68,5 @@ u32 __hyp_text __init_stage2_translation(void) > > write_sysreg(val, vtcr_el2); > > - return parange; > + return phys_shift; > } > -- Julien Grall
next prev parent reply other threads:[~2018-04-26 10:58 UTC|newest] Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-27 13:15 [PATCH v2 00/17] kvm: arm64: Dynamic & 52bit IPA support Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 01/17] virtio: mmio-v1: Validate queue PFN Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 14:07 ` Michael S. Tsirkin 2018-03-27 14:07 ` Michael S. Tsirkin 2018-03-27 13:15 ` [PATCH v2 02/17] virtio: pci-legacy: Validate queue pfn Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 14:11 ` Michael S. Tsirkin 2018-03-27 14:11 ` Michael S. Tsirkin 2018-07-13 0:36 ` Michael S. Tsirkin 2018-07-13 0:36 ` Michael S. Tsirkin 2018-07-13 8:54 ` Suzuki K Poulose 2018-07-13 8:54 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 03/17] arm64: Make page table helpers reusable Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-26 10:54 ` Julien Grall 2018-04-26 10:54 ` Julien Grall 2018-03-27 13:15 ` [PATCH v2 04/17] arm64: Refactor pud_huge for reusability Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-26 10:55 ` Julien Grall 2018-04-26 10:55 ` Julien Grall 2018-03-27 13:15 ` [PATCH v2 05/17] arm64: Helper for parange to PASize Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-26 10:58 ` Julien Grall [this message] 2018-04-26 10:58 ` Julien Grall 2018-04-27 15:18 ` Suzuki K Poulose 2018-04-27 15:18 ` Suzuki K Poulose 2018-04-27 15:18 ` Julien Grall 2018-04-27 15:18 ` Julien Grall 2018-05-03 14:39 ` James Morse 2018-05-03 14:39 ` James Morse 2018-05-08 13:47 ` Suzuki K Poulose 2018-05-08 13:47 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 06/17] kvm: arm/arm64: Fix stage2_flush_memslot for 4 level page table Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 07/17] kvm: arm/arm64: Remove spurious WARN_ON Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 08/17] kvm: arm/arm64: Prepare for VM specific stage2 translations Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-26 13:35 ` Julien Grall 2018-04-26 13:35 ` Julien Grall 2018-04-27 15:22 ` Suzuki K Poulose 2018-04-27 15:22 ` Suzuki K Poulose 2018-04-27 15:58 ` Suzuki K Poulose 2018-04-27 15:58 ` Suzuki K Poulose 2018-04-27 16:04 ` Julien Grall 2018-04-27 16:04 ` Julien Grall 2018-03-27 13:15 ` [PATCH v2 09/17] kvm: arm64: Make stage2 page table layout dynamic Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-25 16:35 ` Julien Grall 2018-04-25 16:35 ` Julien Grall 2018-04-25 16:37 ` Suzuki K Poulose 2018-04-25 16:37 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 10/17] kvm: arm64: Dynamic configuration of VTCR and VTTBR mask Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-30 11:14 ` Julien Grall 2018-04-30 11:14 ` Julien Grall 2018-03-27 13:15 ` [PATCH v2 11/17] kvm: arm64: Configure VTCR per VM Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-03 14:58 ` James Morse 2018-04-03 14:58 ` James Morse 2018-04-03 15:44 ` Suzuki K Poulose 2018-04-03 15:44 ` Suzuki K Poulose 2018-05-03 14:39 ` James Morse 2018-05-03 14:39 ` James Morse 2018-05-08 11:16 ` Suzuki K Poulose 2018-05-08 11:16 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 12/17] kvm: arm/arm64: Expose supported physical address limit for VM Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-13 13:21 ` Peter Maydell 2018-04-13 13:21 ` Peter Maydell 2018-04-16 10:23 ` Suzuki K Poulose 2018-04-16 10:23 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 13/17] kvm: arm/arm64: Allow tuning the physical address size " Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-25 16:10 ` Julien Grall 2018-04-25 16:10 ` Julien Grall 2018-04-25 16:22 ` Suzuki K Poulose 2018-04-25 16:22 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 14/17] kvm: arm64: Switch to per VM IPA limit Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-13 16:27 ` Punit Agrawal 2018-04-13 16:27 ` Punit Agrawal 2018-04-16 10:25 ` Suzuki K Poulose 2018-04-16 10:25 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 15/17] vgic: Add support for 52bit guest physical address Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 16/17] kvm: arm64: Add support for handling 52bit IPA Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [PATCH v2 17/17] kvm: arm64: Allow IPA size supported by the system Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [kvmtool PATCH 18/17] kvmtool: Allow backends to run checks on the KVM device fd Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [kvmtool PATCH 19/17] kvmtool: arm64: Add support for guest physical address size Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-03-27 13:15 ` [kvmtool PATCH 20/17] kvmtool: arm64: Switch memory layout Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-03 12:34 ` Jean-Philippe Brucker 2018-04-03 12:34 ` Jean-Philippe Brucker 2018-03-27 13:15 ` [kvmtool PATCH 21/17] kvmtool: arm: Add support for creating VM with PA size Suzuki K Poulose 2018-03-27 13:15 ` Suzuki K Poulose 2018-04-26 14:08 ` Julien Grall 2018-04-26 14:08 ` Julien Grall 2018-04-30 14:17 ` Julien Grall 2018-04-30 14:17 ` Julien Grall 2018-04-30 14:18 ` Suzuki K Poulose 2018-04-30 14:18 ` Suzuki K Poulose
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=2910d406-315f-6f0f-7456-df9d80a08087@arm.com \ --to=julien.grall@arm.com \ --cc=ard.biesheuvel@linaro.org \ --cc=catalin.marinas@arm.com \ --cc=kristina.martsenko@arm.com \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marc.zyngier@arm.com \ --cc=pbonzini@redhat.com \ --cc=punit.agrawal@arm.com \ --cc=suzuki.poulose@arm.com \ --cc=will.deacon@arm.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: linkBe 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.