[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: Mon, 17 Feb 2025 10:17:16 +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=oSB4x377Q8EOZy0USqfY9YpsFQJRszHITxUbuL6Fum8=; b=mz6ouaRZXFNl4n8zRssBEI4/vU8744DBOfBFp7mt3+xkrIZodeXAAW64BnbVyRgoPQLDqTfymjG//6PElFEYpM8YtCyN/MrRw8TdMblp9nsbc9/XGDgrkSPRRS7UmsFl+ee+wPTwywMrZqCB3jVbgLHOMYsWppeArI+xkp9refVq1XL5HK2vMojr0PSoszmGGN+OjgbNHgv4zaqBhE2gBOihvGjaboJHS8xATqMhPQo8I8QS8tw89PqjmAfcEI6G3Vg/hYOrAat9apFrgBQFTyXXI8lHVxp2HpnGYynM+vJaY2Zo+sKWnLEesQdWpX9uX2FazfenpUkZTQ1GZLg9nA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UCmkRYRf7LF1qv6MS4hmBuUTfSFNMbRbPG3oo/mzUC1zSV9GE0rmhVZZSUZw3XGCwAs9axOhaMuimf8e71FfkVWTzhlIJTnh4Oy80lAvhUHIpRAP/sa9Dc2mU9of0mPD6Ix+ZWRd6o1B3WU5yjfUDwmcYutV6P6L+7GCEUPYJy90l/LNysKsgxRyg5MD6FnB2iGUbSC8JOXSrYV/v9WM43CpcssNy1pxbr/f4OPaykRM4D4eyAlv0KWfNzFCsMqlRmYcLMO9oCu5S/IR0VhKI9DONeRENz3yQ3zoYBRHodGXeDwRvsJK5mVNgEZIv+IPZeiif8ZX/JD/jmt+NThxcg==
  • 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: Mon, 17 Feb 2025 10:17:30 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=01938b22-6aab-447e-8cc7-659f3bcf125d;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-17T07:41:38Z;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: AQHbeHHOqjf30im2P0K06mFnJR527rNCCo2AgAkjUfA=
  • 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: 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". `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" };
+
+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 )
+
+    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 &&
```

>
> Jan

Many thanks,
Penny

 


Rackspace

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