Re: [PATCH V2] arm64/mm: Fix __enable_mmu() for new TGRAN range values

From: Zenghui Yu
Date: Thu Oct 27 2022 - 22:19:04 EST


On 2022/8/26 20:00, Anders Roxell wrote:
On 2021-03-10 11:23, Anshuman Khandual wrote:
From: James Morse <james.morse@xxxxxxx>

As per ARM ARM DDI 0487G.a, when FEAT_LPA2 is implemented, ID_AA64MMFR0_EL1
might contain a range of values to describe supported translation granules
(4K and 16K pages sizes in particular) instead of just enabled or disabled
values. This changes __enable_mmu() function to handle complete acceptable
range of values (depending on whether the field is signed or unsigned) now
represented with ID_AA64MMFR0_TGRAN_SUPPORTED_[MIN..MAX] pair. While here,
also fix similar situations in EFI stub and KVM as well.

Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
Cc: Will Deacon <will@xxxxxxxxxx>
Cc: Marc Zyngier <maz@xxxxxxxxxx>
Cc: James Morse <james.morse@xxxxxxx>
Cc: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
Cc: Ard Biesheuvel <ardb@xxxxxxxxxx>
Cc: Mark Rutland <mark.rutland@xxxxxxx>
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: kvmarm@xxxxxxxxxxxxxxxxxxxxx
Cc: linux-efi@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Acked-by: Marc Zyngier <maz@xxxxxxxxxx>
Signed-off-by: James Morse <james.morse@xxxxxxx>
Signed-off-by: Anshuman Khandual <anshuman.khandual@xxxxxxx>

Hi,

When building an arm64 defconfig kernel from stable/linux-5.10.y and
booting that in QEMU (version: 1:7.0+dfsg-2~bpo11+2) with '-cpu max' the
kernel doesn't boot. I don't get any output. The kernel boots fine if I
change to '-cpu cortex-a72'.

If I cherry-pick this patch to stable/linux-5.10.y I'm able too boot the
kernel with '-cpu max'.

You can workaround the kernel boot failure by specifying
'-cpu max,lpa2=off' [*] in the QEMU command line.

However, I'm not comfortable to backport this patch to older kernels
since there are a lot of conflicts.
Can someone help out to do the packport?

Upstream commit 26f55386f964 ("arm64/mm: Fix __enable_mmu() for new
TGRAN range values") can still be applied cleanly on top of
linux-5.10.y. I can send it to <stable@xxxxxxxxxxxxxxx> if maintainers
are okay with the stable-5.10 backport.

[*] https://gitlab.com/qemu-project/qemu/-/commit/69b2265d5fe8

Zenghui