I'm having the same problem as here: viewtopic.php?f=1&t=30288
I found that if I pack the XSDT structure header and set the alignment of the following 64-bit pointers to 4 rather than the default 8, then I get the correct 64-bit pointer values to read the pointed-to tables (so table entry 0 is at offset 36 rather than 40 from the beginning of the XSDT).
With a quick google search, https://github.com/tianocore/edk2/blob/ ... Protocol.c seems to corroborate that the XSDT pointers are indeed not aligned to 8-byte boundaries.
I tried to follow the ACPI spec link on https://wiki.osdev.org/XSDT but that appears to be dead.
Is it known that these pointers are not 8-byte aligned? If so, can https://wiki.osdev.org/XSDT be updated to clarify this? I don't have edit permissions for the wiki.
Alignment of XSDT table pointers
-
- Member
- Posts: 5501
- Joined: Mon Mar 25, 2013 7:01 pm
Re: Alignment of XSDT table pointers
The ACPI spec is here now.holtrop wrote:I tried to follow the ACPI spec link on https://wiki.osdev.org/XSDT but that appears to be dead.
I just checked the ACPI spec, and yes, that's what it says.holtrop wrote:Is it known that these pointers are not 8-byte aligned?
You can give yourself edit permissions.holtrop wrote:I don't have edit permissions for the wiki.
Re: Alignment of XSDT table pointers
Thank you for the confirmation as well as the updated ACPI specification link and note about the wiki. I have joined the wiki group and updated the XSDT page with the updated ACPI specification link and a note about the pointer alignment.