RISC-V support in FWTS
Colin Ian King
colin.king at canonical.com
Mon Jul 20 07:58:31 UTC 2020
On 18/07/2020 22:41, Atish Patra wrote:
> 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 :) :).
I'd rather have it enabled sooner than later as fwts will just skip
these tests until ACPI gets enabled. It may be some extra test noise for
the moment, but at least it is ready for when ACPI enabled systems
appear in the future. Also, I have a large set of ACPI data that I can
now feed into the risc-v version of fwts to sanity check that ACPICA
core is working correctly.
Colin
>
>> 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
>>>
>>>
>>>
>
More information about the fwts-devel
mailing list