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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJZ5v0gvGyrT854c7jE0x8uLP246TowxURAGo785GXEvaAvXAQ@mail.gmail.com>
Date: Tue, 10 Sep 2024 20:26:40 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Mario Limonciello <superm1@...nel.org>
Cc: rafael@...nel.org, linux-acpi@...r.kernel.org, 
	linux-kernel@...r.kernel.org, perry.yuan@....com, gautham.shenoy@....com, 
	luke@...nes.dev, Mario Limonciello <mario.limonciello@....com>, al0uette@...look.com, 
	vderp@...oud.com
Subject: Re: [PATCH] ACPI: CPPC: Add support for setting EPP register in FFH

On Tue, Sep 10, 2024 at 5:15 AM Mario Limonciello <superm1@...nel.org> wrote:
>
> From: Mario Limonciello <mario.limonciello@....com>
>
> Some Asus AMD systems are reported to not be able to change EPP values
> because the BIOS doesn't advertise support for the CPPC MSR and the PCC
> region is not configured.
>
> However the ACPI 6.2 specification allows CPC registers to be declared
> in FFH:
> ```
> Starting with ACPI Specification 6.2, all _CPC registers can be in
> PCC, System Memory, System IO, or Functional Fixed Hardware address
> spaces. OSPM support for this more flexible register space scheme
> is indicated by the “Flexible Address Space for CPPC Registers” _OSC
> bit.
> ```
>
> If this _OSC has been set allow using FFH to configure EPP.
>
> Reported-by: al0uette@...look.com
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218686
> Suggested-by: al0uette@...look.com
> Tested-by: vderp@...oud.com
> Tested-by: al0uette@...look.com
> Signed-off-by: Mario Limonciello <mario.limonciello@....com>
> ---
>  drivers/acpi/cppc_acpi.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> index dd3d3082c8c7..3b5b695bb80b 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> @@ -103,6 +103,11 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);
>                                 (cpc)->cpc_entry.reg.space_id ==        \
>                                 ACPI_ADR_SPACE_PLATFORM_COMM)
>
> +/* Check if a CPC register is in FFH */
> +#define CPC_IN_FFH(cpc) ((cpc)->type == ACPI_TYPE_BUFFER &&            \
> +                               (cpc)->cpc_entry.reg.space_id ==        \
> +                               ACPI_ADR_SPACE_FIXED_HARDWARE)
> +
>  /* Check if a CPC register is in SystemMemory */
>  #define CPC_IN_SYSTEM_MEMORY(cpc) ((cpc)->type == ACPI_TYPE_BUFFER &&  \
>                                 (cpc)->cpc_entry.reg.space_id ==        \
> @@ -1486,9 +1491,12 @@ int cppc_set_epp_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls, bool enable)
>                 /* after writing CPC, transfer the ownership of PCC to platform */
>                 ret = send_pcc_cmd(pcc_ss_id, CMD_WRITE);
>                 up_write(&pcc_ss_data->pcc_lock);
> +       } else if (osc_cpc_flexible_adr_space_confirmed &&
> +                  CPC_SUPPORTED(epp_set_reg) && CPC_IN_FFH(epp_set_reg)) {
> +               ret = cpc_write(cpu, epp_set_reg, perf_ctrls->energy_perf);
>         } else {
>                 ret = -ENOTSUPP;
> -               pr_debug("_CPC in PCC is not supported\n");
> +               pr_debug("_CPC in PCC and _CPC in FFH are not supported\n");
>         }
>
>         return ret;
> --

Applied as 6.12 material, thanks!

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