[PATCH 00/20] RISC-V: rework for PBL, VIRT and 64-Bit support

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Mar 15 10:30:55 GMT 2021


Hello Antony,

On 15.03.21 09:22, Antony Pavlov wrote:
> On Sun, 14 Mar 2021 13:27:44 +0100
> Ahmad Fatoum <a.fatoum at pengutronix.de> wrote: 
> I'm very glad to see RISC-V support improvement!

Your erizo barebox/qemu work made the initial iterations much quicker,
so thanks for that!

> Can you please push your RISC-V working branch to github (or other public git repo),
> so I can test it too?

Sure. I'll send out a v2 and send you a github link later today or early tomorrow.

> At the moment I have at least two out-of tree RISC-V branches that which I want
> to rebase on latest barebox with your patches:
> 
>   * https://github.com/frantony/barebox/tree/20200222.riscv-sifive 
>     contains hacky 64-bit support and add Sifive U500 qemu support.

This is becoming relevant for us as well as we'' port barebox to the
BeagleV. Our intention is to get the other Qemu platforms running
as well in preparation for actual hardware support.

>     
>   * https://github.com/litex-hub/barebox/tree/20200727.litex-vexriscv-linux
>     contains litex SoC with RISC-V 32-bit CPU core support.
>     It can run linux on Arty, please see
>     https://github.com/enjoy-digital/litex/issues/413#issuecomment-609047340
> 
>     It seems, that ethernet driver needs update: https://github.com/litex-hub/barebox/issues/1

Thanks for the heads up. I will take a look at your rebased branches,
once they are available.

