From nobody Mon Feb 9 23:20:06 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (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 A78F8179BD; Thu, 14 Nov 2024 00:17:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731543445; cv=none; b=WCHg1aWhm3zZ07bGxgw++LsNxOdifZkruW8/nx3zX25nVHP/186lQctdoutcTSkVQWB/Y0zuThmAFFsESqVe5Zoz+6toHBV568zWRusZkzIylTZVTurIn69R8MxR94ZQBKHAf239a1Jm803e8mweW09RPYpvUkQHcMB7eEc46aI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731543445; c=relaxed/simple; bh=5Q4+X0iEeH+YMNS6vFyI/IkaOhw7AVsWZa5jlibXe4Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UAaBvd23X4C2e11ZXKJmF9klXFuB3yWirAtdAVt4YwMXHfkvqVhn3kDkn/EEShnK5IMbk9+6wgMZIGHzZeMnIDfbpP/7xxPNCTY5kxewrxHWFkALnCs1aXn1rQ4Bi7IeMmhJxA+ptgCs6A3BE6WkCGlkQOOCc1UAW9TtBtjZa+Q= 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=L7SXvKZY; arc=none smtp.client-ip=192.198.163.19 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="L7SXvKZY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1731543443; x=1763079443; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5Q4+X0iEeH+YMNS6vFyI/IkaOhw7AVsWZa5jlibXe4Y=; b=L7SXvKZYwcfLVZIhGPk0EG8yNp2F6AR1whbc2WQPJEOEf/dC8V09uxuX cOlDCODsq1dENcc0Mgts4IzT7Q7it7Lnz3Ps8lWAiIQFzhgHMinZUC057 e4WR8lJf8I/SVFz2QL4r7PaEGc4CTgafd1IfZvJZ8GtmqAsoM0ii5yT1m r3AMm2QeNU1+EQlBs5ZJgMLcWW2Nz56Mn5vLF3E3j2IIyyWQN7/Lso6cr 3PmTAnLIqoVZaNY5bz31jZ+bra2now4SS9uTN0h2Xrjef3vEate9NczGj wUc3fAMny10z9bmlSSrY/EQjHVx8/lMX1fWPVlkKpPhRkMX0b7h0SM4cF g==; X-CSE-ConnectionGUID: kcuhbRa7Sq6ZuxnXvpvZ3A== X-CSE-MsgGUID: Nb6VqmVHQ/6iNKF8tyA0EQ== X-IronPort-AV: E=McAfee;i="6700,10204,11255"; a="30869519" X-IronPort-AV: E=Sophos;i="6.12,152,1728975600"; d="scan'208";a="30869519" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Nov 2024 16:17:18 -0800 X-CSE-ConnectionGUID: OBJ9MdICQK2y9UU0cxo7vA== X-CSE-MsgGUID: g0naypt6TpWIMR76BCOIYg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,152,1728975600"; d="scan'208";a="92081166" Received: from agluck-desk3.sc.intel.com ([172.25.222.70]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Nov 2024 16:17:19 -0800 From: Tony Luck To: Fenghua Yu , Reinette Chatre , Peter Newman , Jonathan Corbet , x86@kernel.org Cc: James Morse , Jamie Iles , Babu Moger , Randy Dunlap , "Shaopeng Tan (Fujitsu)" , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, patches@lists.linux.dev, Tony Luck Subject: [PATCH v9 6/9] x86/resctrl: Add "mba_MBps_event" file to ctrl_mon directories Date: Wed, 13 Nov 2024 16:17:08 -0800 Message-ID: <20241114001712.80315-7-tony.luck@intel.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241114001712.80315-1-tony.luck@intel.com> References: <20241114001712.80315-1-tony.luck@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The "mba_MBps" mount option provides an alternate method to control memory bandwidth. Instead of specifying allowable bandwidth as a percentage of maximum possible, the user provides a MiB/s limit value. Historically the limit was enforced by a feedback loop from the measure local bandwidth to adjust the memory bandwidth allocation controls. In preparation to allow the user to pick the memory bandwidth monitoring event used as input to the feedback loop, provide a file in each ctrl_mon group directory that shows the event currently in use. Suggested-by: Reinette Chatre Signed-off-by: Tony Luck --- arch/x86/kernel/cpu/resctrl/internal.h | 2 ++ arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 30 +++++++++++++++++++++++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 10 ++++++++ 3 files changed, 42 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 485800055a7d..ce10a883ecf8 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -609,6 +609,8 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file= *of, char *buf, size_t nbytes, loff_t off); int rdtgroup_schemata_show(struct kernfs_open_file *of, struct seq_file *s, void *v); +int rdtgroup_mba_mbps_event_show(struct kernfs_open_file *of, + struct seq_file *s, void *v); bool rdtgroup_cbm_overlaps(struct resctrl_schema *s, struct rdt_ctrl_domai= n *d, unsigned long cbm, int closid, bool exclusive); unsigned int rdtgroup_cbm_to_size(struct rdt_resource *r, struct rdt_ctrl_= domain *d, diff --git a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c b/arch/x86/kernel/cp= u/resctrl/ctrlmondata.c index 200d89a64027..5fa37b4ecc7a 100644 --- a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c +++ b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c @@ -518,6 +518,36 @@ static int smp_mon_event_count(void *arg) return 0; } =20 +int rdtgroup_mba_mbps_event_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdtgroup *rdtgrp; + int ret =3D 0; + + rdtgrp =3D rdtgroup_kn_lock_live(of->kn); + + if (rdtgrp) { + switch (rdtgrp->mba_mbps_event) { + case QOS_L3_MBM_LOCAL_EVENT_ID: + seq_puts(s, "mbm_local_bytes\n"); + break; + case QOS_L3_MBM_TOTAL_EVENT_ID: + seq_puts(s, "mbm_total_bytes\n"); + break; + default: + pr_warn_once("Bad event %d\n", rdtgrp->mba_mbps_event); + ret =3D -EINVAL; + break; + } + } else { + ret =3D -ENOENT; + } + + rdtgroup_kn_unlock(of->kn); + + return ret; +} + void mon_event_read(struct rmid_read *rr, struct rdt_resource *r, struct rdt_mon_domain *d, struct rdtgroup *rdtgrp, cpumask_t *cpumask, int evtid, int first) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 3a89516e6f56..416e1acfad9f 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -1943,6 +1943,12 @@ static struct rftype res_common_files[] =3D { .seq_show =3D rdtgroup_schemata_show, .fflags =3D RFTYPE_CTRL_BASE, }, + { + .name =3D "mba_MBps_event", + .mode =3D 0444, + .kf_ops =3D &rdtgroup_kf_single_ops, + .seq_show =3D rdtgroup_mba_mbps_event_show, + }, { .name =3D "mode", .mode =3D 0644, @@ -2348,6 +2354,7 @@ static int set_mba_sc(bool mba_sc) struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl; u32 num_closid =3D resctrl_arch_get_num_closid(r); struct rdt_ctrl_domain *d; + unsigned long fflags; int i; =20 if (!supports_mba_mbps() || mba_sc =3D=3D is_mba_sc(r)) @@ -2360,6 +2367,9 @@ static int set_mba_sc(bool mba_sc) d->mbps_val[i] =3D MBA_MAX_MBPS; } =20 + fflags =3D mba_sc ? RFTYPE_CTRL_BASE | RFTYPE_MON_BASE : 0; + resctrl_file_fflags_init("mba_MBps_event", fflags); + return 0; } =20 --=20 2.47.0