All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Penny Zheng <Penny.Zheng@amd.com>
Subject: Re: [PATCH] x86/ACPI: _PDC bits vs HWP/CPPC
Date: Wed, 4 Mar 2026 17:36:16 +0100	[thread overview]
Message-ID: <aahfgDDNVwJPa-jF@macbook.local> (raw)
In-Reply-To: <ca1812c2-dadf-422a-a195-9c285ce08077@suse.com>

On Wed, Mar 04, 2026 at 03:37:25PM +0100, Jan Beulich wrote:
> The treatment of ACPI_PDC_CPPC_NATIVE_INTR should follow that of other P-
> state related bits. Add the bit to ACPI_PDC_P_MASK and apply "mask" in
> arch_acpi_set_pdc_bits() when setting that bit. Move this next to the
> other P-state related logic.
> 
> Further apply ACPI_PDC_P_MASK also when the amd-cppc driver is in use.
> 
> Also leave a comment regarding the clearing of bits and add a couple of
> blank lines.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Including XEN_PROCESSOR_PM_CPPC may need accompanying with some change to
> arch_acpi_set_pdc_bits(), but it's entirely unclear to me what to do
> there. I'm unaware of an AMD counterpart of Intel's "Intel® Processor
> Vendor-Specific ACPI". Plus even when the powernow driver is in use, we
> never set any bits, as EIST is an Intel-only feature.

We possibly never need to set any bits there for AMD, as those _PDC
Processor bits are Intel specific?

> acpi_set_pdc_bits() having moved to the cpufreq driver looks to have been
> a mistake. It covers not only P-state related bits, but also C-state and
> T-state ones. (This is only a latent issue as long as
> https://lists.xen.org/archives/html/xen-devel/2026-02/msg00875.html
> wouldn't land.)
> 
> --- a/xen/arch/x86/acpi/lib.c
> +++ b/xen/arch/x86/acpi/lib.c
> @@ -124,6 +124,9 @@ int arch_acpi_set_pdc_bits(u32 acpi_id,
>  	if (cpu_has(c, X86_FEATURE_EIST))
>  		pdc[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP & mask;
>  
> +	if (hwp_active())
> +		pdc[2] |= ACPI_PDC_CPPC_NATIVE_INTR & mask;
> +
>  	if (cpu_has(c, X86_FEATURE_ACPI))
>  		pdc[2] |= ACPI_PDC_T_FFH & mask;
>  
> @@ -142,8 +145,5 @@ int arch_acpi_set_pdc_bits(u32 acpi_id,
>  	    !(ecx & CPUID5_ECX_INTERRUPT_BREAK))
>  		pdc[2] &= ~(ACPI_PDC_C_C1_FFH | ACPI_PDC_C_C2C3_FFH);
>  
> -	if (hwp_active())
> -		pdc[2] |= ACPI_PDC_CPPC_NATIVE_INTR;
> -
>  	return 0;
>  }
> --- a/xen/drivers/cpufreq/cpufreq.c
> +++ b/xen/drivers/cpufreq/cpufreq.c
> @@ -694,14 +694,23 @@ int acpi_set_pdc_bits(unsigned int acpi_
>      {
>          uint32_t mask = 0;
>  
> +        /*
> +         * Accumulate all the bits under Xen's control, to mask them off, for
> +         * arch_acpi_set_pdc_bits() to then set those we want set.
> +         */
>          if ( xen_processor_pmbits & XEN_PROCESSOR_PM_CX )
>              mask |= ACPI_PDC_C_MASK | ACPI_PDC_SMP_C1PT;
> -        if ( xen_processor_pmbits & XEN_PROCESSOR_PM_PX )
> +
> +        if ( xen_processor_pmbits &
> +             (XEN_PROCESSOR_PM_PX | XEN_PROCESSOR_PM_CPPC) )

Currently the CPPC driver is AMD only, and hence when using it we
don't care about filtering the _PDC bits, because the ones Xen knows
about are Intel-only?

As you say, we likely need some clarification about whether there's
_PDC bits AMD care about?

Linux seems to unconditionally set bits in _PDC, so some of those
might actually be parsed by AMD.

I think we might want to split the setting of XEN_PROCESSOR_PM_CPPC
here from the addition of ACPI_PDC_CPPC_NATIVE_INTR into
ACPI_PDC_P_MASK.  The latter we can possibly untie from the questions
we have about AMD usage of _PDC.

Thanks, Roger.


  reply	other threads:[~2026-03-04 16:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-04 14:37 [PATCH] x86/ACPI: _PDC bits vs HWP/CPPC Jan Beulich
2026-03-04 16:36 ` Roger Pau Monné [this message]
2026-03-05  8:17   ` Jan Beulich
2026-03-05  8:50     ` Roger Pau Monné
2026-03-05  9:20       ` Jan Beulich
2026-03-05 10:17         ` Roger Pau Monné
2026-03-05 11:39           ` Jan Beulich
2026-03-05 12:30             ` Roger Pau Monné
2026-03-05 12:40               ` Jan Beulich
2026-03-05 20:25                 ` Roger Pau Monné

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=aahfgDDNVwJPa-jF@macbook.local \
    --to=roger.pau@citrix.com \
    --cc=Penny.Zheng@amd.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=jason.andryuk@amd.com \
    --cc=jbeulich@suse.com \
    --cc=xen-devel@lists.xenproject.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 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.