Index: 2.6.13/drivers/acpi/tables/tbutils.c =================================================================== --- 2.6.13.orig/drivers/acpi/tables/tbutils.c 2005-09-02 17:24:53.000000000 -0400 +++ 2.6.13/drivers/acpi/tables/tbutils.c 2005-09-02 17:25:14.000000000 -0400 @@ -90,14 +90,22 @@ acpi_tb_is_table_installed ( /* 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", Index: 2.6.13/drivers/acpi/utilities/utdebug.c =================================================================== --- 2.6.13.orig/drivers/acpi/utilities/utdebug.c 2005-09-02 17:24:53.000000000 -0400 +++ 2.6.13/drivers/acpi/utilities/utdebug.c 2005-09-02 17:25:14.000000000 -0400 @@ -137,13 +137,13 @@ acpi_ut_trim_function_name ( /* 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); Index: 2.6.13/drivers/acpi/utilities/utmisc.c =================================================================== --- 2.6.13.orig/drivers/acpi/utilities/utmisc.c 2005-09-02 17:25:05.000000000 -0400 +++ 2.6.13/drivers/acpi/utilities/utmisc.c 2005-09-02 17:25:14.000000000 -0400 @@ -87,6 +87,10 @@ acpi_ut_allocate_owner_id ( 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; @@ -133,7 +137,7 @@ acpi_ut_release_owner_id ( 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) */ Index: 2.6.13/include/acpi/acconfig.h =================================================================== --- 2.6.13.orig/include/acpi/acconfig.h 2005-09-02 17:24:53.000000000 -0400 +++ 2.6.13/include/acpi/acconfig.h 2005-09-02 17:25:14.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, Index: 2.6.13/include/acpi/acnames.h =================================================================== --- 2.6.13.orig/include/acpi/acnames.h 2005-09-02 17:24:53.000000000 -0400 +++ 2.6.13/include/acpi/acnames.h 2005-09-02 17:25:14.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__ */