All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mario Limonciello <mario.limonciello@amd.com>
To: Huang Rui <ray.huang@amd.com>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Robert Moore <robert.moore@intel.com>,
	<linux-acpi@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-pm@vger.kernel.org>, <devel@acpica.org>,
	Gautham Ranjal Shenoy <gautham.shenoy@amd.com>,
	"Wyes Karny" <Wyes.Karny@amd.com>,
	Perry Yuan <perry.yuan@amd.com>,
	"Mario Limonciello" <mario.limonciello@amd.com>
Subject: [PATCH 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server
Date: Mon, 5 Jun 2023 10:11:30 -0500	[thread overview]
Message-ID: <20230605151133.2615-2-mario.limonciello@amd.com> (raw)
In-Reply-To: <20230605151133.2615-1-mario.limonciello@amd.com>

This symbol will be used by intel-pstate and amd-pstate for making
decisions based on what the FADT indicates the system pm profile is.

Suggested-by: Gautham Ranjal Shenoy <gautham.shenoy@amd.com>
Link: https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html#fixed-acpi-description-table-fadt
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/acpi/cppc_acpi.c | 34 ++++++++++++++++++++++++++++++++++
 include/acpi/actbl.h     |  3 ++-
 include/acpi/processor.h | 10 ++++++++++
 3 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 7ff269a78c20..d8827eae3ba4 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -941,6 +941,40 @@ void acpi_cppc_processor_exit(struct acpi_processor *pr)
 }
 EXPORT_SYMBOL_GPL(acpi_cppc_processor_exit);
 
+
+/**
+ * acpi_pm_profile_server() - Check if the system is a server.
+ *
+ * Return: true for server profiles, false for anything else
+ */
+bool acpi_pm_profile_server(void)
+{
+	switch (acpi_gbl_FADT.preferred_profile) {
+	case PM_ENTERPRISE_SERVER:
+	case PM_SOHO_SERVER:
+	case PM_PERFORMANCE_SERVER:
+		return true;
+	}
+	return false;
+}
+EXPORT_SYMBOL_GPL(acpi_pm_profile_server);
+
+/**
+ * acpi_pm_profile_undefined() - Check if the system is an undefined pm profile.
+ *
+ * Return: true for undefined profiles, false for anything else
+ */
+bool acpi_pm_profile_undefined(void)
+{
+	if (acpi_gbl_FADT.preferred_profile == PM_UNSPECIFIED)
+		return true;
+	if (acpi_gbl_FADT.preferred_profile >= NR_PM_PROFILES)
+		return true;
+	return false;
+}
+EXPORT_SYMBOL_GPL(acpi_pm_profile_undefined);
+
+
 /**
  * cpc_read_ffh() - Read FFH register
  * @cpunum:	CPU number to read
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index e5dfb6f4de52..451f6276da49 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -307,7 +307,8 @@ enum acpi_preferred_pm_profiles {
 	PM_SOHO_SERVER = 5,
 	PM_APPLIANCE_PC = 6,
 	PM_PERFORMANCE_SERVER = 7,
-	PM_TABLET = 8
+	PM_TABLET = 8,
+	NR_PM_PROFILES = 9
 };
 
 /* Values for sleep_status and sleep_control registers (V5+ FADT) */
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
index 94181fe9780a..05a45ebddaea 100644
--- a/include/acpi/processor.h
+++ b/include/acpi/processor.h
@@ -360,6 +360,8 @@ int acpi_get_cpuid(acpi_handle, int type, u32 acpi_id);
 #ifdef CONFIG_ACPI_CPPC_LIB
 extern int acpi_cppc_processor_probe(struct acpi_processor *pr);
 extern void acpi_cppc_processor_exit(struct acpi_processor *pr);
+extern bool acpi_pm_profile_server(void);
+extern bool acpi_pm_profile_undefined(void);
 #else
 static inline int acpi_cppc_processor_probe(struct acpi_processor *pr)
 {
@@ -369,6 +371,14 @@ static inline void acpi_cppc_processor_exit(struct acpi_processor *pr)
 {
 	return;
 }
+static inline bool acpi_pm_profile_server(void)
+{
+	return false;
+}
+static inline bool acpi_pm_profile_undefined(void)
+{
+	return true;
+}
 #endif	/* CONFIG_ACPI_CPPC_LIB */
 
 /* in processor_pdc.c */
-- 
2.34.1


  reply	other threads:[~2023-06-05 15:13 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-05 15:11 [PATCH 0/4] Enable amd-pstate active mode by default Mario Limonciello
2023-06-05 15:11 ` Mario Limonciello [this message]
2023-06-05 15:11 ` [PATCH 2/4] cpufreq: amd-pstate: Set a fallback policy based on preferred_profile Mario Limonciello
2023-06-05 15:11 ` [PATCH 3/4] cpufreq: amd-pstate: Add a kernel config option to set default mode Mario Limonciello
2023-06-05 15:11 ` [PATCH 4/4] cpufreq: intel_pstate: Use the acpi_pm_profile_server() symbol Mario Limonciello
2023-06-13 10:09   ` kernel test robot
2023-06-05 16:07 ` [PATCH 0/4] Enable amd-pstate active mode by default Yuan, Perry
2023-06-05 16:10 ` Yuan, Perry

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230605151133.2615-2-mario.limonciello@amd.com \
    --to=mario.limonciello@amd.com \
    --cc=Wyes.Karny@amd.com \
    --cc=devel@acpica.org \
    --cc=gautham.shenoy@amd.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=perry.yuan@amd.com \
    --cc=rafael@kernel.org \
    --cc=ray.huang@amd.com \
    --cc=robert.moore@intel.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=viresh.kumar@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.