------- Original Message -------
On Monday, July 11th, 2022 at 4:55 PM, Axel Heider <axelhei...@gmx.de> wrote:

> Charles,

My first name is Ahmed, though this is a common occurrence. :)

> > QEMU emulator version 7.0.0 (Debian 1:7.0+dfsg-2~bpo11+2)
> > Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
> >
> > $ ../init-build.sh -DPLATFORM=spike -DRISCV64=TRUE -DRELEASE=FALSE 
> > -DSIMULATION=TRUE
> > $ ninja
> > $ ./simulate -m 1G # becomes: qemu-system-riscv64 -machine spike -cpu rv64 
> > -nographic -serial mon:stdio -m size=1G -bios none -kernel 
> > images/sel4test-driver-image-riscv-spike
>
>
> So - just to check, you don't see any output at all form the system booting,
> right? So Open-SBI and no seL4 messages?

I see everything up to (qemu 7):

Jumping to kernel-image entry point...

On qemu 5, I see:

Jumping to kernel-image entry point...

Init local IRQ
no PLIC present, skip hart specific initialisation
Bootstrapping kernel
Initializing PLIC...
no PLIC present, skip platform specific initialisation
available phys memory regions: 1
  [80200000..17ff00000]
reserved virt address space regions: 3
  [ffffffc084000000..ffffffc08401f000]
  [ffffffc08401f000..ffffffc08401f3a1]
  [ffffffc084020000..ffffffc084417000]

This means that opensbi runs. The default opensbi that I've seen for qemu 7 is 
1.0. I have a local version of xv6 (riscv64) which boots fine with a custom 
m-mode implementation (it doesn't use opensbi or bbl). It works while passing 
-bios none.

> You have to use "-bios <img>" now instead of "-kernel <img>" when starting
>
> QEMU. There was a change that "-kernel <img>" now starts the "kernel" in
>
> S-Mode and an SBI will be taken from QEMU's internal (it comes with a
> dedicated ELF), while "-bios <img>" starts in M-Mode. Since we have an SBI
>
> in the sel4 system image, this will crash if started in S-Mode due to
> missing access permission.

Both behave the same way, I've tried. Note, if you pass -kernel <img> while 
-bios isn't specified, which means the default is used, then you get an error: 
"Some ROM regions are overlapping" which is obvious as to what is happening.

> Using "-bios none" will just skip S-Mode, but
> that means the PMP is left unconfigured and S-Mode does not have access to
> any memory. New QEMU (6.0+?) emulate a PMP, older ones did now to this was
> not an issue.

The qemu docs: https://qemu.readthedocs.io/en/latest/system/target-riscv.html 
do not say that -bios starts the core in S-Mode, though it isn't explicit 
either way. I've written a kernel based on xv6 which I run as -bios none 
-kernel <img> which successfully starts in qemu with the new pmp protections. 
Given that I've examined every assembly instruction required to go from M-Mode 
start on qemu to S-Mode, I would hope that if that was the only issue going on 
here, I'd have noticed when I debugged it using gdb. I suspect something else 
is going on, though unfortunately, I don't know what.

> We have to QEMU simulate update the scrips to handle this, but the docker
> container still has the old QEMU, so this is not an issue there.

I'll look into trying the docker container.

Thanks.
_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to