aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/tables/tbxfroot.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-10-02 00:00:00 -0400
committerLen Brown <len.brown@intel.com>2006-03-31 02:19:03 -0500
commit52fc0b026e99b5d5d585095148d997d5634bbc25 (patch)
tree7bf93132cfd3e6957308a84198ee159f7d43cf6f /drivers/acpi/tables/tbxfroot.c
parent46358614ed5b031797522f1020e989c959a8d8a6 (diff)
[ACPI] ACPICA 20060210
Removed a couple of extraneous ACPI_ERROR messages that appeared during normal execution. These became apparent after the conversion from ACPI_DEBUG_PRINT. Fixed a problem where the CreateField operator could hang if the BitIndex or NumBits parameter referred to a named object. From Valery Podrezov. http://bugzilla.kernel.org/show_bug.cgi?id=5359 Fixed a problem where a DeRefOf operation on a buffer object incorrectly failed with an exception. This also fixes a couple of related RefOf and DeRefOf issues. From Valery Podrezov. http://bugzilla.kernel.org/show_bug.cgi?id=5360 http://bugzilla.kernel.org/show_bug.cgi?id=5387 http://bugzilla.kernel.org/show_bug.cgi?id=5392 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of AE_STRING_LIMIT on an out-of-bounds Index() operation. From Valery Podrezov. http://bugzilla.kernel.org/show_bug.cgi?id=5480 Implemented a memory cleanup at the end of the execution of each iteration of an AML While() loop, preventing the accumulation of outstanding objects. From Valery Podrezov. http://bugzilla.kernel.org/show_bug.cgi?id=5427 Eliminated a chunk of duplicate code in the object resolution code. From Valery Podrezov. http://bugzilla.kernel.org/show_bug.cgi?id=5336 Fixed several warnings during the 64-bit code generation. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/tables/tbxfroot.c')
-rw-r--r--drivers/acpi/tables/tbxfroot.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/acpi/tables/tbxfroot.c b/drivers/acpi/tables/tbxfroot.c
index a62db6af83c9..7f68b759f15a 100644
--- a/drivers/acpi/tables/tbxfroot.c
+++ b/drivers/acpi/tables/tbxfroot.c
@@ -75,6 +75,7 @@ acpi_status acpi_tb_validate_rsdp(struct rsdp_descriptor *rsdp)
75 * The signature and checksum must both be correct 75 * The signature and checksum must both be correct
76 */ 76 */
77 if (ACPI_STRNCMP((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0) { 77 if (ACPI_STRNCMP((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0) {
78
78 /* Nope, BAD Signature */ 79 /* Nope, BAD Signature */
79 80
80 return (AE_BAD_SIGNATURE); 81 return (AE_BAD_SIGNATURE);
@@ -217,6 +218,7 @@ acpi_get_firmware_table(acpi_string signature,
217 /* Ensure that we have a RSDP */ 218 /* Ensure that we have a RSDP */
218 219
219 if (!acpi_gbl_RSDP) { 220 if (!acpi_gbl_RSDP) {
221
220 /* Get the RSDP */ 222 /* Get the RSDP */
221 223
222 status = acpi_os_get_root_pointer(flags, &address); 224 status = acpi_os_get_root_pointer(flags, &address);
@@ -327,10 +329,12 @@ acpi_get_firmware_table(acpi_string signature,
327 /* Compare table signatures and table instance */ 329 /* Compare table signatures and table instance */
328 330
329 if (!ACPI_STRNCMP(header->signature, signature, ACPI_NAME_SIZE)) { 331 if (!ACPI_STRNCMP(header->signature, signature, ACPI_NAME_SIZE)) {
332
330 /* An instance of the table was found */ 333 /* An instance of the table was found */
331 334
332 j++; 335 j++;
333 if (j >= instance) { 336 if (j >= instance) {
337
334 /* Found the correct instance, get the entire table */ 338 /* Found the correct instance, get the entire table */
335 339
336 status = 340 status =
@@ -434,12 +438,14 @@ static u8 *acpi_tb_scan_memory_for_rsdp(u8 * start_address, u32 length)
434 438
435 for (mem_rover = start_address; mem_rover < end_address; 439 for (mem_rover = start_address; mem_rover < end_address;
436 mem_rover += ACPI_RSDP_SCAN_STEP) { 440 mem_rover += ACPI_RSDP_SCAN_STEP) {
441
437 /* The RSDP signature and checksum must both be correct */ 442 /* The RSDP signature and checksum must both be correct */
438 443
439 status = 444 status =
440 acpi_tb_validate_rsdp(ACPI_CAST_PTR 445 acpi_tb_validate_rsdp(ACPI_CAST_PTR
441 (struct rsdp_descriptor, mem_rover)); 446 (struct rsdp_descriptor, mem_rover));
442 if (ACPI_SUCCESS(status)) { 447 if (ACPI_SUCCESS(status)) {
448
443 /* Sig and checksum valid, we have found a real RSDP */ 449 /* Sig and checksum valid, we have found a real RSDP */
444 450
445 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 451 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
@@ -495,6 +501,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags)
495 * Scan supports either logical addressing or physical addressing 501 * Scan supports either logical addressing or physical addressing
496 */ 502 */
497 if ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) { 503 if ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) {
504
498 /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ 505 /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */
499 506
500 status = acpi_os_map_memory((acpi_physical_address) 507 status = acpi_os_map_memory((acpi_physical_address)
@@ -542,6 +549,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags)
542 acpi_os_unmap_memory(table_ptr, ACPI_EBDA_WINDOW_SIZE); 549 acpi_os_unmap_memory(table_ptr, ACPI_EBDA_WINDOW_SIZE);
543 550
544 if (mem_rover) { 551 if (mem_rover) {
552
545 /* Return the physical address */ 553 /* Return the physical address */
546 554
547 physical_address += 555 physical_address +=
@@ -576,6 +584,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags)
576 acpi_os_unmap_memory(table_ptr, ACPI_HI_RSDP_WINDOW_SIZE); 584 acpi_os_unmap_memory(table_ptr, ACPI_HI_RSDP_WINDOW_SIZE);
577 585
578 if (mem_rover) { 586 if (mem_rover) {
587
579 /* Return the physical address */ 588 /* Return the physical address */
580 589
581 physical_address = 590 physical_address =
@@ -609,6 +618,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags)
609 (physical_address), 618 (physical_address),
610 ACPI_EBDA_WINDOW_SIZE); 619 ACPI_EBDA_WINDOW_SIZE);
611 if (mem_rover) { 620 if (mem_rover) {
621
612 /* Return the physical address */ 622 /* Return the physical address */
613 623
614 table_info->physical_address = 624 table_info->physical_address =
@@ -624,6 +634,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags)
624 (ACPI_HI_RSDP_WINDOW_BASE), 634 (ACPI_HI_RSDP_WINDOW_BASE),
625 ACPI_HI_RSDP_WINDOW_SIZE); 635 ACPI_HI_RSDP_WINDOW_SIZE);
626 if (mem_rover) { 636 if (mem_rover) {
637
627 /* Found it, return the physical address */ 638 /* Found it, return the physical address */
628 639
629 table_info->physical_address = 640 table_info->physical_address =