mirror-linux/Documentation/arch
James Morse 09e6b306f3 arm64: cpufeature: discover CPU support for MPAM
ARMv8.4 adds support for 'Memory Partitioning And Monitoring' (MPAM)
which describes an interface to cache and bandwidth controls wherever
they appear in the system.

Add support to detect MPAM. Like SVE, MPAM has an extra id register that
describes some more properties, including the virtualisation support,
which is optional. Detect this separately so we can detect
mismatched/insane systems, but still use MPAM on the host even if the
virtualisation support is missing.

MPAM needs enabling at the highest implemented exception level, otherwise
the register accesses trap. The 'enabled' flag is accessible to lower
exception levels, but its in a register that traps when MPAM isn't enabled.
The cpufeature 'matches' hook is extended to test this on one of the
CPUs, so that firmware can emulate MPAM as disabled if it is reserved
for use by secure world.

Secondary CPUs that appear late could trip cpufeature's 'lower safe'
behaviour after the MPAM properties have been advertised to user-space.
Add a verify call to ensure late secondaries match the existing CPUs.

(If you have a boot failure that bisects here its likely your CPUs
advertise MPAM in the id registers, but firmware failed to either enable
or MPAM, or emulate the trap as if it were disabled)

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241030160317.2528209-4-joey.gouly@arm.com
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
2024-10-31 18:09:38 +00:00
..
arc docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
arm move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
arm64 arm64: cpufeature: discover CPU support for MPAM 2024-10-31 18:09:38 +00:00
loongarch Docs/LoongArch: Add advanced extended IRQ model description 2024-09-24 15:32:20 +08:00
m68k Docs: typos/spelling 2024-05-02 10:02:29 -06:00
mips docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
nios2 docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
openrisc docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
parisc docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
powerpc Documentation: Fix spelling mistakes 2024-09-05 14:35:45 -06:00
riscv Another relatively mundane cycle for docs: 2024-09-17 16:44:08 +02:00
s390 s390/vfio-ap: Driver feature advertisement 2024-09-23 17:57:04 +02:00
sh docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
sparc Docs: typos/spelling 2024-05-02 10:02:29 -06:00
x86 ALong with the usual shower of singleton patches, notable patch series in 2024-09-21 07:29:05 -07:00
xtensa docs: kernel_feat.py: fix potential command injection 2024-01-11 09:21:01 -07:00
index.rst The number of commits for documentation is not huge this time around, but 2023-11-01 17:11:41 -10:00