Platform Software Patches and Configurations: Grace#

This section provides information about software patches and configuration settings that are required or recommended for the Grace platform.

Grace Linux Kernel Patches#

This section provides information about the Linux Kernel patches that support the Grace platform.

Upstream Bare Metal Linux Kernel#

The tables in this section list Linux kernel patches that are upstream, which means that the patches are accepted into the main Linux kernel branch.

Note

There might be circumstances where additional, dependent patches are required to support the patches listed in these tables (for example, when the patch listed is part of a larger series).

The Git description is pulled directly from the main Linux kernel Git log and is intended to help with searches and comparisons. The description might contain spelling and grammatical errors.

The following table contains patches that enable functions and are required for bare metal support on the Grace platform.

Bare Metal Support: Enablement#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

June 2021

4c207e7121fa92b66bf1896bf8ccb9edfb0f9731

PCI: Mark some NVIDIA GPUs to avoid bus reset

v5.13

August 2021

6937b7dd434962377e00efc04adac0390c287199

PCI: Add support for ACPI _RST reset method

v5.15

September 2021

a9c38c5d267cb94871dfa2de5539c92025c855d7

dma-mapping: remove bogus test for pfn_valid from dma_map_resource

v5.16

November 2021

bd2fdedbf2bac27f4a2ac16b84ab9b9e5f67006c

i2c: tegra: Add the ACPI support

v5.17

November 2021

f89d2cc3967af9948ffc58e4cc9a1331f1c4971a

spi: tegra210-quad: use devm call for cdata memory

December 2021

50665d58db052b04f640fd54de1632aeecd4fc77

i2c: tegra: use i2c_timings for bus clock freq

February 2022

5f84e73f9a8f14b95115b0eb2080da6d9fa7a82e

gpio: tegra186: Add IRQ per bank for Tegra241

December 2021

d1056b771ddbe119f733fd980c854d1bcf33d13e

gpio: tegra186: Add support for Tegra241

February 2022

d7583c8a57485da19feb6dd85573763a8c5ec1d1

i2c: tegra: Add SMBus block read function

v5.18

January 2022

ca0acb511c21738b32386ce0f85c284b351d919e

device property: Add fwnode_irq_get_byname

a263a84088f689bf0c1552a510b25d0bcc45fcae

i2c: smbus: Use device_*() functions instead of of_*()

20e8ef5c7ffaa4c1d5f65727c536ffaf37078d5f

docs: firmware-guide: ACPI: Add named interrupt doc

February 2022

ac982578e7d340dc4f4fd243f4a4b24787d28c3f

spi: tegra210-quad: use device_reset method

ea23f0e148b82e5bcbc6c814926f53133552f0f3

spi: tegra210-quad: add new chips to compatible

75a1b44a54bd97500e524cf42e8c81cc632672b3

spi: tegra210-quad: add acpi support

1b8342cc4a387933780c50f0cf51c94455be7d11

spi: tegra210-quad: combined sequence mode

June 2022

b76134178168b5104851b3c72d9b1092b7414ff9

spi: tegra210-quad: Multi-cs support

v6.0

September 2022

0ddf10a319f14ed626dab3a2d390e5059e20cea5

arm64: tegra: Enable Tegra SPI & QSPI in deconfig

v6.1

May 2023

721255b9826bd11c7a38b585905fc2dd0fb94e52

genirq: Use a maple tree for interrupt descriptor management

v6.5

June 2024

47c8846a49baa8c0b7a6a3e7e7eacd6e8d119d25

PCI: Extend ACS configurability

v6.11

The following table contains patches that resolve critical issues and hardware errata.

Bare Metal Support: Critical Fixes#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

November 2022

5bf71889ad9a4d39b7665c105a005c5a33d730ba

i2c: tegra: Set ACPI node as primary fwnode

v6.2

April 2023

9f855779a3874eee70e9f6be57b5f7774f14e510

i2c: tegra: Fix PEC support for SMBUS block read

v6.4

March 2023

35727af2b15d98a2dd2811d631d3a3886111312e

irqchip/gicv3: Workaround for NVIDIA erratum T241-FABRIC-4

April 2023

4327a6137ed43a091d900b1ac833345d60f32228

drm/ast: Fix ARM compatibility

May 2024

195aba96b854dd664768f382cd1db375d8181f88

tpm_tis_spi: Account for SPI header when allocating TPM SPI xfer buffer

v6.10

December 2024

