Arm64 Linux Kernel
architecture updateMatteo Carlini
Director, Software Technology Management
Arm – Open Source Software
A-profile Architecture new feature names!https://developer.arm.com/architectures/cpu-architecture/a-profile/exploration-tools/feature-names-for-a-profile
A-profile features: arm64 kernel support tablehttps://developer.arm.com/tools-and-software/open-source-software/linux-kernel/architecture-and-kvm-enablement
v8.1
LSE
RDMA
HPD
VHE
TTHMPAN
LOR
VMID16
PMU
v8.3
PAUTH
JSconv
CCIDX
NV
RCPC
CompNum
v8.4
PMU S2FWB
LSE
SHA
SM
DIT
IDST
CondM
RCPC
AMU
NVTLBI
TTL
MPAM
TTRem
TTST
RAS
DFE
S-EL2
Debug
Trace
CNTSC
v8.5
EVTGTG
SpecRest
PredInv
BT
MemTag
CSEH
CMODX
CondMFRINT
SB
EOPD
DCCVADP
RNG
PMU
SPE
DoPD
v8.6
ECVETS
CTSS
FGT
DGH
TWED
BF16AMU
I8MM
F32MM
F64MM
PAuth2/ FPAC
MPAM
MTPMU
Future architectures
SVE2
TME
v8.0
Enablement complete
Enablement ongoing
Enablement TBD
N/A – no Kernel impact
v8.2
TTS2UXNAA32HPD
TTPBHA
LSMAOC
TTCNP
UAO
ATS1E1
LP16
LVA
LPADCPOP
VPIPT
Debug
RAS
DotProd
SHA
SM
IESB
FHM
A64ISA
A-class architecture kernel enablement – Mar 20
A-class architecture kernel enablement – Today
v8.1
LSE
RDMA
HPD
VHE
TTHMPAN
LOR
VMID16
PMU
v8.2
TTS2UXNAA32HPD
TTPBHA
LSMAOC
TTCNP
UAO
ATS1E1
LP16
LVA
LPADCPOP
VPIPT
Debug
RAS
DotProd
SHA
SM
IESB
FHM
A64ISA
v8.3
PAUTH
JSconv
CCIDX
NV
RCPC
CompNum
v8.4
PMUS2FWB
LSE
SHA
SM
DIT
IDST
CondM
RCPC
AMU
TLBITTL
NV
MPAM
Debug
Trace
TTRem
TTST
RAS
DFE
S-EL2
CNTSC
v8.5
GTGSpecRest
PredInv
MemTag
EVT
CSEH
CMODX
DoPD
BTCondM
FRINT
SB
EOPD
DCCVADP
RNG
PMU
SPE
v8.6
ECVETS
CTSS
FGT
TWED
DGH
BF16AMU
I8MM
F32MM
F64MM
PAuth2/ FPAC
MPAM
MTPMU
v8.0
Enablement complete
Enablement ongoing
Enablement TBD
N/A – no Kernel impact
Future architectures
SVE2
TME
A-class architecture kernel enablement – Tomorrow
v8.1
LSE
RDMA
HPD
VHE
TTHMPAN
LOR
VMID16
PMU
v8.2
TTS2UXNAA32HPD
TTPBHA
LSMAOC
TTCNP
UAO
ATS1E1
LP16
LVA
LPADCPOP
VPIPT
Debug
RAS
DotProd
SHA
SM
IESB
FHM
A64ISA
v8.3
PAUTH
JSconv
CCIDX
NV
RCPC
CompNum
v8.4
PMUS2FWB
LSE
SHA
SM
DIT
IDST
CondM
RCPC
AMU
TLBITTL
NV
MPAM
Debug
Trace
TTRem
TTST
RAS
DFE
S-EL2
CNTSC
v8.5
GTGSpecRest
PredInv
MemTag
EVT
CSEH
CMODX
DoPD
BTCondM
FRINT
SB
EOPD
DCCVADP
RNG
PMU
SPE
v8.6
ECVETS
CTSS
FGT
TWED
DGH
BF16AMU
I8MM
F32MM
F64MM
PAuth2/ FPAC
MPAM
MTPMU
v8.0
LVC20-214-Arm-
Architecture-2020-
extensions
Enablement complete
Enablement ongoing
Enablement TBD
N/A – no Kernel impact
v8.7 2020 Arch
extensionsFuture architectures
SVE2
TME
CSRE
BRBE
Kernel releases since March 2020
❑ Kernel v5.6
o Armv8.5-E0PD (Preventing EL0 access to halves of address maps)
o Armv8.5-RNG: HWCAP exposure & use arch entropy for KASLR seed
o HWCAP : Armv8.6-BF16, Armv8.6-I8MM, Armv8.6-DGH
❑ Kernel v5.7
o Armv8.3-Pauth: In-kernel support for function return address protection
o Armv8.4 AMU: Activity Monitors extensions
o Armv8.5 PMU 64-bit counters
o Armv8.5-RNG: use at boot to seed KASLR when ARCH_RANDOM is enabled
o asm annotations preps for Armv8.5-BTI
o KVM: GICv4.1 support & 32-bit host removal
o Memory hot-remove support for arm64
Kernel releases since March 2020 – Cont.
❑ Kernel v5.8o Armv8.5-BTI: user-space and in-kernel support
o KVM: Non-invasive pre-Nested Virtualization preparatory patches
❑ Kernel v5.9o Armv8.4-TLBI: arm64 support for TLBI range operations
o Armv8.4-TTL: arm64 support for translation table level hints
o SCMI Notifications support
o KVM: Pointer Authentication available for guests on non-VHE hosts
o KVM: Further pre-NV preparatory patches
❑ Kernel v5.10 predictions (queued in –next)o Armv8.3-PAuth2 & Armv8.3-FPAC: Pointer Authentication enhancements introduced
in the Armv8.6 Arm architecture specification
o First chunk of resctrl clean-up patches (prep for MPAM)
Ongoing developments: Armv8.4 MPAM
❑ Working on enabling multi-arch support to the resctrl interface
▪ https://www.kernel.org/doc/Documentation/x86/intel_rdt_ui.txt
❑ Last snapshot of Arm patches available here:
▪ https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/log/?h=mpam/snapshot/feb
▪ First chunk of resctrl clean-up patches queued on –next (on top of 5.9) https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/log/?h=x86/cache
❑ System characteristics to allow use of the resctrl interface:
▪ Cache Portion bitmaps on L2 or L3, with up to 32 portions
▪ Memory-bandwidth portion bitmaps on L3 with up to 32 portions
Arm MPAM controls Resctrl interface
Cache portion bitmaps (L2 & L3 cache) Available
Cache capacity Not Available
Memory bandwidth portion bitmap Available
Memory bandwidth min/max/stride Not available
Raw priority Not available
Ongoing developments: Armv8.4 MPAM
❑ System Description (DT/ACPI bindings) is ongoing
▪ ACPI for MPAM spec (DEN0065) – Beta now, will be finalised in October
▪ Patches will be rebased against the updated spec (and DT will be derived
accordingly)
❑ Enablement plans:
▪ Resctrl rework expected to continue throughout rest of 2020
▪ arm64 architectural specific enablement (backend) starting in 2021
▪ Sysregs & cpu feature enablement likely posted during v5.10 iteration cycle
▪ Currently investigating mobile-driven enablement use-cases in Android/GKI
▪ Also investigating possibility for in-kernel user, as an alternative path for
upstreaming arch/arm64 code (in parallel with resctrl)
Ongoing developments (2)
❑ Armv8.2 SPE in KVM Guests
▪ Arm Kernel team working on the enablement → to be posted soon on-list
❑ Armv8.5 Memory Tagging:
▪ User-space heap tagging enablement ongoing (likely queued for v5.11)
▪ In-Kernel heap-tagging: now co-developed with Google on-list
▪ KVM Guest enablement (heap tagging) on-list
▪ Stack-tagging:
❑ Fine-grained stack-tagging (colouring each function) breaks single-image
❑ Considerations for future debug feature (pending compiler support)
❑ Debug - Coresight
▪ Coresight ETMv4.4 currently on-list / Armv8.4 Self-hosted trace also on-list
▪ Coresight built as a module on-list
▪ Working to enable ETE/TRBE → to be posted soon on-list
Ongoing developments (3)❑ FF-A kernel driver:
▪ Public REL spec DEN0077 / Initial patch on-list
▪ Plan to support both Normal (e.g.: Hypervisor) and Secure (e.g.: Trusted OS) use
❑ True Random Number Generator (TRNG) interface
▪ EAC Spec publicly available: DEN0098
▪ Support for new SMC and entropy source coming soon
❑ SCMI
❑ System Power protocol support queued in –next (likely v5.10)
❑ System Power Control driver on-list
❑ Arm CMN-600 PMU driver:
❑ v2 patch on-list
❑ Morello
❑ Prototyping a capability-based ABI together with toolchain teams
❑ See https://linuxplumbersconf.org/event/7/contributions/654/
Thank youAccelerating deployment in the Arm Ecosystem