[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH v2 03/11] xen/x86: introduce "cpufreq=amd-cppc" xen cmdline


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: "Penny, Zheng" <penny.zheng@xxxxxxx>
  • Date: Tue, 18 Feb 2025 04:24:52 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2JrW8OX0EtAwTBBAPzU2EBSbL9xWEBgsoC70osK1bds=; b=F2owrmeqegyozoL2xpJHbucLNI3noX33V855KQBunFWSveqN85snUXJiARDYm1bXN1FPX7Yr2nUxyxxBtZm8tglrTd5+NcGhdkHnDi89vuxWuRT2pgBuKJCxmilShXIFc8sulRd5GbP+40fLbuGeB1Z0vCQI3qT2NIgFasrxnf1H2Gbf7uh8IcW6a03OJIPBchbi02Q9b/8LeuCLLOBTd5youv9JI2iH0Cv3hnRjofLgTe+auCg+FDFzQKhHxQM1W2S0WAW9kQqWFz78/8tC2qpV2r4UfEcUiAQXPpW0YUceXGe7W4PffFEUyF5hbw6AqE9TDRQNUmrJZTk6g9kEGw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=awQZ+cfK8jX5/ETBOt0hp59z6ut6o2lEuFhiFKJMzkE9okNf1ZRGd4iR0ASU3mQo1BJ1phYq6moKZTxldxfBmoLpDbPYiONq/hlW5GIyjmRCjZGA1ui81fbJhi2KQWsXhb0wJTst4O027F16vpGjNX6MzqcUOwRhb1IaGYKmFx0xnl501wV5fZnNSOBSLINg0FKn3LMDJrWx/MTpoqamWNdDMP9SgIAEHonR4ImrmkJytX1vump/SVVmE+7v9FkmCy2Y5YoAcQeIw5ifDQ70Rk5fkWXBtGbLT3yrziLqZnHtSjbApDFSwRtlHhojwaYXttaNeEoJ28bsXjq/1CQoVw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: "Huang, Ray" <Ray.Huang@xxxxxxx>, "Andryuk, Jason" <Jason.Andryuk@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, "Orzel, Michal" <Michal.Orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 18 Feb 2025 04:25:20 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=6daa2ed8-1ac6-4a89-8905-426ad9316cf0;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ContentBits=0;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Enabled=true;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Method=Standard;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Name=AMD Internal Distribution Only;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SetDate=2025-02-18T03:16:08Z;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Tag=10, 3, 0, 1;
  • Thread-index: AQHbeHHOqjf30im2P0K06mFnJR527rNCCo2AgAkjUfCAADA8gIABF+pw
  • Thread-topic: [PATCH v2 03/11] xen/x86: introduce "cpufreq=amd-cppc" xen cmdline

[AMD Official Use Only - AMD Internal Distribution Only]

Hi,

> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Monday, February 17, 2025 6:34 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Andryuk, Jason
> <Jason.Andryuk@xxxxxxx>; Andrew Cooper <andrew.cooper3@xxxxxxxxxx>;
> Anthony PERARD <anthony.perard@xxxxxxxxxx>; Orzel, Michal
> <Michal.Orzel@xxxxxxx>; Julien Grall <julien@xxxxxxx>; Roger Pau Monné
> <roger.pau@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>; xen-
> devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v2 03/11] xen/x86: introduce "cpufreq=amd-cppc" xen 
> cmdline
>
> On 17.02.2025 11:17, Penny, Zheng wrote:
> > [AMD Official Use Only - AMD Internal Distribution Only]
> >
> > Hi,
> >
> >> -----Original Message-----
> >> From: Jan Beulich <jbeulich@xxxxxxxx>
> >> Sent: Tuesday, February 11, 2025 8:09 PM
> >> To: Penny, Zheng <penny.zheng@xxxxxxx>
> >> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Andryuk, Jason
> >> <Jason.Andryuk@xxxxxxx>; Andrew Cooper <andrew.cooper3@xxxxxxxxxx>;
> >> Anthony PERARD <anthony.perard@xxxxxxxxxx>; Orzel, Michal
> >> <Michal.Orzel@xxxxxxx>; Julien Grall <julien@xxxxxxx>; Roger Pau
> >> Monné <roger.pau@xxxxxxxxxx>; Stefano Stabellini
> >> <sstabellini@xxxxxxxxxx>; xen- devel@xxxxxxxxxxxxxxxxxxxx
> >> Subject: Re: [PATCH v2 03/11] xen/x86: introduce "cpufreq=amd-cppc"
> >> xen cmdline
> >>
> >> On 06.02.2025 09:32, Penny Zheng wrote:
> >>> --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c
> >>> +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c
> >>> @@ -148,6 +148,9 @@ static int __init cf_check cpufreq_driver_init(void)
> >>>                  case CPUFREQ_none:
> >>>                      ret = 0;
> >>>                      break;
> >>> +                default:
> >>> +                    printk(XENLOG_WARNING "Unsupported cpufreq
> >>> + driver for vendor Intel\n");
> >>
> >> Same here. The string along overruning line length is fine. But this
> >> cal then still be wrapped as
> >>
> >>                     printk(XENLOG_WARNING
> >>                            "Unsupported cpufreq driver for vendor
> >> Intel\n");
> >>
> >> to respect the line length limit as much as possible.
> >>
> >>> @@ -131,6 +131,15 @@ static int __init cf_check
> >>> setup_cpufreq_option(const
> >> char *str)
> >>>              if ( arg[0] && arg[1] )
> >>>                  ret = hwp_cmdline_parse(arg + 1, end);
> >>>          }
> >>> +        else if ( choice < 0 && !cmdline_strcmp(str, "amd-cppc") )
> >>> +        {
> >>> +            xen_processor_pmbits |= XEN_PROCESSOR_PM_CPPC;
> >>> +            cpufreq_controller = FREQCTL_xen;
> >>> +            cpufreq_xen_opts[cpufreq_xen_cnt++] = CPUFREQ_amd_cppc;
> >>
> >> While apparently again a pre-existing problem, the risk of array
> >> overrun will become more manifest with this addition: People may
> >> plausibly want to pass a universal option to Xen on all their instances:
> >> "cpufreq=hwp,amd-cppc,xen". I think this wants taking care of in a prereq 
> >> patch,
> i.e.
> >> before you further extend it. Here you will then further want to bump
> >> cpufreq_xen_opts[]'es dimension, to account for the now sensible three-fold
> option.
> >>
> >
> > Correct me if I'm wrong, We are missing dealing the scenario which looks 
> > like the
> following:
> > "cpufreq=amd-cppc,hwp,verbose".
>
> Not so much this one (can it even overflow). It's "cpufreq=amd-cppc,hwp,xen"
> that I'm concerned about (or, prior to your change something redundant like
> "cpufreq=hwp,hwp,xen").

I misunderstood before, sorry
What is the appropriate behavior when user passes an option to Xen, like 
"cpufreq=amd-cppc,hwp,xen" ?
FWIT, amd-cppc and hwp are incompatible options.
Send the error info to tell them you shall choose either of them, amd-cppc, or 
hwp, or xen?
If user wants to add fall back scheme, when amd-cppc is hardware unavailable, 
we fall back to xen. user shall
use ";", not "," to add, like "cpufreq=amd-cppc;xen"

>
> > `verbose` is an overrun flag when parsing amd-cppc.
> > I've written the following fix:
> > ```
> > diff --git a/xen/drivers/cpufreq/cpufreq.c
> > b/xen/drivers/cpufreq/cpufreq.c index 860ae32c8a..0fe633d4bc 100644
> > --- a/xen/drivers/cpufreq/cpufreq.c
> > +++ b/xen/drivers/cpufreq/cpufreq.c
> > @@ -71,6 +71,22 @@ unsigned int __initdata cpufreq_xen_cnt = 1;
> >
> >  static int __init cpufreq_cmdline_parse(const char *s, const char
> > *e);
> >
> > +static int __initdata nr_cpufreq_avail_opts = 3; static const char *
> > +__initdata cpufreq_avail_opts[nr_cpufreq_avail_opts] = { "xen",
> > +"hwp", "amd-cppc" };
>
> Does this even build? If it does, it likely won't be what you mean. You want a
> constant array dimension (which could actually be omitted, given the 
> initializer),
> as ...
>
> > +static void __init cpufreq_cmdline_trim(const char *s) {
> > +    unsigned int i = 0;
> > +
> > +    do
> > +    {
> > +        if ( strncmp(s, cpufreq_avail_opts[i], 
> > strlen(cpufreq_avail_opts[i] - 1) == 0 )
> > +            return false;
> > +    } while ( ++i < nr_cpufreq_avail_opts )
>
> ... you can use ARRAY_SIZE() here. (Style note: "do {" goes on a single line.)
>
> > +
> > +    return true;
> > +}
> > +
> >  static int __init cf_check setup_cpufreq_option(const char *str)  {
> >      const char *arg = strpbrk(str, ",:;"); @@ -118,7 +134,7 @@ static
> > int __init cf_check setup_cpufreq_option(const char *str)
> >              cpufreq_controller = FREQCTL_xen;
> >              cpufreq_xen_opts[cpufreq_xen_cnt++] = CPUFREQ_xen;
> >              ret = 0;
> > -            if ( arg[0] && arg[1] )
> > +            if ( arg[0] && arg[1] && cpufreq_cmdline_trim(arg + 1) )
> >                  ret = cpufreq_cmdline_parse(arg + 1, end);
> >          }
> >          else if ( IS_ENABLED(CONFIG_INTEL) && choice < 0 && ```
>
> For the rest of this, I guess I'd prefer to see this in context. Also with 
> regard to the
> helper function's name.
>
> Jan

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.