All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support
@ 2018-04-23  5:59 Alexander Graf
  2018-04-23  5:59 ` [U-Boot] [PATCH v3 1/8] riscv: Add setjmp/longjmp code Alexander Graf
                   ` (9 more replies)
  0 siblings, 10 replies; 28+ messages in thread
From: Alexander Graf @ 2018-04-23  5:59 UTC (permalink / raw)
  To: u-boot

We now have RISC-V support in U-Boot - which is great!

However, not that we're finally making progress to converge on
efi_loader and distro boot for booting on ARM platforms, we
really want to make sure there is no technical reason not to
do the same on RISC-V as well.

So this patch set introduces distro boot and efi_loader support
for RISC-V!

So far, I've only tested it with the selftest and hello world
target in U-Boot, as the number of target binaries to run is
still slim. But it should at least give us a good starting point.

v1 -> v2:

  - Allow 32bit target
  - Also save/restore ra, sp
  - Use edk2 default boot file names
  - Enable hello world binary
  - remove patch: efi_loader: selftest: Do not build relocation tests for risc-v
  - new patch: riscv: Add EFI application infrastructure

v2 -> v3:

  - Add missing crt0 source
  - Use official values for vci

Alexander Graf (8):
  riscv: Add setjmp/longjmp code
  riscv: Enable function sections
  riscv: Add EFI application infrastructure
  riscv: Add board_quiesce_devices stub
  efi_loader: Use EFI_CACHELINE_SIZE in the image loader too
  distro: Extend with RISC-V defines
  riscv: nx25: Enable distro boot
  efi_loader: Enable RISC-V support

 arch/riscv/config.mk                  |   7 +-
 arch/riscv/cpu/nx25/u-boot.lds        |  16 ++++
 arch/riscv/include/asm/setjmp.h       |  26 ++++++
 arch/riscv/include/asm/u-boot-riscv.h |   1 +
 arch/riscv/lib/Makefile               |  12 +++
 arch/riscv/lib/bootm.c                |   4 +
 arch/riscv/lib/crt0_riscv_efi.S       | 152 ++++++++++++++++++++++++++++++++++
 arch/riscv/lib/elf_riscv32_efi.lds    |  70 ++++++++++++++++
 arch/riscv/lib/elf_riscv64_efi.lds    |  70 ++++++++++++++++
 arch/riscv/lib/reloc_riscv_efi.c      |  97 ++++++++++++++++++++++
 arch/riscv/lib/setjmp.S               |  66 +++++++++++++++
 cmd/Kconfig                           |   2 +-
 configs/nx25-ae250_defconfig          |   1 +
 include/config_distro_bootcmd.h       |  11 +++
 include/configs/nx25-ae250.h          |  17 ++++
 include/efi_loader.h                  |   7 ++
 lib/efi_loader/Kconfig                |   2 +-
 lib/efi_loader/efi_image_loader.c     |   2 +-
 lib/efi_loader/efi_runtime.c          |  48 ++++++++---
 19 files changed, 595 insertions(+), 16 deletions(-)
 create mode 100644 arch/riscv/include/asm/setjmp.h
 create mode 100644 arch/riscv/lib/crt0_riscv_efi.S
 create mode 100644 arch/riscv/lib/elf_riscv32_efi.lds
 create mode 100644 arch/riscv/lib/elf_riscv64_efi.lds
 create mode 100644 arch/riscv/lib/reloc_riscv_efi.c
 create mode 100644 arch/riscv/lib/setjmp.S

-- 
2.12.3

^ permalink raw reply	[flat|nested] 28+ messages in thread
* [U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support
@ 2018-05-10  3:27 Rick Chen
  2018-05-10  6:03 ` Alexander Graf
  0 siblings, 1 reply; 28+ messages in thread
From: Rick Chen @ 2018-05-10  3:27 UTC (permalink / raw)
  To: u-boot

> >
> > Then I think if I don't want enter this auto flow, what can I do ?
> >
> > 1 Remove CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig  But it
> > still enter auto flow.
> >
> > 2 Add #ifdef CONFIG_DISTRO_DEFAULTS to encapsulate the
> > CONFIG_EXTRA_ENV_SETTINGS in nx25-ae250.h  And Remove
> > CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig  And it will NOT
> > enter auto flow
> >
> > #ifdef CONFIG_DISTRO_DEFAULTS
> > /* Enable distro boot */
> > #define BOOT_TARGET_DEVICES(func) \
> >         func(MMC, mmc, 0) \
> >         func(DHCP, dhcp, na)
> >
> > #include <config_distro_bootcmd.h>
> >
> > #define CONFIG_EXTRA_ENV_SETTINGS       \
> >                                 "kernel_addr_r=0x00080000\0" \
> >                                 "pxefile_addr_r=0x01f00000\0" \
> >                                 "scriptaddr=0x01f00000\0" \
> >                                 "fdt_addr_r=0x02000000\0" \
> >                                 "ramdisk_addr_r=0x02800000\0" \
> >                                 BOOTENV #endif
> >
> > 3 Add #ifdef CONFIG_DISTRO_DEFAULTS to encapsulate the
> > CONFIG_EXTRA_ENV_SETTINGS in nx25-ae250.h  And do NOT Remove
> > CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig  But disable
> CONFIG_DISTRO_DEFAULTS from make menuconfig
> >    General setup  --->
> >      [ ] Select defaults suitable for booting general purpose Linux
> > distributions  And it still enter auto flow
> >
> > Offering this information for you.
>
> This is the same for all distro enabled boards. The basic idea is that U-Boot ships
> with something that "just boots" for simple use cases.
>
> If you want something more advanced, you usually want to put something very
> target specific in there anyway, such as "bootm $nor_flash". In that case, you
> adapt the CONFIG_BOOTCOMMAND parameter to whatever you want.
>
> The boot command can also be overridden using the environment. So if you have
> working environment store, you can change the U-Boot variable "bootcmd" and
> U-Boot will run that instead when it boots.
>
> The alternative to this default behavior would be no bootcmd at all which means
> you just get dropped into the U-Boot prompt. While that's reasonably useful for
> developers, it isn't for people deploying U-Boot on real target systems :).
>
>
> Alex

Thanks for your advises.

After you send those patchs into main trunk.
I will fetch and push them to u-boot-riscv.git :)

Rick

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

end of thread, other threads:[~2018-05-10  7:16 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-23  5:59 [U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support Alexander Graf
2018-04-23  5:59 ` [U-Boot] [PATCH v3 1/8] riscv: Add setjmp/longjmp code Alexander Graf
2018-05-07  2:25   ` rick at andestech.com
2018-04-23  5:59 ` [U-Boot] [PATCH v3 2/8] riscv: Enable function sections Alexander Graf
2018-04-23  7:35   ` Heinrich Schuchardt
2018-04-23 17:21     ` Alexander Graf
2018-05-07  2:24   ` rick at andestech.com
2018-04-23  5:59 ` [U-Boot] [PATCH v3 3/8] riscv: Add EFI application infrastructure Alexander Graf
2018-04-23  5:59 ` [U-Boot] [PATCH v3 4/8] riscv: Add board_quiesce_devices stub Alexander Graf
2018-05-07  2:25   ` rick at andestech.com
2018-04-23  5:59 ` [U-Boot] [PATCH v3 5/8] efi_loader: Use EFI_CACHELINE_SIZE in the image loader too Alexander Graf
2018-04-23  7:19   ` Heinrich Schuchardt
2018-04-23  5:59 ` [U-Boot] [PATCH v3 6/8] distro: Extend with RISC-V defines Alexander Graf
2018-04-23  6:56   ` Heinrich Schuchardt
2018-04-23  5:59 ` [U-Boot] [PATCH v3 7/8] riscv: nx25: Enable distro boot Alexander Graf
2018-04-24  6:28   ` rick at andestech.com
2018-04-24  7:53     ` Alexander Graf
2018-05-07  2:33   ` rick at andestech.com
2018-04-23  5:59 ` [U-Boot] [PATCH v3 8/8] efi_loader: Enable RISC-V support Alexander Graf
2018-05-06 20:59 ` [U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support Alexander Graf
2018-05-07  2:13   ` rick at andestech.com
2018-05-09  7:30     ` Alexander Graf
2018-05-06 21:11 ` Tom Rini
2018-05-07  2:18   ` rick at andestech.com
2018-05-10  3:27 Rick Chen
2018-05-10  6:03 ` Alexander Graf
2018-05-10  7:00   ` Rick Chen
2018-05-10  7:16     ` Rick Chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.