I'm currently debugging a weird issue where the PC appears to be attempting to S3 suspend prematurely in acpi_enter_sleep_state(). The PC is a Sony Vaio PCG-SRX51P/B notebook (Intel 850MHz, 384MB, kernel 2.6.20-16) with Ubuntu 7.04 Feisty 32-bit with CONFIG_ACPI_DEBUG. I added some additional debug messages to acpi_enter_sleep_state() and find that after the 1st write to "PM1B (SLP_TYP data)" but before writing "PM1A (SLP_TYP + SLP_EN)" the PC appears to suspend prematurely, and then instantly comes back with "Back to C!". It doesn't seem to fail via the ACPI_FAILURE()... return_ACPI_STATUS() logic as far as I can tell. Here's the log entries: kernel: [ 328.044000] hwsleep-0285 [03] enter_sleep_state : Entering sleep state [S3] kernel: [ 328.044000] hwsleep-0308 [03] enter_sleep_state : Writing PM1A (SLP_TYP data) 1401 kernel: [ 328.044000] hwsleep-0319 [03] enter_sleep_state : Writing PM1B (SLP_TYP data) 1401 kernel: [ 328.044000] hwsleep-0326 [03] enter_sleep_state : Just written PM1B (SLP_TYP data). status=0x0 kernel: [ 328.044000] Back to C! Any ideas? TJ. -----drivers/acpi/hardware/hwsleep.c::acpi_enter_sleep_state()---- /* Write #1: fill in SLP_TYP data */ #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Writing PM1A (SLP_TYP data) %x\n", PM1Acontrol)); #endif status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1Acontrol); if (ACPI_FAILURE(status)) { return_ACPI_STATUS(status); } #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Writing PM1B (SLP_TYP data) %x\n", PM1Bcontrol)); #endif status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1Bcontrol); #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Just written PM1B (SLP_TYP data). status=0x%x\n", status)); #endif if (ACPI_FAILURE(status)) { #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Failed writing PM1B (SLP_TYP data). status=0x%x\n", status)); #endif return_ACPI_STATUS(status); } /* Insert SLP_ENABLE bit */ PM1Acontrol |= sleep_enable_reg_info->access_bit_mask; PM1Bcontrol |= sleep_enable_reg_info->access_bit_mask; /* Write #2: SLP_TYP + SLP_EN */ #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "About to flush CPU cache\n")); #endif ACPI_FLUSH_CPU_CACHE(); #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Writing PM1A (SLP_TYP + SLP_EN) %x\n", PM1Acontrol)); #endif status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1Acontrol); if (ACPI_FAILURE(status)) { return_ACPI_STATUS(status); } #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Writing PM1B (SLP_TYP + SLP_EN) %x\n", PM1Bcontrol)); #endif status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1Bcontrol); if (ACPI_FAILURE(status)) { return_ACPI_STATUS(status); } #ifdef DEBUG_RESUME ACPI_DEBUG_PRINT((ACPI_DB_INIT, "Just done sleep S3\n")); #endif - 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