-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
coreboot support #74
coreboot support #74
Conversation
Does anyone have comments? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks fine but I think it probably needs an integration test.
ed06590
to
4a3843f
Compare
Signed-off-by: Akira Moroo <[email protected]>
This commit adds coreboot specific info parser to satisfy Info trait requirements. The coreboot info table includes various information, but this supports E820 like memory map parsing and ACPI RSDP address search only. It is based on coreboot's libpayload[1]. [1] payloads/libpayload/libc/coreboot.c (e1a7a26) Signed-off-by: Akira Moroo <[email protected]>
4a3843f
to
94e8240
Compare
For integration tests, I would like to add a shell script like |
Signed-off-by: Akira Moroo <[email protected]>
Signed-off-by: Akira Moroo <[email protected]>
1400567
to
b7e1ff9
Compare
Signed-off-by: Akira Moroo <[email protected]>
I pushed integration tests for coreboot as b7e1ff9. It passes all integration tests. |
The coreboot integration tests clone coreboot repository, checkout submodules, and build a binutils/gcc cross compiler every time. It's heavy and time-consuming process to just building a BIOS rom. I think we can improve this by providing pre-built packages for CI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@josephlr What do you think?
@josephlr Any updates? |
This looks reasonable to me, and we should be able to reuse some of this for #24. I haven't had the chance to review this in extreme detail, but if it boots, we can merge this for now and clean it up later. Long term, we will probably want to use some sort of CI caching (say w/ Github Actions) to speed stuff up. |
This PR proposes "coreboot" feature for rust-hypervisor-firmware as a coreboot payload.
It adds
coreboot::StartInfo
that parses coreboot table[1] to provide e820 table and RSDP address. (This part may be able to reuse for PR #24)It adds
rust64_start
for "coreboot" feature because thecoreboot::StartInfo
struct should be allocated and supplied beforemain
.Since coreboot payload starts from 32-bit protected mode, and it uses the ELF entry point, it must point
ram32_start
(230daa6).To build:
Build
coreboot.rom
withhypervisor-fw
as a payload.To run:
I confirmed that it works on both Linux loader mode and EFI mode.
[1] https://www.coreboot.org/API