Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
236 commits
Select commit Hold shift + click to select a range
4012f93
Revert "fs/resctrl: Fix double-add of pseudo-locked region's RMID to …
x56Jason Sep 15, 2026
740c636
Revert "x86/resctrl: Fix miscount of bandwidth event when reactivatin…
x56Jason Apr 29, 2026
ac00199
Revert "fs/resctrl: Eliminate false positive lockdep warning when rea…
x56Jason Apr 29, 2026
a393545
Revert "x86,fs/resctrl: Remove inappropriate references to cacheinfo …
x56Jason Apr 29, 2026
976f470
x86/resctrl: Switch to new Intel CPU model defines
aegl Apr 24, 2024
242b6f6
x86/resctrl: Slightly clean-up mbm_config_show()
tititiou36 Jul 13, 2024
d8fac8c
x86/resctrl: Use kthread_run_on_cpu()
Aug 7, 2024
4ee6ffc
x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags
babumoger Dec 6, 2024
55544ce
x86/resctrl: Prepare for per-CTRL_MON group mba_MBps control
aegl Dec 6, 2024
38a2e75
x86/resctrl: Modify update_mba_bw() to use per CTRL_MON group event
aegl Dec 6, 2024
5d66667
x86/resctrl: Compute memory bandwidth for all supported events
aegl Dec 6, 2024
c7065c7
x86/resctrl: Make mba_sc use total bandwidth if local is not supported
aegl Dec 6, 2024
97409b7
x86/resctrl: Add "mba_MBps_event" file to CTRL_MON directories
aegl Dec 6, 2024
102ffef
x86/resctrl: Add write option to "mba_MBps_event" file
aegl Dec 6, 2024
84b98e5
x86/resctrl: Fix allocation of cleanest CLOSID on platforms with no m…
Mar 11, 2025
1dac166
x86/resctrl: Add a helper to avoid reaching into the arch code resour…
Mar 11, 2025
8ec0284
x86/resctrl: Remove fflags from struct rdt_resource
Mar 11, 2025
50bcd10
x86/resctrl: Use schema type to determine how to parse schema values
Mar 11, 2025
c93bacd
x86/resctrl: Use schema type to determine the schema format string
Mar 11, 2025
111b8ed
x86/resctrl: Remove data_width and the tabular format
Mar 11, 2025
a34a4ab
x86/resctrl: Add max_bw to struct resctrl_membw
Mar 11, 2025
d6b9f31
x86/resctrl: Generate default_ctrl instead of sharing it
Mar 11, 2025
4803be3
x86/resctrl: Add helper for setting CPU default properties
Mar 11, 2025
75c6737
x86/resctrl: Remove rdtgroup from update_cpu_closid_rmid()
Mar 11, 2025
0b48184
x86/resctrl: Expose resctrl fs's init function to the rest of the kernel
Mar 11, 2025
d226cba
x86/resctrl: Move rdt_find_domain() to be visible to arch and fs code
Mar 11, 2025
ade8d3e
x86/resctrl: Move resctrl types to a separate header
Mar 11, 2025
9df29b8
x86/resctrl: Add an arch helper to reset one resource
Mar 11, 2025
a20242f
x86/resctrl: Move monitor exit work to a resctrl exit call
Mar 11, 2025
5725ef4
x86/resctrl: Move monitor init work to a resctrl init call
Mar 11, 2025
1b3426f
x86/resctrl: Rewrite and move the for_each_*_rdt_resource() walkers
Mar 11, 2025
993d7aa
x86/resctrl: Move the is_mbm_*_enabled() helpers to asm/resctrl.h
Mar 11, 2025
9ddeacd
x86/resctrl: Add resctrl_arch_is_evt_configurable() to abstract BMEC
Mar 11, 2025
ec96656
x86/resctrl: Change mon_event_config_{read,write}() to be arch helpers
Mar 11, 2025
328d689
x86/resctrl: Move mba_mbps_default_event init to filesystem code
Mar 11, 2025
fc3e83b
x86/resctrl: Move mbm_cfg_mask to struct rdt_resource
Mar 11, 2025
f49c3eb
x86/resctrl: Add resctrl_arch_ prefix to pseudo lock functions
Mar 11, 2025
40aaccd
x86/resctrl: Allow an architecture to disable pseudo lock
Mar 11, 2025
e845408
x86/resctrl: Make prefetch_disable_bits belong to the arch code
Mar 11, 2025
4df97c8
x86/resctrl: Make resctrl_arch_pseudo_lock_fn() take a plr
Mar 11, 2025
d51e7de
x86/resctrl: Move RFTYPE flags to be managed by resctrl
Mar 11, 2025
87d0399
x86/resctrl: Handle throttle_mode for SMBA resources
Mar 11, 2025
a293089
x86/resctrl: Move get_config_index() to a header
Mar 11, 2025
88c3168
x86/resctrl: Move get_{mon,ctrl}_domain_from_cpu() to live with their…
Mar 11, 2025
9056164
cpumask: kernel-doc cleanups and additions
rddunlap Aug 1, 2023
d1f4f0b
cpumask: add cpumask_any_and_but()
mrutland-arm Apr 3, 2024
257f968
cpumask: add cpumask_weight_andnot()
YuryNorov Jan 29, 2024
9417c71
cpumask: Introduce cpumask_first_and_and()
Apr 16, 2024
2c616d2
cpumask: Switch from inline to __always_inline
computersforpeace Jul 19, 2024
3dbd1c5
kernfs: sysfs: support custom llseek method for sysfs entries
Sep 25, 2023
b9bec3c
kernfs: Convert kernfs_walk_ns() from strlcpy() to strscpy()
kees Dec 12, 2023
0324bf2
kernfs: Convert kernfs_name_locked() from strlcpy() to strscpy()
kees Dec 12, 2023
db0adf4
kernfs: mount: Remove unnecessary ‘NULL’ values from knparent
Apr 15, 2024
2b83250
kernfs: Acquire kernfs_rwsem in kernfs_notify_workfn().
Feb 13, 2025
a8a971b
kernfs: Acquire kernfs_rwsem in kernfs_get_parent_dentry().
Feb 13, 2025
7263150
kernfs: Acquire kernfs_rwsem in kernfs_node_dentry().
Feb 13, 2025
32684a4
kernfs: Use RCU to access kernfs_node::parent.
Feb 13, 2025
22caefa
kernfs: Use RCU to access kernfs_node::name.
Feb 13, 2025
846320f
kernfs: annotate different lockdep class for of->mutex of writable files
amir73il Apr 5, 2024
c4bc8fa
kernfs: Drop kernfs_rwsem while invoking lookup_positive_unlocked().
Feb 18, 2025
11ff798
kernfs: Move dput() outside of the RCU section.
Feb 21, 2025
d243967
x86/resctrl: Fix rdtgroup_mkdir()'s unlocked use of kernfs_node::name
Apr 7, 2025
8b9f8e1
cpumask: Relax cpumask_any_but()
YuryNorov May 15, 2025
029a5ab
find: Add find_first_andnot_bit()
YuryNorov May 15, 2025
b0b371f
cpumask: Add cpumask_{first,next}_andnot() API
YuryNorov May 15, 2025
c3ecf0e
x86/resctrl: Optimize cpumask_any_housekeeping()
YuryNorov May 15, 2025
82769df
x86/resctrl: Remove the limit on the number of CLOSID
May 15, 2025
abb9bc9
x86/resctrl: Rename resctrl_sched_in() to begin with "resctrl_arch_"
May 15, 2025
dcf9c75
x86/resctrl: Check all domains are offline in resctrl_exit()
May 15, 2025
43c3e94
x86/resctrl: Resctrl_exit() teardown resctrl but leave the mount point
May 15, 2025
d4054bf
x86/resctrl: Drop __init/__exit on assorted symbols
May 15, 2025
fa0ab15
x86/resctrl: Move is_mba_sc() out of core.c
May 15, 2025
7ef9a11
x86/resctrl: Add end-marker to the resctrl_event_id enum
May 15, 2025
3000cc3
x86/resctrl: Expand the width of domid by replacing mon_data_bits
May 15, 2025
0350a78
x86/resctrl: Split trace.h
May 15, 2025
344ec59
x86/resctrl: Add 'resctrl' to the title of the resctrl documentation
May 15, 2025
66362ac
fs/resctrl: Add boiler plate for external resctrl code
May 15, 2025
126c8b8
x86/resctrl: Move the filesystem bits to headers visible to fs/resctrl
May 15, 2025
e03b780
x86/resctrl: Move enum resctrl_event_id to resctrl.h
May 15, 2025
fa89b62
x86/resctrl: Fix types in resctrl_arch_mon_ctx_{alloc,free}() stubs
May 15, 2025
f01dd14
x86/resctrl: Move pseudo lock prototypes to include/linux/resctrl.h
May 15, 2025
d537557
x86/resctrl: Squelch whitespace anomalies in resctrl core code
May 15, 2025
e295146
x86/resctrl: Prefer alloc(sizeof(*foo)) idiom in rdt_init_fs_context()
May 15, 2025
62666fe
x86/resctrl: Relax some asm #includes
May 15, 2025
aa551cb
x86/resctrl: Always initialise rid field in rdt_resources_all[]
May 15, 2025
a8ccae7
x86,fs/resctrl: Move the resctrl filesystem code to live in /fs/resctrl
May 15, 2025
6cebc88
fs/resctrl: Restore the rdt_last_cmd_clear() calls after acquiring rd…
henryZe Jun 3, 2025
40ac10f
x86,fs/resctrl: Remove inappropriate references to cacheinfo in the r…
May 30, 2025
e73e319
resctrl: get rid of pointless debugfs_file_{get,put}()
Jul 2, 2025
9fa4880
fs/resctrl: Eliminate false positive lockdep warning when reading SNC…
rchatre Sep 8, 2025
9d9aea6
fs/resctrl: Optimize code in rdt_get_tree()
TANSHP Jun 23, 2025
5e8d87b
x86,fs/resctrl: Consolidate monitor event descriptions
aegl Sep 5, 2025
df12f5a
x86,fs/resctrl: Replace architecture event enabled checks
aegl Sep 5, 2025
3259c75
x86/resctrl: Remove the rdt_mon_features global variable
aegl Sep 5, 2025
b434a23
x86,fs/resctrl: Prepare for more monitor events
aegl Sep 5, 2025
3226f1b
x86/cpufeatures: Add support for Assignable Bandwidth Monitoring Coun…
babumoger Sep 5, 2025
e53bf37
x86,fs/resctrl: Consolidate monitoring related data from rdt_resource
babumoger Sep 5, 2025
05e278b
x86,fs/resctrl: Detect Assignable Bandwidth Monitoring feature details
babumoger Sep 5, 2025
f9e4b56
x86/resctrl: Add support to enable/disable AMD ABMC feature
babumoger Sep 5, 2025
7e50f95
fs/resctrl: Introduce mbm_cntr_cfg to track assignable counters per d…
babumoger Sep 5, 2025
5c3652c
x86/resctrl: Add data structures and definitions for ABMC assignment
babumoger Sep 5, 2025
5b8b276
fs/resctrl: Introduce event configuration field in struct mon_evt
babumoger Sep 5, 2025
738499a
x86,fs/resctrl: Implement resctrl_arch_config_cntr() to assign a coun…
babumoger Sep 5, 2025
1fbbf4e
fs/resctrl: Add the functionality to assign MBM events
babumoger Sep 5, 2025
3c60daf
fs/resctrl: Add the functionality to unassign MBM events
babumoger Sep 5, 2025
e7078c9
fs/resctrl: Pass struct rdtgroup instead of individual members
babumoger Sep 5, 2025
9509410
fs/resctrl: Introduce counter ID read, reset calls in mbm_event mode
babumoger Sep 5, 2025
d78caf8
x86/resctrl: Refactor resctrl_arch_rmid_read()
babumoger Sep 5, 2025
e628e93
x86/resctrl: Implement resctrl_arch_reset_cntr() and resctrl_arch_cnt…
babumoger Sep 5, 2025
abfc577
fs/resctrl: Support counter read/reset with mbm_event assignment mode
babumoger Sep 5, 2025
3666d57
x86/resctrl: Configure mbm_event mode if supported
babumoger Sep 5, 2025
13efd35
x86/resctrl: Fix miscount of bandwidth event when reactivating previo…
babumoger Oct 10, 2025
8148dff
x86,fs/resctrl: Fix NULL pointer dereference with events force-disabl…
babumoger Oct 16, 2025
a6c5373
x86/resctrl: Support Sub-NUMA Cluster (SNC) mode on Clearwater Forest
yu-chen-surf Sep 26, 2025
f8a84a1
fs/resctrl: Consider sparse masks when initializing new group's alloc…
rchatre Nov 18, 2025
5f4867c
x86,fs/resctrl: Improve domain type checking
aegl Dec 17, 2025
6e11579
x86/resctrl: Move L3 initialization into new helper function
aegl Dec 17, 2025
59a869a
x86/resctrl: Refactor domain_remove_cpu_mon() ready for new domain types
aegl Dec 17, 2025
a8c7b2a
x86/resctrl: Clean up domain_remove_cpu_ctrl()
aegl Dec 17, 2025
123fa75
x86,fs/resctrl: Refactor domain create/remove using struct rdt_domain…
aegl Dec 17, 2025
e503282
fs/resctrl: Split L3 dependent parts out of __mon_event_count()
aegl Dec 17, 2025
b813e02
x86,fs/resctrl: Use struct rdt_domain_hdr when reading counters
aegl Dec 17, 2025
a8e874f
x86,fs/resctrl: Rename struct rdt_mon_domain and rdt_hw_mon_domain
aegl Dec 17, 2025
fd32fef
x86,fs/resctrl: Rename some L3 specific functions
aegl Dec 17, 2025
b098744
fs/resctrl: Make event details accessible to functions when reading e…
aegl Dec 17, 2025
bfefcd7
x86,fs/resctrl: Handle events that can be read from any CPU
aegl Dec 17, 2025
e8ab639
x86,fs/resctrl: Support binary fixed point event counters
aegl Dec 17, 2025
5b338d5
x86,fs/resctrl: Add an architectural hook called for first mount
aegl Jan 8, 2026
dda4509
x86,fs/resctrl: Add and initialize a resource for package scope monit…
aegl Dec 17, 2025
2a195b4
fs/resctrl: Emphasize that L3 monitoring resource is required for sum…
aegl Dec 17, 2025
3708efe
x86/resctrl: Discover hardware telemetry events
aegl Jan 8, 2026
6fafafe
x86,fs/resctrl: Fill in details of events for performance and energy …
aegl Dec 17, 2025
0e731d3
x86,fs/resctrl: Add architectural event pointer
aegl Dec 17, 2025
9ab572d
x86/resctrl: Find and enable usable telemetry events
aegl Dec 17, 2025
66242d3
x86/resctrl: Read telemetry events
aegl Dec 17, 2025
4c888a2
fs/resctrl: Refactor mkdir_mondata_subdir()
aegl Dec 17, 2025
cf60c32
fs/resctrl: Refactor rmdir_mondata_subdir_allrdtgrp()
aegl Dec 17, 2025
adee4fb
x86,fs/resctrl: Handle domain creation/deletion for RDT_RESOURCE_PERF…
aegl Dec 17, 2025
347298c
x86/resctrl: Add energy/perf choices to rdt boot option
aegl Dec 17, 2025
8040177
x86/resctrl: Handle number of RMIDs supported by RDT_RESOURCE_PERF_PKG
aegl Dec 17, 2025
3a18c04
fs/resctrl: Move allocation/free of closid_num_dirty_rmid[]
aegl Dec 17, 2025
67b7472
x86,fs/resctrl: Compute number of RMIDs as minimum across resources
aegl Dec 17, 2025
b97284f
fs/resctrl: Move RMID initialization to first mount
aegl Dec 17, 2025
2293195
x86/resctrl: Enable RDT_RESOURCE_PERF_PKG
aegl Jan 8, 2026
72e98fc
x86,fs/resctrl: Update documentation for telemetry events
aegl Dec 17, 2025
a5548c6
perf/x86/intel/uncore: Add per-scheduler IMC CAS count events
ZideChen0 Feb 10, 2026
af81963
selftests/resctrl: Fix wrong format specifier
maciejwieczorretman Oct 13, 2023
241e377
selftests/resctrl: Correct benchmark command help
ij-intel Sep 4, 2023
d3faf39
selftests/resctrl: Reorder resctrl FS prep code and benchmark_cmd init
ij-intel Sep 4, 2023
0bdbcac
selftests/resctrl: Remove ben_count variable
ij-intel Sep 4, 2023
2c188b6
selftests/resctrl: Cleanup benchmark argument parsing
ij-intel Sep 4, 2023
47a40a7
selftests/resctrl: Fix schemata write error check
maciejwieczorretman Oct 10, 2023
a5cf59a
selftests/resctrl: Fix MBM test failure when MBA unavailable
ij-intel Oct 18, 2023
493433e
selftests/resctrl: Return -1 instead of errno on error
ij-intel Dec 15, 2023
05e3e14
selftests/resctrl: Don't use ctrlc_handler() outside signal handling
ij-intel Dec 15, 2023
aa731d0
selftests/resctrl: Change function comments to say < 0 on error
ij-intel Dec 15, 2023
0e8910d
selftests/resctrl: Refactor get_cbm_mask() and rename to get_full_cbm()
ij-intel Dec 15, 2023
3441630
selftests/resctrl: Mark get_cache_size() cache_type const
ij-intel Dec 15, 2023
f1e09b3
selftests/resctrl: Create cache_portion_size() helper
ij-intel Dec 15, 2023
7250fb2
selftests/resctrl: Exclude shareable bits from schemata in CAT test
ij-intel Dec 15, 2023
bd4f8c3
selftests/resctrl: Split measure_cache_vals()
ij-intel Dec 15, 2023
8619b24
selftests/resctrl: Split show_cache_info() to test specific and gener…
ij-intel Dec 15, 2023
167cb99
selftests/resctrl: Remove unnecessary __u64 -> unsigned long conversion
ij-intel Dec 15, 2023
691a5ca
selftests/resctrl: Remove nested calls in perf event handling
ij-intel Dec 15, 2023
e86d004
selftests/resctrl: Consolidate naming of perf event related things
ij-intel Dec 15, 2023
03e1711
selftests/resctrl: Improve perf init
ij-intel Dec 15, 2023
3e999f7
selftests/resctrl: Convert perf related globals to locals
ij-intel Dec 15, 2023
adbf691
selftests/resctrl: Move cat_val() to cat_test.c and rename to cat_test()
ij-intel Dec 15, 2023
f853eb6
selftests/resctrl: Open perf fd before start & add error handling
ij-intel Dec 15, 2023
297e3b4
selftests/resctrl: Replace file write with volatile variable
ij-intel Dec 15, 2023
f7ee799
selftests/resctrl: Read in less obvious order to defeat prefetch opti…
ij-intel Dec 15, 2023
fd81cf0
selftests/resctrl: Rewrite Cache Allocation Technology (CAT) test
ij-intel Dec 15, 2023
90876be
selftests/resctrl: Restore the CPU affinity after CAT test
ij-intel Dec 15, 2023
306583c
selftests/resctrl: Create struct for input parameters
ij-intel Dec 15, 2023
d4b80ec
selftests/resctrl: Introduce generalized test framework
ij-intel Dec 15, 2023
69721ca
selftests/resctrl: Pass write_schemata() resource instead of test name
ij-intel Dec 15, 2023
b2b41d9
selftests/resctrl: Add helper to convert L2/3 to integer
ij-intel Dec 15, 2023
f555904
selftests/resctrl: Rename resource ID to domain ID
ij-intel Dec 15, 2023
20f9a5e
selftests/resctrl: Get domain id from cache id
ij-intel Dec 15, 2023
cef47ae
selftests/resctrl: Add test groups and name L3 CAT test L3_CAT
ij-intel Feb 16, 2024
1978c61
selftests/resctrl: Add a helper for the non-contiguous test
maciejwieczorretman Feb 16, 2024
693dafe
selftests/resctrl: Split validate_resctrl_feature_request()
maciejwieczorretman Feb 16, 2024
3a992bf
selftests/resctrl: Add resource_info_file_exists()
maciejwieczorretman Feb 16, 2024
45f7e0c
selftests/resctrl: Add non-contiguous CBMs CAT test
maciejwieczorretman Feb 16, 2024
2755750
selftests/resctrl: Add cleanup function to test framework
maciejwieczorretman Feb 27, 2024
3f81d27
selftests/resctrl: Simplify cleanup in ctrl-c handler
maciejwieczorretman Feb 27, 2024
86ca5a1
selftests/resctrl: Move cleanups out of individual tests
maciejwieczorretman Feb 27, 2024
a386998
selftests/resctrl: ksft_exit_skip() does not return
nathanchance Apr 24, 2024
3ff36e5
selftests/resctrl: fix clang build warnings related to abs(), labs() …
johnhubbard May 8, 2024
3e9b26c
selftests/resctrl: Fix non-contiguous CBM for AMD
babumoger Jun 11, 2024
5e42a06
selftests/resctrl: Calculate resctrl FS derived mem bw over sleep(1) …
ij-intel Jun 10, 2024
7eee09a
selftests/resctrl: Make "bandwidth" consistent in comments & prints
ij-intel Jun 10, 2024
3c693ee
selftests/resctrl: Consolidate get_domain_id() into resctrl_val()
ij-intel Jun 10, 2024
a99bb2f
selftests/resctrl: Use correct type for pids
ij-intel Jun 10, 2024
44c0b6b
selftests/resctrl: Cleanup bm_pid and ppid usage & limit scope
ij-intel Jun 10, 2024
d9c6c4b
selftests/resctrl: Rename measure_vals() to measure_mem_bw_vals() & d…
ij-intel Jun 10, 2024
be32a68
selftests/resctrl: Simplify mem bandwidth file code for MBA & MBM tests
ij-intel Jun 10, 2024
9e056c7
selftests/resctrl: Add ->measure() callback to resctrl_val_param
ij-intel Jun 10, 2024
6160a60
selftests/resctrl: Add ->init() callback into resctrl_val_param
ij-intel Jun 10, 2024
1d7ed02
selftests/resctrl: Simplify bandwidth report type handling
ij-intel Jun 10, 2024
40703f5
selftests/resctrl: Make some strings passed to resctrlfs functions const
ij-intel Jun 10, 2024
9265db5
selftests/resctrl: Convert ctrlgrp & mongrp to pointers
ij-intel Jun 10, 2024
6b844f4
selftests/resctrl: Remove mongrp from MBA test
ij-intel Jun 10, 2024
9e6cf49
selftests/resctrl: Remove mongrp from CMT test
ij-intel Jun 10, 2024
137b3d5
selftests/resctrl: Remove test name comparing from write_bm_pid_to_re…
ij-intel Jun 10, 2024
801837f
selftests:resctrl: Fix build failure on archs without __cpuid_count()
shuahkh Sep 5, 2024
fce188c
selftests/resctrl: Make functions only used in same file static
rchatre Oct 24, 2024
826d035
selftests/resctrl: Print accurate buffer size as part of MBM results
rchatre Oct 24, 2024
6bbcd19
selftests/resctrl: Make wraparound handling obvious
rchatre Oct 24, 2024
92bed07
selftests/resctrl: Remove "once" parameter required to be false
rchatre Oct 24, 2024
cf64af9
selftests/resctrl: Only support measured read operation
rchatre Oct 24, 2024
4aa5167
selftests/resctrl: Remove unused measurement code
rchatre Oct 24, 2024
305cfca
selftests/resctrl: Make benchmark parameter passing robust
rchatre Oct 24, 2024
8f00f8e
selftests/resctrl: Ensure measurements skip initialization of default…
rchatre Oct 24, 2024
ceb4201
selftests/resctrl: Use cache size to determine "fill_buf" buffer size
rchatre Oct 24, 2024
ded4b40
selftests/resctrl: Do not compare performance counters and resctrl at…
rchatre Oct 24, 2024
ce86058
selftests/resctrl: Keep results from first test run
rchatre Oct 24, 2024
02bdac6
selftests/resctrl: Replace magic constants used as array size
rchatre Oct 24, 2024
6470a22
selftests/resctrl: Adjust effective L3 cache size with SNC enabled
maciejwieczorretman Dec 16, 2024
02af41c
selftests/resctrl: Discover SNC kernel support and adjust messages
maciejwieczorretman Dec 16, 2024
7a9cb79
selftests/resctrl: Fix a division by zero error on Hygon
shenxiaochen Dec 17, 2025
5a4fa7e
selftests/resctrl: Define CPU vendor IDs as bits to match usage
shenxiaochen Dec 17, 2025
4bcfdd2
selftests/resctrl: Add CPU vendor detection for Hygon
shenxiaochen Dec 17, 2025
509c45e
selftests/resctrl: Fix non-contiguous CBM check for Hygon
shenxiaochen Dec 17, 2025
0ba8c5b
selftests/resctrl: Improve accuracy of cache occupancy test
rchatre Apr 4, 2026
73c9096
selftests/resctrl: Reduce interference from L2 occupancy during cache…
rchatre Apr 4, 2026
b258a52
selftests/resctrl: Do not store iMC counter value in counter config s…
rchatre Apr 4, 2026
04b1242
selftests/resctrl: Prepare for parsing multiple events per iMC
rchatre Apr 4, 2026
2a1a727
selftests/resctrl: Support multiple events associated with iMC
rchatre Apr 4, 2026
4ad2314
selftests/resctrl: Increase size of buffer used in MBM and MBA tests
rchatre Apr 4, 2026
6e240e9
selftests/resctrl: Raise threshold at which MBM and PMU values are co…
rchatre Apr 4, 2026
0418626
selftests/resctrl: Remove requirement on cache miss rate
rchatre Apr 4, 2026
481f739
selftests/resctrl: Simplify perf usage in CAT test
rchatre Apr 4, 2026
01a280c
selftests/resctrl: Reduce L2 impact on CAT test
rchatre Apr 4, 2026
1ad2b87
x86: config: Enable Intel AET
x56Jason May 13, 2026
ae9f46c
fs/resctrl: Fix double-add of pseudo-locked region's RMID to free list
rchatre Jul 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5483,9 +5483,13 @@
rdt= [HW,X86,RDT]
Turn on/off individual RDT features. List is:
cmt, mbmtotal, mbmlocal, l3cat, l3cdp, l2cat, l2cdp,
mba, smba, bmec.
mba, smba, bmec, energy[:guid], perf[:guid].
E.g. to turn on cmt and turn off mba use:
rdt=cmt,!mba
To turn off all energy telemetry monitoring and ensure that
perf telemetry monitoring associated with guid 0x12345
is enabled use:
rdt=!energy,perf:0x12345

