DEPRECATED ‐ 5.4 LTS kernel patches - AmpereComputing/ampere-lts-kernel---DEPRECATED GitHub Wiki
Welcome to the ampere-lts-kernel wiki!
There are cases to run upstream longterm maintenance kernel on the Ampere Altra® reference platform. This guide lists Linux kernel patches and kernel configurations related with Ampere Altra®, targeting for longterm 5.4 kernel. The guide is based on the Ampere Altra® Linux Kernel Porting Guide.
Kernel patches and configurations are back ported from Ampere centos kernel. Kernel patch is on linux-5.4.y branch: https://github.com/AmpereComputing/ampere-lts-kernel/tree/linux-5.4.y
kdump: reserve crashkernel above 4GB
- Patch details: https://github.com/AmpereComputing/ampere-lts-kernel/issues/102
- Background: https://github.com/AmpereComputing/ampere-lts-kernel/wiki/kdump-on-arm64
eventpoll bug fix
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/72
| Accepted Kernel | Hash Tag | Subject |
| 5.12 | e9e15f48 | locking/qrwlock: Fix ordering in queued_write_lock_slowpath() |
NUMA
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/73
These patches provide multi-socket optimization:
| Accepted Kernel | Hash Tag | Subject |
| 5.10 | 409b032 | arm64: NUMA: Kconfig: Increase NODES_SHIFT to 4 |
| N/A | 30abc1a | NOUPSTREAM: arm64: Kconfig: Enable NODES_SPAN_OTHER_NODES config for NUMA |
ARM64
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/78
This patch is required to fix PCI ECAM reading:
| Accepted Kernel | Hash Tag | Subject |
| 5.10 | 44b1b99 | drivers/pci: Add ecam quirk for Ampere Altra SOC. |
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/79
This patch is required to fix soft lockup during heavy stress test:
| Accepted Kernel | Hash Tag | Subject |
| 5.8 | 480804b | BACKPORT: Split the old READ_IMPLIES_EXEC workaround from executable. |
HW Monitor
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/80
These patches are required to support HW monitor:
| Accepted Kernel | Hash Tag | Subject |
| TBD - 5.11? | 8109a6c | hwmon: Add Ampere Altra HW monitor driver |
APEI
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/81
These patches are required to support APEI/RAS features:
| Accepted Kernel | Hash Tag | Subject |
| 5.8 | af3b585 | BACKPORT: mm/memory-failure: Add memory_failure_queue_kick() |
| 5.8 | 16ac324 | BACKPORT: ACPI / APEI: Kick the memory_failure() queue for synchronous err |
PMU
CMN-600 Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/74
ARM DSU Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/75
DMC-620 Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/76
| Accepted Kernel | Hash Tag | Subject |
|---|---|---|
| CMN-600 | ||
| 5.10 | 80264b8 | perf:Add Arm CMN-600 DT binding |
| 5.10 | cdaf907 | perf: Add Arm CMN-600 PMU driver |
| 5.12 | 2aef8e0 | BACKPORT: perf/arm-cmn: Move IRQs when migrating context |
| Not upstream | ad71283 | perf/arm-cmn: Fix kernel crash when access dtc object sharing same IRQ number |
| ARM DSU | ||
| 5.10 | 92163d | perf: arm_dsu: Support DSU ACPI devices |
| TBD | 48b4d60 | NOUPSTREAM:perf: arm_dsu: Allow IRQ to be shared among devices |
| DMC-620 | ||
| 5.11 | 8895c29 | perf: Add ARM DMC-620 PMU driver |
| 5.11 | 51af7e2 | perf: arm_dmc620: Update ACPI ID |
| ARM SMMUv3 PMU (PMCG) | ||
| 5.5 | a4b00c9 | perf/smmuv3: Remove the leftover put_cpu() in error path |
| 5.8 | 779bed7 | perf/smmuv3: Allow sharing MMIO registers with the SMMU drive |
| 5.14 | 5cfcc6261 | perf/smmuv3: Don't trample existing events with global filter |
Altra LED driver
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/82
Not upstream yet.
| Accepted Kernel | Hash Tag | Subject |
| TBD | 5a19482 | led: Add Altra LED driver |
smmu-pmu PMCG
Fix smmu-pmu PMCG conflicts with nvme, see this issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/30
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/77
| Accepted Kernel | Hash Tag | Subject |
| 5.8 | 87957b27f | iommu/arm-smmu-v3: Don't reserve implementation defined register space |
PMU NMI
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/83
This patch serials enable Non-maskable-interrupt for PMU. Please refer to wiki: https://github.com/AmpereComputing/ampere-lts-kernel/wiki/perf-pmu-and-more#pmu-non-maskable-interrupt-nmi for details.
The patch serial includes three parts:
- pseudo-NMIs. The feature is in upstream 5.1 kernel, no need to backport.
- PMU NMI based on pseudo-NMIs, totally 7 patches
| Upstream kernel | Patch-set for pmu nmi |
|---|---|
| 5.14 | 1aa0030 77bb12e c21bbca 1aa0030 cc3a384 de91dc3 ccc2351 9b87ed3 |
- Fix PMU NMI hang issue
| Upstream kernel | Patch-set for 'arm64: Fix cpuidle/suspend with pseudo-NMI enabled' |
|---|---|
| 5.14 | 0036b25 497e665 662d30f a91183eb |
Perf tool
Issue: https://github.com/AmpereComputing/ampere-lts-kernel/issues/84
Enhance linux perf tool features. These patches is not required for Altra.
| Upstream kernel | Patch-set for 'perf kvm stat' |
|---|---|
| 5.14 | 7129c5a 35b65b84 f7408370 35938d93 |
scsi: mpt3sas
Fix CPU lock up when doing fio test. The issue is because of the driver didn't handle IRQ correctly when number of cores greater than number of MSIx supported
| Accepted Kernel | 5.4 kernel version | Hash Tag | Subject |
| 5.9 | 5.4.66 | 122cdbd | scsi: mpt3sas: Don't call disable_irq from IRQ poll handler |
APEI
| Accepted Kernel | 5.4 kernel version | Hash Tag | Subject |
| 5.8 | 5.4.69 | af02933 | arm64: acpi: Make apei_claim_sea() synchronise with APEI's irq work |
PMU
| Accepted Kernel | 5.4 kernel version | Hash Tag | Subject |
|---|---|---|---|
| 5.8 | Already in 5.4.93 | b1d2d3d | ACPI/IORT: Fix PMCG node always look for a single ID mapping |
Please refer to altra_5.4_defconfig. It is based on Ampere centos 8 default kernel configure.
Significant changes are:
| Ampere centos 8 kernel | 5.4.93 kernel |
|---|---|
| CONFIG_ARM64_USER_VA_BITS_52=y | replaced by CONFIG_ARM64_VA_BITS_52=y |
| CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem" | not set |
Enabled features:
| Features | Configures |
|---|---|
| 64KB page | CONFIG_ARM64_64K_PAGES=y |
| numa nodes | CONFIG_NODES_SHIFT=6 |
| Altra HW monitor driver | CONFIG_SENSORS_ALTRA=m |
| Altra LED driver | CONFIG_LEDS_ALTRA_SPCI=y |
| Arm CMN-600 PMU | CONFIG_ARM_CMN=y |
| ARM DynamIQ Shared Unit (DSU) PMU | CONFIG_ARM_DSU_PMU=y |
| DMC-620 PMU | CONFIG_ARM_DMC620_PMU=y |
| ARMv8.2 Statistical Profiling Extension | CONFIG_ARM_SPE_PMU=y |
| ARM SMMUv3 Performance Monitors Extension | CONFIG_ARM_SMMU_V3_PMU=y |
For each kernel patch, there is a functional test case. The test cases are tracked in https://github.com/AmpereComputing/ampere-lts-kernel/issues/6