Re: [PATCH v2 1/4] ACPICA: Fix PCC OperationRegion command offsets

"Rafael J. Wysocki (Intel)" <[email protected]> Wed, 5 Aug 2026 18:46:15 +0200
Newsgroups org.kernel.vger.linux-acpi,dev.linux.lists.acpica-devel,org.kernel.vger.linux-kernel
Message-ID <CAJZ5v0hdxtuEbFQdwRe=T+Q2xRki+uN9PP7PPw7AdW4Obe3fqA@mail.gmail.com>
On Wed, Jul 22, 2026 at 3:16 PM Sudeep Holla <[email protected]> wrote:
>
> ACPI 6.3, section 5.5.2.4.7.3, states that the PCC Operation
> Region is associated with the region of shared memory that follows the
> PCC signature.
>
> The generic and extended PCC shared memory layouts include the 4-byte
> signature at offset 0, so their raw shared memory COMMAND fields are at
> offsets 4 and 12 respectively. Since AML field offsets for the PCC
> OperationRegion are relative to the region after that signature, ACPICA
> must look for those COMMAND fields at OperationRegion offsets 0 and 8.
>
> Adjust the generic and master subspace command checks to use those
> OperationRegion-relative offsets. Otherwise writes to the COMMAND field
> can fail to invoke the PCC address space handler at the offset described
> by the PCC OperationRegion definition.
>
> Fixes: aa6ec56b574d ("ACPICA: ACPI 6.3: add PCC operation region support for AML interpreter")
> Signed-off-by: Sudeep Holla <[email protected]>
> ---
>  drivers/acpi/acpica/exfield.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
> index 9a55524ed8f4..a7fac63938b3 100644
> --- a/drivers/acpi/acpica/exfield.c
> +++ b/drivers/acpi/acpica/exfield.c
> @@ -45,12 +45,13 @@ static const u8 acpi_protocol_lengths[] = {
>
>  /*
>   * The following macros determine a given offset is a COMD field.
> - * According to the specification, generic subspaces (types 0-2) contains a
> - * 2-byte COMD field at offset 4 and master subspaces (type 3) contains a 4-byte
> - * COMD field starting at offset 12.
> + * According to the specification, the PCC OperationRegion begins after
> + * the PCC signature. The raw shared memory COMD offsets of 4 for generic
> + * subspaces (types 0-2) and 12 for master subspaces (type 3) therefore
> + * appear at OperationRegion offsets 0 and 8.
>   */
> -#define GENERIC_SUBSPACE_COMMAND(a)     (4 == a || a == 5)
> -#define MASTER_SUBSPACE_COMMAND(a)      (12 <= a && a <= 15)
> +#define GENERIC_SUBSPACE_COMMAND(a)     ((a) < 2)
> +#define MASTER_SUBSPACE_COMMAND(a)      (((a) - 8) < 4)
>
>  /*******************************************************************************
>   *
> --

Can you please see the corresponding upstream ACPICA pull request?
There are concerns regarding it.

Thanks!