All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luck, Tony" <tony.luck@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghuay@nvidia.com>,
	Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
	Peter Newman <peternewman@google.com>,
	James Morse <james.morse@arm.com>,
	Babu Moger <babu.moger@amd.com>,
	"Drew Fustini" <dfustini@baylibre.com>,
	Dave Martin <Dave.Martin@arm.com>, Chen Yu <yu.c.chen@intel.com>,
	<x86@kernel.org>, <linux-kernel@vger.kernel.org>,
	<patches@lists.linux.dev>
Subject: Re: [RFC PATCH 1/4] x86/resctrl: Check if monitoring features are enabled
Date: Fri, 21 Aug 2026 12:44:08 -0700	[thread overview]
Message-ID: <aoiqiAEFJfCxhLVk@agluck-desk3> (raw)
In-Reply-To: <9787f9de-c72d-4c0d-b9a9-867b0f4377f5@intel.com>

On Fri, Aug 21, 2026 at 11:18:51AM -0700, Reinette Chatre wrote:
> Hi Tony,
> 
> Thank you for doing this.
> 
> On 8/19/26 9:13 AM, Tony Luck wrote:
> > Both Intel and AMD manuals say that software must first check
> > CPUID(0x7,0x0).EBX[12] to see if any monitoring features are enabled
> > before checking for specific features enabled in subleaves.
> > 
> > Add the check for X86_FEATURE_CQM.
> > 
> > Fixes: cbc82b172638 ("x86: Add support for Intel Cache QoS Monitoring (CQM) detection")
> > Signed-off-by: Tony Luck <tony.luck@intel.com>
> > ---
> >  arch/x86/kernel/cpu/resctrl/core.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
> > index 55214d6fdc49..2677b8a6c15b 100644
> > --- a/arch/x86/kernel/cpu/resctrl/core.c
> > +++ b/arch/x86/kernel/cpu/resctrl/core.c
> > @@ -968,6 +968,9 @@ static __init bool get_rdt_mon_resources(void)
> >  	struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl;
> >  	bool ret = false;
> >  
> > +	if (!cpu_feature_enabled(X86_FEATURE_CQM))
> > +		return false;
> 
> Is this missing a check of X86_FEATURE_CQM_LLC also?
> 
> As I understand resctrl learns from X86_FEATURE_CQM whether the system supports
> resource monitoring in general. Contrary to what the feature name suggests, there is
> another step needed to determine which resource(s) support monitoring via
> CPUID(0xF,0x0).EDX where bit 1 indicates LLC monitoring that needs to be set before
> the LLC resource-specific monitoring properties can/should be determined.

Yes. Missing that check. I agree that the feature define names are bad.

To avoid continued confusion I should rename the #defines to match the
bit names in the Intel SDM (but leaving the /proc/cpuinfo visible
strings at "cqm" and "cqm_llc" as those are user ABI now).

X86_FEATURE_CQM -> X86_FEATURE_RDT_M
X86_FEATURE_CQM_LLC -> X86_FEATURE_L3_MON

> 
> Apart from the checks here I see that cpuid_deps[] accurately reflects the relationship
> between X86_FEATURE_CQM_LLC and the different LLC monitoring features checked for below.
> I do not see cpuid_deps[] capturing the relationship between X86_FEATURE_CQM and
> X86_FEATURE_CQM_LLC though. Could adding it complete the handling of relationships between
> these leaves?

Yes.
> 
> Similarly I think cpuid_deps[] may be missing X86_FEATURE_ABMC's dependency on 
> X86_FEATURE_CQM_LLC. 

Maybe no? X86_FEATURE_ABMC isn't enumerated in CPUID(0xF,*). It comes
from the AMD CPUID(0x80000020,0)EBX{5}

Babu: The AMD architecture programmer's manual just says:

  "Support for ABMC is identified by CPUID Fn8000_0020_EBX_x0[ABMC] (bit 5)
   being set. If ABMC is supported, the feature’s attributes and capabilities
   are enumerated by CPUID Fn8000_0020_x5 as detailed in Appendix E of APM volume 3"

It isn't explicitly stated whether this depends on CPUID Fn0000_000F_x0
EDX{1}, which AMD names: "L3CacheMon - L3 monitoring capability"

> > +
> >  	if (rdt_cpu_has(X86_FEATURE_CQM_OCCUP_LLC)) {
> >  		resctrl_enable_mon_event(QOS_L3_OCCUP_EVENT_ID, false, 0, NULL);
> >  		ret = true;
> 
> Reinette

-Tony

  reply	other threads:[~2026-08-21 19:44 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-19 16:13 [RFC PATCH 0/4] x86/resctrl: Refactor resctrl enumeration Tony Luck
2026-08-19 16:13 ` [RFC PATCH 1/4] x86/resctrl: Check if monitoring features are enabled Tony Luck
2026-08-21 18:18   ` Reinette Chatre
2026-08-21 19:44     ` Luck, Tony [this message]
2026-08-21 21:00       ` Reinette Chatre
2026-08-21 22:12         ` Luck, Tony
2026-08-19 16:13 ` [RFC PATCH 2/4] x86/resctrl: Enumerate monitor features in rdt_get_l3_mon_config() Tony Luck
2026-08-19 16:13 ` [RFC PATCH 3/4] x86/resctrl: Apply Intel MBM quirk from rdt_get_l3_mon_config() Tony Luck
2026-08-19 16:13 ` [RFC PATCH 4/4] x86/resctrl: Delete resctrl_cpu_detect() Tony Luck
2026-08-19 20:08   ` Borislav Petkov
2026-08-19 17:12 ` [RFC PATCH 0/4] x86/resctrl: Refactor resctrl enumeration Luck, Tony

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=aoiqiAEFJfCxhLVk@agluck-desk3 \
    --to=tony.luck@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghuay@nvidia.com \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=peternewman@google.com \
    --cc=reinette.chatre@intel.com \
    --cc=x86@kernel.org \
    --cc=yu.c.chen@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.