mbox series

[U-Boot,0/7] SMP support for RISC-V

Message ID 20190211221345.31980-1-lukas.auer@aisec.fraunhofer.de
Headers show
Series SMP support for RISC-V | expand

Message

Lukas Auer Feb. 11, 2019, 10:13 p.m. UTC
This patch series adds SMP support for RISC-V to U-Boot. It allows
U-Boot to run on multi-hart systems and will boot images passed to bootm
on all harts. The bootm command is currently the only one that will boot
images on all harts, bootefi is not yet supported.

The patches have been successfully tested on both QEMU (machine and
supervisor mode) and the HiFive Unleashed board [1] (supervisor mode),
using BBL and OpenSBI.
Mainline QEMU requires two patches [2, 3] to run in this configuration.
I will send a follow-up patch to enable SMP support on the HiFive
Unleashed board.

[1]: https://patchwork.ozlabs.org/project/uboot/list/?series=91125
[2]: https://patchwork.ozlabs.org/patch/1039493/
[3]: https://patchwork.ozlabs.org/patch/1039082/


Lukas Auer (7):
  riscv: add infrastructure for calling functions on other harts
  riscv: import the supervisor binary interface header file
  riscv: implement IPI platform functions using SBI
  riscv: delay initialization of caches and debug UART
  riscv: add support for multi-hart systems
  riscv: boot images passed to bootm on all harts
  riscv: qemu: enable SMP

 arch/riscv/Kconfig                   |  36 +++++++++
 arch/riscv/cpu/start.S               | 116 +++++++++++++++++++++++++--
 arch/riscv/include/asm/csr.h         |   1 +
 arch/riscv/include/asm/global_data.h |   5 ++
 arch/riscv/include/asm/sbi.h         |  94 ++++++++++++++++++++++
 arch/riscv/include/asm/smp.h         |  53 ++++++++++++
 arch/riscv/lib/Makefile              |   2 +
 arch/riscv/lib/bootm.c               |  13 ++-
 arch/riscv/lib/sbi_ipi.c             |  25 ++++++
 arch/riscv/lib/smp.c                 | 110 +++++++++++++++++++++++++
 board/emulation/qemu-riscv/Kconfig   |   1 +
 11 files changed, 447 insertions(+), 9 deletions(-)
 create mode 100644 arch/riscv/include/asm/sbi.h
 create mode 100644 arch/riscv/include/asm/smp.h
 create mode 100644 arch/riscv/lib/sbi_ipi.c
 create mode 100644 arch/riscv/lib/smp.c

Comments

Philipp Tomsich Feb. 11, 2019, 10:16 p.m. UTC | #1
On 11.02.2019, at 23:13, Lukas Auer <lukas.auer@aisec.fraunhofer.de> wrote:
> 
> This patch series adds SMP support for RISC-V to U-Boot. It allows
> U-Boot to run on multi-hart systems and will boot images passed to bootm
> on all harts. The bootm command is currently the only one that will boot
> images on all harts, bootefi is not yet supported.

You might want to clarify somewhere that a ‘hart’ is RISC-V terminology
for a hardware thread.

