Thread (5 messages) 5 messages, 2 authors, 2025-08-29

Re: [PATCH V2 2/2] arm64/sysreg: Replace TCR_EL1 field macros

From: Marc Zyngier <maz@kernel.org>
Date: 2025-08-29 08:13:24
Also in: kvmarm, lkml

On Fri, 29 Aug 2025 07:02:15 +0100,
Anshuman Khandual [off-list ref] wrote:
This just replaces all used TCR_EL1 field macros with tools sysreg variant
based fields and subsequently drops them from the header (pgtable-hwdef.h)
and moves them into KVM header (asm/kvm_arm.h) for continued usage in KVM.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: kvmarm@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <redacted>
---
Changes in V2:

- Dropped all TCR_EL1 replacements from KVM code
- Moved existing TCR_XXX macros from (asm/pgtable-hwdef.h) into KVM header
  (asm/kvm_arm.h) for their continued usage

 arch/arm64/include/asm/assembler.h     |   6 +-
 arch/arm64/include/asm/cputype.h       |   2 +-
 arch/arm64/include/asm/kvm_arm.h       |  92 +++++++++++++++++++++++
 arch/arm64/include/asm/mmu_context.h   |   4 +-
 arch/arm64/include/asm/pgtable-hwdef.h | 100 +------------------------
 arch/arm64/include/asm/pgtable-prot.h  |   2 +-
 arch/arm64/kernel/cpufeature.c         |   4 +-
 arch/arm64/kernel/pi/map_kernel.c      |   8 +-
 arch/arm64/kernel/vmcore_info.c        |   2 +-
 arch/arm64/mm/proc.S                   |  36 +++++----
 tools/arch/arm64/include/asm/cputype.h |   2 +-
 11 files changed, 134 insertions(+), 124 deletions(-)
[...]
quoted hunk ↗ jump to hunk
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 1da290aeedce..ad3c305c6374 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -107,6 +107,98 @@
 
 #define MPAMHCR_HOST_FLAGS	0
 
+#define TCR_T0SZ_OFFSET		0
+#define TCR_T1SZ_OFFSET		16
These are unused by KVM.
+#define TCR_TxSZ(x)		(TCR_T0SZ(x) | TCR_T1SZ(x))
+#define TCR_TxSZ_WIDTH		6
+#define TCR_T0SZ_MASK		(((UL(1) << TCR_TxSZ_WIDTH) - 1) << TCR_T0SZ_OFFSET)
+#define TCR_T1SZ_MASK		(((UL(1) << TCR_TxSZ_WIDTH) - 1) << TCR_T1SZ_OFFSET)
[eyeroll]

Why do you need to repeat all of this, while you just introduced
new definitions? Surely you can write a script that express one in
term of the other, and add that to KVM, instead of just blindly moving
stuff around?

	M.

-- 
Without deviation from the norm, progress is not possible.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help