mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
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:
parent
cb28909525
commit
8c53b318b2
@ -38,7 +38,10 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
|
|||||||
/* Low-level suspend routine. */
|
/* Low-level suspend routine. */
|
||||||
extern int acpi_suspend_lowlevel(void);
|
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
|
* 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_override;
|
||||||
unsigned int acpi_cpei_phys_cpuid;
|
unsigned int acpi_cpei_phys_cpuid;
|
||||||
|
|
||||||
unsigned long acpi_wakeup_address = 0;
|
|
||||||
|
|
||||||
#define ACPI_MAX_PLATFORM_INTERRUPTS 256
|
#define ACPI_MAX_PLATFORM_INTERRUPTS 256
|
||||||
|
|
||||||
/* Array to record platform interrupt vectors for generic interrupt routing. */
|
/* 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);
|
extern int (*acpi_suspend_lowlevel)(void);
|
||||||
|
|
||||||
/* Physical address to resume after wakeup */
|
/* 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
|
* 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)
|
static int acpi_sleep_prepare(u32 acpi_state)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ACPI_SLEEP
|
#ifdef CONFIG_ACPI_SLEEP
|
||||||
|
unsigned long acpi_wakeup_address;
|
||||||
|
|
||||||
/* do we have a wakeup address for S2 and S3? */
|
/* do we have a wakeup address for S2 and S3? */
|
||||||
if (acpi_state == ACPI_STATE_S3) {
|
if (acpi_state == ACPI_STATE_S3) {
|
||||||
|
acpi_wakeup_address = acpi_get_wakeup_address();
|
||||||
if (!acpi_wakeup_address)
|
if (!acpi_wakeup_address)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
acpi_set_waking_vector(acpi_wakeup_address);
|
acpi_set_waking_vector(acpi_wakeup_address);
|
||||||
|
Loading…
Reference in New Issue
Block a user