[PATCH v2 07/16] KVM: arm64: Populate PAR_EL1 with 52bit addresses
Oliver Upton
oliver.upton at linux.dev
Fri Sep 19 15:00:59 PDT 2025
On Mon, Sep 15, 2025 at 12:44:42PM +0100, Marc Zyngier wrote:
> Expand the output address populated in PAR_EL1 to 52bit addresses.
>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
> arch/arm64/kvm/at.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c
> index 952c02c57d7dd..1c2f7719b6cbb 100644
> --- a/arch/arm64/kvm/at.c
> +++ b/arch/arm64/kvm/at.c
> @@ -844,7 +844,7 @@ static u64 compute_par_s1(struct kvm_vcpu *vcpu, struct s1_walk_info *wi,
> } else if (wr->level == S1_MMU_DISABLED) {
> /* MMU off or HCR_EL2.DC == 1 */
> par = SYS_PAR_EL1_NSE;
> - par |= wr->pa & GENMASK_ULL(47, 12);
> + par |= wr->pa & GENMASK_ULL(52, 12);
That should be bit 51, no?
Maybe just use SYS_PAR_EL1_PA as the mask.
> if (wi->regime == TR_EL10 &&
> (__vcpu_sys_reg(vcpu, HCR_EL2) & HCR_DC)) {
> @@ -877,7 +877,7 @@ static u64 compute_par_s1(struct kvm_vcpu *vcpu, struct s1_walk_info *wi,
> mair = MEMATTR(NC, NC);
>
> par |= FIELD_PREP(SYS_PAR_EL1_ATTR, mair);
> - par |= wr->pa & GENMASK_ULL(47, 12);
> + par |= wr->pa & GENMASK_ULL(52, 12);
Same here.
> sh = compute_s1_sh(wi, wr, mair);
> par |= FIELD_PREP(SYS_PAR_EL1_SH, sh);
> --
> 2.39.2
>
Thanks,
Oliver
More information about the linux-arm-kernel
mailing list