Commit 428394df authored by Lv Zheng's avatar Lv Zheng Committed by Rafael J. Wysocki

ACPICA: acpidump: Allow customized tables to be dumped without accessing /dev/mem

ACPICA commit ab29013cfa2424140446aff196a70b211ab343a9

The /dev/mem can be configured out, in which case, acpidump should still
work with "-c" option as tables can be found in /sys/firmware/acpi/tables.
This patch allows acpidump to work without /dev/mem.
This patch has been tested with "acpidump -c" and "acpidump -c -n FADT".
And it worked as expected. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/ab29013cReported-by: default avatarAl Stone <ahs3@redhat.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent fde175e3
...@@ -582,64 +582,67 @@ static acpi_status osl_table_initialize(void) ...@@ -582,64 +582,67 @@ static acpi_status osl_table_initialize(void)
return (AE_OK); return (AE_OK);
} }
/* Get RSDP from memory */ if (!gbl_dump_customized_tables) {
status = osl_load_rsdp(); /* Get RSDP from memory */
if (ACPI_FAILURE(status)) {
return (status); status = osl_load_rsdp();
} if (ACPI_FAILURE(status)) {
return (status);
}
/* Get XSDT from memory */ /* Get XSDT from memory */
if (gbl_rsdp.revision && !gbl_do_not_dump_xsdt) { if (gbl_rsdp.revision && !gbl_do_not_dump_xsdt) {
if (gbl_xsdt) { if (gbl_xsdt) {
free(gbl_xsdt); free(gbl_xsdt);
gbl_xsdt = NULL; gbl_xsdt = NULL;
}
gbl_revision = 2;
status = osl_get_bios_table(ACPI_SIG_XSDT, 0,
ACPI_CAST_PTR(struct
acpi_table_header
*, &gbl_xsdt),
&address);
if (ACPI_FAILURE(status)) {
return (status);
}
} }
gbl_revision = 2; /* Get RSDT from memory */
status = osl_get_bios_table(ACPI_SIG_XSDT, 0,
ACPI_CAST_PTR(struct if (gbl_rsdp.rsdt_physical_address) {
acpi_table_header *, if (gbl_rsdt) {
&gbl_xsdt), &address); free(gbl_rsdt);
if (ACPI_FAILURE(status)) { gbl_rsdt = NULL;
return (status); }
status = osl_get_bios_table(ACPI_SIG_RSDT, 0,
ACPI_CAST_PTR(struct
acpi_table_header
*, &gbl_rsdt),
&address);
if (ACPI_FAILURE(status)) {
return (status);
}
} }
}
/* Get RSDT from memory */ /* Get FADT from memory */
if (gbl_rsdp.rsdt_physical_address) { if (gbl_fadt) {
if (gbl_rsdt) { free(gbl_fadt);
free(gbl_rsdt); gbl_fadt = NULL;
gbl_rsdt = NULL;
} }
status = osl_get_bios_table(ACPI_SIG_RSDT, 0, status = osl_get_bios_table(ACPI_SIG_FADT, 0,
ACPI_CAST_PTR(struct ACPI_CAST_PTR(struct
acpi_table_header *, acpi_table_header *,
&gbl_rsdt), &address); &gbl_fadt),
&gbl_fadt_address);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
return (status); return (status);
} }
}
/* Get FADT from memory */
if (gbl_fadt) {
free(gbl_fadt);
gbl_fadt = NULL;
}
status = osl_get_bios_table(ACPI_SIG_FADT, 0,
ACPI_CAST_PTR(struct acpi_table_header *,
&gbl_fadt),
&gbl_fadt_address);
if (ACPI_FAILURE(status)) {
return (status);
}
if (!gbl_dump_customized_tables) {
/* Add mandatory tables to global table list first */ /* Add mandatory tables to global table list first */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment