#include <public/platform.h>
#include <asm/tboot.h>
-#define pmprintk(_l, _f, _a...) printk(_l "<PM> " _f "\n", ## _a )
-
static char opt_acpi_sleep[20];
string_param("acpi_sleep", opt_acpi_sleep);
if ( !spin_trylock(&pm_lock) )
return -EBUSY;
- pmprintk(XENLOG_INFO, "Preparing system for ACPI S%d state.", state);
+ printk(XENLOG_INFO "Preparing system for ACPI S%d state.", state);
freeze_domains();
acpi_sleep_prepare(state);
+ console_start_sync();
+ printk("Entering ACPI S%d state.\n", state);
+
local_irq_save(flags);
if ( (error = device_power_down()) )
{
- pmprintk(XENLOG_ERR, "Some devices failed to power down.");
+ printk(XENLOG_ERR "Some devices failed to power down.");
goto done;
}
break;
}
- pmprintk(XENLOG_DEBUG, "Back to C.");
-
/* Restore CR4 and EFER from cached values. */
write_cr4(read_cr4());
if ( cpu_has_efer )
device_power_up();
- pmprintk(XENLOG_INFO, "Finishing wakeup from ACPI S%d state.", state);
+ printk(XENLOG_INFO "Finishing wakeup from ACPI S%d state.", state);
done:
local_irq_restore(flags);
+ console_end_sync();
acpi_sleep_post(state);
if ( !hvm_cpu_up() )
BUG();
((sleep->pm1a_cnt_val ^ sleep->pm1b_cnt_val) &
ACPI_BITMASK_SLEEP_ENABLE) )
{
- pmprintk(XENLOG_ERR, "Mismatched pm1a/pm1b setting.");
+ gdprintk(XENLOG_ERR, "Mismatched pm1a/pm1b setting.");
return -EINVAL;
}
if ( tboot_in_measured_env() )
{
tboot_sleep(sleep_state);
- pmprintk(XENLOG_ERR, "TBOOT failed entering s3 state\n");
+ printk(XENLOG_ERR "TBOOT failed entering s3 state\n");
return_ACPI_STATUS(AE_ERROR);
}
p += strspn(p, ", \t");
}
- printk(XENLOG_INFO "<PM> ACPI (supports");
+ printk(XENLOG_INFO "ACPI sleep modes:");
for ( i = 0; i < ACPI_S_STATE_COUNT; i++ )
{
if ( i == ACPI_STATE_S3 )
else
sleep_states[i] = 0;
}
- printk(")\n");
+ printk("\n");
return 0;
}