ACPI/sleep: Convert acpi_wakeup_address into a function
Convert acpi_wakeup_address from a raw variable into a function so that x86 can wrap its dereference of the real mode boot header in a function instead of broadcasting it to the world via a #define. This sets the stage for a future patch to move x86's definition of the new function, acpi_get_wakeup_address(), out of asm/acpi.h and thus break acpi.h's dependency on asm/realmode.h. No functional change intended. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Link: https://lkml.kernel.org/r/20191126165417.22423-12-sean.j.christopherson@intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Родитель
cb28909525
Коммит
8c53b318b2
|
@ -38,7 +38,10 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
|
|||
/* Low-level suspend routine. */
|
||||
extern int acpi_suspend_lowlevel(void);
|
||||
|
||||
extern unsigned long acpi_wakeup_address;
|
||||
static inline unsigned long acpi_get_wakeup_address(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Record the cpei override flag and current logical cpu. This is
|
||||
|
|
|
@ -42,8 +42,6 @@ int acpi_lapic;
|
|||
unsigned int acpi_cpei_override;
|
||||
unsigned int acpi_cpei_phys_cpuid;
|
||||
|
||||
unsigned long acpi_wakeup_address = 0;
|
||||
|
||||
#define ACPI_MAX_PLATFORM_INTERRUPTS 256
|
||||
|
||||
/* Array to record platform interrupt vectors for generic interrupt routing. */
|
||||
|
|
|
@ -62,7 +62,10 @@ static inline void acpi_disable_pci(void)
|
|||
extern int (*acpi_suspend_lowlevel)(void);
|
||||
|
||||
/* Physical address to resume after wakeup */
|
||||
#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
|
||||
static inline unsigned long acpi_get_wakeup_address(void)
|
||||
{
|
||||
return ((unsigned long)(real_mode_header->wakeup_start));
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if the CPU can handle C2 and deeper
|
||||
|
|
|
@ -61,8 +61,11 @@ static struct notifier_block tts_notifier = {
|
|||
static int acpi_sleep_prepare(u32 acpi_state)
|
||||
{
|
||||
#ifdef CONFIG_ACPI_SLEEP
|
||||
unsigned long acpi_wakeup_address;
|
||||
|
||||
/* do we have a wakeup address for S2 and S3? */
|
||||
if (acpi_state == ACPI_STATE_S3) {
|
||||
acpi_wakeup_address = acpi_get_wakeup_address();
|
||||
if (!acpi_wakeup_address)
|
||||
return -EFAULT;
|
||||
acpi_set_waking_vector(acpi_wakeup_address);
|
||||
|
|
Загрузка…
Ссылка в новой задаче