1a596ad00ffe9b37fc60a93cbdd4daead3bf95f3

PCI: Use downstream bridges for distributing resources

v6.15

The following table contains patches that resolve faults in enablement patches and other issues that have been discovered while testing the Grace platform with various workloads.

Bare Metal Support: Fixes#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

October 2022

8777dd9dff4020bba66654ec92e4b0ab6367ad30

spi: tegra210-quad: Fix combined sequence

v6.1

ae4b3c1252f0fd0951d2f072a02ba46cac8d6c92

spi: tegra210-quad: Don’t initialise DMA if not supported

October 2022

2197aa6b0aa236b9896a09b9d08d6924d18b84f6

spi: tegra210-quad: Fix duplicate resource error

August 2022

2e3468778dbe3ec389a10c21a703bb8e5be5cfbc

mm: remember young/dirty bit for page migrations

January 2023

101ca8d05913b7d1e6e8b9dd792193d4082fff86

rtc: efi: Enable SET/GET WAKEUP services as optional

v6.2

January 2023

ef3691683d7bfd0a2acf48812e4ffe894f10bfa8

KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation

September 2022

05da178ce0aa152f0592e10fa874054187f3621b

ACPI/IORT: Update SMMUv3 DeviceID support

February 2023

047ee71ae4f412d8819e39e4b08c588fa299cfc2

spi: tegra210-quad: Fix validate combined sequence

v6.3

February 2023

2449d436681d40bc63ec2c766fd51b632270d8a7

spi: tegra210-quad: Fix iterator outside loop

February 2023

f7482d8285b638be87a594a30edaaf1341135c1a

spi: tegra210-quad: set half duplex flag

February 2023

010338d729c1090036eb40d2a60b7b7bce2445b8

arm64: kaslr: don’t pretend KASLR is enabled if offset < MIN_KIMG_ALIGN

March 2023

c0e0421a60bf468e88cf569fbd727346b138ed04

ACPI: processor: Reorder acpi_processor_driver_init()

c43198af05cffa5de8d4f356c40ce4bdca066272

thermal: core: Introduce thermal_cooling_device_present()

790930f44289c8209c57461b2db499fcc702e0b3

thermal: core: Introduce thermal_cooling_device_update()

22c52fa5155a2f48aedb0f675903b20457285a27

ACPI: processor: thermal: Update CPU cooling devices on cpufreq policy changes

March 2023

b57841fb0b564c61508222e885ac8f30a2811089

thermal: core: Drop excessive lockdep_assert_held() calls

January 2023

bba5065963f8ade14f3caa5b0f5b4a53d3054dfd

PCI/AER: Configure ECRC only if AER is native

April 2023

67a142dc9eb96a5cc018e5db62390665eb5f038c

spi: Add TPM HW flow flag

v6.4

967ca91a996f82219f2883e9e53d8e20df49025a

spi: tegra210-quad: Enable TPM wait polling

May 2023

3e35d303ab7d22c4b6597e56ba46ee7cc61f3a5a

arm64: module: rework module VA range selection

v6.5

April 2023

a86a42ac2bd652fdc7836a9d880c306a2485c142

tpm_tis-spi: Add hardware wait polling

v6.6

September 2023

d5afb4b47e13161b3f33904d45110f9e6463bad6

iommu/arm-smmu-v3: Fix soft lockup triggered by arm_smmu_mm_invalidate_range

June 2023

416ef04fe00c5f2f6fb8e13d8dbe1b5a0a274f83

mm/page_alloc: fix min_free_kbytes calculation regarding ZONE_MOVABLE

December 2023

081488051d28d32569ebb7c7a23572778b2e7d57

mm/mglru: fix underprotected page cache

v6.7

5095a2b23987d3c3c47dd16b3d4080e2733b8bb9

mm/mglru: try to stop at high watermarks

8aa420617918d12d1f5d55030a503c9418e73c2c

mm/mglru: respect min_ttl_ms with memcgs

4376807bf2d5371c3e00080c972be568c3f8a7d1

mm/mglru: reclaim offlined memcgs harder

January 2024

db744ddd59be798c2627efbfc71f707f5a935a40

PCI/MSI: Prevent MSI hardware interrupt number truncation

v6.8

February 2024

6d4266675279b38c301243f3a4fac4a511b03246

PCI/ASPM: Update save_state when configuration changes

v6.9

April 2024

d806f474a9a7993648a2c70642ee129316d8deff