> I suppose that you can add 'bootm: add RISC-V image type' patch to your series 
> (I'll send you the patch in a few minutes). The patch used in the litex series.

Sascha just picked it up.

Cheers,
Ahmad

> 
> 
>> With these changes applied, barebox can now generate images that can
>> be booted on qemu/tinyemu virt32 and virt64 machines.
>>
>> The boards have clocksource, virtio, cfi-flash,  reboot and poweroff
>> support.
>>
>> Cheers,
>> Ahmad Fatoum (18):
>>   partitions: don't allocate dma capable memory
>>   images: make BOARD_ARM_GENERIC_DT available for other arches
>>   ARM: rename CONFIG_ARM_USE_COMPRESSED_DTB to CONFIG_USE_COMPRESSED_DTB
>>   ARM: aarch64: ommit unused label in assembly
>>   serial: virtio-console: depend on, but don't select VIRTIO
>>   filetype: detect RISC-V Linux kernel image
>>   asm: unaligned: don't do unaligned accesses
>>   RISC-V: debug_ll: ns16550: align C access size with assembly's
>>   RISC-V: drop duplicate or unneeded cflags
>>   RISC-V: add cacheless HAS_DMA support
>>   RISC-V: erizo: move to arch/riscv/boards/erizo
>>   RISC-V: import Linux' optimized string functions
>>   RISC-V: implement PBL and relocation support
>>   RISC-V: erizo: migrate to PBL
>>   RISC-V: support symbol names in barebox image
>>   RISC-V: add generic DT image
>>   clocksource: add driver for RISC-V CLINT timer
>>   power: reset: add drivers for generic syscon reset and poweroff
>>
>> Rouven Czerwinski (2):
>>   RISC-V: add 64-bit support
>>   RISC-V: add Qemu virt support
>>
>>  Documentation/boards/riscv.rst               |  72 ++++++-
>>  Makefile                                     |   1 +
>>  arch/arm/Kconfig                             |   9 +-
>>  arch/arm/cpu/start.c                         |   2 +-
>>  arch/arm/lib64/runtime-offset.S              |   2 +-
>>  arch/arm/mach-at91/Kconfig                   |   2 +-
>>  arch/arm/mach-imx/Kconfig                    |  26 +--
>>  arch/arm/mach-omap/Kconfig                   |   2 +-
>>  arch/riscv/Kconfig                           |  66 +++++--
>>  arch/riscv/Makefile                          |  34 ++--
>>  arch/riscv/boards/Makefile                   |   2 +
>>  arch/riscv/boards/erizo/Makefile             |   3 +
>>  arch/riscv/boards/erizo/lowlevel.c           |  18 ++
>>  arch/riscv/boot/Makefile                     |   5 +-
>>  arch/riscv/boot/board-dt-2nd-entry.S         |  26 +++
>>  arch/riscv/boot/board-dt-2nd.c               |  29 +++
>>  arch/riscv/boot/dtb.c                        |  25 ---
>>  arch/riscv/boot/entry.c                      |  33 ++++
>>  arch/riscv/boot/entry.h                      |  15 ++
>>  arch/riscv/boot/entry_ll.S                   |  15 ++
>>  arch/riscv/boot/main_entry.c                 |  35 ----
>>  arch/riscv/boot/start.S                      |  68 -------
>>  arch/riscv/boot/start.c                      | 197 +++++++++++++++++++
>>  arch/riscv/boot/uncompress.c                 |  74 +++++++
>>  arch/riscv/configs/erizo_generic_defconfig   |   5 -
>>  arch/riscv/configs/virt32_defconfig          | 117 +++++++++++
>>  arch/riscv/configs/virt64_defconfig          | 118 +++++++++++
>>  arch/riscv/dts/Makefile                      |   9 +-
>>  arch/riscv/include/asm/barebox-riscv.h       | 101 ++++++++++
>>  arch/riscv/include/asm/common.h              |  10 +-
>>  arch/riscv/include/asm/debug_ll_ns16550.h    |  16 +-
>>  arch/riscv/include/asm/dma.h                 |  44 +++++
>>  arch/riscv/include/asm/elf.h                 |   8 +-
>>  arch/riscv/include/asm/image.h               |  65 ++++++
>>  arch/riscv/include/asm/linkage.h             |   4 +
>>  arch/riscv/include/asm/sections.h            |  15 ++
>>  arch/riscv/include/asm/string.h              |  21 +-
>>  arch/riscv/include/asm/types.h               |   8 +-
>>  arch/riscv/include/asm/unaligned.h           |  16 +-
>>  arch/riscv/lib/Makefile                      |   6 +-
>>  arch/riscv/lib/barebox.lds.S                 |  55 ++++--
>>  arch/riscv/lib/dtb.c                         |  26 +++
>>  arch/riscv/lib/memcpy.S                      | 108 ++++++++++
>>  arch/riscv/lib/memmove.S                     |  64 ++++++
>>  arch/riscv/lib/memset.S                      | 113 +++++++++++
>>  arch/riscv/lib/pbl.lds.S                     |  88 +++++++++
>>  arch/riscv/lib/reloc.c                       |  64 ++++++
>>  arch/riscv/lib/runtime-offset.S              |  12 ++
>>  arch/riscv/lib/sections.c                    |   9 +
>>  arch/riscv/lib/setupc.S                      |  55 ++++++
>>  arch/riscv/mach-virt/Makefile                |   3 +
>>  arch/riscv/mach-virt/include/mach/debug_ll.h |  25 +++
>>  common/Kconfig                               |   8 +-
>>  common/filetype.c                            |   3 +
>>  common/partitions.c                          |   5 +-
>>  common/partitions/dos.c                      |   7 +-
>>  common/partitions/efi.c                      |   1 -
>>  drivers/clocksource/Kconfig                  |   7 +
>>  drivers/clocksource/Makefile                 |   1 +
>>  drivers/clocksource/timer-clint.c            |  98 +++++++++
>>  drivers/power/reset/Kconfig                  |  14 ++
>>  drivers/power/reset/Makefile                 |   2 +
>>  drivers/power/reset/syscon-poweroff.c        |  76 +++++++
>>  drivers/power/reset/syscon-reboot.c          |  92 +++++++++
>>  drivers/serial/Kconfig                       |   2 +-
>>  images/Makefile                              |   8 +-
>>  images/Makefile.erizo                        |  12 ++
>>  include/dma.h                                |   1 +
>>  include/filetype.h                           |   1 +
>>  pbl/Kconfig                                  |   6 +-
>>  scripts/.gitignore                           |   1 +
>>  scripts/Makefile                             |   1 +
>>  scripts/Makefile.lib                         |  11 ++
>>  scripts/prelink-riscv.c                      | 122 ++++++++++++
>>  scripts/prelink-riscv.inc                    | 123 ++++++++++++
>>  75 files changed, 2285 insertions(+), 263 deletions(-)
>>  create mode 100644 arch/riscv/boards/Makefile
>>  create mode 100644 arch/riscv/boards/erizo/Makefile
>>  create mode 100644 arch/riscv/boards/erizo/lowlevel.c
>>  create mode 100644 arch/riscv/boot/board-dt-2nd-entry.S
>>  create mode 100644 arch/riscv/boot/board-dt-2nd.c
>>  delete mode 100644 arch/riscv/boot/dtb.c
>>  create mode 100644 arch/riscv/boot/entry.c
>>  create mode 100644 arch/riscv/boot/entry.h
>>  create mode 100644 arch/riscv/boot/entry_ll.S
>>  delete mode 100644 arch/riscv/boot/main_entry.c
>>  delete mode 100644 arch/riscv/boot/start.S
>>  create mode 100644 arch/riscv/boot/start.c
>>  create mode 100644 arch/riscv/boot/uncompress.c
>>  create mode 100644 arch/riscv/configs/virt32_defconfig
>>  create mode 100644 arch/riscv/configs/virt64_defconfig
>>  create mode 100644 arch/riscv/include/asm/barebox-riscv.h
>>  create mode 100644 arch/riscv/include/asm/dma.h
>>  create mode 100644 arch/riscv/include/asm/image.h
>>  create mode 100644 arch/riscv/lib/dtb.c
>>  create mode 100644 arch/riscv/lib/memcpy.S
>>  create mode 100644 arch/riscv/lib/memmove.S
>>  create mode 100644 arch/riscv/lib/memset.S
>>  create mode 100644 arch/riscv/lib/pbl.lds.S
>>  create mode 100644 arch/riscv/lib/reloc.c
>>  create mode 100644 arch/riscv/lib/runtime-offset.S
>>  create mode 100644 arch/riscv/lib/sections.c
>>  create mode 100644 arch/riscv/lib/setupc.S
>>  create mode 100644 arch/riscv/mach-virt/Makefile
>>  create mode 100644 arch/riscv/mach-virt/include/mach/debug_ll.h
>>  create mode 100644 drivers/clocksource/timer-clint.c
>>  create mode 100644 drivers/power/reset/syscon-poweroff.c
>>  create mode 100644 drivers/power/reset/syscon-reboot.c
>>  create mode 100644 images/Makefile.erizo
>>  create mode 100644 scripts/prelink-riscv.c
>>  create mode 100644 scripts/prelink-riscv.inc
>>
>> -- 
>> 2.29.2
>>
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list