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

RE: [PATCH v3 07/15] xen/cpufreq: fix core frequency calculation for AMD Family 1Ah CPUs


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: "Penny, Zheng" <penny.zheng@xxxxxxx>
  • Date: Wed, 26 Mar 2025 09:54:19 +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=1USe14N+eQYu2sJmZmGek94D5jZfVO7DX/TLoDzNXdo=; b=xDQzsz/Mbc7xGR2p6cYbylIHuG+g+HgdzERbMYaGS9dL1JBV2h9p6N9vnOyY4CTtXJwXGk+LoVVtI7Y4b7uBJniUy3Dnfh0syYRWXgW/zzDd7IJG9ycmstlS6kty36C6w6hv2W+IXExEDkGe0lCOqRVHYOJbOw7JpXqw7ZwjnD+CX9dw7jUigF0baLRT+zfmFs4JfLGUmVOquLC8GYCoGXMEqCBFXVWrRuRkexAz2m2K3qNNw+0G5z+jdA1HQDLFZk9bsxya7pjN5025XzkXVJL1sfekM6DUeotjWXkjEY1Dq5Ncs7orFJipGgBPShuFKhNlQScEIVU8OTP1kH7faQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jQbvyjjHlyNF5EqFizODhL2jr4D9k5I2MuAEL153TnP45belntNoufXE9QZZ+baj9vo2gG0W29UrPznUPnJftj3XWkn6TV5z9S+fQJWffSOt6CVuKQsNhH2Z4Gseqss6lOwF3UM3htavtJcXBmLLIBo03IdD4sgSM803zqYDuoIQqPFCOrR7tc+hNIoHbYPTffmWJPLe+C6H9VVjcoM6HkA1BdjV5JjdIl9DwnNsOeCwG0BqsSEFdUgpgQpPPsJLvUPIoQ0MaS5OVsKTqldre1fWNt6USvD7/BvVZQllDC6/ZFSp+qzpTtrxnKnjPy4lYBL6vOoD0zNv71iegGnOwg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: "Huang, Ray" <Ray.Huang@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
  • Delivery-date: Wed, 26 Mar 2025 09:54:28 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Msip_labels: MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_ActionId=4fa8022c-96d6-4d92-975e-825418f8735a;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_ContentBits=0;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Enabled=true;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Method=Privileged;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Name=Open Source;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_SetDate=2025-03-26T09:53:39Z;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;MSIP_Label_f265efc6-e181-49d6-80f4-fae95cf838a0_Tag=10, 0, 1, 1;
  • Thread-index: AQHbjnNvmMkhQOT4QEqCqJEcRIbe17OCi0SAgAK+gSA=
  • Thread-topic: [PATCH v3 07/15] xen/cpufreq: fix core frequency calculation for AMD Family 1Ah CPUs

[Public]

Hi,

> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Monday, March 24, 2025 11:48 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Andrew Cooper
> <andrew.cooper3@xxxxxxxxxx>; Roger Pau Monné <roger.pau@xxxxxxxxxx>; xen-
> devel@xxxxxxxxxxxxxxxxxxxx; Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
> Subject: Re: [PATCH v3 07/15] xen/cpufreq: fix core frequency calculation for 
> AMD
> Family 1Ah CPUs
>
> On 06.03.2025 09:39, Penny Zheng wrote:
> > This commit fixes core frequency calculation for AMD Family 1Ah CPUs,
> > due to a change in the PStateDef MSR layout in AMD Family 1Ah+.
> > In AMD Family 1Ah+, Core current operating frequency in MHz is
> > calculated as
> > follows:
>
> Why 1Ah+? In the code you correctly limit to just 1Ah.
>
> > --- a/xen/arch/x86/cpu/amd.c
> > +++ b/xen/arch/x86/cpu/amd.c
> > @@ -572,12 +572,24 @@ static void amd_get_topology(struct cpuinfo_x86 *c)
> >                                                            :
> > c->cpu_core_id);  }
> >
> > +static uint64_t amd_parse_freq(const struct cpuinfo_x86 *c, uint64_t
> > +value) {
> > +   ASSERT(c->x86 <= 0x1A);
> > +
> > +   if (c->x86 < 0x17)
> > +           return (((value & 0x3f) + 0x10) * 100) >> ((value >> 6) & 7);
> > +   else if (c->x86 <= 0x19)
> > +           return ((value & 0xff) * 25 * 8) / ((value >> 8) & 0x3f);
> > +   else
> > +           return (value & 0xfff) * 5;
> > +}
>
> Could I talk you into omitting the unnecessary "else" in cases like this one?
> (This may also make sense to express as switch().)
>

Sorry, bad habit... will change it to switch

> > @@ -658,19 +670,20 @@ void amd_log_freq(const struct cpuinfo_x86 *c)
> >     if (!(lo >> 63))
> >             return;
> >
> > -#define FREQ(v) (c->x86 < 0x17 ? ((((v) & 0x3f) + 0x10) * 100) >> (((v) >> 
> > 6) &
> 7) \
> > -                                : (((v) & 0xff) * 25 * 8) / (((v) >> 8) & 
> > 0x3f))
> >     if (idx && idx < h &&
> >         !rdmsr_safe(0xC0010064 + idx, val) && (val >> 63) &&
> >         !rdmsr_safe(0xC0010064, hi) && (hi >> 63))
> >             printk("CPU%u: %lu (%lu ... %lu) MHz\n",
> > -                  smp_processor_id(), FREQ(val), FREQ(lo), FREQ(hi));
> > +                  smp_processor_id(),
> > +                  amd_parse_freq(c, val),
> > +                  amd_parse_freq(c, lo), amd_parse_freq(c, hi));
>
> I fear Misra won't like multiple function calls to evaluate the parameters to 
> pass to
> another function. Iirc smp_process_id() has special exception, so that's okay 
> here.
> This may be possible to alleviate by marking the new helper pure or even const
> (see gcc doc as to caveats with passing pointers to const functions). Cc-ing 
> Nicola
> for possible clarification or correction.
>

Maybe we shall declare the function __pure. Having checked the gcc doc,
``
a function that has pointer arguments must not be declared const
``
Otherwise we store the "c->x86" value to avoid using the pointer

> Jan

 


Rackspace

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