Embedded Intel® Core™ Processors
Communicate Intel® Core™ Hardware, Software, Firmware, Graphics Concerns
1254 Discussions

iASL (20140424) FPDT support not right ?

RMahn
Beginner
1,829 Views

It appears to me that the iASL 20140424 isn't properly handling the ACPI FPDT table.

The following information is the information that has lead me to the above conclusion.

This is my fist time looking at the FPDT table and would like some verification of my understanding and findings.

The AMI APTIO BIOS I'm working with has a FPDT table in the ACPI. When I use iASL to decompile the table I get an error that the table terminates in the middle of a data structure. When I have iASL generate a FPDT template file I see that the lengths of subtable type 0x0000 are different between the two.

Digging through the ACPI 5.0 spec it appears to me that the BIOS is correct and that iASL is making an illegal FPDT table template with the corresponding problem compiling and decompiling the BIOS table.

The ACPI 5.0 spec (5.2.23) covers the FPDT. That section is very, IMO, poorly organized which I believe has contributed to the problem in iASL. Table 5-101 shows that there are two active subtable types 0x0000 (Basic Boot Performance Pointer Record) and 0x0001 (S3 Performance Table Pointer Record).

The "Basic Boot Performance Pointer Record", subtype 0x0000, structure is detailed in table 5-104 and is 16 bytes in size (which is incorrectly labeled "S4 Performance Table Record Pointer" given the record type in the table is "Firmware Basic Boot Performance Pointer Record"). iASL in the generated template has a length of 48 (0x30) for this subtype.

The "S3 Performance Table Pointer Record", subtype 0x0001, structure is detailed in table 5-103 and is 16 bytes in size.

RW-Everything is interpreting the same as what my understanding of the ACPI spec.

  • Here's what RW-Everything shows for the table.

Firmware Performance Data Table: 0x00000000DB908FD0

46 50 44 54 44 00 00 00 01 79 50 58 43 49 50 43 FPDTD....yPXCIPC

50 58 43 5F 43 49 53 5F 09 20 07 01 41 4D 49 20 PXC_CIS_. ..AMI

13 00 01 00 01 00 10 01 00 00 00 00 18 C0 F0 DB ................

00 00 00 00 00 00 10 01 00 00 00 00 38 C0 F0 DB ............8...

00 00 00 00 ....

Signature "FPDT"

Length 0x00000044 (68)

Revision 0x01 (1)

Checksum 0x79 (121)

OEM ID "PXCIPC"

OEM Table ID "PXC_CIS_"

OEM Revision 0x01072009 (17244169)

Creator ID "AMI "

Creator Revision 0x00010013 (65555)

Performance Records

S3 Performance Table Pointer Record

Record Type 0x0001 (1)

Record Length 0x10 (16)

Revision 0x01 (1)

Reserved 0x00000000

S3PT Pointer 0x00000000DBF0C018

...

S4 Performance Table Pointer Record

Record Type 0x0000 (0)

Record Length 0x10 (16)

Revision 0x01 (1)

Reserved 0x00000000

FBPT Pointer 0x00000000DBF0C038

...

  • Here's the iASL decompile of the table shown above.

/*

* Intel ACPI Component Architecture

* AML Disassembler version 20140424-32 [Apr 24 2014]

* Copyright (c) 2000 - 2014 Intel Corporation

*

* Disassembly of DB908FD0_FPDT.bin, Wed Apr 30 09:39:53 2014

*

* ACPI Data Table [FPDT]

*

* Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue

<span style="font-family: 'co...

0 Kudos
3 Replies
RMahn
Beginner
880 Views

I should mention that the iASL generated template subtype 0x0000 with a length of 0x30 corresponds to the structure shown in Table 5-109 which is described in section 5.2.23.7 as a record in a table that resides outside the FPDT table.

0 Kudos
Natalie_Z_Intel
Employee
880 Views

Hello! We are looking into this for you. There has been a delay due to some holidays, but I wanted you to know that we will address this as soon as possible. Lynn

0 Kudos
Natalie_Z_Intel
Employee
880 Views

Thank you for your posting. We will pass your findings on to our BIOS team. As BIOS code is the responsibility of each board manufacturer to provide or purchases a BIOS code based off a given BIOS vendor's code it is the

 

board manufacturer responsibility to make sure all code is verified on their platform. We encourage customers to contact their board manufacturer and report issues to a specific platform or code base. If the board manufacture determines an issue with their platform, they will work with Intel on a resolution.
0 Kudos
Reply