Bug 9444
Summary: | AE_NO_ACPI_TABLES - Acer Travelmate C104TCi | ||
---|---|---|---|
Product: | ACPI | Reporter: | Len Brown (lenb) |
Component: | Config-Tables | Assignee: | Len Brown (lenb) |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | acpi-bugzilla, linux, rui.zhang, yakui.zhao |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.23 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
patch vs 2.6.24-rc3 to use ACPICA RSDP scanning code
Scan whether multiple RSDP exists Add the boot option to select which rsdp instance to use verify the checksum of RSDP to avoid bogus RSDP |
Description
Len Brown
2007-11-23 16:59:17 UTC
Created attachment 13724 [details]
patch vs 2.6.24-rc3 to use ACPICA RSDP scanning code
TJ, Please verify that this patch works on the failing system.
Yes, this patch returns rsdp with the correct checksum. Do you want to get this patch upstream? But some laptops may use the un-tested rsdp once this patch is applied. I mean they always use the first rsdp so they never know whether other rsdps can work for them even or not if they have the correct checksum. Yakui and me are looking at this issue and Yakui already has a fix for this issue. The first patch parse the whole memory and list all the rsdps found, with the debug messages as well if more than one rsdps exist, but the first rsdp is always returned by default. The second patch add a kernel parameter acpi_rsdp_instance so that users can choose which rsdp to use just like what we do for multiple MADTs. Len, what do you think about the latter fix? IMO, the best way is to verify which dsdt does windows choose so that we can use the same one... I agree with what Rui said. And the following two patches are attached. Created attachment 13767 [details]
Scan whether multiple RSDP exists
Created attachment 13768 [details]
Add the boot option to select which rsdp instance to use
The bug at hand is that Linux fails to boot into ACPI mode if it finds an RSDP with an invalid checksum. I belive that bug is fixed by the patch in comment #1, which is in acpi-test, queued for 2.6.25. If there are systems which have multiple valid RSDP's... In the past Linux used the first on it found, and after patch #1 is applied, we will continue to use the first one found -- no change in behaviour there. Using the common ACPICA code is the proper way to address this issue. If the common ACPICA code is not correct, then it must be fixed. Patching the old Linux routines for this is not the right way to go. RE: system with multiple _valid_ RSDP's... Has such a system been found, or are you proposing that we go fish for some? If we do go fishing, the patch must apply on top of the patch in comment #1, also it shouldn't add dmesg noise if it happens to find redundant RSDPs that have the same (poingter) contents. The patch in comment #1 has no problem for x86_64. But there is some problem for x86_32 if the system supports the NUMA architecture. In NUMA architecture the 32-bit OS will search SRAT table before initializing bootmem memory allocator and SRAT table is gotten by calling get_memcfg_from_srat, in which the function of acpi_find_rsdp. Because the function of acpi_os_map_memory is used in the ACPICA code and paging_init should be called before using acpi_os_map_memory, the patch in comment #1 will have some problems. If the checksum should be verified for RSDP , we can modify the patch #4 for getting the rsdp with valid checksum. The patch in comment #1 has no problem for x86_64. But there is some problem for x86_32 if the system supports the NUMA architecture. In NUMA architecture the 32-bit OS will search SRAT table before initializing bootmem memory allocator and SRAT table is gotten by calling get_memcfg_from_srat, in which the function of acpi_find_rsdp is called. Because the function of acpi_os_map_memory is used in the ACPICA code and paging_init should be called before using acpi_os_map_memory, the patch in comment #1 will have some problems. If the checksum should be verified for RSDP , we can modify the patch in comment #4 for getting the rsdp with valid checksum. Created attachment 13769 [details]
verify the checksum of RSDP to avoid bogus RSDP
Len, sorry it has taken me a while to respond on this. Unfortunately I'm unable to verify your patch since I no longer have access to the laptop that I developed the Ubuntu 2.6.22 kernel patch for. That said, provided the patch is simply ensuring it checks for a valid checksum then I can't see a problem. The patch in comment #1 can also be applied on the x86_32 system . Now it is tested in the acpi-test tree. Please ignore the patch in comment #4,5,10. Thanks. patch in comment #1 shipped in Linux-2.6.24-rc22 closed. Linux-2.6.24-git22, that is. |