[12/12] x86/ACPI/sleep: Move acpi_wakeup_address() definition into sleep.c
diff mbox series

Message ID 20191119002121.4107-13-sean.j.christopherson@intel.com
State Not Applicable, archived
Headers show
Series
  • treewide: break dependencies on x86's RM header
Related show

Commit Message

Sean Christopherson Nov. 19, 2019, 12:21 a.m. UTC
Move the definition of acpi_wakeup_address() into sleep.c to break
linux/acpi.h's dependency (by way of asm/acpi.h) on asm/realmode.h.
Everyone and their mother includes linux/acpi.h, i.e. modifying
realmode.h results in a full kernel rebuild, which makes the already
inscrutable real mode boot code even more difficult to understand and is
positively rage inducing when trying to make changes to x86's boot flow.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/acpi.h  |  6 +-----
 arch/x86/kernel/acpi/sleep.c | 11 +++++++++++
 2 files changed, 12 insertions(+), 5 deletions(-)

Comments

Rafael J. Wysocki Nov. 20, 2019, 11 a.m. UTC | #1
On Tuesday, November 19, 2019 1:21:21 AM CET Sean Christopherson wrote:
> Move the definition of acpi_wakeup_address() into sleep.c to break
> linux/acpi.h's dependency (by way of asm/acpi.h) on asm/realmode.h.
> Everyone and their mother includes linux/acpi.h, i.e. modifying
> realmode.h results in a full kernel rebuild, which makes the already
> inscrutable real mode boot code even more difficult to understand and is
> positively rage inducing when trying to make changes to x86's boot flow.
> 
> Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

> ---
>  arch/x86/include/asm/acpi.h  |  6 +-----
>  arch/x86/kernel/acpi/sleep.c | 11 +++++++++++
>  2 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index 57788ec6fa82..0cae3f773d44 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -13,7 +13,6 @@
>  #include <asm/processor.h>
>  #include <asm/mmu.h>
>  #include <asm/mpspec.h>
> -#include <asm/realmode.h>
>  #include <asm/x86_init.h>
>  
>  #ifdef CONFIG_ACPI_APEI
> @@ -62,10 +61,7 @@ static inline void acpi_disable_pci(void)
>  extern int (*acpi_suspend_lowlevel)(void);
>  
>  /* Physical address to resume after wakeup */
> -static inline unsigned long acpi_wakeup_address(void)
> -{
> -	return ((unsigned long)(real_mode_header->wakeup_start));
> -}
> +unsigned long acpi_wakeup_address(void);
>  
>  /*
>   * Check if the CPU can handle C2 and deeper
> diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
> index ca13851f0570..44d3fb1a1de3 100644
> --- a/arch/x86/kernel/acpi/sleep.c
> +++ b/arch/x86/kernel/acpi/sleep.c
> @@ -26,6 +26,17 @@ unsigned long acpi_realmode_flags;
>  static char temp_stack[4096];
>  #endif
>  
> +/**
> + * acpi_wakeup_address - provide physical address for S3 wakeup
> + *
> + * Returns the physical address where the kernel should be resumed after the
> + * system awakes from S3, e.g. for programming into the firmware waking vector.
> + */
> +unsigned long acpi_wakeup_address(void)
> +{
> +	return ((unsigned long)(real_mode_header->wakeup_start));
> +}
> +
>  /**
>   * x86_acpi_enter_sleep_state - enter sleep state
>   * @state: Sleep state to enter.
>

Patch
diff mbox series

diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 57788ec6fa82..0cae3f773d44 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -13,7 +13,6 @@ 
 #include <asm/processor.h>
 #include <asm/mmu.h>
 #include <asm/mpspec.h>
-#include <asm/realmode.h>
 #include <asm/x86_init.h>
 
 #ifdef CONFIG_ACPI_APEI
@@ -62,10 +61,7 @@  static inline void acpi_disable_pci(void)
 extern int (*acpi_suspend_lowlevel)(void);
 
 /* Physical address to resume after wakeup */
-static inline unsigned long acpi_wakeup_address(void)
-{
-	return ((unsigned long)(real_mode_header->wakeup_start));
-}
+unsigned long acpi_wakeup_address(void);
 
 /*
  * Check if the CPU can handle C2 and deeper
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index ca13851f0570..44d3fb1a1de3 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -26,6 +26,17 @@  unsigned long acpi_realmode_flags;
 static char temp_stack[4096];
 #endif
 
+/**
+ * acpi_wakeup_address - provide physical address for S3 wakeup
+ *
+ * Returns the physical address where the kernel should be resumed after the
+ * system awakes from S3, e.g. for programming into the firmware waking vector.
+ */
+unsigned long acpi_wakeup_address(void)
+{
+	return ((unsigned long)(real_mode_header->wakeup_start));
+}
+
 /**
  * x86_acpi_enter_sleep_state - enter sleep state
  * @state: Sleep state to enter.