From patchwork Mon Oct 30 06:34:00 2023
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: "Meng, Li (Jassmine)"
X-Patchwork-Id: 13440048
Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net
[23.128.96.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 3AC0DED2
for ; Mon, 30 Oct 2023 06:35:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com
header.b="a8DNGrK/"
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
(mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41])
by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B49AC5;
Sun, 29 Oct 2023 23:35:31 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
b=j/GrRISnfaSBfzYq9EKt1pjlKNeHIEThaz/C9poAwoFOSzOEXR4lQzK7tM0gwrPhFIPd9ZLA6iuyOe+QbKG82yabWmEEmksqm1ePPn+UTOIr7tAMcDJSGt1UdZ6fF+puM6JJHGzhT/nVgIOv3Fav06CdxaYO0lvB93/MYETYCJnLobzKv/Iy6zSGMZkEibA6xhZdn79xw62Ld1wAOoiWsWGbUNAJ7KLhyZAr6GWha0L+SHpXFKiL+8HePCqu/QlHu9H4iI+g8Q2rCeKF/uyD4ZQxWdTT60XXYJnqngPgFHUbKMuZDRNb6QTVVJ1twghSskCGj/AQOjupIkhdDyeAMA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
s=arcselector9901;
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=iEG57ub2uyja18iSbeWFZGvSQXhoZh8gCxORPlmvouA=;
b=i8YSC8WKWwfrMRCkdC0tp+JofKGi3lTqZQUI9tIFnnjI0Msw48+9Kf+ZbO+0npe5wr5GZGmB31eUXOebU/O08HUaxU+2VGIeXnSjRuB3FUhjlzn4or50pXd32Oc5HVNDABOt1r5mwgZeFI7bAygK4EBP0T8+8qaZuaCmMS/97kAZLYu18yHswJKMhuGHbFGO32WHLyS+lWRFpFPDnbrTx3PKcreEsvQtxNO5gJW0MmdLPwAGE56caDPcyOgc5ASsx+NiFMM6eugWvTTVxXDe47Bll9yUNLgNhFu8vfiLVtfCQX07uDLT1H4TK0WYXfpNzmfweUJ2NwhZRCXYG+rGGQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
165.204.84.17) smtp.rcpttodomain=intel.com 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=iEG57ub2uyja18iSbeWFZGvSQXhoZh8gCxORPlmvouA=;
b=a8DNGrK/pSyQt8GPwtC1glxlonrTXTB1zFC2bnXqFxehloNUMg8y+R4qrjYegtgp7gAJrG8EytrA/WTN3yc5VqvQVPcyDjTfbyn9uMjgdhfI8H9wTh+QcEpx1aFMRopun2lqMBav4n1MIA8j19z98jHU0x0E6prhAYhpZZkhdH8=
Received: from BL1PR13CA0206.namprd13.prod.outlook.com (2603:10b6:208:2be::31)
by SJ2PR12MB8941.namprd12.prod.outlook.com (2603:10b6:a03:542::15) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.28; Mon, 30 Oct
2023 06:35:29 +0000
Received: from BL6PEPF0001AB74.namprd02.prod.outlook.com
(2603:10b6:208:2be:cafe::9d) by BL1PR13CA0206.outlook.office365.com
(2603:10b6:208:2be::31) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.15 via Frontend
Transport; Mon, 30 Oct 2023 06:35:29 +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=SATLEXMB04.amd.com; pr=C
Received: from SATLEXMB04.amd.com (165.204.84.17) by
BL6PEPF0001AB74.mail.protection.outlook.com (10.167.242.167) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
15.20.6933.15 via Frontend Transport; Mon, 30 Oct 2023 06:35:28 +0000
Received: from jasmine-meng.amd.com (10.180.168.240) by SATLEXMB04.amd.com
(10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 30 Oct
2023 01:35:23 -0500
From: Meng Li
To: "Rafael J . Wysocki" , Huang Rui
CC: , ,
, , Shuah Khan
, , "Nathan
Fontenot" , Deepak Sharma ,
Alex Deucher , Mario Limonciello
, Shimmer Huang , "Perry
Yuan" , Xiaojian Du , Viresh Kumar
, Borislav Petkov , "Oleksandr
Natalenko" , Meng Li
Subject: [PATCH V10 4/7] cpufreq: Add a notification message that the highest
perf has changed
Date: Mon, 30 Oct 2023 14:34:00 +0800
Message-ID: <20231030063403.3502816-5-li.meng@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20231030063403.3502816-1-li.meng@amd.com>
References: <20231030063403.3502816-1-li.meng@amd.com>
Precedence: bulk
X-Mailing-List: linux-acpi@vger.kernel.org
List-Id:
List-Subscribe:
List-Unsubscribe:
MIME-Version: 1.0
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
(10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB74:EE_|SJ2PR12MB8941:EE_
X-MS-Office365-Filtering-Correlation-Id: 49dc4ece-0bd9-4d46-ab80-08dbd912685a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
s4CynvEVHF0RBX6m6nX7fjpdUDEQGGPlPSblLnk/mQBORzo17Yy4HSQPBz5bzV3OZzo0AZ10OAss+6TTRAGxvQQfBGeTrRP32rHt3t/Ehi1dXKCq7sfqO812IGl2j9py7T5zRJjnI7x8cI1so2e3dbKII6r5Xh8xWpB0q+IstdHMiQPVoWatzQiHu7sXc9OF/Aq/zELYEVBqyy59UpElE8630a34jgcKoeBXvHW7FZwYjUrbVBNGRLDNqhKTpWkxNnhVTsz+5XgiQcqSoiUQdN2no7W6s/KYlb6vdwIbSMPTaMap4A3V7f6z9kOwdT3kAMn9RjQaQIlJMDEhbGoyIjmg7CaaMblAgMRxZJHcSr1OiAeAVpyVLRysF+U9GLPlcvyY7eTk6M3UhTrj7erFzk1JEfCOVd1++FamCY9CQmUwPrpn+58Dqcs8F+YXWPl9rMF+u6Enxy4HC61x65+xCXoFnDsmXMBxGhoCtF0qoNYqXu5r/SgvmKB+tWTtbiJHa1zd1Tv4RsQ9JhW1RZzB+dby8rYv/zj2hJWJjzNAsD6qjjFGd4iwsiyuyUlN7LR2dtEK1kSbUKWuYJClOg2Oo+HtZvgO9xEXhOmcYbyME4B3Qc71iYs5t0m7i+Tvh8LBCypFYj5wItSuFsW2IPulQr9QKQinuSTeK1kBtlLWrnEzsY3l8Psj4OD5exE+HnI06UNm6JgAUaFzAm2dmQL5Otvx+cIrUdwGH2iYnRIiw0QecGWzL5y8CFCn5D6o4WfWSZ0zGJoxIyA3qLzlGgk5OK1jEFdSB8rTv/C0ABUiwLU=
X-Forefront-Antispam-Report:
CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(346002)(396003)(39860400002)(230922051799003)(82310400011)(186009)(1800799009)(64100799003)(451199024)(36840700001)(40470700004)(46966006)(40460700003)(2906002)(15650500001)(7416002)(5660300002)(41300700001)(4326008)(8936002)(8676002)(36756003)(40480700001)(86362001)(82740400003)(316002)(110136005)(54906003)(6636002)(36860700001)(47076005)(356005)(81166007)(70206006)(70586007)(83380400001)(426003)(1076003)(16526019)(336012)(2616005)(7696005)(966005)(478600001)(26005)(6666004)(226483002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2023 06:35:28.5999
(UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id:
49dc4ece-0bd9-4d46-ab80-08dbd912685a
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=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
BL6PEPF0001AB74.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8941
ACPI 6.5 section 8.4.6.1.1.1 specifies that Notify event 0x85 can be
emmitted to cause the the OSPM to re-evaluate the highest performance
register. Add support for this event.
Tested-by: Oleksandr Natalenko
Reviewed-by: Mario Limonciello
Reviewed-by: Huang Rui
Signed-off-by: Meng Li
Link: https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#processor-device-notification-values
---
drivers/acpi/processor_driver.c | 6 ++++++
drivers/cpufreq/cpufreq.c | 13 +++++++++++++
include/linux/cpufreq.h | 5 +++++
3 files changed, 24 insertions(+)
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 4bd16b3f0781..29b2fb68a35d 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -27,6 +27,7 @@
#define ACPI_PROCESSOR_NOTIFY_PERFORMANCE 0x80
#define ACPI_PROCESSOR_NOTIFY_POWER 0x81
#define ACPI_PROCESSOR_NOTIFY_THROTTLING 0x82
+#define ACPI_PROCESSOR_NOTIFY_HIGEST_PERF_CHANGED 0x85
MODULE_AUTHOR("Paul Diefenbaugh");
MODULE_DESCRIPTION("ACPI Processor Driver");
@@ -83,6 +84,11 @@ static void acpi_processor_notify(acpi_handle handle, u32 event, void *data)
acpi_bus_generate_netlink_event(device->pnp.device_class,
dev_name(&device->dev), event, 0);
break;
+ case ACPI_PROCESSOR_NOTIFY_HIGEST_PERF_CHANGED:
+ cpufreq_update_highest_perf(pr->id);
+ acpi_bus_generate_netlink_event(device->pnp.device_class,
+ dev_name(&device->dev), event, 0);
+ break;
default:
acpi_handle_debug(handle, "Unsupported event [0x%x]\n", event);
break;
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 4bc15634d49c..e66b040b0c61 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -2717,6 +2717,19 @@ void cpufreq_update_limits(unsigned int cpu)
}
EXPORT_SYMBOL_GPL(cpufreq_update_limits);
+/**
+ * cpufreq_update_highest_perf - Update highest performance for a given CPU.
+ * @cpu: CPU to update the highest performance for.
+ *
+ * Invoke the driver's ->update_highest_perf callback if present
+ */
+void cpufreq_update_highest_perf(unsigned int cpu)
+{
+ if (cpufreq_driver->update_highest_perf)
+ cpufreq_driver->update_highest_perf(cpu);
+}
+EXPORT_SYMBOL_GPL(cpufreq_update_highest_perf);
+
/*********************************************************************
* BOOST *
*********************************************************************/
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 1c5ca92a0555..f62257b2a42f 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -235,6 +235,7 @@ int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu);
void refresh_frequency_limits(struct cpufreq_policy *policy);
void cpufreq_update_policy(unsigned int cpu);
void cpufreq_update_limits(unsigned int cpu);
+void cpufreq_update_highest_perf(unsigned int cpu);
bool have_governor_per_policy(void);
bool cpufreq_supports_freq_invariance(void);
struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy);
@@ -263,6 +264,7 @@ static inline bool cpufreq_supports_freq_invariance(void)
return false;
}
static inline void disable_cpufreq(void) { }
+static inline void cpufreq_update_highest_perf(unsigned int cpu) { }
#endif
#ifdef CONFIG_CPU_FREQ_STAT
@@ -380,6 +382,9 @@ struct cpufreq_driver {
/* Called to update policy limits on firmware notifications. */
void (*update_limits)(unsigned int cpu);
+ /* Called to update highest performance on firmware notifications. */
+ void (*update_highest_perf)(unsigned int cpu);
+
/* optional */
int (*bios_limit)(int cpu, unsigned int *limit);