diff options
author | Bob Moore <robert.moore@intel.com> | 2006-05-12 17:12:00 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-06-14 02:34:48 -0400 |
commit | 958dd242b691f64ab4632b4903dbb1e16fee8269 (patch) | |
tree | ddf4932fb4e3023dd0d1914571f17f2e3b03978d /drivers/acpi/tables | |
parent | b229cf92eee616c7cb5ad8cdb35a19b119f00bc8 (diff) |
ACPI: ACPICA 20060512
Replaced the acpi_os_queue_for_execution() with a new
interface named acpi_os_execute(). The major difference is
that the new interface does not have a Priority parameter,
this appeared to be useless and has been replaced by
a Type parameter. The Type tells the OS what type of
execution is being requested, such as global lock handler,
notify handler, GPE handler, etc. This allows the host
to queue and execute the request as appropriate for the
request type, possibly using different work queues and
different priorities for the various request types. This
enables fixes for multithreading deadlock problems such as
http://bugzilla.kernel.org/show_bug.cgi?id=5534
(Alexey Starikovskiy and Bob Moore)
Fixed a possible memory leak associated with the
support for the so-called "implicit return" ACPI
extension. Reported by FreeBSD (Fiodor Suietov)
http://bugzilla.kernel.org/show_bug.cgi?id=6514
Fixed a problem with the Load() operator where a table
load from an operation region could overwrite an internal
table buffer by up to 7 bytes and cause alignment faults
on IPF systems. (With assistance from Luming Yu)
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/tbrsdt.c | 6 | ||||
-rw-r--r-- | drivers/acpi/tables/tbxfroot.c | 16 |
2 files changed, 10 insertions, 12 deletions
diff --git a/drivers/acpi/tables/tbrsdt.c b/drivers/acpi/tables/tbrsdt.c index 9e226438a3f6..494965229fa2 100644 --- a/drivers/acpi/tables/tbrsdt.c +++ b/drivers/acpi/tables/tbrsdt.c | |||
@@ -196,10 +196,8 @@ acpi_status acpi_tb_validate_rsdt(struct acpi_table_header *table_ptr) | |||
196 | ACPI_DUMP_BUFFER(acpi_gbl_RSDP, 20); | 196 | ACPI_DUMP_BUFFER(acpi_gbl_RSDP, 20); |
197 | 197 | ||
198 | ACPI_ERROR((AE_INFO, | 198 | ACPI_ERROR((AE_INFO, |
199 | "RSDT/XSDT signature at %X (%p) is invalid", | 199 | "RSDT/XSDT signature at %X is invalid", |
200 | acpi_gbl_RSDP->rsdt_physical_address, | 200 | acpi_gbl_RSDP->rsdt_physical_address)); |
201 | (void *)(acpi_native_uint) acpi_gbl_RSDP-> | ||
202 | rsdt_physical_address)); | ||
203 | 201 | ||
204 | if (acpi_gbl_root_table_type == ACPI_TABLE_TYPE_RSDT) { | 202 | if (acpi_gbl_root_table_type == ACPI_TABLE_TYPE_RSDT) { |
205 | ACPI_ERROR((AE_INFO, "Looking for RSDT")); | 203 | ACPI_ERROR((AE_INFO, "Looking for RSDT")); |
diff --git a/drivers/acpi/tables/tbxfroot.c b/drivers/acpi/tables/tbxfroot.c index 3107e741d510..da2648bbdbc0 100644 --- a/drivers/acpi/tables/tbxfroot.c +++ b/drivers/acpi/tables/tbxfroot.c | |||
@@ -472,10 +472,10 @@ static u8 *acpi_tb_scan_memory_for_rsdp(u8 * start_address, u32 length) | |||
472 | * | 472 | * |
473 | * RETURN: Status, RSDP physical address | 473 | * RETURN: Status, RSDP physical address |
474 | * | 474 | * |
475 | * DESCRIPTION: search lower 1_mbyte of memory for the root system descriptor | 475 | * DESCRIPTION: Search lower 1_mbyte of memory for the root system descriptor |
476 | * pointer structure. If it is found, set *RSDP to point to it. | 476 | * pointer structure. If it is found, set *RSDP to point to it. |
477 | * | 477 | * |
478 | * NOTE1: The RSDp must be either in the first 1_k of the Extended | 478 | * NOTE1: The RSDP must be either in the first 1_k of the Extended |
479 | * BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.) | 479 | * BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.) |
480 | * Only a 32-bit physical address is necessary. | 480 | * Only a 32-bit physical address is necessary. |
481 | * | 481 | * |
@@ -525,7 +525,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags) | |||
525 | 525 | ||
526 | if (physical_address > 0x400) { | 526 | if (physical_address > 0x400) { |
527 | /* | 527 | /* |
528 | * 1b) Search EBDA paragraphs (EBDa is required to be a | 528 | * 1b) Search EBDA paragraphs (EBDA is required to be a |
529 | * minimum of 1_k length) | 529 | * minimum of 1_k length) |
530 | */ | 530 | */ |
531 | status = acpi_os_map_memory((acpi_physical_address) | 531 | status = acpi_os_map_memory((acpi_physical_address) |
@@ -550,7 +550,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags) | |||
550 | /* Return the physical address */ | 550 | /* Return the physical address */ |
551 | 551 | ||
552 | physical_address += | 552 | physical_address += |
553 | ACPI_PTR_DIFF(mem_rover, table_ptr); | 553 | (u32) ACPI_PTR_DIFF(mem_rover, table_ptr); |
554 | 554 | ||
555 | table_info->physical_address = | 555 | table_info->physical_address = |
556 | (acpi_physical_address) physical_address; | 556 | (acpi_physical_address) physical_address; |
@@ -584,9 +584,9 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags) | |||
584 | 584 | ||
585 | /* Return the physical address */ | 585 | /* Return the physical address */ |
586 | 586 | ||
587 | physical_address = | 587 | physical_address = (u32) |
588 | ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF(mem_rover, | 588 | (ACPI_HI_RSDP_WINDOW_BASE + |
589 | table_ptr); | 589 | ACPI_PTR_DIFF(mem_rover, table_ptr)); |
590 | 590 | ||
591 | table_info->physical_address = | 591 | table_info->physical_address = |
592 | (acpi_physical_address) physical_address; | 592 | (acpi_physical_address) physical_address; |
@@ -607,7 +607,7 @@ acpi_tb_find_rsdp(struct acpi_table_desc *table_info, u32 flags) | |||
607 | 607 | ||
608 | if (physical_address > 0x400) { | 608 | if (physical_address > 0x400) { |
609 | /* | 609 | /* |
610 | * 1b) Search EBDA paragraphs (EBDa is required to be a minimum of | 610 | * 1b) Search EBDA paragraphs (EBDA is required to be a minimum of |
611 | * 1_k length) | 611 | * 1_k length) |
612 | */ | 612 | */ |
613 | mem_rover = | 613 | mem_rover = |