2023-06-13 16:21:31

by Wilczynski, Michal

[permalink] [raw]
Subject: [PATCH v3 2/5] acpi: Refactor arch_acpi_set_pdc_bits()

Capabilities buffer modified by the arch_acpi_set_pdc_bits() is not
_PDC specific, as it is used by _OSC method as well. Change function
name to better reflect it's independence from PDC. Change function
expected argument to pass capability buffer directly without any
offset, as the offset differ among _OSC and _PDC methods.

Suggested-by: Rafael J. Wysocki <[email protected]>
Signed-off-by: Michal Wilczynski <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
---
arch/ia64/include/asm/acpi.h | 4 ++--
arch/x86/include/asm/acpi.h | 10 +++++-----
drivers/acpi/processor_pdc.c | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index 87927eb824cc..43797cb44383 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -69,9 +69,9 @@ extern int __initdata nid_to_pxm_map[MAX_NUMNODES];
#endif

static inline bool arch_has_acpi_pdc(void) { return true; }
-static inline void arch_acpi_set_pdc_bits(u32 *buf)
+static inline void arch_acpi_set_proc_cap_bits(u32 *cap)
{
- buf[2] |= ACPI_PDC_EST_CAPABILITY_SMP;
+ *cap |= ACPI_PDC_EST_CAPABILITY_SMP;
}

#ifdef CONFIG_ACPI_NUMA
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 8eb74cf386db..6a498d1781e7 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -100,23 +100,23 @@ static inline bool arch_has_acpi_pdc(void)
c->x86_vendor == X86_VENDOR_CENTAUR);
}

-static inline void arch_acpi_set_pdc_bits(u32 *buf)
+static inline void arch_acpi_set_proc_cap_bits(u32 *cap)
{
struct cpuinfo_x86 *c = &cpu_data(0);

- buf[2] |= ACPI_PDC_C_CAPABILITY_SMP;
+ *cap |= ACPI_PDC_C_CAPABILITY_SMP;

if (cpu_has(c, X86_FEATURE_EST))
- buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP;
+ *cap |= ACPI_PDC_EST_CAPABILITY_SWSMP;

if (cpu_has(c, X86_FEATURE_ACPI))
- buf[2] |= ACPI_PDC_T_FFH;
+ *cap |= ACPI_PDC_T_FFH;

/*
* If mwait/monitor is unsupported, C2/C3_FFH will be disabled
*/
if (!cpu_has(c, X86_FEATURE_MWAIT))
- buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
+ *cap &= ~(ACPI_PDC_C_C2C3_FFH);
}

static inline bool acpi_has_cpu_in_madt(void)
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
index 5596862e6fea..ce3acd86dd12 100644
--- a/drivers/acpi/processor_pdc.c
+++ b/drivers/acpi/processor_pdc.c
@@ -24,7 +24,7 @@ static void acpi_set_pdc_bits(u32 *buf)
buf[2] = ACPI_PDC_SMP_T_SWCOORD;

/* Twiddle arch-specific bits needed for _PDC */
- arch_acpi_set_pdc_bits(buf);
+ arch_acpi_set_proc_cap_bits(&buf[2]);
}

static struct acpi_object_list *acpi_processor_alloc_pdc(void)
--
2.41.0



2023-06-29 11:07:40

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v3 2/5] acpi: Refactor arch_acpi_set_pdc_bits()

On Tue, Jun 13, 2023 at 6:12 PM Michal Wilczynski
<[email protected]> wrote:
>
> Capabilities buffer modified by the arch_acpi_set_pdc_bits() is not
> _PDC specific, as it is used by _OSC method as well. Change function
> name to better reflect it's independence from PDC. Change function
> expected argument to pass capability buffer directly without any
> offset, as the offset differ among _OSC and _PDC methods.
>
> Suggested-by: Rafael J. Wysocki <[email protected]>
> Signed-off-by: Michal Wilczynski <[email protected]>
> Reviewed-by: Andy Shevchenko <[email protected]>

Any objections to this from the x86 arch side? if not, I will route
it via ACPI along with the rest of the series.

> ---
> arch/ia64/include/asm/acpi.h | 4 ++--
> arch/x86/include/asm/acpi.h | 10 +++++-----
> drivers/acpi/processor_pdc.c | 2 +-
> 3 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> index 87927eb824cc..43797cb44383 100644
> --- a/arch/ia64/include/asm/acpi.h
> +++ b/arch/ia64/include/asm/acpi.h
> @@ -69,9 +69,9 @@ extern int __initdata nid_to_pxm_map[MAX_NUMNODES];
> #endif
>
> static inline bool arch_has_acpi_pdc(void) { return true; }
> -static inline void arch_acpi_set_pdc_bits(u32 *buf)
> +static inline void arch_acpi_set_proc_cap_bits(u32 *cap)
> {
> - buf[2] |= ACPI_PDC_EST_CAPABILITY_SMP;
> + *cap |= ACPI_PDC_EST_CAPABILITY_SMP;
> }
>
> #ifdef CONFIG_ACPI_NUMA
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index 8eb74cf386db..6a498d1781e7 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -100,23 +100,23 @@ static inline bool arch_has_acpi_pdc(void)
> c->x86_vendor == X86_VENDOR_CENTAUR);
> }
>
> -static inline void arch_acpi_set_pdc_bits(u32 *buf)
> +static inline void arch_acpi_set_proc_cap_bits(u32 *cap)
> {
> struct cpuinfo_x86 *c = &cpu_data(0);
>
> - buf[2] |= ACPI_PDC_C_CAPABILITY_SMP;
> + *cap |= ACPI_PDC_C_CAPABILITY_SMP;
>
> if (cpu_has(c, X86_FEATURE_EST))
> - buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP;
> + *cap |= ACPI_PDC_EST_CAPABILITY_SWSMP;
>
> if (cpu_has(c, X86_FEATURE_ACPI))
> - buf[2] |= ACPI_PDC_T_FFH;
> + *cap |= ACPI_PDC_T_FFH;
>
> /*
> * If mwait/monitor is unsupported, C2/C3_FFH will be disabled
> */
> if (!cpu_has(c, X86_FEATURE_MWAIT))
> - buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
> + *cap &= ~(ACPI_PDC_C_C2C3_FFH);
> }
>
> static inline bool acpi_has_cpu_in_madt(void)
> diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
> index 5596862e6fea..ce3acd86dd12 100644
> --- a/drivers/acpi/processor_pdc.c
> +++ b/drivers/acpi/processor_pdc.c
> @@ -24,7 +24,7 @@ static void acpi_set_pdc_bits(u32 *buf)
> buf[2] = ACPI_PDC_SMP_T_SWCOORD;
>
> /* Twiddle arch-specific bits needed for _PDC */
> - arch_acpi_set_pdc_bits(buf);
> + arch_acpi_set_proc_cap_bits(&buf[2]);
> }
>
> static struct acpi_object_list *acpi_processor_alloc_pdc(void)
> --
> 2.41.0
>