Re: [Xen-devel] RE: [PATCH 2/7] x86, acpi, tboot: Have a ACPI sleep override instead of calling tboot_sleep.
From: Jeremy Fitzhardinge <hidden>
Date: 2011-09-07 17:27:14
On 09/06/2011 09:20 PM, Cihula, Joseph wrote:
quoted
From: Konrad Rzeszutek Wilk [mailto:konrad.wilk@oracle.com] Sent: Wednesday, August 31, 2011 11:31 AM The ACPI suspend path makes a call to tboot_sleep right before it writes the PM1A, PM1B values. We replace the direct call to tboot via an registration callback similar to __acpi_register_gsi. CC: Thomas Gleixner <redacted> CC: "H. Peter Anvin" <hpa@zytor.com> CC: x86@kernel.org CC: Len Brown <redacted> CC: Joseph Cihula <redacted> CC: Shane Wang <redacted> CC: xen-devel@lists.xensource.com CC: linux-pm@lists.linux-foundation.org CC: tboot-devel@lists.sourceforge.net CC: linux-acpi@vger.kernel.org Signed-off-by: Konrad Rzeszutek Wilk <redacted> --- arch/x86/include/asm/acpi.h | 3 +++ arch/x86/kernel/acpi/boot.c | 3 +++ arch/x86/kernel/tboot.c | 13 +++++++++---- drivers/acpi/acpica/hwsleep.c | 12 ++++++++++-- include/linux/tboot.h | 3 ++- 5 files changed, 27 insertions(+), 7 deletions(-)diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 610001d..49864a1100644--- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h@@ -98,6 +98,9 @@ void acpi_pic_sci_set_trigger(unsigned int, u16); extern int(*__acpi_register_gsi)(struct device *dev, u32 gsi, int trigger, int polarity); +extern int (*__acpi_override_sleep)(u8 sleep_state, u32 pm1a_ctrl, + u32 pm1b_ctrl, bool *skip_rest); + static inline void disable_acpi(void) { acpi_disabled = 1;diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4558f0d..d191b4c100644--- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c@@ -552,6 +552,9 @@ static int acpi_register_gsi_ioapic(struct device *dev, u32 gsi, int(*__acpi_register_gsi)(struct device *dev, u32 gsi, int trigger, int polarity) = acpi_register_gsi_pic; +int (*__acpi_override_sleep)(u8 sleep_state, u32 pm1a_ctrl, + u32 pm1b_ctrl, bool *skip_rest) = NULL; + /* * success: return IRQ number (>=0) * failure: return < 0diff --git a/arch/x86/kernel/tboot.c b/arch/x86/kernel/tboot.c index 30ac65d..a18070c 100644 --- a/arch/x86/kernel/tboot.c +++ b/arch/x86/kernel/tboot.c@@ -41,7 +41,7 @@ #include <asm/setup.h> #include <asm/e820.h> #include <asm/io.h> - +#include <linux/acpi.h> #include "acpi/realmode/wakeup.h" /* Global pointer to shared data; NULL means no measured launch. */ @@ -270,7 +270,8 @@ staticvoid tboot_copy_fadt(const struct acpi_table_fadt *fadt) offsetof(struct acpi_table_facs, firmware_waking_vector); } -void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control) +int tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control, + bool *skip_rest)Don't you need to use the 'unused' attrib on skip_rest in order to prevent compiler warnings?
No, gcc doesn't warn about unused parameters.
J