diff -u -r acpica-unix-20050729/drivers/acpi/tables/tbutils.c acpica-unix-20050815/release_current/drivers/acpi/tables/tbutils.c --- acpica-unix-20050729/drivers/acpi/tables/tbutils.c 2005-07-30 00:10:15.000000000 -0400 +++ acpica-unix-20050815/release_current/drivers/acpi/tables/tbutils.c 2005-08-29 22:57:04.000000000 -0400 @@ -90,14 +90,22 @@ /* Examine all installed tables of this type */ while (table_desc) { - /* Compare Revision and oem_table_id */ - + /* + * If the table lengths match, perform a full bytewise compare. This + * means that we will allow tables with duplicate oem_table_id(s), as + * long as the tables are different in some way. + * + * Checking if the table has been loaded into the namespace means that + * we don't check for duplicate tables during the initial installation + * of tables within the RSDT/XSDT. + */ if ((table_desc->loaded_into_namespace) && - (table_desc->pointer->revision == - new_table_desc->pointer->revision) && - (!ACPI_MEMCMP (table_desc->pointer->oem_table_id, - new_table_desc->pointer->oem_table_id, 8))) { - /* This table is already installed */ + (table_desc->pointer->length == new_table_desc->pointer->length) && + (!ACPI_MEMCMP ( + (const char *) table_desc->pointer, + (const char *) new_table_desc->pointer, + (acpi_size) new_table_desc->pointer->length))) { + /* Match: this table is already installed */ ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Table [%4.4s] already installed: Rev %X oem_table_id [%8.8s]\n", diff -u -r acpica-unix-20050729/drivers/acpi/utilities/utdebug.c acpica-unix-20050815/release_current/drivers/acpi/utilities/utdebug.c --- acpica-unix-20050729/drivers/acpi/utilities/utdebug.c 2005-07-30 00:10:15.000000000 -0400 +++ acpica-unix-20050815/release_current/drivers/acpi/utilities/utdebug.c 2005-08-29 22:57:04.000000000 -0400 @@ -136,13 +136,13 @@ /* All Function names are longer than 4 chars, check is safe */ - if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_FUNCTION_PREFIX1) { + if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_PREFIX_MIXED) { /* This is the case where the original source has not been modified */ return (function_name + 4); } - if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_FUNCTION_PREFIX2) { + if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_PREFIX_LOWER) { /* This is the case where the source has been 'linuxized' */ return (function_name + 5); diff -u -r acpica-unix-20050729/drivers/acpi/utilities/utmisc.c acpica-unix-20050815/release_current/drivers/acpi/utilities/utmisc.c --- acpica-unix-20050729/drivers/acpi/utilities/utmisc.c 2005-07-30 00:10:15.000000000 -0400 +++ acpica-unix-20050815/release_current/drivers/acpi/utilities/utmisc.c 2005-08-29 22:57:04.000000000 -0400 @@ -86,6 +86,10 @@ for (i = 0; i < 32; i++) { if (!(acpi_gbl_owner_id_mask & (1 << i))) { + ACPI_DEBUG_PRINT ((ACPI_DB_VALUES, + "Current owner_id mask: %8.8X New ID: %2.2X\n", + acpi_gbl_owner_id_mask, (i + 1))); + acpi_gbl_owner_id_mask |= (1 << i); *owner_id = (acpi_owner_id) (i + 1); goto exit; @@ -132,7 +136,7 @@ acpi_status status; - ACPI_FUNCTION_TRACE ("ut_release_owner_id"); + ACPI_FUNCTION_TRACE_U32 ("ut_release_owner_id", owner_id); /* Always clear the input owner_id (zero is an invalid ID) */ diff -u -r acpica-unix-20050729/include/acpi/acconfig.h acpica-unix-20050815/release_current/include/acpi/acconfig.h --- acpica-unix-20050729/include/acpi/acconfig.h 2005-07-30 00:10:10.000000000 -0400 +++ acpica-unix-20050815/release_current/include/acpi/acconfig.h 2005-08-29 22:57:01.000000000 -0400 @@ -64,7 +64,7 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20050729 +#define ACPI_CA_VERSION 0x20050815 /* * OS name, used for the _OS object. The _OS object is essentially obsolete, diff -u -r acpica-unix-20050729/include/acpi/acnames.h acpica-unix-20050815/release_current/include/acpi/acnames.h --- acpica-unix-20050729/include/acpi/acnames.h 2005-07-30 00:10:10.000000000 -0400 +++ acpica-unix-20050815/release_current/include/acpi/acnames.h 2005-08-29 22:57:01.000000000 -0400 @@ -71,19 +71,15 @@ /* Definitions of the predefined namespace names */ -#define ACPI_UNKNOWN_NAME (u32) 0x3F3F3F3F /* Unknown name is "????" */ -#define ACPI_ROOT_NAME (u32) 0x5F5F5F5C /* Root name is "\___" */ -#define ACPI_SYS_BUS_NAME (u32) 0x5F53425F /* Sys bus name is "_SB_" */ +#define ACPI_UNKNOWN_NAME (u32) 0x3F3F3F3F /* Unknown name is "????" */ +#define ACPI_ROOT_NAME (u32) 0x5F5F5F5C /* Root name is "\___" */ + +#define ACPI_PREFIX_MIXED (u32) 0x69706341 /* "Acpi" */ +#define ACPI_PREFIX_LOWER (u32) 0x69706361 /* "acpi" */ #define ACPI_NS_ROOT_PATH "\\" #define ACPI_NS_SYSTEM_BUS "_SB_" -/*! [Begin] no source code translation (not handled by acpisrc) */ -#define ACPI_FUNCTION_PREFIX1 'ipcA' -#define ACPI_FUNCTION_PREFIX2 'ipca' -/*! [End] no source code translation !*/ - - #endif /* __ACNAMES_H__ */