Re: vmm (bhyve) on GICv2

From: John F Carr <jfc_at_mit.edu>
Date: Wed, 22 May 2024 19:20:35 UTC
> On May 22, 2024, at 13:20, Mario Marietto <marietto2008@gmail.com> wrote:
> 
> Can someone confirm that bhyve works ok on the RockPro64 (RK3399) ? Has bhyve been patched in relation to this bug :
> 
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277559
> 
> ?
> 
> I read that there is a huge amount of work to do on the RPI5 before it works with FreeBSD. And anyway,it does not support bhyve. So if I will buy a soc,it will be the RockPro64....

The RockPro64 should be usable for development, not production use
of virtual machines.  The kernel sometimes locks up the first time the
vmm module is loaded.  Once the module loads it can be unloaded
and reloaded without risk.

I was able to boot FreeBSD-13.3-RELEASE-arm64-aarch64.raw in bhyve
on my RockPro64 with this script:

NCPU=1
MEM=384m
DISK0=/dev/nda0s4
VMNAME=thirteen
bhyve -c "${NCPU:?}" -m "${MEM:?}" \
-s 0:0,hostbridge \
-s 1:0,virtio-blk,"${DISK0:?}" \
-o bootrom=/usr/local/share/u-boot/u-boot-bhyve-arm64/u-boot.bin \
-o rtc.use_localtime=false \
-o console=stdio \
-o config.dump=false \
-o acpi_tables=true \
"${VMNAME:?}"

I had copied the image to /dev/nda0s4.  It should work just as well with the
regular file after "virtio-blk".

Some observations:

1. There is no clock visible to the guest OS:

Warning: no time-of-day clock registered, system time will not be set accurately

2. The RockPro system has two types of cores.  One has a physically indexed I-cache,
the other virtually indexed.  The virtual CPU reports a virtually indexed cache.

CPU  0: ARM Foundation-Model r0p0 affinity:  0
                   Cache Type = <64 byte D-cacheline,64 byte I-cacheline,VIPT ICache,64 byte ERG,64 byte CWG>

I think this will cause correct behavior despite being technically wrong.

I have a Quartz64, a newer Pine64 SBC, but I have not yet tried to install BSD on it.

John Carr