> > The two changes this patch makes are, unfortunately, unavoidable: > > > > 1. Turn the final "enter sleep" into a hypercall, so that Xen can do > > all the low-level context save/restore. The normal baremetal case > > is still localized in acpica/hwsleep.c, but it (may) make an > > excursion into arch code to see if it should do something else, and > > 2. Directly enter the sleep state, rather than save cpu context > > (which Xen does) > > > > Though, come to think of it, perhaps there's no harm in letting the > > kernel do its own state-saving. I'll check. Certainly the less different than bare metal you can be, the better. The last thing we need is to complicate something that in Linux has only been sort of working for > diff -r 855cb34ca992 drivers/acpi/acpica/hwsleep.c > --- a/drivers/acpi/acpica/hwsleep.c Tue Mar 17 19:53:17 2009 -0400 > +++ b/drivers/acpi/acpica/hwsleep.c Tue Mar 24 09:37:22 2009 -0700 > @@ -45,6 +45,7 @@ > #include <acpi/acpi.h> > #include "accommon.h" > #include "actables.h" > +#include <asm/tboot.h> > > #define _COMPONENT ACPI_HARDWARE > ACPI_MODULE_NAME("hwsleep") > @@ -332,6 +333,39 @@ acpi_status asmlinkage acpi_enter_sleep_ > > PM1Acontrol |= sleep_enable_reg_info->access_bit_mask; > PM1Bcontrol |= sleep_enable_reg_info->access_bit_mask; > + > +#ifdef CONFIG_TXT > +#define TB_COPY_GAS(tbg, g) \ > + tbg.space_id = g.space_id; \ > + tbg.bit_width = g.bit_width; \ > + tbg.bit_offset = g.bit_offset; \ > + tbg.access_width = g.access_width; \ > + tbg.address = g.address; > + > + if (tboot_in_measured_env()) { > + TB_COPY_GAS(tboot_shared->acpi_sinfo.pm1a_cnt_blk, > + acpi_gbl_FADT.xpm1a_control_block); > + TB_COPY_GAS(tboot_shared->acpi_sinfo.pm1b_cnt_blk, > + acpi_gbl_FADT.xpm1b_control_block); Who'd a thunk that suddently everybody would want to scribble on acpi_enter_sleep_state()? Note that acpica/hwsleep.c is a file from ACPICA that we share with BSD etc. Yes, we manage local changes in Linux, but we try to reduce them to zero over time, else we create a big maintenace headache. perhaps tboot_in_measured_env() could compile in as 0 for !CONFIG_TXT and you can get rid of the #ifdefs? Jeremy, I'm not excited about a proposed change to acpixf.h -- this is the API to ACPICA... thanks, -Len Brown, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html