FreeBSD local changes against acpica-unix-20071019 --- sys/contrib/dev/acpica/dbcmds.c 2007-10-22 11:56:30.000000000 -0400 +++ sys/contrib/dev/acpica/dbcmds.c 2007-10-22 12:16:10.000000000 -0400 @@ -623,7 +623,9 @@ AcpiDbDisassembleAml ( NumStatements = ACPI_STRTOUL (Statements, NULL, 0); } +#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (NULL, Op, NumStatements); +#endif } @@ -687,7 +689,9 @@ AcpiDbDisassembleMethod ( WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); +#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (NULL, Op, 0); +#endif AcpiPsDeleteParseTree (Op); return (AE_OK); } --- sys/contrib/dev/acpica/dbxface.c 2007-10-22 11:56:30.000000000 -0400 +++ sys/contrib/dev/acpica/dbxface.c 2007-10-22 12:09:58.000000000 -0400 @@ -373,7 +373,9 @@ AcpiDbSingleStep ( /* Now we can display it */ +#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (WalkState, DisplayOp, ACPI_UINT32_MAX); +#endif if ((Op->Common.AmlOpcode == AML_IF_OP) || (Op->Common.AmlOpcode == AML_WHILE_OP)) @@ -485,9 +487,11 @@ AcpiDbInitialize ( AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; AcpiGbl_DbOpt_tables = FALSE; - AcpiGbl_DbOpt_disasm = FALSE; AcpiGbl_DbOpt_stats = FALSE; +#ifdef ACPI_DISASSEMBLER + AcpiGbl_DbOpt_disasm = FALSE; AcpiGbl_DbOpt_verbose = TRUE; +#endif AcpiGbl_DbOpt_ini_methods = TRUE; AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE); @@ -536,11 +540,13 @@ AcpiDbInitialize ( } } +#ifdef ACPI_DISASSEMBLER if (!AcpiGbl_DbOpt_verbose) { AcpiGbl_DbOpt_disasm = TRUE; AcpiGbl_DbOpt_stats = FALSE; } +#endif return (AE_OK); } --- sys/contrib/dev/acpica/hwsleep.c 2007-10-22 11:56:30.000000000 -0400 +++ sys/contrib/dev/acpica/hwsleep.c 2007-10-22 12:10:52.000000000 -0400 @@ -358,6 +360,7 @@ AcpiEnterSleepState ( ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; UINT32 InValue; + UINT32 Retry; ACPI_STATUS Status; @@ -511,6 +514,7 @@ AcpiEnterSleepState ( /* Wait until we enter sleep state */ + Retry = 1000; do { Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue); @@ -519,6 +523,15 @@ AcpiEnterSleepState ( return_ACPI_STATUS (Status); } + /* + * Some BIOSs don't set WAK_STS at all. Give up waiting after + * 1000 retries if it still isn't set. + */ + if (Retry-- == 0) + { + break; + } + /* Spin until we wake */ } while (!InValue); --- sys/contrib/dev/acpica/tbxface.c 2007-10-22 11:56:31.000000000 -0400 +++ sys/contrib/dev/acpica/tbxface.c 2007-10-22 12:16:15.000000000 -0400 @@ -535,6 +535,7 @@ AcpiTbLoadNamespace ( ACPI_STATUS Status; ACPI_TABLE_HEADER *Table; ACPI_NATIVE_UINT i; + BOOLEAN DsdtOverriden; ACPI_FUNCTION_TRACE (TbLoadNamespace); @@ -558,6 +559,7 @@ AcpiTbLoadNamespace ( /* * Find DSDT table */ + DsdtOverriden = FALSE; Status = AcpiOsTableOverride ( AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer, &Table); if (ACPI_SUCCESS (Status) && Table) @@ -569,6 +571,7 @@ AcpiTbLoadNamespace ( AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer = Table; AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Length = Table->Length; AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags = ACPI_TABLE_ORIGIN_UNKNOWN; + DsdtOverriden = TRUE; ACPI_INFO ((AE_INFO, "Table DSDT replaced by host OS")); AcpiTbPrintTableHeader (0, Table); @@ -598,7 +601,7 @@ AcpiTbLoadNamespace ( * Load any SSDT or PSDT tables. Note: Loop leaves tables locked */ (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - for (i = 0; i < AcpiGbl_RootTableList.Count; ++i) + for (i = 2; i < AcpiGbl_RootTableList.Count; ++i) { if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), ACPI_SIG_SSDT) && @@ -609,6 +612,15 @@ AcpiTbLoadNamespace ( continue; } + /* Delete SSDT when DSDT is overriden */ + + if (ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), + ACPI_SIG_SSDT) && DsdtOverriden) + { + AcpiTbDeleteTable (&AcpiGbl_RootTableList.Tables[i]); + continue; + } + /* Ignore errors while loading tables, get as many as possible */ (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); --- sys/contrib/dev/acpica/utmisc.c 2007-10-22 11:56:31.000000000 -0400 +++ sys/contrib/dev/acpica/utmisc.c 2007-10-22 12:11:08.000000000 -0400 @@ -1295,6 +1295,11 @@ AcpiUtInfo ( { va_list args; +#ifdef _KERNEL + /* Temporarily hide too verbose printfs. */ + if (!bootverbose) + return; +#endif /* * Removed ModuleName, LineNumber, and acpica version, not needed