mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
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: ab29013c
Reported-by: Al Stone <ahs3@redhat.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
fde175e385
commit
428394dfdf
1 changed files with 46 additions and 43 deletions
|
|
@ -582,65 +582,68 @@ static acpi_status osl_table_initialize(void)
|
|||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Get RSDP from memory */
|
||||
|
||||
status = osl_load_rsdp();
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (status);
|
||||
}
|
||||
|
||||
/* Get XSDT from memory */
|
||||
|
||||
if (gbl_rsdp.revision && !gbl_do_not_dump_xsdt) {
|
||||
if (gbl_xsdt) {
|
||||
free(gbl_xsdt);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get RSDT from memory */
|
||||
|
||||
if (gbl_rsdp.rsdt_physical_address) {
|
||||
if (gbl_rsdt) {
|
||||
free(gbl_rsdt);
|
||||
gbl_rsdt = NULL;
|
||||
}
|
||||
|
||||
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 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) {
|
||||
|
||||
/* Get RSDP from memory */
|
||||
|
||||
status = osl_load_rsdp();
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (status);
|
||||
}
|
||||
|
||||
/* Get XSDT from memory */
|
||||
|
||||
if (gbl_rsdp.revision && !gbl_do_not_dump_xsdt) {
|
||||
if (gbl_xsdt) {
|
||||
free(gbl_xsdt);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get RSDT from memory */
|
||||
|
||||
if (gbl_rsdp.rsdt_physical_address) {
|
||||
if (gbl_rsdt) {
|
||||
free(gbl_rsdt);
|
||||
gbl_rsdt = NULL;
|
||||
}
|
||||
|
||||
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 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);
|
||||
}
|
||||
|
||||
/* Add mandatory tables to global table list first */
|
||||
|
||||
status = osl_add_table_to_list(ACPI_RSDP_NAME, 0);
|
||||
|
|
|
|||
Loading…
Reference in a new issue