[PATCH v2 0/9] arm64: Disabling SVE/SME from the command-line

Marc Zyngier maz at kernel.org
Thu Jun 30 09:04:51 PDT 2022


This very short series reworks the way arm64 CPUs boot (yes, again) in
order to opt out of some features early at boot, on top of the
existing VHE-forced-into-nVHE use case and using the same idreg
override infrastructure.

The main victim here is SVE, because it seems that people have all
sort of broken firmware out there, and that a distribution kernel
cannot boot on that. And since we have a dependency between SVE and
SME, disabling the former also disables the latter.

The only positive aspect about this series is that it unifies the way
the VHE-stuck CPUs boot with way the full-fat CPUs do (everybody takes
a trip to EL1 before coming back to EL2, instead of the stay-at-EL2
approach we currently have). A small victory, which allows us to
control the EL2 setup code more easily.

Note that the SME code is totally untested (I don't have a model with
that), but it looks obviously correct ;-), and that my SVE "platform"
has a working firmware...

* From v1:
  - Fixed glaring bug spotted by Mark where CPTR_EL2 was never really
    written to...
  - Don't write the E2H tracking flag to memory, since Ard reworked
    the boot flow to avoid writing to RAM without the MMU on
  - Added an explicit way to disable FA64 independently from SME
  - Made the override code able to deal with arbitrary field widths to
    deal with FA64 (a single-bit field...)
  - Now rebased on top of arm64/for-next/boot

Marc Zyngier (9):
  arm64: Rename the VHE switch to "finalise_el2"
  arm64: Save state of HCR_EL2.E2H before switch to EL1
  arm64: Allow sticky E2H when entering EL1
  arm64: Factor out checking of a feature against the override into a
    macro
  arm64: Allow the idreg override to deal with variable field width
  arm64: Expose a __check_override primitive for oddball features
  arm64: Add the arm64.nosme command line option
  arm64: Add the arm64.nosve command line option
  arm64: Add an override for ID_AA64SMFR0_EL1.FA64

 .../admin-guide/kernel-parameters.txt         |   6 +
 Documentation/virt/kvm/arm/hyp-abi.rst        |  11 +-
 arch/arm64/include/asm/cpufeature.h           |   3 +
 arch/arm64/include/asm/el2_setup.h            |  60 ----------
 arch/arm64/include/asm/virt.h                 |  11 +-
 arch/arm64/kernel/cpufeature.c                |  12 +-
 arch/arm64/kernel/head.S                      |  43 +++----
 arch/arm64/kernel/hyp-stub.S                  | 113 ++++++++++++++----
 arch/arm64/kernel/idreg-override.c            |  93 +++++++++++---
 arch/arm64/kernel/sleep.S                     |   2 +-
 10 files changed, 216 insertions(+), 138 deletions(-)

-- 
2.34.1




More information about the linux-arm-kernel mailing list