Sunil V L
677f2c6f15
OvmfPkg/RiscVVirt: Update README for CLANGDWARF support
...
Update the README with instruction to build using CLANGDWARF
toolchain.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Tested-by: Ard Biesheuvel <ardb@kernel.org > # Debian clang version 14.0.6
2023-07-31 12:37:12 +00:00
Sunil V L
0f9fd06919
OvmfPkg/RiscVVirt: SecEntry: Remove unnecessary assembly directives
...
llvm fails to resolve _ModuleEntry when these extra directives are
present. ASM_FUNC already takes care what is required.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Tested-by: Ard Biesheuvel <ardb@kernel.org > # Debian clang version 14.0.6
2023-07-31 12:37:12 +00:00
Sunil V L
8543840cfd
OvmfPkg/RiscVVirt: use 'auto' alignment and FIXED for XIP modules
...
Use auto alignment and FIXED FFS attribute for XIP modules similar
to [1]. Without this change, the CLANGDWARF toolchain will fail to
build with below error.
GenFfs: ERROR 1000: Unknown option
SectionAlign option must be specified with section file.
[1] - 7669f73498
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Tested-by: Ard Biesheuvel <ardb@kernel.org > # Debian clang version 14.0.6
2023-07-31 12:37:12 +00:00
Sunil V L
925c445fd3
OvmfPkg/RiscVVirt: Avoid printing hard coded timeout value
...
Print the timeout value set in the PCD variable instead of
hard coded 10 seconds.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
2023-07-21 05:56:55 +00:00
Sunil V L
7427dd3fc0
OvmfPkg/RiscVVirt: Check "no-map" and mark EfiReservedMemoryType
...
OpenSBI now marks PMP regions with "no-map" attribute.
So, remove the workaround and add the ReservedMemory only
when no-map is set so that it follows DT spec.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Ranbir Singh <rsingh@ventanamicro.com >
2023-07-21 05:56:55 +00:00
Tuan Phan
f220dcbba8
UefiCpuPkg: RISC-V: Support MMU with SV39/48/57 mode
...
During CpuDxe initialization, MMU will be setup with the highest
mode that HW supports.
Signed-off-by: Tuan Phan <tphan@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-07-15 14:10:18 +00:00
Tuan Phan
cc13dcc576
OvmfPkg: RiscVVirt: Remove satp bare mode setting
...
There is no point to set satp to bare mode as that should be the
default mode when booting edk2.
Signed-off-by: Tuan Phan <tphan@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-07-15 14:10:18 +00:00
Tuan Phan
33d0a3cc92
OvmfPkg/RiscVVirt: Add VirtNorFlashDxe to APRIORI list
...
Make sure VirtNorFlashDxe loaded before VariableRuntimeDxe as it
is the backend flash driver.
Signed-off-by: Tuan Phan <tphan@ventanamicro.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-07-15 14:10:18 +00:00
Tuan Phan
a8a72fc1ff
OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices
...
Normally, DXE driver would add device resource to GCD before start using.
But some key resources such as uart used for printing info at very early
stage.
Those resources should be populated to HOB in SEC phase so they are
added to GCD before MMU enabled.
Signed-off-by: Tuan Phan <tphan@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-07-15 14:10:18 +00:00
Tuan Phan
a9fc9bb466
OvmfPkg/RiscVVirt: VirtNorFlashPlatformLib: Fix wrong flash size
...
The size should be for single region, not the whole firmware FD.
Signed-off-by: Tuan Phan <tphan@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-07-15 14:10:18 +00:00
Corvin Köhne
ea88df6b26
OvmfPkg: move PciEncoding into AcpiPlatformLib
...
Bhyve supports providing ACPI tables by FwCfg. Therefore,
InstallQemuFwCfgTables should be moved to AcpiPlatformLib to reuse the
code. As first step, move PciEncoding into AcpiPlatformLib.
Signed-off-by: Corvin Köhne <corvink@FreeBSD.org >
Acked-by: Peter Grehan <grehan@freebsd.org >
2023-06-23 17:26:37 +00:00
Sunil V L
49f06b6640
OvmfPkg/RiscVVirt: Add a readme for build and test
...
Add a readme file which provides information regarding how
to build and test EDK2 on RISC-V qemu virt platform.
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
2023-06-23 04:49:11 +00:00
Sunil V L
37423fa344
OvmfPkg/RiscVVirt: Add support for separate code and variable store
...
Currently, RiscVVirtQemu supports unified code and variable store
mainly because only one pflash devices was available in qemu for
EDK2. However, this doesn't allow to map the code part as read-only.
With recent qemu enhancements, it is now possible for EDK2 to make
use of both pflash devices in RISC-V virt machine. So, add support
to create code and vars images separately. This also allows easy
firmware code updates without losing the variable store.
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
2023-06-23 04:49:11 +00:00
Sunil V L
420cd54993
OvmfPkg/RiscVVirt: Add VirtNorFlashDeviceTreeLib library
...
This library is required to support separate code and
variable store images.
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
2023-06-23 04:49:11 +00:00
Sunil V L
f6c4b0a78e
OvmfPkg/RiscVVirt: Fix couple of issues in VarStore
...
The size of the FV and the WriteQueueSize is incorrect which causes
the flash to be re-written during boot. Fix them and update the new
checksum value.
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
2023-06-23 04:49:11 +00:00
Ard Biesheuvel
8fbf857a0b
OvmfPkg/RiscVVirt: Remove unimplemented NxForStack configuration
...
The RISC-V version of the DXE IPL does not implement setting the stack
NX, so before switching to an implementation that will ASSERT() on the
missing support, drop the PCD setting that enables it.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-06-02 16:38:32 +00:00
Andrei Warkentin
0abfb0be6c
OvmfPkg: RiscVVirt: Add missing SerialPortInitialize to Sec
...
If the SerialPortLib had any initialization needed, this
would be skipped in the RiscVVirt Sec. Follow the example
seen elsewhere (ArmVirtPkg PrePi).
Seen with BaseSerialPortLibRiscVSbiLibRam not using DBCN in Sec,
yet using DBCN elsewhere.
Cc: Daniel Schaefer <git@danielschaefer.me >
Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com >
2023-05-17 23:47:20 +00:00
Rebecca Cran
8ba392687b
OvmfPkg: Update code to be more C11 compliant by using __func__
...
__FUNCTION__ is a pre-standard extension that gcc and Visual C++ among
others support, while __func__ was standardized in C99.
Since it's more standard, replace __FUNCTION__ with __func__ throughout
OvmfPkg.
Signed-off-by: Rebecca Cran <rebecca@bsdio.com >
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com >
Reviewed-by: Ard Biesheuvel <ardb@kernel.org >
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com >
2023-04-10 14:19:57 +00:00
Sunil V L
71fd87e98a
OvmfPkg/RiscVVirt: Support multiple reserved memory ranges
...
M-mode firmware ranges should not be used by EDK2/OS.
Currently, we search for mmode_resv0 node in FDT and mark it as the
reserved memory in EFI memory map. However, if there are multiple
M-mode firmware ranges, then this will miss those extra ranges
allowing the OS to access the memory and hit a fault.
This issue is exposed since recent opensbi started creating
two ranges for text and data.
Fix this by searching for all reserved memory nodes and marking
them as reserved in the EFI memory map.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
2023-03-28 05:04:34 +00:00
Andrei Warkentin
7fa4692636
OvmfPkg: RiscVVirt: add SATA support
...
Tested with a PCIe pass-thru'd AHCI controller.
Cc: Sunil V L <sunilvl@ventanamicro.com >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com >
2023-03-08 18:10:34 +00:00
Sunil V L
f80f052277
OvmfPkg/RiscVVirt: Add Stack HOB
...
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4350
Currently, stack HOB is not created for the stack memory. This causes
stack memory to be treated as free memory and any memory allocation which
happens at this address causes random memory corruption. Fix this by
creating the stack HOB which marks the memory as BS data.
Cc: Liming Gao <gaoliming@byosoft.com.cn >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reported-by: Andrei Warkentin <andrei.warkentin@intel.com >
Tested-by: Andrei Warkentin <andrei.warkentin@intel.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
2023-03-01 15:08:07 +00:00
Sunil V L
bc82574de4
OvmfPkg/RiscVVirt: Fix SCT memory allocation test case failure
...
Fix the UEFI memory range calculation by including the correct
stack memory range. Without this fix, SCT hangs in MemoryAllocation
test cases which call AllocateAddress().
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Andrei Warkentin <andrei.warkentin@intel.com >
Reported-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
2023-02-23 05:02:15 +00:00
Sunil V L
92b27c2e6a
OvmfPkg/RiscVVirt: Add build files for Qemu Virt platform
...
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4076
Add infrastructure files to build edk2 for RISC-V qemu virt machine.
- It follows PEI less design.
- EDK2 for qemu virt is booted in S-mode as a payload for M-mode FW
- Leveraged from ArmVirtQemu
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2023-02-16 05:53:28 +00:00
Sunil V L
e1aaef001f
OvmfPkg/RiscVVirt: Add SEC module
...
Add the SEC module for RISC-V Qemu virt machine support.
It uses the PEI less design.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
2023-02-16 05:53:28 +00:00
Sunil V L
a43a62f9b0
OvmfPkg/RiscVVirt: Add PciCpuIo2Dxe module
...
Add PciCpuIo2Dxe driver to implement EFI_CPU_IO2_PROTOCOL
to add the translation for IO access. This is copied from
ArmPciCpuIo2Dxe driver.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2023-02-16 05:53:28 +00:00
Sunil V L
6d5ae344cd
OvmfPkg/RiscVVirt: Add VirtNorFlashPlatformLib library
...
Qemu NOR flash driver needs this library. Add this
library for RISC-V leveraged from SbsaQemu.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
2023-02-16 05:53:28 +00:00
Sunil V L
c126e3588d
OvmfPkg/RiscVVirt: Add ResetSystemLib library
...
RISC-V Qemu virt uses SBI calls to implement the reset.
Add the base class library.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2023-02-16 05:53:28 +00:00
Sunil V L
6720b8e46f
OvmfPkg/RiscVVirt: Add PrePiHobListPointerLib library
...
Add the PrePiHobListPointerLib required for RISC-V Qemu Virt machine
since it follows PEIless design.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
2023-02-16 05:53:28 +00:00
Sunil V L
d78df93863
OvmfPkg/RiscVVirt: Add PlatformBootManagerLib library
...
RISC-V Qemu Virt platfform needs the PlatformBootManagerLib similar
to the one in ArmVirtPlatform. Add the library in OvmfPkg/RiscVVirt
leveraging the one from Arm.
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org >
Cc: Jiewen Yao <jiewen.yao@intel.com >
Cc: Jordan Justen <jordan.l.justen@intel.com >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com >
Acked-by: Abner Chang <abner.chang@amd.com >
Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com >
Acked-by: Ard Biesheuvel <ardb@kernel.org >
Acked-by: Jiewen Yao <Jiewen.yao@intel.com >
2023-02-16 05:53:28 +00:00