From nobody Sat Jun 13 11:25:36 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E84BB39A7E7 for ; Thu, 7 May 2026 15:28:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167707; cv=none; b=a/2PkajcFqMwqkajs3RZw5mZKn08a/Kkn/HCSg/b9TR45ILqtJCL2mweV9NIToYxDJAf02EoreaB7QZKh4gBQfjltQLvn1tEZIGtHL0xqPE4Y4MpFfnt8g/0wqgtHb3FjuFsye46JjAegpSO6/ruZI5paSet9vbpZJZrzaybHCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167707; c=relaxed/simple; bh=HQEptrQEq7GoVSxzl9bEtHOOqBHtHwIHojkbOoByIa8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ho7ph8Yh7NRsYTOWVMKejej6VMWsuyMTeKIEmtlyH8WsgKjVXuGcP8ldhi6mkhneqHKDnLbXtaEbKILTkThizgJvD/q8HBF6hfGqSH/VxyvN9S7V8eIeCeSvMVcf1xoDWLoMlj0R2DoyCU4gKty5SWVV+k0ny3NWVlL6zer42fE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Q9oO6Tx8; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Q9oO6Tx8" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 257C9315F; Thu, 7 May 2026 08:28:20 -0700 (PDT) Received: from e134344.cambridge.arm.com (e134344.arm.com [10.1.196.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 56EFC3FAF5; Thu, 7 May 2026 08:28:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1778167705; bh=HQEptrQEq7GoVSxzl9bEtHOOqBHtHwIHojkbOoByIa8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q9oO6Tx8y6pjVmAQKVUBzZS84CHwWtN5tANpvKlFADlyO3Kt7+OaLN9mTKmCSSDEe CFLGwcrasPQOgnRIKd9ZocbCekDBse8OogIf4MjJCYC+DDxpI8qIbkLTHGflo8cxse ggmIS0EbNOFzQ5SkHFWyXFMgMhVeJwo1hlhGNKsY= From: Ben Horgan To: linux-kernel@vger.kernel.org, ben.horgan@arm.com Cc: reinette.chatre@intel.com, fenghuay@nvidia.com, dave.martin@arm.com, james.morse@arm.com, andre.przywara@arm.com Subject: [PATCH 1/3] arm_mpam: Fix monitor instance selection when checking for hardware NRDY Date: Thu, 7 May 2026 16:28:12 +0100 Message-ID: <20260507152814.4056413-2-ben.horgan@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507152814.4056413-1-ben.horgan@arm.com> References: <20260507152814.4056413-1-ben.horgan@arm.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" In _mpam_ris_hw_probe_hw_nrdy() a new register value to select the first monitor and relevant RIS is prepared in mon_sel. However, it is written to the monitor value register, e.g. MSMON_CSU, rather than MSMON_CFG_MON_SEL. As MSMON_CFG_MON_SEL is a 32 bit register update the type of mon_sel to u32. Write mon_sel to the intended register, MSMON_CFG_MON_SEL. Fixes: 8c90dc68a5de ("arm_mpam: Probe the hardware features resctrl support= s") Signed-off-by: Ben Horgan Reviewed-by: James Morse --- drivers/resctrl/mpam_devices.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c index 41b14344b16f..817cb10a8e79 100644 --- a/drivers/resctrl/mpam_devices.c +++ b/drivers/resctrl/mpam_devices.c @@ -731,7 +731,7 @@ static void mpam_enable_quirks(struct mpam_msc *msc) static bool _mpam_ris_hw_probe_hw_nrdy(struct mpam_msc_ris *ris, u32 mon_r= eg) { u32 now; - u64 mon_sel; + u32 mon_sel; bool can_set, can_clear; struct mpam_msc *msc =3D ris->vmsc->msc; =20 @@ -740,7 +740,7 @@ static bool _mpam_ris_hw_probe_hw_nrdy(struct mpam_msc_= ris *ris, u32 mon_reg) =20 mon_sel =3D FIELD_PREP(MSMON_CFG_MON_SEL_MON_SEL, 0) | FIELD_PREP(MSMON_CFG_MON_SEL_RIS, ris->ris_idx); - _mpam_write_monsel_reg(msc, mon_reg, mon_sel); + mpam_write_monsel_reg(msc, CFG_MON_SEL, mon_sel); =20 _mpam_write_monsel_reg(msc, mon_reg, MSMON___NRDY); now =3D _mpam_read_monsel_reg(msc, mon_reg); --=20 2.43.0 From nobody Sat Jun 13 11:25:36 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9A7C344A725 for ; Thu, 7 May 2026 15:28:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167709; cv=none; b=SiwaEfsmB5T3v0GeK7SRuWoHGufsamlOdB1x5gWp871bJ03OX4YzN6e158tn5TL82QaKaO2pH0JX75PGO6bO7Gk2rn3Rern4qnveEaIgyX6X06Jyka2fReXnk2e/w0iLDruDQfdqs2WkEnc+QRkNejshWGRKQ2cFAWH5yk+o9E4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167709; c=relaxed/simple; bh=U68BjckNrD/4i200TVCXbnXyD0/p/Z4Svn/eI3tVsnw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=feuquA3G+DpbqPmrhj0hCb7I/OBnP3MU2kEzwONarwhBUIkoVgzoo8Y0FX1ZCEHetLsAT3rDB+yOqlTT88jZEmCMBt3ouzya8IhcD/gCaBuNa925UfIjIRRt4hNfPCh9g3jpczLANm1DGpXCuuMghQWrfJL6qMzOOKzb1YvJlSs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=bu1fX4mT; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="bu1fX4mT" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BE5C5354C; Thu, 7 May 2026 08:28:21 -0700 (PDT) Received: from e134344.cambridge.arm.com (e134344.arm.com [10.1.196.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C06CE3F836; Thu, 7 May 2026 08:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1778167706; bh=U68BjckNrD/4i200TVCXbnXyD0/p/Z4Svn/eI3tVsnw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bu1fX4mTXXLArKsq4WCtz/wDKEMGyppH9LaTv/ZaOjaGopHNIoMJlkCBH7QNJ8IL1 f2l6fXO3Vl9qUD8E6cIM/QbyQ9HcEu7G82xisfbv5N1ykWydoS9I0iwdammTOaXrVJ UcQQTaO9/3sbaF9HpwJlHFbJDgI/PaYElD0GFv9Y= From: Ben Horgan To: linux-kernel@vger.kernel.org, ben.horgan@arm.com Cc: reinette.chatre@intel.com, fenghuay@nvidia.com, dave.martin@arm.com, james.morse@arm.com, andre.przywara@arm.com Subject: [PATCH 2/3] arm_mpam: Pretend that NRDY is always hardware managed Date: Thu, 7 May 2026 16:28:13 +0100 Message-ID: <20260507152814.4056413-3-ben.horgan@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507152814.4056413-1-ben.horgan@arm.com> References: <20260507152814.4056413-1-ben.horgan@arm.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" Rule ZTXDS of the MPAM specification, IHI009 version B.b, states: "If a monitor does not support automatic updates of NRDY, software can use that bit for any purpose." As software is not reliably informed whether or not the monitor supports automatic updates of NRDY always assume that hardware may manage NRDY but don't rely on it. When NRDY is truly untouched by hardware then, as it is written to 0 on configuration, it will always read 0. At probe it's checked if MSMON_CSU.NRDY and MSMON_MBWU.NRDY are hardware managed but not MSMON_MBWU_L.NDRY. Specialize the checking for hardware managed NRDY to CSU counters as this is the only case where hardware management makes sense. Continue to inform the user if MSMON_CSU.NRDY appears to be hardware managed but the firmware doesn't provide the associated time limit for the automatic clearing of NRDY. Remove the NRDY feature flags as they are now unused. Fixes: 8c90dc68a5de ("arm_mpam: Probe the hardware features resctrl support= s") Signed-off-by: Ben Horgan Reviewed-by: James Morse --- drivers/resctrl/mpam_devices.c | 53 +++++++++++---------------------- drivers/resctrl/mpam_internal.h | 2 -- 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c index 817cb10a8e79..58e0c8970e8c 100644 --- a/drivers/resctrl/mpam_devices.c +++ b/drivers/resctrl/mpam_devices.c @@ -728,7 +728,7 @@ static void mpam_enable_quirks(struct mpam_msc *msc) * Try and see what values stick in this bit. If we can write either value, * its probably not implemented by hardware. */ -static bool _mpam_ris_hw_probe_hw_nrdy(struct mpam_msc_ris *ris, u32 mon_r= eg) +static bool mpam_ris_hw_probe_csu_nrdy(struct mpam_msc_ris *ris) { u32 now; u32 mon_sel; @@ -742,21 +742,18 @@ static bool _mpam_ris_hw_probe_hw_nrdy(struct mpam_ms= c_ris *ris, u32 mon_reg) FIELD_PREP(MSMON_CFG_MON_SEL_RIS, ris->ris_idx); mpam_write_monsel_reg(msc, CFG_MON_SEL, mon_sel); =20 - _mpam_write_monsel_reg(msc, mon_reg, MSMON___NRDY); - now =3D _mpam_read_monsel_reg(msc, mon_reg); + _mpam_write_monsel_reg(msc, MSMON_CSU, MSMON___NRDY); + now =3D _mpam_read_monsel_reg(msc, MSMON_CSU); can_set =3D now & MSMON___NRDY; =20 - _mpam_write_monsel_reg(msc, mon_reg, 0); - now =3D _mpam_read_monsel_reg(msc, mon_reg); + _mpam_write_monsel_reg(msc, MSMON_CSU, 0); + now =3D _mpam_read_monsel_reg(msc, MSMON_CSU); can_clear =3D !(now & MSMON___NRDY); mpam_mon_sel_unlock(msc); =20 return (!can_set || !can_clear); } =20 -#define mpam_ris_hw_probe_hw_nrdy(_ris, _mon_reg) \ - _mpam_ris_hw_probe_hw_nrdy(_ris, MSMON_##_mon_reg) - static void mpam_ris_hw_probe(struct mpam_msc_ris *ris) { int err; @@ -873,20 +870,18 @@ static void mpam_ris_hw_probe(struct mpam_msc_ris *ri= s) mpam_set_feature(mpam_feat_msmon_csu_xcl, props); =20 /* Is NRDY hardware managed? */ - hw_managed =3D mpam_ris_hw_probe_hw_nrdy(ris, CSU); - if (hw_managed) - mpam_set_feature(mpam_feat_msmon_csu_hw_nrdy, props); - } + hw_managed =3D mpam_ris_hw_probe_csu_nrdy(ris); =20 - /* - * Accept the missing firmware property if NRDY appears - * un-implemented. - */ - if (err && mpam_has_feature(mpam_feat_msmon_csu_hw_nrdy, props)) - dev_err_once(dev, "Counters are not usable because not-ready timeout w= as not provided by firmware."); + /* + * Accept the missing firmware property if NRDY appears + * un-implemented. + */ + if (err && hw_managed) + dev_err_once(dev, "Counters are not usable because not-ready timeout = was not provided by firmware."); + } } if (FIELD_GET(MPAMF_MSMON_IDR_MSMON_MBWU, msmon_features)) { - bool has_long, hw_managed; + bool has_long; u32 mbwumon_idr =3D mpam_read_partsel_reg(msc, MBWUMON_IDR); =20 props->num_mbwu_mon =3D FIELD_GET(MPAMF_MBWUMON_IDR_NUM_MON, mbwumon_id= r); @@ -905,16 +900,6 @@ static void mpam_ris_hw_probe(struct mpam_msc_ris *ris) } else { mpam_set_feature(mpam_feat_msmon_mbwu_31counter, props); } - - /* Is NRDY hardware managed? */ - hw_managed =3D mpam_ris_hw_probe_hw_nrdy(ris, MBWU); - if (hw_managed) - mpam_set_feature(mpam_feat_msmon_mbwu_hw_nrdy, props); - - /* - * Don't warn about any missing firmware property for - * MBWU NRDY - it doesn't make any sense! - */ } } } @@ -1197,7 +1182,6 @@ static void __ris_msmon_read(void *arg) bool reset_on_next_read =3D false; struct mpam_msc_ris *ris =3D m->ris; struct msmon_mbwu_state *mbwu_state; - struct mpam_props *rprops =3D &ris->props; struct mpam_msc *msc =3D m->ris->vmsc->msc; u32 mon_sel, ctl_val, flt_val, cur_ctl, cur_flt; =20 @@ -1253,8 +1237,7 @@ static void __ris_msmon_read(void *arg) switch (m->type) { case mpam_feat_msmon_csu: now =3D mpam_read_monsel_reg(msc, CSU); - if (mpam_has_feature(mpam_feat_msmon_csu_hw_nrdy, rprops)) - nrdy =3D now & MSMON___NRDY; + nrdy =3D now & MSMON___NRDY; now =3D FIELD_GET(MSMON___VALUE, now); =20 if (mpam_has_quirk(IGNORE_CSU_NRDY, msc) && m->waited_timeout) @@ -1266,8 +1249,7 @@ static void __ris_msmon_read(void *arg) case mpam_feat_msmon_mbwu_63counter: if (m->type !=3D mpam_feat_msmon_mbwu_31counter) { now =3D mpam_msc_read_mbwu_l(msc); - if (mpam_has_feature(mpam_feat_msmon_mbwu_hw_nrdy, rprops)) - nrdy =3D now & MSMON___L_NRDY; + nrdy =3D now & MSMON___L_NRDY; =20 if (m->type =3D=3D mpam_feat_msmon_mbwu_63counter) now =3D FIELD_GET(MSMON___LWD_VALUE, now); @@ -1275,8 +1257,7 @@ static void __ris_msmon_read(void *arg) now =3D FIELD_GET(MSMON___L_VALUE, now); } else { now =3D mpam_read_monsel_reg(msc, MBWU); - if (mpam_has_feature(mpam_feat_msmon_mbwu_hw_nrdy, rprops)) - nrdy =3D now & MSMON___NRDY; + nrdy =3D now & MSMON___NRDY; now =3D FIELD_GET(MSMON___VALUE, now); } =20 diff --git a/drivers/resctrl/mpam_internal.h b/drivers/resctrl/mpam_interna= l.h index 1914aefdcba9..04d1a59f02af 100644 --- a/drivers/resctrl/mpam_internal.h +++ b/drivers/resctrl/mpam_internal.h @@ -181,14 +181,12 @@ enum mpam_device_features { mpam_feat_msmon_csu, mpam_feat_msmon_csu_capture, mpam_feat_msmon_csu_xcl, - mpam_feat_msmon_csu_hw_nrdy, mpam_feat_msmon_mbwu, mpam_feat_msmon_mbwu_31counter, mpam_feat_msmon_mbwu_44counter, mpam_feat_msmon_mbwu_63counter, mpam_feat_msmon_mbwu_capture, mpam_feat_msmon_mbwu_rwbw, - mpam_feat_msmon_mbwu_hw_nrdy, mpam_feat_partid_nrw, MPAM_FEATURE_LAST }; --=20 2.43.0 From nobody Sat Jun 13 11:25:36 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AD78244CF35 for ; Thu, 7 May 2026 15:28:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167710; cv=none; b=QoUpViVAlijG8gaDpZCx89NyXXhdNhTp4p8VReOC4+Gi6V+KOBspPOGlzXh/tLFVb5R1mhZu3ecFhLivNvT1QlMuM3VpcAi3tr2v4Qi9QTYAzTyALMMNQWTPaku7jO8K1/HK7RmVWAyRj+ZebklZuih3oJnJ0o/prUrutNC9TmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167710; c=relaxed/simple; bh=kKjeNsDB1rlN+XNb0UCcjKWprWKx7yWXld0cXVLd7tk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tFFYAd5XxCWko61KMQMQsJlo8/hxQ145HQu+h+23NH8umgHQ5yPXFyS88Jm61bIY26R6aiut6jB+Wy6DP2TL903rF/GEOnDNmjax/J5BcTkZcwKvYKHKqFI1fV8RpswW7EUS0hdLrtuSPyMsFwtdOLEw8eRrtnfuUA0GRwWK1mA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=NCbOyZF2; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="NCbOyZF2" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0299C236D; Thu, 7 May 2026 08:28:23 -0700 (PDT) Received: from e134344.cambridge.arm.com (e134344.arm.com [10.1.196.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 34B683FAF5; Thu, 7 May 2026 08:28:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1778167708; bh=kKjeNsDB1rlN+XNb0UCcjKWprWKx7yWXld0cXVLd7tk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NCbOyZF2tUA4GKYsz11LbrDbba4QhZhqTCgaJHD1g5smR66rgnKIk+BhKbB6Ruucs RfYrD6T0JdjvhIDrD+vL+U90ojy5LNrPiW62Squn6qEBw7/jjVZVrX3At3ECxmH+B2 FWppWnBRQMyQXcRyPNa1WinzrN1Q7TIT5bCsvvvM= From: Ben Horgan To: linux-kernel@vger.kernel.org, ben.horgan@arm.com Cc: reinette.chatre@intel.com, fenghuay@nvidia.com, dave.martin@arm.com, james.morse@arm.com, andre.przywara@arm.com Subject: [PATCH 3/3] arm_mpam: Improve check for whether or not NRDY is hardware managed Date: Thu, 7 May 2026 16:28:14 +0100 Message-ID: <20260507152814.4056413-4-ben.horgan@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260507152814.4056413-1-ben.horgan@arm.com> References: <20260507152814.4056413-1-ben.horgan@arm.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" mpam_ris_hw_probe_csu_nrdy() sets and clears MSMON_CSU.NRDY and checks whether it's configuration sticks. However, hardware isn't given a chance to disagree. Based on rule LRTGP, in MPAM specification IHI0099 version B.b, the hardware will set NRDY if it needs time to establish a count after a configuration change. Enable the monitor so that NRDY becomes relevant and change the configuration after clearing NRDY to try and coax the hardware into setting it. Fixes: 8c90dc68a5de ("arm_mpam: Probe the hardware features resctrl support= s") Signed-off-by: Ben Horgan Reviewed-by: James Morse --- drivers/resctrl/mpam_devices.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c index 58e0c8970e8c..e145828f3f73 100644 --- a/drivers/resctrl/mpam_devices.c +++ b/drivers/resctrl/mpam_devices.c @@ -730,8 +730,7 @@ static void mpam_enable_quirks(struct mpam_msc *msc) */ static bool mpam_ris_hw_probe_csu_nrdy(struct mpam_msc_ris *ris) { - u32 now; - u32 mon_sel; + u32 now, mon_sel, ctl_val; bool can_set, can_clear; struct mpam_msc *msc =3D ris->vmsc->msc; =20 @@ -742,11 +741,21 @@ static bool mpam_ris_hw_probe_csu_nrdy(struct mpam_ms= c_ris *ris) FIELD_PREP(MSMON_CFG_MON_SEL_RIS, ris->ris_idx); mpam_write_monsel_reg(msc, CFG_MON_SEL, mon_sel); =20 + /* Hardware might ignore nrdy if it's not enabled */ + ctl_val =3D MSMON_CFG_CSU_CTL_TYPE_CSU; + ctl_val |=3D MSMON_CFG_x_CTL_MATCH_PARTID; + ctl_val |=3D MSMON_CFG_x_CTL_MATCH_PMG; + ctl_val |=3D MSMON_CFG_x_CTL_EN; + mpam_write_monsel_reg(msc, CFG_CSU_FLT, 0); + mpam_write_monsel_reg(msc, CFG_CSU_CTL, ctl_val); + _mpam_write_monsel_reg(msc, MSMON_CSU, MSMON___NRDY); now =3D _mpam_read_monsel_reg(msc, MSMON_CSU); can_set =3D now & MSMON___NRDY; =20 _mpam_write_monsel_reg(msc, MSMON_CSU, 0); + /* Configuration change to try and coax hardware into setting nrdy */ + mpam_write_monsel_reg(msc, CFG_CSU_FLT, 0x1); now =3D _mpam_read_monsel_reg(msc, MSMON_CSU); can_clear =3D !(now & MSMON___NRDY); mpam_mon_sel_unlock(msc); --=20 2.43.0