From nobody Fri Sep 25 20:02:45 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010019.outbound.protection.outlook.com [40.93.198.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4582B33D4E4; Wed, 9 Sep 2026 03:36:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925015; cv=fail; b=C3h5eujgX7iP/YcokE9vyaeaMjw6ZNI/P32Nqk5rrOcfOKJGaSDnmHE4pyrJp2W4cHUMN93/SrKXJS1v+C9vSE7WCjkN4oD3BnyDeyNiBjE5iIor8bx93+WFu3axwdCtCRVTIWrGLBS/LuGb3+n96In2ziP6hpocVTg8s/n2I/s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925015; c=relaxed/simple; bh=+3gT9NLz8z6QOVgg1j0rCZVzsTuvTPSSR6dZjAn5ehc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dBKzydIUJabgBRAqWXgz8FVoMRJOan1lAt1KVDw98bJMKpJEAE00kkNyMpiYUjmEeMHYvEybFjq2lg/xSl8b+1iTYPeExizfKdrWV5WAuAVhiQtqjfWPJcSh6IG+hVTsByQPlHDeisYFh8Og7YqW9JdJ4+8yljuvI8/FpuJI9dE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=FgjunHkB; arc=fail smtp.client-ip=40.93.198.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="FgjunHkB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AHb7eNa0T634eYfHtTKx7nKCchgB4LhvF7fRD2q26cuEz+dmO0i4XvIqMf2n+ZevKgGS3motyW5qbAR6rBqeSKPp57avrsM0ByUywqbFFiTm/jwzEd7nberqGM0hcru8b+lMqzqT5gvZggAyLJwq4LBUUqxGZlMyQKoxSJpFvzGfxTo96Y2u58EHlg5O1vowjcHKHi8Ir9llwyUAwvKByrX8lK5HYbgvgnYJOlCDpQGKG6XABx/55g4VLE+GXMAa/KsfgAMRYNGevcSxqa06YHoSDUl8wHGpc4mQAOk1IcDcuzWFvfsLzuJ+cRg1aaP34gviOYU8YPRY7ffzHisBbw== 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=wPC5NJlIzLMS78hnwz2lXJeC9gBlA7bh4LILz9JKdKY=; b=JfbWWn3gx/Dj5hXYTgvSK2slZgG/T+fJIDWeHpOOJdlnRE6txyV/jVjOzIrDfLf7d3eORI1nlWqI6G32hGhcoeWIoqp4zpI/ngZfrgTkMWadmoyVEue9kTR9Fh8CJKhTZfTUINGvS0vbEZCIgxRNYcSYsp+Qw2UfmGmPa6/h27hYRpY7AxGIvWrzvNFDhCWYfpCm7q3xN3M/urlh1kTJfFq/7O4pS9SqdYnuBMMPU8LBdlf+vIRgEfgutQO19xdZvwUVcOOOKxgPCwZepP8/lGG9Pxgs2IigLd4j9iLGfevdA+oh/LJW4iyNzW766x1TWBQ4MkBBHuJNPHBbOAqy8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wPC5NJlIzLMS78hnwz2lXJeC9gBlA7bh4LILz9JKdKY=; b=FgjunHkBtZFAdo/wLB5ZkW1l0G4jGLKpB91+2MVrwtDp1zhxAB4N5gT2ccNdnPwzO7Ejvm2y778r3zod82ZW1Y/bc0orWo0CjiFtsCX48K6fyvhbaRWlCCX58NQ8wNcVnmBOSzhA6nXOUWvRmfUbux0QKnyLJ6qttEfBqlV1tl4= Received: from PH8P223CA0012.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:2db::17) by CY5PR12MB6276.namprd12.prod.outlook.com (2603:10b6:930:f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.14; Wed, 9 Sep 2026 03:36:47 +0000 Received: from SN1PEPF000397B5.namprd05.prod.outlook.com (2603:10b6:510:2db:cafe::f) by PH8P223CA0012.outlook.office365.com (2603:10b6:510:2db::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.7 via Frontend Transport; Wed, 9 Sep 2026 03:36:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by SN1PEPF000397B5.mail.protection.outlook.com (10.167.248.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Wed, 9 Sep 2026 03:36:46 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:44 -0500 Received: from aus0006770c4n-lx01.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:43 -0500 From: Mario Limonciello To: K Prateek Nayak CC: Perry Yuan , "open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "open list:CPU FREQUENCY SCALING FRAMEWORK" , "Mario Limonciello (AMD)" Subject: [PATCH v3 1/3] cpufreq/amd-pstate: Add per SoC and per core type EPP tuning values Date: Tue, 8 Sep 2026 22:36:21 -0500 Message-ID: <20260909033623.454449-2-mario.limonciello@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909033623.454449-1-mario.limonciello@amd.com> References: <20260909033623.454449-1-mario.limonciello@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B5:EE_|CY5PR12MB6276:EE_ X-MS-Office365-Filtering-Correlation-Id: b5a8a64f-d570-4653-c986-08df0e239345 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700016|82310400026|23010399003|376014|10067099003|3023799007|22082099003|18002099003|56012099006|11063799006|6133799003; X-Microsoft-Antispam-Message-Info: 7jz5gmjGRRpqk73BSJW6i7s+6KG1rSKKLo8dWRiWIwKgfCybg9S7fstkuDSk+TXrGzHvy/PgC+FACdekgx+e3i8L15graVV4xUw0BrYPj9achsxk0KDdX+Rx0cCHBpR8mCmx2z2qM1a87UvVvSLygpSibKwYUwxFrJw13VCZYlML7NMdS7JmlNlPR5EmEU4dPJm+a4wYT4HNt5z3d9LN53SVA3Ka5ZnT8982rbIpJv6LBgY+Np5hopCT9g5B+WwugwtaPZg8Vl+8+RxeogBhcdWpqGCSKFVKpbZ610ES5lgtolTMFcrGBc9MpEEfUvTmlLhpBWc9fn6cHVEuJt2enDy2WxOvME/4G82CaX7gmYKLBK+fQe724DkMdh5vzyFGQmpGK2Ra9LanOdDxnhWLr5cGCQEUoZLma81MmMhl7jmeYWqIMUpha3R2pwDIR1suRlfow4wM6QtTVFAIZeu7PmkuRwfbnOntRpmv7r1lQSMrLVc7Mws3/NzdDQ+Qq7X45LJ8J1yrYxdtqt6NrlniTjWUhFQNIrXOG/e4v7b0GfK/54gaQT5+mx579v3dcVm/oCdYsPLI7JEgfUSLNQjluz49Sq14J657m4NOjOWwyFU+yMA9nFznKIszXrvyad4vkdWFfZcFGL9Sy3EdsUdF8EQ6kEjshRhv19I/J0XsdzIKqpWMH8kMUKzwUXUBPo/VpCivw5TfqLYq4WkvSHwsuQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700016)(82310400026)(23010399003)(376014)(10067099003)(3023799007)(22082099003)(18002099003)(56012099006)(11063799006)(6133799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8S3oaDUUtq7yHrrKgmxniNeKwOK58dEemrHcXx3mU685DmHJ0g6LCLmdYrZCS30HGIlQ3ltQXGGEujz43E10Yt7KwTn1U2w0pvoDrBE2sCPrmtg8He4JVyARh29uiAtox90yLvYz5C1DgNvKcjENmhIH5cumX8af/mp2bNWICiQqQNkuhima1Lb41kX9LcYL/Cf/nRaE0yr4vKu9SW//60kY6/3kxkPXm40jEP9b9ldyj5iHo3VM+fmLM5kqoOkCuwDzvgXIlg90kIDIKjhkRfcQuuPRdygODCNeu1TKKx6Ha3n7khdci5ihaDCtR7rEJJ+7wzHQjza+PPmOiUVNnmyuZvGF0o2VPTzWpy7oBpkEbKB4RYp0FtygNuiYPk1tzDX24yc3R9lB2l7hfjDRxtZzWoIbaM2ki0IL4UFJMgkAqPT1lfdVTb5hQLwHadtu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 03:36:46.6745 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b5a8a64f-d570-4653-c986-08df0e239345 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B5.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6276 Content-Type: text/plain; charset="utf-8" From: "Mario Limonciello (AMD)" On newer SoCs the behavior of the platform has changed, and using the same EPP values for everything will yield worse results than expected. Add a x86_cpu_id match table that allows setting policies on a per-SoC/per-core type basis. If a SoC is missing, fallback to legacy values that are used. Changes also: - Change epp_values array and amd_pstate_cpu_epp_values() from unsigned int to u8 - Add static_assert to ensure epp_values has rows for all CPU types - Fix show_energy_performance_preference() loop to exclude uninitialized EPP_INDEX_CUSTOM and EPP_INDEX_DYNAMIC slots - Add debug print statements - Remove amd_pstate_get_epp_from_platform_profile and inline the logic - Fix cleanup path in amd_pstate_set_dynamic_epp - Change show_energy_performance_preference to use for loop with preference tracking - Add debug prints in amd_pstate_init_epp_values Behavioral change: show_energy_performance_preference() now returns a numeric EPP value via sysfs when the cached EPP does not match any named preference, instead of returning -EINVAL as before. This provides visibility into custom EPP values set by hardware or BIOS. No new platforms are added in this commit. Signed-off-by: Mario Limonciello (AMD) Reviewed-by: K Prateek Nayak Tested-by: K Prateek Nayak --- v3: * Use switch/case * Cache cpu type * Use ... for legacy EPP initializer --- drivers/cpufreq/amd-pstate.c | 183 ++++++++++++++++++++++++++++------- drivers/cpufreq/amd-pstate.h | 2 + 2 files changed, 148 insertions(+), 37 deletions(-) diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 9325c657d2d49..60a8b8f220437 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -55,10 +55,10 @@ #define AMD_PSTATE_TRANSITION_DELAY 1000 #define AMD_PSTATE_FAST_CPPC_TRANSITION_DELAY 600 =20 -#define AMD_CPPC_EPP_PERFORMANCE 0x00 -#define AMD_CPPC_EPP_BALANCE_PERFORMANCE 0x80 -#define AMD_CPPC_EPP_BALANCE_POWERSAVE 0xBF -#define AMD_CPPC_EPP_POWERSAVE 0xFF +#define AMD_CPPC_EPP_LEGACY_PERFORMANCE 0x00 +#define AMD_CPPC_EPP_LEGACY_BALANCE_PERFORMANCE 0x80 +#define AMD_CPPC_EPP_LEGACY_BALANCE_POWERSAVE 0xBF +#define AMD_CPPC_EPP_LEGACY_POWERSAVE 0xFF =20 static const char * const amd_pstate_mode_string[] =3D { [AMD_PSTATE_UNDEFINED] =3D "undefined", @@ -129,14 +129,86 @@ static const char * const energy_perf_strings[] =3D { }; static_assert(ARRAY_SIZE(energy_perf_strings) =3D=3D EPP_INDEX_MAX); =20 -static unsigned int epp_values[] =3D { - [EPP_INDEX_DEFAULT] =3D 0, - [EPP_INDEX_PERFORMANCE] =3D AMD_CPPC_EPP_PERFORMANCE, - [EPP_INDEX_BALANCE_PERFORMANCE] =3D AMD_CPPC_EPP_BALANCE_PERFORMANCE, - [EPP_INDEX_BALANCE_POWERSAVE] =3D AMD_CPPC_EPP_BALANCE_POWERSAVE, - [EPP_INDEX_POWERSAVE] =3D AMD_CPPC_EPP_POWERSAVE, +/* + * The numeric EPP value programmed for each named preference. First dimen= sion + * is CPU type (TOPO_CPU_TYPE_ANY for non-hybrid, TOPO_CPU_TYPE_PERFORMANC= E/ + * EFFICIENCY/LOW_POWER for hybrid). The initializer holds the legacy valu= es + * used as the fallback on any platform not listed in amd_pstate_epp_soc_i= ds[]; + * amd_pstate_init_epp_values() overwrites slots at boot when the running = SoC + * has a per-SoC (and potentially per-CPU-type) override. + */ +static u8 epp_values[][EPP_INDEX_MAX] =3D { + /* + * Initialize all CPU types to legacy defaults. + * amd_pstate_init_epp_values() will fix these up + * based on the platform during boot. + */ + [TOPO_CPU_TYPE_ANY ... TOPO_CPU_TYPE_LOW_POWER] =3D { + [EPP_INDEX_DEFAULT] =3D 0, + [EPP_INDEX_PERFORMANCE] =3D AMD_CPPC_EPP_LEGACY_PERFORMANCE, + [EPP_INDEX_BALANCE_PERFORMANCE] =3D AMD_CPPC_EPP_LEGACY_BALANCE_PERFORMA= NCE, + [EPP_INDEX_BALANCE_POWERSAVE] =3D AMD_CPPC_EPP_LEGACY_BALANCE_POWERSAVE, + [EPP_INDEX_POWERSAVE] =3D AMD_CPPC_EPP_LEGACY_POWERSAVE, + }, +}; +static_assert(ARRAY_SIZE(epp_values) =3D=3D TOPO_CPU_TYPE_LOW_POWER + 1, + "epp_values must have entries for all CPU types up to TOPO_CPU_TYPE= _LOW_POWER"); + +/* + * Get the EPP value row for a given CPU, accounting for hybrid CPU types. + * Non-hybrid systems use TOPO_CPU_TYPE_ANY; hybrid systems use the CPU's + * actual type (PERFORMANCE/EFFICIENCY/LOW_POWER). + */ +static inline u8 *amd_pstate_cpu_epp_values(enum x86_topology_cpu_type cpu= _type) +{ + switch (cpu_type) { + case TOPO_CPU_TYPE_PERFORMANCE: + case TOPO_CPU_TYPE_EFFICIENCY: + case TOPO_CPU_TYPE_LOW_POWER: + return epp_values[cpu_type]; + default: + return epp_values[TOPO_CPU_TYPE_ANY]; + } +} + +/** + * struct amd_pstate_epp_values - EPP values for the four named preferences + * @performance: value for the "performance" preference + * @balance_performance: value for the "balance_performance" preference + * @balance_power: value for the "balance_power" preference + * @power: value for the "power" preference + */ +struct amd_pstate_epp_values { + u8 performance; + u8 balance_performance; + u8 balance_power; + u8 power; +}; + +/** + * struct amd_pstate_epp_soc - per-CPU-type EPP overrides for hybrid syste= ms + * @performance_core: values for TOPO_CPU_TYPE_PERFORMANCE cores + * @efficiency_core: values for TOPO_CPU_TYPE_EFFICIENCY cores + * @low_power_core: values for TOPO_CPU_TYPE_LOW_POWER cores + * + * Referenced from amd_pstate_epp_soc_ids[] to give a hybrid platform its = own + * numeric EPP values for the four named preferences, with distinct values= per + * CPU type. Non-hybrid systems are not listed in the table and always use= the + * legacy defaults. + */ +struct amd_pstate_epp_soc { + struct amd_pstate_epp_values performance_core; + struct amd_pstate_epp_values efficiency_core; + struct amd_pstate_epp_values low_power_core; +}; + +/* + * Per-CPU-type EPP overrides for hybrid systems. Only hybrid SoCs should = be + * listed here; non-hybrid systems always use the legacy defaults. + */ +static const struct x86_cpu_id amd_pstate_epp_soc_ids[] __initconst =3D { + {} }; -static_assert(ARRAY_SIZE(epp_values) =3D=3D EPP_INDEX_MAX - 2); =20 typedef int (*cppc_mode_transition_fn)(int); =20 @@ -1077,6 +1149,7 @@ static int amd_pstate_cpu_init(struct cpufreq_policy = *policy) return -ENOMEM; =20 cpudata->cpu =3D policy->cpu; + cpudata->cpu_type =3D cpu_data(policy->cpu).topo.cpu_type; =20 ret =3D amd_pstate_init_perf(cpudata); if (ret) @@ -1204,13 +1277,16 @@ static int amd_pstate_power_supply_notifier(struct = notifier_block *nb, static int amd_pstate_get_epp_from_platform_profile(struct cpufreq_policy = *policy, enum platform_profile_option profile) { + struct amd_cpudata *cpudata =3D policy->driver_data; + u8 *values =3D amd_pstate_cpu_epp_values(cpudata->cpu_type); + switch (profile) { case PLATFORM_PROFILE_PERFORMANCE: - return AMD_CPPC_EPP_PERFORMANCE; + return values[EPP_INDEX_PERFORMANCE]; case PLATFORM_PROFILE_BALANCED: return amd_pstate_get_balanced_epp(policy); case PLATFORM_PROFILE_LOW_POWER: - return AMD_CPPC_EPP_POWERSAVE; + return values[EPP_INDEX_POWERSAVE]; default: break; } @@ -1420,6 +1496,7 @@ ssize_t store_energy_performance_preference(struct cp= ufreq_policy *policy, const char *buf, size_t count) { struct amd_cpudata *cpudata =3D policy->driver_data; + u8 *values =3D amd_pstate_cpu_epp_values(cpudata->cpu_type); ssize_t ret; bool raw_epp =3D false; u8 epp; @@ -1454,12 +1531,13 @@ ssize_t store_energy_performance_preference(struct = cpufreq_policy *policy, } =20 if (ret) - epp =3D epp_values[ret]; + epp =3D values[ret]; else epp =3D cpudata->epp_default_dc; } =20 - if (epp > 0 && cpudata->policy =3D=3D CPUFREQ_POLICY_PERFORMANCE) { + if (epp > 0 && epp !=3D values[EPP_INDEX_PERFORMANCE] && + cpudata->policy =3D=3D CPUFREQ_POLICY_PERFORMANCE) { pr_debug("EPP cannot be set under performance policy\n"); return -EBUSY; } @@ -1484,34 +1562,31 @@ EXPORT_SYMBOL_FOR_PSTATE_UT(store_energy_performanc= e_preference); ssize_t show_energy_performance_preference(struct cpufreq_policy *policy, = char *buf) { struct amd_cpudata *cpudata =3D policy->driver_data; - u8 preference, epp; + u8 *values =3D amd_pstate_cpu_epp_values(policy->cpu); + u8 epp; + int i; =20 epp =3D FIELD_GET(AMD_CPPC_EPP_PERF_MASK, cpudata->cppc_req_cached); =20 if (!cpudata->dynamic_epp && cpudata->raw_epp) return sysfs_emit(buf, "%u\n", epp); =20 - switch (epp) { - case AMD_CPPC_EPP_PERFORMANCE: - preference =3D EPP_INDEX_PERFORMANCE; - break; - case AMD_CPPC_EPP_BALANCE_PERFORMANCE: - preference =3D EPP_INDEX_BALANCE_PERFORMANCE; - break; - case AMD_CPPC_EPP_BALANCE_POWERSAVE: - preference =3D EPP_INDEX_BALANCE_POWERSAVE; - break; - case AMD_CPPC_EPP_POWERSAVE: - preference =3D EPP_INDEX_POWERSAVE; - break; - default: - return -EINVAL; - } + /* + * Map the cached EPP value back to a named preference. Skip the + * "default" slot (index 0) so an EPP of 0 reports as "performance". + * Stop at POWERSAVE; CUSTOM and DYNAMIC are not initialized in epp_value= s. + */ + for (i =3D EPP_INDEX_PERFORMANCE; i <=3D EPP_INDEX_POWERSAVE; i++) { + const char *name =3D energy_perf_strings[i]; =20 - if (cpudata->dynamic_epp) - return sysfs_emit(buf, "dynamic(profile:%s)\n", energy_perf_strings[pref= erence]); + if (epp =3D=3D values[i]) { + if (cpudata->dynamic_epp) + return sysfs_emit(buf, "dynamic(profile:%s)\n", name); + return sysfs_emit(buf, "%s\n", name); + } + } =20 - return sysfs_emit(buf, "%s\n", energy_perf_strings[preference]); + return sysfs_emit(buf, "%u\n", epp); } EXPORT_SYMBOL_FOR_PSTATE_UT(show_energy_performance_preference); =20 @@ -1903,6 +1978,7 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_pol= icy *policy) return -ENOMEM; =20 cpudata->cpu =3D policy->cpu; + cpudata->cpu_type =3D cpu_data(policy->cpu).topo.cpu_type; =20 ret =3D amd_pstate_init_perf(cpudata); if (ret) @@ -1953,9 +2029,11 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_po= licy *policy) cpudata->epp_default_ac =3D cpudata->epp_default_dc =3D default_epp; cpudata->current_profile =3D PLATFORM_PROFILE_PERFORMANCE; } else { + u8 *values =3D amd_pstate_cpu_epp_values(cpudata->cpu_type); + policy->policy =3D CPUFREQ_POLICY_POWERSAVE; - cpudata->epp_default_ac =3D AMD_CPPC_EPP_PERFORMANCE; - cpudata->epp_default_dc =3D AMD_CPPC_EPP_BALANCE_PERFORMANCE; + cpudata->epp_default_ac =3D values[EPP_INDEX_PERFORMANCE]; + cpudata->epp_default_dc =3D values[EPP_INDEX_BALANCE_PERFORMANCE]; cpudata->current_profile =3D PLATFORM_PROFILE_BALANCED; } =20 @@ -2254,6 +2332,34 @@ static bool amd_cppc_supported(void) return true; } =20 +/* + * Resolve the numeric EPP values for hybrid systems. Only hybrid SoCs are= listed + * in amd_pstate_epp_soc_ids[]; non-hybrid systems always use the legacy d= efaults. + */ +static inline void __init amd_pstate_set_epp_values(enum x86_topology_cpu_= type type, + const struct amd_pstate_epp_values *core) +{ + epp_values[type][EPP_INDEX_PERFORMANCE] =3D core->performance; + epp_values[type][EPP_INDEX_BALANCE_PERFORMANCE] =3D core->balance_perform= ance; + epp_values[type][EPP_INDEX_BALANCE_POWERSAVE] =3D core->balance_power; + epp_values[type][EPP_INDEX_POWERSAVE] =3D core->power; +} + +static void __init amd_pstate_init_epp_values(void) +{ + const struct x86_cpu_id *id =3D x86_match_cpu(amd_pstate_epp_soc_ids); + const struct amd_pstate_epp_soc *soc; + + if (!id || !id->driver_data) + return; + + soc =3D (const struct amd_pstate_epp_soc *)id->driver_data; + + amd_pstate_set_epp_values(TOPO_CPU_TYPE_PERFORMANCE, &soc->performance_co= re); + amd_pstate_set_epp_values(TOPO_CPU_TYPE_EFFICIENCY, &soc->efficiency_core= ); + amd_pstate_set_epp_values(TOPO_CPU_TYPE_LOW_POWER, &soc->low_power_core); +} + static int __init amd_pstate_init(void) { struct device *dev_root; @@ -2281,6 +2387,9 @@ static int __init amd_pstate_init(void) /* check if this machine need CPPC quirks */ dmi_check_system(amd_pstate_quirks_table); =20 + /* resolve per-SoC EPP values for the named preferences */ + amd_pstate_init_epp_values(); + /* * determine the driver mode from the command line or kernel config. * If no command line input is provided, cppc_state will be AMD_PSTATE_UND= EFINED. diff --git a/drivers/cpufreq/amd-pstate.h b/drivers/cpufreq/amd-pstate.h index 9f5a81976eae0..c9a1dfd3d6752 100644 --- a/drivers/cpufreq/amd-pstate.h +++ b/drivers/cpufreq/amd-pstate.h @@ -146,6 +146,8 @@ struct amd_cpudata { enum platform_profile_option current_profile; struct device *ppdev; char *profile_name; + + enum x86_topology_cpu_type cpu_type; }; =20 /* --=20 2.43.0 From nobody Fri Sep 25 20:02:45 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011045.outbound.protection.outlook.com [52.101.62.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D99EE353A9D; Wed, 9 Sep 2026 03:36:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925015; cv=fail; b=HjRhEjLtC1pzTbm5WZV5BYra6/I7yxCGSqyq9yqibjpPd75IDxSt0NJp2r5vWooDv/HreS8YwIF+pDznG1Krund94ScobBWdEWn0/uMMLPwcmmj8s9c14o8R1YD1kOAFTbgZX1aWHfSMMQ34/tbBjldwEqZKd5PiobtZByzKtFE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925015; c=relaxed/simple; bh=0Jq3I2vpviIAmOEhdfeY2WStORDHauPfur4qeP638tw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pBcnjsJe52whYbkJBzcAFQE2eXUpYmxRTCLgqwRhrmSeljslWQbPf4eYFznXuZQTlDuvt+3fvyU2kya8qIYHoEiBl7JPx2uwMx41jQcblg6e/JF9+G8dtPZBjJ5R648XoiFhK2mBv6nRuOd+pYdJzEVcsx83xeg6ZPpHsVn0374= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=QQ/3RQns; arc=fail smtp.client-ip=52.101.62.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="QQ/3RQns" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ja+whklJyHmrkCm3EwHGbV2/3bXNv/as/l/KRSzM9UlAkibobyH+AOWS33OFJO/B5nfiQSWLOQK0boMTZXuPATMA4qGyv8rMEMw57z0u2rLklZAEX3cd7nKb7T9nA5ZIOI2WW+9qkOUD741mu2GVQptlGgmuFYC3M8DJQ/VjjgDMhy2tj3E1NPfmhwZfgtO2MAb6lgAviS+xY2RBCgry0BRyAZttQ3r8A2VuZUjncBdkpfqUkNRuF6/KFrXLHIW/zzLYbAdpDiNkEJQk9KW3BObRn5YGNVMypH/EwMa2rjvOSrTj38CRFYykW9jhZ5TZ6N9irkzf8FsKBDhaUM/DsA== 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=4ZA9cRxGOmLoMpF0tyT+P23+BRs6dwIXb1O1/Tn4hJ8=; b=uYvzsKBvMB9YdTSvYDgXggWarposVlFsGpj9JPgJucYxeeBaK6mBaFif7qK8ADYFIy7d+fY/ApPcAqq6WV8LHtZQmB43twUylnV5Qs1N9iZ3eHn3h3x4ywhDZpOrLAS9gsUjFLv0HwR185+Vg1GY55FIX+InKpNYlDDFzjtEpjY69QDQhyvGWvptI6DEpF/3A3FcMrgN6NmnLZYaJWEXeWvSe6PaiLA4uxITYu8LdyfoxwCEaqOR2SwDJBFhvxl74BELGQ46BbtAdydb8szK5KsYT4vMzdOY0WqwpHo/4RxULsSdrS11QQcZTisUy3ecVeDAisZalOWVQZ9THnjQ7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ZA9cRxGOmLoMpF0tyT+P23+BRs6dwIXb1O1/Tn4hJ8=; b=QQ/3RQnsFPnnkeYy4JFVD/KzOntMqs+EUCwRpsjdtXVA3nKyHSrmfaDtCcFttGQ81NqzD7gpEjAKuOC1x8I0HAUCR0OYAz3L6v6I0+9Uj8YohndjMQqKPbIFl1RrqxRwiZvW+GB77N7XWIWIgTbNPR9DV1PwLE2yxH4daUa7kjE= Received: from PH8P223CA0026.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:2db::16) by IA1PR12MB8286.namprd12.prod.outlook.com (2603:10b6:208:3f8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Wed, 9 Sep 2026 03:36:48 +0000 Received: from SN1PEPF000397B5.namprd05.prod.outlook.com (2603:10b6:510:2db:cafe::a7) by PH8P223CA0026.outlook.office365.com (2603:10b6:510:2db::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.7 via Frontend Transport; Wed, 9 Sep 2026 03:36:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by SN1PEPF000397B5.mail.protection.outlook.com (10.167.248.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Wed, 9 Sep 2026 03:36:47 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:44 -0500 Received: from aus0006770c4n-lx01.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:44 -0500 From: Mario Limonciello To: K Prateek Nayak CC: Perry Yuan , "open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "open list:CPU FREQUENCY SCALING FRAMEWORK" , "Mario Limonciello (AMD)" Subject: [PATCH v3 2/3] cpufreq/amd-pstate: Add EPP tunings for Zen6 client platforms Date: Tue, 8 Sep 2026 22:36:22 -0500 Message-ID: <20260909033623.454449-3-mario.limonciello@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909033623.454449-1-mario.limonciello@amd.com> References: <20260909033623.454449-1-mario.limonciello@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B5:EE_|IA1PR12MB8286:EE_ X-MS-Office365-Filtering-Correlation-Id: 6041ca3c-0673-4aaa-0066-08df0e2393c9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|23010399003|36860700016|22082099003|18002099003|11063799006|56012099006|10067099003|3023799007; X-Microsoft-Antispam-Message-Info: IYkUOhPIUjfMciykxCnT4c5fW+3jbMhk8MkwY/aAZJ9P94FrlEYBrRmcHJr4fiNCYWwmo1LsnfPQp9gTV2eO9MO08ItlLTa6eXrZQg1XI4SQ1pQ0SC5sD9mWf+ENkIv6KR5X0fbfKrwu+UaR82bP7a7N6CJmVhFeEc7DjX7A/JVEL4lnYK7YWw3CEa2KvZFdgV3hD0I8e3WsKJfCVLh2xzJCzV+ertTTLSOSrbFI0X4rw0UzTytoKP4u4IomzHY3N1NR4rfWH/wZ4Akbus3azzOqaNwIv6QUJHFsMq73lIcmeCZPCT8KoIcv9gJE1clfr82FS6anoagXsNFl6c+Okdb2PTX/K9aegU6kvCGXfCXoNyqSkeP4/tJDqMp9GPk4IiA0U8vYS6lkHtHWy4USa9M8DUenOf0KNzHmuNGz4cZrr/lQmEhq/PwtnPbN3DMsLT9ZjUDQsRY/LSosK8Xkq5tXjyfHrzysfAEvELpetBJKxvvApRJcmDTNqy8rSoWby4f2iCa5WpSlVheUhHstkLo0zk9LdGj6h5puEFlyfo1UYyfS211iQbg91DZIvF2NiTW1ypBkcR2cvMK3PVcTPQPN4PPfx57O59A4LLBaao83rhSAdVERTywyeMvYwCPy/pVSVYbBxIYfv7e6jpWqJOWlFSuSy9uLTsET57v95ouyxRLV070OmQjV5vb+jdC7REhjapyI6woU6pjvmXntBw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(23010399003)(36860700016)(22082099003)(18002099003)(11063799006)(56012099006)(10067099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kQEv0Iv/Iq1/4cGktk1ht32eO4fWwy83h2zGgic0evoBS8aWnY5FAseLy6cOJ+NjiX0uIdQuYUULAq67B3Q6EAEh4RRSq+8Ty7enMFMF8s/7Q0dr1fqKsHQCochVodXtgoM3H+thoZTRUObjC8zF59n01vxJNh7mnQ2k9ikfhU0TiLKDegBdiSbrbqn0KjmQbnMTDGVDtwN4L3lMbQig1HL8EqgK8hHnfQmeD3oe2E5QOqKgI7agoEys3Gcq9gyyqcfrtDDFO5wfSCrnXf1nHHvcqz9GOd/gl/csWZ+2Pxq3tq70eBY7eiU52ybC9qEwvr4qElY9UMZ+OjSMs9Y2NkrFIUxMopS1bnJjfUxfTZ+nfCWgfHs74xGz8byGtgAI1wN9K0/l48k8BX3nIaPrP6VGyAn0bzkmxH2+A+oE8CP2dr3cl5vW1dQgoi1H3nzW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 03:36:47.5355 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6041ca3c-0673-4aaa-0066-08df0e2393c9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B5.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8286 Content-Type: text/plain; charset="utf-8" From: "Mario Limonciello (AMD)" Zen6 client platforms perform better with individual tunings for different core types. Add initial EPP tuning values for those platforms. Signed-off-by: Mario Limonciello (AMD) Reviewed-by: K Prateek Nayak Tested-by: K Prateek Nayak --- drivers/cpufreq/amd-pstate.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 60a8b8f220437..380294bb56cd7 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -206,7 +206,33 @@ struct amd_pstate_epp_soc { * Per-CPU-type EPP overrides for hybrid systems. Only hybrid SoCs should = be * listed here; non-hybrid systems always use the legacy defaults. */ +static const struct amd_pstate_epp_soc epp_soc_zen6_client __initconst =3D= { + .performance_core =3D { + .performance =3D 25, + .balance_performance =3D 51, + .balance_power =3D 64, + .power =3D 64, + }, + .efficiency_core =3D { + .performance =3D 25, + .balance_performance =3D 51, + .balance_power =3D 64, + .power =3D 115, + }, + .low_power_core =3D { + .performance =3D 25, + .balance_performance =3D 51, + .balance_power =3D 64, + .power =3D 115, + }, +}; + static const struct x86_cpu_id amd_pstate_epp_soc_ids[] __initconst =3D { + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x1A, 0x80, &epp_soc_zen6_client), + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x1A, 0x81, &epp_soc_zen6_client), + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x1A, 0x84, &epp_soc_zen6_client), + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x1A, 0x85, &epp_soc_zen6_client), + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x1A, 0xe0, &epp_soc_zen6_client), {} }; =20 --=20 2.43.0 From nobody Fri Sep 25 20:02:45 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011014.outbound.protection.outlook.com [52.101.62.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 89D96357739; Wed, 9 Sep 2026 03:36:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.14 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925017; cv=fail; b=VxJdoLLEXde/9SBba7/F9FsoydWojFr+JncMZrMK6J2LghpJJQ+Gm9nc/8AzzUXs7wABTZ9MMLS1LG3sJxS0/twUOqmeWX/nsPSGbqiUbtr8AiMGiVNzrTvGGbUvw9n5nhqBPc9L6wPc9fElMRX2naBqEhE7g7WtBRoLC+tyC/4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788925017; c=relaxed/simple; bh=HHxpgqOfgooGERiyhgJagmU8LGa66JgwSy06VG4NOio=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ncfSBQ75pAnV4o7Aju4RDtJGhEpEmWtOe5Yq1I0yO7ayF9MBn9Ds9eDw9GXWPcyhCETMi+VFz3ZGAKePvwOfHzWWL3N/ZEddhKdKb85yUH9kcOZ7tGfGHyWfpXwynELAo79nLDdGdmWAzCCGx4A8zKhRXp/8CfrcWREQzdVh2Kw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=rCCOhfTb; arc=fail smtp.client-ip=52.101.62.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="rCCOhfTb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mrbH01tmpeG7YwWJADRcl/P5jXDbOprdx2Y74EDyaqWd7Xb8tgdEs15iKmKnzIRBDA4W7BYhwYVDM0xH/gkQJdCoqIgK7ofirDWZhAbkx3vUJYBxuiLgoNVnSRMbcanf00q12s3L57N1J15e2Q9LGmqZnMt5Il5RAuzZFEiylIXgaUucfI9FrB0eH2fFNJrNqnXE89YwXA3j+O2ze7XRoMhaVAQFKpxc3FbIyVf+ltMcUEqSkhHRn+xDwzkg+6w/YnY9DkkSSdxRmOaL3vASzmmX6xGUjqnxylN6ah6wlUdpqgD59x0bDoKrI8eKm3+wSwyVT8V35Zqp42bHKFQvUA== 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=lh0ej7NHDGnjw/IdTstIvYmTIXJa/0HbEcdmsVfSUtQ=; b=Dd4Lt2PJH6VyMDPRdVVNrRRnoRKErngedSX73ey/Y0nHPXz7S24x8tIiuaAIq1PQqiJMO3xO/t+2DFrJJkS40NiNPlTfmxa5mGHNMqs+C4Nve1miteR1VjTNCu2I/mtFqZFw3XHasgdH3ur5pjYYUKoV/sWuuEt42V8M+3J0aXWF0PWs7UhK1OTbfSU/0gz3Yu/3fRmPzRvEREYa8hPSuzyr9kQtygRzJka95dv0zJ+OcDKmQsV9pMB3SMhCJrK6nQE8dKB4/onkBjzGZuU9QIE1FIVEUI7ICDd/vOKHGeqfd4QPcy5b1Ln2wf7vlgnAHm0NdM+bK8zo2P+BNuqQpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lh0ej7NHDGnjw/IdTstIvYmTIXJa/0HbEcdmsVfSUtQ=; b=rCCOhfTbNOHNeD++NbIs0K1TfFyECE3V2rd/lfAVu81RJiAd0gag1kWJL0cfx0WfKbONsTzj7+f2giX/vK3kTr3q7yswz1B7qT2s/XeT1ELdTfZGlirCIWl/Ikygedw/VauaVW/dkCi/vYObtZGm3wc/pm8V6zeSMt7h4uwryCk= Received: from PH8P223CA0004.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:2db::29) by SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.14; Wed, 9 Sep 2026 03:36:52 +0000 Received: from SN1PEPF000397B5.namprd05.prod.outlook.com (2603:10b6:510:2db:cafe::97) by PH8P223CA0004.outlook.office365.com (2603:10b6:510:2db::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.7 via Frontend Transport; Wed, 9 Sep 2026 03:36:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by SN1PEPF000397B5.mail.protection.outlook.com (10.167.248.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Wed, 9 Sep 2026 03:36:48 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:45 -0500 Received: from aus0006770c4n-lx01.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 8 Sep 2026 22:36:44 -0500 From: Mario Limonciello To: K Prateek Nayak CC: Perry Yuan , "open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "open list:CPU FREQUENCY SCALING FRAMEWORK" , "Mario Limonciello (AMD)" , Christian Ludloff Subject: [PATCH v3 3/3] cpufreq/amd-pstate: Show a warning if missing EPP tunings Date: Tue, 8 Sep 2026 22:36:23 -0500 Message-ID: <20260909033623.454449-4-mario.limonciello@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260909033623.454449-1-mario.limonciello@amd.com> References: <20260909033623.454449-1-mario.limonciello@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B5:EE_|SJ2PR12MB8690:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c2b0759-dc4d-456d-03e5-08df0e239458 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700016|1800799024|23010399003|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: G8bWKMQj/dggn9yse28yA5YlxaPVLay3zqudlGH1ulvUKMfAuHJa5cOQtcvDF7YvhiZEzqhCiek7yDq7vBaexWulz534dtkIxDR3Ev004Vi1sfmalytpbPGEVsNrjdXNfqLh9g8xBT1S0r2NxpDu7XuesXmfU32cqSG1X+bWuuMjkLktlI5HpGat9ubJOUQy4HM+OcuPOgoRQAl/0RIhljZ0oooKQZDO42XMQRK+V4xSLWOYRaN27/Nc5RgDt/kE3NH6f89CIS6Mexc30iPJyXlHrod0t9TZzoaF4TlM3WrN8M8ultUkkYETU9v92zSJI4ZRQKidluYd3JgwAuY2JurDcbKIHRk/P18HF6kASajoYOKYKUUwNFr3AE/O+Mxke9EdGi8yNK3JHq/72uY3AIYtGebg1oKsqjgeSb/n+dc2QSOhlimdDR2VxFbBEjm5jHRiRTPdHEzmhJbpyzOlA79qdyy2Xib/zktG20YC535HywYULt4jnUB5edoYAT5iM6ydtZNeV63kdNGB6TBASjPqGGEvDr3qaGKQ4YVe48XQzA1mwUBwcarLxtPVevpxTGZKGyeWO0YtDKlE/HbXPtgJ+KihzQWv93l9IYdV2C1xvHeJGyOXRhG8FxCfghGhaDc9ERP6TjLBukcBJaXz5MvfiCBZNewtuyntjTe2hiBhkkwgY+jmps7TnMYmnd012OgQHvfUTyfinWCBOnlFwA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(1800799024)(23010399003)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QpgnWZw7p2gMzR+5hLwotbzBEaoYSl0PBitFVnQfoweoYUg3Cdu9bJXQNWj9F0yLvbqaBj8sFDsNlv4xOJF7IXikGsSUtU/rxTvi4WUaGN5xcUsKcYTEM+mJqfp+ttCs6fxWpKWySEwHzs/eRS9aBY/VdvRarJK1bJKrQXXIIQEKzObqJNJ9TaE2qcen1TgHof0OAqfgd2HWLPJAeBnrO6J/2RV1zg7xtjTxGkpIAZt6SUOhsAhggXskQ9yCj4x35EQGw0SO86OgYyTqxjBaQBRUeqtlP+1SgH+vgVWRsng2XEJ72zNLxNQhaFtZXk0qWjY8Fjes8hgIlKv1V6uECrJJC4RrkHbkThScCEalIrnx0K3XON2l4vAWAvd+PBOogxGCvRb3hmeRD+S+aSAI89LupjUxVrGmZ2VjZiv/9QIRMPNoLmUUBQFsEQ+X3FpJ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 03:36:48.4722 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0c2b0759-dc4d-456d-03e5-08df0e239458 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B5.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8690 Content-Type: text/plain; charset="utf-8" From: "Mario Limonciello (AMD)" EPP tunings are going to be more important going forward. Show a warning if on a heterogeneous platform without them. Suggested-by: Christian Ludloff Signed-off-by: Mario Limonciello (AMD) Reviewed-by: K Prateek Nayak Tested-by: K Prateek Nayak --- drivers/cpufreq/amd-pstate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index 380294bb56cd7..ae6caef389bd7 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -2376,8 +2376,12 @@ static void __init amd_pstate_init_epp_values(void) const struct x86_cpu_id *id =3D x86_match_cpu(amd_pstate_epp_soc_ids); const struct amd_pstate_epp_soc *soc; =20 - if (!id || !id->driver_data) + if (!id || !id->driver_data) { + if (cpu_feature_enabled(X86_FEATURE_ZEN6) && + cpu_feature_enabled(X86_FEATURE_AMD_HTR_CORES)) + pr_warn_once("No EPP tunings found for platform\n"); return; + } =20 soc =3D (const struct amd_pstate_epp_soc *)id->driver_data; =20 --=20 2.43.0