From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82C582E5B1B for ; Sun, 2 Aug 2026 16:16:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687376; cv=none; b=o6pzbfXpBYS4FgpcsxL7ZLZT6XdsT0AmOri1AQTn6fijVYoHFtTWSxWlT558qpBC5F9OnNet77N2EsqGmODQVo2wDoj+DUQNGS24nKcKYgGDq/q3gzQanSZWF3fQaAC60RV0IV+kjx/MSaIYkngFQAoAalDK4B5xi/HHtvgAA80= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687376; c=relaxed/simple; bh=jnGcCvFfrxQj8X9I7/QLFpDd6YPQrFv7TZyDebSlw0s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=H1KhHAAIvCye1vv86TPTjJYNqaizr3ecDOevtqbMiGjrrJ+dgi0Ym/V6MxASv/ZE0BAO8pETnK4zuLImYU/+T+TD2LuG51HIbGb4gBVEJ5+LSgxNw8dUAOtnJmkr4XvlwJ7ClEr1bBpf39r4Jkek1HWZYDvKMfr12OdEA0l32Vg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=DPiFal3h; arc=none smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DPiFal3h" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785687375; x=1817223375; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jnGcCvFfrxQj8X9I7/QLFpDd6YPQrFv7TZyDebSlw0s=; b=DPiFal3hZa8+1nM0GIji8vqv9LNbJSApDprbbjuSwHwonWH18gUA0RQn Og5XA563noC0meSwqCg6djbNDBIn5MctQYYzJO2CCWS8mH6y6/T8Uuyly b3GOs/0SKCDHBogD4lKqIM7a4TzBIrxmkF8MQbvVvlgWvXLB+R9xbH3z+ xzg96W6k/LKv+iJH9QvZO0+qbIa/U9Z8t9fGNBgM21S4WxmKzNi4lYxZb yUPt3jx5v8Rsy1P4yzzq+0w5e5a8ZhopzhGdsrwl1e3uGN/fXQ3ILyQ6x un4yUcg/rEZUh+/1pajXxn6nMgP8S5ePk7cuVipyl6m5FB+nXKFaUEaiO A==; X-CSE-ConnectionGUID: wBy/TCy5Td6WYZHRfWVjHA== X-CSE-MsgGUID: A5DGWNa2QcWEjhmSa8KTlg== X-IronPort-AV: E=McAfee;i="6800,10657,11863"; a="86361360" X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="86361360" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2026 09:16:14 -0700 X-CSE-ConnectionGUID: nto5czc6Q02RhTc1PLQhcw== X-CSE-MsgGUID: NymjWrk8TcSlNJD5zh8KfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="264484315" Received: from chenyu-dev.sh.intel.com ([10.239.62.107]) by orviesa003.jf.intel.com with ESMTP; 02 Aug 2026 09:16:11 -0700 From: Chen Yu To: Reinette Chatre , Tony Luck Cc: Ben Horgan , "James Morse" , Dave Martin , Babu Moger , Fenghua Yu , Borislav Petkov , Thomas Gleixner , "Dave Hansen" , Peter Newman , chen.yu@linux.dev, x86@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 17/31] x86/resctrl: Introduce region aware MBM event definitions Date: Mon, 3 Aug 2026 00:06:29 +0800 Message-Id: <04b357279789190a6bec97aefb3ffb9a18ee5735.1785680802.git.yu.c.chen@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Region-Aware RDT supports per-region MBM. Per the specification, there are a maximum of 4 memory regions currently: DDR, CXL link, UPI link, and Persistent Memory (including both local and remote regions). Based on this information, introduce 4 region-based MBM events accordingly. Signed-off-by: Chen Yu --- fs/resctrl/monitor.c | 13 +++++++++++++ fs/resctrl/rdtgroup.c | 15 ++++++++++++++- include/linux/resctrl.h | 8 ++++++-- include/linux/resctrl_types.h | 14 +++++++++++++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c index 63d48be41025..aadac544576b 100644 --- a/fs/resctrl/monitor.c +++ b/fs/resctrl/monitor.c @@ -802,6 +802,17 @@ static void mbm_update_one_event(struct rdt_resource *r, struct rdt_l3_mon_domai resctrl_arch_mon_ctx_free(rr.r, evtid, rr.arch_mon_ctx); } +static void rmbm_update(struct rdt_resource *r, struct rdt_l3_mon_domain *d, + struct rdtgroup *rdtgrp) +{ + enum resctrl_event_id evt; + + for_each_rmbm_event_id(evt) { + if (resctrl_is_mon_event_enabled(evt)) + mbm_update_one_event(r, d, rdtgrp, evt); + } +} + static void mbm_update(struct rdt_resource *r, struct rdt_l3_mon_domain *d, struct rdtgroup *rdtgrp) { @@ -814,6 +825,8 @@ static void mbm_update(struct rdt_resource *r, struct rdt_l3_mon_domain *d, if (resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID)) mbm_update_one_event(r, d, rdtgrp, QOS_L3_MBM_LOCAL_EVENT_ID); + + rmbm_update(r, d, rdtgrp); } /* diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index cb85108b4a1b..c1aac0dcd332 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -126,10 +126,23 @@ void rdt_staged_configs_clear(void) } } +static bool resctrl_is_rmbm_enabled(void) +{ + enum resctrl_event_id evt; + + for_each_rmbm_event_id(evt) { + if (resctrl_is_mon_event_enabled(evt)) + return true; + } + + return false; +} + static bool resctrl_is_mbm_enabled(void) { return (resctrl_is_mon_event_enabled(QOS_L3_MBM_TOTAL_EVENT_ID) || - resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID)); + resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID) || + resctrl_is_rmbm_enabled()); } /* diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h index e8da30a71e13..7bbda28baccf 100644 --- a/include/linux/resctrl.h +++ b/include/linux/resctrl.h @@ -519,7 +519,7 @@ bool resctrl_arch_is_evt_configurable(enum resctrl_event_id evt); static inline bool resctrl_is_mbm_event(enum resctrl_event_id eventid) { return (eventid >= QOS_L3_MBM_TOTAL_EVENT_ID && - eventid <= QOS_L3_MBM_LOCAL_EVENT_ID); + eventid <= QOS_L3_MBM_R3_EVENT_ID); } u32 resctrl_get_mon_evt_cfg(enum resctrl_event_id eventid); @@ -527,7 +527,11 @@ u32 resctrl_get_mon_evt_cfg(enum resctrl_event_id eventid); /* Iterate over all memory bandwidth events */ #define for_each_mbm_event_id(eventid) \ for (eventid = QOS_L3_MBM_TOTAL_EVENT_ID; \ - eventid <= QOS_L3_MBM_LOCAL_EVENT_ID; eventid++) + eventid <= QOS_L3_MBM_R3_EVENT_ID; eventid++) + +#define for_each_rmbm_event_id(eventid) \ + for (eventid = QOS_L3_MBM_R0_EVENT_ID; \ + eventid <= QOS_L3_MBM_R3_EVENT_ID; eventid++) /* Iterate over memory bandwidth arrays in domain structures */ #define for_each_mbm_idx(idx) \ diff --git a/include/linux/resctrl_types.h b/include/linux/resctrl_types.h index a5f56faa18d2..41dc1dff8c16 100644 --- a/include/linux/resctrl_types.h +++ b/include/linux/resctrl_types.h @@ -50,6 +50,18 @@ enum resctrl_event_id { QOS_L3_MBM_TOTAL_EVENT_ID = 0x02, QOS_L3_MBM_LOCAL_EVENT_ID = 0x03, + /* + * Region based MBM events. + * at most 4 regions for now, these + * 4 regions could be mapped to + * different memory regions, including + * local and remote regions. + */ + QOS_L3_MBM_R0_EVENT_ID, + QOS_L3_MBM_R1_EVENT_ID, + QOS_L3_MBM_R2_EVENT_ID, + QOS_L3_MBM_R3_EVENT_ID, + /* Intel Telemetry Events */ PMT_EVENT_ENERGY, PMT_EVENT_ACTIVITY, @@ -65,7 +77,7 @@ enum resctrl_event_id { QOS_NUM_EVENTS, }; -#define QOS_NUM_L3_MBM_EVENTS (QOS_L3_MBM_LOCAL_EVENT_ID - QOS_L3_MBM_TOTAL_EVENT_ID + 1) +#define QOS_NUM_L3_MBM_EVENTS (QOS_L3_MBM_R3_EVENT_ID - QOS_L3_MBM_TOTAL_EVENT_ID + 1) #define MBM_STATE_IDX(evt) ((evt) - QOS_L3_MBM_TOTAL_EVENT_ID) #endif /* __LINUX_RESCTRL_TYPES_H */ -- 2.43.0