> 
> The patches have been successfully tested on both QEMU (machine and
> supervisor mode) and the HiFive Unleashed board [1] (supervisor mode),
> using BBL and OpenSBI.
> Mainline QEMU requires two patches [2, 3] to run in this configuration.
> I will send a follow-up patch to enable SMP support on the HiFive
> Unleashed board.
> 
> [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=91125
> [2]: https://patchwork.ozlabs.org/patch/1039493/
> [3]: https://patchwork.ozlabs.org/patch/1039082/
> 
> 
> Lukas Auer (7):
>  riscv: add infrastructure for calling functions on other harts
>  riscv: import the supervisor binary interface header file
>  riscv: implement IPI platform functions using SBI
>  riscv: delay initialization of caches and debug UART
>  riscv: add support for multi-hart systems
>  riscv: boot images passed to bootm on all harts
>  riscv: qemu: enable SMP
> 
> arch/riscv/Kconfig                   |  36 +++++++++
> arch/riscv/cpu/start.S               | 116 +++++++++++++++++++++++++--
> arch/riscv/include/asm/csr.h         |   1 +
> arch/riscv/include/asm/global_data.h |   5 ++
> arch/riscv/include/asm/sbi.h         |  94 ++++++++++++++++++++++
> arch/riscv/include/asm/smp.h         |  53 ++++++++++++
> arch/riscv/lib/Makefile              |   2 +
> arch/riscv/lib/bootm.c               |  13 ++-
> arch/riscv/lib/sbi_ipi.c             |  25 ++++++
> arch/riscv/lib/smp.c                 | 110 +++++++++++++++++++++++++
> board/emulation/qemu-riscv/Kconfig   |   1 +
> 11 files changed, 447 insertions(+), 9 deletions(-)
> create mode 100644 arch/riscv/include/asm/sbi.h
> create mode 100644 arch/riscv/include/asm/smp.h
> create mode 100644 arch/riscv/lib/sbi_ipi.c
> create mode 100644 arch/riscv/lib/smp.c
> 
> -- 
> 2.20.1
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Lukas Auer Feb. 11, 2019, 10:44 p.m. UTC | #2
On Mon, 2019-02-11 at 23:16 +0100, Philipp Tomsich wrote:
> On 11.02.2019, at 23:13, Lukas Auer <lukas.auer@aisec.fraunhofer.de>
> wrote:
> > This patch series adds SMP support for RISC-V to U-Boot. It allows
> > U-Boot to run on multi-hart systems and will boot images passed to
> > bootm
> > on all harts. The bootm command is currently the only one that will
> > boot
> > images on all harts, bootefi is not yet supported.
> 
> You might want to clarify somewhere that a ‘hart’ is RISC-V
> terminology
> for a hardware thread.
> 

Good point, I will add a note in the next version. Thanks!

Lukas

> > The patches have been successfully tested on both QEMU (machine and
> > supervisor mode) and the HiFive Unleashed board [1] (supervisor
> > mode),
> > using BBL and OpenSBI.
> > Mainline QEMU requires two patches [2, 3] to run in this
> > configuration.
> > I will send a follow-up patch to enable SMP support on the HiFive
> > Unleashed board.
> > 
> > [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=91125
> > [2]: https://patchwork.ozlabs.org/patch/1039493/
> > [3]: https://patchwork.ozlabs.org/patch/1039082/
> > 
> > 
> > Lukas Auer (7):
> >  riscv: add infrastructure for calling functions on other harts
> >  riscv: import the supervisor binary interface header file
> >  riscv: implement IPI platform functions using SBI
> >  riscv: delay initialization of caches and debug UART
> >  riscv: add support for multi-hart systems
> >  riscv: boot images passed to bootm on all harts
> >  riscv: qemu: enable SMP
> > 
> > arch/riscv/Kconfig                   |  36 +++++++++
> > arch/riscv/cpu/start.S               | 116
> > +++++++++++++++++++++++++--
> > arch/riscv/include/asm/csr.h         |   1 +
> > arch/riscv/include/asm/global_data.h |   5 ++
> > arch/riscv/include/asm/sbi.h         |  94 ++++++++++++++++++++++
> > arch/riscv/include/asm/smp.h         |  53 ++++++++++++
> > arch/riscv/lib/Makefile              |   2 +
> > arch/riscv/lib/bootm.c               |  13 ++-
> > arch/riscv/lib/sbi_ipi.c             |  25 ++++++
> > arch/riscv/lib/smp.c                 | 110
> > +++++++++++++++++++++++++
> > board/emulation/qemu-riscv/Kconfig   |   1 +
> > 11 files changed, 447 insertions(+), 9 deletions(-)
> > create mode 100644 arch/riscv/include/asm/sbi.h
> > create mode 100644 arch/riscv/include/asm/smp.h
> > create mode 100644 arch/riscv/lib/sbi_ipi.c
> > create mode 100644 arch/riscv/lib/smp.c
> > 
> > -- 
> > 2.20.1
> > 
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot@lists.denx.de
> > https://lists.denx.de/listinfo/u-boot