arm64: Add support for FEAT_E2H0, or lack thereof
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest10 patches 17 repliesIn review
- v313 patches 6 repliesSuperseded
- v213 patches 13 repliesSuperseded
Earlier versions · 1
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v1 | 12 patches | 8 replies | Superseded |
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/10 | arm64: Add macro to compose a sysreg field valuearch/ arch/ | +6 | 1 reply | |
| 2/10 | arm64: cpufeatures: Correctly handle signed valuesarch/ arch/ | +57 | 1 reply | |
| 3/10 | arm64: cpufeature: Correctly display signed override valuesarch/ | +2 | 1 reply | |
| 4/10 | arm64: sysreg: Add layout for ID_AA64MMFR4_EL1arch/ | +37 | 3 replies | |
| 5/10 | arm64: cpufeature: Add ID_AA64MMFR4_EL1 handlingarch/ arch/ arch/ | +9 | 1 reply | |
| 6/10 | arm64: cpufeature: Detect HCR_EL2.NV1 being RES0arch/ arch/ | +13 | 5 replies | |
| 7/10 | arm64: Treat HCR_EL2.E2H as RES1 when ID_AA64MMFR4_EL1.E2H0 is negativearch/ | +15 | 1 reply | |
| 8/10 | KVM: arm64: Expose ID_AA64MMFR4_EL1 to guestsarch/ arch/ | +8 | 0 replies | |
| 9/10 | KVM: arm64: Force guest's HCR_EL2.E2H RES1 when NV1 is not implementedarch/ arch/ | +13 | 0 replies | |
| 10/10 | KVM: arm64: Handle Apple M2 as not having HCR_EL2.NV1 implementedarch/ | +17 | 1 reply |
Reviews trailers per patch
All 10 patches have a Reviewed-by or Acked-by.
| Patch | Oliver Upton | Suzuki K Poulose | Catalin Marinas | Miguel Luis | Marek Szyprowski |
|---|---|---|---|---|---|
| 1/10 | R-b | ||||
| 2/10 | R-b | ||||
| 3/10 | R-b | R-b | R-b | ||
| 4/10 | R-b | R-b | R-b | ||
| 5/10 | R-b | R-b | R-b | ||
| 6/10 | R-b | R-b R-b | T-b | ||
| 7/10 | R-b | R-b | |||
| 8/10 | R-b | ||||
| 9/10 | R-b | ||||
| 10/10 | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.
Cover letter [PATCH v4 00/10] arm64: Add support for FEAT_E2H0, or lack thereof
Since ARMv8.1, the architecture has grown the VHE feature, which makes EL2 a superset of EL1. With ARMv9.5 (and retroactively allowed from ARMv8.1), the architecture allows implementations to have VHE as the *only* implemented behaviour, meaning that HCR_EL2.E2H can be implemented as RES1. As a follow-up, HCR_EL2.NV1 can also be implemented as RES0, making the VHE-ness of the architecture recursive.
This has a number of consequences, both at boot time and for KVM, though the changes at that level are pretty minor.
The real meat of this series is on the cpufeature front, as FEAT_E2H0 is a *negative* feature, where 0b1111 (-1) represents E2H being RES1 and 0b1110 (-2) additionally indicates that NV1 is RES0. Fun, isn't it?
As a bonus, a popular crop of non-compliant HW gets promoted as the first batch of non-zero E2H0 users, making things easy for KVM.
This series is a prefix for the NV support.
* From v3 [3]:
- Dropped the capability for E2H being RES1
- Dropped the MIDR-based IDreg override
- Rebased on 6.8-rc1
* From v2 [2]:
- Moved some SYS_FIELD_VALUE() usage to the correct patch
- Fixed a couple of spelling mistakes
- Picked RBs from Suzuki (thanks!)
* From v1 [1]:
- Added a SYS_FIELD_VALUE() helper to handle the concatenation of various fields
- Only test for the top bit of ID_AA64MMFR4_EL1.E2H0 to decide whether HCR_EL2.E2H is RES1.
- Picked RBs from Oliver (thanks!)
- Rebased on 6.7-rc2
[1] https://lore.kernel.org/r/[email protected]
[2] https://lore.kernel.org/r/[email protected]
[3] https://lore.kernel.org/r/[email protected]
Marc Zyngier (10):
arm64: Add macro to compose a sysreg field value
arm64: cpufeatures: Correctly handle signed values
arm64: cpufeature: Correctly display signed override values
arm64: sysreg: Add layout for ID_AA64MMFR4_EL1
arm64: cpufeature: Add ID_AA64MMFR4_EL1 handling
arm64: cpufeature: Detect HCR_EL2.NV1 being RES0
arm64: Treat HCR_EL2.E2H as RES1 when ID_AA64MMFR4_EL1.E2H0 is
negative
KVM: arm64: Expose ID_AA64MMFR4_EL1 to guests
KVM: arm64: Force guest's HCR_EL2.E2H RES1 when NV1 is not implemented
KVM: arm64: Handle Apple M2 as not having HCR_EL2.NV1 implemented
arch/arm64/include/asm/cpu.h | 1 + arch/arm64/include/asm/cpufeature.h | 1 + arch/arm64/include/asm/kvm_emulate.h | 3 +- arch/arm64/include/asm/sysreg.h | 5 +- arch/arm64/kernel/cpufeature.c | 103 ++++++++++++++++++++++++--- arch/arm64/kernel/cpuinfo.c | 1 + arch/arm64/kernel/head.S | 23 +++--- arch/arm64/kvm/nested.c | 7 ++ arch/arm64/kvm/sys_regs.c | 17 ++++- arch/arm64/tools/cpucaps | 1 + arch/arm64/tools/sysreg | 37 ++++++++++ 11 files changed, 176 insertions(+), 23 deletions(-)
Signature · 1 line
2.39.2