reboot= [KNL]
Format (x86 or x86_64):
Expand Down
1 change: 0 additions & 1 deletion Documentation/arch/x86/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ x86-specific Documentation
pti
mds
microcode
resctrl
tsx_async_abort
buslock
usb-legacy-support
Expand Down
1 change: 1 addition & 0 deletions Documentation/filesystems/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ Documentation for filesystem implementations.
qnx6
ramfs-rootfs-initramfs
relay
resctrl
romfs
smb/index
spufs/index
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>

===========================================
User Interface for Resource Control feature
===========================================
=====================================================
User Interface for Resource Control feature (resctrl)
=====================================================

:Copyright: |copy| 2016 Intel Corporation
:Authors: - Fenghua Yu <fenghua.yu@intel.com>
Expand Down Expand Up @@ -167,13 +167,12 @@ with respect to allocation:
bandwidth percentages are directly applied to
the threads running on the core

If RDT monitoring is available there will be an "L3_MON" directory
If L3 monitoring is available there will be an "L3_MON" directory
with the following files:

"num_rmids":
The number of RMIDs available. This is the
upper bound for how many "CTRL_MON" + "MON"
groups can be created.
The number of RMIDs supported by hardware for
L3 monitoring events.

"mon_features":
Lists the monitoring events if
Expand Down Expand Up @@ -261,6 +260,24 @@ with the following files:
bytes) at which a previously used LLC_occupancy
counter can be considered for re-use.

