ACK: [PATCH] acpi: acpidump: update SMM Communication fields on UEFI table
Colin Ian King
colin.king at canonical.com
Mon Jul 6 10:10:54 UTC 2015
On 02/07/15 05:55, Alex Hung wrote:
> On 06/30/2015 04:28 PM, Ivan Hu wrote:
>> The first use of UEFI ACPI table format is the SMM Communication ACPI Table.
>> Defined in UEFI spec Appendix O. Checking the SMM Communication ACPI GUID and
>> dumping relative fields.
>>
>> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
>> ---
>> src/acpi/acpidump/acpidump.c | 28 +++++++++++++++++++++++-----
>> src/lib/include/fwts_acpi.h | 7 +++++++
>> 2 files changed, 30 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
>> index 683a50f..c55956c 100644
>> --- a/src/acpi/acpidump/acpidump.c
>> +++ b/src/acpi/acpidump/acpidump.c
>> @@ -1587,17 +1587,35 @@ static void acpidump_slic(fwts_framework *fw, const fwts_acpi_table_info *table)
>> */
>> static void acpidump_uefi(fwts_framework *fw, const fwts_acpi_table_info *table)
>> {
>> +
>> + /*
>> + * GUID for SMM Communication ACPI Table
>> + * {0xc68ed8e2, 0x9dc6, 0x4cbd, 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32}
>> + */
>> + static const uint8_t guid_smm[16] = { 0xe2, 0xd8, 0x8e, 0xc6, 0xc6, 0x9d, 0xbd, 0x4c,
>> + 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32 };
>> +
>> fwts_acpi_table_uefi *uefi = (fwts_acpi_table_uefi *)table->data;
>>
>> - static const fwts_acpidump_field uefi_fields[] = {
>> + static const fwts_acpidump_field boot_fields[] = {
>> FIELD_GUID("UUID", fwts_acpi_table_uefi, uuid),
>> + FIELD_UINT("DataOffset", fwts_acpi_table_uefi, dataoffset),
>> FIELD_END
>> };
>>
>> - __acpi_dump_table_fields(fw, table->data, uefi_fields, 0);
>> - fwts_log_nl(fw);
>> - acpi_dump_raw_data(fw, uefi->data, table->length - sizeof(fwts_acpi_table_uefi),
>> - sizeof(fwts_acpi_table_uefi));
>> + static const fwts_acpidump_field smmcomm_fields[] = {
>> + FIELD_UINT("SW SMI Number", fwts_acpi_table_uefi_smmcomm, sw_smi_number),
>> + FIELD_UINT("Buffer Prt Address", fwts_acpi_table_uefi_smmcomm, buf_ptr_addr),
>> + FIELD_END
>> + };
>> + __acpi_dump_table_fields(fw, table->data, boot_fields, 0);
>> +
>> + if (memcmp(uefi->uuid, guid_smm, 16) != 0) {
>> + fwts_log_nl(fw);
>> + acpi_dump_raw_data(fw, uefi->data, table->length - sizeof(fwts_acpi_table_uefi),
>> + sizeof(fwts_acpi_table_uefi));
>> + } else
>> + __acpi_dump_table_fields(fw, table->data, smmcomm_fields, 0);
>> }
>>
>> /*
>> diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
>> index e27c68c..55db8e1 100644
>> --- a/src/lib/include/fwts_acpi.h
>> +++ b/src/lib/include/fwts_acpi.h
>> @@ -696,9 +696,16 @@ typedef struct {
>> typedef struct {
>> fwts_acpi_table_header header;
>> uint8_t uuid[16];
>> + uint16_t dataoffset;
>> uint8_t data[0];
>> } __attribute__ ((packed)) fwts_acpi_table_uefi;
>>
>> +typedef struct {
>> + fwts_acpi_table_uefi boot;
>> + uint32_t sw_smi_number;
>> + uint64_t buf_ptr_addr;
>> +} __attribute__ ((packed)) fwts_acpi_table_uefi_smmcomm;
>> +
>> /* 5.2.22 Boot Graphics Resource Table (BGRT) ACPI 5.0 Spec */
>> typedef struct {
>> fwts_acpi_table_header header;
>>
>
> Acked-byL: Alex Hung <alex.hung at canonical.com>
>
Acked-by: Colin Ian King <colin.king at canonical.com>
More information about the fwts-devel
mailing list