gpio: tegra186: Fix tegra186_gpio_is_accessible() check

March 2024

04867a7a33324c9c562ee7949dbcaab7aaad1fb4

swiotlb: Fix double-allocation of slots due to broken alignment handling

cbf53074a528191df82b4dba1e3d21191102255e

swiotlb: Honour dma_alloc_coherent() alignment in swiotlb_alloc()

51b30ecb73b481d5fac6ccf2ecb4a309c9ee3310

swiotlb: Fix alignment checks when both allocation and DMA masks are present

afc5aa46ed560f01ceda897c053c6a40c77ce5c4

iommu/dma: Force swiotlb_max_mapping_size on an untrusted device

March 2024

af133562d5aff41fcdbe51f1a504ae04788b5fc0

swiotlb: extend buffer pre-padding to alloc_align_mask if necessary

April 2024

e3ba51ab24fddef79fc212f9840de54db8fd1685

arm64: tlb: Fix TLBI RANGE operand

v6.10

e07255d69702bc9131427fda8f9749355b10780f

arm64: tlb: Improve __TLBI_VADDR_RANGE()

73301e464a72a0d007d0d4e0f4d3dab5c58125bf

arm64: tlb: Allow range operation for MAX_TLBI_RANGE_PAGES

January 2024

7bf9d2af7e89f65a79225e26d261b52ce4ee3e95

PCI: Clear Secondary Status errors after enumeration

March 2024

eebab7e3eb4bb906a8ebc3b70d28059ff1d9271c

PCI/DOE: Support discovery version 2

June 2024

90e4ed6bb02ad93663f17411d17e8e714a765a6b

cpufreq/cppc: Don’t compare desired_perf in target()

v6.11

July 2024

4cd7ba16a0afb36550eed7690e73d3e7a743fa96

mm: fix old/young bit handling in the faulting path

August 2024

14d069d92951a3e150c0a81f2ca3b93e54da913b

i2c: tegra: Do not mark ACPI devices as irq safe

October 2024

088984c8d54c0053fc4ae606981291d741c5924b

ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context

v6.12

October 2024

aa6f8b2593b56a02043684182a89853f919dff3e

mm/gup: stop leaking pinned pages in low memory conditions

November 2024

94efde1d15399f5c88e576923db9bcd422d217f2

mm/gup: avoid an unnecessary allocation call for FOLL_LONGTERM cases

November 2024

a1268be280d8e484ab3606d7476edd0f14bb9961

mm/gup: handle NULL pages in unpin_user_pages()

October 2024

f3c3ccc4fe49dbc560b01d16bebd1b116c46c2b4

PCI: Fix pci_enable_acs() support for the ACS quirks

September 2024

c47195631960b626058c335aec31f186fa854f97

cppc_cpufreq: Use desired perf if feedback ctrs are 0 or unchanged

v6.13

ea1829d4d413bc38774703acfc266472f7bc0bb5

cppc_cpufreq: Remove HiSilicon CPPC workaround

October 2024

1bc542c6a0d1444559ab75823a89a94d244bf933

mm/vmscan: wake up flushers conditionally to avoid cgroup OOM

January 2024

c8e88de1b44e58cacdef41ea9aaa78fca35f1357

ACPI/HMAT: Move HMAT messages to pr_debug()

v6.14

January 2025

7f5704b6a143b8eca640cba820968e798d065e91

ACPI: PRM: Remove unnecessary strict handler address checks

February 2025

abc7b3f1f056d69a8f11d6dceecc0c9549ace770

RDMA/mlx5: Fix a WARN during dereg_mr for DM type

March 2025

f7edb07ad7c66eab3dce57384f33b9799d579133

Fix mmu notifiers for range-based invalidates

January 2025

9cf8a952d57b422d3ff8a9a0163f8adf694f4b2b

PCI/ACS: Fix ‘pci=config_acs=’ parameter

v6.15

May 2025

b3f6fcd8404f9f92262303369bb877ec5d188a81

iommu: Skip PASID validation for devices without PASID capability

April 2025

41c721fc093938745d116c3a21326a0ee03bb491

spi: tegra210-quad: use WARN_ON_ONCE instead of WARN_ON for timeouts

21f4314e66ed8d40b2ee24185d1a06a07a512eb1

spi: tegra210-quad: add rate limiting and simplify timeout error message

March 2025

a6e04f05ce0b070ab39d5775580e65c7d943da0b

