linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [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).