Bug 6550
Summary: | acpi_gbl_global_list randomly gets corroputed | ||
---|---|---|---|
Product: | ACPI | Reporter: | Luming Yu (luming.yu) |
Component: | ACPICA-Core | Assignee: | Robert Moore (Robert.Moore) |
Status: | CLOSED CODE_FIX | ||
Severity: | high | CC: | acpi-bugzilla |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.16 and later | Subsystem: | |
Regression: | --- | Bisected commit-id: |
Description
Luming Yu
2006-05-14 05:50:11 UTC
it is due to this: In acpi_ex_system_memory_space_handler: ... case ACPI_READ: *value = 0; c0217846: c7 00 00 00 00 00 movl $0x0,(%eax) c021784c: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) After applying the patch below, it becomes: In acpi_ex_system_memory_space_handler: ... case ACPI_READ: *value = 0; c0217843: c6 00 00 movb $0x0,(%eax) Because acpi_integer is U64. Then, the kernel boot just fine, even if the first SSDT table_ptr ==dfe57c28, and the second SSDT table_ptr ==dfe57a28 , which was supposed to fail according to my previous analysis. Thanks, Luming diff --git a/drivers/acpi/executer/exregion.c b/drivers/acpi/executer/exregion.c index 6a4cfdf..c0805ef 100644 --- a/drivers/acpi/executer/exregion.c +++ b/drivers/acpi/executer/exregion.c @@ -48,6 +48,7 @@ #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME("exregion") +extern struct acpi_table_header *debug_table_ptr; /***************************************************************************** ** * * FUNCTION: acpi_ex_system_memory_space_handler @@ -69,7 +70,7 @@ acpi_status acpi_ex_system_memory_space_handler(u32 function, acpi_physical_address address, u32 bit_width, - acpi_integer * value, + u8 * value, void *handler_context, void *region_context) { acpi_status status = AE_OK; diff --git a/include/acpi/acinterp.h b/include/acpi/acinterp.h index 9f22cfc..b2808f2 100644 --- a/include/acpi/acinterp.h +++ b/include/acpi/acinterp.h @@ -465,7 +465,7 @@ acpi_status acpi_ex_system_memory_space_handler(u32 function, acpi_physical_address address, u32 bit_width, - acpi_integer * value, + u8 * value, void *handler_context, void *region_context); *** Bug 6549 has been marked as a duplicate of this bug. *** Should be fixed in ACPICA version 20060512 ACPICA 20060512 shipped before linux-2.6.18-rc1 closed. |