i2c: tegra: check msg length in SMBUS block read

v6.16

July 2025

56344e241c543f17e8102fa13466ad5c3e7dc9ff

i2c: tegra: Fix reset error handling with ACPI

April 2025

d8966b65413390d1b5b706886987caac05fbe024

spi: tegra210-quad: modify chip select (CS) deactivation

635bf3c8853359a987c5c909d424df92a0d3016a

i2c: tegra: Use internal reset when reset property is not available

v6.17

September 2025

c7c31f8dc54aa3c9b2c994b5f1ff7e740a654e97

drm/ast: Use msleep instead of mdelay for edid read

v6.18

November 2025

7526183cfdbe352c51c285762f0e15b7c428ea06

net: aquantia: Add missing descriptor cache invalidation on ATL2

October 2025

b4e002d8a7cee3b1d70efad0e222567f92a73000

spi: tegra210-quad: Fix timeout handling

6.19

6022eacdda8b0b06a2e1d4122e5268099b62ff5d

spi: tegra210-quad: Refactor error handling into helper functions

380fd29d57abe6679d87ec56babe65ddc5873a37

spi: tegra210-quad: spi: tegra210-quad: Check hardware status on timeout

The following table contains optional patches that improve performance on Grace platforms.

Bare Metal Support: Performance#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

November 2023

a2ee7581afd59015b8f9ae01fad131aed9f26f01

ACPI: thermal: Add Thermal fast Sampling Period (_TFP) support

v6.8

310293a2b94197f3d75e65ab22672287a7938a00

ACPI: processor: reduce CPUFREQ thermal reduction pctg for Tegra241

ccb45b34d44016b91fa75646741d317d6d6fdeea

ACPI: arm64: export acpi_arch_thermal_cpufreq_pctg()

December 2023

7dc7c5ef6463111991002f24c0aea08afe86f2cc

mm: allow deferred splitting of arbitrary anon large folios

372cbd4d5a0665bf7e181c72f5e40e1bf59b0b08

mm: non-pmd-mappable, large folios for folio_add_new_anon_rmap()

3485b88390b0af9e05dc2c3f57e9936f41e159a0

mm: thp: introduce multi-size THP sysfs interface

19eaf44954df64f9bc8dec398219e15ad0811497

mm: thp: support allocation of anonymous multi-size THP

b6aab3384cafba151c53d3b5f7e1f8d073aadf03

selftests/mm/kugepaged: restore thp settings at exit

00679a183ac6d2584723cfc2a2c07c8285f802dc

selftests/mm: factor out thp settings management

4f5070a5e40db2e9dbf5fff4ec678d6fbb338d5c

selftests/mm: support multi-size THP interface in thp_settings

9f0704eae8a4edc8dca9c8a297f798d505a4103a

selftests/mm/khugepaged: enlighten for multi-size THP

12dc16b38463a671bc91dc2df10f3a014a27ff3b

selftests/mm/cow: generalize do_run_with_thp() helper

c0f79103322c322ea9342d52c2d81528b7b56232

selftests/mm/cow: add tests for anonymous multi-size THP

February 2024

6280d7317ccae19c776a3b6cf9848c964f958091

mm: clarify the spec for set_ptes()

v6.9

2bdba9868a4ffcb1492db7272f34b54387910177

mm: thp: batch-collapse PMD with set_ptes()

583ceaaa339960e673ac0029f323bb1c6ffc96d7

mm: introduce pte_advance_pfn() and use for pte_next_pfn()

c1bd2b4028ae5b4d2ada64b31c40cc44cdf00972

arm64/mm: convert pte_next_pfn() to pte_advance_pfn()

506b586769ecef8c83fff64de227e7fa84b7be42

x86/mm: convert pte_next_pfn() to pte_advance_pfn()

fb23bf6bd288db3187c27b971e558a3e9f70ae96

mm: tidy up pte_next_pfn() definition

532736558e8ef2865eae1d84b52dda4422cac810

arm64/mm: convert READ_ONCE(*ptep) to ptep_get(ptep)

659e193027910a5d3083e34b488ab459d2ef5082

arm64/mm: convert set_pte_at() to set_ptes(…, 1)

cbb0294fdd72a5f63ec59fad5c0a98d63bd572fc

arm64/mm: convert ptep_clear() to ptep_get_and_clear()

5a00bfd6a52cf31e93d5f1b734087deb32a3cffa

arm64/mm: new ptep layer to manage contig bit

