[PATCH 0/2] arm64: cpucap handling cleanups

Mark Rutland mark.rutland at arm.com
Tue Dec 12 09:09:08 PST 2023


The recent changes to remove cpus_have_const_cap() left a period between
detecting cpucaps and patching alternatives where it is necessary to use
cpus_have_cap() to check that a cpucap has been detected. During this
period we do a few things, and there's a risk that code using a mixture
of cpus_have_cap() and alternative_has_cap_*() sees an inconsistent
state.

These patches rework the cpucap code to minimize the period between
detecting cpucaps and patching the relevant alternatives, deferring
other work until after the alternatives have been patched. This removes
the need for some code to use cpus_have_cap(), and allows them to use
common helper functions that may use alternative_has_cap_*() internally,
making them consistent with other kernel code.

This cleanup was requested by Will across:

  https://lore.kernel.org/linux-arm-kernel/20231127154818.GA8453@willie-the-truck/
  https://lore.kernel.org/linux-arm-kernel/20231127163103.GA8627@willie-the-truck/
  https://lore.kernel.org/linux-arm-kernel/20231127164127.GB8627@willie-the-truck/
  https://lore.kernel.org/linux-arm-kernel/20231128110339.GA9717@willie-the-truck/

The patches are based on the arm64 for-next/fixes branch, whose HEAD
commit is currently:

  f5259997f3e8d6ed ("arm64: Avoid enabling KPTI unnecessarily")

... which patch 1 is partially a cleanup for.

I've given both patches some testing in a few configurations (e.g.
with and without nVHE forced on the command line) to check that
detection and patching works as expected.

Mark.

Mark Rutland (2):
  arm64: Cleanup system cpucap handling
  arm64: Align boot cpucap handling with system cpucap handling

 arch/arm64/include/asm/cpufeature.h |   1 +
 arch/arm64/kernel/cpufeature.c      | 105 +++++++++++++++-------------
 arch/arm64/kernel/fpsimd.c          |   4 +-
 arch/arm64/kernel/smp.c             |  12 +---
 4 files changed, 64 insertions(+), 58 deletions(-)

-- 
2.30.2




More information about the linux-arm-kernel mailing list