diff mbox series

[v11,2/9] ACPI: Adjust #ifdef for *_lps0_dev use

Message ID 20230809185453.40916-3-mario.limonciello@amd.com (mailing list archive)
State Superseded
Delegated to: Bjorn Helgaas
Headers show
Series Fix wakeup problems on some AMD platforms | expand

Commit Message

Mario Limonciello Aug. 9, 2023, 6:54 p.m. UTC
The #ifdef currently is guarded against CONFIG_X86, but these are
actually sleep related functions so they should be tied to
CONFIG_ACPI_SLEEP.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
v9->v10:
 * split from other patches
---
 include/linux/acpi.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Bjorn Helgaas Aug. 15, 2023, 6:28 p.m. UTC | #1
On Wed, Aug 09, 2023 at 01:54:46PM -0500, Mario Limonciello wrote:
> The #ifdef currently is guarded against CONFIG_X86, but these are
> actually sleep related functions so they should be tied to
> CONFIG_ACPI_SLEEP.
> 
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> v9->v10:
>  * split from other patches
> ---
>  include/linux/acpi.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 0d5277b7c6323..13a0fca3539f0 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -1100,7 +1100,7 @@ void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state,
>  
>  acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
>  					   u32 val_a, u32 val_b);
> -#ifdef CONFIG_X86
> +#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)

What's the connection to CONFIG_ACPI_SLEEP?

The acpi_register_lps0_dev() implementation in
drivers/acpi/x86/s2idle.c is under #ifdef CONFIG_SUSPEND (and
obviously s2idle.c is only compiled at all if CONFIG_X86).

Both callers (amd_pmc_probe() and thinkpad_acpi_module_init()) are
under #ifdef CONFIG_SUSPEND.

>  struct acpi_s2idle_dev_ops {
>  	struct list_head list_node;
>  	void (*prepare)(void);
> @@ -1109,7 +1109,7 @@ struct acpi_s2idle_dev_ops {
>  };
>  int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg);
>  void acpi_unregister_lps0_dev(struct acpi_s2idle_dev_ops *arg);
> -#endif /* CONFIG_X86 */
> +#endif /* CONFIG_ACPI_SLEEP && CONFIG_X86 */
>  #ifndef CONFIG_IA64
>  void arch_reserve_mem_area(acpi_physical_address addr, size_t size);
>  #else
> -- 
> 2.34.1
>
Mario Limonciello Aug. 15, 2023, 6:32 p.m. UTC | #2
On 8/15/2023 13:28, Bjorn Helgaas wrote:
> On Wed, Aug 09, 2023 at 01:54:46PM -0500, Mario Limonciello wrote:
>> The #ifdef currently is guarded against CONFIG_X86, but these are
>> actually sleep related functions so they should be tied to
>> CONFIG_ACPI_SLEEP.
>>
>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>> ---
>> v9->v10:
>>   * split from other patches
>> ---
>>   include/linux/acpi.h | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
>> index 0d5277b7c6323..13a0fca3539f0 100644
>> --- a/include/linux/acpi.h
>> +++ b/include/linux/acpi.h
>> @@ -1100,7 +1100,7 @@ void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state,
>>   
>>   acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
>>   					   u32 val_a, u32 val_b);
>> -#ifdef CONFIG_X86
>> +#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
> 
> What's the connection to CONFIG_ACPI_SLEEP?
> 
> The acpi_register_lps0_dev() implementation in
> drivers/acpi/x86/s2idle.c is under #ifdef CONFIG_SUSPEND (and
> obviously s2idle.c is only compiled at all if CONFIG_X86).
> 
> Both callers (amd_pmc_probe() and thinkpad_acpi_module_init()) are
> under #ifdef CONFIG_SUSPEND.
> 

My thought process was that s2idle.c is from drivers/acpi/x86 and only 
can be used in the context of ACPI enabled sleep.

But I could see the argument for CONFIG_SUSPEND being stronger.  I'll 
adjust and make sure the rest of the series works with CONFIG_SUSPEND.

Thanks,

>>   struct acpi_s2idle_dev_ops {
>>   	struct list_head list_node;
>>   	void (*prepare)(void);
>> @@ -1109,7 +1109,7 @@ struct acpi_s2idle_dev_ops {
>>   };
>>   int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg);
>>   void acpi_unregister_lps0_dev(struct acpi_s2idle_dev_ops *arg);
>> -#endif /* CONFIG_X86 */
>> +#endif /* CONFIG_ACPI_SLEEP && CONFIG_X86 */
>>   #ifndef CONFIG_IA64
>>   void arch_reserve_mem_area(acpi_physical_address addr, size_t size);
>>   #else
>> -- 
>> 2.34.1
>>
Bjorn Helgaas Aug. 16, 2023, 4:57 p.m. UTC | #3
On Tue, Aug 15, 2023 at 01:32:05PM -0500, Mario Limonciello wrote:
> On 8/15/2023 13:28, Bjorn Helgaas wrote:
> > On Wed, Aug 09, 2023 at 01:54:46PM -0500, Mario Limonciello wrote:
> > > The #ifdef currently is guarded against CONFIG_X86, but these are
> > > actually sleep related functions so they should be tied to
> > > CONFIG_ACPI_SLEEP.
> > > 
> > > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> > > ---
> > > v9->v10:
> > >   * split from other patches
> > > ---
> > >   include/linux/acpi.h | 4 ++--
> > >   1 file changed, 2 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> > > index 0d5277b7c6323..13a0fca3539f0 100644
> > > --- a/include/linux/acpi.h
> > > +++ b/include/linux/acpi.h
> > > @@ -1100,7 +1100,7 @@ void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state,
> > >   acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
> > >   					   u32 val_a, u32 val_b);
> > > -#ifdef CONFIG_X86
> > > +#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
> > 
> > What's the connection to CONFIG_ACPI_SLEEP?
> > 
> > The acpi_register_lps0_dev() implementation in
> > drivers/acpi/x86/s2idle.c is under #ifdef CONFIG_SUSPEND (and
> > obviously s2idle.c is only compiled at all if CONFIG_X86).
> > 
> > Both callers (amd_pmc_probe() and thinkpad_acpi_module_init()) are
> > under #ifdef CONFIG_SUSPEND.
> 
> My thought process was that s2idle.c is from drivers/acpi/x86 and only can
> be used in the context of ACPI enabled sleep.
> 
> But I could see the argument for CONFIG_SUSPEND being stronger.  I'll adjust
> and make sure the rest of the series works with CONFIG_SUSPEND.

It's very hard to verify that it's correct if the declaration is under
a different #ifdef than the implementation, whereas it's trivial if it
uses the same #ifdef.

Bjorn
diff mbox series

Patch

diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 0d5277b7c6323..13a0fca3539f0 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -1100,7 +1100,7 @@  void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state,
 
 acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
 					   u32 val_a, u32 val_b);
-#ifdef CONFIG_X86
+#if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
 struct acpi_s2idle_dev_ops {
 	struct list_head list_node;
 	void (*prepare)(void);
@@ -1109,7 +1109,7 @@  struct acpi_s2idle_dev_ops {
 };
 int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg);
 void acpi_unregister_lps0_dev(struct acpi_s2idle_dev_ops *arg);
-#endif /* CONFIG_X86 */
+#endif /* CONFIG_ACPI_SLEEP && CONFIG_X86 */
 #ifndef CONFIG_IA64
 void arch_reserve_mem_area(acpi_physical_address addr, size_t size);
 #else