lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0gRkQyZxfsoFOYmvHX3NQz1mwer0gK1NB9gKfwO2TKgGQ@mail.gmail.com>
Date: Fri, 5 Sep 2025 20:58:32 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
Cc: rafael@...nel.org, viresh.kumar@...aro.org, linux-pm@...r.kernel.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] cpufreq: intel_pstate: Remove EPB related changes

On Thu, Sep 4, 2025 at 2:06 AM Srinivas Pandruvada
<srinivas.pandruvada@...ux.intel.com> wrote:
>
> The intel_pstate driver does not enable HWP mode when CPUID.06H:EAX[10]
> is not set, indicating that EPP (Energy Performance Preference) is not
> supported by the hardware.
>
> When EPP is unavailable, the system falls back to using EPB (Energy
> Performance Bias) if the feature is supported. However, since the
> intel_pstate driver will not enable HWP in this scenario, any EPB-related
> code becomes unreachable and irrelevant. Remove the EPB handling code
> paths simplifying the driver logic and reducing code size.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 49 +++-------------------------------
>  1 file changed, 4 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index f366d35c5840..c28454b16723 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -620,24 +620,9 @@ static int min_perf_pct_min(void)
>                 (cpu->pstate.min_pstate * 100 / turbo_pstate) : 0;
>  }
>
> -static s16 intel_pstate_get_epb(struct cpudata *cpu_data)
> -{
> -       u64 epb;
> -       int ret;
> -
> -       if (!boot_cpu_has(X86_FEATURE_EPB))
> -               return -ENXIO;
> -
> -       ret = rdmsrq_on_cpu(cpu_data->cpu, MSR_IA32_ENERGY_PERF_BIAS, &epb);
> -       if (ret)
> -               return (s16)ret;
> -
> -       return (s16)(epb & 0x0f);
> -}
> -
>  static s16 intel_pstate_get_epp(struct cpudata *cpu_data, u64 hwp_req_data)
>  {
> -       s16 epp;
> +       s16 epp = -EOPNOTSUPP;
>
>         if (boot_cpu_has(X86_FEATURE_HWP_EPP)) {
>                 /*
> @@ -651,34 +636,13 @@ static s16 intel_pstate_get_epp(struct cpudata *cpu_data, u64 hwp_req_data)
>                                 return epp;
>                 }
>                 epp = (hwp_req_data >> 24) & 0xff;
> -       } else {
> -               /* When there is no EPP present, HWP uses EPB settings */
> -               epp = intel_pstate_get_epb(cpu_data);
>         }
>
>         return epp;
>  }
>
> -static int intel_pstate_set_epb(int cpu, s16 pref)
> -{
> -       u64 epb;
> -       int ret;
> -
> -       if (!boot_cpu_has(X86_FEATURE_EPB))
> -               return -ENXIO;
> -
> -       ret = rdmsrq_on_cpu(cpu, MSR_IA32_ENERGY_PERF_BIAS, &epb);
> -       if (ret)
> -               return ret;
> -
> -       epb = (epb & ~0x0f) | pref;
> -       wrmsrq_on_cpu(cpu, MSR_IA32_ENERGY_PERF_BIAS, epb);
> -
> -       return 0;
> -}
> -
>  /*
> - * EPP/EPB display strings corresponding to EPP index in the
> + * EPP display strings corresponding to EPP index in the
>   * energy_perf_strings[]
>   *     index           String
>   *-------------------------------------
> @@ -782,7 +746,7 @@ static int intel_pstate_set_energy_pref_index(struct cpudata *cpu_data,
>                                               u32 raw_epp)
>  {
>         int epp = -EINVAL;
> -       int ret;
> +       int ret = -EOPNOTSUPP;
>
>         if (!pref_index)
>                 epp = cpu_data->epp_default;
> @@ -802,10 +766,6 @@ static int intel_pstate_set_energy_pref_index(struct cpudata *cpu_data,
>                         return -EBUSY;
>
>                 ret = intel_pstate_set_epp(cpu_data, epp);
> -       } else {
> -               if (epp == -EINVAL)
> -                       epp = (pref_index - 1) << 2;
> -               ret = intel_pstate_set_epb(cpu_data->cpu, epp);
>         }
>
>         return ret;
> @@ -1337,9 +1297,8 @@ static void intel_pstate_hwp_set(unsigned int cpu)
>         if (boot_cpu_has(X86_FEATURE_HWP_EPP)) {
>                 value &= ~GENMASK_ULL(31, 24);
>                 value |= (u64)epp << 24;
> -       } else {
> -               intel_pstate_set_epb(cpu, epp);
>         }
> +
>  skip_epp:
>         WRITE_ONCE(cpu_data->hwp_req_cached, value);
>         wrmsrq_on_cpu(cpu, MSR_HWP_REQUEST, value);
> --

Applied as 6.18 material, thanks!

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