Merge branch 'acpica'
* acpica: (32 commits) ACPICA: Update version to 20170728 ACPICA: Revert "Update resource descriptor handling" ACPICA: Resources: Allow _DMA method in walk resources ACPICA: Ensure all instances of AE_AML_INTERNAL have error messages ACPICA: Implement deferred resolution of reference package elements ACPICA: Debugger: Improve support for Alias objects ACPICA: Interpreter: Update handling for Alias operator ACPICA: EFI/EDK2: Cleanup to enable /WX for MSVC builds ACPICA: acpidump: Add DSDT/FACS instance support for Linux and EFI ACPICA: CLib: Add short multiply/shift support ACPICA: EFI/EDK2: Sort acpi.h inclusion order ACPICA: Add a comment, no functional change ACPICA: Namespace: Update/fix an error message ACPICA: iASL: Add support for the SDEI table ACPICA: Divergences: reduce access size definitions ACPICA: Update version to 20170629 ACPICA: Update resource descriptor handling ACPICA: iasl: Update to IORT SMMUv3 disassembling ACPICA: Disassembler: skip parsing of incorrect external declarations ACPICA: iASL: Ensure that the target node is valid in acpi_ex_create_alias ...
This commit is contained in:
@@ -759,7 +759,7 @@ static acpi_status osl_list_bios_tables(void)
|
||||
|
||||
/* Skip NULL entries in RSDT/XSDT */
|
||||
|
||||
if (!table_address) {
|
||||
if (table_address == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -808,7 +808,8 @@ osl_get_bios_table(char *signature,
|
||||
u8 number_of_tables;
|
||||
u8 item_size;
|
||||
u32 current_instance = 0;
|
||||
acpi_physical_address table_address = 0;
|
||||
acpi_physical_address table_address;
|
||||
acpi_physical_address first_table_address = 0;
|
||||
u32 table_length = 0;
|
||||
acpi_status status = AE_OK;
|
||||
u32 i;
|
||||
@@ -820,9 +821,10 @@ osl_get_bios_table(char *signature,
|
||||
ACPI_COMPARE_NAME(signature, ACPI_SIG_XSDT) ||
|
||||
ACPI_COMPARE_NAME(signature, ACPI_SIG_DSDT) ||
|
||||
ACPI_COMPARE_NAME(signature, ACPI_SIG_FACS)) {
|
||||
if (instance > 0) {
|
||||
return (AE_LIMIT);
|
||||
}
|
||||
|
||||
find_next_instance:
|
||||
|
||||
table_address = 0;
|
||||
|
||||
/*
|
||||
* Get the appropriate address, either 32-bit or 64-bit. Be very
|
||||
@@ -830,41 +832,66 @@ osl_get_bios_table(char *signature,
|
||||
* Note: The 64-bit addresses have priority.
|
||||
*/
|
||||
if (ACPI_COMPARE_NAME(signature, ACPI_SIG_DSDT)) {
|
||||
if ((gbl_fadt->header.length >= MIN_FADT_FOR_XDSDT) &&
|
||||
gbl_fadt->Xdsdt) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->Xdsdt;
|
||||
} else
|
||||
if ((gbl_fadt->header.length >= MIN_FADT_FOR_DSDT)
|
||||
&& gbl_fadt->dsdt) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->dsdt;
|
||||
if (current_instance < 2) {
|
||||
if ((gbl_fadt->header.length >=
|
||||
MIN_FADT_FOR_XDSDT) && gbl_fadt->Xdsdt
|
||||
&& current_instance == 0) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->
|
||||
Xdsdt;
|
||||
} else
|
||||
if ((gbl_fadt->header.length >=
|
||||
MIN_FADT_FOR_DSDT)
|
||||
&& gbl_fadt->dsdt !=
|
||||
first_table_address) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->
|
||||
dsdt;
|
||||
}
|
||||
}
|
||||
} else if (ACPI_COMPARE_NAME(signature, ACPI_SIG_FACS)) {
|
||||
if ((gbl_fadt->header.length >= MIN_FADT_FOR_XFACS) &&
|
||||
gbl_fadt->Xfacs) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->Xfacs;
|
||||
} else
|
||||
if ((gbl_fadt->header.length >= MIN_FADT_FOR_FACS)
|
||||
&& gbl_fadt->facs) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->facs;
|
||||
if (current_instance < 2) {
|
||||
if ((gbl_fadt->header.length >=
|
||||
MIN_FADT_FOR_XFACS) && gbl_fadt->Xfacs
|
||||
&& current_instance == 0) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->
|
||||
Xfacs;
|
||||
} else
|
||||
if ((gbl_fadt->header.length >=
|
||||
MIN_FADT_FOR_FACS)
|
||||
&& gbl_fadt->facs !=
|
||||
first_table_address) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_fadt->
|
||||
facs;
|
||||
}
|
||||
}
|
||||
} else if (ACPI_COMPARE_NAME(signature, ACPI_SIG_XSDT)) {
|
||||
if (!gbl_revision) {
|
||||
return (AE_BAD_SIGNATURE);
|
||||
}
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_rsdp.
|
||||
xsdt_physical_address;
|
||||
if (current_instance == 0) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_rsdp.
|
||||
xsdt_physical_address;
|
||||
}
|
||||
} else if (ACPI_COMPARE_NAME(signature, ACPI_SIG_RSDT)) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_rsdp.
|
||||
rsdt_physical_address;
|
||||
if (current_instance == 0) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_rsdp.
|
||||
rsdt_physical_address;
|
||||
}
|
||||
} else {
|
||||
table_address = (acpi_physical_address)gbl_rsdp_address;
|
||||
signature = ACPI_SIG_RSDP;
|
||||
if (current_instance == 0) {
|
||||
table_address =
|
||||
(acpi_physical_address)gbl_rsdp_address;
|
||||
signature = ACPI_SIG_RSDP;
|
||||
}
|
||||
}
|
||||
|
||||
if (table_address == 0) {
|
||||
goto exit_find_table;
|
||||
}
|
||||
|
||||
/* Now we can get the requested special table */
|
||||
@@ -875,6 +902,18 @@ osl_get_bios_table(char *signature,
|
||||
}
|
||||
|
||||
table_length = ap_get_table_length(mapped_table);
|
||||
if (first_table_address == 0) {
|
||||
first_table_address = table_address;
|
||||
}
|
||||
|
||||
/* Match table instance */
|
||||
|
||||
if (current_instance != instance) {
|
||||
osl_unmap_table(mapped_table);
|
||||
mapped_table = NULL;
|
||||
current_instance++;
|
||||
goto find_next_instance;
|
||||
}
|
||||
} else { /* Case for a normal ACPI table */
|
||||
|
||||
if (osl_can_use_xsdt()) {
|
||||
@@ -913,7 +952,7 @@ osl_get_bios_table(char *signature,
|
||||
|
||||
/* Skip NULL entries in RSDT/XSDT */
|
||||
|
||||
if (!table_address) {
|
||||
if (table_address == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -946,6 +985,8 @@ osl_get_bios_table(char *signature,
|
||||
}
|
||||
}
|
||||
|
||||
exit_find_table:
|
||||
|
||||
if (!mapped_table) {
|
||||
return (AE_LIMIT);
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@ static int ap_is_existing_file(char *pathname);
|
||||
|
||||
static int ap_is_existing_file(char *pathname)
|
||||
{
|
||||
#ifndef _GNU_EFI
|
||||
#if !defined(_GNU_EFI) && !defined(_EDK2_EFI)
|
||||
struct stat stat_info;
|
||||
|
||||
if (!stat(pathname, &stat_info)) {
|
||||
|
@@ -300,7 +300,7 @@ static int ap_do_options(int argc, char **argv)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _GNU_EFI
|
||||
#if !defined(_GNU_EFI) && !defined(_EDK2_EFI)
|
||||
int ACPI_SYSTEM_XFACE main(int argc, char *argv[])
|
||||
#else
|
||||
int ACPI_SYSTEM_XFACE acpi_main(int argc, char *argv[])
|
||||
|
Reference in New Issue
Block a user