From: Koba Ko <kobak@nvidia.com>
To: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Rob Herring <robh@kernel.org>,
Breno Leitao <leitao@debian.org>
Cc: Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
Fenghua Yu <fenghuay@nvidia.com>, Tushar Dave <tdave@nvidia.com>,
Kai-Heng Feng <kaihengf@nvidia.com>,
rupakr@nvidia.com, mohammedk@nvidia.com
Subject: [RFC PATCH v2 0/3] arm64: expose CPU prefetch and cache modulation controls
Date: Wed, 26 Aug 2026 02:16:58 +0800 [thread overview]
Message-ID: <20260825181701.3-1-kobak@nvidia.com> (raw)
This series adds CONFIG_ARM64_CPUMOD, a default-off arm64 interface for
controlled performance characterization of selected implementation-defined
CPU prefetch and cache-management fields. It exposes a small set of named,
per-CPU attributes under the path below, with writable control fields
range-checked before register state is changed:
/sys/devices/system/cpu/cpuN/cpumod/
The directory is created for online CPUs whose MIDR matches a recognized
Grace or Vera profile, with common and profile-specific attributes selected
for that CPU. Register accesses execute on the CPU that owns the sysfs
instance, and CPU hotplug creates or removes the per-CPU subtree as the CPU
transitions online or offline. Unsupported CPU profiles are skipped without
blocking module load or CPU hotplug.
The register-backed attributes are root-only read/write files. Reads return
the live value from the synchronous target-CPU callback rather than relying
on persistent per-attribute sysfs storage. affected_cpus remains
world-readable and read-only.
Changes since v1:
- Remove redundant GPL boilerplate from the new source file while retaining
the SPDX identifier and NVIDIA copyright notice.
- Address Rob Herring's ABI feedback by adding standard
Documentation/ABI/testing/sysfs-devices-system-cpu records and keeping the
arm64 guide as a pointer to that ABI, without a second attribute list.
- Address Breno Leitao's access/readback feedback by returning live
synchronous target-CPU register reads, changing the six register-backed
controls to mode 0600, documenting affected_cpus as 0444, and adding
deterministic selftest mode checks.
Koba Ko (3):
arm64: add CPU prefetch and cache modulation sysfs interface
Documentation/arch/arm64: document arm_cpumod
selftests: arm64: add arm_cpumod kselftest
.../ABI/testing/sysfs-devices-system-cpu | 77 +++
Documentation/arch/arm64/arm-cpumod.rst | 66 +++
Documentation/arch/arm64/index.rst | 1 +
arch/arm64/Kconfig | 17 +
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/arm_cpumod.c | 458 +++++++++++++++
arch/arm64/kernel/arm_cpumod_internal.h | 93 +++
tools/testing/selftests/arm64/Makefile | 2 +-
.../selftests/arm64/arm_cpumod/Makefile | 5 +
.../selftests/arm64/arm_cpumod/arm_cpumod.sh | 543 ++++++++++++++++++
10 files changed, 1262 insertions(+), 1 deletion(-)
create mode 100644 Documentation/arch/arm64/arm-cpumod.rst
create mode 100644 arch/arm64/kernel/arm_cpumod.c
create mode 100644 arch/arm64/kernel/arm_cpumod_internal.h
create mode 100644 tools/testing/selftests/arm64/arm_cpumod/Makefile
create mode 100755 tools/testing/selftests/arm64/arm_cpumod/arm_cpumod.sh
--
2.43.0
next reply other threads:[~2026-08-25 18:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 18:16 Koba Ko [this message]
2026-08-25 18:16 ` [RFC PATCH v2 1/3] arm64: add CPU prefetch and cache modulation sysfs interface Koba Ko
2026-08-25 18:17 ` [RFC PATCH v2 2/3] Documentation/arch/arm64: document arm_cpumod Koba Ko
2026-08-25 18:17 ` [RFC PATCH v2 3/3] selftests: arm64: add arm_cpumod kselftest Koba Ko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260825181701.3-1-kobak@nvidia.com \
--to=kobak@nvidia.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=fenghuay@nvidia.com \
--cc=kaihengf@nvidia.com \
--cc=leitao@debian.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mohammedk@nvidia.com \
--cc=robh@kernel.org \
--cc=rupakr@nvidia.com \
--cc=skhan@linuxfoundation.org \
--cc=tdave@nvidia.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.