arm64: enable POE and PIE to coexist
authorJoey Gouly <joey.gouly@arm.com>
Thu, 22 Aug 2024 15:11:04 +0000 (16:11 +0100)
committerWill Deacon <will@kernel.org>
Wed, 4 Sep 2024 11:54:05 +0000 (12:54 +0100)
commitd0d6e7e0812b24fc3220745d946ddb06a7a911dd
treea159c1284df3f8b064f7bedbe2f4ab447d5d9d3e
parent17519819926211e6b2834e00e4554bec0daf22ac
arm64: enable POE and PIE to coexist

Permission Indirection Extension and Permission Overlay Extension can be
enabled independently.

When PIE is disabled and POE is enabled, the permissions set by POR_EL0 will be
applied on top of the permissions set in the PTE.

When both PIE and POE are enabled, the permissions set by POR_EL0 will be
applied on top of the permissions set by the PIRE0_EL1 register.
However PIRE0_EL1 has encodings that specifically enable and disable the
overlay from applying.

For example:
0001 Read, Overlay applied.
1000 Read, Overlay not applied.

Switch to using the 'Overlay applied' encodings in PIRE0_EL1, so that PIE and
POE can coexist.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20240822151113.1479789-22-joey.gouly@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/pgtable-prot.h