All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features
@ 2023-09-15 22:42 Babu Moger
  2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
                   ` (10 more replies)
  0 siblings, 11 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

These series adds support few minor features.
1. Support assigning multiple tasks to control/mon groups in one command.
2. Add debug mount option for resctrl interface.
3. Add RMID and CLOSID in resctrl interface when mounted with debug option.
4. Moves the default control group creation during the mount instead of during init.
5. While doing these above changes, found that rftype flags needed some cleanup.
   They were named inconsistently. Re-arranged them much more cleanly now and added
   few comments. Hope it can help future additions.
---
v10:
   Patches 1-2: no code changes. Added "Reviewed-by" from Fenghua.
   Patch 3: Added the new flag RFTYPE_MON_BASE [comment for Reinette].
            Removed the Reviewed as the patch has changed.
   patch 4: No code change.  Added "Reviewed-by" from Fenghua.
   Patch 5: Removed empty lines in rdt_disable_ctx().
   Patch 6: No changes. Added "Reviewed-by".
   Patch 7: No changes.
   Patch 8: No changes.
   Patch 9: New patch. Added support for the files for MON groups only.
   Patch 10: Modified. This patch only adds changes for "mon_hw_id" interface.
v9:
   Changes since v8:
   Split the RMID display in a separate patch. RMID is a special case here as it
   should be printed only if monitoring is enabled.
   Made rdtgroup_setup_root and rdtgroup_destroy_root as static functions.
   Added code to print pid_str in case of task parse error.
  
v8:
   Changes since v7:
   Earlier moved both default group initialization and file creation on mount.
   Now kept the group initialization as is and only moved the file creation on mount.
   Re-organized the RFTYPE flags comments little more to avoid confusion. Thanks
   to Reinette for feedback.
   Re-factored the rdt_enable_ctx and added rdt_disable_ctx to unwind the errors.
   And same call also used in rdt_kill_sb which simplifies the code.
   Few other minor text changes.
   
v7:
   Changes since v6:
   While moving the default group file creation on mount, I also moved the
   initialization of default group data structures. Reinette suggested to move
   only the filesystem creation and keep the group initialization as is. Addressed it now.
   Added a new function rdt_disable_ctx to unwind the context related features.
   Few other minor text changes.

v6:
   Changes since v5:
   Moved the default group creation during mount instead of kernel init.
   The rdt_root creation moved to rdt_get_tree as suggested by Reinette.
   https://lore.kernel.org/lkml/8f68ace7-e05b-ad6d-fa74-5ff8e179aec9@intel.com/
   Needed to modify rdtgroup_setup_root to take care of this.
   Re-arraged the patches to move the default group creation earlier.
   Others are mostly text changes and few minor changes.
   Patches are based on tip/master commit 1a2945f27157825a561be7840023e3664111ab2f

v5:
   Changes since v4:
   Moved the default group creation during mount instead of kernel init.
   Tried to address most of the comments on commit log. Added more context and details.
   Addressed feedback about the patch4. Removed the code changes and only kept the comments.
   I am ok to drop patch4. But I will wait for the comment on that.
   There were lots of comments. Hope I did not miss anything. Even if I missed, it is
   not intentional. 

v4: Changes since v3
    Addressed comments from Reinette and others.
    Removed newline requirement when adding tasks.
    Dropped one of the changes on flags. Kept the flag names mostly same.
    Changed the names of closid and rmid to ctrl_hw_id and mon_hw_id respectively.
    James had some concerns about adding these files. Addressed it by making these
    files x86 specific.
    Tried to address Reinette's comment on patch 7. But due to current code design
    I could not do it exact way. But changed it little bit to make it easy debug
    file additions in the future.  

v3: Changes since v2
    Still waiting for more comments. While waiting, addressed few comments from Fenghua.
    Added few more texts in the documentation about multiple tasks assignment feature.
    Added pid in last_cmd_status when applicable.
    Introduced static resctrl_debug to save the debug option.
    Few minor text changes.
  
v2: Changes since v1
  a. Removed the changes to add the task's threads automatically. It required
     book keeping to handle the failures and gets complicated. Removed that change
     for now.
  b. Added -o debug option to mount in debug mode(comment from Fenghua)
  c. Added debug files rmid and closid. Stephane wanted to rename them more
     generic to accommodate ARM. It kind of loses meaning if is renamed differently.
     Kept it same for now. Will change if he feels strong about it. 

v9: https://lore.kernel.org/lkml/20230907235128.19120-1-babu.moger@amd.com/
v8: https://lore.kernel.org/lkml/20230821233048.434531-1-babu.moger@amd.com/
v7: https://lore.kernel.org/lkml/169178429591.1147205.4030367096506551808.stgit@bmoger-ubuntu/
v6: https://lore.kernel.org/lkml/168980872063.1619861.420806535295905172.stgit@bmoger-ubuntu/
v5: https://lore.kernel.org/lkml/168564586603.527584.10518315376465080920.stgit@bmoger-ubuntu/
v4: https://lore.kernel.org/lkml/168177435378.1758847.8317743523931859131.stgit@bmoger-ubuntu/
v3: https://lore.kernel.org/lkml/167778850105.1053859.14596357862185564029.stgit@bmoger-ubuntu/
v2: https://lore.kernel.org/lkml/167537433143.647488.9641864719195184123.stgit@bmoger-ubuntu/
v1: https://lore.kernel.org/lkml/167278351577.34228.12803395505584557101.stgit@bmoger-ubuntu/


*** BLURB HERE ***

Babu Moger (10):
  x86/resctrl: Add multiple tasks to the resctrl group at once
  x86/resctrl: Simplify rftype flag definitions
  x86/resctrl: Rename rftype flags for consistency
  x86/resctrl: Add comments on RFTYPE flags hierarchy
  x86/resctrl: Unwind the errors inside rdt_enable_ctx()
  x86/resctrl: Move default group file creation to mount
  x86/resctrl: Introduce "-o debug" mount option
  x86/resctrl: Display CLOSID for resource group
  x86/resctrl: Add support for the files for MON groups only
  x86/resctrl: Display RMID of resource group

 Documentation/arch/x86/resctrl.rst     |  22 ++-
 arch/x86/kernel/cpu/resctrl/internal.h |  88 +++++++--
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 253 ++++++++++++++++++-------
 3 files changed, 281 insertions(+), 82 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 42+ messages in thread

* [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-27 18:30   ` Reinette Chatre
  2023-09-29 15:08   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions Babu Moger
                   ` (9 subsequent siblings)
  10 siblings, 2 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

The resctrl task assignment for monitor or control group needs to be
done one at a time. For example:

  $mount -t resctrl resctrl /sys/fs/resctrl/
  $mkdir /sys/fs/resctrl/ctrl_grp1
  $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
  $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
  $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks

This is not user-friendly when dealing with hundreds of tasks.

Support multiple task assignment in one command with tasks ids separated
by commas. For example:
  $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks

Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 Documentation/arch/x86/resctrl.rst     |  9 ++++++++-
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 25 ++++++++++++++++++++++---
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
index cb05d90111b4..8154e9975d1e 100644
--- a/Documentation/arch/x86/resctrl.rst
+++ b/Documentation/arch/x86/resctrl.rst
@@ -299,7 +299,14 @@ All groups contain the following files:
 "tasks":
 	Reading this file shows the list of all tasks that belong to
 	this group. Writing a task id to the file will add a task to the
-	group. If the group is a CTRL_MON group the task is removed from
+	group. Multiple tasks can be added by separating the task ids
+	with commas. Tasks will be assigned sequentially. Multiple
+	failures are not supported. A single failure encountered while
+	attempting to assign a task will cause the operation to abort and
+	already added tasks before the failure will remain in the group.
+	Failures will be logged to /sys/fs/resctrl/info/last_cmd_status.
+
+	If the group is a CTRL_MON group the task is removed from
 	whichever previous CTRL_MON group owned the task and also from
 	any MON group that owned the task. If the group is a MON group,
 	then the task must already belong to the CTRL_MON parent of this
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 725344048f85..f0d163950969 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -696,11 +696,10 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
 				    char *buf, size_t nbytes, loff_t off)
 {
 	struct rdtgroup *rdtgrp;
+	char *pid_str;
 	int ret = 0;
 	pid_t pid;
 
-	if (kstrtoint(strstrip(buf), 0, &pid) || pid < 0)
-		return -EINVAL;
 	rdtgrp = rdtgroup_kn_lock_live(of->kn);
 	if (!rdtgrp) {
 		rdtgroup_kn_unlock(of->kn);
@@ -715,7 +714,27 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
 		goto unlock;
 	}
 
-	ret = rdtgroup_move_task(pid, rdtgrp, of);
+	while (buf && buf[0] != '\0' && buf[0] != '\n') {
+		pid_str = strim(strsep(&buf, ","));
+
+		if (kstrtoint(pid_str, 0, &pid)) {
+			rdt_last_cmd_printf("Task list parsing error pid %s\n", pid_str);
+			ret = -EINVAL;
+			break;
+		}
+
+		if (pid < 0) {
+			rdt_last_cmd_printf("Invalid pid %d\n", pid);
+			ret = -EINVAL;
+			break;
+		}
+
+		ret = rdtgroup_move_task(pid, rdtgrp, of);
+		if (ret) {
+			rdt_last_cmd_printf("Error while processing task %d\n", pid);
+			break;
+		}
+	}
 
 unlock:
 	rdtgroup_kn_unlock(of->kn);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
  2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-29 15:09   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

The rftype flags are bitmaps used for adding files under resctrl
filesystem. Some of these bitmaps have one extra level of indirection
which is not necessary.

Make them all direct definition to be consistent and easier to read.

Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h | 9 +++------
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 6 +++++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 85ceaf9a31ac..62767774810d 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -243,12 +243,9 @@ struct rdtgroup {
  */
 #define RFTYPE_INFO			BIT(0)
 #define RFTYPE_BASE			BIT(1)
-#define RF_CTRLSHIFT			4
-#define RF_MONSHIFT			5
-#define RF_TOPSHIFT			6
-#define RFTYPE_CTRL			BIT(RF_CTRLSHIFT)
-#define RFTYPE_MON			BIT(RF_MONSHIFT)
-#define RFTYPE_TOP			BIT(RF_TOPSHIFT)
+#define RFTYPE_CTRL			BIT(4)
+#define RFTYPE_MON			BIT(5)
+#define RFTYPE_TOP			BIT(6)
 #define RFTYPE_RES_CACHE		BIT(8)
 #define RFTYPE_RES_MB			BIT(9)
 #define RF_CTRL_INFO			(RFTYPE_INFO | RFTYPE_CTRL)
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index f0d163950969..7ddfa4b470e6 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -3242,7 +3242,11 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
 		goto out_destroy;
 	}
 
-	files = RFTYPE_BASE | BIT(RF_CTRLSHIFT + rtype);
+	if (rtype == RDTCTRL_GROUP)
+		files = RFTYPE_BASE | RFTYPE_CTRL;
+	else
+		files = RFTYPE_BASE | RFTYPE_MON;
+
 	ret = rdtgroup_add_files(kn, files);
 	if (ret) {
 		rdt_last_cmd_puts("kernfs fill error\n");
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
  2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
  2023-09-15 22:42 ` [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-25 21:16   ` Fenghua Yu
                     ` (2 more replies)
  2023-09-15 22:42 ` [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
                   ` (7 subsequent siblings)
  10 siblings, 3 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

resctrl associates rftype flags with its files so that files can be chosen
based on the resource, whether it is info or base, and if it is control
or monitor type file. These flags use the RF_ as well as RFTYPE_ prefixes.

Change the prefix to RFTYPE_ for all these flags to be consistent.

Also add the flag RFTYPE_MON_BASE, which contains the files required for
MON group only.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h | 11 ++++---
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 42 +++++++++++++-------------
 2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 62767774810d..f71bc82c882f 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -248,10 +248,11 @@ struct rdtgroup {
 #define RFTYPE_TOP			BIT(6)
 #define RFTYPE_RES_CACHE		BIT(8)
 #define RFTYPE_RES_MB			BIT(9)
-#define RF_CTRL_INFO			(RFTYPE_INFO | RFTYPE_CTRL)
-#define RF_MON_INFO			(RFTYPE_INFO | RFTYPE_MON)
-#define RF_TOP_INFO			(RFTYPE_INFO | RFTYPE_TOP)
-#define RF_CTRL_BASE			(RFTYPE_BASE | RFTYPE_CTRL)
+#define RFTYPE_CTRL_INFO		(RFTYPE_INFO | RFTYPE_CTRL)
+#define RFTYPE_MON_INFO			(RFTYPE_INFO | RFTYPE_MON)
+#define RFTYPE_TOP_INFO			(RFTYPE_INFO | RFTYPE_TOP)
+#define RFTYPE_CTRL_BASE		(RFTYPE_BASE | RFTYPE_CTRL)
+#define RFTYPE_MON_BASE			(RFTYPE_BASE | RFTYPE_MON)
 
 /* List of all resource groups */
 extern struct list_head rdt_all_groups;
@@ -267,7 +268,7 @@ void __exit rdtgroup_exit(void);
  * @mode:	Access mode
  * @kf_ops:	File operations
  * @flags:	File specific RFTYPE_FLAGS_* flags
- * @fflags:	File specific RF_* or RFTYPE_* flags
+ * @fflags:	File specific RFTYPE_* flags
  * @seq_show:	Show content of the file
  * @write:	Write to the file
  */
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 7ddfa4b470e6..35945b4bf196 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -1705,77 +1705,77 @@ static struct rftype res_common_files[] = {
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_last_cmd_status_show,
-		.fflags		= RF_TOP_INFO,
+		.fflags		= RFTYPE_TOP_INFO,
 	},
 	{
 		.name		= "num_closids",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_num_closids_show,
-		.fflags		= RF_CTRL_INFO,
+		.fflags		= RFTYPE_CTRL_INFO,
 	},
 	{
 		.name		= "mon_features",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_mon_features_show,
-		.fflags		= RF_MON_INFO,
+		.fflags		= RFTYPE_MON_INFO,
 	},
 	{
 		.name		= "num_rmids",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_num_rmids_show,
-		.fflags		= RF_MON_INFO,
+		.fflags		= RFTYPE_MON_INFO,
 	},
 	{
 		.name		= "cbm_mask",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_default_ctrl_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_CACHE,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
 	{
 		.name		= "min_cbm_bits",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_min_cbm_bits_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_CACHE,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
 	{
 		.name		= "shareable_bits",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_shareable_bits_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_CACHE,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
 	{
 		.name		= "bit_usage",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_bit_usage_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_CACHE,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
 	{
 		.name		= "min_bandwidth",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_min_bw_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_MB,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_MB,
 	},
 	{
 		.name		= "bandwidth_gran",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_bw_gran_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_MB,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_MB,
 	},
 	{
 		.name		= "delay_linear",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdt_delay_linear_show,
-		.fflags		= RF_CTRL_INFO | RFTYPE_RES_MB,
+		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_MB,
 	},
 	/*
 	 * Platform specific which (if any) capabilities are provided by
@@ -1794,7 +1794,7 @@ static struct rftype res_common_files[] = {
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.write		= max_threshold_occ_write,
 		.seq_show	= max_threshold_occ_show,
-		.fflags		= RF_MON_INFO | RFTYPE_RES_CACHE,
+		.fflags		= RFTYPE_MON_INFO | RFTYPE_RES_CACHE,
 	},
 	{
 		.name		= "mbm_total_bytes_config",
@@ -1841,7 +1841,7 @@ static struct rftype res_common_files[] = {
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.write		= rdtgroup_schemata_write,
 		.seq_show	= rdtgroup_schemata_show,
-		.fflags		= RF_CTRL_BASE,
+		.fflags		= RFTYPE_CTRL_BASE,
 	},
 	{
 		.name		= "mode",
@@ -1849,14 +1849,14 @@ static struct rftype res_common_files[] = {
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.write		= rdtgroup_mode_write,
 		.seq_show	= rdtgroup_mode_show,
-		.fflags		= RF_CTRL_BASE,
+		.fflags		= RFTYPE_CTRL_BASE,
 	},
 	{
 		.name		= "size",
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdtgroup_size_show,
-		.fflags		= RF_CTRL_BASE,
+		.fflags		= RFTYPE_CTRL_BASE,
 	},
 
 };
@@ -1913,7 +1913,7 @@ void __init thread_throttle_mode_init(void)
 	if (!rft)
 		return;
 
-	rft->fflags = RF_CTRL_INFO | RFTYPE_RES_MB;
+	rft->fflags = RFTYPE_CTRL_INFO | RFTYPE_RES_MB;
 }
 
 void __init mbm_config_rftype_init(const char *config)
@@ -1922,7 +1922,7 @@ void __init mbm_config_rftype_init(const char *config)
 
 	rft = rdtgroup_get_rftype_by_name(config);
 	if (rft)
-		rft->fflags = RF_MON_INFO | RFTYPE_RES_CACHE;
+		rft->fflags = RFTYPE_MON_INFO | RFTYPE_RES_CACHE;
 }
 
 /**
@@ -2057,21 +2057,21 @@ static int rdtgroup_create_info_dir(struct kernfs_node *parent_kn)
 	if (IS_ERR(kn_info))
 		return PTR_ERR(kn_info);
 
-	ret = rdtgroup_add_files(kn_info, RF_TOP_INFO);
+	ret = rdtgroup_add_files(kn_info, RFTYPE_TOP_INFO);
 	if (ret)
 		goto out_destroy;
 
 	/* loop over enabled controls, these are all alloc_capable */
 	list_for_each_entry(s, &resctrl_schema_all, list) {
 		r = s->res;
-		fflags =  r->fflags | RF_CTRL_INFO;
+		fflags = r->fflags | RFTYPE_CTRL_INFO;
 		ret = rdtgroup_mkdir_info_resdir(s, s->name, fflags);
 		if (ret)
 			goto out_destroy;
 	}
 
 	for_each_mon_capable_rdt_resource(r) {
-		fflags =  r->fflags | RF_MON_INFO;
+		fflags = r->fflags | RFTYPE_MON_INFO;
 		sprintf(name, "%s_MON", r->name);
 		ret = rdtgroup_mkdir_info_resdir(r, name, fflags);
 		if (ret)
@@ -3709,7 +3709,7 @@ static int __init rdtgroup_setup_root(void)
 
 	list_add(&rdtgroup_default.rdtgroup_list, &rdt_all_groups);
 
-	ret = rdtgroup_add_files(kernfs_root_to_node(rdt_root), RF_CTRL_BASE);
+	ret = rdtgroup_add_files(kernfs_root_to_node(rdt_root), RFTYPE_CTRL_BASE);
 	if (ret) {
 		kernfs_destroy_root(rdt_root);
 		goto out;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (2 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-29 15:17   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx() Babu Moger
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

resctrl uses RFTYPE flags for creating resctrl directory structure.

Definitions and directory structures are not documented. Add
comments to improve the readability and help future additions.

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h | 58 ++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index f71bc82c882f..14988c9f402c 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -240,6 +240,64 @@ struct rdtgroup {
 
 /*
  * Define the file type flags for base and info directories.
+ *
+ * RESCTRL filesystem has two main components
+ *	a. info
+ *	b. base
+ *
+ * /sys/fs/resctrl/
+ *	|
+ *	--> info (Top level directory named "info". Contains files that
+ *	|	  provide details on control and monitoring resources.)
+ *	|
+ *	--> base (Root directory associated with default resource group
+ *		  as well as directories created by user for MON and CTRL
+ *		  groups. Contains files to interact with MON and CTRL
+ *		  groups.)
+ *
+ *	Note: resctrl uses flags for files, not for directories.
+ *	      Directories are created based on the resource type. Added
+ *	      directories below for better understanding.
+ *
+ *	info directory structure
+ *	------------------------------------------------------------------
+ *	--> RFTYPE_INFO
+ *	    Directory: info
+ *		--> RFTYPE_TOP (Files in top level of info directory)
+ *		    File: last_cmd_status
+ *
+ *		--> RFTYPE_MON (Files for all monitoring resources)
+ *		    Directory: L3_MON
+ *		        Files: mon_features, num_rmids
+ *
+ *			--> RFTYPE_RES_CACHE (Files for cache monitoring resources)
+ *			    Directory: L3_MON
+ *			        Files: max_threshold_occupancy,
+ *			               mbm_total_bytes_config,
+ *			               mbm_local_bytes_config
+ *
+ *		--> RFTYPE_CTRL (Files for all control resources)
+ *		    Directories: L2, L3, MB, SMBA, L2CODE, L2DATA, L3CODE, L3DATA
+ *		           File: num_closids
+ *
+ *			--> RFTYPE_RES_CACHE (Files for cache control resources)
+ *			    Directories: L2, L3, L2CODE, L2DATA, L3CODE, L3DATA
+ *			          Files: bit_usage, cbm_mask, min_cbm_bits,
+ *			                 shareable_bits
+ *
+ *			--> RFTYPE_RES_MB (Files for memory control resources)
+ *			    Directories: MB, SMBA
+ *			          Files: bandwidth_gran, delay_linear,
+ *			                 min_bandwidth, thread_throttle_mode
+ *
+ *	base directory structure
+ *	------------------------------------------------------------------
+ *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
+ *	    Files: cpus, cpus_list, tasks
+ *
+ *		--> RFTYPE_CTRL (Files only for CTRL group)
+ *		    Files: mode, schemata, size
+ *
  */
 #define RFTYPE_INFO			BIT(0)
 #define RFTYPE_BASE			BIT(1)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx()
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (3 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-29 15:22   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount Babu Moger
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

rdt_enable_ctx() enables the features provided during resctrl mount.

Additions to rdt_enable_ctx() are required to also modify error paths
of rdt_enable_ctx() callers to ensure correct unwinding if errors
are encountered after calling rdt_enable_ctx(). This is error prone.

Introduce rdt_disable_ctx() to refactor the error unwinding of
rdt_enable_ctx() to simplify future additions. This also simplifies
cleanup in rdt_kill_sb().

Remove cdp_disable_all() as it is not used anymore after the refactor.

Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 53 ++++++++++++++++----------
 1 file changed, 32 insertions(+), 21 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 35945b4bf196..3ea874c80c22 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -2290,14 +2290,6 @@ int resctrl_arch_set_cdp_enabled(enum resctrl_res_level l, bool enable)
 	return 0;
 }
 
-static void cdp_disable_all(void)
-{
-	if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L3))
-		resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
-	if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L2))
-		resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
-}
-
 /*
  * We don't allow rdtgroup directories to be created anywhere
  * except the root directory. Thus when looking for the rdtgroup
@@ -2377,19 +2369,42 @@ static int mkdir_mondata_all(struct kernfs_node *parent_kn,
 			     struct rdtgroup *prgrp,
 			     struct kernfs_node **mon_data_kn);
 
+static void rdt_disable_ctx(void)
+{
+	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
+	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
+	set_mba_sc(false);
+}
+
 static int rdt_enable_ctx(struct rdt_fs_context *ctx)
 {
 	int ret = 0;
 
-	if (ctx->enable_cdpl2)
+	if (ctx->enable_cdpl2) {
 		ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, true);
+		if (ret)
+			goto out_done;
+	}
 
-	if (!ret && ctx->enable_cdpl3)
+	if (ctx->enable_cdpl3) {
 		ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, true);
+		if (ret)
+			goto out_cdpl2;
+	}
 
-	if (!ret && ctx->enable_mba_mbps)
+	if (ctx->enable_mba_mbps) {
 		ret = set_mba_sc(true);
+		if (ret)
+			goto out_cdpl3;
+	}
+
+	return 0;
 
+out_cdpl3:
+	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
+out_cdpl2:
+	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
+out_done:
 	return ret;
 }
 
@@ -2497,13 +2512,13 @@ static int rdt_get_tree(struct fs_context *fc)
 	}
 
 	ret = rdt_enable_ctx(ctx);
-	if (ret < 0)
-		goto out_cdp;
+	if (ret)
+		goto out;
 
 	ret = schemata_list_create();
 	if (ret) {
 		schemata_list_destroy();
-		goto out_mba;
+		goto out_ctx;
 	}
 
 	closid_init();
@@ -2562,11 +2577,8 @@ static int rdt_get_tree(struct fs_context *fc)
 	kernfs_remove(kn_info);
 out_schemata_free:
 	schemata_list_destroy();
-out_mba:
-	if (ctx->enable_mba_mbps)
-		set_mba_sc(false);
-out_cdp:
-	cdp_disable_all();
+out_ctx:
+	rdt_disable_ctx();
 out:
 	rdt_last_cmd_clear();
 	mutex_unlock(&rdtgroup_mutex);
@@ -2798,12 +2810,11 @@ static void rdt_kill_sb(struct super_block *sb)
 	cpus_read_lock();
 	mutex_lock(&rdtgroup_mutex);
 
-	set_mba_sc(false);
+	rdt_disable_ctx();
 
 	/*Put everything back to default values. */
 	for_each_alloc_capable_rdt_resource(r)
 		reset_all_ctrls(r);
-	cdp_disable_all();
 	rmdir_all_sub();
 	rdt_pseudo_lock_release();
 	rdtgroup_default.mode = RDT_MODE_SHAREABLE;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (4 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx() Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-29 15:50   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option Babu Moger
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

The default resource group and its files are created during kernel
init time. Upcoming changes will make some resctrl files optional
based on a mount parameter. If optional files are to be added to the
default group based on the mount option, then each new file needs to
be created separately and call kernfs_activate() again.

Create all files of the default resource group during resctrl
mount, destroyed during unmount, to avoid scattering resctrl
file addition across two separate code flows.

Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 58 +++++++++++++++-----------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 3ea874c80c22..a34657f0bd0c 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -54,6 +54,9 @@ static struct kernfs_node *kn_mondata;
 static struct seq_buf last_cmd_status;
 static char last_cmd_status_buf[512];
 
+static int rdtgroup_setup_root(struct rdt_fs_context *ctx);
+static void rdtgroup_destroy_root(void);
+
 struct dentry *debugfs_resctrl;
 
 void rdt_last_cmd_clear(void)
@@ -2511,10 +2514,14 @@ static int rdt_get_tree(struct fs_context *fc)
 		goto out;
 	}
 
-	ret = rdt_enable_ctx(ctx);
+	ret = rdtgroup_setup_root(ctx);
 	if (ret)
 		goto out;
 
+	ret = rdt_enable_ctx(ctx);
+	if (ret)
+		goto out_root;
+
 	ret = schemata_list_create();
 	if (ret) {
 		schemata_list_destroy();
@@ -2523,6 +2530,12 @@ static int rdt_get_tree(struct fs_context *fc)
 
 	closid_init();
 
+	ret = rdtgroup_add_files(rdtgroup_default.kn, RFTYPE_CTRL_BASE);
+	if (ret)
+		goto out_schemata_free;
+
+	kernfs_activate(rdtgroup_default.kn);
+
 	ret = rdtgroup_create_info_dir(rdtgroup_default.kn);
 	if (ret < 0)
 		goto out_schemata_free;
@@ -2579,6 +2592,8 @@ static int rdt_get_tree(struct fs_context *fc)
 	schemata_list_destroy();
 out_ctx:
 	rdt_disable_ctx();
+out_root:
+	rdtgroup_destroy_root();
 out:
 	rdt_last_cmd_clear();
 	mutex_unlock(&rdtgroup_mutex);
@@ -2649,7 +2664,6 @@ static int rdt_init_fs_context(struct fs_context *fc)
 	if (!ctx)
 		return -ENOMEM;
 
-	ctx->kfc.root = rdt_root;
 	ctx->kfc.magic = RDTGROUP_SUPER_MAGIC;
 	fc->fs_private = &ctx->kfc;
 	fc->ops = &rdt_fs_context_ops;
@@ -2819,6 +2833,7 @@ static void rdt_kill_sb(struct super_block *sb)
 	rdt_pseudo_lock_release();
 	rdtgroup_default.mode = RDT_MODE_SHAREABLE;
 	schemata_list_destroy();
+	rdtgroup_destroy_root();
 	static_branch_disable_cpuslocked(&rdt_alloc_enable_key);
 	static_branch_disable_cpuslocked(&rdt_mon_enable_key);
 	static_branch_disable_cpuslocked(&rdt_enable_key);
@@ -3700,10 +3715,8 @@ static struct kernfs_syscall_ops rdtgroup_kf_syscall_ops = {
 	.show_options	= rdtgroup_show_options,
 };
 
-static int __init rdtgroup_setup_root(void)
+static int rdtgroup_setup_root(struct rdt_fs_context *ctx)
 {
-	int ret;
-
 	rdt_root = kernfs_create_root(&rdtgroup_kf_syscall_ops,
 				      KERNFS_ROOT_CREATE_DEACTIVATED |
 				      KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK,
@@ -3711,6 +3724,20 @@ static int __init rdtgroup_setup_root(void)
 	if (IS_ERR(rdt_root))
 		return PTR_ERR(rdt_root);
 
+	ctx->kfc.root = rdt_root;
+	rdtgroup_default.kn = kernfs_root_to_node(rdt_root);
+
+	return 0;
+}
+
+static void rdtgroup_destroy_root(void)
+{
+	kernfs_destroy_root(rdt_root);
+	rdtgroup_default.kn = NULL;
+}
+
+static void __init rdtgroup_setup_default(void)
+{
 	mutex_lock(&rdtgroup_mutex);
 
 	rdtgroup_default.closid = 0;
@@ -3720,19 +3747,7 @@ static int __init rdtgroup_setup_root(void)
 
 	list_add(&rdtgroup_default.rdtgroup_list, &rdt_all_groups);
 
-	ret = rdtgroup_add_files(kernfs_root_to_node(rdt_root), RFTYPE_CTRL_BASE);
-	if (ret) {
-		kernfs_destroy_root(rdt_root);
-		goto out;
-	}
-
-	rdtgroup_default.kn = kernfs_root_to_node(rdt_root);
-	kernfs_activate(rdtgroup_default.kn);
-
-out:
 	mutex_unlock(&rdtgroup_mutex);
-
-	return ret;
 }
 
 static void domain_destroy_mon_state(struct rdt_domain *d)
@@ -3854,13 +3869,11 @@ int __init rdtgroup_init(void)
 	seq_buf_init(&last_cmd_status, last_cmd_status_buf,
 		     sizeof(last_cmd_status_buf));
 
-	ret = rdtgroup_setup_root();
-	if (ret)
-		return ret;
+	rdtgroup_setup_default();
 
 	ret = sysfs_create_mount_point(fs_kobj, "resctrl");
 	if (ret)
-		goto cleanup_root;
+		return ret;
 
 	ret = register_filesystem(&rdt_fs_type);
 	if (ret)
@@ -3893,8 +3906,6 @@ int __init rdtgroup_init(void)
 
 cleanup_mountpoint:
 	sysfs_remove_mount_point(fs_kobj, "resctrl");
-cleanup_root:
-	kernfs_destroy_root(rdt_root);
 
 	return ret;
 }
@@ -3904,5 +3915,4 @@ void __exit rdtgroup_exit(void)
 	debugfs_remove_recursive(debugfs_resctrl);
 	unregister_filesystem(&rdt_fs_type);
 	sysfs_remove_mount_point(fs_kobj, "resctrl");
-	kernfs_destroy_root(rdt_root);
 }
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (5 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-29 15:25   ` Ilpo Järvinen
  2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

Add "-o debug" option to mount resctrl filesystem in debug mode.
When in debug mode resctrl displays files that have the new
RFTYPE_DEBUG flag to help resctrl debugging.

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 Documentation/arch/x86/resctrl.rst     |  5 ++++-
 arch/x86/kernel/cpu/resctrl/internal.h |  2 ++
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 18 ++++++++++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
index 8154e9975d1e..28d35aaa74b4 100644
--- a/Documentation/arch/x86/resctrl.rst
+++ b/Documentation/arch/x86/resctrl.rst
@@ -35,7 +35,7 @@ about the feature from resctrl's info directory.
 
 To use the feature mount the file system::
 
- # mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps]] /sys/fs/resctrl
+ # mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps][,debug]] /sys/fs/resctrl
 
 mount options are:
 
@@ -46,6 +46,9 @@ mount options are:
 "mba_MBps":
 	Enable the MBA Software Controller(mba_sc) to specify MBA
 	bandwidth in MBps
+"debug":
+	Make debug files accessible. Available debug files are annotated with
+	"Available only with debug option".
 
 L2 and L3 CDP are controlled separately.
 
diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 14988c9f402c..68d1b7147291 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -59,6 +59,7 @@ struct rdt_fs_context {
 	bool				enable_cdpl2;
 	bool				enable_cdpl3;
 	bool				enable_mba_mbps;
+	bool				enable_debug;
 };
 
 static inline struct rdt_fs_context *rdt_fc2context(struct fs_context *fc)
@@ -306,6 +307,7 @@ struct rdtgroup {
 #define RFTYPE_TOP			BIT(6)
 #define RFTYPE_RES_CACHE		BIT(8)
 #define RFTYPE_RES_MB			BIT(9)
+#define RFTYPE_DEBUG			BIT(10)
 #define RFTYPE_CTRL_INFO		(RFTYPE_INFO | RFTYPE_CTRL)
 #define RFTYPE_MON_INFO			(RFTYPE_INFO | RFTYPE_MON)
 #define RFTYPE_TOP_INFO			(RFTYPE_INFO | RFTYPE_TOP)
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index a34657f0bd0c..150105c21fee 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -59,6 +59,8 @@ static void rdtgroup_destroy_root(void);
 
 struct dentry *debugfs_resctrl;
 
+static bool resctrl_debug;
+
 void rdt_last_cmd_clear(void)
 {
 	lockdep_assert_held(&rdtgroup_mutex);
@@ -1874,6 +1876,9 @@ static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags)
 
 	lockdep_assert_held(&rdtgroup_mutex);
 
+	if (resctrl_debug)
+		fflags |= RFTYPE_DEBUG;
+
 	for (rft = rfts; rft < rfts + len; rft++) {
 		if (rft->fflags && ((fflags & rft->fflags) == rft->fflags)) {
 			ret = rdtgroup_add_file(kn, rft);
@@ -2377,6 +2382,8 @@ static void rdt_disable_ctx(void)
 	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
 	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
 	set_mba_sc(false);
+
+	resctrl_debug = false;
 }
 
 static int rdt_enable_ctx(struct rdt_fs_context *ctx)
@@ -2401,6 +2408,9 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx)
 			goto out_cdpl3;
 	}
 
+	if (ctx->enable_debug)
+		resctrl_debug = true;
+
 	return 0;
 
 out_cdpl3:
@@ -2605,6 +2615,7 @@ enum rdt_param {
 	Opt_cdp,
 	Opt_cdpl2,
 	Opt_mba_mbps,
+	Opt_debug,
 	nr__rdt_params
 };
 
@@ -2612,6 +2623,7 @@ static const struct fs_parameter_spec rdt_fs_parameters[] = {
 	fsparam_flag("cdp",		Opt_cdp),
 	fsparam_flag("cdpl2",		Opt_cdpl2),
 	fsparam_flag("mba_MBps",	Opt_mba_mbps),
+	fsparam_flag("debug",		Opt_debug),
 	{}
 };
 
@@ -2637,6 +2649,9 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
 			return -EINVAL;
 		ctx->enable_mba_mbps = true;
 		return 0;
+	case Opt_debug:
+		ctx->enable_debug = true;
+		return 0;
 	}
 
 	return -EINVAL;
@@ -3705,6 +3720,9 @@ static int rdtgroup_show_options(struct seq_file *seq, struct kernfs_root *kf)
 	if (is_mba_sc(&rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl))
 		seq_puts(seq, ",mba_MBps");
 
+	if (resctrl_debug)
+		seq_puts(seq, ",debug");
+
 	return 0;
 }
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (6 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-25 21:19   ` Fenghua Yu
                     ` (2 more replies)
  2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
                   ` (2 subsequent siblings)
  10 siblings, 3 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

In x86, hardware uses CLOSID to identify a control group. When a user
creates a control group this information is not visible to the user.
It can help resctrl debugging.

Add CLOSID(ctrl_hw_id) to the control groups display in resctrl
interface. Users can see this detail when resctrl is mounted with
"-o debug" option.

Other architectures do not use "CLOSID". Use the names ctrl_hw_id
to refer to "CLOSID" in an effort to keep the naming generic.

For example:
 $cat /sys/fs/resctrl/ctrl_grp1/ctrl_hw_id
 1

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 Documentation/arch/x86/resctrl.rst     |  4 ++++
 arch/x86/kernel/cpu/resctrl/internal.h |  3 +++
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 23 +++++++++++++++++++++++
 3 files changed, 30 insertions(+)

diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
index 28d35aaa74b4..54691c8b832d 100644
--- a/Documentation/arch/x86/resctrl.rst
+++ b/Documentation/arch/x86/resctrl.rst
@@ -352,6 +352,10 @@ When control is enabled all CTRL_MON groups will also contain:
 	file. On successful pseudo-locked region creation the mode will
 	automatically change to "pseudo-locked".
 
+"ctrl_hw_id":
+	Available only with debug option. The identifier used by hardware
+	for the control group. On x86 this is the CLOSID.
+
 When monitoring is enabled all MON groups will also contain:
 
 "mon_data":
diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 68d1b7147291..a07fa4329b65 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -299,6 +299,9 @@ struct rdtgroup {
  *		--> RFTYPE_CTRL (Files only for CTRL group)
  *		    Files: mode, schemata, size
  *
+ *			--> RFTYPE_DEBUG (Files to help resctrl debugging)
+ *			    File: ctrl_hw_id
+ *
  */
 #define RFTYPE_INFO			BIT(0)
 #define RFTYPE_BASE			BIT(1)
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 150105c21fee..953b082cec8a 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -779,6 +779,22 @@ static int rdtgroup_tasks_show(struct kernfs_open_file *of,
 	return ret;
 }
 
+static int rdtgroup_closid_show(struct kernfs_open_file *of,
+				struct seq_file *s, void *v)
+{
+	struct rdtgroup *rdtgrp;
+	int ret = 0;
+
+	rdtgrp = rdtgroup_kn_lock_live(of->kn);
+	if (rdtgrp)
+		seq_printf(s, "%u\n", rdtgrp->closid);
+	else
+		ret = -ENOENT;
+	rdtgroup_kn_unlock(of->kn);
+
+	return ret;
+}
+
 #ifdef CONFIG_PROC_CPU_RESCTRL
 
 /*
@@ -1863,6 +1879,13 @@ static struct rftype res_common_files[] = {
 		.seq_show	= rdtgroup_size_show,
 		.fflags		= RFTYPE_CTRL_BASE,
 	},
+	{
+		.name		= "ctrl_hw_id",
+		.mode		= 0444,
+		.kf_ops		= &rdtgroup_kf_single_ops,
+		.seq_show	= rdtgroup_closid_show,
+		.fflags		= RFTYPE_CTRL_BASE | RFTYPE_DEBUG,
+	},
 
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (7 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-25 21:20   ` Fenghua Yu
                     ` (2 more replies)
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
  2023-09-28  5:28 ` [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Shaopeng Tan (Fujitsu)
  10 siblings, 3 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

There are 3 types resctrl root files.
1. RFTYPE_BASE : Files common for both MON and CTRL groups
2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups

Files only for the MON groups are not supported now. Add the
support to create these files.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 953b082cec8a..55d1b90f460e 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -2533,6 +2533,7 @@ static void schemata_list_destroy(void)
 static int rdt_get_tree(struct fs_context *fc)
 {
 	struct rdt_fs_context *ctx = rdt_fc2context(fc);
+	unsigned long flags = RFTYPE_CTRL_BASE;
 	struct rdt_domain *dom;
 	struct rdt_resource *r;
 	int ret;
@@ -2563,7 +2564,10 @@ static int rdt_get_tree(struct fs_context *fc)
 
 	closid_init();
 
-	ret = rdtgroup_add_files(rdtgroup_default.kn, RFTYPE_CTRL_BASE);
+	if (rdt_mon_capable)
+		flags |= RFTYPE_MON;
+
+	ret = rdtgroup_add_files(rdtgroup_default.kn, flags);
 	if (ret)
 		goto out_schemata_free;
 
@@ -3253,8 +3257,8 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
 			     enum rdt_group_type rtype, struct rdtgroup **r)
 {
 	struct rdtgroup *prdtgrp, *rdtgrp;
+	unsigned long files = 0;
 	struct kernfs_node *kn;
-	uint files = 0;
 	int ret;
 
 	prdtgrp = rdtgroup_kn_lock_live(parent_kn);
@@ -3306,10 +3310,13 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
 		goto out_destroy;
 	}
 
-	if (rtype == RDTCTRL_GROUP)
+	if (rtype == RDTCTRL_GROUP) {
 		files = RFTYPE_BASE | RFTYPE_CTRL;
-	else
+		if (rdt_mon_capable)
+			files |= RFTYPE_MON;
+	} else {
 		files = RFTYPE_BASE | RFTYPE_MON;
+	}
 
 	ret = rdtgroup_add_files(kn, files);
 	if (ret) {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (8 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
@ 2023-09-15 22:42 ` Babu Moger
  2023-09-22 14:36   ` Peter Newman
                     ` (3 more replies)
  2023-09-28  5:28 ` [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Shaopeng Tan (Fujitsu)
  10 siblings, 4 replies; 42+ messages in thread
From: Babu Moger @ 2023-09-15 22:42 UTC (permalink / raw)
  To: corbet, reinette.chatre, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	babu.moger, chang.seok.bae, pawan.kumar.gupta, jmattson,
	daniel.sneddon, sandipan.das, tony.luck, james.morse, linux-doc,
	linux-kernel, bagasdotme, eranian, christophe.leroy, jarkko,
	adrian.hunter, quic_jiles, peternewman

In x86, hardware uses RMID to identify a monitoring group. When a user
creates a monitor group these details are not visible. These details
can help resctrl debugging.

Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
Users can see these details when resctrl is mounted with "-o debug" option.

Other architectures do not use "RMID". Use the name mon_hw_id to refer
to "RMID" in an effort to keep the naming generic.

For example:
 $cat /sys/fs/resctrl/mon_groups/mon_grp1/mon_hw_id
 3

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 Documentation/arch/x86/resctrl.rst     |  4 ++++
 arch/x86/kernel/cpu/resctrl/internal.h |  5 +++++
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 23 +++++++++++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
index 54691c8b832d..98b0eb509ed4 100644
--- a/Documentation/arch/x86/resctrl.rst
+++ b/Documentation/arch/x86/resctrl.rst
@@ -369,6 +369,10 @@ When monitoring is enabled all MON groups will also contain:
 	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.
 
+"mon_hw_id":
+	Available only with debug option. The identifier used by hardware
+	for the monitor group. On x86 this is the RMID.
+
 Resource allocation rules
 -------------------------
 
diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index a07fa4329b65..b4910892b0a6 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -296,6 +296,11 @@ struct rdtgroup {
  *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
  *	    Files: cpus, cpus_list, tasks
  *
+ *		--> RFTYPE_MON (Files only for MON group)
+ *
+ *			--> RFTYPE_DEBUG (Files to help resctrl debugging)
+ *			    File: mon_hw_id
+ *
  *		--> RFTYPE_CTRL (Files only for CTRL group)
  *		    Files: mode, schemata, size
  *
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 55d1b90f460e..ef4b18091e5d 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -795,6 +795,22 @@ static int rdtgroup_closid_show(struct kernfs_open_file *of,
 	return ret;
 }
 
+static int rdtgroup_rmid_show(struct kernfs_open_file *of,
+			      struct seq_file *s, void *v)
+{
+	struct rdtgroup *rdtgrp;
+	int ret = 0;
+
+	rdtgrp = rdtgroup_kn_lock_live(of->kn);
+	if (rdtgrp)
+		seq_printf(s, "%u\n", rdtgrp->mon.rmid);
+	else
+		ret = -ENOENT;
+	rdtgroup_kn_unlock(of->kn);
+
+	return ret;
+}
+
 #ifdef CONFIG_PROC_CPU_RESCTRL
 
 /*
@@ -1856,6 +1872,13 @@ static struct rftype res_common_files[] = {
 		.seq_show	= rdtgroup_tasks_show,
 		.fflags		= RFTYPE_BASE,
 	},
+	{
+		.name		= "mon_hw_id",
+		.mode		= 0444,
+		.kf_ops		= &rdtgroup_kf_single_ops,
+		.seq_show	= rdtgroup_rmid_show,
+		.fflags		= RFTYPE_MON_BASE | RFTYPE_DEBUG,
+	},
 	{
 		.name		= "schemata",
 		.mode		= 0644,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
@ 2023-09-22 14:36   ` Peter Newman
  2023-09-22 15:49     ` Moger, Babu
  2023-09-22 17:59     ` Fenghua Yu
  2023-09-25 21:21   ` Fenghua Yu
                     ` (2 subsequent siblings)
  3 siblings, 2 replies; 42+ messages in thread
From: Peter Newman @ 2023-09-22 14:36 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles

Hi Babu,

On Sat, Sep 16, 2023 at 12:42 AM Babu Moger <babu.moger@amd.com> wrote:
>
> In x86, hardware uses RMID to identify a monitoring group. When a user
> creates a monitor group these details are not visible. These details
> can help resctrl debugging.
>
> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
> Users can see these details when resctrl is mounted with "-o debug" option.

When I reviewed this, I went through the whole series second-guessing
the wording above and wondering whether "monitoring groups" applied to
CTRL_MON groups.

I was able to confirm that mon_hw_id did appear and had a believable
value in CTRL_MON groups which had allocated monitors. (and I added
some comma-separated PID lists to the tasks node)

for the series:
Tested-By: Peter Newman <peternewman@google.com>

> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index a07fa4329b65..b4910892b0a6 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -296,6 +296,11 @@ struct rdtgroup {
>   *     --> RFTYPE_BASE (Files common for both MON and CTRL groups)
>   *         Files: cpus, cpus_list, tasks
>   *
> + *             --> RFTYPE_MON (Files only for MON group)

If monitoring is supported, all groups are MON groups. I think the
"only" above caused me to second guess whether this takes into account
CTRL_MON groups getting the RFTYPE_MON flag set dynamically.

However, I think the documentation above is still technically accurate.

for the series:
Reviewed-By: Peter Newman <peternewman@google.com>

Thanks!
-Peter

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-22 14:36   ` Peter Newman
@ 2023-09-22 15:49     ` Moger, Babu
  2023-09-22 17:59     ` Fenghua Yu
  1 sibling, 0 replies; 42+ messages in thread
From: Moger, Babu @ 2023-09-22 15:49 UTC (permalink / raw)
  To: Peter Newman, Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles

Hi Peter,

On 9/22/2023 9:36 AM, Peter Newman wrote:
> Hi Babu,
>
> On Sat, Sep 16, 2023 at 12:42 AM Babu Moger <babu.moger@amd.com> wrote:
>> In x86, hardware uses RMID to identify a monitoring group. When a user
>> creates a monitor group these details are not visible. These details
>> can help resctrl debugging.
>>
>> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
>> Users can see these details when resctrl is mounted with "-o debug" option.
> When I reviewed this, I went through the whole series second-guessing
> the wording above and wondering whether "monitoring groups" applied to
> CTRL_MON groups.
>
> I was able to confirm that mon_hw_id did appear and had a believable
> value in CTRL_MON groups which had allocated monitors. (and I added
> some comma-separated PID lists to the tasks node)
>
> for the series:
> Tested-By: Peter Newman <peternewman@google.com>
Thank you.
>
>> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
>> index a07fa4329b65..b4910892b0a6 100644
>> --- a/arch/x86/kernel/cpu/resctrl/internal.h
>> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
>> @@ -296,6 +296,11 @@ struct rdtgroup {
>>    *     --> RFTYPE_BASE (Files common for both MON and CTRL groups)
>>    *         Files: cpus, cpus_list, tasks
>>    *
>> + *             --> RFTYPE_MON (Files only for MON group)
> If monitoring is supported, all groups are MON groups. I think the
> "only" above caused me to second guess whether this takes into account
> CTRL_MON groups getting the RFTYPE_MON flag set dynamically.
>
> However, I think the documentation above is still technically accurate.
Thanks. If there is another revision, I am open to remove "only" from 
this text.
>
> for the series:
> Reviewed-By: Peter Newman <peternewman@google.com>

Thanks

Babu


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-22 14:36   ` Peter Newman
  2023-09-22 15:49     ` Moger, Babu
@ 2023-09-22 17:59     ` Fenghua Yu
  2023-09-25  8:10       ` Peter Newman
  1 sibling, 1 reply; 42+ messages in thread
From: Fenghua Yu @ 2023-09-22 17:59 UTC (permalink / raw)
  To: Peter Newman, Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, dave.hansen, x86, hpa,
	paulmck, akpm, quic_neeraju, rdunlap, damien.lemoal, songmuchun,
	peterz, jpoimboe, pbonzini, chang.seok.bae, pawan.kumar.gupta,
	jmattson, daniel.sneddon, sandipan.das, tony.luck, james.morse,
	linux-doc, linux-kernel, bagasdotme, eranian, christophe.leroy,
	jarkko, adrian.hunter, quic_jiles

Hi, Peter,

On 9/22/23 07:36, Peter Newman wrote:
> Hi Babu,
> 
> On Sat, Sep 16, 2023 at 12:42 AM Babu Moger <babu.moger@amd.com> wrote:
>>
>> In x86, hardware uses RMID to identify a monitoring group. When a user
>> creates a monitor group these details are not visible. These details
>> can help resctrl debugging.
>>
>> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
>> Users can see these details when resctrl is mounted with "-o debug" option.
> 
> When I reviewed this, I went through the whole series second-guessing
> the wording above and wondering whether "monitoring groups" applied to
> CTRL_MON groups.
> 
> I was able to confirm that mon_hw_id did appear and had a believable
> value in CTRL_MON groups which had allocated monitors. (and I added
> some comma-separated PID lists to the tasks node)
> 
> for the series:
> Tested-By: Peter Newman <peternewman@google.com>

Please use "Tested-by" instead of "Tested-By" (the "By" is wrong).

> 
>> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
>> index a07fa4329b65..b4910892b0a6 100644
>> --- a/arch/x86/kernel/cpu/resctrl/internal.h
>> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
>> @@ -296,6 +296,11 @@ struct rdtgroup {
>>    *     --> RFTYPE_BASE (Files common for both MON and CTRL groups)
>>    *         Files: cpus, cpus_list, tasks
>>    *
>> + *             --> RFTYPE_MON (Files only for MON group)
> 
> If monitoring is supported, all groups are MON groups. I think the
> "only" above caused me to second guess whether this takes into account
> CTRL_MON groups getting the RFTYPE_MON flag set dynamically.
> 
> However, I think the documentation above is still technically accurate.
> 
> for the series:
> Reviewed-By: Peter Newman <peternewman@google.com>

Please use "Reviewed-by" instead of "Reviewed-By" (the "By" is wrong).

Thanks.

-Fenghua

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-22 17:59     ` Fenghua Yu
@ 2023-09-25  8:10       ` Peter Newman
  0 siblings, 0 replies; 42+ messages in thread
From: Peter Newman @ 2023-09-25  8:10 UTC (permalink / raw)
  To: Fenghua Yu
  Cc: Babu Moger, corbet, reinette.chatre, tglx, mingo, bp,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles

On Fri, Sep 22, 2023 at 7:59 PM Fenghua Yu <fenghua.yu@intel.com> wrote:
> On 9/22/23 07:36, Peter Newman wrote:
> > On Sat, Sep 16, 2023 at 12:42 AM Babu Moger <babu.moger@amd.com> wrote:
> >>
> >> In x86, hardware uses RMID to identify a monitoring group. When a user
> >> creates a monitor group these details are not visible. These details
> >> can help resctrl debugging.
> >>
> >> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
> >> Users can see these details when resctrl is mounted with "-o debug" option.
> >
> > When I reviewed this, I went through the whole series second-guessing
> > the wording above and wondering whether "monitoring groups" applied to
> > CTRL_MON groups.
> >
> > I was able to confirm that mon_hw_id did appear and had a believable
> > value in CTRL_MON groups which had allocated monitors. (and I added
> > some comma-separated PID lists to the tasks node)
> >
> > for the series:
> > Tested-By: Peter Newman <peternewman@google.com>
>
> Please use "Tested-by" instead of "Tested-By" (the "By" is wrong).

Tested-by: Peter Newman <peternewman@google.com>

> >
> >> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> >> index a07fa4329b65..b4910892b0a6 100644
> >> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> >> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> >> @@ -296,6 +296,11 @@ struct rdtgroup {
> >>    *     --> RFTYPE_BASE (Files common for both MON and CTRL groups)
> >>    *         Files: cpus, cpus_list, tasks
> >>    *
> >> + *             --> RFTYPE_MON (Files only for MON group)
> >
> > If monitoring is supported, all groups are MON groups. I think the
> > "only" above caused me to second guess whether this takes into account
> > CTRL_MON groups getting the RFTYPE_MON flag set dynamically.
> >
> > However, I think the documentation above is still technically accurate.
> >
> > for the series:
> > Reviewed-By: Peter Newman <peternewman@google.com>
>
> Please use "Reviewed-by" instead of "Reviewed-By" (the "By" is wrong).

Reviewed-by: Peter Newman <peternewman@google.com>

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency
  2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
@ 2023-09-25 21:16   ` Fenghua Yu
  2023-09-27 18:31   ` Reinette Chatre
  2023-09-29 15:14   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Fenghua Yu @ 2023-09-25 21:16 UTC (permalink / raw)
  To: Babu Moger, corbet, reinette.chatre, tglx, mingo, bp
  Cc: dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman



On 9/15/23 15:42, Babu Moger wrote:
> resctrl associates rftype flags with its files so that files can be chosen
> based on the resource, whether it is info or base, and if it is control
> or monitor type file. These flags use the RF_ as well as RFTYPE_ prefixes.
> 
> Change the prefix to RFTYPE_ for all these flags to be consistent.
> 
> Also add the flag RFTYPE_MON_BASE, which contains the files required for
> MON group only.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>

Thanks.

-Fenghua

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group
  2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
@ 2023-09-25 21:19   ` Fenghua Yu
  2023-09-27 18:32   ` Reinette Chatre
  2023-09-29 15:40   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Fenghua Yu @ 2023-09-25 21:19 UTC (permalink / raw)
  To: Babu Moger, corbet, reinette.chatre, tglx, mingo, bp
  Cc: dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman



On 9/15/23 15:42, Babu Moger wrote:
> In x86, hardware uses CLOSID to identify a control group. When a user
> creates a control group this information is not visible to the user.
> It can help resctrl debugging.
> 
> Add CLOSID(ctrl_hw_id) to the control groups display in resctrl
> interface. Users can see this detail when resctrl is mounted with
> "-o debug" option.
> 
> Other architectures do not use "CLOSID". Use the names ctrl_hw_id
> to refer to "CLOSID" in an effort to keep the naming generic.
> 
> For example:
>   $cat /sys/fs/resctrl/ctrl_grp1/ctrl_hw_id
>   1
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>

Thanks.

-Fenghua

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
@ 2023-09-25 21:20   ` Fenghua Yu
  2023-09-27 18:34   ` Reinette Chatre
  2023-09-29 15:59   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Fenghua Yu @ 2023-09-25 21:20 UTC (permalink / raw)
  To: Babu Moger, corbet, reinette.chatre, tglx, mingo, bp
  Cc: dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman


On 9/15/23 15:42, Babu Moger wrote:
> There are 3 types resctrl root files.
> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups
> 
> Files only for the MON groups are not supported now. Add the
> support to create these files.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>

Thanks.

-Fenghua


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
  2023-09-22 14:36   ` Peter Newman
@ 2023-09-25 21:21   ` Fenghua Yu
  2023-09-27 18:35   ` Reinette Chatre
  2023-09-29 15:56   ` Ilpo Järvinen
  3 siblings, 0 replies; 42+ messages in thread
From: Fenghua Yu @ 2023-09-25 21:21 UTC (permalink / raw)
  To: Babu Moger, corbet, reinette.chatre, tglx, mingo, bp
  Cc: dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman



On 9/15/23 15:42, Babu Moger wrote:
> In x86, hardware uses RMID to identify a monitoring group. When a user
> creates a monitor group these details are not visible. These details
> can help resctrl debugging.
> 
> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
> Users can see these details when resctrl is mounted with "-o debug" option.
> 
> Other architectures do not use "RMID". Use the name mon_hw_id to refer
> to "RMID" in an effort to keep the naming generic.
> 
> For example:
>   $cat /sys/fs/resctrl/mon_groups/mon_grp1/mon_hw_id
>   3
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>

Thanks.

-Fenghua

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once
  2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
@ 2023-09-27 18:30   ` Reinette Chatre
  2023-09-27 21:44     ` Moger, Babu
  2023-09-29 15:08   ` Ilpo Järvinen
  1 sibling, 1 reply; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 18:30 UTC (permalink / raw)
  To: Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/15/2023 3:42 PM, Babu Moger wrote:
> The resctrl task assignment for monitor or control group needs to be
> done one at a time. For example:
> 
>   $mount -t resctrl resctrl /sys/fs/resctrl/
>   $mkdir /sys/fs/resctrl/ctrl_grp1
>   $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
>   $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
>   $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> This is not user-friendly when dealing with hundreds of tasks.
> 
> Support multiple task assignment in one command with tasks ids separated
> by commas. For example:
>   $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>

x86 area aims to have a uniform view of commit tags.
Please review the "Ordering of commit tags" section within
Documentation/process/maintainer-tip.rst and apply that
custom to this whole series.

Reinette



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency
  2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
  2023-09-25 21:16   ` Fenghua Yu
@ 2023-09-27 18:31   ` Reinette Chatre
  2023-09-27 21:51     ` Moger, Babu
  2023-09-29 15:14   ` Ilpo Järvinen
  2 siblings, 1 reply; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 18:31 UTC (permalink / raw)
  To: Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/15/2023 3:42 PM, Babu Moger wrote:
> resctrl associates rftype flags with its files so that files can be chosen
> based on the resource, whether it is info or base, and if it is control
> or monitor type file. These flags use the RF_ as well as RFTYPE_ prefixes.
> 
> Change the prefix to RFTYPE_ for all these flags to be consistent.
> 
> Also add the flag RFTYPE_MON_BASE, which contains the files required for
> MON group only.

This appears to be appending an unexpected (because it introduces an unused flag)
change without motivation as an afterthought.

How about:
	Add RFTYPE_MON_BASE that will be used in a later patch. RFTYPE_MON_BASE
	complements existing RFTYPE_CTRL_BASE and represents files
	belonging to monitoring groups.

Feel free to improve.

> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---

The patch looks good. With the changelog cleared up:

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Reinette


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group
  2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
  2023-09-25 21:19   ` Fenghua Yu
@ 2023-09-27 18:32   ` Reinette Chatre
  2023-09-29 15:40   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 18:32 UTC (permalink / raw)
  To: Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/15/2023 3:42 PM, Babu Moger wrote:
> In x86, hardware uses CLOSID to identify a control group. When a user
> creates a control group this information is not visible to the user.
> It can help resctrl debugging.
> 
> Add CLOSID(ctrl_hw_id) to the control groups display in resctrl
> interface. Users can see this detail when resctrl is mounted with
> "-o debug" option.
> 
> Other architectures do not use "CLOSID". Use the names ctrl_hw_id
> to refer to "CLOSID" in an effort to keep the naming generic.
> 
> For example:
>  $cat /sys/fs/resctrl/ctrl_grp1/ctrl_hw_id
>  1
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Reinette

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
  2023-09-25 21:20   ` Fenghua Yu
@ 2023-09-27 18:34   ` Reinette Chatre
  2023-09-27 21:34     ` Moger, Babu
  2023-09-29 15:59   ` Ilpo Järvinen
  2 siblings, 1 reply; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 18:34 UTC (permalink / raw)
  To: Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/15/2023 3:42 PM, Babu Moger wrote:
> There are 3 types resctrl root files.

Considering patch #4, should this be "base"?

> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups

If (1) is accurate then I cannot see how (2) can be accurate.

> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups

Same here.

> 
> Files only for the MON groups are not supported now. Add the
> support to create these files.

This is not accurate. Files "only for the MON groups" are
actually the only monitor files that *are* supported. The
problem being fixed here is that monitor files are
not supported for CTRL_MON groups.

I made an attempt at rewriting this commit message but I am
doing it quite quickly so please do improve it:

	Files unique to monitoring groups have the
	RFTYPE_MON flag. When a new monitoring group is created
	the resctrl files with flags RFTYPE_BASE (files common
	to all resource groups) and RFTYPE_MON (files unique
	to monitoring groups) are created to support interacting with
	the new monitoring group.

	A resource group can support both monitoring and control,
	also termed a CTRL_MON resource group. CTRL_MON groups should
	get both monitoring and control resctrl files but that
	is not the case. Only the RFTYPE_BASE and RFTYPE_CTRL files
	are created for	CTRL_MON groups. This is not a problem
	because there are no monitoring specific files with the
	RFTYPE_MON flag associated with resource groups. 

	A later patch introduces the first RFTYPE_MON file for
	resource groups so fix resctrl file creation for CTRL_MON
	groups to ensure that monitoring files,	those with the
	RFTYPE_MON flag, are also created.
 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---

I only have feedback about the changelog. The patch looks good to me.

Reinette

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
  2023-09-22 14:36   ` Peter Newman
  2023-09-25 21:21   ` Fenghua Yu
@ 2023-09-27 18:35   ` Reinette Chatre
  2023-09-29 15:56   ` Ilpo Järvinen
  3 siblings, 0 replies; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 18:35 UTC (permalink / raw)
  To: Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/15/2023 3:42 PM, Babu Moger wrote:
> In x86, hardware uses RMID to identify a monitoring group. When a user
> creates a monitor group these details are not visible. These details
> can help resctrl debugging.
> 
> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
> Users can see these details when resctrl is mounted with "-o debug" option.
> 
> Other architectures do not use "RMID". Use the name mon_hw_id to refer
> to "RMID" in an effort to keep the naming generic.
> 
> For example:
>  $cat /sys/fs/resctrl/mon_groups/mon_grp1/mon_hw_id
>  3
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Reinette

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-27 18:34   ` Reinette Chatre
@ 2023-09-27 21:34     ` Moger, Babu
  2023-09-27 22:02       ` Reinette Chatre
  0 siblings, 1 reply; 42+ messages in thread
From: Moger, Babu @ 2023-09-27 21:34 UTC (permalink / raw)
  To: Reinette Chatre, Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Reinette,

On 9/27/2023 1:34 PM, Reinette Chatre wrote:
> Hi Babu,
>
> On 9/15/2023 3:42 PM, Babu Moger wrote:
>> There are 3 types resctrl root files.
> Considering patch #4, should this be "base"?
Sure.
>
>> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
>> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
> If (1) is accurate then I cannot see how (2) can be accurate.

How about ?

2. RFTYPE_BASE | RFTYPE_CTRL : Files for the CTRL groups

>
>> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups
> Same here.

How bout?

3. RFTYPE_BASE | RFTYPE_MON : Files for the MON groups

>
>> Files only for the MON groups are not supported now. Add the
>> support to create these files.
> This is not accurate. Files "only for the MON groups" are
> actually the only monitor files that *are* supported. The
> problem being fixed here is that monitor files are
> not supported for CTRL_MON groups.
>
> I made an attempt at rewriting this commit message but I am
> doing it quite quickly so please do improve it:
>
> 	Files unique to monitoring groups have the
> 	RFTYPE_MON flag. When a new monitoring group is created
> 	the resctrl files with flags RFTYPE_BASE (files common
> 	to all resource groups) and RFTYPE_MON (files unique
> 	to monitoring groups) are created to support interacting with
> 	the new monitoring group.
>
> 	A resource group can support both monitoring and control,
> 	also termed a CTRL_MON resource group. CTRL_MON groups should
> 	get both monitoring and control resctrl files but that
> 	is not the case. Only the RFTYPE_BASE and RFTYPE_CTRL files
> 	are created for	CTRL_MON groups. This is not a problem
> 	because there are no monitoring specific files with the
> 	RFTYPE_MON flag associated with resource groups.
>
> 	A later patch introduces the first RFTYPE_MON file for
> 	resource groups so fix resctrl file creation for CTRL_MON
> 	groups to ensure that monitoring files,	those with the
> 	RFTYPE_MON flag, are also created.

Looks good with slight change(only last para. Rest looks good). Just 
removed the "fix".

A later patch introduces the first RFTYPE_MON file for
resource groups. Add the changes to create the files for CTRL_MON
groups to ensure that monitoring files,	those with the RFTYPE_MON flag,
are also created.


>   
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
> I only have feedback about the changelog. The patch looks good to me.

Thanks

Babu


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once
  2023-09-27 18:30   ` Reinette Chatre
@ 2023-09-27 21:44     ` Moger, Babu
  2023-09-27 22:20       ` Reinette Chatre
  0 siblings, 1 reply; 42+ messages in thread
From: Moger, Babu @ 2023-09-27 21:44 UTC (permalink / raw)
  To: Reinette Chatre, Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Reinette,

On 9/27/2023 1:30 PM, Reinette Chatre wrote:
> Hi Babu,
>
> On 9/15/2023 3:42 PM, Babu Moger wrote:
>> The resctrl task assignment for monitor or control group needs to be
>> done one at a time. For example:
>>
>>    $mount -t resctrl resctrl /sys/fs/resctrl/
>>    $mkdir /sys/fs/resctrl/ctrl_grp1
>>    $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
>>    $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
>>    $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks
>>
>> This is not user-friendly when dealing with hundreds of tasks.
>>
>> Support multiple task assignment in one command with tasks ids separated
>> by commas. For example:
>>    $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks
>>
>> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
>> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
>> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
>> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
> x86 area aims to have a uniform view of commit tags.
> Please review the "Ordering of commit tags" section within
> Documentation/process/maintainer-tip.rst and apply that
> custom to this whole series.

After reading it, it appears this should be the order. starting with Author SOB. Hope this is what you meant.

Signed-off-by: Babu Moger <babu.moger@amd.com>
Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Thanks
Babu


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency
  2023-09-27 18:31   ` Reinette Chatre
@ 2023-09-27 21:51     ` Moger, Babu
  0 siblings, 0 replies; 42+ messages in thread
From: Moger, Babu @ 2023-09-27 21:51 UTC (permalink / raw)
  To: Reinette Chatre, Babu Moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Reinette,

On 9/27/2023 1:31 PM, Reinette Chatre wrote:
> Hi Babu,
>
> On 9/15/2023 3:42 PM, Babu Moger wrote:
>> resctrl associates rftype flags with its files so that files can be chosen
>> based on the resource, whether it is info or base, and if it is control
>> or monitor type file. These flags use the RF_ as well as RFTYPE_ prefixes.
>>
>> Change the prefix to RFTYPE_ for all these flags to be consistent.
>>
>> Also add the flag RFTYPE_MON_BASE, which contains the files required for
>> MON group only.
> This appears to be appending an unexpected (because it introduces an unused flag)
> change without motivation as an afterthought.
>
> How about:
> 	Add RFTYPE_MON_BASE that will be used in a later patch. RFTYPE_MON_BASE
> 	complements existing RFTYPE_CTRL_BASE and represents files
> 	belonging to monitoring groups.

Looks good.


>
> Feel free to improve.
>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
> The patch looks good. With the changelog cleared up:
>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Thanks

Babu


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-27 21:34     ` Moger, Babu
@ 2023-09-27 22:02       ` Reinette Chatre
  2023-10-02 17:26         ` Moger, Babu
  0 siblings, 1 reply; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 22:02 UTC (permalink / raw)
  To: babu.moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/27/2023 2:34 PM, Moger, Babu wrote:
> Hi Reinette,
> 
> On 9/27/2023 1:34 PM, Reinette Chatre wrote:
>> Hi Babu,
>>
>> On 9/15/2023 3:42 PM, Babu Moger wrote:
>>> There are 3 types resctrl root files.
>> Considering patch #4, should this be "base"?
> Sure.
>>
>>> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
>>> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
>> If (1) is accurate then I cannot see how (2) can be accurate.
> 
> How about ?
> 
> 2. RFTYPE_BASE | RFTYPE_CTRL : Files for the CTRL groups

Yes, this is accurate. Even so, this snippet does not seem
necessary considering the changelog rewrite below.

> 
>>
>>> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups
>> Same here.
> 
> How bout?
> 
> 3. RFTYPE_BASE | RFTYPE_MON : Files for the MON groups

Same comment.

> 
>>
>>> Files only for the MON groups are not supported now. Add the
>>> support to create these files.
>> This is not accurate. Files "only for the MON groups" are
>> actually the only monitor files that *are* supported. The
>> problem being fixed here is that monitor files are
>> not supported for CTRL_MON groups.
>>
>> I made an attempt at rewriting this commit message but I am
>> doing it quite quickly so please do improve it:
>>
>>     Files unique to monitoring groups have the
>>     RFTYPE_MON flag. When a new monitoring group is created
>>     the resctrl files with flags RFTYPE_BASE (files common
>>     to all resource groups) and RFTYPE_MON (files unique
>>     to monitoring groups) are created to support interacting with
>>     the new monitoring group.
>>
>>     A resource group can support both monitoring and control,
>>     also termed a CTRL_MON resource group. CTRL_MON groups should
>>     get both monitoring and control resctrl files but that
>>     is not the case. Only the RFTYPE_BASE and RFTYPE_CTRL files
>>     are created for    CTRL_MON groups. This is not a problem
>>     because there are no monitoring specific files with the
>>     RFTYPE_MON flag associated with resource groups.
>>
>>     A later patch introduces the first RFTYPE_MON file for
>>     resource groups so fix resctrl file creation for CTRL_MON
>>     groups to ensure that monitoring files,    those with the
>>     RFTYPE_MON flag, are also created.
> 
> Looks good with slight change(only last para. Rest looks good). Just removed the "fix".
> 
> A later patch introduces the first RFTYPE_MON file for
> resource groups. Add the changes to create the files for CTRL_MON
> groups to ensure that monitoring files,    those with the RFTYPE_MON flag,
> are also created.
> 

"Add the changes to" is not necessary. With this and removing the "fix" it
can be summarized to:
	A later patch introduces the first monitoring specific (RFTYPE_MON)
	file for resource groups. Ensure that files with the RFTYPE_MON
	flag are created for CTRL_MON groups.

What do you think?

Reinette

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once
  2023-09-27 21:44     ` Moger, Babu
@ 2023-09-27 22:20       ` Reinette Chatre
  0 siblings, 0 replies; 42+ messages in thread
From: Reinette Chatre @ 2023-09-27 22:20 UTC (permalink / raw)
  To: babu.moger, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Babu,

On 9/27/2023 2:44 PM, Moger, Babu wrote:
> On 9/27/2023 1:30 PM, Reinette Chatre wrote:
>> On 9/15/2023 3:42 PM, Babu Moger wrote:
>>> The resctrl task assignment for monitor or control group needs to be
>>> done one at a time. For example:
>>>
>>>    $mount -t resctrl resctrl /sys/fs/resctrl/
>>>    $mkdir /sys/fs/resctrl/ctrl_grp1
>>>    $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
>>>    $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
>>>    $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks
>>>
>>> This is not user-friendly when dealing with hundreds of tasks.
>>>
>>> Support multiple task assignment in one command with tasks ids separated
>>> by commas. For example:
>>>    $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks
>>>
>>> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
>>> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
>>> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
>>> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
>>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> x86 area aims to have a uniform view of commit tags.
>> Please review the "Ordering of commit tags" section within
>> Documentation/process/maintainer-tip.rst and apply that
>> custom to this whole series.
> 
> After reading it, it appears this should be the order. starting with Author SOB. Hope this is what you meant.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> 

This matches my interpretation.

Reinette


^ permalink raw reply	[flat|nested] 42+ messages in thread

* RE: [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features
  2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
                   ` (9 preceding siblings ...)
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
@ 2023-09-28  5:28 ` Shaopeng Tan (Fujitsu)
  2023-09-28 14:21   ` Moger, Babu
  10 siblings, 1 reply; 42+ messages in thread
From: Shaopeng Tan (Fujitsu) @ 2023-09-28  5:28 UTC (permalink / raw)
  To: 'Babu Moger', 'corbet@lwn.net',
	'reinette.chatre@intel.com', 'tglx@linutronix.de',
	'mingo@redhat.com', 'bp@alien8.de'
  Cc: 'fenghua.yu@intel.com',
	'dave.hansen@linux.intel.com', 'x86@kernel.org',
	'hpa@zytor.com', 'paulmck@kernel.org',
	'akpm@linux-foundation.org',
	'quic_neeraju@quicinc.com',
	'rdunlap@infradead.org',
	'damien.lemoal@opensource.wdc.com',
	'songmuchun@bytedance.com',
	'peterz@infradead.org', 'jpoimboe@kernel.org',
	'pbonzini@redhat.com', 'babu.moger@amd.com',
	'chang.seok.bae@intel.com',
	'pawan.kumar.gupta@linux.intel.com',
	'jmattson@google.com',
	'daniel.sneddon@linux.intel.com',
	'sandipan.das@amd.com', 'tony.luck@intel.com',
	'james.morse@arm.com',
	'linux-doc@vger.kernel.org',
	'linux-kernel@vger.kernel.org',
	'bagasdotme@gmail.com', 'eranian@google.com',
	'christophe.leroy@csgroup.eu',
	'jarkko@kernel.org', 'adrian.hunter@intel.com',
	'quic_jiles@quicinc.com',
	'peternewman@google.com'

Hi Babu,

I tested these features and ran the selftests/resctrl test set on Intel(R) Xeon(R) Gold 6254 CPU, there is no problem.

<Reviewed-by:tan.shaopeng@jp.fujitsu.com>
<Tested-by:tan.shaopeng@jp.fujitsu.com>

Best regards,
Shaopeng TAN

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features
  2023-09-28  5:28 ` [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Shaopeng Tan (Fujitsu)
@ 2023-09-28 14:21   ` Moger, Babu
  0 siblings, 0 replies; 42+ messages in thread
From: Moger, Babu @ 2023-09-28 14:21 UTC (permalink / raw)
  To: Shaopeng Tan (Fujitsu), 'corbet@lwn.net',
	'reinette.chatre@intel.com', 'tglx@linutronix.de',
	'mingo@redhat.com', 'bp@alien8.de'
  Cc: 'fenghua.yu@intel.com',
	'dave.hansen@linux.intel.com', 'x86@kernel.org',
	'hpa@zytor.com', 'paulmck@kernel.org',
	'akpm@linux-foundation.org',
	'quic_neeraju@quicinc.com',
	'rdunlap@infradead.org',
	'damien.lemoal@opensource.wdc.com',
	'songmuchun@bytedance.com',
	'peterz@infradead.org', 'jpoimboe@kernel.org',
	'pbonzini@redhat.com', 'chang.seok.bae@intel.com',
	'pawan.kumar.gupta@linux.intel.com',
	'jmattson@google.com',
	'daniel.sneddon@linux.intel.com',
	'sandipan.das@amd.com', 'tony.luck@intel.com',
	'james.morse@arm.com',
	'linux-doc@vger.kernel.org',
	'linux-kernel@vger.kernel.org',
	'bagasdotme@gmail.com', 'eranian@google.com',
	'christophe.leroy@csgroup.eu',
	'jarkko@kernel.org', 'adrian.hunter@intel.com',
	'quic_jiles@quicinc.com',
	'peternewman@google.com'

Hi Shaopeng,

On 9/28/23 00:28, Shaopeng Tan (Fujitsu) wrote:
> Hi Babu,
> 
> I tested these features and ran the selftests/resctrl test set on Intel(R) Xeon(R) Gold 6254 CPU, there is no problem.
> 
> <Reviewed-by:tan.shaopeng@jp.fujitsu.com>
> <Tested-by:tan.shaopeng@jp.fujitsu.com>

Thanks. I believe the normal format is "Tag: Name <email>"
Like this below. Please update next time.

Reviewed-by:Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>


-- 
Thanks
Babu Moger

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once
  2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
  2023-09-27 18:30   ` Reinette Chatre
@ 2023-09-29 15:08   ` Ilpo Järvinen
  1 sibling, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:08 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 3680 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> The resctrl task assignment for monitor or control group needs to be
> done one at a time. For example:
> 
>   $mount -t resctrl resctrl /sys/fs/resctrl/
>   $mkdir /sys/fs/resctrl/ctrl_grp1
>   $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
>   $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
>   $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> This is not user-friendly when dealing with hundreds of tasks.
> 
> Support multiple task assignment in one command with tasks ids separated
> by commas. For example:
>   $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  Documentation/arch/x86/resctrl.rst     |  9 ++++++++-
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 25 ++++++++++++++++++++++---
>  2 files changed, 30 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
> index cb05d90111b4..8154e9975d1e 100644
> --- a/Documentation/arch/x86/resctrl.rst
> +++ b/Documentation/arch/x86/resctrl.rst
> @@ -299,7 +299,14 @@ All groups contain the following files:
>  "tasks":
>  	Reading this file shows the list of all tasks that belong to
>  	this group. Writing a task id to the file will add a task to the
> -	group. If the group is a CTRL_MON group the task is removed from
> +	group. Multiple tasks can be added by separating the task ids
> +	with commas. Tasks will be assigned sequentially. Multiple
> +	failures are not supported. A single failure encountered while
> +	attempting to assign a task will cause the operation to abort and
> +	already added tasks before the failure will remain in the group.
> +	Failures will be logged to /sys/fs/resctrl/info/last_cmd_status.
> +
> +	If the group is a CTRL_MON group the task is removed from
>  	whichever previous CTRL_MON group owned the task and also from
>  	any MON group that owned the task. If the group is a MON group,
>  	then the task must already belong to the CTRL_MON parent of this
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 725344048f85..f0d163950969 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -696,11 +696,10 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
>  				    char *buf, size_t nbytes, loff_t off)
>  {
>  	struct rdtgroup *rdtgrp;
> +	char *pid_str;
>  	int ret = 0;
>  	pid_t pid;
>  
> -	if (kstrtoint(strstrip(buf), 0, &pid) || pid < 0)
> -		return -EINVAL;
>  	rdtgrp = rdtgroup_kn_lock_live(of->kn);
>  	if (!rdtgrp) {
>  		rdtgroup_kn_unlock(of->kn);
> @@ -715,7 +714,27 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
>  		goto unlock;
>  	}
>  
> -	ret = rdtgroup_move_task(pid, rdtgrp, of);
> +	while (buf && buf[0] != '\0' && buf[0] != '\n') {
> +		pid_str = strim(strsep(&buf, ","));
> +
> +		if (kstrtoint(pid_str, 0, &pid)) {
> +			rdt_last_cmd_printf("Task list parsing error pid %s\n", pid_str);
> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		if (pid < 0) {
> +			rdt_last_cmd_printf("Invalid pid %d\n", pid);
> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		ret = rdtgroup_move_task(pid, rdtgrp, of);
> +		if (ret) {
> +			rdt_last_cmd_printf("Error while processing task %d\n", pid);
> +			break;
> +		}
> +	}
>  
>  unlock:
>  	rdtgroup_kn_unlock(of->kn);
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions
  2023-09-15 22:42 ` [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions Babu Moger
@ 2023-09-29 15:09   ` Ilpo Järvinen
  0 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:09 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 2192 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> The rftype flags are bitmaps used for adding files under resctrl
> filesystem. Some of these bitmaps have one extra level of indirection
> which is not necessary.
> 
> Make them all direct definition to be consistent and easier to read.
> 
> Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
> Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/internal.h | 9 +++------
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 6 +++++-
>  2 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 85ceaf9a31ac..62767774810d 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -243,12 +243,9 @@ struct rdtgroup {
>   */
>  #define RFTYPE_INFO			BIT(0)
>  #define RFTYPE_BASE			BIT(1)
> -#define RF_CTRLSHIFT			4
> -#define RF_MONSHIFT			5
> -#define RF_TOPSHIFT			6
> -#define RFTYPE_CTRL			BIT(RF_CTRLSHIFT)
> -#define RFTYPE_MON			BIT(RF_MONSHIFT)
> -#define RFTYPE_TOP			BIT(RF_TOPSHIFT)
> +#define RFTYPE_CTRL			BIT(4)
> +#define RFTYPE_MON			BIT(5)
> +#define RFTYPE_TOP			BIT(6)
>  #define RFTYPE_RES_CACHE		BIT(8)
>  #define RFTYPE_RES_MB			BIT(9)
>  #define RF_CTRL_INFO			(RFTYPE_INFO | RFTYPE_CTRL)
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index f0d163950969..7ddfa4b470e6 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -3242,7 +3242,11 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
>  		goto out_destroy;
>  	}
>  
> -	files = RFTYPE_BASE | BIT(RF_CTRLSHIFT + rtype);
> +	if (rtype == RDTCTRL_GROUP)
> +		files = RFTYPE_BASE | RFTYPE_CTRL;
> +	else
> +		files = RFTYPE_BASE | RFTYPE_MON;
> +
>  	ret = rdtgroup_add_files(kn, files);
>  	if (ret) {
>  		rdt_last_cmd_puts("kernfs fill error\n");
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency
  2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
  2023-09-25 21:16   ` Fenghua Yu
  2023-09-27 18:31   ` Reinette Chatre
@ 2023-09-29 15:14   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:14 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 558 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> resctrl associates rftype flags with its files so that files can be chosen
> based on the resource, whether it is info or base, and if it is control
> or monitor type file. These flags use the RF_ as well as RFTYPE_ prefixes.
> 
> Change the prefix to RFTYPE_ for all these flags to be consistent.
> 
> Also add the flag RFTYPE_MON_BASE, which contains the files required for
> MON group only.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy
  2023-09-15 22:42 ` [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
@ 2023-09-29 15:17   ` Ilpo Järvinen
  0 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:17 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 3262 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> resctrl uses RFTYPE flags for creating resctrl directory structure.
> 
> Definitions and directory structures are not documented. Add
> comments to improve the readability and help future additions.
> 
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/internal.h | 58 ++++++++++++++++++++++++++
>  1 file changed, 58 insertions(+)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index f71bc82c882f..14988c9f402c 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -240,6 +240,64 @@ struct rdtgroup {
>  
>  /*
>   * Define the file type flags for base and info directories.
> + *
> + * RESCTRL filesystem has two main components
> + *	a. info
> + *	b. base
> + *
> + * /sys/fs/resctrl/
> + *	|
> + *	--> info (Top level directory named "info". Contains files that
> + *	|	  provide details on control and monitoring resources.)
> + *	|
> + *	--> base (Root directory associated with default resource group
> + *		  as well as directories created by user for MON and CTRL
> + *		  groups. Contains files to interact with MON and CTRL
> + *		  groups.)
> + *
> + *	Note: resctrl uses flags for files, not for directories.
> + *	      Directories are created based on the resource type. Added
> + *	      directories below for better understanding.
> + *
> + *	info directory structure
> + *	------------------------------------------------------------------
> + *	--> RFTYPE_INFO
> + *	    Directory: info
> + *		--> RFTYPE_TOP (Files in top level of info directory)
> + *		    File: last_cmd_status
> + *
> + *		--> RFTYPE_MON (Files for all monitoring resources)
> + *		    Directory: L3_MON
> + *		        Files: mon_features, num_rmids
> + *
> + *			--> RFTYPE_RES_CACHE (Files for cache monitoring resources)
> + *			    Directory: L3_MON
> + *			        Files: max_threshold_occupancy,
> + *			               mbm_total_bytes_config,
> + *			               mbm_local_bytes_config
> + *
> + *		--> RFTYPE_CTRL (Files for all control resources)
> + *		    Directories: L2, L3, MB, SMBA, L2CODE, L2DATA, L3CODE, L3DATA
> + *		           File: num_closids
> + *
> + *			--> RFTYPE_RES_CACHE (Files for cache control resources)
> + *			    Directories: L2, L3, L2CODE, L2DATA, L3CODE, L3DATA
> + *			          Files: bit_usage, cbm_mask, min_cbm_bits,
> + *			                 shareable_bits
> + *
> + *			--> RFTYPE_RES_MB (Files for memory control resources)
> + *			    Directories: MB, SMBA
> + *			          Files: bandwidth_gran, delay_linear,
> + *			                 min_bandwidth, thread_throttle_mode
> + *
> + *	base directory structure
> + *	------------------------------------------------------------------
> + *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
> + *	    Files: cpus, cpus_list, tasks
> + *
> + *		--> RFTYPE_CTRL (Files only for CTRL group)
> + *		    Files: mode, schemata, size
> + *
>   */
>  #define RFTYPE_INFO			BIT(0)
>  #define RFTYPE_BASE			BIT(1)
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx()
  2023-09-15 22:42 ` [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx() Babu Moger
@ 2023-09-29 15:22   ` Ilpo Järvinen
  0 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:22 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 3998 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> rdt_enable_ctx() enables the features provided during resctrl mount.
> 
> Additions to rdt_enable_ctx() are required to also modify error paths
> of rdt_enable_ctx() callers to ensure correct unwinding if errors
> are encountered after calling rdt_enable_ctx(). This is error prone.
> 
> Introduce rdt_disable_ctx() to refactor the error unwinding of
> rdt_enable_ctx() to simplify future additions. This also simplifies
> cleanup in rdt_kill_sb().
> 
> Remove cdp_disable_all() as it is not used anymore after the refactor.
> 
> Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 53 ++++++++++++++++----------
>  1 file changed, 32 insertions(+), 21 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 35945b4bf196..3ea874c80c22 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -2290,14 +2290,6 @@ int resctrl_arch_set_cdp_enabled(enum resctrl_res_level l, bool enable)
>  	return 0;
>  }
>  
> -static void cdp_disable_all(void)
> -{
> -	if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L3))
> -		resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
> -	if (resctrl_arch_get_cdp_enabled(RDT_RESOURCE_L2))
> -		resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
> -}
> -
>  /*
>   * We don't allow rdtgroup directories to be created anywhere
>   * except the root directory. Thus when looking for the rdtgroup
> @@ -2377,19 +2369,42 @@ static int mkdir_mondata_all(struct kernfs_node *parent_kn,
>  			     struct rdtgroup *prgrp,
>  			     struct kernfs_node **mon_data_kn);
>  
> +static void rdt_disable_ctx(void)
> +{
> +	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
> +	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
> +	set_mba_sc(false);
> +}
> +
>  static int rdt_enable_ctx(struct rdt_fs_context *ctx)
>  {
>  	int ret = 0;
>  
> -	if (ctx->enable_cdpl2)
> +	if (ctx->enable_cdpl2) {
>  		ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, true);
> +		if (ret)
> +			goto out_done;
> +	}
>  
> -	if (!ret && ctx->enable_cdpl3)
> +	if (ctx->enable_cdpl3) {
>  		ret = resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, true);
> +		if (ret)
> +			goto out_cdpl2;
> +	}
>  
> -	if (!ret && ctx->enable_mba_mbps)
> +	if (ctx->enable_mba_mbps) {
>  		ret = set_mba_sc(true);
> +		if (ret)
> +			goto out_cdpl3;
> +	}
> +
> +	return 0;
>  
> +out_cdpl3:
> +	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
> +out_cdpl2:
> +	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
> +out_done:
>  	return ret;
>  }
>  
> @@ -2497,13 +2512,13 @@ static int rdt_get_tree(struct fs_context *fc)
>  	}
>  
>  	ret = rdt_enable_ctx(ctx);
> -	if (ret < 0)
> -		goto out_cdp;
> +	if (ret)
> +		goto out;
>  
>  	ret = schemata_list_create();
>  	if (ret) {
>  		schemata_list_destroy();
> -		goto out_mba;
> +		goto out_ctx;
>  	}
>  
>  	closid_init();
> @@ -2562,11 +2577,8 @@ static int rdt_get_tree(struct fs_context *fc)
>  	kernfs_remove(kn_info);
>  out_schemata_free:
>  	schemata_list_destroy();
> -out_mba:
> -	if (ctx->enable_mba_mbps)
> -		set_mba_sc(false);
> -out_cdp:
> -	cdp_disable_all();
> +out_ctx:
> +	rdt_disable_ctx();
>  out:
>  	rdt_last_cmd_clear();
>  	mutex_unlock(&rdtgroup_mutex);
> @@ -2798,12 +2810,11 @@ static void rdt_kill_sb(struct super_block *sb)
>  	cpus_read_lock();
>  	mutex_lock(&rdtgroup_mutex);
>  
> -	set_mba_sc(false);
> +	rdt_disable_ctx();
>  
>  	/*Put everything back to default values. */
>  	for_each_alloc_capable_rdt_resource(r)
>  		reset_all_ctrls(r);
> -	cdp_disable_all();
>  	rmdir_all_sub();
>  	rdt_pseudo_lock_release();
>  	rdtgroup_default.mode = RDT_MODE_SHAREABLE;
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option
  2023-09-15 22:42 ` [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option Babu Moger
@ 2023-09-29 15:25   ` Ilpo Järvinen
  0 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:25 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 4585 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> Add "-o debug" option to mount resctrl filesystem in debug mode.
> When in debug mode resctrl displays files that have the new
> RFTYPE_DEBUG flag to help resctrl debugging.
> 
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  Documentation/arch/x86/resctrl.rst     |  5 ++++-
>  arch/x86/kernel/cpu/resctrl/internal.h |  2 ++
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 18 ++++++++++++++++++
>  3 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
> index 8154e9975d1e..28d35aaa74b4 100644
> --- a/Documentation/arch/x86/resctrl.rst
> +++ b/Documentation/arch/x86/resctrl.rst
> @@ -35,7 +35,7 @@ about the feature from resctrl's info directory.
>  
>  To use the feature mount the file system::
>  
> - # mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps]] /sys/fs/resctrl
> + # mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps][,debug]] /sys/fs/resctrl
>  
>  mount options are:
>  
> @@ -46,6 +46,9 @@ mount options are:
>  "mba_MBps":
>  	Enable the MBA Software Controller(mba_sc) to specify MBA
>  	bandwidth in MBps
> +"debug":
> +	Make debug files accessible. Available debug files are annotated with
> +	"Available only with debug option".
>  
>  L2 and L3 CDP are controlled separately.
>  
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 14988c9f402c..68d1b7147291 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -59,6 +59,7 @@ struct rdt_fs_context {
>  	bool				enable_cdpl2;
>  	bool				enable_cdpl3;
>  	bool				enable_mba_mbps;
> +	bool				enable_debug;
>  };
>  
>  static inline struct rdt_fs_context *rdt_fc2context(struct fs_context *fc)
> @@ -306,6 +307,7 @@ struct rdtgroup {
>  #define RFTYPE_TOP			BIT(6)
>  #define RFTYPE_RES_CACHE		BIT(8)
>  #define RFTYPE_RES_MB			BIT(9)
> +#define RFTYPE_DEBUG			BIT(10)
>  #define RFTYPE_CTRL_INFO		(RFTYPE_INFO | RFTYPE_CTRL)
>  #define RFTYPE_MON_INFO			(RFTYPE_INFO | RFTYPE_MON)
>  #define RFTYPE_TOP_INFO			(RFTYPE_INFO | RFTYPE_TOP)
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index a34657f0bd0c..150105c21fee 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -59,6 +59,8 @@ static void rdtgroup_destroy_root(void);
>  
>  struct dentry *debugfs_resctrl;
>  
> +static bool resctrl_debug;
> +
>  void rdt_last_cmd_clear(void)
>  {
>  	lockdep_assert_held(&rdtgroup_mutex);
> @@ -1874,6 +1876,9 @@ static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags)
>  
>  	lockdep_assert_held(&rdtgroup_mutex);
>  
> +	if (resctrl_debug)
> +		fflags |= RFTYPE_DEBUG;
> +
>  	for (rft = rfts; rft < rfts + len; rft++) {
>  		if (rft->fflags && ((fflags & rft->fflags) == rft->fflags)) {
>  			ret = rdtgroup_add_file(kn, rft);
> @@ -2377,6 +2382,8 @@ static void rdt_disable_ctx(void)
>  	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
>  	resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
>  	set_mba_sc(false);
> +
> +	resctrl_debug = false;
>  }
>  
>  static int rdt_enable_ctx(struct rdt_fs_context *ctx)
> @@ -2401,6 +2408,9 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx)
>  			goto out_cdpl3;
>  	}
>  
> +	if (ctx->enable_debug)
> +		resctrl_debug = true;
> +
>  	return 0;
>  
>  out_cdpl3:
> @@ -2605,6 +2615,7 @@ enum rdt_param {
>  	Opt_cdp,
>  	Opt_cdpl2,
>  	Opt_mba_mbps,
> +	Opt_debug,
>  	nr__rdt_params
>  };
>  
> @@ -2612,6 +2623,7 @@ static const struct fs_parameter_spec rdt_fs_parameters[] = {
>  	fsparam_flag("cdp",		Opt_cdp),
>  	fsparam_flag("cdpl2",		Opt_cdpl2),
>  	fsparam_flag("mba_MBps",	Opt_mba_mbps),
> +	fsparam_flag("debug",		Opt_debug),
>  	{}
>  };
>  
> @@ -2637,6 +2649,9 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
>  			return -EINVAL;
>  		ctx->enable_mba_mbps = true;
>  		return 0;
> +	case Opt_debug:
> +		ctx->enable_debug = true;
> +		return 0;
>  	}
>  
>  	return -EINVAL;
> @@ -3705,6 +3720,9 @@ static int rdtgroup_show_options(struct seq_file *seq, struct kernfs_root *kf)
>  	if (is_mba_sc(&rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl))
>  		seq_puts(seq, ",mba_MBps");
>  
> +	if (resctrl_debug)
> +		seq_puts(seq, ",debug");
> +
>  	return 0;
>  }
>  
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group
  2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
  2023-09-25 21:19   ` Fenghua Yu
  2023-09-27 18:32   ` Reinette Chatre
@ 2023-09-29 15:40   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:40 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 3175 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> In x86, hardware uses CLOSID to identify a control group. When a user
> creates a control group this information is not visible to the user.
> It can help resctrl debugging.
> 
> Add CLOSID(ctrl_hw_id) to the control groups display in resctrl
> interface. Users can see this detail when resctrl is mounted with
> "-o debug" option.
> 
> Other architectures do not use "CLOSID". Use the names ctrl_hw_id
> to refer to "CLOSID" in an effort to keep the naming generic.
> 
> For example:
>  $cat /sys/fs/resctrl/ctrl_grp1/ctrl_hw_id
>  1
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  Documentation/arch/x86/resctrl.rst     |  4 ++++
>  arch/x86/kernel/cpu/resctrl/internal.h |  3 +++
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 23 +++++++++++++++++++++++
>  3 files changed, 30 insertions(+)
> 
> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
> index 28d35aaa74b4..54691c8b832d 100644
> --- a/Documentation/arch/x86/resctrl.rst
> +++ b/Documentation/arch/x86/resctrl.rst
> @@ -352,6 +352,10 @@ When control is enabled all CTRL_MON groups will also contain:
>  	file. On successful pseudo-locked region creation the mode will
>  	automatically change to "pseudo-locked".
>  
> +"ctrl_hw_id":
> +	Available only with debug option. The identifier used by hardware
> +	for the control group. On x86 this is the CLOSID.
> +
>  When monitoring is enabled all MON groups will also contain:
>  
>  "mon_data":
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 68d1b7147291..a07fa4329b65 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -299,6 +299,9 @@ struct rdtgroup {
>   *		--> RFTYPE_CTRL (Files only for CTRL group)
>   *		    Files: mode, schemata, size
>   *
> + *			--> RFTYPE_DEBUG (Files to help resctrl debugging)
> + *			    File: ctrl_hw_id
> + *
>   */
>  #define RFTYPE_INFO			BIT(0)
>  #define RFTYPE_BASE			BIT(1)
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 150105c21fee..953b082cec8a 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -779,6 +779,22 @@ static int rdtgroup_tasks_show(struct kernfs_open_file *of,
>  	return ret;
>  }
>  
> +static int rdtgroup_closid_show(struct kernfs_open_file *of,
> +				struct seq_file *s, void *v)
> +{
> +	struct rdtgroup *rdtgrp;
> +	int ret = 0;
> +
> +	rdtgrp = rdtgroup_kn_lock_live(of->kn);
> +	if (rdtgrp)
> +		seq_printf(s, "%u\n", rdtgrp->closid);
> +	else
> +		ret = -ENOENT;
> +	rdtgroup_kn_unlock(of->kn);
> +
> +	return ret;
> +}
> +
>  #ifdef CONFIG_PROC_CPU_RESCTRL
>  
>  /*
> @@ -1863,6 +1879,13 @@ static struct rftype res_common_files[] = {
>  		.seq_show	= rdtgroup_size_show,
>  		.fflags		= RFTYPE_CTRL_BASE,
>  	},
> +	{
> +		.name		= "ctrl_hw_id",
> +		.mode		= 0444,
> +		.kf_ops		= &rdtgroup_kf_single_ops,
> +		.seq_show	= rdtgroup_closid_show,
> +		.fflags		= RFTYPE_CTRL_BASE | RFTYPE_DEBUG,
> +	},
>  
>  };

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount
  2023-09-15 22:42 ` [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount Babu Moger
@ 2023-09-29 15:50   ` Ilpo Järvinen
  0 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:50 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, reinette.chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 5457 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> The default resource group and its files are created during kernel
> init time. Upcoming changes will make some resctrl files optional
> based on a mount parameter. If optional files are to be added to the
> default group based on the mount option, then each new file needs to
> be created separately and call kernfs_activate() again.
> 
> Create all files of the default resource group during resctrl
> mount, destroyed during unmount, to avoid scattering resctrl
> file addition across two separate code flows.
> 
> Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
> Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 58 +++++++++++++++-----------
>  1 file changed, 34 insertions(+), 24 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 3ea874c80c22..a34657f0bd0c 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -54,6 +54,9 @@ static struct kernfs_node *kn_mondata;
>  static struct seq_buf last_cmd_status;
>  static char last_cmd_status_buf[512];
>  
> +static int rdtgroup_setup_root(struct rdt_fs_context *ctx);
> +static void rdtgroup_destroy_root(void);
> +
>  struct dentry *debugfs_resctrl;
>  
>  void rdt_last_cmd_clear(void)
> @@ -2511,10 +2514,14 @@ static int rdt_get_tree(struct fs_context *fc)
>  		goto out;
>  	}
>  
> -	ret = rdt_enable_ctx(ctx);
> +	ret = rdtgroup_setup_root(ctx);
>  	if (ret)
>  		goto out;
>  
> +	ret = rdt_enable_ctx(ctx);
> +	if (ret)
> +		goto out_root;
> +
>  	ret = schemata_list_create();
>  	if (ret) {
>  		schemata_list_destroy();
> @@ -2523,6 +2530,12 @@ static int rdt_get_tree(struct fs_context *fc)
>  
>  	closid_init();
>  
> +	ret = rdtgroup_add_files(rdtgroup_default.kn, RFTYPE_CTRL_BASE);
> +	if (ret)
> +		goto out_schemata_free;
> +
> +	kernfs_activate(rdtgroup_default.kn);
> +
>  	ret = rdtgroup_create_info_dir(rdtgroup_default.kn);
>  	if (ret < 0)
>  		goto out_schemata_free;
> @@ -2579,6 +2592,8 @@ static int rdt_get_tree(struct fs_context *fc)
>  	schemata_list_destroy();
>  out_ctx:
>  	rdt_disable_ctx();
> +out_root:
> +	rdtgroup_destroy_root();
>  out:
>  	rdt_last_cmd_clear();
>  	mutex_unlock(&rdtgroup_mutex);
> @@ -2649,7 +2664,6 @@ static int rdt_init_fs_context(struct fs_context *fc)
>  	if (!ctx)
>  		return -ENOMEM;
>  
> -	ctx->kfc.root = rdt_root;
>  	ctx->kfc.magic = RDTGROUP_SUPER_MAGIC;
>  	fc->fs_private = &ctx->kfc;
>  	fc->ops = &rdt_fs_context_ops;
> @@ -2819,6 +2833,7 @@ static void rdt_kill_sb(struct super_block *sb)
>  	rdt_pseudo_lock_release();
>  	rdtgroup_default.mode = RDT_MODE_SHAREABLE;
>  	schemata_list_destroy();
> +	rdtgroup_destroy_root();
>  	static_branch_disable_cpuslocked(&rdt_alloc_enable_key);
>  	static_branch_disable_cpuslocked(&rdt_mon_enable_key);
>  	static_branch_disable_cpuslocked(&rdt_enable_key);
> @@ -3700,10 +3715,8 @@ static struct kernfs_syscall_ops rdtgroup_kf_syscall_ops = {
>  	.show_options	= rdtgroup_show_options,
>  };
>  
> -static int __init rdtgroup_setup_root(void)
> +static int rdtgroup_setup_root(struct rdt_fs_context *ctx)
>  {
> -	int ret;
> -
>  	rdt_root = kernfs_create_root(&rdtgroup_kf_syscall_ops,
>  				      KERNFS_ROOT_CREATE_DEACTIVATED |
>  				      KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK,
> @@ -3711,6 +3724,20 @@ static int __init rdtgroup_setup_root(void)
>  	if (IS_ERR(rdt_root))
>  		return PTR_ERR(rdt_root);
>  
> +	ctx->kfc.root = rdt_root;
> +	rdtgroup_default.kn = kernfs_root_to_node(rdt_root);
> +
> +	return 0;
> +}
> +
> +static void rdtgroup_destroy_root(void)
> +{
> +	kernfs_destroy_root(rdt_root);
> +	rdtgroup_default.kn = NULL;
> +}
> +
> +static void __init rdtgroup_setup_default(void)
> +{
>  	mutex_lock(&rdtgroup_mutex);
>  
>  	rdtgroup_default.closid = 0;
> @@ -3720,19 +3747,7 @@ static int __init rdtgroup_setup_root(void)
>  
>  	list_add(&rdtgroup_default.rdtgroup_list, &rdt_all_groups);
>  
> -	ret = rdtgroup_add_files(kernfs_root_to_node(rdt_root), RFTYPE_CTRL_BASE);
> -	if (ret) {
> -		kernfs_destroy_root(rdt_root);
> -		goto out;
> -	}
> -
> -	rdtgroup_default.kn = kernfs_root_to_node(rdt_root);
> -	kernfs_activate(rdtgroup_default.kn);
> -
> -out:
>  	mutex_unlock(&rdtgroup_mutex);
> -
> -	return ret;
>  }
>  
>  static void domain_destroy_mon_state(struct rdt_domain *d)
> @@ -3854,13 +3869,11 @@ int __init rdtgroup_init(void)
>  	seq_buf_init(&last_cmd_status, last_cmd_status_buf,
>  		     sizeof(last_cmd_status_buf));
>  
> -	ret = rdtgroup_setup_root();
> -	if (ret)
> -		return ret;
> +	rdtgroup_setup_default();
>  
>  	ret = sysfs_create_mount_point(fs_kobj, "resctrl");
>  	if (ret)
> -		goto cleanup_root;
> +		return ret;
>  
>  	ret = register_filesystem(&rdt_fs_type);
>  	if (ret)
> @@ -3893,8 +3906,6 @@ int __init rdtgroup_init(void)
>  
>  cleanup_mountpoint:
>  	sysfs_remove_mount_point(fs_kobj, "resctrl");
> -cleanup_root:
> -	kernfs_destroy_root(rdt_root);
>  
>  	return ret;
>  }
> @@ -3904,5 +3915,4 @@ void __exit rdtgroup_exit(void)
>  	debugfs_remove_recursive(debugfs_resctrl);
>  	unregister_filesystem(&rdt_fs_type);
>  	sysfs_remove_mount_point(fs_kobj, "resctrl");
> -	kernfs_destroy_root(rdt_root);
>  }
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 10/10] x86/resctrl: Display RMID of resource group
  2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
                     ` (2 preceding siblings ...)
  2023-09-27 18:35   ` Reinette Chatre
@ 2023-09-29 15:56   ` Ilpo Järvinen
  3 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:56 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 3311 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> In x86, hardware uses RMID to identify a monitoring group. When a user
> creates a monitor group these details are not visible. These details
> can help resctrl debugging.
> 
> Add RMID(mon_hw_id) to the monitor groups display in resctrl interface.
> Users can see these details when resctrl is mounted with "-o debug" option.
> 
> Other architectures do not use "RMID". Use the name mon_hw_id to refer
> to "RMID" in an effort to keep the naming generic.
> 
> For example:
>  $cat /sys/fs/resctrl/mon_groups/mon_grp1/mon_hw_id
>  3
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  Documentation/arch/x86/resctrl.rst     |  4 ++++
>  arch/x86/kernel/cpu/resctrl/internal.h |  5 +++++
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 23 +++++++++++++++++++++++
>  3 files changed, 32 insertions(+)
> 
> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
> index 54691c8b832d..98b0eb509ed4 100644
> --- a/Documentation/arch/x86/resctrl.rst
> +++ b/Documentation/arch/x86/resctrl.rst
> @@ -369,6 +369,10 @@ When monitoring is enabled all MON groups will also contain:
>  	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.
>  
> +"mon_hw_id":
> +	Available only with debug option. The identifier used by hardware
> +	for the monitor group. On x86 this is the RMID.
> +
>  Resource allocation rules
>  -------------------------
>  
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index a07fa4329b65..b4910892b0a6 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -296,6 +296,11 @@ struct rdtgroup {
>   *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
>   *	    Files: cpus, cpus_list, tasks
>   *
> + *		--> RFTYPE_MON (Files only for MON group)
> + *
> + *			--> RFTYPE_DEBUG (Files to help resctrl debugging)
> + *			    File: mon_hw_id
> + *
>   *		--> RFTYPE_CTRL (Files only for CTRL group)
>   *		    Files: mode, schemata, size
>   *
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 55d1b90f460e..ef4b18091e5d 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -795,6 +795,22 @@ static int rdtgroup_closid_show(struct kernfs_open_file *of,
>  	return ret;
>  }
>  
> +static int rdtgroup_rmid_show(struct kernfs_open_file *of,
> +			      struct seq_file *s, void *v)
> +{
> +	struct rdtgroup *rdtgrp;
> +	int ret = 0;
> +
> +	rdtgrp = rdtgroup_kn_lock_live(of->kn);
> +	if (rdtgrp)
> +		seq_printf(s, "%u\n", rdtgrp->mon.rmid);
> +	else
> +		ret = -ENOENT;
> +	rdtgroup_kn_unlock(of->kn);
> +
> +	return ret;
> +}
> +
>  #ifdef CONFIG_PROC_CPU_RESCTRL
>  
>  /*
> @@ -1856,6 +1872,13 @@ static struct rftype res_common_files[] = {
>  		.seq_show	= rdtgroup_tasks_show,
>  		.fflags		= RFTYPE_BASE,
>  	},
> +	{
> +		.name		= "mon_hw_id",
> +		.mode		= 0444,
> +		.kf_ops		= &rdtgroup_kf_single_ops,
> +		.seq_show	= rdtgroup_rmid_show,
> +		.fflags		= RFTYPE_MON_BASE | RFTYPE_DEBUG,
> +	},
>  	{
>  		.name		= "schemata",
>  		.mode		= 0644,
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>


-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
  2023-09-25 21:20   ` Fenghua Yu
  2023-09-27 18:34   ` Reinette Chatre
@ 2023-09-29 15:59   ` Ilpo Järvinen
  2 siblings, 0 replies; 42+ messages in thread
From: Ilpo Järvinen @ 2023-09-29 15:59 UTC (permalink / raw)
  To: Babu Moger
  Cc: corbet, Reinette Chatre, tglx, mingo, bp, fenghua.yu,
	dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju, rdunlap,
	damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, LKML,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

[-- Attachment #1: Type: text/plain, Size: 2183 bytes --]

On Fri, 15 Sep 2023, Babu Moger wrote:

> There are 3 types resctrl root files.
> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups
> 
> Files only for the MON groups are not supported now. Add the
> support to create these files.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 953b082cec8a..55d1b90f460e 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -2533,6 +2533,7 @@ static void schemata_list_destroy(void)
>  static int rdt_get_tree(struct fs_context *fc)
>  {
>  	struct rdt_fs_context *ctx = rdt_fc2context(fc);
> +	unsigned long flags = RFTYPE_CTRL_BASE;
>  	struct rdt_domain *dom;
>  	struct rdt_resource *r;
>  	int ret;
> @@ -2563,7 +2564,10 @@ static int rdt_get_tree(struct fs_context *fc)
>  
>  	closid_init();
>  
> -	ret = rdtgroup_add_files(rdtgroup_default.kn, RFTYPE_CTRL_BASE);
> +	if (rdt_mon_capable)
> +		flags |= RFTYPE_MON;
> +
> +	ret = rdtgroup_add_files(rdtgroup_default.kn, flags);
>  	if (ret)
>  		goto out_schemata_free;
>  
> @@ -3253,8 +3257,8 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
>  			     enum rdt_group_type rtype, struct rdtgroup **r)
>  {
>  	struct rdtgroup *prdtgrp, *rdtgrp;
> +	unsigned long files = 0;
>  	struct kernfs_node *kn;
> -	uint files = 0;
>  	int ret;
>  
>  	prdtgrp = rdtgroup_kn_lock_live(parent_kn);
> @@ -3306,10 +3310,13 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
>  		goto out_destroy;
>  	}
>  
> -	if (rtype == RDTCTRL_GROUP)
> +	if (rtype == RDTCTRL_GROUP) {
>  		files = RFTYPE_BASE | RFTYPE_CTRL;
> -	else
> +		if (rdt_mon_capable)
> +			files |= RFTYPE_MON;
> +	} else {
>  		files = RFTYPE_BASE | RFTYPE_MON;
> +	}
>  
>  	ret = rdtgroup_add_files(kn, files);
>  	if (ret) {
> 

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

-- 
 i.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only
  2023-09-27 22:02       ` Reinette Chatre
@ 2023-10-02 17:26         ` Moger, Babu
  0 siblings, 0 replies; 42+ messages in thread
From: Moger, Babu @ 2023-10-02 17:26 UTC (permalink / raw)
  To: Reinette Chatre, corbet, tglx, mingo, bp
  Cc: fenghua.yu, dave.hansen, x86, hpa, paulmck, akpm, quic_neeraju,
	rdunlap, damien.lemoal, songmuchun, peterz, jpoimboe, pbonzini,
	chang.seok.bae, pawan.kumar.gupta, jmattson, daniel.sneddon,
	sandipan.das, tony.luck, james.morse, linux-doc, linux-kernel,
	bagasdotme, eranian, christophe.leroy, jarkko, adrian.hunter,
	quic_jiles, peternewman

Hi Reinette,
Forgot to respond to this.

On 9/27/23 17:02, Reinette Chatre wrote:
> Hi Babu,
> 
> On 9/27/2023 2:34 PM, Moger, Babu wrote:
>> Hi Reinette,
>>
>> On 9/27/2023 1:34 PM, Reinette Chatre wrote:
>>> Hi Babu,
>>>
>>> On 9/15/2023 3:42 PM, Babu Moger wrote:
>>>> There are 3 types resctrl root files.
>>> Considering patch #4, should this be "base"?
>> Sure.
>>>
>>>> 1. RFTYPE_BASE : Files common for both MON and CTRL groups
>>>> 2. RFTYPE_BASE | RFTYPE_CTRL : Files only for CTRL groups
>>> If (1) is accurate then I cannot see how (2) can be accurate.
>>
>> How about ?
>>
>> 2. RFTYPE_BASE | RFTYPE_CTRL : Files for the CTRL groups
> 
> Yes, this is accurate. Even so, this snippet does not seem
> necessary considering the changelog rewrite below.

Sure. Removed this whole snippet.

> 
>>
>>>
>>>> 3. RFTYPE_BASE | RFTYPE_MON : Files only for MON groups
>>> Same here.
>>
>> How bout?
>>
>> 3. RFTYPE_BASE | RFTYPE_MON : Files for the MON groups
> 
> Same comment.
> 
>>
>>>
>>>> Files only for the MON groups are not supported now. Add the
>>>> support to create these files.
>>> This is not accurate. Files "only for the MON groups" are
>>> actually the only monitor files that *are* supported. The
>>> problem being fixed here is that monitor files are
>>> not supported for CTRL_MON groups.
>>>
>>> I made an attempt at rewriting this commit message but I am
>>> doing it quite quickly so please do improve it:
>>>
>>>     Files unique to monitoring groups have the
>>>     RFTYPE_MON flag. When a new monitoring group is created
>>>     the resctrl files with flags RFTYPE_BASE (files common
>>>     to all resource groups) and RFTYPE_MON (files unique
>>>     to monitoring groups) are created to support interacting with
>>>     the new monitoring group.
>>>
>>>     A resource group can support both monitoring and control,
>>>     also termed a CTRL_MON resource group. CTRL_MON groups should
>>>     get both monitoring and control resctrl files but that
>>>     is not the case. Only the RFTYPE_BASE and RFTYPE_CTRL files
>>>     are created for    CTRL_MON groups. This is not a problem
>>>     because there are no monitoring specific files with the
>>>     RFTYPE_MON flag associated with resource groups.
>>>
>>>     A later patch introduces the first RFTYPE_MON file for
>>>     resource groups so fix resctrl file creation for CTRL_MON
>>>     groups to ensure that monitoring files,    those with the
>>>     RFTYPE_MON flag, are also created.
>>
>> Looks good with slight change(only last para. Rest looks good). Just removed the "fix".
>>
>> A later patch introduces the first RFTYPE_MON file for
>> resource groups. Add the changes to create the files for CTRL_MON
>> groups to ensure that monitoring files,    those with the RFTYPE_MON flag,
>> are also created.
>>
> 
> "Add the changes to" is not necessary. With this and removing the "fix" it
> can be summarized to:
> 	A later patch introduces the first monitoring specific (RFTYPE_MON)
> 	file for resource groups. Ensure that files with the RFTYPE_MON
> 	flag are created for CTRL_MON groups.
> 
> What do you think?
> 
Yes. Looks good.
-- 
Thanks
Babu Moger

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2023-10-02 17:27 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-15 22:42 [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Babu Moger
2023-09-15 22:42 ` [PATCH v10 01/10] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
2023-09-27 18:30   ` Reinette Chatre
2023-09-27 21:44     ` Moger, Babu
2023-09-27 22:20       ` Reinette Chatre
2023-09-29 15:08   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 02/10] x86/resctrl: Simplify rftype flag definitions Babu Moger
2023-09-29 15:09   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 03/10] x86/resctrl: Rename rftype flags for consistency Babu Moger
2023-09-25 21:16   ` Fenghua Yu
2023-09-27 18:31   ` Reinette Chatre
2023-09-27 21:51     ` Moger, Babu
2023-09-29 15:14   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 04/10] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
2023-09-29 15:17   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 05/10] x86/resctrl: Unwind the errors inside rdt_enable_ctx() Babu Moger
2023-09-29 15:22   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 06/10] x86/resctrl: Move default group file creation to mount Babu Moger
2023-09-29 15:50   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 07/10] x86/resctrl: Introduce "-o debug" mount option Babu Moger
2023-09-29 15:25   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 08/10] x86/resctrl: Display CLOSID for resource group Babu Moger
2023-09-25 21:19   ` Fenghua Yu
2023-09-27 18:32   ` Reinette Chatre
2023-09-29 15:40   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 09/10] x86/resctrl: Add support for the files for MON groups only Babu Moger
2023-09-25 21:20   ` Fenghua Yu
2023-09-27 18:34   ` Reinette Chatre
2023-09-27 21:34     ` Moger, Babu
2023-09-27 22:02       ` Reinette Chatre
2023-10-02 17:26         ` Moger, Babu
2023-09-29 15:59   ` Ilpo Järvinen
2023-09-15 22:42 ` [PATCH v10 10/10] x86/resctrl: Display RMID of resource group Babu Moger
2023-09-22 14:36   ` Peter Newman
2023-09-22 15:49     ` Moger, Babu
2023-09-22 17:59     ` Fenghua Yu
2023-09-25  8:10       ` Peter Newman
2023-09-25 21:21   ` Fenghua Yu
2023-09-27 18:35   ` Reinette Chatre
2023-09-29 15:56   ` Ilpo Järvinen
2023-09-28  5:28 ` [PATCH v10 00/10] x86/resctrl: Miscellaneous resctrl features Shaopeng Tan (Fujitsu)
2023-09-28 14:21   ` Moger, Babu

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.