
Hi Lukas,
On Wed, Sep 5, 2018 at 5:35 PM Auer, Lukas lukas.auer@aisec.fraunhofer.de wrote:
On Wed, 2018-09-05 at 09:28 +0800, Rick Chen wrote:
From: Auer, Lukas [mailto:lukas.auer@aisec.fraunhofer.de] Sent: Wednesday, September 05, 2018 5:53 AM To: bmeng.cn@gmail.com Cc: Rick Jian-Zhi Chen(陳建志); u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 12/12] riscv: Add QEMU virt board
support
On Tue, 2018-09-04 at 17:31 +0800, Bin Meng wrote:
Hi Lukas,
On Tue, Sep 4, 2018 at 5:39 AM Auer, Lukas lukas.auer@aisec.fraunhofer.de wrote:
On Thu, 2018-08-30 at 00:54 -0700, Bin Meng wrote: > This adds QEMU RISC-V 'virt' board target support, with
the hope
> of helping people easily test U-Boot on RISC-V. > > The QEMU virt machine models a generic RISC-V virtual
machine
> with support for the VirtIO standard networking and block > storage devices. > It has CLINT, PLIC, 16550A UART devices in addition to
VirtIO
> and it also uses device-tree to pass configuration
information
> to guest software. It implements RISC-V privileged
architecture
> spec v1.10. > > Both 32-bit and 64-bit builds are supported. Support is
pretty
> much preliminary, only booting to U-Boot shell with the
UART
> driver on a single core. Booting Linux is not supported
yet.
>
For your information and to avoid duplicate work, I am
working on
a patch set that improves RISC-V support in u-boot. I am
currently
able to boot Linux on a multi-core setup in QEMU, but they
are not
quite ready to submit yet.
This is great! My next step is to work on virtio driver
support in
U-Boot as qemu-riscv virt machine has these devices but we
don't
have corresponding drivers in U-Boot. Then I will try to boot
Linux
after that. Good to hear you already boot Linux with qemu-
riscv!
Have you already supported virtio drivers in your port? If
yes, I
will just hold on and wait for your patch series :-)
Hi Bin,
Support for the virtio devices would be great! I don't support
them in
my port, I can only boot a kernel image from RAM. I only have a driver for the clint0 (core local interrupt
controller),
which I need for software interrupts to other cores and as a
timer.
Software interrupts also work over the supervisor binary
interface
(SBI), which allows u-boot to run in supervisor mode with bbl
running
in machine mode to handle the SBI calls.
Hi Bin and Auer
I have already boot bbl run in S-mode and riscv-linux in M-mode via u-boot from SD card or FLASH. It mean after booting riscv-linux, u-boot will be dead. And no matter about kernel. Please refer to doc/README.ae350
May I figure out more clearly what are you going to do ? What are you going to do is let u-boot run in S-mode and boot bbl and riscv-linux in M-mode, right ? It mean after booting bbl and riscv-linux, u-boot will still alive and handle SBI calls and somethings in S-mode.
Or u-boot is going to replace the role of bbl ?
Rick
Hi Rick,
Not exactly, my current boot flow is as follows.
- u-boot SPL starts in machine mode and jumps to bbl
- bbl starts u-boot proper in supervisor mode
- u-boot boots the kernel
If this is QEMU virt target, there is no need to boot from SPL then U-Boot proper.
bbl is still active once Linux has booted and is used there for its SBI implementation. Hope this helps.
Yes, I am not quite convinced why Linux kernel was designed this way. This is something like x86's SMM or EFI runtime services...
Regards, Bin