d9d8dc2bd3fb2689309f704fe85e6dde2b1bd73a

arm64/mm: dplit __flush_tlb_range() to elide trailing DSB

4602e5757bcceb231c3a13c36c373ad4a750eddb

arm64/mm: wire up PTE_CONT for user mappings

311a6cf29690bb8295327bad0e76e0ad48cadcc4

arm64/mm: implement new wrprotect_ptes() batch API

6b1e4efb6f5499ae8f9f5cdda7502285a0edbf51

arm64/mm: implement new [get_and_]clear_full_ptes() batch APIs

c6ec76a2ebc5829e5826b218d2e1475ec11b333e

mm: add pte_batch_hint() to reduce scanning in folio_pte_batch()

fb5451e5f72b31002760083a99fbb41771c4f1ad

arm64/mm: implement pte_batch_hint()

b972fc6afba002319fe23bc698ce6431ee43868c

arm64/mm: __always_inline to improve fork() perf

f0c2264958e18bc7bc35b567d51b99461e4de34f

arm64/mm: automatically fold contpte mappings

April 2024

ead79118dae6f9f982532002e82c2fb291ae0480

arm64/io: Provide a WC friendly __iowriteXX_copy()

v6.10

2b7a5e1fe02231acc5d50339b2f10833565ef559

net: hns3: Remove io_stop_wc() calls after __iowrite64_copy()

ef302283ddfceaba2657923af3f90fd58e6dff06

IB/mlx5: Use __iowrite64_copy() for write combining stores

The following table contains optional patches that enable functions, or resolve faults, with performance tooling on Grace platforms.

Bare Metal Support: Performance Tools#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

April 2022

1c5d62f5dd979dbe7f4b16a5bd3c64fbecb7d92a

ACPICA: Add support for ARM Performance Monitoring Unit Table

v5.19

September 2022

6251d38059ae22304ede4f3748af9f795bdbf4fd

ACPI: ARM Performance Monitoring Unit Table (APMT) initial support

v6.2

June 2022

e37dfd65731dc4f001fa7dfa7f705e6840017d5a

perf: arm_cspmu: Add support for ARM CoreSight PMU driver

84481be7167eba1957c8718c8b044a47965fdecb

perf: arm_cspmu: Add support for NVIDIA SCF and MCF attribute

November 2022

39522031798dbb53b169b95d4ab25b53301d4eaf

ACPI: APMT: Fix kerneldoc and indentation

December 2022

1830902eb896824ca313a50f3486645c2df21327

perf: arm_cspmu: Fix modular builds due to missing MODULE_LICENSE()s

November 2022

e72dbf9085b56bbc19ff332f82adec1891077637

perf: arm_cspmu: Fix build failure on x86_64

November 2022

a91bbd5c9984a2b15e68aad7a79c2809fbd10fbe

perf: arm_cspmu: Fix module cyclic dependency

March 2023

16e15834659e9f5c05b9f12da6e86d76165c60a3

perf: arm_cspmu: Fix variable dereference warning

v6.4

April 2023

f462eb1d0df39499eff2407b2581ddf2fe89e744

arm64: defconfig: Enable ARM CoreSight PMU driver

June 2023

225d757012e0afa673d8c862e6fb39ed2f429b4d

perf: arm_cspmu: Set irq affinitiy only if overflow interrupt is used

v6.5

June 2023

71e0cb32d5fc61468e83ed962379af71bba8237e

perf/arm_cspmu: Fix event attribute type

7e51d05e43f19f394b3b0df01a22225143f9c5b5

perf: arm_cspmu: Add missing MODULE_DEVICE_TABLE

87b3b6d53efccbb64396675b35839180ef14ef40

ACPI/APMT: Don’t register invalid resource

d2e3bb51281875be23cb4726a59b03d0a53eb0d3

perf/arm_cspmu: Decouple APMT dependency

f9bd34e3753ea8f1433a3ba70f03a165a1416f98

perf/arm_cspmu: Clean up ACPI dependency

July 2023

3095e90eee5ea2d5658cab90b6da9c6d5d0a3bdf

coresight: etm4x: Allocate and device assign ‘struct etmv4_drvdata’ earlier

v6.6

4e3b9a6eae987c80330e5253754dab35acc2a63b

coresight: etm4x: Drop iomem ‘base’ argument from etm4_probe()

5a1c7097472fcde5745654e3a59f55140903d9cc

