Attention is currently required from: Arthur Heymans. Tim Wawrzynczak has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/62576 )
Change subject: libpayload: Parse the ACPI RSDP table entry ......................................................................
Patch Set 6: Code-Review+2
(1 comment)
File payloads/libpayload/libc/coreboot.c:
https://review.coreboot.org/c/coreboot/+/62576/comment/66110df4_0357751f PS6, Line 271: info->acpi_rsdp = cb_unpack64(cb_acpi_rsdp->rsdp_pointer); Thanks for the explanation.
The basic problem is payloads like FILO that shift the whole segments and relocate themself this way. The payload copies itself to the new offset, so all global, "virtual" pointers that point inside the payload stay valid, but all that point outside the payload would have to be manually adjusted
I hadn't seen a payload which did that yet, looks like this is the relocate() function in x86/segment.c ?