RISC-V support in FWTS

Atish Patra Atish.Patra at wdc.com
Sat Jul 18 21:41:54 UTC 2020


On Fri, 2020-07-17 at 09:11 +0100, Colin Ian King wrote:
> I have access to a RISC-V system, I'll try fwta on this next week and
> see if we can get it to pass the regression tests and then packaged.
> 

Thanks. I was planning to send the patch to add the support but I saw
your tweet about RISC-V passing all the regression tests!!

I will just pull your patch :).

https://lists.ubuntu.com/archives/fwts-devel/2020-July/012113.html

I just have a quick thought about the patch. Apologies for the posting
in this thread as I subscribed to the mailing list today.

Should we enable FWTS_HAS_ACPI now ? There is no proposal for ACPI yet.
It won't be preposterous to say that ACPI support won't be there for at
least couple of years from today :) :).

> Colin
> 
> On 17/07/2020 01:24, Blibbet wrote:
> > See below, Western Digital is using FWTS to test UEFI runtime
> > services!
> > 
> > Does anyone else have a RISC-V branch of FWTS?
> > 
> > Looking forward to seeing RISC-V patches in FWTS trunk.
> > 
> > -------- Forwarded Message --------
> > Subject:     [RFT PATCH v3 0/9] Add UEFI support for RISC-V
> > Date:     Thu, 16 Jul 2020 16:40:55 -0700
> > From:     Atish Patra <atish.patra at wdc.com>
> > To:     linux-kernel at vger.kernel.org
> > CC:     Atish Patra <atish.patra at wdc.com>, Anup Patel
> > <anup.patel at wdc.com>, Ard Biesheuvel <ardb at kernel.org>, Arnd
> > Bergmann
> > <arnd at arndb.de>, Greentime Hu <greentime.hu at sifive.com>, Kees Cook
> > <keescook at chromium.org>, linux-efi at vger.kernel.org,
> > linux-riscv at lists.infradead.org, Mark Rutland <mark.rutland at arm.com
> > >,
> > Masahiro Yamada <masahiroy at kernel.org>, Mike Rapoport
> > <rppt at linux.ibm.com>, Palmer Dabbelt <palmer at dabbelt.com>, Paul
> > Walmsley
> > <paul.walmsley at sifive.com>, Will Deacon <will at kernel.org>, Zong Li
> > <zong.li at sifive.com>, Heinrich Schuchardt <xypron.glpk at gmx.de>,
> > linux-arm-kernel at lists.infradead.org
> > 
> > 
> > This series adds UEFI support for RISC-V.
> > 
> > Linux kernel: 5.8-rc5 + "mm & exception handing fixes" series
> > U-Boot: master
> > OpenSBI: master
> > 
> > This series depends on earlier mm fixes series
> > 
> > http://lists.infradead.org/pipermail/linux-riscv/2020-July/001208.html
> > 
> > Patch 1-3 are generic riscv feature addition required for UEFI
> > support.
> > Patch 4-7 adds the efi stub support for RISC-V which was reviewed
> > few
> > months back.
> > https://www.spinics.net/lists/linux-efi/msg19144.html
> > Patch 8 just renames arm-init code so that it can be used across
> > different
> > architectures. Patch 11 adds the runtime services for RISC-V.
> > 
> > The working set of patches can also be found in following git repo.
> > https://github.com/atishp04/linux/tree/uefi_riscv_5.9_v3
> > 
> > The patches have been verified on Qemu using bootefi command in U-
> > Boot
> > for both
> > RV32 and RV64.
> > 
> > For RV32, maximum allocated memory should be 1G as RISC-V kernel
> > can not map
> > beyond 1G of physical memory for RV32.
> > 
> > EDK2 can boot quite far into Linux with current series. Currently,
> > we
> > are seeing
> > some traps from drivers (spi/network). At first glance, they don't
> > seem
> > to be
> > caused by efi. I thought it is better to get some early feedback on
> > the
> > series
> > while EDK2 issue is being debugged.
> > 
> > Runtime services have been verified with fwts. Here is the snippet
> > of
> > the result.
> > 
> > *******************************************************************
> > ****
> > This test run on 16/07/20 at 17:54:53 on host Linux fedora-riscv
> > 5.8.0-rc5-00015-g5e61441080fd-dirty #938 SMP Thu Jul 16 14:50:11
> > PDT 2020
> > riscv64.
> > 
> > Command: "fwts uefirtvariable".
> > Running tests: uefirtvariable.
> > 
> > uefirtvariable: UEFI Runtime service variable interface tests.
> > Test 1 of 9: Test UEFI RT service get variable interface.
> > SKIPPED: Test 1, Skipping test, SetVariable runtime service is not
> > supported on
> > this platform.
> > 
> > Test 2 of 9: Test UEFI RT service get next variable name interface.
> > The runtime service GetNextVariableName interface function test.
> > SKIPPED: Test 2, Skipping test, SetVariable runtime service is not
> > supported on
> > this platform.
> > 
> > ...
> > 
> > Test 4 of 9: Test UEFI RT service query variable info interface.
> > SKIPPED: Test 4, Not support the QueryVariableInfo UEFI runtime
> > interface:
> > cannot test.
> > 
> > ADVICE: Firmware also needs to check if the revision of system
> > table is
> > correct
> > or not. Linux kernel returns EFI_UNSUPPORTED as well, if the
> > FirmwareRevision of
> > system table is less than EFI_2_00_SYSTEM_TABLE_REVISION.
> > 
> > ...
> > *******************************************************************
> > ****
> > 
> > Currently, U-Boot EFI implementation returns EFI_UNSUPPORTED for
> > set_variable
> > service. That's why all tests have been skipped but I manually
> > verified
> > the value
> > returned from U-Boot not kernel :).
> > 
> > Changes from v2->v3:
> > 1. Fixed few bugs in run time services page table mapping.
> > 2. Dropped patch 1 as it is already taken into efi-tree.
> > 3. Sent few generic mmu fixes as a separate series to ease the
> > merge
> > conflicts.
> > 
> > Changes from v1->v2:
> > 1. Removed patch 1 as it is already taken into efi-tree.
> > 2. Fixed compilation issues with patch 9.
> > 3. Moved few function prototype declaration to header file to keep
> > kbuild happy.
> > 
> > Changes from previous version:
> > 1. Added full ioremap support.
> > 2. Added efi runtime services support.
> > 3. Fixes mm issues
> > 
> > Anup Patel (1):
> > RISC-V: Move DT mapping outof fixmap
> > 
> > Atish Patra (8):
> > RISC-V: Add early ioremap support
> > RISC-V: Implement late mapping page table allocation functions
> > include: pe.h: Add RISC-V related PE definition
> > RISC-V: Add PE/COFF header for EFI stub
> > RISC-V: Add EFI stub support.
> > efi: Rename arm-init to efi-init common for all arch
> > RISC-V: Add EFI runtime services
> > RISC-V: Add page table dump support for uefi
> > 
> > arch/riscv/Kconfig | 25 +++
> > arch/riscv/Makefile | 1 +
> > arch/riscv/configs/defconfig | 1 +
> > arch/riscv/include/asm/Kbuild | 1 +
> > arch/riscv/include/asm/efi.h | 56 +++++++
> > arch/riscv/include/asm/fixmap.h | 16 +-
> > arch/riscv/include/asm/io.h | 1 +
> > arch/riscv/include/asm/mmu.h | 2 +
> > arch/riscv/include/asm/pgtable.h | 4 +
> > arch/riscv/include/asm/sections.h | 13 ++
> > arch/riscv/kernel/Makefile | 5 +
> > arch/riscv/kernel/efi-header.S | 104 +++++++++++++
> > arch/riscv/kernel/efi.c | 105 +++++++++++++
> > arch/riscv/kernel/head.S | 17 ++-
> > arch/riscv/kernel/head.h | 2 -
> > arch/riscv/kernel/image-vars.h | 51 +++++++
> > arch/riscv/kernel/setup.c | 16 +-
> > arch/riscv/kernel/vmlinux.lds.S | 22 ++-
> > arch/riscv/mm/init.c | 100 ++++++++----
> > arch/riscv/mm/ptdump.c | 48 +++++-
> > drivers/firmware/efi/Kconfig | 3 +-
> > drivers/firmware/efi/Makefile | 4 +-
> > .../firmware/efi/{arm-init.c => efi-init.c} | 0
> > drivers/firmware/efi/libstub/Makefile | 10 ++
> > drivers/firmware/efi/libstub/efi-stub.c | 11 +-
> > drivers/firmware/efi/libstub/riscv-stub.c | 110 ++++++++++++++
> > drivers/firmware/efi/riscv-runtime.c | 143 ++++++++++++++++++
> > include/linux/pe.h | 3 +
> > 28 files changed, 823 insertions(+), 51 deletions(-)
> > create mode 100644 arch/riscv/include/asm/efi.h
> > create mode 100644 arch/riscv/include/asm/sections.h
> > create mode 100644 arch/riscv/kernel/efi-header.S
> > create mode 100644 arch/riscv/kernel/efi.c
> > create mode 100644 arch/riscv/kernel/image-vars.h
> > rename drivers/firmware/efi/{arm-init.c => efi-init.c} (100%)
> > create mode 100644 drivers/firmware/efi/libstub/riscv-stub.c
> > create mode 100644 drivers/firmware/efi/riscv-runtime.c
> > 
> > --
> > 2.24.0
> > 
> > 
> > 

-- 
Regards,
Atish


More information about the fwts-devel mailing list