coresight: etm4x: Drop pid argument from etm4_probe()

73d779a03a76ac3fe26832cba3c9ad04194af595

coresight: etm4x: Change etm4_platform_driver driver for MMIO devices

3a2888aa1f962c55ca36119aebe67355c7bf54e4

coresight: platform: acpi: Ignore the absence of graph

134124acb57f8ad59634d0e4530812205bf55250

coresight: etm4x: Add ACPI support in platform driver

August 2023

1aa3d0274a4aac338ee45a3dfc3b17c944bcc2bc

arm_pmu: acpi: Add a representative platform device for TRBE

81e5ee471609848ee1ebf3beb2a46788113fe0eb

arm_pmu: acpi: Refactor arm_spe_acpi_register_device()

August 2023

4473949074c35072f598bd525ae51d5455f05745

perf vendor events arm64: Update N2 and V2 metrics and events using Arm telemetry repo

November 2023

15c7ef7341a2e54cfa12ac502c65d6fd2cce2b62

perf: arm_cspmu: Reject events meant for other PMUs

v6.7

October 2023

a16afcc58a8c5ebc65c852faf001f8f61f05e4ef

perf cs-etm: Fix incorrect or missing decoder for raw trace

August 2023

bfc653aa89cb05796d7b4e046600accb442c9b7a

perf: arm_cspmu: Separate Arm and vendor module

August 2023

17f8b216e02654a0b37127736ce78b32ccaa867b

coresight: trbe: Enable ACPI based TRBE devices

v6.8

4277f035d227e829133df284be7e35b7236a5b0f

coresight: trbe: Add a representative coresight_platform_data for TRBE

November 2023

a24d9d9dc096fc0d0bd85302c9a4fe4fe3b1107b

perf parse-events: Make legacy events lower priority than sysfs/JSON

January 2024

f4d9d9dcc70b96b5e5d7801bd5fbf8491b07b13d

arm64: Add Neoverse-V2 part

v6.10

dc6abbbde4b099e936cd5428e196d86a5e119aae

tools headers arm64: Sync arm64’s cputype.h with the kernel sources

July 2024

b6aa0de9a53a231eb068ce1e62b5e7ec9e30e627

perf cs-etm: Create decoders after both AUX and HW_ID search passes

v6.12

57880a7966be510cdaa08ab76b9d63e3df786bf0

perf: cs-etm: Allocate queues for all CPUs

77c123f53e97ad4bde0271eb671b71774a99ebf6

perf: cs-etm: Move traceid_list to each queue

19c3e4db38c5bf30c7e7b53dad5a464d7031dec4

perf: cs-etm: Create decoders based on the trace ID mappings

940007cee539fd07c7c274030f7f7252f8c5a5d7

perf: cs-etm: Only save valid trace IDs into files

1506af6db8c4abbe3d5dd573ec72b90f81abfcf7

perf: cs-etm: Support version 0.1 of HW_ID packets

022aa67b5ab9077d8f5bf02df5a7f0f2d4dfb909

perf: cs-etm: Print queue number in raw trace dump

34172002bdac28dabbb846f191a86454bb226c7a

coresight: Remove unused ETM Perf stubs

eda1d11979c03f0104ca59ec4a0478cd52fa20de

coresight: Clarify comments around the PID of the sink owner

acb0184fe9bca3bb7103dadc76ba9d38c969ca86

coresight: Move struct coresight_trace_id_map to common header

7e52877868ae2546ead8ba07cdf1d3e4c9e931f7

coresight: Expose map arguments in trace ID API

d53c8253c7822fbc524adcd950e7c6de6a229c99

coresight: Make CPU id map a property of a trace ID map

5ad628a7617607baac53745f8025638b967470a2

coresight: Use per-sink trace ID maps for Perf sessions

de0029fdde86092c75472c92e56a962f4edee0f6

coresight: Remove pending trace ID release mechanism

487eec8da80aef16229d30429f1b26090b1bf0eb

coresight: Emit sink ID in the HW_ID packets

988d40a4d4e7d671305bea501562a5d1a1d479fa

coresight: Make trace ID map spinlock local to the map

October 2024

fb98fa3bf86893e53fac7bc951f503caf4a6eb23

perf arm-spe: Rename arm_spe__synth_data_source_generic()

v6.13

50b8f1d5bf4ad7f09ef8012ccf5f94f741df827b

perf arm-spe: Rename the common data source encoding

