* [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers
@ 2024-10-01 2:43 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 01/47] arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1 Anshuman Khandual
` (47 more replies)
0 siblings, 48 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This series enables fine grained undefined for FEAT_FGT2 managed registers
via adding their respective FGT and CGT trap configuration. But first this
adds many system register definitions in tools/sysreg, which are required
there after.
patches 1-44: define system registers in tools/sysreg format
patch 45: enables FEAT_FGT2 registers access from virtual EL2
patch 46: enables FGT for FEAT_FGT2
patch 47: enables CGT for FEAT_FGT2
Some notes:
As kvm_has_feat() does not support non-ID registers following replacements
have been made for validating presence of correspnding features
- ID_AA64DFR0_EL1.ExtTrcBuff is tested for HDFGRTR2_EL2.nPMSDSFR_EL1
- ID_AA64DFR0_EL1.PMSVer is tested for HDFGRTR2_EL2.nPMSDSFR_EL1
Following FGT enabled registers don't have corresponding CGT requirements
- TRCITECR_EL1
- PMSSCR_EL1
- PMCCNTSVR_EL1
- PMICNTSVR_EL1
- RCWSMASK_EL1
- ERXGSR_EL1
- PFAR_EL1
Changes in V2:
- Added all system register definitions required for FEAT_FGT2 traps
- Added all system register access traps managed with new FEAT_FGT2
i.e HDFGRTR2_EL2, HDFGWTR2_EL2, HFGRTR2_GROUP, HFGWTR2_GROUP and
HFGITR2_GROUP for their VNCR access, FGT and CGT
- Added all FGT for all register accesses managed with FEAT_FGT2
- Added all CGT for all register accesses managed with FEAT_FGT2
Changes in RFC V1:
https://lore.kernel.org/linux-arm-kernel/20240620065807.151540-1-anshuman.khandual@arm.com/
Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: James Morse <james.morse@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: kvmarm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Anshuman Khandual (47):
arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1
arm64/sysreg: Update register fields for ID_AA64DFR0_EL1
arm64/sysreg: Update register fields for ID_AA64PFR0_EL1
arm64/sysreg: Add register fields for ID_AA64DFR2_EL1
arm64/sysreg: Add register fields for HDFGRTR2_EL2
arm64/sysreg: Add register fields for HDFGWTR2_EL2
arm64/sysreg: Add register fields for HFGITR2_EL2
arm64/sysreg: Add register fields for HFGRTR2_EL2
arm64/sysreg: Add register fields for HFGWTR2_EL2
arm64/sysreg: Add register fields for MDSELR_EL1
arm64/sysreg: Add register fields for PMSIDR_EL1
arm64/sysreg: Add register fields for TRBIDR_EL1
arm64/sysreg: Add register fields for TRBMPAM_EL1
arm64/sysreg: Add register fields for PMSDSFR_EL1
arm64/sysreg: Add register fields for SPMDEVAFF_EL1
arm64/sysreg: Add register fields for PFAR_EL1
arm64/sysreg: Add register fields for PMIAR_EL1
arm64/sysreg: Add register fields for PMECR_EL1
arm64/sysreg: Add register fields for PMUACR_EL1
arm64/sysreg: Add register fields for PMCCNTSVR_EL1
arm64/sysreg: Add register fields for SPMSCR_EL1
arm64/sysreg: Add register fields for SPMACCESSR_EL1
arm64/sysreg: Add register fields for PMICNTR_EL0
arm64/sysreg: Add register fields for PMICFILTR_EL0
arm64/sysreg: Add register fields for SPMCR_EL0
arm64/sysreg: Add register fields for SPMOVSCLR_EL0
arm64/sysreg: Add register fields for SPMOVSSET_EL0
arm64/sysreg: Add register fields for SPMINTENCLR_EL1
arm64/sysreg: Add register fields for SPMINTENSET_EL1
arm64/sysreg: Add register fields for SPMCNTENCLR_EL0
arm64/sysreg: Add register fields for SPMCNTENSET_EL0
arm64/sysreg: Add register fields for SPMSELR_EL0
arm64/sysreg: Add register fields for PMICNTSVR_EL1
arm64/sysreg: Add register fields for SPMIIDR_EL1
arm64/sysreg: Add register fields for SPMDEVARCH_EL1
arm64/sysreg: Add register fields for SPMCFGR_EL1
arm64/sysreg: Add register fields for PMSSCR_EL1
arm64/sysreg: Add register fields for PMZR_EL0
arm64/sysreg: Add register fields for SPMCGCR0_EL1
arm64/sysreg: Add register fields for SPMCGCR1_EL1
arm64/sysreg: Add register fields for MDSTEPOP_EL1
arm64/sysreg: Add register fields for ERXGSR_EL1
arm64/sysreg: Add register fields for SPMACCESSR_EL2
arm64/sysreg: Add remaining debug registers affected by HDFGxTR2_EL2
KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2
KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling
KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
arch/arm64/include/asm/kvm_arm.h | 22 +
arch/arm64/include/asm/kvm_host.h | 12 +
arch/arm64/include/asm/sysreg.h | 6 +
arch/arm64/include/asm/vncr_mapping.h | 5 +
arch/arm64/kvm/emulate-nested.c | 444 +++++++++++
arch/arm64/kvm/hyp/include/hyp/switch.h | 26 +
arch/arm64/kvm/nested.c | 52 ++
arch/arm64/kvm/sys_regs.c | 64 ++
arch/arm64/tools/sysreg | 938 +++++++++++++++++++++++-
9 files changed, 1564 insertions(+), 5 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 57+ messages in thread
* [PATCH 01/47] arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 02/47] arm64/sysreg: Update register fields for ID_AA64DFR0_EL1 Anshuman Khandual
` (46 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This updates ID_AA64MMFR0_EL1.FGT and ID_AA64MMFR0_EL1.PARANGE register
fields as per the definitions based on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 8d637ac4b7c6..41b0e54515eb 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -1556,6 +1556,7 @@ EndEnum
UnsignedEnum 59:56 FGT
0b0000 NI
0b0001 IMP
+ 0b0010 FGT2
EndEnum
Res0 55:48
UnsignedEnum 47:44 EXS
@@ -1617,6 +1618,7 @@ Enum 3:0 PARANGE
0b0100 44
0b0101 48
0b0110 52
+ 0b0111 56
EndEnum
EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 02/47] arm64/sysreg: Update register fields for ID_AA64DFR0_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
2024-10-01 2:43 ` [PATCH 01/47] arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 03/47] arm64/sysreg: Update register fields for ID_AA64PFR0_EL1 Anshuman Khandual
` (45 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This updates ID_AA64DFR0_EL1.[SEBEP|PMSS|PMUVer] register fields as per the
definitions based on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 41b0e54515eb..0e90d40af2bd 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -1226,9 +1226,15 @@ UnsignedEnum 35:32 PMSVer
0b0101 V1P4
EndEnum
Field 31:28 CTX_CMPs
-Res0 27:24
+UnsignedEnum 27:24 SEBEP
+ 0b0000 NI
+ 0b0001 IMP
+EndEnum
Field 23:20 WRPs
-Res0 19:16
+UnsignedEnum 19:16 PMSS
+ 0b0000 NI
+ 0b0001 IMP
+EndEnum
Field 15:12 BRPs
UnsignedEnum 11:8 PMUVer
0b0000 NI
@@ -1238,6 +1244,7 @@ UnsignedEnum 11:8 PMUVer
0b0110 V3P5
0b0111 V3P7
0b1000 V3P8
+ 0b1001 V3P9
0b1111 IMP_DEF
EndEnum
UnsignedEnum 7:4 TraceVer
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 03/47] arm64/sysreg: Update register fields for ID_AA64PFR0_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
2024-10-01 2:43 ` [PATCH 01/47] arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 02/47] arm64/sysreg: Update register fields for ID_AA64DFR0_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1 Anshuman Khandual
` (44 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This updates ID_AA64PFR0_EL1.RAS and ID_AA64PFR0_EL1.RME register fields as
per the definitions based on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 0e90d40af2bd..6c0893d0204a 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -873,6 +873,7 @@ EndEnum
UnsignedEnum 55:52 RME
0b0000 NI
0b0001 IMP
+ 0b0010 GPC2
EndEnum
UnsignedEnum 51:48 DIT
0b0000 NI
@@ -899,6 +900,7 @@ UnsignedEnum 31:28 RAS
0b0000 NI
0b0001 IMP
0b0010 V1P1
+ 0b0011 V2
EndEnum
UnsignedEnum 27:24 GIC
0b0000 NI
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (2 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 03/47] arm64/sysreg: Update register fields for ID_AA64PFR0_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-02 15:48 ` Mark Brown
2024-10-01 2:43 ` [PATCH 05/47] arm64/sysreg: Add register fields for HDFGRTR2_EL2 Anshuman Khandual
` (43 subsequent siblings)
47 siblings, 1 reply; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for ID_AA64DFR2_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 6c0893d0204a..dbaa58be2e52 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -1296,6 +1296,19 @@ Field 15:8 BRPs
Field 7:0 SYSPMUID
EndSysreg
+Sysreg ID_AA64DFR2_EL1 3 0 0 5 2
+Res0 63:8
+UnsignedEnum 7:4 BWE
+ 0b0000 NI
+ 0b0001 IMP
+ 0b0010 IMP_WPT
+EndEnum
+UnsignedEnum 3:0 STEP
+ 0b0000 NI
+ 0b0001 IMP
+EndEnum
+EndSysreg
+
Sysreg ID_AA64AFR0_EL1 3 0 0 5 4
Res0 63:32
Field 31:28 IMPDEF7
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 05/47] arm64/sysreg: Add register fields for HDFGRTR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (3 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2 Anshuman Khandual
` (42 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for HDFGRTR2_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index dbaa58be2e52..87f04c56dea2 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2487,6 +2487,34 @@ Field 1 ICIALLU
Field 0 ICIALLUIS
EndSysreg
+Sysreg HDFGRTR2_EL2 3 4 3 1 0
+Res0 63:24
+Field 23 nMDSTEPOP_EL1
+Field 22 nTRBMPAM_EL1
+Res0 21
+Field 20 nTRCITECR_EL1
+Field 19 nPMSDSFR_EL1
+Field 18 nSPMDEVAFF_EL1
+Field 17 nSPMID
+Field 16 nSPMSCR_EL1
+Field 15 nSPMACCESSR_EL1
+Field 14 nSPMCR_EL0
+Field 13 nSPMOVS
+Field 12 nSPMINTEN
+Field 11 nSPMCNTEN
+Field 10 nSPMSELR_EL0
+Field 9 nSPMEVTYPERn_EL0
+Field 8 nSPMEVCNTRn_EL0
+Field 7 nPMSSCR_EL1
+Field 6 nPMSSDATA
+Field 5 nMDSELR_EL1
+Field 4 nPMUACR_EL1
+Field 3 nPMICFILTR_EL0
+Field 2 nPMICNTR_EL0
+Field 1 nPMIAR_EL1
+Field 0 nPMECR_EL1
+EndSysreg
+
Sysreg HDFGRTR_EL2 3 4 3 1 4
Field 63 PMBIDR_EL1
Field 62 nPMSNEVFR_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (4 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 05/47] arm64/sysreg: Add register fields for HDFGRTR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-02 16:09 ` Mark Brown
2024-10-01 2:43 ` [PATCH 07/47] arm64/sysreg: Add register fields for HFGITR2_EL2 Anshuman Khandual
` (41 subsequent siblings)
47 siblings, 1 reply; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for HDFGWTR2_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 87f04c56dea2..bd1dfcbcff79 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2515,6 +2515,33 @@ Field 1 nPMIAR_EL1
Field 0 nPMECR_EL1
EndSysreg
+Sysreg HDFGWTR2_EL2 3 4 3 1 1
+Res0 63:24
+Field 23 nMDSTEPOP_EL1
+Field 22 nTRBMPAM_EL1
+Field 21 nPMZR_EL0
+Field 20 nTRCITECR_EL1
+Field 19 nPMSDSFR_EL1
+Res0 18:17
+Field 16 nSPMSCR_EL1
+Field 15 nSPMACCESSR_EL1
+Field 14 nSPMCR_EL0
+Field 13 nSPMOVS
+Field 12 nSPMINTEN
+Field 11 nSPMCNTEN
+Field 10 nSPMSELR_EL0
+Field 9 nSPMEVTYPERn_EL0
+Field 8 nSPMEVCNTRn_EL0
+Field 7 nPMSSCR_EL1
+Res0 6
+Field 5 nMDSELR_EL1
+Field 4 nPMUACR_EL1
+Field 3 nPMICFILTR_EL0
+Field 2 nPMICNTR_EL0
+Field 1 nPMIAR_EL1
+Field 0 nPMECR_EL1
+EndSysreg
+
Sysreg HDFGRTR_EL2 3 4 3 1 4
Field 63 PMBIDR_EL1
Field 62 nPMSNEVFR_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 07/47] arm64/sysreg: Add register fields for HFGITR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (5 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 08/47] arm64/sysreg: Add register fields for HFGRTR2_EL2 Anshuman Khandual
` (40 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for HFGITR2_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index bd1dfcbcff79..300c19b09f1b 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2714,6 +2714,10 @@ Field 1 AMEVCNTR00_EL0
Field 0 AMCNTEN0
EndSysreg
+Sysreg HFGITR2_EL2 3 4 3 1 7
+Res0 63:0
+EndSysreg
+
Sysreg ZCR_EL2 3 4 1 2 0
Fields ZCR_ELx
EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 08/47] arm64/sysreg: Add register fields for HFGRTR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (6 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 07/47] arm64/sysreg: Add register fields for HFGITR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 09/47] arm64/sysreg: Add register fields for HFGWTR2_EL2 Anshuman Khandual
` (39 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for HFGRTR2_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 300c19b09f1b..a790e2cc8003 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2542,6 +2542,13 @@ Field 1 nPMIAR_EL1
Field 0 nPMECR_EL1
EndSysreg
+Sysreg HFGRTR2_EL2 3 4 3 1 2
+Res0 63:3
+Field 2 nRCWSMASK_EL1
+Field 1 nERXGSR_EL1
+Field 0 nPFAR_EL1
+EndSysreg
+
Sysreg HDFGRTR_EL2 3 4 3 1 4
Field 63 PMBIDR_EL1
Field 62 nPMSNEVFR_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 09/47] arm64/sysreg: Add register fields for HFGWTR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (7 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 08/47] arm64/sysreg: Add register fields for HFGRTR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 10/47] arm64/sysreg: Add register fields for MDSELR_EL1 Anshuman Khandual
` (38 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for HFGWTR2_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index a790e2cc8003..6a1db83ac44e 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2549,6 +2549,13 @@ Field 1 nERXGSR_EL1
Field 0 nPFAR_EL1
EndSysreg
+Sysreg HFGWTR2_EL2 3 4 3 1 3
+Res0 63:3
+Field 2 nRCWSMASK_EL1
+Res0 1
+Field 0 nPFAR_EL1
+EndSysreg
+
Sysreg HDFGRTR_EL2 3 4 3 1 4
Field 63 PMBIDR_EL1
Field 62 nPMSNEVFR_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 10/47] arm64/sysreg: Add register fields for MDSELR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (8 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 09/47] arm64/sysreg: Add register fields for HFGWTR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 11/47] arm64/sysreg: Add register fields for PMSIDR_EL1 Anshuman Khandual
` (37 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for MDSELR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 6a1db83ac44e..b1ee29783628 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -93,6 +93,17 @@ Res0 63:32
Field 31:0 DTRTX
EndSysreg
+Sysreg MDSELR_EL1 2 0 0 4 2
+Res0 63:6
+Enum 5:4 BANK
+ 0b00 BANK_0
+ 0b01 BANK_1
+ 0b10 BANK_2
+ 0b11 BANK_3
+EndEnum
+Res0 3:0
+EndSysreg
+
Sysreg OSECCR_EL1 2 0 0 6 2
Res0 63:32
Field 31:0 EDECCR
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 11/47] arm64/sysreg: Add register fields for PMSIDR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (9 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 10/47] arm64/sysreg: Add register fields for MDSELR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 12/47] arm64/sysreg: Add register fields for TRBIDR_EL1 Anshuman Khandual
` (36 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMSIDR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index b1ee29783628..eb2935df13f2 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2139,7 +2139,16 @@ Field 15:0 MINLAT
EndSysreg
Sysreg PMSIDR_EL1 3 0 9 9 7
-Res0 63:25
+Res0 63:33
+Field 32 SME
+UnsignedEnum 31:28 ALTCLK
+ 0b0000 NI
+ 0b0001 IMP
+ 0b1111 IMP_DEF
+EndEnum
+Field 27 FPF
+Field 26 EFT
+Field 25 CRR
Field 24 PBT
Field 23:20 FORMAT
Enum 19:16 COUNTSIZE
@@ -2157,7 +2166,10 @@ Enum 11:8 INTERVAL
0b0111 3072
0b1000 4096
EndEnum
-Res0 7
+UnsignedEnum 7 FDS
+ 0b0 NI
+ 0b1 IMP
+EndEnum
Field 6 FnE
Field 5 ERND
Field 4 LDS
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 12/47] arm64/sysreg: Add register fields for TRBIDR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (10 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 11/47] arm64/sysreg: Add register fields for PMSIDR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 13/47] arm64/sysreg: Add register fields for TRBMPAM_EL1 Anshuman Khandual
` (35 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for TRBIDR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index eb2935df13f2..5ea714ec8f0e 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -3148,7 +3148,12 @@ Field 31:0 TRG
EndSysreg
Sysreg TRBIDR_EL1 3 0 9 11 7
-Res0 63:12
+Res0 63:16
+UnsignedEnum 15:12 MPAM
+ 0b0000 NI
+ 0b0001 PMG
+ 0b0010 IMP
+EndEnum
Enum 11:8 EA
0b0000 NON_DESC
0b0001 IGNORE
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 13/47] arm64/sysreg: Add register fields for TRBMPAM_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (11 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 12/47] arm64/sysreg: Add register fields for TRBIDR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 14/47] arm64/sysreg: Add register fields for PMSDSFR_EL1 Anshuman Khandual
` (34 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for TRBMPAM_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 5ea714ec8f0e..8d931142e01a 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -3142,6 +3142,19 @@ EndEnum
Field 7:0 Attr
EndSysreg
+Sysreg TRBMPAM_EL1 3 0 9 11 5
+Res0 63:27
+Field 26 EN
+UnsignedEnum 25:24 MPAM_SP
+ 0b00 SECURE_PARTID
+ 0b01 NON_SECURE_PARTID
+ 0b10 ROOT_PARTID
+ 0b11 REALM_PARTID
+EndEnum
+Field 23:16 PMG
+Field 15:0 PARTID
+EndSysreg
+
Sysreg TRBTRG_EL1 3 0 9 11 6
Res0 63:32
Field 31:0 TRG
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 14/47] arm64/sysreg: Add register fields for PMSDSFR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (12 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 13/47] arm64/sysreg: Add register fields for TRBMPAM_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 15/47] arm64/sysreg: Add register fields for SPMDEVAFF_EL1 Anshuman Khandual
` (33 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMSDSFR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 8d931142e01a..865de0549a07 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2212,6 +2212,10 @@ Field 16 COLL
Field 15:0 MSS
EndSysreg
+Sysreg PMSDSFR_EL1 3 0 9 10 4
+Field 63:0 SM
+EndSysreg
+
Sysreg PMBIDR_EL1 3 0 9 10 7
Res0 63:12
Enum 11:8 EA
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 15/47] arm64/sysreg: Add register fields for SPMDEVAFF_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (13 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 14/47] arm64/sysreg: Add register fields for PMSDSFR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 16/47] arm64/sysreg: Add register fields for PFAR_EL1 Anshuman Khandual
` (32 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMDEVAFF_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 865de0549a07..5d76c0ddcb85 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -114,6 +114,18 @@ Res0 63:1
Field 0 OSLK
EndSysreg
+Sysreg SPMDEVAFF_EL1 2 0 9 13 6
+Res0 63:40
+Field 39:32 Aff3
+Field 31 F0V
+Field 30 U
+Res0 29:25
+Field 24 MT
+Field 23:16 Aff2
+Field 15:8 Aff1
+Field 7:0 Aff0
+EndSysreg
+
Sysreg ID_PFR0_EL1 3 0 0 1 0
Res0 63:32
UnsignedEnum 31:28 RAS
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 16/47] arm64/sysreg: Add register fields for PFAR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (14 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 15/47] arm64/sysreg: Add register fields for SPMDEVAFF_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 17/47] arm64/sysreg: Add register fields for PMIAR_EL1 Anshuman Khandual
` (31 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PFAR_EL1 as per the definitions based on
DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 5d76c0ddcb85..ad0ab412e42f 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -3193,3 +3193,10 @@ Field 5 F
Field 4 P
Field 3:0 Align
EndSysreg
+
+Sysreg PFAR_EL1 3 0 6 0 5
+Field 63 NS
+Field 62 NSE
+Res0 61:56
+Field 55:0 PA
+EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 17/47] arm64/sysreg: Add register fields for PMIAR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (15 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 16/47] arm64/sysreg: Add register fields for PFAR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 18/47] arm64/sysreg: Add register fields for PMECR_EL1 Anshuman Khandual
` (30 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMIAR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index ad0ab412e42f..b237813f6606 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2246,6 +2246,10 @@ Res0 63:5
Field 4:0 SEL
EndSysreg
+Sysreg PMIAR_EL1 3 0 9 14 7
+Field 63:0 ADDRESS
+EndSysreg
+
SysregFields CONTEXTIDR_ELx
Res0 63:32
Field 31:0 PROCID
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 18/47] arm64/sysreg: Add register fields for PMECR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (16 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 17/47] arm64/sysreg: Add register fields for PMIAR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 19/47] arm64/sysreg: Add register fields for PMUACR_EL1 Anshuman Khandual
` (29 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMECR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index b237813f6606..7e16e436eb58 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2246,6 +2246,21 @@ Res0 63:5
Field 4:0 SEL
EndSysreg
+Sysreg PMECR_EL1 3 0 9 14 5
+Res0 63:5
+UnsignedEnum 4:3 SSE
+ 0b00 DISABLED
+ 0b10 ENABLED_PROHIBITED
+ 0b11 ENABLED_ALLOWED
+EndEnum
+Field 2 KPME
+UnsignedEnum 1:0 PMEE
+ 0b00 PMUIRQ_E_PMU_D
+ 0b10 PMUIRQ_D_PMU_D
+ 0b11 PMUIRQ_D_PMU_E
+EndEnum
+EndSysreg
+
Sysreg PMIAR_EL1 3 0 9 14 7
Field 63:0 ADDRESS
EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 19/47] arm64/sysreg: Add register fields for PMUACR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (17 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 18/47] arm64/sysreg: Add register fields for PMECR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 20/47] arm64/sysreg: Add register fields for PMCCNTSVR_EL1 Anshuman Khandual
` (28 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMUACR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 7e16e436eb58..05799570a2d0 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2246,6 +2246,43 @@ Res0 63:5
Field 4:0 SEL
EndSysreg
+Sysreg PMUACR_EL1 3 0 9 14 4
+Res0 63:33
+Field 32 FM
+Field 31 C
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg PMECR_EL1 3 0 9 14 5
Res0 63:5
UnsignedEnum 4:3 SSE
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 20/47] arm64/sysreg: Add register fields for PMCCNTSVR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (18 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 19/47] arm64/sysreg: Add register fields for PMUACR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 21/47] arm64/sysreg: Add register fields for SPMSCR_EL1 Anshuman Khandual
` (27 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMCCNTSVR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 05799570a2d0..55836abbc8cc 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -126,6 +126,10 @@ Field 15:8 Aff1
Field 7:0 Aff0
EndSysreg
+Sysreg PMCCNTSVR_EL1 2 0 14 11 7
+Field 63:0 CCNT
+EndSysreg
+
Sysreg ID_PFR0_EL1 3 0 0 1 0
Res0 63:32
UnsignedEnum 31:28 RAS
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 21/47] arm64/sysreg: Add register fields for SPMSCR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (19 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 20/47] arm64/sysreg: Add register fields for PMCCNTSVR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 22/47] arm64/sysreg: Add register fields for SPMACCESSR_EL1 Anshuman Khandual
` (26 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMSCR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 55836abbc8cc..44fabd1f3aef 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -130,6 +130,15 @@ Sysreg PMCCNTSVR_EL1 2 0 14 11 7
Field 63:0 CCNT
EndSysreg
+Sysreg SPMSCR_EL1 2 7 9 14 7
+Field 63:32 IMP_DEF
+Field 31 RAO
+Res0 30:5
+Field 4 NAO
+Res0 3:1
+Field 0 SO
+EndSysreg
+
Sysreg ID_PFR0_EL1 3 0 0 1 0
Res0 63:32
UnsignedEnum 31:28 RAS
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 22/47] arm64/sysreg: Add register fields for SPMACCESSR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (20 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 21/47] arm64/sysreg: Add register fields for SPMSCR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 23/47] arm64/sysreg: Add register fields for PMICNTR_EL0 Anshuman Khandual
` (25 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMACCESSR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 44fabd1f3aef..06888559e5da 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -114,6 +114,41 @@ Res0 63:1
Field 0 OSLK
EndSysreg
+Sysreg SPMACCESSR_EL1 2 0 9 13 3
+Field 63:62 P31
+Field 61:60 P30
+Field 59:58 P29
+Field 57:56 P28
+Field 55:54 P27
+Field 53:52 P26
+Field 51:50 P25
+Field 49:48 P24
+Field 47:46 P23
+Field 45:44 P22
+Field 43:42 P21
+Field 41:40 P20
+Field 39:38 P19
+Field 37:36 P18
+Field 35:34 P17
+Field 33:32 P16
+Field 31:30 P15
+Field 29:28 P14
+Field 27:26 P13
+Field 25:24 P12
+Field 23:22 P11
+Field 21:20 P10
+Field 19:18 P9
+Field 17:16 P8
+Field 15:14 P7
+Field 13:12 P6
+Field 11:10 P5
+Field 9:8 P4
+Field 7:6 P3
+Field 5:4 P2
+Field 3:2 P1
+Field 1:0 P0
+EndSysreg
+
Sysreg SPMDEVAFF_EL1 2 0 9 13 6
Res0 63:40
Field 39:32 Aff3
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 23/47] arm64/sysreg: Add register fields for PMICNTR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (21 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 22/47] arm64/sysreg: Add register fields for SPMACCESSR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 24/47] arm64/sysreg: Add register fields for PMICFILTR_EL0 Anshuman Khandual
` (24 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMICNTR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 06888559e5da..4bf8ae6d8a26 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2488,6 +2488,10 @@ UnsignedEnum 2:0 F8S1
EndEnum
EndSysreg
+Sysreg PMICNTR_EL0 3 3 9 4 0
+Field 63:0 ICNT
+EndSysreg
+
SysregFields HFGxTR_EL2
Field 63 nAMAIR2_EL1
Field 62 nMAIR2_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 24/47] arm64/sysreg: Add register fields for PMICFILTR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (22 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 23/47] arm64/sysreg: Add register fields for PMICNTR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 25/47] arm64/sysreg: Add register fields for SPMCR_EL0 Anshuman Khandual
` (23 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMICFILTR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 4bf8ae6d8a26..300c213f39da 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2492,6 +2492,27 @@ Sysreg PMICNTR_EL0 3 3 9 4 0
Field 63:0 ICNT
EndSysreg
+Sysreg PMICFILTR_EL0 3 3 9 6 0
+Res0 63:59
+Field 58 SYNC
+Field 57:56 VS
+Res0 55:32
+Field 31 P
+Field 30 U
+Field 29 NSK
+Field 28 NSU
+Field 27 NSH
+Field 26 M
+Res0 25
+Field 24 SH
+Field 23 T
+Field 22 RLK
+Field 21 RLU
+Field 20 RLH
+Res0 19:16
+Field 15:0 evtCount
+EndSysreg
+
SysregFields HFGxTR_EL2
Field 63 nAMAIR2_EL1
Field 62 nMAIR2_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 25/47] arm64/sysreg: Add register fields for SPMCR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (23 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 24/47] arm64/sysreg: Add register fields for PMICFILTR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 26/47] arm64/sysreg: Add register fields for SPMOVSCLR_EL0 Anshuman Khandual
` (22 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 300c213f39da..770c7ae23ce8 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -165,6 +165,19 @@ Sysreg PMCCNTSVR_EL1 2 0 14 11 7
Field 63:0 CCNT
EndSysreg
+Sysreg SPMCR_EL0 2 3 9 12 0
+Res0 63:12
+Field 11 TR0
+Field 10 HDBG
+Field 9 FZ0
+Field 8 NA
+Res0 7:5
+Field 4 EX
+Res0 3:2
+Field 1 P
+Field 0 E
+EndSysreg
+
Sysreg SPMSCR_EL1 2 7 9 14 7
Field 63:32 IMP_DEF
Field 31 RAO
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 26/47] arm64/sysreg: Add register fields for SPMOVSCLR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (24 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 25/47] arm64/sysreg: Add register fields for SPMCR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 27/47] arm64/sysreg: Add register fields for SPMOVSSET_EL0 Anshuman Khandual
` (21 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMOVSCLR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 770c7ae23ce8..b0ec176f099c 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -178,6 +178,73 @@ Field 1 P
Field 0 E
EndSysreg
+Sysreg SPMOVSCLR_EL0 2 3 9 12 3
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg SPMSCR_EL1 2 7 9 14 7
Field 63:32 IMP_DEF
Field 31 RAO
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 27/47] arm64/sysreg: Add register fields for SPMOVSSET_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (25 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 26/47] arm64/sysreg: Add register fields for SPMOVSCLR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 28/47] arm64/sysreg: Add register fields for SPMINTENCLR_EL1 Anshuman Khandual
` (20 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMOVSSET_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index b0ec176f099c..6086fcced8cf 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -245,6 +245,73 @@ Field 1 P1
Field 0 P0
EndSysreg
+Sysreg SPMOVSSET_EL0 2 3 9 14 3
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg SPMSCR_EL1 2 7 9 14 7
Field 63:32 IMP_DEF
Field 31 RAO
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 28/47] arm64/sysreg: Add register fields for SPMINTENCLR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (26 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 27/47] arm64/sysreg: Add register fields for SPMOVSSET_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 29/47] arm64/sysreg: Add register fields for SPMINTENSET_EL1 Anshuman Khandual
` (19 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMINTENCLR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 6086fcced8cf..6c2696640083 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -161,6 +161,73 @@ Field 15:8 Aff1
Field 7:0 Aff0
EndSysreg
+Sysreg SPMINTENCLR_EL1 2 0 9 14 2
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg PMCCNTSVR_EL1 2 0 14 11 7
Field 63:0 CCNT
EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 29/47] arm64/sysreg: Add register fields for SPMINTENSET_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (27 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 28/47] arm64/sysreg: Add register fields for SPMINTENCLR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 30/47] arm64/sysreg: Add register fields for SPMCNTENCLR_EL0 Anshuman Khandual
` (18 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMINTENSET_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 6c2696640083..e25418b95b96 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -161,6 +161,73 @@ Field 15:8 Aff1
Field 7:0 Aff0
EndSysreg
+Sysreg SPMINTENSET_EL1 2 0 9 14 1
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg SPMINTENCLR_EL1 2 0 9 14 2
Field 63 P63
Field 62 P62
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 30/47] arm64/sysreg: Add register fields for SPMCNTENCLR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (28 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 29/47] arm64/sysreg: Add register fields for SPMINTENSET_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 31/47] arm64/sysreg: Add register fields for SPMCNTENSET_EL0 Anshuman Khandual
` (17 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCNTENCLR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index e25418b95b96..92cc19d3b7af 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -312,6 +312,73 @@ Field 1 P
Field 0 E
EndSysreg
+Sysreg SPMCNTENCLR_EL0 2 3 9 12 2
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg SPMOVSCLR_EL0 2 3 9 12 3
Field 63 P63
Field 62 P62
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 31/47] arm64/sysreg: Add register fields for SPMCNTENSET_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (29 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 30/47] arm64/sysreg: Add register fields for SPMCNTENCLR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 32/47] arm64/sysreg: Add register fields for SPMSELR_EL0 Anshuman Khandual
` (16 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCNTENSET_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 92cc19d3b7af..7369a044c649 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -312,6 +312,73 @@ Field 1 P
Field 0 E
EndSysreg
+Sysreg SPMCNTENSET_EL0 2 3 9 12 1
+Field 63 P63
+Field 62 P62
+Field 61 P61
+Field 60 P60
+Field 59 P59
+Field 58 P58
+Field 57 P57
+Field 56 P56
+Field 55 P55
+Field 54 P54
+Field 53 P53
+Field 52 P52
+Field 51 P51
+Field 50 P50
+Field 49 P49
+Field 48 P48
+Field 47 P47
+Field 46 P46
+Field 45 P45
+Field 44 P44
+Field 43 P43
+Field 42 P42
+Field 41 P41
+Field 40 P40
+Field 39 P39
+Field 38 P38
+Field 37 P37
+Field 36 P36
+Field 35 P35
+Field 34 P34
+Field 33 P33
+Field 32 P32
+Field 31 P31
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
Sysreg SPMCNTENCLR_EL0 2 3 9 12 2
Field 63 P63
Field 62 P62
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 32/47] arm64/sysreg: Add register fields for SPMSELR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (30 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 31/47] arm64/sysreg: Add register fields for SPMCNTENSET_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 33/47] arm64/sysreg: Add register fields for PMICNTSVR_EL1 Anshuman Khandual
` (15 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMSELR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 7369a044c649..7144a65aed5e 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -513,6 +513,18 @@ Field 1 P1
Field 0 P0
EndSysreg
+Sysreg SPMSELR_EL0 2 3 9 12 5
+Res0 63:10
+Field 9:4 SYSPMUSEL
+Res0 3:2
+UnsignedEnum 1:0 BANK
+ 0b00 BANK_0
+ 0b01 BANK_1
+ 0b10 BANK_2
+ 0b11 BANK_3
+EndEnum
+EndSysreg
+
Sysreg SPMOVSSET_EL0 2 3 9 14 3
Field 63 P63
Field 62 P62
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 33/47] arm64/sysreg: Add register fields for PMICNTSVR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (31 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 32/47] arm64/sysreg: Add register fields for SPMSELR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 34/47] arm64/sysreg: Add register fields for SPMIIDR_EL1 Anshuman Khandual
` (14 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMICNTSVR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 7144a65aed5e..a649958b9fe8 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -299,6 +299,10 @@ Sysreg PMCCNTSVR_EL1 2 0 14 11 7
Field 63:0 CCNT
EndSysreg
+Sysreg PMICNTSVR_EL1 2 0 14 12 0
+Field 63:0 ICNT
+EndSysreg
+
Sysreg SPMCR_EL0 2 3 9 12 0
Res0 63:12
Field 11 TR0
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 34/47] arm64/sysreg: Add register fields for SPMIIDR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (32 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 33/47] arm64/sysreg: Add register fields for PMICNTSVR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 35/47] arm64/sysreg: Add register fields for SPMDEVARCH_EL1 Anshuman Khandual
` (13 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMIIDR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index a649958b9fe8..073d92fd085a 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -149,6 +149,16 @@ Field 3:2 P1
Field 1:0 P0
EndSysreg
+Sysreg SPMIIDR_EL1 2 0 9 13 4
+Res0 63:32
+Field 31:20 ProductID
+Field 19:16 Variant
+Field 15:12 Revision
+Field 11:8 Implementer_high
+Res0 7
+Field 6:0 Implementer_low
+EndSysreg
+
Sysreg SPMDEVAFF_EL1 2 0 9 13 6
Res0 63:40
Field 39:32 Aff3
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 35/47] arm64/sysreg: Add register fields for SPMDEVARCH_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (33 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 34/47] arm64/sysreg: Add register fields for SPMIIDR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 36/47] arm64/sysreg: Add register fields for SPMCFGR_EL1 Anshuman Khandual
` (12 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMDEVARCH_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 073d92fd085a..270058558a24 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -159,6 +159,15 @@ Res0 7
Field 6:0 Implementer_low
EndSysreg
+Sysreg SPMDEVARCH_EL1 2 0 9 13 5
+Res0 63:32
+Field 31:21 ARCHITECT
+Field 20 PRESENT
+Field 19:16 REVISION
+Field 15:12 ARCHVER
+Field 11:0 ARCHPART
+EndSysreg
+
Sysreg SPMDEVAFF_EL1 2 0 9 13 6
Res0 63:40
Field 39:32 Aff3
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 36/47] arm64/sysreg: Add register fields for SPMCFGR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (34 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 35/47] arm64/sysreg: Add register fields for SPMDEVARCH_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 37/47] arm64/sysreg: Add register fields for PMSSCR_EL1 Anshuman Khandual
` (11 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCFGR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 270058558a24..a07d89e43498 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -180,6 +180,24 @@ Field 15:8 Aff1
Field 7:0 Aff0
EndSysreg
+Sysreg SPMCFGR_EL1 2 0 9 13 7
+Res0 63:32
+Field 31:28 NCG
+Res0 27:25
+Field 24 HDBG
+Field 23 TR0
+Field 22 SS
+Field 21 FZ0
+Field 20 MSI
+Field 19 RAO
+Res0 18
+Field 17 NA
+Field 16 EX
+Field 15:14 RAZ
+Field 13:8 SIZE
+Field 7:0 N
+EndSysreg
+
Sysreg SPMINTENSET_EL1 2 0 9 14 1
Field 63 P63
Field 62 P62
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 37/47] arm64/sysreg: Add register fields for PMSSCR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (35 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 36/47] arm64/sysreg: Add register fields for SPMCFGR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 38/47] arm64/sysreg: Add register fields for PMZR_EL0 Anshuman Khandual
` (10 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMSSCR_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index a07d89e43498..0043268765d5 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2762,6 +2762,13 @@ Res0 63:5
Field 4:0 SEL
EndSysreg
+Sysreg PMSSCR_EL1 3 0 9 13 3
+Res0 63:33
+Field 32 NC
+Res0 31:1
+Field 0 SS
+EndSysreg
+
Sysreg PMUACR_EL1 3 0 9 14 4
Res0 63:33
Field 32 FM
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 38/47] arm64/sysreg: Add register fields for PMZR_EL0
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (36 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 37/47] arm64/sysreg: Add register fields for PMSSCR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 39/47] arm64/sysreg: Add register fields for SPMCGCR0_EL1 Anshuman Khandual
` (9 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for PMZR_EL0 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 0043268765d5..020fda4fbd9b 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -2988,6 +2988,43 @@ Res0 19:16
Field 15:0 evtCount
EndSysreg
+Sysreg PMZR_EL0 3 3 9 13 4
+Res0 63:33
+Field 32 FM
+Field 31 C
+Field 30 P30
+Field 29 P29
+Field 28 P28
+Field 27 P27
+Field 26 P26
+Field 25 P25
+Field 24 P24
+Field 23 P23
+Field 22 P22
+Field 21 P21
+Field 20 P20
+Field 19 P19
+Field 18 P18
+Field 17 P17
+Field 16 P16
+Field 15 P15
+Field 14 P14
+Field 13 P13
+Field 12 P12
+Field 11 P11
+Field 10 P10
+Field 9 P9
+Field 8 P8
+Field 7 P7
+Field 6 P6
+Field 5 P5
+Field 4 P4
+Field 3 P3
+Field 2 P2
+Field 1 P1
+Field 0 P0
+EndSysreg
+
SysregFields HFGxTR_EL2
Field 63 nAMAIR2_EL1
Field 62 nMAIR2_EL1
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 39/47] arm64/sysreg: Add register fields for SPMCGCR0_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (37 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 38/47] arm64/sysreg: Add register fields for PMZR_EL0 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 40/47] arm64/sysreg: Add register fields for SPMCGCR1_EL1 Anshuman Khandual
` (8 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCGCR0_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 020fda4fbd9b..50397a1a5799 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -114,6 +114,21 @@ Res0 63:1
Field 0 OSLK
EndSysreg
+SysregFields SPMCGCRx_EL1
+Field 63:56 N7
+Field 55:48 N6
+Field 47:40 N5
+Field 39:32 N4
+Field 31:24 N3
+Field 23:16 N2
+Field 15:8 N1
+Field 7:0 N0
+EndSysregFields
+
+Sysreg SPMCGCR0_EL1 2 0 9 13 0
+Fields SPMCGCRx_EL1
+EndSysreg
+
Sysreg SPMACCESSR_EL1 2 0 9 13 3
Field 63:62 P31
Field 61:60 P30
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 40/47] arm64/sysreg: Add register fields for SPMCGCR1_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (38 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 39/47] arm64/sysreg: Add register fields for SPMCGCR0_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 41/47] arm64/sysreg: Add register fields for MDSTEPOP_EL1 Anshuman Khandual
` (7 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMCGCR1_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 50397a1a5799..ad7a1dc05f8a 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -129,6 +129,10 @@ Sysreg SPMCGCR0_EL1 2 0 9 13 0
Fields SPMCGCRx_EL1
EndSysreg
+Sysreg SPMCGCR1_EL1 2 0 9 13 1
+Fields SPMCGCRx_EL1
+EndSysreg
+
Sysreg SPMACCESSR_EL1 2 0 9 13 3
Field 63:62 P31
Field 61:60 P30
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 41/47] arm64/sysreg: Add register fields for MDSTEPOP_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (39 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 40/47] arm64/sysreg: Add register fields for SPMCGCR1_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 42/47] arm64/sysreg: Add register fields for ERXGSR_EL1 Anshuman Khandual
` (6 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for MDSTEPOP_EL1 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index ad7a1dc05f8a..815e53200823 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -104,6 +104,11 @@ EndEnum
Res0 3:0
EndSysreg
+Sysreg MDSTEPOP_EL1 2 0 0 5 2
+Res0 63:32
+Field 31:0 OPCODE
+EndSysreg
+
Sysreg OSECCR_EL1 2 0 0 6 2
Res0 63:32
Field 31:0 EDECCR
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 42/47] arm64/sysreg: Add register fields for ERXGSR_EL1
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (40 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 41/47] arm64/sysreg: Add register fields for MDSTEPOP_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 43/47] arm64/sysreg: Add register fields for SPMACCESSR_EL2 Anshuman Khandual
` (5 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for ERXGSR_EL1 as per the definitions based on
DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 67 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index 815e53200823..b464d02e5fb9 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -3641,6 +3641,73 @@ Field 15:8 Attr1
Field 7:0 Attr0
EndSysregFields
+Sysreg ERXGSR_EL1 3 0 5 3 2
+Field 63 S63
+Field 62 S62
+Field 61 S61
+Field 60 S60
+Field 59 S59
+Field 58 S58
+Field 57 S57
+Field 56 S56
+Field 55 S55
+Field 54 S54
+Field 53 S53
+Field 52 S52
+Field 51 S51
+Field 50 S50
+Field 49 S49
+Field 48 S48
+Field 47 S47
+Field 46 S46
+Field 45 S45
+Field 44 S44
+Field 43 S43
+Field 42 S42
+Field 41 S41
+Field 40 S40
+Field 39 S39
+Field 38 S38
+Field 37 S37
+Field 36 S36
+Field 35 S35
+Field 34 S34
+Field 33 S33
+Field 32 S32
+Field 31 S31
+Field 30 S30
+Field 29 S29
+Field 28 S28
+Field 27 S27
+Field 26 S26
+Field 25 S25
+Field 24 S24
+Field 23 S23
+Field 22 S22
+Field 21 S21
+Field 20 S20
+Field 19 S19
+Field 18 S18
+Field 17 S17
+Field 16 S16
+Field 15 S15
+Field 14 S14
+Field 13 S13
+Field 12 S12
+Field 11 S11
+Field 10 S10
+Field 9 S9
+Field 8 S8
+Field 7 S7
+Field 6 S6
+Field 5 S5
+Field 4 S4
+Field 3 S3
+Field 2 S2
+Field 1 S1
+Field 0 S0
+EndSysreg
+
Sysreg MAIR2_EL1 3 0 10 2 1
Fields MAIR2_ELx
EndSysreg
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 43/47] arm64/sysreg: Add register fields for SPMACCESSR_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (41 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 42/47] arm64/sysreg: Add register fields for ERXGSR_EL1 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 44/47] arm64/sysreg: Add remaining debug registers affected by HDFGxTR2_EL2 Anshuman Khandual
` (4 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds register fields for SPMACCESSR_EL2 as per the definitions based
on DDI0601 2024-06.
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/tools/sysreg | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index b464d02e5fb9..974218762525 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -657,6 +657,41 @@ Field 1 P1
Field 0 P0
EndSysreg
+Sysreg SPMACCESSR_EL2 2 4 9 13 3
+Field 63:62 P31
+Field 61:60 P30
+Field 59:58 P29
+Field 57:56 P28
+Field 55:54 P27
+Field 53:52 P26
+Field 51:50 P25
+Field 49:48 P24
+Field 47:46 P23
+Field 45:44 P22
+Field 43:42 P21
+Field 41:40 P20
+Field 39:38 P19
+Field 37:36 P18
+Field 35:34 P17
+Field 33:32 P16
+Field 31:30 P15
+Field 29:28 P14
+Field 27:26 P13
+Field 25:24 P12
+Field 23:22 P11
+Field 21:20 P10
+Field 19:18 P9
+Field 17:16 P8
+Field 15:14 P7
+Field 13:12 P6
+Field 11:10 P5
+Field 9:8 P4
+Field 7:6 P3
+Field 5:4 P2
+Field 3:2 P1
+Field 1:0 P0
+EndSysreg
+
Sysreg SPMSCR_EL1 2 7 9 14 7
Field 63:32 IMP_DEF
Field 31 RAO
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 44/47] arm64/sysreg: Add remaining debug registers affected by HDFGxTR2_EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (42 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 43/47] arm64/sysreg: Add register fields for SPMACCESSR_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 45/47] KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2 Anshuman Khandual
` (3 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
The HDFGxTR2_EL2 registers trap a set of debug and trace related registers.
Almost all of those register encodings have been added in the tools sysreg
format. Let's also add all the remaining encodings which are formula based
(and only that, because we really don't care about what these registers
actually do at this stage).
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/include/asm/sysreg.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 9ea97dddefc4..85cbce07ce77 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -270,6 +270,12 @@
#define SYS_TRCVMIDCCTLR1 sys_reg(2, 1, 3, 3, 2)
#define SYS_TRCVMIDCVR(m) sys_reg(2, 1, 3, ((m & 7) << 1), 1)
+#define SYS_SPMEVCNTR_EL0(m) sys_reg(2, 3, 14, (0 | (m >> 3)), (m & 7))
+#define SYS_SPMEVTYPER_EL0(m) sys_reg(2, 3, 14, (2 | (m >> 3)), (m & 7))
+#define SYS_SPMEVFILTR_EL0(m) sys_reg(2, 3, 14, (4 | (m >> 3)), (m & 7))
+#define SYS_SPMEVFILT2R_EL0(m) sys_reg(2, 3, 14, (6 | (m >> 3)), (m & 7))
+#define SYS_PMEVCNTSVR_EL1(m) sys_reg(2, 0, 14, (8 | (m >> 3)), (m & 7))
+
/* ETM */
#define SYS_TRCOSLAR sys_reg(2, 1, 1, 0, 4)
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 45/47] KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (43 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 44/47] arm64/sysreg: Add remaining debug registers affected by HDFGxTR2_EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 46/47] KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling Anshuman Khandual
` (2 subsequent siblings)
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This adds VNCR-capable HDFGRTR2_EL2, HDFGWTR2_EL2, HFGRTR2_EL2, HFGWTR2_EL2
and HFGITR2_EL2 FEAT_FGT2 registers into enum vcpu_sysreg, and also enables
their access from virtual EL2 environment.
Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: James Morse <james.morse@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: kvmarm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/include/asm/kvm_host.h | 5 +++++
arch/arm64/include/asm/vncr_mapping.h | 5 +++++
arch/arm64/kvm/sys_regs.c | 5 +++++
3 files changed, 15 insertions(+)
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 329619c6fa96..09291e1e42c9 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -532,6 +532,11 @@ enum vcpu_sysreg {
VNCR(HDFGWTR_EL2),
VNCR(HAFGRTR_EL2),
+ VNCR(HDFGRTR2_EL2),
+ VNCR(HDFGWTR2_EL2),
+ VNCR(HFGITR2_EL2),
+ VNCR(HFGRTR2_EL2),
+ VNCR(HFGWTR2_EL2),
VNCR(CNTVOFF_EL2),
VNCR(CNTV_CVAL_EL0),
VNCR(CNTV_CTL_EL0),
diff --git a/arch/arm64/include/asm/vncr_mapping.h b/arch/arm64/include/asm/vncr_mapping.h
index 06f8ec0906a6..8eab837196d0 100644
--- a/arch/arm64/include/asm/vncr_mapping.h
+++ b/arch/arm64/include/asm/vncr_mapping.h
@@ -38,6 +38,8 @@
#define VNCR_HFGRTR_EL2 0x1B8
#define VNCR_HFGWTR_EL2 0x1C0
#define VNCR_HFGITR_EL2 0x1C8
+#define VNCR_HDFGRTR2_EL2 0x1A0
+#define VNCR_HDFGWTR2_EL2 0x1B0
#define VNCR_HDFGRTR_EL2 0x1D0
#define VNCR_HDFGWTR_EL2 0x1D8
#define VNCR_ZCR_EL1 0x1E0
@@ -53,6 +55,9 @@
#define VNCR_PIRE0_EL2 0x298
#define VNCR_PIR_EL1 0x2A0
#define VNCR_POR_EL1 0x2A8
+#define VNCR_HFGRTR2_EL2 0x2C0
+#define VNCR_HFGWTR2_EL2 0x2C8
+#define VNCR_HFGITR2_EL2 0x310
#define VNCR_ICH_LR0_EL2 0x400
#define VNCR_ICH_LR1_EL2 0x408
#define VNCR_ICH_LR2_EL2 0x410
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index dad88e31f953..778731491f79 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -2794,9 +2794,14 @@ static const struct sys_reg_desc sys_reg_descs[] = {
EL2_REG_VNCR(VTCR_EL2, reset_val, 0),
{ SYS_DESC(SYS_DACR32_EL2), undef_access, reset_unknown, DACR32_EL2 },
+ EL2_REG_VNCR(HDFGRTR2_EL2, reset_val, 0),
+ EL2_REG_VNCR(HDFGWTR2_EL2, reset_val, 0),
+ EL2_REG_VNCR(HFGRTR2_EL2, reset_val, 0),
+ EL2_REG_VNCR(HFGWTR2_EL2, reset_val, 0),
EL2_REG_VNCR(HDFGRTR_EL2, reset_val, 0),
EL2_REG_VNCR(HDFGWTR_EL2, reset_val, 0),
EL2_REG_VNCR(HAFGRTR_EL2, reset_val, 0),
+ EL2_REG_VNCR(HFGITR2_EL2, reset_val, 0),
EL2_REG_REDIR(SPSR_EL2, reset_val, 0),
EL2_REG_REDIR(ELR_EL2, reset_val, 0),
{ SYS_DESC(SYS_SP_EL1), access_sp_el1},
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 46/47] KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (44 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 45/47] KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2 Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers Anshuman Khandual
2024-10-02 15:52 ` [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Mark Brown
47 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
This enables FEAT_FGT2 registers based FGU handling by adding the following
new groups in 'enum fgt_group_id' for all respective FGT control registers
and also adding FGU behaviour for their individual managed registers access
traps.
1. HDFGRTR2_GROUP
2. HDFGWTR2_GROUP
3. HFGRTR2_GROUP
4. HFGWTR2_GROUP
5. HFGITR2_GROUP
Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: James Morse <james.morse@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: kvmarm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/include/asm/kvm_arm.h | 20 +++
arch/arm64/include/asm/kvm_host.h | 5 +
arch/arm64/kvm/emulate-nested.c | 182 ++++++++++++++++++++++++
arch/arm64/kvm/hyp/include/hyp/switch.h | 26 ++++
arch/arm64/kvm/nested.c | 52 +++++++
arch/arm64/kvm/sys_regs.c | 59 ++++++++
6 files changed, 344 insertions(+)
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 109a85ee6910..449bccffd529 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -354,6 +354,26 @@
#define __HFGRTR_EL2_MASK GENMASK(49, 0)
#define __HFGRTR_EL2_nMASK ~(__HFGRTR_EL2_RES0 | __HFGRTR_EL2_MASK)
+#define __HDFGRTR2_EL2_RES0 HDFGRTR2_EL2_RES0
+#define __HDFGRTR2_EL2_MASK 0
+#define __HDFGRTR2_EL2_nMASK ~(__HDFGRTR2_EL2_RES0 | __HDFGRTR2_EL2_MASK)
+
+#define __HDFGWTR2_EL2_RES0 HDFGWTR2_EL2_RES0
+#define __HDFGWTR2_EL2_MASK 0
+#define __HDFGWTR2_EL2_nMASK ~(__HDFGWTR2_EL2_RES0 | __HDFGWTR2_EL2_MASK)
+
+#define __HFGITR2_EL2_RES0 HFGITR2_EL2_RES0
+#define __HFGITR2_EL2_MASK 0
+#define __HFGITR2_EL2_nMASK ~(__HFGITR2_EL2_RES0 | __HFGITR2_EL2_MASK)
+
+#define __HFGRTR2_EL2_RES0 HFGRTR2_EL2_RES0
+#define __HFGRTR2_EL2_MASK 0
+#define __HFGRTR2_EL2_nMASK ~(HFGRTR2_EL2_RES0 | __HFGRTR2_EL2_MASK)
+
+#define __HFGWTR2_EL2_RES0 HFGWTR2_EL2_RES0
+#define __HFGWTR2_EL2_MASK 0
+#define __HFGWTR2_EL2_nMASK ~(HFGWTR2_EL2_RES0 | __HFGWTR2_EL2_MASK)
+
/*
* The HFGWTR bits are a subset of HFGRTR bits. To ensure we don't miss any
* future additions, define __HFGWTR* macros relative to __HFGRTR* ones.
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 09291e1e42c9..ca98f6d810c2 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -266,6 +266,11 @@ enum fgt_group_id {
HDFGWTR_GROUP = HDFGRTR_GROUP,
HFGITR_GROUP,
HAFGRTR_GROUP,
+ HDFGRTR2_GROUP,
+ HDFGWTR2_GROUP = HDFGRTR2_GROUP,
+ HFGRTR2_GROUP,
+ HFGWTR2_GROUP = HFGRTR2_GROUP,
+ HFGITR2_GROUP,
/* Must be last */
__NR_FGT_GROUP_IDS__
diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-nested.c
index 05b6435d02a9..f22a5f10ffe5 100644
--- a/arch/arm64/kvm/emulate-nested.c
+++ b/arch/arm64/kvm/emulate-nested.c
@@ -1899,6 +1899,158 @@ static const struct encoding_to_trap_config encoding_to_fgt[] __initconst = {
SR_FGT(SYS_AMEVCNTR0_EL0(2), HAFGRTR, AMEVCNTR02_EL0, 1),
SR_FGT(SYS_AMEVCNTR0_EL0(1), HAFGRTR, AMEVCNTR01_EL0, 1),
SR_FGT(SYS_AMEVCNTR0_EL0(0), HAFGRTR, AMEVCNTR00_EL0, 1),
+
+ /* HDFGRTR2_EL2 */
+ SR_FGT(SYS_MDSTEPOP_EL1, HDFGRTR2, nMDSTEPOP_EL1, 0),
+ SR_FGT(SYS_TRBMPAM_EL1, HDFGRTR2, nTRBMPAM_EL1, 0),
+ SR_FGT(SYS_TRCITECR_EL1, HDFGRTR2, nTRCITECR_EL1, 0),
+ SR_FGT(SYS_PMSDSFR_EL1, HDFGRTR2, nPMSDSFR_EL1, 0),
+ SR_FGT(SYS_SPMDEVAFF_EL1, HDFGRTR2, nSPMDEVAFF_EL1, 0),
+
+ SR_FGT(SYS_SPMCGCR0_EL1, HDFGRTR2, nSPMID, 0),
+ SR_FGT(SYS_SPMCGCR1_EL1, HDFGRTR2, nSPMID, 0),
+ SR_FGT(SYS_SPMIIDR_EL1, HDFGRTR2, nSPMID, 0),
+ SR_FGT(SYS_SPMDEVARCH_EL1, HDFGRTR2, nSPMID, 0),
+ SR_FGT(SYS_SPMCFGR_EL1, HDFGRTR2, nSPMID, 0),
+
+ SR_FGT(SYS_SPMSCR_EL1, HDFGRTR2, nSPMSCR_EL1, 0),
+ SR_FGT(SYS_SPMACCESSR_EL1, HDFGRTR2, nSPMACCESSR_EL1, 0),
+ SR_FGT(SYS_SPMCR_EL0, HDFGRTR2, nSPMCR_EL0, 0),
+ SR_FGT(SYS_SPMOVSCLR_EL0, HDFGRTR2, nSPMOVS, 0),
+ SR_FGT(SYS_SPMOVSSET_EL0, HDFGRTR2, nSPMOVS, 0),
+ SR_FGT(SYS_SPMINTENCLR_EL1, HDFGRTR2, nSPMINTEN, 0),
+ SR_FGT(SYS_SPMINTENSET_EL1, HDFGRTR2, nSPMINTEN, 0),
+ SR_FGT(SYS_SPMCNTENCLR_EL0, HDFGRTR2, nSPMCNTEN, 0),
+ SR_FGT(SYS_SPMCNTENSET_EL0, HDFGRTR2, nSPMCNTEN, 0),
+ SR_FGT(SYS_SPMSELR_EL0, HDFGRTR2, nSPMSELR_EL0, 0),
+
+ SR_FGT(SYS_SPMEVTYPER_EL0(0), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(1), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(2), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(3), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(4), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(5), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(6), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(7), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(8), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(9), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(10), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(11), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(12), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(13), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(14), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVTYPER_EL0(15), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+
+ SR_FGT(SYS_SPMEVFILTR_EL0(0), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(1), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(2), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(3), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(4), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(5), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(6), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(7), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(8), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(9), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(10), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(11), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(12), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(13), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(14), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILTR_EL0(15), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+
+ SR_FGT(SYS_SPMEVFILT2R_EL0(0), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(1), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(2), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(3), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(4), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(5), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(6), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(7), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(8), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(9), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(10), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(11), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(12), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(13), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(14), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+ SR_FGT(SYS_SPMEVFILT2R_EL0(15), HDFGRTR2, nSPMEVTYPERn_EL0, 0),
+
+ SR_FGT(SYS_SPMEVCNTR_EL0(0), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(1), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(2), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(3), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(4), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(5), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(6), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(7), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(8), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(9), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(10), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(11), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(12), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(13), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(14), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+ SR_FGT(SYS_SPMEVCNTR_EL0(15), HDFGRTR2, nSPMEVCNTRn_EL0, 0),
+
+ SR_FGT(SYS_PMSSCR_EL1, HDFGRTR2, nPMSSCR_EL1, 0),
+ SR_FGT(SYS_PMCCNTSVR_EL1, HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMICNTSVR_EL1, HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(0), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(1), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(2), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(3), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(4), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(5), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(6), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(7), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(8), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(9), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(10), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(11), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(12), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(13), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(14), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(15), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(16), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(17), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(18), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(19), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(20), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(21), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(22), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(23), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(24), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(25), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(26), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(27), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(28), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(29), HDFGRTR2, nPMSSDATA, 0),
+ SR_FGT(SYS_PMEVCNTSVR_EL1(30), HDFGRTR2, nPMSSDATA, 0),
+
+ SR_FGT(SYS_MDSELR_EL1, HDFGRTR2, nMDSELR_EL1, 0),
+ SR_FGT(SYS_PMUACR_EL1, HDFGRTR2, nPMUACR_EL1, 0),
+ SR_FGT(SYS_PMICFILTR_EL0, HDFGRTR2, nPMICFILTR_EL0, 0),
+ SR_FGT(SYS_PMICNTR_EL0, HDFGRTR2, nPMICNTR_EL0, 0),
+ SR_FGT(SYS_PMIAR_EL1, HDFGRTR2, nPMIAR_EL1, 0),
+ SR_FGT(SYS_PMECR_EL1, HDFGRTR2, nPMECR_EL1, 0),
+
+ /*
+ * HDFGWTR2_EL2
+ *
+ * Although HDFGRTR2_EL2 and HDFGWTR2_EL2 registers largely
+ * overlap in their bit assignment, there are a number of bits
+ * that are RES0 on one side, and an actual trap bit on the
+ * other. The policy chosen here is to describe all the
+ * read-side mappings, and only the write-side mappings that
+ * differ from the read side, and the trap handler will pick
+ * the correct shadow register based on the access type.
+ */
+ SR_FGT(SYS_PMZR_EL0, HDFGWTR2, nPMZR_EL0, 0),
+
+ /* HFGRTR2_EL2 */
+ SR_FGT(SYS_RCWSMASK_EL1, HFGRTR2, nRCWSMASK_EL1, 0),
+ SR_FGT(SYS_ERXGSR_EL1, HFGRTR2, nERXGSR_EL1, 0),
+ SR_FGT(SYS_PFAR_EL1, HFGRTR2, nPFAR_EL1, 0),
};
static union trap_config get_trap_config(u32 sysreg)
@@ -2154,6 +2306,14 @@ static bool check_fgt_bit(struct kvm *kvm, bool is_read,
sr = is_read ? HDFGRTR_EL2 : HDFGWTR_EL2;
break;
+ case HDFGRTR2_GROUP:
+ sr = is_read ? HDFGRTR2_EL2 : HDFGWTR2_EL2;
+ break;
+
+ case HFGRTR2_GROUP:
+ sr = is_read ? HFGRTR2_EL2 : HFGWTR2_EL2;
+ break;
+
case HAFGRTR_GROUP:
sr = HAFGRTR_EL2;
break;
@@ -2162,6 +2322,10 @@ static bool check_fgt_bit(struct kvm *kvm, bool is_read,
sr = HFGITR_EL2;
break;
+ case HFGITR2_GROUP:
+ sr = HFGITR2_EL2;
+ break;
+
default:
WARN_ONCE(1, "Unhandled FGT group");
return false;
@@ -2228,6 +2392,20 @@ bool triage_sysreg_trap(struct kvm_vcpu *vcpu, int *sr_index)
val = __vcpu_sys_reg(vcpu, HDFGWTR_EL2);
break;
+ case HDFGRTR2_GROUP:
+ if (is_read)
+ val = __vcpu_sys_reg(vcpu, HDFGRTR2_EL2);
+ else
+ val = __vcpu_sys_reg(vcpu, HDFGWTR2_EL2);
+ break;
+
+ case HFGRTR2_GROUP:
+ if (is_read)
+ val = __vcpu_sys_reg(vcpu, HFGRTR2_EL2);
+ else
+ val = __vcpu_sys_reg(vcpu, HFGWTR2_EL2);
+ break;
+
case HAFGRTR_GROUP:
val = __vcpu_sys_reg(vcpu, HAFGRTR_EL2);
break;
@@ -2247,6 +2425,10 @@ bool triage_sysreg_trap(struct kvm_vcpu *vcpu, int *sr_index)
}
break;
+ case HFGITR2_GROUP:
+ val = __vcpu_sys_reg(vcpu, HFGITR2_EL2);
+ break;
+
case __NR_FGT_GROUP_IDS__:
/* Something is really wrong, bail out */
WARN_ONCE(1, "__NR_FGT_GROUP_IDS__");
diff --git a/arch/arm64/kvm/hyp/include/hyp/switch.h b/arch/arm64/kvm/hyp/include/hyp/switch.h
index 46d52e8a3df3..570c061e8ccd 100644
--- a/arch/arm64/kvm/hyp/include/hyp/switch.h
+++ b/arch/arm64/kvm/hyp/include/hyp/switch.h
@@ -84,10 +84,21 @@ static inline void __activate_traps_fpsimd32(struct kvm_vcpu *vcpu)
case HFGITR_EL2: \
id = HFGITR_GROUP; \
break; \
+ case HFGITR2_EL2: \
+ id = HFGITR2_GROUP; \
+ break; \
case HDFGRTR_EL2: \
case HDFGWTR_EL2: \
id = HDFGRTR_GROUP; \
break; \
+ case HDFGRTR2_EL2: \
+ case HDFGWTR2_EL2: \
+ id = HDFGRTR2_GROUP; \
+ break; \
+ case HFGRTR2_EL2: \
+ case HFGWTR2_EL2: \
+ id = HFGRTR2_GROUP; \
+ break; \
case HAFGRTR_EL2: \
id = HAFGRTR_GROUP; \
break; \
@@ -159,6 +170,11 @@ static inline void __activate_traps_hfgxtr(struct kvm_vcpu *vcpu)
CHECK_FGT_MASKS(HDFGWTR_EL2);
CHECK_FGT_MASKS(HAFGRTR_EL2);
CHECK_FGT_MASKS(HCRX_EL2);
+ CHECK_FGT_MASKS(HDFGRTR2_EL2);
+ CHECK_FGT_MASKS(HDFGWTR2_EL2);
+ CHECK_FGT_MASKS(HFGITR2_EL2);
+ CHECK_FGT_MASKS(HFGRTR2_EL2);
+ CHECK_FGT_MASKS(HFGWTR2_EL2);
if (!cpus_have_final_cap(ARM64_HAS_FGT))
return;
@@ -170,6 +186,11 @@ static inline void __activate_traps_hfgxtr(struct kvm_vcpu *vcpu)
update_fgt_traps(hctxt, vcpu, kvm, HFGITR_EL2);
update_fgt_traps(hctxt, vcpu, kvm, HDFGRTR_EL2);
update_fgt_traps(hctxt, vcpu, kvm, HDFGWTR_EL2);
+ update_fgt_traps(hctxt, vcpu, kvm, HDFGRTR2_EL2);
+ update_fgt_traps(hctxt, vcpu, kvm, HDFGWTR2_EL2);
+ update_fgt_traps(hctxt, vcpu, kvm, HFGITR2_EL2);
+ update_fgt_traps(hctxt, vcpu, kvm, HFGRTR2_EL2);
+ update_fgt_traps(hctxt, vcpu, kvm, HFGWTR2_EL2);
if (cpu_has_amu())
update_fgt_traps(hctxt, vcpu, kvm, HAFGRTR_EL2);
@@ -199,6 +220,11 @@ static inline void __deactivate_traps_hfgxtr(struct kvm_vcpu *vcpu)
__deactivate_fgt(hctxt, vcpu, kvm, HFGITR_EL2);
__deactivate_fgt(hctxt, vcpu, kvm, HDFGRTR_EL2);
__deactivate_fgt(hctxt, vcpu, kvm, HDFGWTR_EL2);
+ __deactivate_fgt(hctxt, vcpu, kvm, HDFGRTR2_EL2);
+ __deactivate_fgt(hctxt, vcpu, kvm, HDFGWTR2_EL2);
+ __deactivate_fgt(hctxt, vcpu, kvm, HFGITR2_EL2);
+ __deactivate_fgt(hctxt, vcpu, kvm, HFGRTR2_EL2);
+ __deactivate_fgt(hctxt, vcpu, kvm, HFGWTR2_EL2);
if (cpu_has_amu())
__deactivate_fgt(hctxt, vcpu, kvm, HAFGRTR_EL2);
diff --git a/arch/arm64/kvm/nested.c b/arch/arm64/kvm/nested.c
index f9e30dd34c7a..845fa765fcef 100644
--- a/arch/arm64/kvm/nested.c
+++ b/arch/arm64/kvm/nested.c
@@ -1125,6 +1125,52 @@ int kvm_init_nv_sysregs(struct kvm *kvm)
res0 |= HDFGRTR_EL2_nPMSNEVFR_EL1;
set_sysreg_masks(kvm, HDFGRTR_EL2, res0 | HDFGRTR_EL2_RES0, res1);
+ /* HDFG[RW]TR2_EL2 */
+ res0 = res1 = 0;
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR2_EL1, STEP, IMP))
+ res0 |= HDFGRTR2_EL2_nMDSTEPOP_EL1;
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR0_EL1, ExtTrcBuff, IMP))
+ res0 |= HDFGRTR2_EL2_nTRBMPAM_EL1;
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, ITE, IMP))
+ res0 |= HDFGRTR2_EL2_nTRCITECR_EL1;
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR0_EL1, PMSVer, V1P4))
+ res0 |= HDFGRTR2_EL2_nPMSDSFR_EL1;
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, SPMU, IMP))
+ res0 |= (HDFGRTR2_EL2_nSPMDEVAFF_EL1 | HDFGRTR2_EL2_nSPMID |
+ HDFGRTR2_EL2_nSPMSCR_EL1 | HDFGRTR2_EL2_nSPMACCESSR_EL1 |
+ HDFGRTR2_EL2_nSPMCR_EL0 | HDFGRTR2_EL2_nSPMOVS |
+ HDFGRTR2_EL2_nSPMINTEN | HDFGRTR2_EL2_nSPMCNTEN |
+ HDFGRTR2_EL2_nSPMSELR_EL0 | HDFGRTR2_EL2_nSPMEVTYPERn_EL0 |
+ HDFGRTR2_EL2_nSPMEVCNTRn_EL0);
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMSS, IMP))
+ res0 |= (HDFGRTR2_EL2_nPMSSCR_EL1 | HDFGRTR2_EL2_nPMSSDATA);
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, DebugVer, V8P9))
+ res0 |= HDFGRTR2_EL2_nMDSELR_EL1;
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMUVer, V3P9))
+ res0 |= HDFGRTR2_EL2_nPMUACR_EL1;
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, PMICNTR, IMP))
+ res0 |= (HDFGRTR2_EL2_nPMICFILTR_EL0 | HDFGRTR2_EL2_nPMICNTR_EL0);
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, SEBEP, IMP))
+ res0 |= HDFGRTR2_EL2_nPMIAR_EL1;
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, EBEP, IMP) &&
+ !kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMSS, IMP))
+ res0 |= HDFGRTR2_EL2_nPMECR_EL1;
+ set_sysreg_masks(kvm, HDFGRTR2_EL2, res0 | HDFGRTR2_EL2_RES0, res1 | HDFGRTR2_EL2_RES1);
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMUVer, V3P9))
+ res0 |= HDFGWTR2_EL2_nPMZR_EL0;
+ set_sysreg_masks(kvm, HDFGWTR2_EL2, res0 | HDFGWTR2_EL2_RES0, res1 | HDFGWTR2_EL2_RES1);
+
+ /* HFG[R|W]TR2_EL2 */
+ res0 = res1 = 0;
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR1_EL1, THE, IMP))
+ res0 |= HFGRTR2_EL2_nRCWSMASK_EL1;
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR0_EL1, RAS, V2))
+ res0 |= HFGRTR2_EL2_nERXGSR_EL1;
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR1_EL1, PFAR, IMP))
+ res0 |= HFGRTR2_EL2_nPFAR_EL1;
+ set_sysreg_masks(kvm, HFGRTR2_EL2, res0 | HFGRTR2_EL2_RES0, res1 | HFGRTR2_EL2_RES1);
+ set_sysreg_masks(kvm, HFGWTR2_EL2, res0 | HFGWTR2_EL2_RES0, res1 | HFGWTR2_EL2_RES1);
+
/* Reuse the bits from the read-side and add the write-specific stuff */
if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMUVer, IMP))
res0 |= (HDFGWTR_EL2_PMCR_EL0 | HDFGWTR_EL2_PMSWINC_EL0);
@@ -1168,6 +1214,12 @@ int kvm_init_nv_sysregs(struct kvm *kvm)
res0 |= HFGITR_EL2_ATS1E1A;
set_sysreg_masks(kvm, HFGITR_EL2, res0, res1);
+ /* HFGITR2_EL2 */
+ res0 = HFGITR2_EL2_RES0;
+ res1 = HFGITR2_EL2_RES1;
+ set_sysreg_masks(kvm, HFGITR2_EL2, res0 | HFGITR2_EL2_RES0, res1 | HFGITR2_EL2_RES1);
+ set_sysreg_masks(kvm, HFGITR2_EL2, res0 | HFGITR2_EL2_RES0, res1 | HFGITR2_EL2_RES1);
+
/* HAFGRTR_EL2 - not a lot to see here */
res0 = HAFGRTR_EL2_RES0;
res1 = HAFGRTR_EL2_RES1;
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index 778731491f79..4fbe6c6731c6 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -4723,6 +4723,65 @@ void kvm_calculate_traps(struct kvm_vcpu *vcpu)
kvm->arch.fgu[HAFGRTR_GROUP] |= ~(HAFGRTR_EL2_RES0 |
HAFGRTR_EL2_RES1);
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR2_EL1, STEP, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nMDSTEPOP_EL1;
+
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR0_EL1, ExtTrcBuff, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nTRBMPAM_EL1;
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, ITE, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nTRCITECR_EL1;
+
+ if (!kvm_has_feat_enum(kvm, ID_AA64DFR0_EL1, PMSVer, V1P4))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMSDSFR_EL1;
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, SPMU, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nSPMDEVAFF_EL1 |
+ HDFGRTR2_EL2_nSPMID |
+ HDFGRTR2_EL2_nSPMSCR_EL1 |
+ HDFGRTR2_EL2_nSPMACCESSR_EL1 |
+ HDFGRTR2_EL2_nSPMCR_EL0 |
+ HDFGRTR2_EL2_nSPMOVS |
+ HDFGRTR2_EL2_nSPMINTEN |
+ HDFGRTR2_EL2_nSPMCNTEN |
+ HDFGRTR2_EL2_nSPMSELR_EL0 |
+ HDFGRTR2_EL2_nSPMEVTYPERn_EL0 |
+ HDFGRTR2_EL2_nSPMEVCNTRn_EL0;
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMSS, IMP)) {
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMSSCR_EL1;
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMSSDATA;
+ }
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, DebugVer, V8P9))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nMDSELR_EL1;
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMUVer, V3P9)) {
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMUACR_EL1;
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGWTR2_EL2_nPMZR_EL0;
+ }
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, PMICNTR, IMP)) {
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMICFILTR_EL0;
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMICNTR_EL0;
+ }
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR0_EL1, SEBEP, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMIAR_EL1;
+
+ if (!kvm_has_feat(kvm, ID_AA64DFR1_EL1, EBEP, IMP) &&
+ !kvm_has_feat(kvm, ID_AA64DFR0_EL1, PMSS, IMP))
+ kvm->arch.fgu[HDFGRTR2_GROUP] |= HDFGRTR2_EL2_nPMECR_EL1;
+
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR1_EL1, THE, IMP))
+ kvm->arch.fgu[HFGRTR2_GROUP] |= HFGRTR2_EL2_nRCWSMASK_EL1;
+
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR0_EL1, RAS, V2))
+ kvm->arch.fgu[HFGRTR2_GROUP] |= HFGRTR2_EL2_nERXGSR_EL1;
+
+ if (!kvm_has_feat_enum(kvm, ID_AA64PFR1_EL1, PFAR, IMP))
+ kvm->arch.fgu[HFGRTR2_GROUP] |= HFGRTR2_EL2_nPFAR_EL1;
+
set_bit(KVM_ARCH_FLAG_FGU_INITIALIZED, &kvm->arch.flags);
out:
mutex_unlock(&kvm->arch.config_lock);
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (45 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 46/47] KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling Anshuman Khandual
@ 2024-10-01 2:43 ` Anshuman Khandual
2024-10-01 14:46 ` Oliver Upton
2024-10-02 15:52 ` [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Mark Brown
47 siblings, 1 reply; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-01 2:43 UTC (permalink / raw)
To: linux-kernel, kvmarm, linux-arm-kernel, maz
Cc: Anshuman Khandual, Oliver Upton, James Morse, Suzuki K Poulose,
Catalin Marinas, Will Deacon, Mark Brown
Describe remaining MDCR_EL2 register, and associate that with all FEAT_FGT2
exposed system registers it allows to trap.
Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: James Morse <james.morse@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: kvmarm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
---
arch/arm64/include/asm/kvm_arm.h | 2 +
arch/arm64/include/asm/kvm_host.h | 2 +
arch/arm64/kvm/emulate-nested.c | 262 ++++++++++++++++++++++++++++++
3 files changed, 266 insertions(+)
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 449bccffd529..850fac9a7840 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -323,6 +323,7 @@
#define MDCR_EL2_TTRF (UL(1) << 19)
#define MDCR_EL2_HPMD (UL(1) << 17)
#define MDCR_EL2_TPMS (UL(1) << 14)
+#define MDCR_EL2_EnSPM (UL(1) << 15)
#define MDCR_EL2_E2PB_MASK (UL(0x3))
#define MDCR_EL2_E2PB_SHIFT (UL(12))
#define MDCR_EL2_TDRA (UL(1) << 11)
@@ -333,6 +334,7 @@
#define MDCR_EL2_TPM (UL(1) << 6)
#define MDCR_EL2_TPMCR (UL(1) << 5)
#define MDCR_EL2_HPMN_MASK (UL(0x1F))
+#define MDCR_EL2_HPMN_SHIFT (UL(0))
#define MDCR_EL2_RES0 (GENMASK(63, 37) | \
GENMASK(35, 30) | \
GENMASK(25, 24) | \
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index ca98f6d810c2..802ad88235af 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -433,6 +433,7 @@ enum vcpu_sysreg {
PMINTENSET_EL1, /* Interrupt Enable Set Register */
PMOVSSET_EL0, /* Overflow Flag Status Set Register */
PMUSERENR_EL0, /* User Enable Register */
+ SPMSELR_EL0, /* System PMU Select Register */
/* Pointer Authentication Registers in a strict increasing order. */
APIAKEYLO_EL1,
@@ -491,6 +492,7 @@ enum vcpu_sysreg {
CNTHP_CVAL_EL2,
CNTHV_CTL_EL2,
CNTHV_CVAL_EL2,
+ SPMACCESSR_EL2, /* System PMU Access Register */
__VNCR_START__, /* Any VNCR-capable reg goes after this point */
diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-nested.c
index f22a5f10ffe5..d66722c71b45 100644
--- a/arch/arm64/kvm/emulate-nested.c
+++ b/arch/arm64/kvm/emulate-nested.c
@@ -75,6 +75,7 @@ enum cgt_group_id {
CGT_MDCR_TDRA,
CGT_MDCR_E2PB,
CGT_MDCR_TPMS,
+ CGT_MDCR_EnSPM,
CGT_MDCR_TTRF,
CGT_MDCR_E2TB,
CGT_MDCR_TDCC,
@@ -120,6 +121,38 @@ enum cgt_group_id {
__COMPLEX_CONDITIONS__,
CGT_CNTHCTL_EL1PCTEN = __COMPLEX_CONDITIONS__,
CGT_CNTHCTL_EL1PTEN,
+ CGT_SPMSEL_SPMACCESS,
+ CGT_CNTR_ACCESSIBLE_0,
+ CGT_CNTR_ACCESSIBLE_1,
+ CGT_CNTR_ACCESSIBLE_2,
+ CGT_CNTR_ACCESSIBLE_3,
+ CGT_CNTR_ACCESSIBLE_4,
+ CGT_CNTR_ACCESSIBLE_5,
+ CGT_CNTR_ACCESSIBLE_6,
+ CGT_CNTR_ACCESSIBLE_7,
+ CGT_CNTR_ACCESSIBLE_8,
+ CGT_CNTR_ACCESSIBLE_9,
+ CGT_CNTR_ACCESSIBLE_10,
+ CGT_CNTR_ACCESSIBLE_11,
+ CGT_CNTR_ACCESSIBLE_12,
+ CGT_CNTR_ACCESSIBLE_13,
+ CGT_CNTR_ACCESSIBLE_14,
+ CGT_CNTR_ACCESSIBLE_15,
+ CGT_CNTR_ACCESSIBLE_16,
+ CGT_CNTR_ACCESSIBLE_17,
+ CGT_CNTR_ACCESSIBLE_18,
+ CGT_CNTR_ACCESSIBLE_19,
+ CGT_CNTR_ACCESSIBLE_20,
+ CGT_CNTR_ACCESSIBLE_21,
+ CGT_CNTR_ACCESSIBLE_22,
+ CGT_CNTR_ACCESSIBLE_23,
+ CGT_CNTR_ACCESSIBLE_24,
+ CGT_CNTR_ACCESSIBLE_25,
+ CGT_CNTR_ACCESSIBLE_26,
+ CGT_CNTR_ACCESSIBLE_27,
+ CGT_CNTR_ACCESSIBLE_28,
+ CGT_CNTR_ACCESSIBLE_29,
+ CGT_CNTR_ACCESSIBLE_30,
CGT_CPTR_TTA,
@@ -344,6 +377,12 @@ static const struct trap_bits coarse_trap_bits[] = {
.mask = MDCR_EL2_TPMS,
.behaviour = BEHAVE_FORWARD_ANY,
},
+ [CGT_MDCR_EnSPM] = {
+ .index = MDCR_EL2,
+ .value = MDCR_EL2_EnSPM,
+ .mask = MDCR_EL2_EnSPM,
+ .behaviour = BEHAVE_FORWARD_ANY,
+ },
[CGT_MDCR_TTRF] = {
.index = MDCR_EL2,
.value = MDCR_EL2_TTRF,
@@ -498,6 +537,65 @@ static enum trap_behaviour check_cptr_tta(struct kvm_vcpu *vcpu)
return BEHAVE_HANDLE_LOCALLY;
}
+static enum trap_behaviour check_spmsel_spmaccess(struct kvm_vcpu *vcpu)
+{
+ u64 spmaccessr_el2, spmselr_el2;
+ int syspmusel;
+
+ if (__vcpu_sys_reg(vcpu, MDCR_EL2) & MDCR_EL2_EnSPM) {
+ spmselr_el2 = __vcpu_sys_reg(vcpu, SPMSELR_EL0);
+ spmaccessr_el2 = __vcpu_sys_reg(vcpu, SPMACCESSR_EL2);
+ syspmusel = FIELD_GET(SPMSELR_EL0_SYSPMUSEL_MASK, spmselr_el2);
+
+ if (((spmaccessr_el2 >> (syspmusel * 2)) & 0x3) == 0x0)
+ return BEHAVE_FORWARD_ANY;
+ }
+ return BEHAVE_HANDLE_LOCALLY;
+}
+
+#define check_cntr_accessible(num) \
+static enum trap_behaviour check_cntr_accessible_##num(struct kvm_vcpu *vcpu) \
+{ \
+ u64 mdcr_el2 = __vcpu_sys_reg(vcpu, MDCR_EL2); \
+ int cntr = FIELD_GET(MDCR_EL2_HPMN_MASK, mdcr_el2); \
+ \
+ if (num >= cntr) \
+ return BEHAVE_FORWARD_ANY; \
+ return BEHAVE_HANDLE_LOCALLY; \
+} \
+
+check_cntr_accessible(0)
+check_cntr_accessible(1)
+check_cntr_accessible(2)
+check_cntr_accessible(3)
+check_cntr_accessible(4)
+check_cntr_accessible(5)
+check_cntr_accessible(6)
+check_cntr_accessible(7)
+check_cntr_accessible(8)
+check_cntr_accessible(9)
+check_cntr_accessible(10)
+check_cntr_accessible(11)
+check_cntr_accessible(12)
+check_cntr_accessible(13)
+check_cntr_accessible(14)
+check_cntr_accessible(15)
+check_cntr_accessible(16)
+check_cntr_accessible(17)
+check_cntr_accessible(18)
+check_cntr_accessible(19)
+check_cntr_accessible(20)
+check_cntr_accessible(21)
+check_cntr_accessible(22)
+check_cntr_accessible(23)
+check_cntr_accessible(24)
+check_cntr_accessible(25)
+check_cntr_accessible(26)
+check_cntr_accessible(27)
+check_cntr_accessible(28)
+check_cntr_accessible(29)
+check_cntr_accessible(30)
+
#define CCC(id, fn) \
[id - __COMPLEX_CONDITIONS__] = fn
@@ -505,6 +603,38 @@ static const complex_condition_check ccc[] = {
CCC(CGT_CNTHCTL_EL1PCTEN, check_cnthctl_el1pcten),
CCC(CGT_CNTHCTL_EL1PTEN, check_cnthctl_el1pten),
CCC(CGT_CPTR_TTA, check_cptr_tta),
+ CCC(CGT_SPMSEL_SPMACCESS, check_spmsel_spmaccess),
+ CCC(CGT_CNTR_ACCESSIBLE_0, check_cntr_accessible_0),
+ CCC(CGT_CNTR_ACCESSIBLE_1, check_cntr_accessible_1),
+ CCC(CGT_CNTR_ACCESSIBLE_2, check_cntr_accessible_2),
+ CCC(CGT_CNTR_ACCESSIBLE_3, check_cntr_accessible_3),
+ CCC(CGT_CNTR_ACCESSIBLE_4, check_cntr_accessible_4),
+ CCC(CGT_CNTR_ACCESSIBLE_5, check_cntr_accessible_5),
+ CCC(CGT_CNTR_ACCESSIBLE_6, check_cntr_accessible_6),
+ CCC(CGT_CNTR_ACCESSIBLE_7, check_cntr_accessible_7),
+ CCC(CGT_CNTR_ACCESSIBLE_8, check_cntr_accessible_8),
+ CCC(CGT_CNTR_ACCESSIBLE_9, check_cntr_accessible_9),
+ CCC(CGT_CNTR_ACCESSIBLE_10, check_cntr_accessible_10),
+ CCC(CGT_CNTR_ACCESSIBLE_11, check_cntr_accessible_11),
+ CCC(CGT_CNTR_ACCESSIBLE_12, check_cntr_accessible_12),
+ CCC(CGT_CNTR_ACCESSIBLE_13, check_cntr_accessible_13),
+ CCC(CGT_CNTR_ACCESSIBLE_14, check_cntr_accessible_14),
+ CCC(CGT_CNTR_ACCESSIBLE_15, check_cntr_accessible_15),
+ CCC(CGT_CNTR_ACCESSIBLE_16, check_cntr_accessible_16),
+ CCC(CGT_CNTR_ACCESSIBLE_17, check_cntr_accessible_17),
+ CCC(CGT_CNTR_ACCESSIBLE_18, check_cntr_accessible_18),
+ CCC(CGT_CNTR_ACCESSIBLE_19, check_cntr_accessible_19),
+ CCC(CGT_CNTR_ACCESSIBLE_20, check_cntr_accessible_20),
+ CCC(CGT_CNTR_ACCESSIBLE_21, check_cntr_accessible_21),
+ CCC(CGT_CNTR_ACCESSIBLE_22, check_cntr_accessible_22),
+ CCC(CGT_CNTR_ACCESSIBLE_23, check_cntr_accessible_23),
+ CCC(CGT_CNTR_ACCESSIBLE_24, check_cntr_accessible_24),
+ CCC(CGT_CNTR_ACCESSIBLE_25, check_cntr_accessible_25),
+ CCC(CGT_CNTR_ACCESSIBLE_26, check_cntr_accessible_26),
+ CCC(CGT_CNTR_ACCESSIBLE_27, check_cntr_accessible_27),
+ CCC(CGT_CNTR_ACCESSIBLE_28, check_cntr_accessible_28),
+ CCC(CGT_CNTR_ACCESSIBLE_29, check_cntr_accessible_29),
+ CCC(CGT_CNTR_ACCESSIBLE_30, check_cntr_accessible_30),
};
/*
@@ -912,6 +1042,7 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
SR_TRAP(SYS_ERXPFGF_EL1, CGT_HCR_nFIEN),
SR_TRAP(SYS_ERXPFGCTL_EL1, CGT_HCR_nFIEN),
SR_TRAP(SYS_ERXPFGCDN_EL1, CGT_HCR_nFIEN),
+
SR_TRAP(SYS_PMCR_EL0, CGT_MDCR_TPM_TPMCR),
SR_TRAP(SYS_PMCNTENSET_EL0, CGT_MDCR_TPM),
SR_TRAP(SYS_PMCNTENCLR_EL0, CGT_MDCR_TPM),
@@ -1085,6 +1216,7 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
SR_TRAP(SYS_PMSIRR_EL1, CGT_MDCR_TPMS),
SR_TRAP(SYS_PMSLATFR_EL1, CGT_MDCR_TPMS),
SR_TRAP(SYS_PMSNEVFR_EL1, CGT_MDCR_TPMS),
+
SR_TRAP(SYS_TRFCR_EL1, CGT_MDCR_TTRF),
SR_TRAP(SYS_TRBBASER_EL1, CGT_MDCR_E2TB),
SR_TRAP(SYS_TRBLIMITR_EL1, CGT_MDCR_E2TB),
@@ -1092,6 +1224,136 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
SR_TRAP(SYS_TRBPTR_EL1, CGT_MDCR_E2TB),
SR_TRAP(SYS_TRBSR_EL1, CGT_MDCR_E2TB),
SR_TRAP(SYS_TRBTRG_EL1, CGT_MDCR_E2TB),
+
+ SR_TRAP(SYS_MDSTEPOP_EL1, CGT_MDCR_TDE_TDA),
+ SR_TRAP(SYS_TRBMPAM_EL1, CGT_MDCR_E2TB),
+ SR_TRAP(SYS_PMSDSFR_EL1, CGT_MDCR_TPMS),
+
+ SR_TRAP(SYS_SPMDEVAFF_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMCGCR0_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMCGCR1_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMIIDR_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMDEVARCH_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMCFGR_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMSCR_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMACCESSR_EL1, CGT_MDCR_EnSPM),
+ SR_TRAP(SYS_SPMCR_EL0, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMOVSCLR_EL0, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMOVSSET_EL0, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMINTENCLR_EL1, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMINTENSET_EL1, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMCNTENCLR_EL0, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMCNTENSET_EL0, CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMSELR_EL0, CGT_MDCR_EnSPM),
+
+ SR_TRAP(SYS_SPMEVTYPER_EL0(0), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(1), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(2), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(3), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(4), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(5), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(6), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(7), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(8), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(9), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(10), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(11), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(12), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(13), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(14), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVTYPER_EL0(15), CGT_SPMSEL_SPMACCESS),
+
+ SR_TRAP(SYS_SPMEVFILTR_EL0(0), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(1), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(2), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(3), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(4), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(5), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(6), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(7), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(8), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(9), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(10), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(11), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(12), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(13), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(14), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILTR_EL0(15), CGT_SPMSEL_SPMACCESS),
+
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(0), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(1), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(2), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(3), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(4), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(5), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(6), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(7), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(8), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(9), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(10), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(11), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(12), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(13), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(14), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVFILT2R_EL0(15), CGT_SPMSEL_SPMACCESS),
+
+ SR_TRAP(SYS_SPMEVCNTR_EL0(0), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(1), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(2), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(3), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(4), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(5), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(6), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(7), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(8), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(9), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(10), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(11), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(12), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(13), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(14), CGT_SPMSEL_SPMACCESS),
+ SR_TRAP(SYS_SPMEVCNTR_EL0(15), CGT_SPMSEL_SPMACCESS),
+
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(0), CGT_CNTR_ACCESSIBLE_0),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(1), CGT_CNTR_ACCESSIBLE_1),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(2), CGT_CNTR_ACCESSIBLE_2),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(3), CGT_CNTR_ACCESSIBLE_3),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(4), CGT_CNTR_ACCESSIBLE_4),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(5), CGT_CNTR_ACCESSIBLE_5),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(6), CGT_CNTR_ACCESSIBLE_6),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(7), CGT_CNTR_ACCESSIBLE_7),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(8), CGT_CNTR_ACCESSIBLE_8),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(9), CGT_CNTR_ACCESSIBLE_9),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(10), CGT_CNTR_ACCESSIBLE_10),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(11), CGT_CNTR_ACCESSIBLE_11),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(12), CGT_CNTR_ACCESSIBLE_12),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(13), CGT_CNTR_ACCESSIBLE_13),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(14), CGT_CNTR_ACCESSIBLE_14),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(15), CGT_CNTR_ACCESSIBLE_15),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(16), CGT_CNTR_ACCESSIBLE_16),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(17), CGT_CNTR_ACCESSIBLE_17),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(18), CGT_CNTR_ACCESSIBLE_18),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(19), CGT_CNTR_ACCESSIBLE_19),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(20), CGT_CNTR_ACCESSIBLE_20),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(21), CGT_CNTR_ACCESSIBLE_21),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(22), CGT_CNTR_ACCESSIBLE_22),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(23), CGT_CNTR_ACCESSIBLE_23),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(24), CGT_CNTR_ACCESSIBLE_24),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(25), CGT_CNTR_ACCESSIBLE_25),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(26), CGT_CNTR_ACCESSIBLE_26),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(27), CGT_CNTR_ACCESSIBLE_27),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(28), CGT_CNTR_ACCESSIBLE_28),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(29), CGT_CNTR_ACCESSIBLE_29),
+ SR_TRAP(SYS_PMEVCNTSVR_EL1(30), CGT_CNTR_ACCESSIBLE_30),
+
+ SR_TRAP(SYS_MDSELR_EL1, CGT_MDCR_TDE_TDA),
+ SR_TRAP(SYS_PMUACR_EL1, CGT_MDCR_TPM),
+ SR_TRAP(SYS_PMICFILTR_EL0, CGT_MDCR_TPM),
+ SR_TRAP(SYS_PMICNTR_EL0, CGT_MDCR_TPM),
+ SR_TRAP(SYS_PMIAR_EL1, CGT_MDCR_TPM),
+ SR_TRAP(SYS_PMECR_EL1, CGT_MDCR_TPM),
+ SR_TRAP(SYS_PMZR_EL0, CGT_MDCR_TPM),
+
SR_TRAP(SYS_CPACR_EL1, CGT_CPTR_TCPAC),
SR_TRAP(SYS_AMUSERENR_EL0, CGT_CPTR_TAM),
SR_TRAP(SYS_AMCFGR_EL0, CGT_CPTR_TAM),
--
2.25.1
^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
2024-10-01 2:43 ` [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers Anshuman Khandual
@ 2024-10-01 14:46 ` Oliver Upton
2024-10-03 4:16 ` Anshuman Khandual
0 siblings, 1 reply; 57+ messages in thread
From: Oliver Upton @ 2024-10-01 14:46 UTC (permalink / raw)
To: Anshuman Khandual
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, James Morse,
Suzuki K Poulose, Catalin Marinas, Will Deacon, Mark Brown
Hi Anshuman,
On Tue, Oct 01, 2024 at 08:13:56AM +0530, Anshuman Khandual wrote:
> +#define check_cntr_accessible(num) \
> +static enum trap_behaviour check_cntr_accessible_##num(struct kvm_vcpu *vcpu) \
> +{ \
> + u64 mdcr_el2 = __vcpu_sys_reg(vcpu, MDCR_EL2); \
> + int cntr = FIELD_GET(MDCR_EL2_HPMN_MASK, mdcr_el2); \
> + \
> + if (num >= cntr) \
> + return BEHAVE_FORWARD_ANY; \
> + return BEHAVE_HANDLE_LOCALLY; \
> +} \
> +
> +check_cntr_accessible(0)
> +check_cntr_accessible(1)
> +check_cntr_accessible(2)
> +check_cntr_accessible(3)
> +check_cntr_accessible(4)
> +check_cntr_accessible(5)
> +check_cntr_accessible(6)
> +check_cntr_accessible(7)
> +check_cntr_accessible(8)
> +check_cntr_accessible(9)
> +check_cntr_accessible(10)
> +check_cntr_accessible(11)
> +check_cntr_accessible(12)
> +check_cntr_accessible(13)
> +check_cntr_accessible(14)
> +check_cntr_accessible(15)
> +check_cntr_accessible(16)
> +check_cntr_accessible(17)
> +check_cntr_accessible(18)
> +check_cntr_accessible(19)
> +check_cntr_accessible(20)
> +check_cntr_accessible(21)
> +check_cntr_accessible(22)
> +check_cntr_accessible(23)
> +check_cntr_accessible(24)
> +check_cntr_accessible(25)
> +check_cntr_accessible(26)
> +check_cntr_accessible(27)
> +check_cntr_accessible(28)
> +check_cntr_accessible(29)
> +check_cntr_accessible(30)
I'd rather we not use templates for this problem. It bloats the kernel text
as well as the trap encoding space.
I have a patch in the nested PMU series that uses a single complex trap
ID to evaluate HPMN, and derives the index from ESR_EL2. I think it
could also be extended to the PMEVCNTSVR<n> range as well.
Also, keep in mind that the HPMN trap is annoying since it affects Host
EL0 in addition to 'guest' ELs.
[*]: https://lore.kernel.org/kvmarm/20240827002235.1753237-9-oliver.upton@linux.dev/
--
Thanks,
Oliver
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1
2024-10-01 2:43 ` [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1 Anshuman Khandual
@ 2024-10-02 15:48 ` Mark Brown
2024-10-03 3:48 ` Anshuman Khandual
0 siblings, 1 reply; 57+ messages in thread
From: Mark Brown @ 2024-10-02 15:48 UTC (permalink / raw)
To: Anshuman Khandual
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, Oliver Upton,
James Morse, Suzuki K Poulose, Catalin Marinas, Will Deacon
[-- Attachment #1: Type: text/plain, Size: 520 bytes --]
On Tue, Oct 01, 2024 at 08:13:13AM +0530, Anshuman Khandual wrote:
> This adds register fields for ID_AA64DFR2_EL1 as per the definitions based
> on DDI0601 2024-06.
DDI0601 2024-09 has now been released...
> +Sysreg ID_AA64DFR2_EL1 3 0 0 5 2
> +Res0 63:8
> +UnsignedEnum 7:4 BWE
> + 0b0000 NI
> + 0b0001 IMP
> + 0b0010 IMP_WPT
Could equally name that BWE2 since this is for FEAT_BWE2. I'm OK either
way I think, with a slight preference for BWE2 I think. Either way:
Reviewed-by: Mark Brown <broonie@kernel.org>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
` (46 preceding siblings ...)
2024-10-01 2:43 ` [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers Anshuman Khandual
@ 2024-10-02 15:52 ` Mark Brown
2024-10-03 3:54 ` Anshuman Khandual
47 siblings, 1 reply; 57+ messages in thread
From: Mark Brown @ 2024-10-02 15:52 UTC (permalink / raw)
To: Anshuman Khandual
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, Oliver Upton,
James Morse, Suzuki K Poulose, Catalin Marinas, Will Deacon
[-- Attachment #1: Type: text/plain, Size: 411 bytes --]
On Tue, Oct 01, 2024 at 08:13:09AM +0530, Anshuman Khandual wrote:
> This series enables fine grained undefined for FEAT_FGT2 managed registers
> via adding their respective FGT and CGT trap configuration. But first this
> adds many system register definitions in tools/sysreg, which are required
> there after.
One top level comment: these are updates for DDI0601 2024-06 but we've
now got 2024-09 available.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2
2024-10-01 2:43 ` [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2 Anshuman Khandual
@ 2024-10-02 16:09 ` Mark Brown
0 siblings, 0 replies; 57+ messages in thread
From: Mark Brown @ 2024-10-02 16:09 UTC (permalink / raw)
To: Anshuman Khandual
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, Oliver Upton,
James Morse, Suzuki K Poulose, Catalin Marinas, Will Deacon
[-- Attachment #1: Type: text/plain, Size: 235 bytes --]
On Tue, Oct 01, 2024 at 08:13:15AM +0530, Anshuman Khandual wrote:
> This adds register fields for HDFGWTR2_EL2 as per the definitions based
> on DDI0601 2024-06.
Reviewed-by: Mark Brown <broonie@kernel.org>
modulo the old version.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1
2024-10-02 15:48 ` Mark Brown
@ 2024-10-03 3:48 ` Anshuman Khandual
0 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-03 3:48 UTC (permalink / raw)
To: Mark Brown
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, Oliver Upton,
James Morse, Suzuki K Poulose, Catalin Marinas, Will Deacon
On 10/2/24 21:18, Mark Brown wrote:
> On Tue, Oct 01, 2024 at 08:13:13AM +0530, Anshuman Khandual wrote:
>
>> This adds register fields for ID_AA64DFR2_EL1 as per the definitions based
>> on DDI0601 2024-06.
>
> DDI0601 2024-09 has now been released...
>
>> +Sysreg ID_AA64DFR2_EL1 3 0 0 5 2
>> +Res0 63:8
>> +UnsignedEnum 7:4 BWE
>> + 0b0000 NI
>> + 0b0001 IMP
>> + 0b0010 IMP_WPT
>
> Could equally name that BWE2 since this is for FEAT_BWE2. I'm OK either
> way I think, with a slight preference for BWE2 I think. Either way:
Sure, will change this as s/IMP_WPT/BWE2 instead.
>
> Reviewed-by: Mark Brown <broonie@kernel.org>
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers
2024-10-02 15:52 ` [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Mark Brown
@ 2024-10-03 3:54 ` Anshuman Khandual
0 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-03 3:54 UTC (permalink / raw)
To: Mark Brown
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, Oliver Upton,
James Morse, Suzuki K Poulose, Catalin Marinas, Will Deacon
On 10/2/24 21:22, Mark Brown wrote:
> On Tue, Oct 01, 2024 at 08:13:09AM +0530, Anshuman Khandual wrote:
>> This series enables fine grained undefined for FEAT_FGT2 managed registers
>> via adding their respective FGT and CGT trap configuration. But first this
>> adds many system register definitions in tools/sysreg, which are required
>> there after.
>
> One top level comment: these are updates for DDI0601 2024-06 but we've
> now got 2024-09 available.
Right, guess this new release i.e 2024-09 just happened recently because
IIRC version 2024-06 was marked as the latest until last weekend. I will
revisit all the above register definitions for 2024-09 release update and
will also update their commit messages as required.
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
2024-10-01 14:46 ` Oliver Upton
@ 2024-10-03 4:16 ` Anshuman Khandual
2024-10-04 5:01 ` Oliver Upton
0 siblings, 1 reply; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-03 4:16 UTC (permalink / raw)
To: Oliver Upton
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, James Morse,
Suzuki K Poulose, Catalin Marinas, Will Deacon, Mark Brown
On 10/1/24 20:16, Oliver Upton wrote:
> Hi Anshuman,
>
> On Tue, Oct 01, 2024 at 08:13:56AM +0530, Anshuman Khandual wrote:
>> +#define check_cntr_accessible(num) \
>> +static enum trap_behaviour check_cntr_accessible_##num(struct kvm_vcpu *vcpu) \
>> +{ \
>> + u64 mdcr_el2 = __vcpu_sys_reg(vcpu, MDCR_EL2); \
>> + int cntr = FIELD_GET(MDCR_EL2_HPMN_MASK, mdcr_el2); \
>> + \
>> + if (num >= cntr) \
>> + return BEHAVE_FORWARD_ANY; \
>> + return BEHAVE_HANDLE_LOCALLY; \
>> +} \
>> +
>> +check_cntr_accessible(0)
>> +check_cntr_accessible(1)
>> +check_cntr_accessible(2)
>> +check_cntr_accessible(3)
>> +check_cntr_accessible(4)
>> +check_cntr_accessible(5)
>> +check_cntr_accessible(6)
>> +check_cntr_accessible(7)
>> +check_cntr_accessible(8)
>> +check_cntr_accessible(9)
>> +check_cntr_accessible(10)
>> +check_cntr_accessible(11)
>> +check_cntr_accessible(12)
>> +check_cntr_accessible(13)
>> +check_cntr_accessible(14)
>> +check_cntr_accessible(15)
>> +check_cntr_accessible(16)
>> +check_cntr_accessible(17)
>> +check_cntr_accessible(18)
>> +check_cntr_accessible(19)
>> +check_cntr_accessible(20)
>> +check_cntr_accessible(21)
>> +check_cntr_accessible(22)
>> +check_cntr_accessible(23)
>> +check_cntr_accessible(24)
>> +check_cntr_accessible(25)
>> +check_cntr_accessible(26)
>> +check_cntr_accessible(27)
>> +check_cntr_accessible(28)
>> +check_cntr_accessible(29)
>> +check_cntr_accessible(30)
>
> I'd rather we not use templates for this problem. It bloats the kernel text
> as well as the trap encoding space.
Alright, fair point.
>
> I have a patch in the nested PMU series that uses a single complex trap
> ID to evaluate HPMN, and derives the index from ESR_EL2. I think it
> could also be extended to the PMEVCNTSVR<n> range as well.
Just for reference - the mentioned complex trap ID function from the
given link below.
static enum trap_behaviour check_mdcr_hpmn(struct kvm_vcpu *vcpu)
{
u32 sysreg = esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu));
u64 mask = kvm_pmu_accessible_counter_mask(vcpu);
unsigned int idx;
switch (sysreg) {
case SYS_PMEVTYPERn_EL0(0) ... SYS_PMEVTYPERn_EL0(30):
case SYS_PMEVCNTRn_EL0(0) ... SYS_PMEVCNTRn_EL0(30):
---------------------------------------------------------------------
Just add the new system register range here ?
+ case SYS_PMEVCNTSVR_EL1(0)... SYS_PMEVCNTSVR_EL1(31):
---------------------------------------------------------------------
idx = (sys_reg_CRm(sysreg) & 0x3) << 3 | sys_reg_Op2(sysreg);
break;
case SYS_PMXEVTYPER_EL0:
case SYS_PMXEVCNTR_EL0:
idx = __vcpu_sys_reg(vcpu, PMSELR_EL0) & ARMV8_PMU_COUNTER_MASK;
break;
default:
/* Someone used this trap helper for something else... */
KVM_BUG_ON(1, vcpu->kvm);
return BEHAVE_HANDLE_LOCALLY;
}
/*
* Programming HPMN=0 is CONSTRAINED UNPREDICTABLE if FEAT_HPMN0 isn't
* implemented. Since KVM's ability to emulate HPMN=0 does not directly
* depend on hardware (all PMU registers are trapped), make the
* implementation choice that all counters are included in the second
* range reserved for EL2/EL3.
*/
return !(BIT(idx) & mask) ? (BEHAVE_FORWARD_RW | BEHAVE_IN_HOST_EL0) :
BEHAVE_HANDLE_LOCALLY;
}
>
> Also, keep in mind that the HPMN trap is annoying since it affects Host
> EL0 in addition to 'guest' ELs.
Does this require any more special handling other than the above complex trap
ID function ?
>
> [*]: https://lore.kernel.org/kvmarm/20240827002235.1753237-9-oliver.upton@linux.dev/
>
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
2024-10-03 4:16 ` Anshuman Khandual
@ 2024-10-04 5:01 ` Oliver Upton
2024-10-21 4:01 ` Anshuman Khandual
0 siblings, 1 reply; 57+ messages in thread
From: Oliver Upton @ 2024-10-04 5:01 UTC (permalink / raw)
To: Anshuman Khandual
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, James Morse,
Suzuki K Poulose, Catalin Marinas, Will Deacon, Mark Brown
On Thu, Oct 03, 2024 at 09:46:08AM +0530, Anshuman Khandual wrote:
> > I have a patch in the nested PMU series that uses a single complex trap
> > ID to evaluate HPMN, and derives the index from ESR_EL2. I think it
> > could also be extended to the PMEVCNTSVR<n> range as well.
>
> Just for reference - the mentioned complex trap ID function from the
> given link below.
>
> static enum trap_behaviour check_mdcr_hpmn(struct kvm_vcpu *vcpu)
> {
> u32 sysreg = esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu));
> u64 mask = kvm_pmu_accessible_counter_mask(vcpu);
> unsigned int idx;
>
>
> switch (sysreg) {
> case SYS_PMEVTYPERn_EL0(0) ... SYS_PMEVTYPERn_EL0(30):
> case SYS_PMEVCNTRn_EL0(0) ... SYS_PMEVCNTRn_EL0(30):
>
> ---------------------------------------------------------------------
> Just add the new system register range here ?
>
> + case SYS_PMEVCNTSVR_EL1(0)... SYS_PMEVCNTSVR_EL1(31):
> ---------------------------------------------------------------------
>
> idx = (sys_reg_CRm(sysreg) & 0x3) << 3 | sys_reg_Op2(sysreg);
> break;
Yes, so long as the layout of encodings matches the established pattern
for value / type registers (I haven't checked this).
> >
> > Also, keep in mind that the HPMN trap is annoying since it affects Host
> > EL0 in addition to 'guest' ELs.
>
> Does this require any more special handling other than the above complex trap
> ID function ?
There's another patch in that series I linked that allows EL2 traps to
describe behavior that takes effect in host EL0.
So I don't believe there's anything in particular related to HPMN that
you need to evaluate. I wanted to mention it because some of the PMU
related traps besides HPMN take effect in Host EL0, so do keep it in
mind.
With that said, I haven't seen an FGT yet that applies to Host EL0.
--
Thanks,
Oliver
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
2024-10-04 5:01 ` Oliver Upton
@ 2024-10-21 4:01 ` Anshuman Khandual
0 siblings, 0 replies; 57+ messages in thread
From: Anshuman Khandual @ 2024-10-21 4:01 UTC (permalink / raw)
To: Oliver Upton
Cc: linux-kernel, kvmarm, linux-arm-kernel, maz, James Morse,
Suzuki K Poulose, Catalin Marinas, Will Deacon, Mark Brown
On 10/4/24 10:31, Oliver Upton wrote:
> On Thu, Oct 03, 2024 at 09:46:08AM +0530, Anshuman Khandual wrote:
>>> I have a patch in the nested PMU series that uses a single complex trap
>>> ID to evaluate HPMN, and derives the index from ESR_EL2. I think it
>>> could also be extended to the PMEVCNTSVR<n> range as well.
>>
>> Just for reference - the mentioned complex trap ID function from the
>> given link below.
>>
>> static enum trap_behaviour check_mdcr_hpmn(struct kvm_vcpu *vcpu)
>> {
>> u32 sysreg = esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu));
>> u64 mask = kvm_pmu_accessible_counter_mask(vcpu);
>> unsigned int idx;
>>
>>
>> switch (sysreg) {
>> case SYS_PMEVTYPERn_EL0(0) ... SYS_PMEVTYPERn_EL0(30):
>> case SYS_PMEVCNTRn_EL0(0) ... SYS_PMEVCNTRn_EL0(30):
>>
>> ---------------------------------------------------------------------
>> Just add the new system register range here ?
>>
>> + case SYS_PMEVCNTSVR_EL1(0)... SYS_PMEVCNTSVR_EL1(31):
>> ---------------------------------------------------------------------
>>
>> idx = (sys_reg_CRm(sysreg) & 0x3) << 3 | sys_reg_Op2(sysreg);
>> break;
>
> Yes, so long as the layout of encodings matches the established pattern
> for value / type registers (I haven't checked this).
>
>>>
>>> Also, keep in mind that the HPMN trap is annoying since it affects Host
>>> EL0 in addition to 'guest' ELs.
>>
>> Does this require any more special handling other than the above complex trap
>> ID function ?
>
> There's another patch in that series I linked that allows EL2 traps to
> describe behavior that takes effect in host EL0.
>
> So I don't believe there's anything in particular related to HPMN that
> you need to evaluate. I wanted to mention it because some of the PMU
> related traps besides HPMN take effect in Host EL0, so do keep it in
> mind.
>
> With that said, I haven't seen an FGT yet that applies to Host EL0.
>
Hello Oliver,
Should I rebase this series on the latest series you have posted earlier this
month [1] ? Also wondering if you had a chance to look into other KVM patches
here ? Please do let me know if they too need any modification.
KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2
KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling
KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers
[1] https://lore.kernel.org/kvmarm/20241007174559.1830205-1-oliver.upton@linux.dev/
- Anshuman
^ permalink raw reply [flat|nested] 57+ messages in thread
end of thread, other threads:[~2024-10-21 4:03 UTC | newest]
Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-01 2:43 [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Anshuman Khandual
2024-10-01 2:43 ` [PATCH 01/47] arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 02/47] arm64/sysreg: Update register fields for ID_AA64DFR0_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 03/47] arm64/sysreg: Update register fields for ID_AA64PFR0_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 04/47] arm64/sysreg: Add register fields for ID_AA64DFR2_EL1 Anshuman Khandual
2024-10-02 15:48 ` Mark Brown
2024-10-03 3:48 ` Anshuman Khandual
2024-10-01 2:43 ` [PATCH 05/47] arm64/sysreg: Add register fields for HDFGRTR2_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 06/47] arm64/sysreg: Add register fields for HDFGWTR2_EL2 Anshuman Khandual
2024-10-02 16:09 ` Mark Brown
2024-10-01 2:43 ` [PATCH 07/47] arm64/sysreg: Add register fields for HFGITR2_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 08/47] arm64/sysreg: Add register fields for HFGRTR2_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 09/47] arm64/sysreg: Add register fields for HFGWTR2_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 10/47] arm64/sysreg: Add register fields for MDSELR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 11/47] arm64/sysreg: Add register fields for PMSIDR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 12/47] arm64/sysreg: Add register fields for TRBIDR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 13/47] arm64/sysreg: Add register fields for TRBMPAM_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 14/47] arm64/sysreg: Add register fields for PMSDSFR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 15/47] arm64/sysreg: Add register fields for SPMDEVAFF_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 16/47] arm64/sysreg: Add register fields for PFAR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 17/47] arm64/sysreg: Add register fields for PMIAR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 18/47] arm64/sysreg: Add register fields for PMECR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 19/47] arm64/sysreg: Add register fields for PMUACR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 20/47] arm64/sysreg: Add register fields for PMCCNTSVR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 21/47] arm64/sysreg: Add register fields for SPMSCR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 22/47] arm64/sysreg: Add register fields for SPMACCESSR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 23/47] arm64/sysreg: Add register fields for PMICNTR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 24/47] arm64/sysreg: Add register fields for PMICFILTR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 25/47] arm64/sysreg: Add register fields for SPMCR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 26/47] arm64/sysreg: Add register fields for SPMOVSCLR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 27/47] arm64/sysreg: Add register fields for SPMOVSSET_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 28/47] arm64/sysreg: Add register fields for SPMINTENCLR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 29/47] arm64/sysreg: Add register fields for SPMINTENSET_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 30/47] arm64/sysreg: Add register fields for SPMCNTENCLR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 31/47] arm64/sysreg: Add register fields for SPMCNTENSET_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 32/47] arm64/sysreg: Add register fields for SPMSELR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 33/47] arm64/sysreg: Add register fields for PMICNTSVR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 34/47] arm64/sysreg: Add register fields for SPMIIDR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 35/47] arm64/sysreg: Add register fields for SPMDEVARCH_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 36/47] arm64/sysreg: Add register fields for SPMCFGR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 37/47] arm64/sysreg: Add register fields for PMSSCR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 38/47] arm64/sysreg: Add register fields for PMZR_EL0 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 39/47] arm64/sysreg: Add register fields for SPMCGCR0_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 40/47] arm64/sysreg: Add register fields for SPMCGCR1_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 41/47] arm64/sysreg: Add register fields for MDSTEPOP_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 42/47] arm64/sysreg: Add register fields for ERXGSR_EL1 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 43/47] arm64/sysreg: Add register fields for SPMACCESSR_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 44/47] arm64/sysreg: Add remaining debug registers affected by HDFGxTR2_EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 45/47] KVM: arm64: nv: Add FEAT_FGT2 registers access from virtual EL2 Anshuman Khandual
2024-10-01 2:43 ` [PATCH 46/47] KVM: arm64: nv: Add FEAT_FGT2 registers based FGU handling Anshuman Khandual
2024-10-01 2:43 ` [PATCH 47/47] KVM: arm64: nv: Add trap forwarding for FEAT_FGT2 described registers Anshuman Khandual
2024-10-01 14:46 ` Oliver Upton
2024-10-03 4:16 ` Anshuman Khandual
2024-10-04 5:01 ` Oliver Upton
2024-10-21 4:01 ` Anshuman Khandual
2024-10-02 15:52 ` [PATCH 00/47] KVM: arm64: Enable FGU (Fine Grained Undefined) for FEAT_FGT2 registers Mark Brown
2024-10-03 3:54 ` Anshuman Khandual
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).