* [PATCH v2 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server @ 2023-06-15 6:32 Perry Yuan 2023-06-20 14:50 ` Huang Rui 0 siblings, 1 reply; 3+ messages in thread From: Perry Yuan @ 2023-06-15 6:32 UTC (permalink / raw) To: rafael.j.wysocki, viresh.kumar, Ray.Huang, Mario.Limonciello Cc: Deepak.Sharma, Wyes.Karny, gautham.shenoy, Sunpeng.Li, Xinmei.Huang, Xiaojian.Du, Li.Meng, linux-pm, linux-kernel From: Mario Limonciello <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 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server 2023-06-15 6:32 [PATCH v2 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server Perry Yuan @ 2023-06-20 14:50 ` Huang Rui 2023-06-20 14:56 ` Limonciello, Mario 0 siblings, 1 reply; 3+ messages in thread From: Huang Rui @ 2023-06-20 14:50 UTC (permalink / raw) To: Yuan, Perry Cc: rafael.j.wysocki@intel.com, viresh.kumar@linaro.org, Limonciello, Mario, Sharma, Deepak, Karny, Wyes, Shenoy, Gautham Ranjal, Li, Sun peng (Leo), Huang, Shimmer, Du, Xiaojian, Meng, Li (Jassmine), linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org On Thu, Jun 15, 2023 at 02:32:00PM +0800, Yuan, Perry wrote: > From: Mario Limonciello <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; May I know the acpi_gbl_FADT.preferred_profile value of powerful desktop such as threadripper or AM4/AM5 socket types of processors? I am thinking whether we can use this way to differentiate powerful desktop and mobile platforms. Thanks, Ray > + 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 > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server 2023-06-20 14:50 ` Huang Rui @ 2023-06-20 14:56 ` Limonciello, Mario 0 siblings, 0 replies; 3+ messages in thread From: Limonciello, Mario @ 2023-06-20 14:56 UTC (permalink / raw) To: Huang Rui, Yuan, Perry Cc: rafael.j.wysocki@intel.com, viresh.kumar@linaro.org, Sharma, Deepak, Karny, Wyes, Shenoy, Gautham Ranjal, Li, Sun peng (Leo), Huang, Shimmer, Du, Xiaojian, Meng, Li (Jassmine), linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org On 6/20/2023 9:50 AM, Huang Rui wrote: > On Thu, Jun 15, 2023 at 02:32:00PM +0800, Yuan, Perry wrote: >> From: Mario Limonciello <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; > May I know the acpi_gbl_FADT.preferred_profile value of powerful desktop > such as threadripper or AM4/AM5 socket types of processors? I have a Threadripper for my workstation, and it's: [02Dh 0045 1] PM Profile : 01 [Desktop] > I am thinking whether we can use this way to differentiate powerful desktop > and mobile platforms. On a Rembrandt laptop it's: [02Dh 0045 1] PM Profile : 02 [Mobile] Given Raphael's comments about intel-pstate preferring not to match "SOHO server" as a server, I am planning to move these functions into amd-pstate directly and drop patch 4. > Thanks, > Ray > >> + 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 >> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-06-20 14:56 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-15 6:32 [PATCH v2 1/4] ACPI: CPPC: Add a symbol to check if the preferred profile is a server Perry Yuan 2023-06-20 14:50 ` Huang Rui 2023-06-20 14:56 ` Limonciello, Mario
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox