Message ID | 20220511134559.1466925-2-pierre.gondois@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | [v1,1/5] ACPI: CPPC: Check _OSC for flexible address space | expand |
On Wed, May 11, 2022 at 03:45:56PM +0200, Pierre Gondois wrote: > The _OSC method allows the OS and firmware to communicate about > supported features/capabitlities. It also allows the OS to take > control of some features. > > In ACPI 6.4, s6.2.11.2 Platform-Wide OSPM Capabilities, the CPPC > (resp. v2) bit should be set by the OS if it 'supports controlling > processor performance via the interfaces described in the _CPC > object'. > > The OS supports CPPC and parses the _CPC object only if > CONFIG_ACPI_CPPC_LIB is set. Replace the x86 specific > boot_cpu_has(X86_FEATURE_HWP) dynamic check with an arch > generic CONFIG_ACPI_CPPC_LIB build-time check. > > Note: > CONFIG_X86_INTEL_PSTATE selects CONFIG_ACPI_CPPC_LIB. While this is work as per the spec, by not sure what kind of ACPI firmware are in the wild. So be prepared to relax/constrain to original feature check for x86, unfortunate but may be needed. Anyways, Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index a5d08de5d1e9..4fd0ea779441 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -329,10 +329,11 @@ static void acpi_bus_osc_negotiate_platform_control(void) #endif #ifdef CONFIG_X86 capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_GENERIC_INITIATOR_SUPPORT; - if (boot_cpu_has(X86_FEATURE_HWP)) { - capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_CPC_SUPPORT; - capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_CPCV2_SUPPORT; - } +#endif + +#ifdef CONFIG_ACPI_CPPC_LIB + capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_CPC_SUPPORT; + capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_CPCV2_SUPPORT; #endif capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_CPC_FLEXIBLE_ADR_SP; @@ -357,10 +358,9 @@ static void acpi_bus_osc_negotiate_platform_control(void) return; } -#ifdef CONFIG_X86 - if (boot_cpu_has(X86_FEATURE_HWP)) - osc_sb_cppc_not_supported = !(capbuf_ret[OSC_SUPPORT_DWORD] & - (OSC_SB_CPC_SUPPORT | OSC_SB_CPCV2_SUPPORT)); +#ifdef CONFIG_ACPI_CPPC_LIB + osc_sb_cppc_not_supported = !(capbuf_ret[OSC_SUPPORT_DWORD] & + (OSC_SB_CPC_SUPPORT | OSC_SB_CPCV2_SUPPORT)); #endif /*
The _OSC method allows the OS and firmware to communicate about supported features/capabitlities. It also allows the OS to take control of some features. In ACPI 6.4, s6.2.11.2 Platform-Wide OSPM Capabilities, the CPPC (resp. v2) bit should be set by the OS if it 'supports controlling processor performance via the interfaces described in the _CPC object'. The OS supports CPPC and parses the _CPC object only if CONFIG_ACPI_CPPC_LIB is set. Replace the x86 specific boot_cpu_has(X86_FEATURE_HWP) dynamic check with an arch generic CONFIG_ACPI_CPPC_LIB build-time check. Note: CONFIG_X86_INTEL_PSTATE selects CONFIG_ACPI_CPPC_LIB. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> --- drivers/acpi/bus.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)