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

RE: [PATCH v7 13/13] xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC xen_sysctl_pm_op for amd-cppc driver


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: "Penny, Zheng" <penny.zheng@xxxxxxx>
  • Date: Thu, 28 Aug 2025 07:52:14 +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=JhOBOTLX6ttaW+KVs+rgnEKj0WR1O2TRaV0AFdt4qU4=; b=AkdjYyzORtS9UhzLTxbptjzwsp87K7unu9lJMofBZl3/E+6V76qWy/ABkTlCw5MfZsGFFqGFeYe8c5Utiz0ajnm3hJTFy1u1lRI87KA5klfh87V6zSScLJW3DoKWTFXLR2domRmvpyiNUC/GblfbNDZ+uYQeM+2cTg8nt6S82Un97Z/isPFT2pf3a19uHgmznlDpUQNstwDRGW8gZbTj0evZEhDV+oI9Y3WJI/kfsV2nZnlSNcM1Dymk+7qoIGGlAIZSJqHsa/hCw2nsWUrEQvec87ajM1yIH1/Pq7gimD2aScUqrDLTAtfVNA3jNkDLx4lJ/wuiw3IuxUP0vp1Dvg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bas9Xs8U9spsyO/5/87hZhAVhR4AAxfz6tR3q7oVBABzDQ62Nrr9YKUFiy5X5pxTXEBaYBZbtHWRo9k19HOzpE+oU0uHhL16J8O/lwtwfQ9malMIQNYlJVHJtO2SaxPXRS6CfJtbQq9wx4tQ/HQ4dEaF2kIdU+RGB1tAilDSwTSgfLIan777H5NbkVnp5raR0oaZxw5m9SYDS4jxynPHnLfk13dNvr6MYIMzU+lo9MiiGzNMrlZ8Bwi16re2MOoOOq2pE0ZgBch2gbvm+7IxLVl0KP5G8emdUsIwjS/f5mYbm2UNhIPSOWWAAah84Y2Q6jZrgui75KNaNAFdN1HBaQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: "Huang, Ray" <Ray.Huang@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@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: Thu, 28 Aug 2025 07:52:35 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Msip_labels: MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_Enabled=True;MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_SetDate=2025-08-28T07:52:07.0000000Z;MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_Name=Published AMD Product;MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_ContentBits=3;MSIP_Label_0fec2151-cbe0-4586-8a3f-997880a38a28_Method=Privileged
  • Thread-index: AQHcE1L0WO8OIJho60KGV8JFR/QspLRzjMCAgAJSvzCAAcXZgIAAAHmAgAACEFCAAAa+gIAAC74w
  • Thread-topic: [PATCH v7 13/13] xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC xen_sysctl_pm_op for amd-cppc driver

[Public]

> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Thursday, August 28, 2025 3:09 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Anthony PERARD
> <anthony.perard@xxxxxxxxxx>; Andrew Cooper <andrew.cooper3@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 v7 13/13] xen/cpufreq: Adapt SET/GET_CPUFREQ_CPPC
> xen_sysctl_pm_op for amd-cppc driver
>
> On 28.08.2025 08:54, Penny, Zheng wrote:
> > [Public]
> >
> >> -----Original Message-----
> >> From: Jan Beulich <jbeulich@xxxxxxxx>
> >> Sent: Thursday, August 28, 2025 2:38 PM
> >> To: Penny, Zheng <penny.zheng@xxxxxxx>
> >> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Anthony PERARD
> >> <anthony.perard@xxxxxxxxxx>; Andrew Cooper
> >> <andrew.cooper3@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 v7 13/13] xen/cpufreq: Adapt
> SET/GET_CPUFREQ_CPPC
> >> xen_sysctl_pm_op for amd-cppc driver
> >>
> >> On 28.08.2025 08:35, Jan Beulich wrote:
> >>> On 28.08.2025 06:06, Penny, Zheng wrote:
> >>>>> -----Original Message-----
> >>>>> From: Jan Beulich <jbeulich@xxxxxxxx>
> >>>>> Sent: Tuesday, August 26, 2025 12:03 AM
> >>>>>
> >>>>> On 22.08.2025 12:52, Penny Zheng wrote:
> >>>>>> --- a/xen/include/public/sysctl.h
> >>>>>> +++ b/xen/include/public/sysctl.h
> >>>>>> @@ -336,8 +336,14 @@ struct xen_ondemand {
> >>>>>>      uint32_t up_threshold;
> >>>>>>  };
> >>>>>>
> >>>>>> +#define CPUFREQ_POLICY_UNKNOWN      0
> >>>>>> +#define CPUFREQ_POLICY_POWERSAVE    1
> >>>>>> +#define CPUFREQ_POLICY_PERFORMANCE  2
> >>>>>> +#define CPUFREQ_POLICY_ONDEMAND     3
> >>>>>
> >>>>> Without XEN_ prefixes they shouldn't appear in a public header.
> >>>>> But do we need ...
> >>>>>
> >>>>>>  struct xen_get_cppc_para {
> >>>>>>      /* OUT */
> >>>>>> +    uint32_t policy; /* CPUFREQ_POLICY_xxx */
> >>>>>
> >>>>> ... the new field at all? Can't you synthesize the
> >>>>> kind-of-governor into struct xen_get_cpufreq_para's respective
> >>>>> field? You invoke both sub-ops from xenpm now anyway ...
> >>>>>
> >>>>
> >>>> Maybe I could borrow governor field to indicate policy info, like
> >>>> the following in
> >> print_cpufreq_para(), then we don't need to add the new filed "policy"
> >>>> ```
> >>>> +    /* Translate governor info to policy info in CPPC active mode */
> >>>> +    if ( is_cppc_active )
> >>>> +    {
> >>>> +        if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> +                      "ondemand", CPUFREQ_NAME_LEN) )
> >>>> +            printf("cppc policy           : ondemand\n");
> >>>> +        else if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> +                           "performance", CPUFREQ_NAME_LEN) )
> >>>> +            printf("cppc policy           : performance\n");
> >>>> +
> >>>> +        else if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >>>> +                           "powersave", CPUFREQ_NAME_LEN) )
> >>>> +            printf("cppc policy           : powersave\n");
> >>>> +        else
> >>>> +            printf("cppc policy           : unknown\n");
> >>>> +    }
> >>>> +
> >>>> ```
> >>>
> >>> Something like this is what I was thinking of, yes.
> >>
> >> Albeit - why the complicated if/else sequence? Why not simply print
> >> the field the hypercall returned?
> >
> > userspace governor doesn't have according policy. I could simplify it
> > to ```
> >         if ( !strncmp(p_cpufreq->u.s.scaling_governor,
> >              "userspace", CPUFREQ_NAME_LEN) )
> >                 printf("policy               : unknown\n");
> >         else
> >                 printf("policy               : %s\n",
> >                           p_cpufreq->u.s.scaling_governor); ```
>
> But the hypervisor shouldn't report back "userspace" when the CPPC driver is 
> in
> use. ANd I think the tool is okay to trust the hypervisor.

True, we shall make sure governor is set properly in hypervisor side even in 
cppc mode

>
> Jan

 


Rackspace

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