QEMU 4.1 and RISC-V

Li-Wen Hsu lwhsu at freebsd.org
Mon Sep 30 02:28:32 UTC 2019


On Mon, Sep 30, 2019 at 4:12 AM Mitchell Horne <mhorne at freebsd.org> wrote:
>
> On Sun, Sep 29, 2019 at 4:56 PM Li-Wen Hsu <lwhsu at freebsd.org> wrote:
> >
> > On Sun, Sep 29, 2019 at 10:48 PM Mitchell Horne <mhorne at freebsd.org> wrote:
> > >
> > >
> > > On Sun, Sep 29, 2019, 15:17 Li-Wen Hsu <lwhsu at freebsd.org> wrote:
> > >>
> > >> I found that RISC-V test started failing recently:
> > >> https://ci.freebsd.org/job/FreeBSD-head-riscv64-test/
> > >>
> > >> After some checking, I found the issue is our bbl image cannot boot
> > >> with this command:
> > >>
> > >> qemu-system-riscv64 -nographic -m 2048M -kernel ./bbl
> > >>
> > >> in QEMU 4.1, while 3.1 and 4.0 are fine.  I've switched the QEMU
> > >> version used in that job to 4.0, but I think it would be best if we
> > >> can find the root cause is in FreeBSD or QEMU.
> > >>
> > >> Can anyone also help on this?
> > >
> > >
> > > Hi Li-Wen,
> > >
> > > I can take a look in the coming week if you're okay with the workaround for the time being. Locally
> > > I've had no issue running bbl with qemu 4.1 but perhaps there's something more specific that the
> > > CI script is doing.
> > >
> > > I'm hoping we will soon be able to replace bbl with the more actively maintained OpenSBI firmware.
> > > I have some pending changes that will allow us to boot FreeBSD with it, and after that I'd like to
> > > create ports for both bootloaders, which I hope will make the CI setup a little simpler and less fragile
> > > than building bbl currently is.
> >
> > Thanks very much, Mitchell,
> >
> > Let's narrow down the scope, are you using the qemu-devel pkg from
> > official repository or building by yourself?
> >
>
> This was using qemu that I had built myself, but the executable from qemu-devel
> works for me as well.
>
> > And can you try this bbl image?
> > https://artifact.ci.freebsd.org/snapshot/head/r352870/riscv/riscv64/bbl.xz
>
> I had no issue booting this image with my self-built qemu or the one from
> pkg. The only observable difference from qemu 3.1 is that a warning is
> printed to stderr, but considering the CI script is timing out I don't think
> that is the issue.

What's your command line to launch qemu? The CI (and I) uses this:

qemu-system-riscv64 -nographic -m 2048M -kernel ./bbl

I also tried to build qemu locally, and result is the same. I also did
a git bisect:

0ac24d56c5e7d32423ea78ac58a06b444d1df04d is the first bad commit
commit 0ac24d56c5e7d32423ea78ac58a06b444d1df04d
Author: Alistair Francis <alistair.francis at wdc.com>
Date:   Mon Jun 24 15:11:49 2019 -0700

    hw/riscv: Split out the boot functions

    Split the common RISC-V boot functions into a seperate file. This allows
    us to share the common code.

    Signed-off-by: Alistair Francis <alistair.francis at wdc.com>
    Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
    Tested-by: Bin Meng <bmeng.cn at gmail.com>
    Signed-off-by: Palmer Dabbelt <palmer at sifive.com>

 hw/riscv/Makefile.objs  |  1 +
 hw/riscv/boot.c         | 69 +++++++++++++++++++++++++++++++++++++++++++++++++
 hw/riscv/sifive_e.c     | 17 ++----------
 hw/riscv/sifive_u.c     | 17 ++----------
 hw/riscv/spike.c        | 21 +++------------
 hw/riscv/virt.c         | 51 ++++--------------------------------
 include/hw/riscv/boot.h | 27 +++++++++++++++++++
 7 files changed, 110 insertions(+), 93 deletions(-)
 create mode 100644 hw/riscv/boot.c
 create mode 100644 include/hw/riscv/boot.h


More information about the freebsd-riscv mailing list