Enable memory access above 4GB
Brief summary
Capsules may be located in any part of RAM, not only lowest 4GB. Support for accessing higher memory must be added to coreboot.
What is the scope of the task.
Function(s) able to copy data from memory higher than 4GB to lower memory, along with code for entering and leaving long mode. Linking with other parts of coreboot is not required. Dynamic memory allocation isn't allowed, to not overwrite capsule data.
I forgot that SG lists may also live in higher memory. Because of that, instead of functions for copying data I created functions for mapping data in lower 4 GB. This should allow for reading data without having to copy it.
PR with changes: https://github.com/Dasharo/coreboot/pull/497
Commits sent to upstream: https://review.coreboot.org/c/coreboot/+/82247 https://review.coreboot.org/c/coreboot/+/82248 https://review.coreboot.org/c/coreboot/+/82249
Both our local PR and upstream changes has been merged.