linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v8 0/7] Add UEFI support for RISC-V
@ 2020-09-17 22:37 Atish Patra
  2020-09-17 22:37 ` [PATCH v8 1/7] RISC-V: Move DT mapping outof fixmap Atish Patra
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Atish Patra @ 2020-09-17 22:37 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-efi, Atish Patra, Arvind Sankar, Maxim Uvarov,
	Alistair Francis, Zong Li, linux-riscv, Ingo Molnar,
	Masahiro Yamada, Michal Simek, Ard Biesheuvel, Greentime Hu,
	Borislav Petkov, Albert Ou, Kees Cook, Heiko Carstens,
	Paul Walmsley, Thomas Gleixner, Anup Patel, Nick Desaulniers,
	Palmer Dabbelt, Andrew Morton, Mike Rapoport

This series adds UEFI support for RISC-V.

Linux kernel: v5.9-rc5 
U-Boot: v2020.07 
OpenSBI: master

Patch 1-3 are generic riscv feature addition required for UEFI support.
Patch 4-5 adds the efi stub support for RISC-V which was reviewed few months back.
Patch 6 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.10_v8

@Palmer: I have dropped the following 2 patches from last series (v7)
as this is already part of the shared efi-tree. I am assuming you are pulling
these two from there. The above github tree contains all the patches in order
as per Ard's suggestion.

87a1eeea8e7a include: pe.h: Add RISC-V related PE definition
76fdd4313434 efi: Rename arm-init to efi-init common for all arch

The patches have been verified on following platforms:
1. Qemu (both RV32 & RV64) for the following bootflow
   OpenSBI->U-Boot->Linux
   EDK2->Linux
2. HiFive unleashed using (RV64) for the following bootflow
   OpenSBI->U-Boot->Linux
   EDK2->Linux

Thanks Abner & Daniel for all work done for EDK2.
The EDK2 instructions are available here.
https://github.com/JohnAZoidberg/riscv-edk2-docker/

Note:
1. Currently, EDK2 RISC-V port doesn't support OVMF package. That's why
EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER should be enabled to load initrd via
commandline until OVMF patches are available.

2. For RV32, maximum allocated memory should be 1G as RISC-V kernel can not map
beyond 1G of physical memory for RV32.

3. Runtime services have been verified with fwts on EDK2.

***********************************************************************
[root@fedora-riscv ~]# fwts uefirtvariable
Running 1 tests, results appended to results.log
Test: UEFI Runtime service variable interface tests.                        
  Test UEFI RT service get variable interface.            1 passed             
  Test UEFI RT service get next variable name interface.  4 passed             
  Test UEFI RT service set variable interface.            7 passed, 1 warning  
  Test UEFI RT service query variable info interface.     1 passed             
  Test UEFI RT service variable interface stress test.    2 passed             
  Test UEFI RT service set variable interface stress t..  4 passed             
  Test UEFI RT service query variable info interface s..  1 passed             
  Test UEFI RT service get variable interface, invalid..  5 passed             
  Test UEFI RT variable services supported status.        1 skipped 

Test           |Pass |Fail |Abort|Warn |Skip |Info |
uefirtvariable |   25|     |     |    1|    1|     |
Total:         |   25|    0|    0|    1|    1|    0|

***********************************************************************

Changes from v7->v8:
1. Rebased on latest efi series[1].
2. Fixed efi-header for 32 bit.
3. Included RISC-V tweaks from Ard[2].
4. Removed the 2 patches(pe.h & arm init) from v7 as it is going through efi tree.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
[2] git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git

Changes from v6->v7:
1. Fixed build error reported on linux-next for patch2.

Changes from v5->v6:
1. Fixed the static declaration for pt_ops.
2. Added Reviewed/Acked-by.

Changes from v4->v5:
1. Late mappings allocations are now done through function pointers.
2. EFI run time services are verified using full linux boot and fwts using EDK2.

Changes from v3->v4:
1. Used pgd mapping to avoid copying DT to bss.

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 (6):
RISC-V: Add early ioremap support
RISC-V: Implement late mapping page table allocation functions
RISC-V: Add PE/COFF header for EFI stub
RISC-V: Add EFI stub support.
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              |  55 +++++++
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          |   5 +
arch/riscv/include/asm/sections.h         |  13 ++
arch/riscv/kernel/Makefile                |   2 +
arch/riscv/kernel/efi-header.S            | 111 +++++++++++++
arch/riscv/kernel/efi.c                   |  96 +++++++++++
arch/riscv/kernel/head.S                  |  17 +-
arch/riscv/kernel/head.h                  |   2 -
arch/riscv/kernel/image-vars.h            |  51 ++++++
arch/riscv/kernel/setup.c                 |  18 +-
arch/riscv/kernel/vmlinux.lds.S           |  23 ++-
arch/riscv/mm/init.c                      | 191 ++++++++++++++++------
arch/riscv/mm/ptdump.c                    |  48 +++++-
drivers/firmware/efi/Kconfig              |   3 +-
drivers/firmware/efi/Makefile             |   2 +
drivers/firmware/efi/libstub/Makefile     |  10 ++
drivers/firmware/efi/libstub/efi-stub.c   |  11 +-
drivers/firmware/efi/libstub/riscv-stub.c | 109 ++++++++++++
drivers/firmware/efi/riscv-runtime.c      | 143 ++++++++++++++++
26 files changed, 891 insertions(+), 66 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
create mode 100644 drivers/firmware/efi/libstub/riscv-stub.c
create mode 100644 drivers/firmware/efi/riscv-runtime.c

--
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-11-09  8:19 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-17 22:37 [PATCH v8 0/7] Add UEFI support for RISC-V Atish Patra
2020-09-17 22:37 ` [PATCH v8 1/7] RISC-V: Move DT mapping outof fixmap Atish Patra
2020-11-09  7:44   ` Greentime Hu
2020-11-09  8:19     ` Anup Patel
2020-09-17 22:37 ` [PATCH v8 2/7] RISC-V: Add early ioremap support Atish Patra
2020-09-17 22:37 ` [PATCH v8 3/7] RISC-V: Implement late mapping page table allocation functions Atish Patra
2020-09-17 22:37 ` [PATCH v8 4/7] RISC-V: Add PE/COFF header for EFI stub Atish Patra
2020-09-17 22:37 ` [PATCH v8 5/7] RISC-V: Add EFI stub support Atish Patra
2020-09-17 22:37 ` [PATCH v8 6/7] RISC-V: Add EFI runtime services Atish Patra
2020-09-17 22:37 ` [PATCH v8 7/7] RISC-V: Add page table dump support for uefi Atish Patra
2020-10-02 21:38 ` [PATCH v8 0/7] Add UEFI support for RISC-V Palmer Dabbelt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).