mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Babu Moger <babu.moger@amd.com>
To: <corbet@lwn.net>, <reinette.chatre@intel.com>,
	<tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
	<dave.hansen@linux.intel.com>
Cc: <fenghua.yu@intel.com>, <x86@kernel.org>, <hpa@zytor.com>,
	<thuth@redhat.com>, <paulmck@kernel.org>, <rostedt@goodmis.org>,
	<akpm@linux-foundation.org>, <xiongwei.song@windriver.com>,
	<pawan.kumar.gupta@linux.intel.com>,
	<daniel.sneddon@linux.intel.com>, <perry.yuan@amd.com>,
	<sandipan.das@amd.com>, <kai.huang@intel.com>,
	<xiaoyao.li@intel.com>, <seanjc@google.com>, <babu.moger@amd.com>,
	<jithu.joseph@intel.com>, <brijesh.singh@amd.com>,
	<xin3.li@intel.com>, <ebiggers@google.com>,
	<andrew.cooper3@citrix.com>, <mario.limonciello@amd.com>,
	<james.morse@arm.com>, <tan.shaopeng@fujitsu.com>,
	<tony.luck@intel.com>, <vikas.shivappa@linux.intel.com>,
	<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<peternewman@google.com>, <maciej.wieczor-retman@intel.com>,
	<eranian@google.com>, <jpoimboe@kernel.org>,
	<thomas.lendacky@amd.com>
Subject: [PATCH v9 19/26] x86/resctrl: Add the interface to unassign a MBM counter
Date: Tue, 29 Oct 2024 18:21:51 -0500	[thread overview]
Message-ID: <d27c3a15ccb11c6ba76794eba6cf7c013b0bb074.1730244116.git.babu.moger@amd.com> (raw)
In-Reply-To: <cover.1730244116.git.babu.moger@amd.com>

The mbm_cntr_assign mode provides a limited number of hardware counters
that can be assigned to an RMID, event pair to monitor bandwidth while
assigned. If all counters are in use, the kernel will show an error
message: "Out of MBM assignable counters" when a new assignment is
requested. To make space for a new assignment, users must unassign an
already assigned counter.

Introduce an interface that allows for the unassignment of counter IDs
from both the group and the domain. Additionally, ensure that the global
counter is released if it is no longer assigned to any domains.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
v9: Changes related to addition of new function resctrl_config_cntr().
    The removed rdtgroup_mbm_cntr_is_assigned() as it was introduced
    already.
    Text changes to take care comments.

v8: Renamed rdtgroup_mbm_cntr_is_assigned to mbm_cntr_assigned_to_domain
    Added return error handling in resctrl_arch_config_cntr().

v7: Merged rdtgroup_unassign_cntr and rdtgroup_free_cntr functions.
    Renamed rdtgroup_mbm_cntr_test() to rdtgroup_mbm_cntr_is_assigned().
    Reworded the commit log little bit.

v6: Removed mbm_cntr_free from this patch.
    Added counter test in all the domains and free if it is not assigned to
    any domains.

v5: Few name changes to match cntr_id.
    Changed the function names to rdtgroup_unassign_cntr
    More comments on commit log.

v4: Added domain specific unassign feature.
    Few name changes.

v3: Removed the static from the prototype of rdtgroup_unassign_abmc.
    The function is not called directly from user anymore. These
    changes are related to global assignment interface.

v2: No changes.
---
 arch/x86/kernel/cpu/resctrl/internal.h |  2 ++
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 41 ++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index cb496bd97007..66de0ce12aba 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -719,6 +719,8 @@ int resctrl_arch_config_cntr(struct rdt_resource *r, struct rdt_mon_domain *d,
 			     u32 cntr_id, bool assign);
 int rdtgroup_assign_cntr_event(struct rdt_resource *r, struct rdtgroup *rdtgrp,
 			       struct rdt_mon_domain *d, enum resctrl_event_id evtid);
+int rdtgroup_unassign_cntr_event(struct rdt_resource *r, struct rdtgroup *rdtgrp,
+				 struct rdt_mon_domain *d, enum resctrl_event_id evtid);
 void rdt_staged_configs_clear(void);
 bool closid_allocated(unsigned int closid);
 int resctrl_find_cleanest_closid(void);
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index bc3752967c44..b0cce3dfd062 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -2011,6 +2011,47 @@ int rdtgroup_assign_cntr_event(struct rdt_resource *r, struct rdtgroup *rdtgrp,
 	return ret;
 }
 