If telemetry monitoring is available there will be a "PERF_PKG_MON" directory
with the following files:

"num_rmids":
The number of RMIDs for telemetry monitoring events.

On Intel resctrl will not enable telemetry events if the number of
RMIDs that can be tracked concurrently is lower than the total number
of RMIDs supported. Telemetry events can be force-enabled with the
"rdt=" kernel parameter, but this may reduce the number of
monitoring groups that can be created.

"mon_features":
Lists the telemetry monitoring events that are enabled on this system.

The upper bound for how many "CTRL_MON" + "MON" can be created
is the smaller of the L3_MON and PERF_PKG_MON "num_rmids" values.

Finally, in the top level of the "info" directory there is a file
named "last_cmd_status". This is reset with every "command" issued
via the file system (making new directories or writing to any of the
Expand Down Expand Up @@ -366,20 +383,51 @@ When control is enabled all CTRL_MON groups will also contain:
When monitoring is enabled all MON groups will also contain:

"mon_data":
This contains a set of files organized by L3 domain and by
RDT event. E.g. on a system with two L3 domains there will
be subdirectories "mon_L3_00" and "mon_L3_01". Each of these
directories have one file per event (e.g. "llc_occupancy",
"mbm_total_bytes", and "mbm_local_bytes"). In a MON group these
files provide a read out of the current value of the event for
all tasks in the group. In CTRL_MON groups these files provide
the sum for all tasks in the CTRL_MON group and all tasks in
This contains directories for each monitor domain.

If L3 monitoring is enabled, there will be a "mon_L3_XX" directory for
each instance of an L3 cache. Each directory contains files for the enabled
L3 events (e.g. "llc_occupancy", "mbm_total_bytes", and "mbm_local_bytes").

If telemetry monitoring is enabled, there will be a "mon_PERF_PKG_YY"
directory for each physical processor package. Each directory contains
files for the enabled telemetry events (e.g. "core_energy". "activity",
"uops_retired", etc.)

The info/`*`/mon_features files provide the full list of enabled
event/file names.

"core energy" reports a floating point number for the energy (in Joules)
consumed by cores (registers, arithmetic units, TLB and L1/L2 caches)
during execution of instructions summed across all logical CPUs on a
package for the current monitoring group.

"activity" also reports a floating point value (in Farads). This provides
an estimate of work done independent of the frequency that the CPUs used
for execution.

Note that "core energy" and "activity" only measure energy/activity in the
"core" of the CPU (arithmetic units, TLB, L1 and L2 caches, etc.). They
do not include L3 cache, memory, I/O devices etc.

All other events report decimal integer values.

In a MON group these files provide a read out of the current value of
the event for all tasks in the group. In CTRL_MON groups these files
provide the sum for all tasks in the CTRL_MON group and all tasks in
MON groups. Please see example section for more details on usage.

On systems with Sub-NUMA Cluster (SNC) enabled there are extra
directories for each node (located within the "mon_L3_XX" directory
for the L3 cache they occupy). These are named "mon_sub_L3_YY"
where "YY" is the node number.

When the 'mbm_event' counter assignment mode is enabled, reading
an MBM event of a MON group returns 'Unassigned' if no hardware
counter is assigned to it. For CTRL_MON groups, 'Unassigned' is
returned if the MBM event does not have an assigned counter in the
CTRL_MON group nor in any of its associated MON groups.

"mon_hw_id":
Available only with debug option. The identifier used by hardware
for the monitor group. On x86 this is the RMID.
Expand Down
4 changes: 3 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -18108,9 +18108,11 @@ M: Fenghua Yu <fenghua.yu@intel.com>
M: Reinette Chatre <reinette.chatre@intel.com>
L: linux-kernel@vger.kernel.org
S: Supported
F: Documentation/arch/x86/resctrl*
F: Documentation/filesystems/resctrl.rst
F: arch/x86/include/asm/resctrl.h
F: arch/x86/kernel/cpu/resctrl/
F: fs/resctrl/
F: include/linux/resctrl*.h
F: tools/testing/selftests/resctrl/

READ-COPY UPDATE (RCU)
Expand Down
8 changes: 8 additions & 0 deletions arch/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1333,6 +1333,14 @@ config STRICT_MODULE_RWX
config ARCH_HAS_PHYS_TO_DMA
bool

config ARCH_HAS_CPU_RESCTRL
bool
help
An architecture selects this option to indicate that the necessary
hooks are provided to support the common memory system usage
monitoring and control interfaces provided by the 'resctrl'
filesystem (see RESCTRL_FS).

config HAVE_ARCH_COMPILER_H
bool
help
Expand Down
19 changes: 17 additions & 2 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -482,8 +482,10 @@ config GOLDFISH
config X86_CPU_RESCTRL
bool "x86 CPU resource control support"
depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD)
select KERNFS
select PROC_CPU_RESCTRL if PROC_FS
depends on MISC_FILESYSTEMS
select ARCH_HAS_CPU_RESCTRL
select RESCTRL_FS
select RESCTRL_FS_PSEUDO_LOCK
help
Enable x86 CPU resource control support.

