From: Ben Horgan <ben.horgan@arm.com>
To: Andre Przywara <andre.przywara@arm.com>,
Ping Li <leeonion.muyu@gmail.com>,
james.morse@arm.com
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, reinette.chatre@intel.com,
fenghuay@nvidia.com
Subject: Re: [PATCH] arm_mpam: Release the mon_sel lock on mpam_save_mbwu_state() errors
Date: Wed, 21 Oct 2026 11:45:03 +0100 [thread overview]
Message-ID: <d1efef72-5cd5-41f6-8389-53b62490e4b9@arm.com> (raw)
In-Reply-To: <d6f3b250-bfc0-4d74-b729-3791bc145e1c@arm.com>
Hi Andre,
On 21/10/2026 10:26, Andre Przywara wrote:
> Hi,
>
> On 10/20/26 13:48, Ping Li wrote:
>> mpam_save_mbwu_state() takes the mon_sel lock at the top of each loop
>> iteration, but the four error paths that return after failed
>> MPAMF_MON_SEL register accesses do so without releasing it.
>>
>> Take the lock with the conditional mon_sel_lock guard class instead,
>> so all exit paths release it.
>
> many thanks for spotting this!
>
> Similar lines were in the last patch version sent out, but as Ben mentioned, this somehow conflicted
> with the other MPAM changes, so it got accidentally removed.
> The original version always returned -EIO, but we now always use this error code inside mpam_fb.c
For consistency we should always return -EIO on the locking failure as that's what's done in all the
non-AQUIRE() cases. However, I do think this fix is ok as it is and that at some point down the line
we can update the conditional guard to enforce this.
DEFINE_CLASS(mon_sel_lock, struct mpam_msc *,
if (_T && !IS_ERR(_T)) mpam_mon_sel_unlock(_T),
mpam_mon_sel_lock(msc) ? msc : ERR_PTR(-EIO), struct mpam_msc *msc);
DEFINE_CLASS_IS_COND_GUARD(mon_sel_lock);
Thanks,
Ben
> already, so there is no difference, and this version here is more future-proof, should we lift the
> restricted range of errors handled in the future. So:
>
> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>
> Thanks!
> Andre
>>
>> Fixes: a3a94c13c442 ("arm_mpam: propagate MSC access errors for state saving function")
>> Signed-off-by: Ping Li <leeonion.muyu@gmail.com>
>> ---
>> drivers/resctrl/mpam_devices.c | 12 +++++-------
>> 1 file changed, 5 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
>> index 48adc49b833c..c067b6d57d71 100644
>> --- a/drivers/resctrl/mpam_devices.c
>> +++ b/drivers/resctrl/mpam_devices.c
>> @@ -2037,8 +2037,10 @@ static int mpam_save_mbwu_state(void *arg)
>> struct mpam_class *class = ris->vmsc->comp->class;
>> for (i = 0; i < ris->props.num_mbwu_mon; i++) {
>> - if (WARN_ON_ONCE(!mpam_mon_sel_lock(msc)))
>> - return -EIO;
>> + ACQUIRE(mon_sel_lock, guard)(msc);
>> + ret = ACQUIRE_ERR(mon_sel_lock, &guard);
>> + if (ret)
>> + return ret;
>> mbwu_state = &ris->mbwu_state[i];
>> cfg = &mbwu_state->cfg;
>> @@ -2061,10 +2063,8 @@ static int mpam_save_mbwu_state(void *arg)
>> cfg->partid = FIELD_GET(MSMON_CFG_x_FLT_PARTID, cur_flt);
>> mbwu_state->enabled = FIELD_GET(MSMON_CFG_x_CTL_EN, cur_ctl);
>> - if (!mbwu_state->enabled) {
>> - mpam_mon_sel_unlock(msc);
>> + if (!mbwu_state->enabled)
>> continue;
>> - }
>> val = 0;
>> mbwu_arg = (struct mon_read) {
>> @@ -2088,8 +2088,6 @@ static int mpam_save_mbwu_state(void *arg)
>> ret = mpam_write_monsel_reg(msc, CFG_MBWU_CTL, 0);
>> if (ret)
>> return ret;
>> -
>> - mpam_mon_sel_unlock(msc);
>> }
>> return 0;
>>
>> base-commit: 8ea457f746d915d55f78b43d33b1cd618f3d93ad
>
next prev parent reply other threads:[~2026-10-21 10:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20261020114807.3915705-1-leeonion.muyu@gmail.com_quarantine>
2026-10-21 9:26 ` Andre Przywara
2026-10-21 10:45 ` Ben Horgan [this message]
2026-10-20 11:48 Ping Li
2026-10-21 9:01 ` Ben Horgan
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=d1efef72-5cd5-41f6-8389-53b62490e4b9@arm.com \
--to=ben.horgan@arm.com \
--cc=andre.przywara@arm.com \
--cc=fenghuay@nvidia.com \
--cc=james.morse@arm.com \
--cc=leeonion.muyu@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=reinette.chatre@intel.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®