56ae663e7636f2ce180201f0f18d7736c319a43f

perf arm-spe: Introduce arm_spe__is_homogeneous()

ba5e7169e5483a61899497e23fa18f7ef33aa827

perf arm-spe: Use metadata to decide the data source feature

6bcf54c89b3d8406433839f0e3b72c08b4a1caf3

perf arm-spe: Remove the unused ‘midr’ field

041c0e5715a65a1b653283b853b4ca973780607a

perf arm-spe: Add Neoverse-V2 to common data source encoding list

ea2ead4224fd3899f6dadd4c1fc526f32ec2246c

perf arm-spe: Add Cortex CPUs to common data source encoding list

October 2024

ac4c52956f62700803754ffba906e42126273956

perf: arm_cspmu: nvidia: remove unsupported SCF events

v6.14

5f7cd0dc98a658d6470bc738499e01172bc6007f

perf: arm_cspmu: nvidia: fix sysfs path in the kernel doc

ca26df4b1036bcad326170a6ddb5245f6d6e8d82

perf: arm_cspmu: nvidia: enable NVLINK-C2C port filtering

bce61d5c57647ca4565847217fe811260cc60173

perf: arm_cspmu: nvidia: monitor all ports by default

January 2025

d923782b041218ef3804b2fed87619b5b1a497f3

arm64: amu: Delay allocating cpumask for AMU FIE support

August 2024

004b500a9031973ba0d05edca860193f9a5938df

arch_topology: init capacity_freq_ref to 0

v6.15

January 2025

38e480d4fcac2e191e2f24f381aa8957865c49b2

cpufreq: Allow arch_freq_get_on_cpu to return an error

fbb4a4759b541d09ebb8e391d5fa7f9a5a0cad61

cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry

16d1e27475f673295f3eaac296dd835db3b8c4d4

arm64: Provide an AMU-based version of arch_freq_get_on_cpu

39b19974982e03bd7b950f33bc0855385845c9fb

arm64: Update AMU-based freq scale factor on entering idle

February 2025

20711efa91e8ba44149f5e2ed1cf81e5355650e5

arm64: Utilize for_each_cpu_wrap for reference lookup

The following table contains patches that support NVIDIA CUDA® features on Grace platforms.

Bare Metal Support: CUDA#

LKML Discussion

Git Commit

Git Description

Minimum Linux Kernel Release

December 2020

18b2db3b0385226b71cb3288474fa5a6e4a45474

mm: Convert page kmemcg type to a page memcg flag

v5.11

December 2020

368c0159d492d7fbdb5791b40c9263ec4e97a10f

RDMA/umem: Support importing dma-buf as user memory region

v5.12

March 2021

b392a198917020cac996fd207355211ecfcfad84

vfio/pci: remove vfio_pci_nvlink2

v5.13

April 2022

319561669a59d8e9206ab311ae5433ef92fd79d1

mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove()

v5.18

September 2022

fd35ca3d12cc9922d7d9a35f934e72132dbc4853

mm/migrate_device.c: copy pte dirty bit to page

v6.0

a3589e1d5fe39c3d9fdd291b111524b93d08bc32

mm/migrate_device.c: add missing flush_cache_page()

60bae73708963de4a17231077285bd9ff2f41c44

mm/migrate_device.c: flush TLB while holding PTL

Linux Kernel Configs#

This section provides information about the Linux Kernel config settings for the Grace platform.

The following table contains config settings that enable function and are required for bare metal support on the Grace platform.

Bare Metal Configs: Required#

Kernel Config

Description

CONFIG_NR_CPUS=512

Supports the maximum Grace configuration.

CONFIG_NODES_SHIFT=6

Supports the maximum Grace configuration.

CONFIG_ARM_SMMU_V3_SVA=y

Support shared virtual addressing.

CONFIG_ARM64_PMEM=y

Support persistent memory.

CONFIG_ARM_SDE_INTERFACE=y

Support RAS notifications.

CONFIG_BLK_DEV_PMEM=m

Enable persistent memory block device.

CONFIG_DEVICE_MIGRATION=y

Enable device physical page migration.

CONFIG_DEVICE_PRIVATE=y

Supports unaddressable device memory; only required when using NVIDIA GPU Driver.

CONFIG_GPIO_TEGRA186=y

Supports the GPIO interface.

CONFIG_HOTPLUG_PCI_PCIE=y

Supports the PCIe native hotplug.

