Happy New Year everyone!

A couple of days ago I sent a patch that fixes an issue with large DTB and 
thus brings the arm port of OSv back to life. I have tested it on Fedora 29 
and was able to boot and run a simple uush.so example on both Fedora and 
Ubuntu QEMU with aarch64 emulation:

./scripts/build -j4 image=empty fs=ramfs arch=aarch64
qemu-system-aarch64 -s -nographic -machine virt -machine gic-version=2 -kernel 
./arm/loader.img -cpu cortex-a57 -m 1024M -append "--verbose --nomount 
--maxnic=0 /tools/uush.so" -smp 2

I had to manually add uush.so to usr_ramfs.manifest. For whatever reason, 
the image built on Ubuntu would never boot at all. I wonder if that has to 
do with some mixed up gcc path on Ubuntu and maybe we end up compiling 
and/or linking against some wrong artifacts (external/host maybe related).  

I have also been able to run the same image with KVM acceleration enabled 
on Raspberry PI 4 with Ubuntu 19.10.1 on it.

qemu-system-aarch64 -s -nographic -enable-kvm -cpu host -machine virt 
-kernel ./loader.img -m 1024M -append "--verbose --nomount --maxnic=0 
/tools/uush.so" -smp 1

It works with a single vCPU. Once I run with 2 or more it hangs right after 
(or in) smp_init():
OSv v0.54.0-68-gabf9cba5
PSCI: version 65536.0 detected.
setup_arm_clock() ENTERED, lr=00000000400c6990
arm_clock(): frequency read as 000000000337f980
interrupt_table::interrupt_table() ENTERED, lr=00000000400a8244
gic_driver::init_cpu() ENTERED, lr=00000000401f1cc0
CPU interface enabled.
gic_driver::init_dist() ENTERED, lr=00000000401f1ccc
number of supported IRQs: 0000000000000120
interrupt table: gic driver created.
 registered IRQ id=0000000000000004
 registered IRQ id=000000000000001b
 registered IRQ id=0000000000000000
Firmware vendor: Unknown
smp_launch ENTERED, lr=00000000400c7c28

The same image works with 1, 2 or more CPUs in emulated setup (see 1 
example above).

I have also spent a bit of time trying to run the same example on 
Firecracker on Raspberry PI 4 (same setup as with qemu/kvm). Unfortunately, 
I could not even see the 1st boot line (OSv ...) to show up. I think that 
firecracker does not emulate pl011, but instead some sort of mmio-based 
console whose configuration is appended to Linux command line like so:

cmdline
.insert("earlycon", &format!("uart,mmio,0x{:08x}", self.mmio_base))
.map_err(Error::Cmdline)?;

I am not exactly sure what this device is but figuring it out and 
implementing it would be the 1st step to make OSv aarch64 run on 
firecracker arm version.  

Regards,
Waldek

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/fa6b2072-6057-493d-a4d6-a10ed4a48f45%40googlegroups.com.

Reply via email to