As per ACPI specification r6.4, sec 5.2.12.19, a new sub
structure – multiprocessor wake-up structure - is added to the
ACPI Multiple APIC Description Table (MADT) to describe the
information of the mailbox. If a platform firmware produces the
multiprocessor wake-up structure, then OS may use this new
mailbox-based mechanism to wake up the APs.
Add ACPI MADT wake table parsing support for x86 platform and if
MADT wake table is present, update apic->wakeup_secondary_cpu with
new API which uses MADT wake mailbox to wake-up CPU.
Co-developed-by: Sean Christopherson<sean.j.christopherson@xxxxxxxxx>
Signed-off-by: Sean Christopherson<sean.j.christopherson@xxxxxxxxx>
Signed-off-by: Kuppuswamy Sathyanarayanan<sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx>
Reviewed-by: Andi Kleen<ak@xxxxxxxxxxxxxxx>
---
Changes since v3:
* Removed acpi_mp_wake_mailbox_init() and moved init code to
acpi_wakeup_cpu().
* Removed redundant NULL pointer check for acpi_mp_wake_mailbox.
* Added comments/debug prints as per Rafael's suggestion.
* Removed MADT/SVKL ACPI patches from this patchset. It will be
merged via ACPICA submission.
arch/x86/include/asm/apic.h | 3 ++
arch/x86/kernel/acpi/boot.c | 95 +++++++++++++++++++++++++++++++++++++
arch/x86/kernel/apic/apic.c | 8 ++++
3 files changed, 106 insertions(+)