From: Babu Moger <babu.moger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
tony.luck@intel.com, bp@alien8.de
Cc: x86@kernel.org, Dave.Martin@arm.com, james.morse@arm.com,
corbet@lwn.net, skhan@linuxfoundation.org, tglx@kernel.org,
mingo@redhat.com, dave.hansen@linux.intel.com, hpa@zytor.com,
linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
eranian@google.com, peternewman@google.com
Subject: Re: [PATCH v2 1/3] x86/resctrl: Fix ABMC counter programming for extended counter ranges
Date: Mon, 14 Sep 2026 12:17:03 -0500 [thread overview]
Message-ID: <10240e0e-6879-4378-8763-cb1a9baf1f2d@amd.com> (raw)
In-Reply-To: <afd86b47-d508-4739-ba6f-fd1c341e09a8@intel.com>
Hi Reinette,
Thanks for the quick response.
On 9/11/26 17:03, Reinette Chatre wrote:
> Hi Babu,
>
> What does the "for extended counter ranges" in subject refer to? As I understand
> "extended events" is another term for ABMC so this seems redundant?
> "counter ranges" also just seems to refer to one "part" of this patch so perhaps
> it could just be:
> x86/resctrl: Fix ABMC counter programming
Sure.
>
> On 9/4/26 11:06 AM, Babu Moger wrote:
>> Memory Bandwidth Monitoring (MBM) can report incorrect values when ABMC is
>> enabled on systems supporting more than 32 ABMC counters. As the number of
>> active monitoring groups increases beyond the range supported by the
>> existing counter ID encoding, programming an ABMC counter may inadvertently
>> affect a different counter, resulting in unexpected counter resets and
>> abnormally large MBM readings.
>>
>> The issue originates from the ABMC counter programming interface in the
>> L3_QOS_ABMC_CFG MSR. The counter ID field is currently defined as 5 bits,
>> which limits the addressable counter range to 32 counters. On systems
>> implementing more than 32 ABMC counters, counter IDs above 31 cannot be
>> encoded correctly. Consequently, programming a counter ID beyond the
>> supported range may target an unintended counter and reset bandwidth
>> statistics associated with another monitoring group.
>>
>> While updating this logic, it was also observed that the bw_src field,
>> which encodes the RMID, is currently at its 12-bit limit with support for
>> 4096 RMIDs. This field also needs to be updated for future expansion.
>>
>> Also found one more pre-existing issue. This union structure can truncate
>> data on 32-bit x86 systems when unsigned long is used.
>>
>> Fix the issues with the following changes:
>>
>> 1. Update the cntr_id field handling to support the full hardware ABMC
>> counter range and ensure that counter programming does not interfere with
>> unrelated counters.
>
> Sashiko's assessment that this statement is not accurate looks correct to me.
>
> Looks like the enumeration needs a check to limit the number of supported
> counters if the hardware supports more than what can be configured? It seems
> awkward that such hardware could exist and unclear why the spec has a mismatch in
You're right. The spec overlooked this scenario. I've notified the
concerned team.
Do you want me add this check?
- r->mon.num_mbm_cntrs = (ebx & GENMASK(15, 0)) + 1;
+ r->mon.num_mbm_cntrs = (ebx & GENMASK(12, 0)) + 1;
> the number of bits here. Even if cntr_id expands further to use the remaining
> reserved bits it would still not be sufficient to configure all the numbers
> that hardware may claim to support. Are there perhaps more field width changes
> in this upcoming spec update?
Two fields(ctrl_id and bw_src) in here are changing for this register. I
dont know about other changes yet.
>
>>
>> 2. Expand the bw_src field to 15 bits.
>
> Do the comments describing the RMID field width when reading the monitoring
> data (__cntr_id_read() and __rmid_read_phys()) need an update also?
The RMID field width is expected to change. We can revisit this when
that happens.
>
>
>> 3. Change "unsigned long" to u64 to fix truncation on 32-bit x86.
>
> Sashiko found that this change by itself is not sufficient to address issues
> with 32-bit. What do you think of dropping this part of the patch and instead
> adding your support to:
>
> https://lore.kernel.org/lkml/20260831174421.13921-22-tony.luck@intel.com/ ?
Yes. I agree and support that approach. Looks like all the maintainers
are inline with dropping 32. Will drop this change.
>
>>
>> The AMD64 Architecture Programmer's Manual [1] available at [2] will be
>> updated accordingly in a future revision to document the expanded cntr_id
>> and bw_src field definitions.
>
> This changelog uses a lot of text to describe one of these spec updates and then,
> seemingly as an afterthought, describe two more changes in a way that hints that
> these should be separate patches.
>
> Could the changelog be simplified (after dropping the 64-bit change) to something
> like:
>
> AMD's Assignable Bandwidth Monitoring Counters (ABMC) are configured via
> MSR_IA32_L3_QOS_ABMC_CFG. The architecture [1] received an update that
> increases the width of two of the MSR's fields:
>
> 1. The counter ID (represented by l3_qos_abmc_cfg.split.cntr_id) increases
> from 5 to 12 bits.
>
> 2. The bandwidth source (represented by l3_qos_abmc_cfg.split.bw_src), used
> for the RMID, increases from 12 to 15 bits.
>
> Use the new field widths. The number of supported counters and RMID are
> enumerated separately. Designate this update as a fix to original enabling
> to avoid misconfigurations resulting from truncating the counter ID and RMID
> on hardware that support a large number of these IDs.
>
> The changelog is just a suggestion based on its current form - other potential changes
> like the comments and enumeration checks are not captured by it, but should be if/when
> they are added.
Looks good. Thanks. Will update if required.
>
>>
>> [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming,
>> Publication #24593, Revision 3.41, Section 19.3.3.3 "Assignable
>> Bandwidth Monitoring (ABMC)"
>>
>> Fixes: 84ecefb76674 ("x86/resctrl: Add data structures and definitions for ABMC assignment")
>
> Is this a stable candidate?
Yes. It is. Will add it in next revision.
Thanks
Babu
next prev parent reply other threads:[~2026-09-14 17:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 18:06 [PATCH v2 0/3] x86/resctrl: Keep default MBM mode at boot and fix ABMC Babu Moger
2026-09-04 18:06 ` [PATCH v2 1/3] x86/resctrl: Fix ABMC counter programming for extended counter ranges Babu Moger
2026-09-11 22:03 ` Reinette Chatre
2026-09-14 17:17 ` Babu Moger [this message]
2026-09-14 21:30 ` Reinette Chatre
2026-09-14 21:50 ` Reinette Chatre
2026-09-15 0:18 ` Moger, Babu
2026-09-15 0:20 ` Moger, Babu
2026-09-04 18:06 ` [PATCH v2 2/3] fs/resctrl: Assign counters to existing groups when enabling mbm_event Babu Moger
2026-09-11 22:12 ` Reinette Chatre
2026-09-14 18:54 ` Babu Moger
2026-09-04 18:06 ` [PATCH v2 3/3] x86/resctrl: Keep mbm_assign_mode in default mode at boot Babu Moger
2026-09-11 22:25 ` Reinette Chatre
2026-09-14 20:45 ` Babu Moger
2026-09-14 21:31 ` Reinette Chatre
2026-09-15 1:11 ` 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=10240e0e-6879-4378-8763-cb1a9baf1f2d@amd.com \
--to=babu.moger@amd.com \
--cc=Dave.Martin@arm.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peternewman@google.com \
--cc=reinette.chatre@intel.com \
--cc=skhan@linuxfoundation.org \
--cc=tglx@kernel.org \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/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®