aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/tables/tbconvrt.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-01-27 16:43:00 -0500
committerLen Brown <len.brown@intel.com>2006-01-31 03:25:09 -0500
commitb8e4d89357fc434618a59c1047cac72641191805 (patch)
treeac97fcc6fdc277c682365900663872c96f2420bd /drivers/acpi/tables/tbconvrt.c
parent292dd876ee765c478b27c93cc51e93a558ed58bf (diff)
[ACPI] ACPICA 20060127
Implemented support in the Resource Manager to allow unresolved namestring references within resource package objects for the _PRT method. This support is in addition to the previously implemented unresolved reference support within the AML parser. If the interpreter slack mode is enabled (true on Linux unless acpi=strict), these unresolved references will be passed through to the caller as a NULL package entry. http://bugzilla.kernel.org/show_bug.cgi?id=5741 Implemented and deployed new macros and functions for error and warning messages across the subsystem. These macros are simpler and generate less code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. Implemented the acpi_cpu_flags type to simplify host OS integration of the Acquire/Release Lock OSL interfaces. Suggested by Steven Rostedt and Andrew Morton. Fixed a problem where Alias ASL operators are sometimes not correctly resolved. causing AE_AML_INTERNAL http://bugzilla.kernel.org/show_bug.cgi?id=5189 http://bugzilla.kernel.org/show_bug.cgi?id=5674 Fixed several problems with the implementation of the ConcatenateResTemplate ASL operator. As per the ACPI specification, zero length buffers are now treated as a single EndTag. One-length buffers always cause a fatal exception. Non-zero length buffers that do not end with a full 2-byte EndTag cause a fatal exception. Fixed a possible structure overwrite in the AcpiGetObjectInfo external interface. (With assistance from Thomas Renninger) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/tables/tbconvrt.c')
-rw-r--r--drivers/acpi/tables/tbconvrt.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/acpi/tables/tbconvrt.c b/drivers/acpi/tables/tbconvrt.c
index 48290b7e6ba5..03b37d2223bc 100644
--- a/drivers/acpi/tables/tbconvrt.c
+++ b/drivers/acpi/tables/tbconvrt.c
@@ -501,8 +501,8 @@ acpi_status acpi_tb_convert_table_fadt(void)
501 * at least as long as the version 1.0 FADT 501 * at least as long as the version 1.0 FADT
502 */ 502 */
503 if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev1)) { 503 if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev1)) {
504 ACPI_REPORT_ERROR(("FADT is invalid, too short: 0x%X\n", 504 ACPI_ERROR((AE_INFO, "FADT is invalid, too short: 0x%X",
505 acpi_gbl_FADT->length)); 505 acpi_gbl_FADT->length));
506 return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH); 506 return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
507 } 507 }
508 508
@@ -517,7 +517,10 @@ acpi_status acpi_tb_convert_table_fadt(void)
517 if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev2)) { 517 if (acpi_gbl_FADT->length < sizeof(struct fadt_descriptor_rev2)) {
518 /* Length is too short to be a V2.0 table */ 518 /* Length is too short to be a V2.0 table */
519 519
520 ACPI_REPORT_WARNING(("Inconsistent FADT length (0x%X) and revision (0x%X), using FADT V1.0 portion of table\n", acpi_gbl_FADT->length, acpi_gbl_FADT->revision)); 520 ACPI_WARNING((AE_INFO,
521 "Inconsistent FADT length (0x%X) and revision (0x%X), using FADT V1.0 portion of table",
522 acpi_gbl_FADT->length,
523 acpi_gbl_FADT->revision));
521 524
522 acpi_tb_convert_fadt1(local_fadt, 525 acpi_tb_convert_fadt1(local_fadt,
523 (void *)acpi_gbl_FADT); 526 (void *)acpi_gbl_FADT);
@@ -582,13 +585,15 @@ acpi_status acpi_tb_build_common_facs(struct acpi_table_desc *table_info)
582 /* Absolute minimum length is 24, but the ACPI spec says 64 */ 585 /* Absolute minimum length is 24, but the ACPI spec says 64 */
583 586
584 if (acpi_gbl_FACS->length < 24) { 587 if (acpi_gbl_FACS->length < 24) {
585 ACPI_REPORT_ERROR(("Invalid FACS table length: 0x%X\n", 588 ACPI_ERROR((AE_INFO, "Invalid FACS table length: 0x%X",
586 acpi_gbl_FACS->length)); 589 acpi_gbl_FACS->length));
587 return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH); 590 return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH);
588 } 591 }
589 592
590 if (acpi_gbl_FACS->length < 64) { 593 if (acpi_gbl_FACS->length < 64) {
591 ACPI_REPORT_WARNING(("FACS is shorter than the ACPI specification allows: 0x%X, using anyway\n", acpi_gbl_FACS->length)); 594 ACPI_WARNING((AE_INFO,
595 "FACS is shorter than the ACPI specification allows: 0x%X, using anyway",
596 acpi_gbl_FACS->length));
592 } 597 }
593 598
594 /* Copy fields to the new FACS */ 599 /* Copy fields to the new FACS */