Skip to content
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

Add RISC-V support #239

Merged
merged 10 commits into from
Mar 21, 2023
Merged

Conversation

rbradford
Copy link
Member

Add support for running under RISC-V QEMU emulation using virt machine type
loaded from OpenSBI.

  • efi, fdt: Mark the size of the FDT table as reserved
  • build: Use fork of r-efi with riscv64 support
  • rtc: riscv: Add RTC support via goldfish RTC
  • delay: riscv: Add implementation of ndelay()
  • efi: riscv: Add EFI default boot path for the RV64 target
  • pe: riscv: Enable PE32+ loader support
  • efi: riscv: Add platform specific EFI Boot Protocol implementation
  • serial: riscv: Add basic MMIO UART device
  • misc: riscv: Add support for starting on QEMU virt machine
  • README: riscv: Add documentation for new platform
  • build: riscv64: Add cross toolchain build testing

@rbradford rbradford force-pushed the 2023-03-20-rv64-support branch from ee2bd0c to 412f318 Compare March 20, 2023 15:25
@rbradford rbradford requested a review from sboeuf March 20, 2023 16:28
This prevents memory allocations from overwriting the table and making
it appear corrupted.

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This is the the RTC device included with the QEMU virt machine type. For
now the MMIO range is hardcoded but in the future it would be helpful to
pull this from the FDT (this is tracked with a TODO.)

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This implementation uses a harcoded frequency that matches that from the
QEMU virt platform.

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This matches the one specified in EDKII

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This is required for booting Linux.

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This device doe not fully implement a UART driver but provides
sufficient support to enable the log!() macro and EFI stdout support
when running on the the QEMU virt platform.

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
Add linker and compilation scripts that produce a binary that can be
used with QEMU's RV64 virt machine type with the produced ELF binary
loaded by OpenSBI.

Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
@rbradford rbradford force-pushed the 2023-03-20-rv64-support branch from 412f318 to 8bd144a Compare March 21, 2023 09:58
Copy link
Member

@sboeuf sboeuf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good :)

src/efi/mod.rs Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
@rbradford rbradford force-pushed the 2023-03-20-rv64-support branch from 8bd144a to 0920f5d Compare March 21, 2023 17:34
@rbradford rbradford merged commit 42a970b into cloud-hypervisor:main Mar 21, 2023
@rbradford rbradford deleted the 2023-03-20-rv64-support branch March 21, 2023 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants