qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 33/34] roms: Add OpenSBI version 0.3


From: Jonathan Cameron
Subject: Re: [Qemu-devel] [PULL 33/34] roms: Add OpenSBI version 0.3
Date: Mon, 1 Jul 2019 13:40:29 +0100

On Fri, 28 Jun 2019 09:12:45 -0700
Alistair Francis <address@hidden> wrote:

> On Fri, Jun 28, 2019 at 2:47 AM Jonathan Cameron
> <address@hidden> wrote:
> >
> > On Thu, 27 Jun 2019 08:20:10 -0700
> > Palmer Dabbelt <address@hidden> wrote:
> >  
> > > From: Alistair Francis <address@hidden>
> > >
> > > Add OpenSBI version 0.3 as a git submodule and as a prebult binary.
> > >
> > > Signed-off-by: Alistair Francis <address@hidden>
> > > Reviewed-by: Bin Meng <address@hidden>
> > > Tested-by: Bin Meng <address@hidden>
> > > Signed-off-by: Palmer Dabbelt <address@hidden>  
> >
> > I sent a late bug report on this one.. Hence posting here as well
> > to make sure it doesn't fall through the cracks!
> >
> > Right now you can't actually build the opensbi64-virt firmware
> > due to cut and paste error in the Makefile.  
> 
> Ah, thanks for the bug report.
> 
> @Palmer Dabbelt I'm just going to send you a fixup commit. Can you
> apply it to your tree and send a PRv2?
> 
> >
> > As a side note, I hit this because OpenSBI 0.3 is resulting in a login
> > loop on a debian test image and the current upstream isn't.  I haven't
> > debugged yet, but someone else may hit that problem.  
> 
> Unfortunately OpenSBI 0.3 is a little old now, in saying that I didn't
> know there are bugs in it? Which kernel are you using?

Mainline 5.2.0-rc5.

Just in case I also checked 5.2.0-rc7

I tried doing an odd git bisect with good and bad reversed to figure out
what fixed the problem, but boot wedged at "Run /sbin/init as init process."

The wedge was bisected to:

4e2cd47820 ("lib: Flush everything when remote TLB flush range is too large")

Which the patch correctly identifies as a problem introduced this kernel cycle.
5.2-rc1.

So on that basis alone I'd suggest we want to move to a more recent openSBI
asap, after all the 5.2 kernel will be out in a week or so.

I'm a bit short on time (flight to catch), so haven't pushed that fix that
far back in the tree yet in order to figure what is causing the login loop.
Won't have access to relevant build machines until Wednesday.

That patch cherry-picked on lib: Optimize TLB flush IPIs
seems fine, so it is before that point...

Passing that point would require real effort though as the two patches
are changing the same code.

So I had a go from the other end (0.3) to see if it was fixed quickly.
Ran out of time, but at 
"firmware: Reset all registers and flush the icache" it superficially all
seems to be working with no TLB related hang, or login loop.

The login loop is present in firmware: Add a barrier instruction for wait for 
boot hart.

Will see if I can pin it down fully later in the week.

Thanks,

Jonathan





> 
> Alistair
> 
> >
> > Thanks,
> >
> > Jonathan
> >  
> > > diff --git a/roms/Makefile b/roms/Makefile
> > > index 078d3fb70563..562ed726fd6b 100644
> > > --- a/roms/Makefile
> > > +++ b/roms/Makefile
> > > @@ -37,6 +37,8 @@ find-cross-prefix = $(subst gcc,,$(notdir $(call 
> > > find-cross-gcc,$(1))))
> > >  powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
> > >  powerpc_cross_prefix := $(call find-cross-prefix,powerpc)
> > >  x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
> > > +riscv32_cross_prefix := $(call find-cross-prefix,riscv32)
> > > +riscv64_cross_prefix := $(call find-cross-prefix,riscv64)
> > >
> > >  # tag our seabios builds
> > >  SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
> > > @@ -52,18 +54,21 @@ EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
> > >  default:
> > >       @echo "nothing is build by default"
> > >       @echo "available build targets:"
> > > -     @echo "  bios           -- update bios.bin (seabios)"
> > > -     @echo "  vgabios        -- update vgabios binaries (seabios)"
> > > -     @echo "  sgabios        -- update sgabios binaries"
> > > -     @echo "  pxerom         -- update nic roms (bios only)"
> > > -     @echo "  efirom         -- update nic roms (bios+efi)"
> > > -     @echo "  slof           -- update slof.bin"
> > > -     @echo "  skiboot        -- update skiboot.lid"
> > > -     @echo "  u-boot.e500    -- update u-boot.e500"
> > > -     @echo "  u-boot.sam460  -- update u-boot.sam460"
> > > -     @echo "  efi            -- update UEFI (edk2) platform firmware"
> > > -     @echo "  clean          -- delete the files generated by the 
> > > previous" \
> > > -                               "build targets"
> > > +     @echo "  bios               -- update bios.bin (seabios)"
> > > +     @echo "  vgabios            -- update vgabios binaries (seabios)"
> > > +     @echo "  sgabios            -- update sgabios binaries"
> > > +     @echo "  pxerom             -- update nic roms (bios only)"
> > > +     @echo "  efirom             -- update nic roms (bios+efi)"
> > > +     @echo "  slof               -- update slof.bin"
> > > +     @echo "  skiboot            -- update skiboot.lid"
> > > +     @echo "  u-boot.e500        -- update u-boot.e500"
> > > +     @echo "  u-boot.sam460      -- update u-boot.sam460"
> > > +     @echo "  efi                -- update UEFI (edk2) platform firmware"
> > > +     @echo "  opensbi32-virt     -- update OpenSBI for 32-bit virt 
> > > machine"
> > > +     @echo "  opensbi64-virt     -- update OpenSBI for 64-bit virt 
> > > machine"
> > > +     @echo "  opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u 
> > > machine"
> > > +     @echo "  clean              -- delete the files generated by the 
> > > previous" \
> > > +                                   "build targets"
> > >
> > >  bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k
> > >       cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin
> > > @@ -162,6 +167,24 @@ skiboot:
> > >  efi: edk2-basetools
> > >       $(MAKE) -f Makefile.edk2
> > >
> > > +opensbi32-virt:
> > > +     $(MAKE) -C opensbi \
> > > +             CROSS_COMPILE=$(riscv32_cross_prefix) \
> > > +             PLATFORM="qemu/virt"
> > > +     cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin 
> > > ../pc-bios/opensbi-riscv32-virt-fw_jump.bin
> > > +
> > > +opensbi64-virt:
> > > +     $(MAKE) -C opensbi \
> > > +             CROSS_COMPILE=$(riscv64_cross_prefix) \
> > > +             PLATFORM="qemu/virt"
> > > +     cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin 
> > > ../pc-bios/opensbi-riscv64-virt-fw_jump.bin
> > > +
> > > +opensbi64-virt:  
> >
> > Cut and paste buglet.  opensbi64-sifive_u
> >  
> > > +     $(MAKE) -C opensbi \
> > > +             CROSS_COMPILE=$(riscv64_cross_prefix) \
> > > +             PLATFORM="qemu/sifive_u"
> > > +     cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin 
> > > ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
> > > +
> > >  clean:
> > >       rm -rf seabios/.config seabios/out seabios/builds
> > >       $(MAKE) -C sgabios clean
> > > @@ -173,3 +196,4 @@ clean:
> > >       $(MAKE) -C u-boot-sam460ex distclean
> > >       $(MAKE) -C skiboot clean
> > >       $(MAKE) -f Makefile.edk2 clean
> > > +     $(MAKE) -C opensbi clean
> > > diff --git a/roms/opensbi b/roms/opensbi
> > > new file mode 160000
> > > index 000000000000..ca20ac0cd4c0
> > > --- /dev/null
> > > +++ b/roms/opensbi
> > > @@ -0,0 +1 @@
> > > +Subproject commit ca20ac0cd4c099006d4eea4d9ac7bd7b58e2ae0f  
> >
> >
> >  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]