xref: /linux-6.15/include/linux/resctrl_types.h (revision f16adbaf)
1*f16adbafSJames Morse /* SPDX-License-Identifier: GPL-2.0 */
2*f16adbafSJames Morse /*
3*f16adbafSJames Morse  * Copyright (C) 2025 Arm Ltd.
4*f16adbafSJames Morse  * Based on arch/x86/kernel/cpu/resctrl/internal.h
5*f16adbafSJames Morse  */
6*f16adbafSJames Morse 
7*f16adbafSJames Morse #ifndef __LINUX_RESCTRL_TYPES_H
8*f16adbafSJames Morse #define __LINUX_RESCTRL_TYPES_H
9*f16adbafSJames Morse 
10*f16adbafSJames Morse /* Reads to Local DRAM Memory */
11*f16adbafSJames Morse #define READS_TO_LOCAL_MEM		BIT(0)
12*f16adbafSJames Morse 
13*f16adbafSJames Morse /* Reads to Remote DRAM Memory */
14*f16adbafSJames Morse #define READS_TO_REMOTE_MEM		BIT(1)
15*f16adbafSJames Morse 
16*f16adbafSJames Morse /* Non-Temporal Writes to Local Memory */
17*f16adbafSJames Morse #define NON_TEMP_WRITE_TO_LOCAL_MEM	BIT(2)
18*f16adbafSJames Morse 
19*f16adbafSJames Morse /* Non-Temporal Writes to Remote Memory */
20*f16adbafSJames Morse #define NON_TEMP_WRITE_TO_REMOTE_MEM	BIT(3)
21*f16adbafSJames Morse 
22*f16adbafSJames Morse /* Reads to Local Memory the system identifies as "Slow Memory" */
23*f16adbafSJames Morse #define READS_TO_LOCAL_S_MEM		BIT(4)
24*f16adbafSJames Morse 
25*f16adbafSJames Morse /* Reads to Remote Memory the system identifies as "Slow Memory" */
26*f16adbafSJames Morse #define READS_TO_REMOTE_S_MEM		BIT(5)
27*f16adbafSJames Morse 
28*f16adbafSJames Morse /* Dirty Victims to All Types of Memory */
29*f16adbafSJames Morse #define DIRTY_VICTIMS_TO_ALL_MEM	BIT(6)
30*f16adbafSJames Morse 
31*f16adbafSJames Morse /* Max event bits supported */
32*f16adbafSJames Morse #define MAX_EVT_CONFIG_BITS		GENMASK(6, 0)
33*f16adbafSJames Morse 
34*f16adbafSJames Morse enum resctrl_res_level {
35*f16adbafSJames Morse 	RDT_RESOURCE_L3,
36*f16adbafSJames Morse 	RDT_RESOURCE_L2,
37*f16adbafSJames Morse 	RDT_RESOURCE_MBA,
38*f16adbafSJames Morse 	RDT_RESOURCE_SMBA,
39*f16adbafSJames Morse 
40*f16adbafSJames Morse 	/* Must be the last */
41*f16adbafSJames Morse 	RDT_NUM_RESOURCES,
42*f16adbafSJames Morse };
43*f16adbafSJames Morse 
44*f16adbafSJames Morse /*
45*f16adbafSJames Morse  * Event IDs, the values match those used to program IA32_QM_EVTSEL before
46*f16adbafSJames Morse  * reading IA32_QM_CTR on RDT systems.
47*f16adbafSJames Morse  */
48*f16adbafSJames Morse enum resctrl_event_id {
49*f16adbafSJames Morse 	QOS_L3_OCCUP_EVENT_ID		= 0x01,
50*f16adbafSJames Morse 	QOS_L3_MBM_TOTAL_EVENT_ID	= 0x02,
51*f16adbafSJames Morse 	QOS_L3_MBM_LOCAL_EVENT_ID	= 0x03,
52*f16adbafSJames Morse };
53*f16adbafSJames Morse 
54*f16adbafSJames Morse #endif /* __LINUX_RESCTRL_TYPES_H */
55