CONFIG_IOMMU_DEFAULT_PASSTHROUGH=n

Disable IOMMU translation bypass for DMA. | Refer to Input-Output Memory Management Unit Passthrough in the NVIDIA Grace Performance Tuning Guide for more information.

CONFIG_IOMMU_SVA=y

Required for NVIDIA Unified Virtual Memory driver to detect and enable ATS support for the CUDA stack

CONFIG_PCIE_DPC=y

Supports downstream port containment.

CONFIG_PCIE_EDR=y

Enables the error disconnect recover support.

CONFIG_SPI_TEGRA210_QUAD=y

Support the QSPI controller.

CONFIG_TCG_TIS_SPI=y

Supports the TPM SPI interface.

CONFIG_MTD_SPI_NOR=y

Support the SPI NOR flash device.

CONFIG_IPMI_SSIF=m

Supports the SMBus interface to BMC.

arch/arm64/include/asm/irq.h:
#if defined(CONFIG_ARM_GIC_V3_ITS)
#define NR_IRQS (1 << 19)
#endif

Supports the maximum Grace configuration. | Not required when the kernel carries 721255b9826bd11c7a38b585905fc2dd0fb94e52.

CONFIG_ARCH_TEGRA_241_SOC=y

Supports reading Grace fuses. | This is only available on kernels that carry 8402074f30238ee1bdc70b843932cd7350830ab6.

CONFIG_TEGRA_IVC=y

Enables the Inter Processor Communication framework.

CONFIG_USB_XHCI_PCI_RENESAS=y|m

Enables the Renesas xHCI controller.

The following table contains the recommended config settings that provide performance improvements for certain workloads.

Bare Metal Configs: Recommended#

Kernel Config

Description

CONFIG_ARM64_64K_PAGES=y

Use 64K page size; required when using NVIDIA GPU Driver.

CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y

Set default CPU frequency governor to performance.

CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y

Supports the schedutil CPU frequency governor.

CONFIG_PREEMPT_DYNAMIC=y

Allows dynamic preemption tuning using preempt.

CONFIG_PREEMPT_NONE=y

Default dynamic preemption tuning to preempt=none for throughput.

CONFIG_DMABUF_HEAPS=y

Enables DMA-BUF memory heaps.

CONFIG_DMABUF_HEAPS_SYSTEM=y

Enables the system dmabuf heap.

CONFIG_DMI_SYSFS=y

Enables the export of raw DMI table data.

CONFIG_INIT_ON_ALLOC_DEFAULT_ON=n

Disables heap memory zeroing on allocation by default.

CONFIG_IOMMU_DEFAULT_DMA_LAZY=y

Improves IOMMU performance by enabling lazy mode.

The following table contains optional config settings that enable the performance tooling functions on Grace platforms.

Bare Metal Configs: Performance Tools#

Kernel Config

Description

CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU=m

Enables the ARM CoreSight PMU driver.

CONFIG_NVIDIA_CORESIGHT_PMU_ARCH_SYSTEM_PMU=m

Enables the NVIDIA ARM Coresight PMU driver.

CONFIG_ARM_SPE_PMU=m

Enables access to the ARM SPE registers.

The following table contains config settings that are required when supporting partner diagnostics on Grace platforms.

Bare Metal configs: Partner Diagnostics#

Kernel Config

Description

CONFIG_ACPI_APEI_EINJ=m

Provides a hardware error injection mechanism. | Used for debugging and testing APEI features.

CONFIG_ARM_FFA_TRANSPORT=m

Enables the Arm Firmware Framework driver.

CONFIG_ARM_FFA_SMCCC=y

Enables Arm Secure Monitor Call Calling Convention

CONFIG_CPU_FREQ_STAT=y

Exports CPU frequency statistics information through sysfs.

CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

Enables the “conservative” governor.

CONFIG_CPU_FREQ_GOV_ONDEMAND=y

Enables the “ondemand” governor.

CONFIG_CPU_FREQ_GOV_POWERSAVE=y

Enables the “powersave” governor.

CONFIG_CPU_FREQ_GOV_USERSPACE=y

Enables the “userspace” governor, which allows user-space utilities to set the CPU frequency

CONFIG_STRICT_DEVMEM=y

Filter access to the /dev/mem character device that is used to access the physical memory areas.

CONFIG_SENSORS_ACPI_POWER=m

Enables power telemetry through hwmon. | Enable when sysfs endpoints for hardware power monitoring are not present.