ACPICA: iASL: Fix printing CDAT table header
When disassembling CDAT AML, the lack of CDAT's common ACPI table header should be taken into consideration when printing the table's actual header. As the table header lacks fields like Signature, header information is mangled and incorrect: # $ iasl -d -ds CDAT cdat.aml # Input file cdat.aml, Length 0xE4 (228) bytes # ACPI: ? 0x0000000000000000 000C01 (v00 ? 00180000 ?? 23456789) Both Signature and Length are printed incorrectly, and the remaining fields are not applicable for this special table. To fix this, verify acpi_gbl_CDAT is set (<-ds CDAT> via command line) and Header->Signature is an invalid nameseg (due to the presence of non-ASCII char(s)), then print only the explicitly-passed signature (ACPI_SIG_CDAT) and the table length as cast with a pointer to the struct acpi_table_cdat structure. Link: https://github.com/acpica/acpica/commit/2b5586b4 Signed-off-by: Ahmed Salem <x0rw3ll@gmail.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
12fd607554
commit
4b020eff66
@ -121,6 +121,14 @@ acpi_tb_print_table_header(acpi_physical_address address,
|
||||
ACPI_CAST_PTR(struct acpi_table_rsdp,
|
||||
header)->revision,
|
||||
local_header.oem_id));
|
||||
} else if (acpi_gbl_CDAT && !acpi_ut_valid_nameseg(header->signature)) {
|
||||
|
||||
/* CDAT does not use the common ACPI table header */
|
||||
|
||||
ACPI_INFO(("%-4.4s 0x%8.8X%8.8X %06X",
|
||||
ACPI_SIG_CDAT, ACPI_FORMAT_UINT64(address),
|
||||
ACPI_CAST_PTR(struct acpi_table_cdat,
|
||||
header)->length));
|
||||
} else {
|
||||
/* Standard ACPI table with full common header */
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user