Expand All @@ -500,6 +502,19 @@ config X86_CPU_RESCTRL

Say N if unsure.

config X86_CPU_RESCTRL_INTEL_AET
bool "Intel Application Energy Telemetry"
depends on X86_64 && X86_CPU_RESCTRL && CPU_SUP_INTEL && INTEL_PMT_TELEMETRY=y && INTEL_TPMI=y
help
Enable per-RMID telemetry events in resctrl.

Intel feature that collects per-RMID execution data
about energy consumption, measure of frequency independent
activity and other performance metrics. Data is aggregated
per package.

Say N if unsure.

if X86_32
config X86_BIGSMP
bool "Support for big SMP systems with more than 8 CPUs"
Expand Down
28 changes: 27 additions & 1 deletion arch/x86/events/intel/uncore_snbep.c
Original file line number Diff line number Diff line change
Expand Up @@ -6605,6 +6605,32 @@ static struct intel_uncore_type gnr_uncore_ubox = {
.attr_update = uncore_alias_groups,
};

static struct uncore_event_desc gnr_uncore_imc_events[] = {
INTEL_UNCORE_EVENT_DESC(clockticks, "event=0x01,umask=0x00"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch0, "event=0x05,umask=0xcf"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch0.scale, "6.103515625e-5"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch0.unit, "MiB"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch1, "event=0x06,umask=0xcf"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch1.scale, "6.103515625e-5"),
INTEL_UNCORE_EVENT_DESC(cas_count_read_sch1.unit, "MiB"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch0, "event=0x05,umask=0xf0"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch0.scale, "6.103515625e-5"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch0.unit, "MiB"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch1, "event=0x06,umask=0xf0"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch1.scale, "6.103515625e-5"),
INTEL_UNCORE_EVENT_DESC(cas_count_write_sch1.unit, "MiB"),
{ /* end: all zeroes */ },
};

static struct intel_uncore_type gnr_uncore_imc = {
SPR_UNCORE_MMIO_COMMON_FORMAT(),
.name = "imc",
.fixed_ctr_bits = 48,
.fixed_ctr = SNR_IMC_MMIO_PMON_FIXED_CTR,
.fixed_ctl = SNR_IMC_MMIO_PMON_FIXED_CTL,
.event_descs = gnr_uncore_imc_events,
};

static struct intel_uncore_type gnr_uncore_pciex8 = {
SPR_UNCORE_PCI_COMMON_FORMAT(),
.name = "pciex8",
Expand Down Expand Up @@ -6652,7 +6678,7 @@ static struct intel_uncore_type *gnr_uncores[UNCORE_GNR_NUM_UNCORE_TYPES] = {
NULL,
&spr_uncore_pcu,
&gnr_uncore_ubox,
&spr_uncore_imc,
&gnr_uncore_imc,
NULL,
&gnr_uncore_upi,
NULL,
Expand Down
1 change: 1 addition & 0 deletions arch/x86/include/asm/cpufeatures.h
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,7 @@
#define X86_FEATURE_TSA_L1_NO (21*32+12) /* "" AMD CPU not vulnerable to TSA-L1 */
#define X86_FEATURE_CLEAR_CPU_BUF_VM (21*32+13) /* "" Clear CPU buffers using VERW before VMRUN */
#define X86_FEATURE_IBPB_EXIT_TO_USER (21*32+14) /* Use IBPB on exit-to-userspace, see VMSCAPE bug */
#define X86_FEATURE_ABMC (21*32+15) /* Assignable Bandwidth Monitoring Counters */

/*
* BUG word(s)
Expand Down
2 changes: 2 additions & 0 deletions arch/x86/include/asm/msr-index.h
Original file line number Diff line number Diff line change
Expand Up @@ -1234,6 +1234,8 @@
/* - AMD: */
#define MSR_IA32_MBA_BW_BASE 0xc0000200
#define MSR_IA32_SMBA_BW_BASE 0xc0000280
#define MSR_IA32_L3_QOS_ABMC_CFG 0xc00003fd
#define MSR_IA32_L3_QOS_EXT_CFG 0xc00003ff
#define MSR_IA32_EVT_CFG_BASE 0xc0000400

/* MSR_IA32_VMX_MISC bits */
Expand Down
29 changes: 20 additions & 9 deletions arch/x86/include/asm/resctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

#ifdef CONFIG_X86_CPU_RESCTRL

#include <linux/sched.h>
#include <linux/jump_label.h>
#include <linux/percpu.h>
#include <linux/resctrl_types.h>
#include <linux/sched.h>

/*
* This value can never be a valid CLOSID, and is used when mapping a
Expand Down Expand Up @@ -96,8 +98,8 @@ static inline void resctrl_arch_disable_mon(void)
static inline void __resctrl_sched_in(struct task_struct *tsk)
{
struct resctrl_pqr_state *state = this_cpu_ptr(&pqr_state);
u32 closid = state->default_closid;
u32 rmid = state->default_rmid;
u32 closid = READ_ONCE(state->default_closid);
u32 rmid = READ_ONCE(state->default_rmid);
u32 tmp;

/*
Expand Down Expand Up @@ -132,6 +134,13 @@ static inline unsigned int resctrl_arch_round_mon_val(unsigned int val)
return val * scale;
}

static inline void resctrl_arch_set_cpu_default_closid_rmid(int cpu, u32 closid,
u32 rmid)
{
WRITE_ONCE(per_cpu(pqr_state.default_closid, cpu), closid);
WRITE_ONCE(per_cpu(pqr_state.default_rmid, cpu), rmid);
}

static inline void resctrl_arch_set_closid_rmid(struct task_struct *tsk,
u32 closid, u32 rmid)
{
Expand All @@ -150,7 +159,7 @@ static inline bool resctrl_arch_match_rmid(struct task_struct *tsk, u32 ignored,
return READ_ONCE(tsk->rmid) == rmid;
}

static inline void resctrl_sched_in(struct task_struct *tsk)
static inline void resctrl_arch_sched_in(struct task_struct *tsk)
{
if (static_branch_likely(&rdt_enable_key))
__resctrl_sched_in(tsk);
Expand All @@ -169,20 +178,22 @@ static inline u32 resctrl_arch_rmid_idx_encode(u32 ignored, u32 rmid)

/* x86 can always read an rmid, nothing needs allocating */
struct rdt_resource;
static inline void *resctrl_arch_mon_ctx_alloc(struct rdt_resource *r, int evtid)
static inline void *resctrl_arch_mon_ctx_alloc(struct rdt_resource *r,
enum resctrl_event_id evtid)
{
might_sleep();
return NULL;
};
}

static inline void resctrl_arch_mon_ctx_free(struct rdt_resource *r, int evtid,
void *ctx) { };
static inline void resctrl_arch_mon_ctx_free(struct rdt_resource *r,
enum resctrl_event_id evtid,
void *ctx) { }

void resctrl_cpu_detect(struct cpuinfo_x86 *c);

#else

static inline void resctrl_sched_in(struct task_struct *tsk) {}
static inline void resctrl_arch_sched_in(struct task_struct *tsk) {}
static inline void resctrl_cpu_detect(struct cpuinfo_x86 *c) {}

#endif /* CONFIG_X86_CPU_RESCTRL */
Expand Down
8 changes: 6 additions & 2 deletions arch/x86/kernel/cpu/resctrl/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_X86_CPU_RESCTRL) += core.o rdtgroup.o monitor.o
obj-$(CONFIG_X86_CPU_RESCTRL) += ctrlmondata.o pseudo_lock.o
obj-$(CONFIG_X86_CPU_RESCTRL) += core.o rdtgroup.o monitor.o
obj-$(CONFIG_X86_CPU_RESCTRL) += ctrlmondata.o
obj-$(CONFIG_X86_CPU_RESCTRL_INTEL_AET) += intel_aet.o
obj-$(CONFIG_RESCTRL_FS_PSEUDO_LOCK) += pseudo_lock.o

# To allow define_trace.h's recursive include:
CFLAGS_pseudo_lock.o = -I$(src)
Loading