Alignment of XSDT table pointers
Posted: Thu Sep 07, 2023 11:14 am
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.
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.