On Thu, 30 Apr 2020 at 00:52, Palmer Dabbelt <palmer@xxxxxxxxxxx> wrote: > > On Tue, 28 Apr 2020 10:57:48 PDT (-0700), atishp@xxxxxxxxxxxxxx wrote: > > On Sun, Apr 26, 2020 at 12:52 PM Atish Patra <atishp@xxxxxxxxxxxxxx> wrote: > >> > >> On Sat, Apr 25, 2020 at 12:31 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > >> > > >> > Palmer, > >> > > >> > As discussed, below are the changes for v5.8 that can be taken via the > >> > RISC-V tree to implement booting RISC-V Linux from EFI firmware. > >> > > >> > You can fetch and merge the signed tag directly, or merge 22090f84bc3f80 > >> > and cherry pick the 4 patches on top of it, if you see any need to do so > >> > (but please use a topic branch in that case) > >> > > >> > Please be aware (as is noted in the tag) that these changes are really > >> > the bare minimum that is needed to launch the kernel from EFI firmware. > >> > In the current state, you may be able to boot from Uboot in EFI mode, > >> > but Tianocore based boot will not work at all, unless you convert the > >> > EFI memory map back to DT memory nodes in the firmware implementation, > >> > and I can assure you that that is not something that will be accepted in > >> > upstream Tianocore. > >> > > >> > So in summary, this is unfinished work, and I can only recommend merging > >> > these changes once there is a plan in place to complete the implementation. > >> > > >> > >> I have started looking into this part. My initial plan was to start > >> looking into it right after I got > >> the boot time services working but other things took priority. Thanks > >> for your review and > >> suggestion throughout the process. I will coordinate with Abner/Daniel > >> to test RISC-V UEFI > >> runtime services(once implemented) with tianocore. > >> > -- > >> > Ard. > >> > > >> > > >> > The following changes since commit 22090f84bc3f8081e0ec180ccaedc85820085376: > >> > > >> > efi/libstub: unify EFI call wrappers for non-x86 (2020-04-23 20:15:06 +0200) > >> > > >> > are available in the Git repository at: > >> > > >> > git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git tags/riscv-efi-for-v5.8 > >> > > >> > for you to fetch changes up to 66b4ac6b9dd1fdbb8ac7a1f20a8d08066368245d: > >> > > >> > RISC-V: Add EFI stub support. (2020-04-25 13:59:54 +0200) > >> > > >> > ---------------------------------------------------------------- > >> > EFI stub loading support for RISC-V > >> > > >> > This branch implements support for loading the RISC-V Linux kernel > >> > straight from EFI firmware, by adding PE/COFF metadata to the kernel > >> > image and incorporating the kernel's EFI stub. > >> > > >> > Note that this is the *bare* minimum that is needed to boot from EFI > >> > firmware. The following pieces are still missing at this point, and > >> > will be required for full interoperability with generic EFI firmware: > >> > - using the EFI memory map instead of the device tree to populate the > >> > memblock tables > >> > - parsing and handling of generic EFI configuration tables (such as > >> > SMBIOS), as well as architecture specific ones that may be defined > >> > for RISC-V > >> > - runtime mapping of EFI runtime services memory and MMIO regions, and > >> > support for EFI runtime services (get/set time, get/set variable, reset > >> > system) > >> > > >> > ---------------------------------------------------------------- > >> > > >> > Cc: Atish Patra <atish.patra@xxxxxxx> > >> > Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx> > >> > Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx> > >> > Cc: Albert Ou <aou@xxxxxxxxxxxxxxxxx> > >> > Cc: linux-riscv@xxxxxxxxxxxxxxxxxxx > >> > > >> > Atish Patra (4): > >> > include: pe.h: Add RISC-V related PE definition > >> > RISC-V: Define fixmap bindings for generic early ioremap support > >> > RISC-V: Add PE/COFF header for EFI stub > >> > RISC-V: Add EFI stub support. > >> > > >> > arch/riscv/Kconfig | 22 ++++++ > >> > arch/riscv/Makefile | 1 + > >> > arch/riscv/configs/defconfig | 1 + > >> > arch/riscv/include/asm/Kbuild | 1 + > >> > arch/riscv/include/asm/efi.h | 33 +++++++++ > >> > arch/riscv/include/asm/fixmap.h | 18 +++++ > >> > arch/riscv/include/asm/io.h | 1 + > >> > arch/riscv/include/asm/sections.h | 13 ++++ > >> > arch/riscv/kernel/Makefile | 4 ++ > >> > arch/riscv/kernel/efi-header.S | 100 +++++++++++++++++++++++++++ > >> > arch/riscv/kernel/head.S | 16 +++++ > >> > arch/riscv/kernel/image-vars.h | 53 +++++++++++++++ > >> > arch/riscv/kernel/vmlinux.lds.S | 22 +++++- > >> > drivers/firmware/efi/Kconfig | 3 +- > >> > drivers/firmware/efi/libstub/Makefile | 10 +++ > >> > drivers/firmware/efi/libstub/riscv-stub.c | 109 ++++++++++++++++++++++++++++++ > >> > include/linux/pe.h | 3 + > >> > 17 files changed, 407 insertions(+), 3 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/image-vars.h > >> > create mode 100644 drivers/firmware/efi/libstub/riscv-stub.c > >> > >> > >> > >> -- > >> Regards, > >> Atish > > > > Hi Palmer, > > There were few build errors for all-yes config and nommu reported by > > 0-day tests. > > As some of the fixes require to add some dummy declarations for efi > > runtime related functions, > > Ard suggested that we should drop the series for now and merge with > > full uefi support later. > > OK, I'll wait for another patch set. That makes my life a bit easier as well, > as we don't have to do the multi-tree merge in a single release. Yeah. Apologies for the back and forth, but I really don't want to end up in a place where I am juggling EFI fixes and have to care about architectures that can't even use EFI in a meaningful way.