From nobody Sun Apr 28 13:40:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1636741751; cv=none; d=zohomail.com; s=zohoarc; b=A0dQg2MN8C3B1MMwgsu8utUuTqOYl1hRK2zFmOWv54EqVRAySLmhY97zGJhHsjAWXj33rK/kH1nwhrndlm3sPts0rieD1gfegRei7hnyUO8io9WG/Sdi9zxZMFCRDh5kMxn6IDzdmhSizZTGgAv/3nFVjYT6N5+3tAcov5G3EIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636741751; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pt2lCjzdzltal4Cm2xz0Pu/QIcnHgGOB1IrGIXTNAAo=; b=maIz5toKuPY4azR/K0PYqL3VshCnmzmdFg7J4GP7aNgcRk9Eo3lm7wd+npQ+0MLYVAJ7GMWjsnR9RfYj1BTKAdQRy3ed5vywdYC0u8mq1MtLeM2QA27SWBEINZtksbr09SoGAK/OOb1uS5qJ3SAXPc6gLVqvlUuiktFW19ZIZM0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636741751561811.1453870942158; Fri, 12 Nov 2021 10:29:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225362.389196 (Exim 4.92) (envelope-from ) id 1mlbIA-0002P0-Ob; Fri, 12 Nov 2021 18:28:50 +0000 Received: by outflank-mailman (output) from mailman id 225362.389196; Fri, 12 Nov 2021 18:28:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbIA-0002O7-Ib; Fri, 12 Nov 2021 18:28:50 +0000 Received: by outflank-mailman (input) for mailman id 225362; Fri, 12 Nov 2021 18:28:49 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbI9-0002K6-3I for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 18:28:49 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 603c9a9d-43e6-11ec-9787-a32c541c8605; Fri, 12 Nov 2021 19:28:48 +0100 (CET) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 603c9a9d-43e6-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1636741727; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qqGtKAeoak+cgA0fRmStxT61JZlUT9e0puGVkA6QZ4U=; b=ecTt7rj+wMgWBEU3G3qpg6Z0X+OBcUmVuFgs8lu7AaM5DnSuyMrPCHnQ 1OBwTnE6dCeLDE8GHuDiuc5A+0y2CywWXJZETOb98R69yLotCoK3JDE7P pNBH9GZfjPu6Id1hWstounjYlPA99R0hEm/3eNOtP0+2XAuM/DLP/Soiv I=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: 12CCx29YdYoJosQSJTbnetCptu4M9o/xT+iuxYv/J5JN5t5a1ELeyRaeOsyd+o1GZCFh6Ox1Wx /NP1Co3mpgHp5QlCAHyHMGfHkm5+qW586MkTI4bHNH7/zhLW/7acKLZfz6kgTuxqf5qDy+wMr6 AWvkpP3eia0BEUaY7+9A1Sr2oxDCx279ElVY+nCSVPNevTNGji4FsYU97niLoK9pg+O/Rl5G2I k/4Pp/9tJIjx0ZKO2BW9dNW9q/JwIDS2KspSzBRB8vhTtWPKJeJw3WLps0BBYQvSHuxTxPMPLO lM56iMK74xnq58Nf6ijlu7tC X-SBRS: 5.1 X-MesageID: 57675763 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:LXSahqBK2tAldxVW/+Tkw5YqxClBgxIJ4kV8jS/XYbTApD9x0jVTy jcXDT2Hb/mCYmr0KNFwbdu1pxgPsMLdy4VgQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMo/u1Si6FatANl1ElvU2zbue6WLGs1hxZH1c+EX540Eg7wIbVv6Yz6TSHK1LV0 T/Ni5W31G+Ng1aY5UpNtspvADs21BjDkGtwUm4WPJinj3eH/5UhN7oNJLnZEpfNatI88thW5 Qr05OrREmvxp3/BAz4++1rxWhVirrX6ZWBihpfKMkQLb9crSiEai84G2PQghUh/rWmppM8r5 vh3pIWcRAgVY5X2lNsjTEwNe81+FfUuFL7vJHG+tYqYzlHccmuqyPJrZK00FdRGoKAtWzgIr KFGbmBWBvyAr7veLLaTY+9gnMk8auLsO5sSoCpIxjDFF/c2B5vERs0m4PcFg2lv258QRp4yY eJITAtiSwqHUyRFO1w5UrAvuemwt33wJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tmSyq 3/C/m/5KgoHL9HZwj2Amlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiFjYniUDAfR9KfwjxAyC9vfs2QqmOHdRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqWFo47eJNZmOEZDt0ZL 9qiiCElz4segscQv0lQ1QCW2mn8znQlo+Nc2+k2Yo5Hxl8mDGJGT9bxgbQ+0RqmBNzEJrVml CJU8/VyFMhUUfmweNWlGY3h5o2B6fefKyH7ilVyBZQn/DnF0yf9Jt4OvW8kfxw4b5xsldrVj Kn74145CHh7ZivCUEOKS9jpV5RCIVbISbwJqcw4nvIRO8MsJWdrDQllZFKK3nCFraTfufpXB HtvSu71VSxyIf0+lFKeHr5BuZd2lnFW7T6CHvjTkkX4uYdykVbIEN/pxnPVNbtnhE5FyS2Im +ti2zyil08CDbagO3aPqub+7zkidBAGOHw/kOQPHsbrH+asMDhJ5yb5zexzdop7sb5Sk+uUr HixVlUBkAj0hGHdKBXMYXdmMeu9UZF6pHM9HCotIVf3hCRzPdfxtP8SJ8ktYL0q1O1/1vooH fMLTNqNX6ZUQTPd9jVDMZSk9N5+dA6mjB6lNja+ZGRtZIZpQgHEo4e2fgbm+CQUIDCwsM8y/ ++p2g/BGMJRTAV+FsfGLvmoygrp73QanetzWWrOI8VSJxqwoNQ7dXSpg6Zucc8WKBjFyj+L7 CqsAE8V9bvXvos40NjVnqTY/Y2nJPRzQxhBFG7B4LfoaSSDpji/wZVNWfqjdCzGUD+m472rY OhYwq2uMPADm1oW4YNwH6wykPA77trr4bRb0h5lDDPAaFHyUuFsJXyP3M9usKxRx+AG5VvqC xzXotQKa6+UPM7FEUIKIFt3Z+uO4vgYhz3O4KlnO079/iJ2oOKKXEg608NgU8CBwG+Z6L8Y/ No= IronPort-HdrOrdr: A9a23:/qqZyqzvzPuzev7RKcbRKrPwKL1zdoMgy1knxilNoHtuA6ulfq GV7ZAmPHrP4wr5N0tNpTntAsa9qBDnlaKdg7N+AV7KZmCP0gaVxepZjLfK8nnNHDD/6/4Y9Y oISdkaNDQoNykYsS8t2njbL+od X-IronPort-AV: E=Sophos;i="5.87,230,1631592000"; d="scan'208";a="57675763" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 1/3] x86/cpufreq: Clean up powernow registration Date: Fri, 12 Nov 2021 18:28:16 +0000 Message-ID: <20211112182818.30223-2-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211112182818.30223-1-andrew.cooper3@citrix.com> References: <20211112182818.30223-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1636741752361100001 powernow_register_driver() is currently written with a K&R type definition; I'm surprised that compilers don't object to a mismatch with its declaratio= n, which is written in an ANSI-C compatible way. Furthermore, its sole caller is cpufreq_driver_init() which is a pre-smp initcall. There are no other online CPUs, and even if there were, checking the BSP's CPUID data $N times is pointless. Simplify registration to only look at the BSP. While at it, drop obviously unused includes. Also rewrite the expression in cpufreq_driver_init() for clarity. Signed-off-by: Andrew Cooper Acked-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/acpi/cpufreq/cpufreq.c | 20 +++++++++++++------- xen/arch/x86/acpi/cpufreq/powernow.c | 28 ++++++---------------------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c b/xen/arch/x86/acpi/cpufre= q/cpufreq.c index f1f3c6923fb3..2251c87f9e42 100644 --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c @@ -640,13 +640,19 @@ static int __init cpufreq_driver_init(void) { int ret =3D 0; =20 - if ((cpufreq_controller =3D=3D FREQCTL_xen) && - (boot_cpu_data.x86_vendor =3D=3D X86_VENDOR_INTEL)) - ret =3D cpufreq_register_driver(&acpi_cpufreq_driver); - else if ((cpufreq_controller =3D=3D FREQCTL_xen) && - (boot_cpu_data.x86_vendor & - (X86_VENDOR_AMD | X86_VENDOR_HYGON))) - ret =3D powernow_register_driver(); + if ( cpufreq_controller =3D=3D FREQCTL_xen ) + { + switch ( boot_cpu_data.x86_vendor ) + { + case X86_VENDOR_INTEL: + ret =3D cpufreq_register_driver(&acpi_cpufreq_driver); + break; + + case X86_VENDOR_AMD | X86_VENDOR_HYGON: + ret =3D powernow_register_driver(); + break; + } + } =20 return ret; } diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufr= eq/powernow.c index f620bebc7e91..80095dfd14b4 100644 --- a/xen/arch/x86/acpi/cpufreq/powernow.c +++ b/xen/arch/x86/acpi/cpufreq/powernow.c @@ -24,13 +24,9 @@ #include #include #include -#include #include -#include #include -#include #include -#include #include #include #include @@ -353,25 +349,13 @@ static const struct cpufreq_driver __initconstrel pow= ernow_cpufreq_driver =3D { .update =3D powernow_cpufreq_update }; =20 -unsigned int __init powernow_register_driver() +unsigned int __init powernow_register_driver(void) { - unsigned int i, ret =3D 0; + if ( !(boot_cpu_data.x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))= ) + return -ENODEV; =20 - for_each_online_cpu(i) { - struct cpuinfo_x86 *c =3D &cpu_data[i]; - if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))) - ret =3D -ENODEV; - else - { - u32 eax, ebx, ecx, edx; - cpuid(CPUID_FREQ_VOLT_CAPABILITIES, &eax, &ebx, &ecx, &edx); - if ((edx & USE_HW_PSTATE) !=3D USE_HW_PSTATE) - ret =3D -ENODEV; - } - if (ret) - return ret; - } + if ( !(cpuid_edx(CPUID_FREQ_VOLT_CAPABILITIES) & USE_HW_PSTATE) ) + return -ENODEV; =20 - ret =3D cpufreq_register_driver(&powernow_cpufreq_driver); - return ret; + return cpufreq_register_driver(&powernow_cpufreq_driver); } --=20 2.11.0 From nobody Sun Apr 28 13:40:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1636741752; cv=none; d=zohomail.com; s=zohoarc; b=T8L6jwoLzKkWCFZVo3rdh8g9Q215yNqstVpUIKd4t5vROnZnEhmK732owBaGVcaegkaKjYo/F/sU3I+h6poPFV4JCkfT8yCIBWgsdExF220U0Imi5hyLUCVpsfDEFP7xAX2gOHj1NszX7bei6lh82nmPhZDn1a44f5Sroj/oIkk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636741752; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=L1BzcBDcyo10+IyFTeed0L7osAfJWfxbLa+5tO1gSxY=; b=MBGhtOnAoiOwz87zd+LyoG4UfZ7JhzxzcOYp7JYt5hnVVgvbijKPHbpcTiH9TXIv2dwwAUyfHo7vy0SO+VHs9zoQElU+Te4QsAIVHrCZ5SaYZtGJDLjv4OIsmBOr7CqfuT3RdWgSF39hlhyOanvgFtwZjIUzKFIaGXDvUeHwzpU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163674175204268.61106739960667; Fri, 12 Nov 2021 10:29:12 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225360.389173 (Exim 4.92) (envelope-from ) id 1mlbI3-0001qH-5K; Fri, 12 Nov 2021 18:28:43 +0000 Received: by outflank-mailman (output) from mailman id 225360.389173; Fri, 12 Nov 2021 18:28:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbI3-0001ol-1I; Fri, 12 Nov 2021 18:28:43 +0000 Received: by outflank-mailman (input) for mailman id 225360; Fri, 12 Nov 2021 18:28:42 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbI2-0001mj-1B for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 18:28:42 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 59da1cbc-43e6-11ec-a9d2-d9f7a1cc8784; Fri, 12 Nov 2021 19:28:39 +0100 (CET) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 59da1cbc-43e6-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1636741719; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gE6ojH/9khVrVKykrTMSiRo+XcJAwIMNkluytopjuas=; b=W5ZgdwGwRyoc6NgkwCy3jIVb5WTb0OXBQ8owlYygafHOrr3cAAVFfxVQ mOwR1IdDgwDM+b4eDsWUCQiPX8iN3uPn3AAYAiS7bwmllmB1djrj9UFp/ 4Tr1/GQzQ4ExPIHz871e7XcyRntO0kE8F4PhgpZFBIbzbRnBcwLD7RFN0 E=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: kWZSW1am1N+hPGsg89ZLrOJu+LkvFAXAI3SXbkDSCvPk9cw8UaXBiYne4tDn0OgiAMlfOIT1/r B6pw46GM5Yhlq94NQZi6VD6kIUAIV/106tULner0OisnMa1mghpInWqb5EbuZ4kDXaJgO8JISl A9afvxwBt6OhI4MBmFtmcZEktFxJ4q66NHrMCJlTJU9rnmhh5DnlieWlmB/E8cGc46QGgMvbVo N2M4n7JSdYYk5uKKkn26zy8Iv/mH07rIhgD/buwE5FLButQFDcTDn2cXP28s38JhPXx6I4OCiF UTUYTzxsBFVrcvG1/SiXfMCf X-SBRS: 5.1 X-MesageID: 57713708 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:AeXwVamO/hUKfHP6FsAYC4Ho5gxMIURdPkR7XQ2eYbSJt1+Wr1Gzt xIaWWzSOP3bNzOje98lYYq39k9V78WAyodkTAU6rXsxHyMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA187IMsdoUg7wbdg29cy2YPR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 IhCtJXvRQUvAqvjqugZazkCSANuFKITrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBODtMJkSpTdLyjbBAOx9aZvCX7/L9ZlT2zJYasVmQKmBP pFGMWoHgBLoOyFRJwdOVLsHrr2kon/jUTxJ736WjP9ii4TU5FMoi+W8WDbPQfSVQe1Fk0Deo XjJl0zbKBwHMN2UyRKe72mhwOTImEvTSI8UUbG16PNuqFmS3XAITg0bU0Ohpvu0gVL4XMhQQ 3H44QJ38/J0rhbyCICgAVvo+xZooyLwRfINHOwztw2PzJbSzDSVAlAkFGVjePUp4ZpeqSMR6 neFmNbgBDpKubKTSG6A+rr8kQ5eKRT5PkdZO3ZaEFJtD83L5dhq00mRFooL/Lud14WtQVnNL ya2QD/Sbln5peoCzO2F8F/OmFpATbCZH1dutm07so9Ihz6VhbJJhaT0tjA3Dt4ade51q2VtW lBexqByC8hUXfmweNSlGrllIV1Qz6/t3MfgqVBuBYI90D+m5mSue4tdiBknehw3bJtaI2SyM RKJ0e+02HO1FCH3BUOQS9jhY/nGMIC6TYi1PhwqRoYmjmdNmP+vo3g1OB/4M5HFm0kwi6AvU ap3gu73ZUv2/Z9PlWLsL89EiOdD7nlnmQv7GMCqpzz6gOH2TCPEFt843K6mM7lRAFWs+16Or b6y9qKiln1ibQEJSnWNrNNIcwlVdSNT6FKfg5U/S9Nv6zFOQAkJY8I9C5t7E2C8t6gKxOrO4 F+nXUpUlAj2iXHdcF3YYXF/crL/G514qCtjbyArOF+p3VklYJqus/hDJ8dmI+F/+bwx1+NwQ tkEZ96EXqZFRAPY9mlPdpL6toFjKkim3FrcIyq/bTEjVJd8XAiVqMT8dw7i+XBWXCq6vMczu ZO60QbfTcZRTghuFp+OOvmu00mwrT4Wn+crBxnEJdxaeUPN9ol2KnOu0q9rcp9UcRian2mUz QebBxsctNLhmY5t/Ymbn72AoqeoD/B6QhhQEV7E4OvkLiLd5Gein9NNCb7aYTDHWWro06y+f uEJnerkOfgKkVsW4YpxF7FnkfA369f1/uIIyw1lGDPAbkixC6MmKX6DhJEduqpIz75fmA23R kPQpYUKZeTXYJvoQAwLOQ4oTuWfzvVFyDDd4MM8LFj++CIqrqGMVl9fPkXUhSFQRFev3FjJH Qv1VBYq1jGC IronPort-HdrOrdr: A9a23:b3nVZKrwLRE5ByXIOsqSEPMaV5oTeYIsimQD101hICG8cqSj+f xG+85rrCMc6QxhPk3I9urhBEDtex/hHNtOkOws1NSZLW7bUQmTXeJfBOLZqlWKcUDDH6xmpM NdmsBFeaXN5DNB7PoSjjPWLz9Z+qjkzJyV X-IronPort-AV: E=Sophos;i="5.87,230,1631592000"; d="scan'208";a="57713708" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 2/3] x86/cpufreq: Rework APERF/MPERF handling Date: Fri, 12 Nov 2021 18:28:17 +0000 Message-ID: <20211112182818.30223-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211112182818.30223-1-andrew.cooper3@citrix.com> References: <20211112182818.30223-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1636741754141100005 Currently, each feature_detect() (called on CPU add) hook for both cpufreq drivers duplicates cpu_has_aperfmperf in a per-cpu datastructure, and edits cpufreq_driver.getavg to point at get_measured_perf(). As all parts of this are vendor-neutral, drop the function pointer and duplicated boolean, and call get_measured_perf() directly. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu Slightly RFC. This does introduce an arch-specific call into a nominally arch-neutral driver, but struct cpufreq_policy already had x86-specifics in= it so this is apparently ok. A (less desirable) alternative would be to keep the function pointer, and patch it in the BSP path, not every AP based on BSP data. Either way, with patching moved out of feature_detect(), the main cpufreq_driver object can become __ro_after_init (in principle), and all ca= lls optimised with alternative_call(). --- xen/arch/x86/acpi/cpufreq/cpufreq.c | 8 +------- xen/arch/x86/acpi/cpufreq/powernow.c | 6 ------ xen/drivers/cpufreq/utility.c | 9 +++------ xen/include/acpi/cpufreq/cpufreq.h | 2 -- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c b/xen/arch/x86/acpi/cpufre= q/cpufreq.c index 2251c87f9e42..f26cd6649e7a 100644 --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c @@ -275,7 +275,7 @@ unsigned int get_measured_perf(unsigned int cpu, unsign= ed int flag) return 0; =20 policy =3D per_cpu(cpufreq_cpu_policy, cpu); - if (!policy || !policy->aperf_mperf) + if ( !policy || !cpu_has_aperfmperf ) return 0; =20 switch (flag) @@ -345,12 +345,6 @@ static void feature_detect(void *info) struct cpufreq_policy *policy =3D info; unsigned int eax; =20 - if ( cpu_has_aperfmperf ) - { - policy->aperf_mperf =3D 1; - cpufreq_driver.getavg =3D get_measured_perf; - } - eax =3D cpuid_eax(6); if (eax & 0x2) { policy->turbo =3D CPUFREQ_TURBO_ENABLED; diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufr= eq/powernow.c index 80095dfd14b4..82d7827e17c1 100644 --- a/xen/arch/x86/acpi/cpufreq/powernow.c +++ b/xen/arch/x86/acpi/cpufreq/powernow.c @@ -205,12 +205,6 @@ static void feature_detect(void *info) struct cpufreq_policy *policy =3D info; unsigned int edx; =20 - if ( cpu_has_aperfmperf ) - { - policy->aperf_mperf =3D 1; - cpufreq_driver.getavg =3D get_measured_perf; - } - edx =3D cpuid_edx(CPUID_FREQ_VOLT_CAPABILITIES); if ((edx & CPB_CAPABLE) =3D=3D CPB_CAPABLE) { policy->turbo =3D CPUFREQ_TURBO_ENABLED; diff --git a/xen/drivers/cpufreq/utility.c b/xen/drivers/cpufreq/utility.c index b93895d4dddc..9eb7ecedcd29 100644 --- a/xen/drivers/cpufreq/utility.c +++ b/xen/drivers/cpufreq/utility.c @@ -381,12 +381,9 @@ int cpufreq_driver_getavg(unsigned int cpu, unsigned i= nt flag) if (!cpu_online(cpu) || !(policy =3D per_cpu(cpufreq_cpu_policy, cpu))) return 0; =20 - if (cpufreq_driver.getavg) - { - freq_avg =3D cpufreq_driver.getavg(cpu, flag); - if (freq_avg > 0) - return freq_avg; - } + freq_avg =3D get_measured_perf(cpu, flag); + if ( freq_avg > 0 ) + return freq_avg; =20 return policy->cur; } diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/= cpufreq.h index e88b20bfed4f..4958d3f7d315 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -72,7 +72,6 @@ struct cpufreq_policy { s8 turbo; /* tristate flag: 0 for unsupported * -1 for disable, 1 for enabled * See CPUFREQ_TURBO_* below for defines */ - bool_t aperf_mperf; /* CPU has APERF/MPERF MSRs */ }; DECLARE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_policy); =20 @@ -162,7 +161,6 @@ struct cpufreq_driver { unsigned int target_freq, unsigned int relation); unsigned int (*get)(unsigned int cpu); - unsigned int (*getavg)(unsigned int cpu, unsigned int flag); int (*exit)(struct cpufreq_policy *policy); }; =20 --=20 2.11.0 From nobody Sun Apr 28 13:40:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1636741751; cv=none; d=zohomail.com; s=zohoarc; b=dyVrGB0seQOTYNTZaVFCHNngKG0EXfTiFY2ZqifUz2VYMdI6fVP1Vyz464tSUP5Vtugd+OwTH0dbgLucSdTQUQydO689JXZGTj+DBtnFQBkoenLt0mirJMZKrWi0tOvYqN63U6ySPI79H4IukoqEUAYYFV5mcVsBmAkCddmz7zw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636741751; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SyPVXWFTesbQfam1WIVs8KNHZDQ/p4u29rxFPbBDXr8=; b=dljhBMeMrGoJ1RXExbzhvHqZEm6xqI7oCRvmE+8DcpAwcWDMJdNwwoSF10YUiG+csZX/KPbMq9rWdo4Y3kfN4F8uHUYyKct2hyuOgGPAMu5CbQPNfeB2EaGL1CZMVir/Z6uw2dSSIX+pHUCD6kb+wo6RYjedZJqF1tOFnG7/iF8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636741751838922.0030599639551; Fri, 12 Nov 2021 10:29:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225359.389169 (Exim 4.92) (envelope-from ) id 1mlbI2-0001n1-Sb; Fri, 12 Nov 2021 18:28:42 +0000 Received: by outflank-mailman (output) from mailman id 225359.389169; Fri, 12 Nov 2021 18:28:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbI2-0001mu-PS; Fri, 12 Nov 2021 18:28:42 +0000 Received: by outflank-mailman (input) for mailman id 225359; Fri, 12 Nov 2021 18:28:41 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlbI1-0001mj-9I for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 18:28:41 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 5a013735-43e6-11ec-a9d2-d9f7a1cc8784; Fri, 12 Nov 2021 19:28:39 +0100 (CET) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 5a013735-43e6-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1636741719; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bGdAXjFWHFJW93FqAFwh110hexLa/qf+khlOa4jllWM=; b=VTOkft7mVBAQP3coZ4JuhlSqJzladCivlieJ9n1wVrfNPQo/McBsDHSw /OOY8JTVcYC5FWfHyDi9fyq/DbHnCHKjr99e/D4043mOrI7VCr4ZEpGNm CukLLi2UXls7+WU0lrPFieqbP+mYCJH22A1x5fUW2ytyBTyZivYGxGr1Q g=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: toTxyN/112DyqEDfWVehQ8zWjIV7Umo92ynfVz/OLMyJApcxvAY83rOpkltNsUy61k3vNINDLl taKt56BqTjEmkfKLpzoSDl6jJQPRqySw2jGIr5mcv6hWbFyhNzFTcyCQMApZS+0/okUuTxnq8g UHv26VH0P1CCvBbHlpM8tWVDDy2nzNHh8lgXzkpOcTrqnGQxT7bKt+ooFcAqlBCA9313oc20hr Zd9c//mZ9vBO2Eg5hUEZfy5Hra/DGIB/2cQT86ZDRMOR7oFloaXdS335nkZBxQjPxUJU9IPgWJ VUUIjqDbxvvrQDNaC9Z0wm+k X-SBRS: 5.1 X-MesageID: 57240371 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:KLgj/qLGBs77+0HYFE+RHJIlxSXFcZb7ZxGr2PjKsXjdYENS1zVWn TcWC2qOafvYZDSmL9F1YNvk9khUupHXzoJjGlBlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUZUideSc+EH140Es6wbZi6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2vlIFg7 sUSjKWLZixwIajRuv5eFDRHRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsFFgMg5IdatF4QYonx6lhnSDOo8QICFSKLPjTNd9Gpv3JwWRqmHD yYfQT1CbjrJOx1iAFQ4JLQakMP2t3ujUjIN/Tp5ooJoujOOnWSdyoPFL979atGMA8JPkS6wh EjL4mD4CREyL8GExHyO9XfErv/Cm2b3VZwfEJW89+V2mxuDy2oLEhoUWFCn5/6jhSaDt8l3c hJOvHB09O5rqRLtHoKVswCETGCsmBVNSvxATNQD0y6mk7XR/iSDRS8pUWsUADA5j/MeSTsv3 16PutrmAz1zrbGYIU6gGqeoQSCaYnZMczJbDcMQZU5cuoS4/tlv5v7aZo87SPbdszHjJd3nL 9lmRgAajq5bs8ME3r7TEbvv02P1/cihouLYC2zqsoOZAuFRONHNi2+AswGzARN8wGCxFATpU J8swZj20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Lvm8jeh0yaZdZI1cFh XM/XysLufe/21PwPcdKj3+ZUZx2ncAM6/y5PhwrUja+SscoL1LWlM2fTUWRw3rsgCARfVIXY v+mnTKXJS9CU8xPlWPuL89EiOND7n1ulAv7GMGgpzz6gOX2WZJgYepcWLd4Rrtit/3sTcS82 4s3CvZmPD0DCrCjOXeOrtZIRb3IRFBiba3LRwVsXrbrCmJb9KsJUZc9GJstJN5ombp7jODN8 i3vU0NU0gOn13bGNR+LejZob7a2BcRzqncyPCoNO1e02id8PdbzvflHL5ZnL6M68OFDzOJvS 6VXccu3HfkSGC/M/C4QbMehodU6Jgirnw+HIwGsfCM7I8x7XwXM99K9Jlnv+SACAzCZr8w7p 7H8hArXTYBaH1ZpDdrMaeLpxFS05CBPlOV3VkrOA99SZESzr9Q6d32v1qc6epheJw/Cyz2W0 xetLS0Z/eSd8ZUo9NTphLyfq9v7GeVJAUcHTXLQ6qy7NHeG8zP7k5NASuuBYRvUSHjwpPe5f exQwvzxbK8HkVJNv9YuGrpn1/tjtd7mprscxQV4BnTbKV+sD+o4cHWB2MBOsIxLx6NY5lTqC h7epIECNOXbIt7hHX4QOBEhP7aK2vwjkzXP6eg4fRfh7yht8bvbCUhfMnFgUsCGwGeZ5G/9/ dochQ== IronPort-HdrOrdr: A9a23:Mpn87qqcSOCV30egA0FC53waV5oleYIsimQD101hICG9E/b1qy nKpp8mPHDP5wr5NEtPpTnjAsm9qALnlKKdiLN5Vd3OYOCMghrKEGgN1/qG/xTQXwH46+5Bxe NBXsFFebnN5IFB/KTH3DU= X-IronPort-AV: E=Sophos;i="5.87,230,1631592000"; d="scan'208";a="57240371" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 3/3] x86/cpufreq: Drop opencoded CPUID handling from powernow Date: Fri, 12 Nov 2021 18:28:18 +0000 Message-ID: <20211112182818.30223-4-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20211112182818.30223-1-andrew.cooper3@citrix.com> References: <20211112182818.30223-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1636741752366100002 Xen already collects CPUID.0x80000007.edx by default, meaning that we can refer to per-cpu data directly. This also avoids the need IPI the onlining CPU to identify whether Core Performance Boost is available. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu I don't think the printk() is very helpful. I could be talked into retaini= ng it as a prink_once(), but (irrespective of cpufreq_verbose), it doesn't want repeating on each CPU because it will either be all or none of them. --- tools/misc/xen-cpuid.c | 3 ++- xen/arch/x86/acpi/cpufreq/powernow.c | 26 ++++---------------------- xen/include/asm-x86/cpufeature.h | 1 + xen/include/public/arch-x86/cpufeatureset.h | 2 ++ 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c index 37989e4a12f0..9b59fec26371 100644 --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -139,7 +139,8 @@ static const char *const str_7c0[32] =3D =20 static const char *const str_e7d[32] =3D { - [ 8] =3D "itsc", + /* 6 */ [ 7] =3D "hw-pstate", + [ 8] =3D "itsc", [ 9] =3D "cpb", [10] =3D "efro", }; =20 diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufr= eq/powernow.c index 82d7827e17c1..c39af2e23d1a 100644 --- a/xen/arch/x86/acpi/cpufreq/powernow.c +++ b/xen/arch/x86/acpi/cpufreq/powernow.c @@ -32,9 +32,6 @@ #include #include =20 -#define CPUID_FREQ_VOLT_CAPABILITIES 0x80000007 -#define CPB_CAPABLE 0x00000200 -#define USE_HW_PSTATE 0x00000080 #define HW_PSTATE_MASK 0x00000007 #define HW_PSTATE_VALID_MASK 0x80000000 #define HW_PSTATE_MAX_MASK 0x000000f0 @@ -200,21 +197,6 @@ static int powernow_cpufreq_verify(struct cpufreq_poli= cy *policy) return cpufreq_frequency_table_verify(policy, data->freq_table); } =20 -static void feature_detect(void *info) -{ - struct cpufreq_policy *policy =3D info; - unsigned int edx; - - edx =3D cpuid_edx(CPUID_FREQ_VOLT_CAPABILITIES); - if ((edx & CPB_CAPABLE) =3D=3D CPB_CAPABLE) { - policy->turbo =3D CPUFREQ_TURBO_ENABLED; - if (cpufreq_verbose) - printk(XENLOG_INFO - "CPU%u: Core Boost/Turbo detected and enabled\n", - smp_processor_id()); - } -} - static int powernow_cpufreq_cpu_init(struct cpufreq_policy *policy) { unsigned int i; @@ -300,9 +282,9 @@ static int powernow_cpufreq_cpu_init(struct cpufreq_pol= icy *policy) if (result) goto err_freqfree; =20 - if (c->cpuid_level >=3D 6) - on_selected_cpus(cpumask_of(cpu), feature_detect, policy, 1); - =20 + if ( cpu_has(c, X86_FEATURE_CPB) ) + policy->turbo =3D CPUFREQ_TURBO_ENABLED; + /* * the first call to ->target() should result in us actually * writing something to the appropriate registers. @@ -348,7 +330,7 @@ unsigned int __init powernow_register_driver(void) if ( !(boot_cpu_data.x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))= ) return -ENODEV; =20 - if ( !(cpuid_edx(CPUID_FREQ_VOLT_CAPABILITIES) & USE_HW_PSTATE) ) + if ( !cpu_has_hw_pstate ) return -ENODEV; =20 return cpufreq_register_driver(&powernow_cpufreq_driver); diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeat= ure.h index ba0fe7c0aa5f..4754940e23f3 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -122,6 +122,7 @@ #define cpu_has_enqcmd boot_cpu_has(X86_FEATURE_ENQCMD) =20 /* CPUID level 0x80000007.edx */ +#define cpu_has_hw_pstate boot_cpu_has(X86_FEATURE_HW_PSTATE) #define cpu_has_itsc boot_cpu_has(X86_FEATURE_ITSC) =20 /* CPUID level 0x80000008.ebx */ diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/publ= ic/arch-x86/cpufeatureset.h index f11d5439aef7..d6260c801ab5 100644 --- a/xen/include/public/arch-x86/cpufeatureset.h +++ b/xen/include/public/arch-x86/cpufeatureset.h @@ -247,7 +247,9 @@ XEN_CPUFEATURE(MOVDIR64B, 6*32+28) /*a MOVDIR64B i= nstruction */ XEN_CPUFEATURE(ENQCMD, 6*32+29) /* ENQCMD{,S} instructions */ =20 /* AMD-defined CPU features, CPUID level 0x80000007.edx, word 7 */ +XEN_CPUFEATURE(HW_PSTATE, 7*32+ 7) /* Hardware Pstates */ XEN_CPUFEATURE(ITSC, 7*32+ 8) /*a Invariant TSC */ +XEN_CPUFEATURE(CPB, 7*32+ 9) /* Core Performance Boost (Turbo)= */ XEN_CPUFEATURE(EFRO, 7*32+10) /* APERF/MPERF Read Only interfac= e */ =20 /* AMD-defined CPU features, CPUID level 0x80000008.ebx, word 8 */ --=20 2.11.0