diff options
author | Bob Moore <robert.moore@intel.com> | 2006-10-02 00:00:00 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-03-31 02:19:03 -0500 |
commit | 52fc0b026e99b5d5d585095148d997d5634bbc25 (patch) | |
tree | 7bf93132cfd3e6957308a84198ee159f7d43cf6f /drivers/acpi/tables | |
parent | 46358614ed5b031797522f1020e989c959a8d8a6 (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')
-rw-r--r-- | drivers/acpi/tables/tbconvrt.c | 3 | ||||
-rw-r--r-- | drivers/acpi/tables/tbget.c | 9 | ||||
-rw-r--r-- | drivers/acpi/tables/tbgetall.c | 1 | ||||
-rw-r--r-- | drivers/acpi/tables/tbinstal.c | 1 | ||||
-rw-r--r-- | drivers/acpi/tables/tbrsdt.c | 1 | ||||
-rw-r--r-- | drivers/acpi/tables/tbutils.c | 2 | ||||
-rw-r--r-- | drivers/acpi/tables/tbxface.c | 3 | ||||
-rw-r--r-- | drivers/acpi/tables/tbxfroot.c | 11 |
8 files changed, 31 insertions, 0 deletions
diff --git a/drivers/acpi/tables/tbconvrt.c b/drivers/acpi/tables/tbconvrt.c index 03b37d2223bc..254ebdbb7bef 100644 --- a/drivers/acpi/tables/tbconvrt.c +++ b/drivers/acpi/tables/tbconvrt.c | |||
@@ -147,6 +147,7 @@ acpi_status acpi_tb_convert_to_xsdt(struct acpi_table_desc *table_info) | |||
147 | /* Copy the table pointers */ | 147 | /* Copy the table pointers */ |
148 | 148 | ||
149 | for (i = 0; i < acpi_gbl_rsdt_table_count; i++) { | 149 | for (i = 0; i < acpi_gbl_rsdt_table_count; i++) { |
150 | |||
150 | /* RSDT pointers are 32 bits, XSDT pointers are 64 bits */ | 151 | /* RSDT pointers are 32 bits, XSDT pointers are 64 bits */ |
151 | 152 | ||
152 | if (acpi_gbl_root_table_type == ACPI_TABLE_TYPE_RSDT) { | 153 | if (acpi_gbl_root_table_type == ACPI_TABLE_TYPE_RSDT) { |
@@ -515,6 +516,7 @@ acpi_status acpi_tb_convert_table_fadt(void) | |||
515 | 516 | ||
516 | if (acpi_gbl_FADT->revision >= FADT2_REVISION_ID) { | 517 | if (acpi_gbl_FADT->revision >= FADT2_REVISION_ID) { |
517 | if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev2)) { | 518 | if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev2)) { |
519 | |||
518 | /* Length is too short to be a V2.0 table */ | 520 | /* Length is too short to be a V2.0 table */ |
519 | 521 | ||
520 | ACPI_WARNING((AE_INFO, | 522 | ACPI_WARNING((AE_INFO, |
@@ -603,6 +605,7 @@ acpi_status acpi_tb_build_common_facs(struct acpi_table_desc *table_info) | |||
603 | if ((acpi_gbl_RSDP->revision < 2) || | 605 | if ((acpi_gbl_RSDP->revision < 2) || |
604 | (acpi_gbl_FACS->length < 32) || | 606 | (acpi_gbl_FACS->length < 32) || |
605 | (!(acpi_gbl_FACS->xfirmware_waking_vector))) { | 607 | (!(acpi_gbl_FACS->xfirmware_waking_vector))) { |
608 | |||
606 | /* ACPI 1.0 FACS or short table or optional X_ field is zero */ | 609 | /* ACPI 1.0 FACS or short table or optional X_ field is zero */ |
607 | 610 | ||
608 | acpi_gbl_common_fACS.firmware_waking_vector = ACPI_CAST_PTR(u64, | 611 | acpi_gbl_common_fACS.firmware_waking_vector = ACPI_CAST_PTR(u64, |
diff --git a/drivers/acpi/tables/tbget.c b/drivers/acpi/tables/tbget.c index 09b4ee6dfd60..4615e1afe8de 100644 --- a/drivers/acpi/tables/tbget.c +++ b/drivers/acpi/tables/tbget.c | |||
@@ -148,6 +148,10 @@ acpi_tb_get_table_header(struct acpi_pointer *address, | |||
148 | sizeof(struct acpi_table_header), | 148 | sizeof(struct acpi_table_header), |
149 | (void *)&header); | 149 | (void *)&header); |
150 | if (ACPI_FAILURE(status)) { | 150 | if (ACPI_FAILURE(status)) { |
151 | ACPI_ERROR((AE_INFO, | ||
152 | "Could not map memory at %8.8X%8.8X for table header", | ||
153 | ACPI_FORMAT_UINT64(address->pointer. | ||
154 | physical))); | ||
151 | return_ACPI_STATUS(status); | 155 | return_ACPI_STATUS(status); |
152 | } | 156 | } |
153 | 157 | ||
@@ -208,6 +212,7 @@ acpi_tb_get_table_body(struct acpi_pointer *address, | |||
208 | 212 | ||
209 | status = acpi_tb_table_override(header, table_info); | 213 | status = acpi_tb_table_override(header, table_info); |
210 | if (ACPI_SUCCESS(status)) { | 214 | if (ACPI_SUCCESS(status)) { |
215 | |||
211 | /* Table was overridden by the host OS */ | 216 | /* Table was overridden by the host OS */ |
212 | 217 | ||
213 | return_ACPI_STATUS(status); | 218 | return_ACPI_STATUS(status); |
@@ -250,6 +255,7 @@ acpi_tb_table_override(struct acpi_table_header *header, | |||
250 | */ | 255 | */ |
251 | status = acpi_os_table_override(header, &new_table); | 256 | status = acpi_os_table_override(header, &new_table); |
252 | if (ACPI_FAILURE(status)) { | 257 | if (ACPI_FAILURE(status)) { |
258 | |||
253 | /* Some severe error from the OSL, but we basically ignore it */ | 259 | /* Some severe error from the OSL, but we basically ignore it */ |
254 | 260 | ||
255 | ACPI_EXCEPTION((AE_INFO, status, | 261 | ACPI_EXCEPTION((AE_INFO, status, |
@@ -258,6 +264,7 @@ acpi_tb_table_override(struct acpi_table_header *header, | |||
258 | } | 264 | } |
259 | 265 | ||
260 | if (!new_table) { | 266 | if (!new_table) { |
267 | |||
261 | /* No table override */ | 268 | /* No table override */ |
262 | 269 | ||
263 | return_ACPI_STATUS(AE_NO_ACPI_TABLES); | 270 | return_ACPI_STATUS(AE_NO_ACPI_TABLES); |
@@ -381,6 +388,7 @@ acpi_tb_get_this_table(struct acpi_pointer *address, | |||
381 | 388 | ||
382 | #if (!ACPI_CHECKSUM_ABORT) | 389 | #if (!ACPI_CHECKSUM_ABORT) |
383 | if (ACPI_FAILURE(status)) { | 390 | if (ACPI_FAILURE(status)) { |
391 | |||
384 | /* Ignore the error if configuration says so */ | 392 | /* Ignore the error if configuration says so */ |
385 | 393 | ||
386 | status = AE_OK; | 394 | status = AE_OK; |
@@ -440,6 +448,7 @@ acpi_tb_get_table_ptr(acpi_table_type table_type, | |||
440 | * instance is always in the list head. | 448 | * instance is always in the list head. |
441 | */ | 449 | */ |
442 | if (instance == 1) { | 450 | if (instance == 1) { |
451 | |||
443 | /* Get the first */ | 452 | /* Get the first */ |
444 | 453 | ||
445 | *table_ptr_loc = NULL; | 454 | *table_ptr_loc = NULL; |
diff --git a/drivers/acpi/tables/tbgetall.c b/drivers/acpi/tables/tbgetall.c index 134e5dce0bc1..b4ec61d7cf06 100644 --- a/drivers/acpi/tables/tbgetall.c +++ b/drivers/acpi/tables/tbgetall.c | |||
@@ -223,6 +223,7 @@ acpi_status acpi_tb_get_required_tables(void) | |||
223 | * any SSDTs. | 223 | * any SSDTs. |
224 | */ | 224 | */ |
225 | for (i = 0; i < acpi_gbl_rsdt_table_count; i++) { | 225 | for (i = 0; i < acpi_gbl_rsdt_table_count; i++) { |
226 | |||
226 | /* Get the table address from the common internal XSDT */ | 227 | /* Get the table address from the common internal XSDT */ |
227 | 228 | ||
228 | address.pointer.value = acpi_gbl_XSDT->table_offset_entry[i]; | 229 | address.pointer.value = acpi_gbl_XSDT->table_offset_entry[i]; |
diff --git a/drivers/acpi/tables/tbinstal.c b/drivers/acpi/tables/tbinstal.c index 7ffd0fddb4e5..ec2cb978b7c4 100644 --- a/drivers/acpi/tables/tbinstal.c +++ b/drivers/acpi/tables/tbinstal.c | |||
@@ -84,6 +84,7 @@ acpi_tb_match_signature(char *signature, | |||
84 | 84 | ||
85 | if (!ACPI_STRNCMP(signature, acpi_gbl_table_data[i].signature, | 85 | if (!ACPI_STRNCMP(signature, acpi_gbl_table_data[i].signature, |
86 | acpi_gbl_table_data[i].sig_length)) { | 86 | acpi_gbl_table_data[i].sig_length)) { |
87 | |||
87 | /* Found a signature match, return index if requested */ | 88 | /* Found a signature match, return index if requested */ |
88 | 89 | ||
89 | if (table_info) { | 90 | if (table_info) { |
diff --git a/drivers/acpi/tables/tbrsdt.c b/drivers/acpi/tables/tbrsdt.c index 4d308220225d..946d2f2d611d 100644 --- a/drivers/acpi/tables/tbrsdt.c +++ b/drivers/acpi/tables/tbrsdt.c | |||
@@ -190,6 +190,7 @@ acpi_status acpi_tb_validate_rsdt(struct acpi_table_header *table_ptr) | |||
190 | } | 190 | } |
191 | 191 | ||
192 | if (no_match) { | 192 | if (no_match) { |
193 | |||
193 | /* Invalid RSDT or XSDT signature */ | 194 | /* Invalid RSDT or XSDT signature */ |
194 | 195 | ||
195 | ACPI_ERROR((AE_INFO, | 196 | ACPI_ERROR((AE_INFO, |
diff --git a/drivers/acpi/tables/tbutils.c b/drivers/acpi/tables/tbutils.c index bc571592f087..b463d4b88823 100644 --- a/drivers/acpi/tables/tbutils.c +++ b/drivers/acpi/tables/tbutils.c | |||
@@ -96,6 +96,7 @@ acpi_status acpi_tb_is_table_installed(struct acpi_table_desc *new_table_desc) | |||
96 | (!ACPI_MEMCMP | 96 | (!ACPI_MEMCMP |
97 | (table_desc->pointer, new_table_desc->pointer, | 97 | (table_desc->pointer, new_table_desc->pointer, |
98 | new_table_desc->pointer->length))) { | 98 | new_table_desc->pointer->length))) { |
99 | |||
99 | /* Match: this table is already installed */ | 100 | /* Match: this table is already installed */ |
100 | 101 | ||
101 | ACPI_DEBUG_PRINT((ACPI_DB_TABLES, | 102 | ACPI_DEBUG_PRINT((ACPI_DB_TABLES, |
@@ -249,6 +250,7 @@ u8 acpi_tb_generate_checksum(void *buffer, u32 length) | |||
249 | u8 sum = 0; | 250 | u8 sum = 0; |
250 | 251 | ||
251 | if (buffer && length) { | 252 | if (buffer && length) { |
253 | |||
252 | /* Buffer and Length are valid */ | 254 | /* Buffer and Length are valid */ |
253 | 255 | ||
254 | end_buffer = ACPI_ADD_PTR(u8, buffer, length); | 256 | end_buffer = ACPI_ADD_PTR(u8, buffer, length); |
diff --git a/drivers/acpi/tables/tbxface.c b/drivers/acpi/tables/tbxface.c index 9fe53c9d5b9a..3e902cdb83e1 100644 --- a/drivers/acpi/tables/tbxface.c +++ b/drivers/acpi/tables/tbxface.c | |||
@@ -174,6 +174,7 @@ acpi_status acpi_load_table(struct acpi_table_header *table_ptr) | |||
174 | status = acpi_tb_install_table(&table_info); | 174 | status = acpi_tb_install_table(&table_info); |
175 | if (ACPI_FAILURE(status)) { | 175 | if (ACPI_FAILURE(status)) { |
176 | if (status == AE_ALREADY_EXISTS) { | 176 | if (status == AE_ALREADY_EXISTS) { |
177 | |||
177 | /* Table already exists, no error */ | 178 | /* Table already exists, no error */ |
178 | 179 | ||
179 | status = AE_OK; | 180 | status = AE_OK; |
@@ -208,6 +209,7 @@ acpi_status acpi_load_table(struct acpi_table_header *table_ptr) | |||
208 | } | 209 | } |
209 | 210 | ||
210 | if (ACPI_FAILURE(status)) { | 211 | if (ACPI_FAILURE(status)) { |
212 | |||
211 | /* Uninstall table and free the buffer */ | 213 | /* Uninstall table and free the buffer */ |
212 | 214 | ||
213 | (void)acpi_tb_uninstall_table(table_info.installed_desc); | 215 | (void)acpi_tb_uninstall_table(table_info.installed_desc); |
@@ -397,6 +399,7 @@ acpi_get_table(acpi_table_type table_type, | |||
397 | /* Get the table length */ | 399 | /* Get the table length */ |
398 | 400 | ||
399 | if (table_type == ACPI_TABLE_RSDP) { | 401 | if (table_type == ACPI_TABLE_RSDP) { |
402 | |||
400 | /* RSD PTR is the only "table" without a header */ | 403 | /* RSD PTR is the only "table" without a header */ |
401 | 404 | ||
402 | table_length = sizeof(struct rsdp_descriptor); | 405 | table_length = sizeof(struct rsdp_descriptor); |
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 = |