+/*
+ * Unassign a hardware counter associated with @evtid from the domain and
+ * the group. Unassign the counters from all the domains if rdt_mon_domain
+ * is NULL else unassign from the specific domain.
+ * Free the global counter once unassigned from all the domains.
+ */
+int rdtgroup_unassign_cntr_event(struct rdt_resource *r, struct rdtgroup *rdtgrp,
+				 struct rdt_mon_domain *d, enum resctrl_event_id evtid)
+{
+	int index = MBM_EVENT_ARRAY_INDEX(evtid);
+	int cntr_id = rdtgrp->mon.cntr_id[index];
+	int ret;
+
+	/* Return early if the counter is unassigned already */
+	if (cntr_id == MON_CNTR_UNSET)
+		return 0;
+
+	if (!d) {
+		list_for_each_entry(d, &r->mon_domains, hdr.list) {
+			ret = resctrl_config_cntr(r, d, evtid, rdtgrp->mon.rmid,
+						  rdtgrp->closid, cntr_id, false);
+			if (ret)
+				goto out_done_unassign;
+		}
+	} else {
+		ret = resctrl_config_cntr(r, d, evtid, rdtgrp->mon.rmid,
+					  rdtgrp->closid, cntr_id, false);
+		if (ret)
+			goto out_done_unassign;
+	}
+
+	/* Free the counter id once it is unassigned from all the domains */
+	if (!mbm_cntr_assigned_to_domain(r, cntr_id)) {
+		mbm_cntr_free(r, cntr_id);
+		rdtgroup_cntr_id_init(rdtgrp, evtid);
+	}
+
+out_done_unassign:
+	return ret;
+}
+
 /* rdtgroup information files for one cache resource. */
 static struct rftype res_common_files[] = {
 	{
-- 
2.34.1


  parent reply	other threads:[~2024-10-29 23:24 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-29 23:21 [PATCH v9 00/26] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-10-29 23:21 ` [PATCH v9 01/26] x86/resctrl: Add __init attribute for the functions called in resctrl_late_init Babu Moger
2024-11-15 23:21   ` Reinette Chatre
2024-11-18 17:44     ` Moger, Babu
2024-11-18 22:07       ` Reinette Chatre
2024-11-20 20:02         ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 02/26] x86/cpufeatures: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-10-29 23:21 ` [PATCH v9 03/26] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-10-29 23:21 ` [PATCH v9 04/26] x86/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2024-10-29 23:21 ` [PATCH v9 05/26] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-10-29 23:21 ` [PATCH v9 06/26] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Babu Moger
2024-10-29 23:21 ` [PATCH v9 07/26] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2024-10-29 23:21 ` [PATCH v9 08/26] x86/resctrl: Introduce the interface to display monitor mode Babu Moger
2024-11-16  0:00   ` Reinette Chatre
2024-11-18 19:04     ` Moger, Babu
2024-11-18 22:07       ` Reinette Chatre
2024-11-22 18:25         ` Moger, Babu
2024-11-22 21:37           ` Reinette Chatre
2024-11-23  0:02             ` Moger, Babu
2024-11-25 18:17               ` Reinette Chatre
2024-11-26 17:09                 ` Moger, Babu
2024-11-26 19:01                   ` Reinette Chatre
2024-11-26 21:57                     ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 09/26] x86/resctrl: Introduce interface to display number of monitoring counters Babu Moger
2024-11-16  0:06   ` Reinette Chatre
2024-11-18 21:31     ` Moger, Babu
2025-02-03 13:26       ` Peter Newman
2024-10-29 23:21 ` [PATCH v9 10/26] x86/resctrl: Introduce bitmap mbm_cntr_free_map to track assignable counters Babu Moger
2024-11-16  0:11   ` Reinette Chatre
2024-10-29 23:21 ` [PATCH v9 11/26] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg in struct rdt_hw_mon_domain Babu Moger
2024-10-29 23:21 ` [PATCH v9 12/26] x86/resctrl: Remove MSR reading of event configuration value Babu Moger
2024-11-16  0:24   ` Reinette Chatre
2024-11-19 16:50     ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 13/26] x86/resctrl: Introduce mbm_cntr_map to track assignable counters at domain Babu Moger
2024-10-29 23:21 ` [PATCH v9 14/26] x86/resctrl: Introduce interface to display number of free counters Babu Moger
2024-10-29 23:57   ` Luck, Tony
2024-10-30 14:15     ` Moger, Babu
2024-11-04 14:14   ` Peter Newman
2024-11-04 17:31     ` Moger, Babu
2024-11-16  0:31   ` Reinette Chatre
2024-11-19 19:20     ` Moger, Babu
2024-11-21 21:12       ` Reinette Chatre
2024-11-22 23:36         ` Moger, Babu
2024-11-25 19:00           ` Reinette Chatre
2024-11-26 23:31             ` Moger, Babu
2024-11-26 23:56               ` Reinette Chatre
2024-11-27 14:57                 ` Moger, Babu
2024-11-27 19:05                   ` Reinette Chatre
2024-11-28 11:10                     ` Peter Newman
2024-11-28 19:35                       ` Moger, Babu
2024-11-29  9:59                         ` Peter Newman
2024-11-29 17:06                           ` Moger, Babu
2024-12-02 10:43                             ` Peter Newman
2024-12-02 15:02                               ` Moger, Babu
2024-12-02 18:33                             ` Reinette Chatre
2024-12-02 19:48                               ` Moger, Babu
2024-12-02 20:15                                 ` Reinette Chatre
2024-12-02 20:42                                   ` Moger, Babu
2024-12-02 21:09                                     ` Reinette Chatre
2024-12-02 21:28                                       ` Moger, Babu
2024-12-02 21:47                                         ` Reinette Chatre
2024-12-02 22:06                                           ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 15/26] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2024-11-16  0:35   ` Reinette Chatre
2024-10-29 23:21 ` [PATCH v9 16/26] x86/resctrl: Introduce cntr_id in mongroup for assignments Babu Moger
2024-11-16  0:38   ` Reinette Chatre
2024-11-19 20:02     ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 17/26] x86/resctrl: Implement resctrl_arch_config_cntr() to assign a counter with ABMC Babu Moger
2024-10-29 23:54   ` Luck, Tony
2024-10-30 14:14     ` Moger, Babu
2024-11-16  0:44   ` Reinette Chatre
2024-11-19 20:12     ` Moger, Babu
2024-11-21 20:18       ` Reinette Chatre
2024-11-22 18:54         ` Moger, Babu
2024-11-22 21:52           ` Reinette Chatre
2024-11-23  0:15             ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 18/26] x86/resctrl: Add the interface to assign/update counter assignment Babu Moger
2024-11-16  0:57   ` Reinette Chatre
2024-11-20 18:05     ` Moger, Babu
2024-11-21 20:50       ` Reinette Chatre
2024-11-22 21:04         ` Moger, Babu
2024-11-22 22:07           ` Reinette Chatre
2024-11-23  0:09             ` Moger, Babu
2024-12-04  4:16   ` Fenghua Yu
2024-10-29 23:21 ` Babu Moger [this message]
2024-11-04 14:16   ` [PATCH v9 19/26] x86/resctrl: Add the interface to unassign a MBM counter Peter Newman
2024-11-04 18:21     ` Moger, Babu
2024-11-05 10:35       ` Peter Newman
2024-11-05 19:58         ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 20/26] x86/resctrl: Auto assign/unassign counters when mbm_cntr_assign is enabled Babu Moger
2024-11-18 17:18   ` Reinette Chatre
2024-11-22  0:22     ` Moger, Babu
2024-11-22  0:26       ` Moger, Babu
2024-11-22 18:12         ` Reinette Chatre
2024-11-22 21:34           ` Moger, Babu
2024-12-04  4:16   ` Fenghua Yu
2024-12-04 17:03     ` Reinette Chatre
2024-12-04 17:14     ` Moger, Babu
2024-12-04 17:19       ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 21/26] x86/resctrl: Report "Unassigned" for MBM events in mbm_cntr_assign mode Babu Moger
2024-11-18 17:39   ` Reinette Chatre
2024-11-20 19:14     ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 22/26] x86/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2024-10-29 23:21 ` [PATCH v9 23/26] x86/resctrl: Configure mbm_cntr_assign mode if supported Babu Moger
2024-11-18 19:23   ` Reinette Chatre
2024-11-20 18:59     ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 24/26] x86/resctrl: Update assignments on event configuration changes Babu Moger
2024-11-18 19:43   ` Reinette Chatre
2024-11-21  2:14     ` Moger, Babu
2024-11-21 20:58       ` Reinette Chatre
2024-11-22 20:12         ` Moger, Babu
2024-10-29 23:21 ` [PATCH v9 25/26] x86/resctrl: Introduce interface to list assignment states of all the groups Babu Moger
2024-10-29 23:21 ` [PATCH v9 26/26] x86/resctrl: Introduce interface to modify assignment states of " Babu Moger
2024-11-18 21:51   ` Reinette Chatre
2024-11-21 20:29     ` Moger, Babu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d27c3a15ccb11c6ba76794eba6cf7c013b0bb074.1730244116.git.babu.moger@amd.com \
    --to=babu.moger@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrew.cooper3@citrix.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=corbet@lwn.net \
    --cc=daniel.sneddon@linux.intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=ebiggers@google.com \
    --cc=eranian@google.com \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@zytor.com \
    --cc=james.morse@arm.com \
    --cc=jithu.joseph@intel.com \
    --cc=jpoimboe@kernel.org \
    --cc=kai.huang@intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=mario.limonciello@amd.com \
    --cc=mingo@redhat.com \
    --cc=paulmck@kernel.org \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=perry.yuan@amd.com \
    --cc=peternewman@google.com \
    --cc=reinette.chatre@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=sandipan.das@amd.com \
    --cc=seanjc@google.com \
    --cc=tan.shaopeng@fujitsu.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=thuth@redhat.com \
    --cc=tony.luck@intel.com \
    --cc=vikas.shivappa@linux.intel.com \
    --cc=x86@kernel.org \
    --cc=xiaoyao.li@intel.com \
    --cc=xin3.li@intel.com \
    --cc=xiongwei.song@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®