platform/x86: ISST: Allow reading core-power state on HWP disabled systems
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Thu, 29 Feb 2024 00:26:59 +0000 (16:26 -0800)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 12 Mar 2024 10:47:58 +0000 (12:47 +0200)
When HWP (Hardware P-states) is disabled, dynamic SST features are
disabled. But user should still be able to read the current core-power
state, with legacy P-states. This will allow users to read current
configuration with static SST enabled from BIOS.

To address this, do not call disable_dynamic_sst_features() when the
request is for reading the state.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Link: https://lore.kernel.org/r/20240229002659.1416623-1-srinivas.pandruvada@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c

index 2662fbbddf0cc76edfa2e4dfce0e492bfbcd6fdd..1d918000d72b4b21bd959c9309405f2a7036e92a 100644 (file)
@@ -462,10 +462,10 @@ static long isst_if_core_power_state(void __user *argp)
        struct tpmi_per_power_domain_info *power_domain_info;
        struct isst_core_power core_power;
 
-       if (disable_dynamic_sst_features())
+       if (copy_from_user(&core_power, argp, sizeof(core_power)))
                return -EFAULT;
 
-       if (copy_from_user(&core_power, argp, sizeof(core_power)))
+       if (core_power.get_set && disable_dynamic_sst_features())
                return -EFAULT;
 
        power_domain_info = get_instance(core_power.socket_id, core_power.power_domain_id);