Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Jan 2026 18:19:47 +0100
From:      Roman Bogorodskiy <novel@freebsd.org>
To:        Mark Johnston <markj@freebsd.org>
Cc:        freebsd-virtualization@freebsd.org, freebsd-arm@freebsd.org
Subject:   Re: Quartz64: vmm: No vgic found
Message-ID:  <aWvEs2_2aN0Gz67l@tulp>
In-Reply-To: <aWqf5qNu_IlMMiEt@nuc>
References:  <aWkm8jwP6SRvT7iW@tulp> <aWqf5qNu_IlMMiEt@nuc>

index | next in thread | previous in thread | raw e-mail

  Mark Johnston wrote:

> On Thu, Jan 15, 2026 at 06:42:10PM +0100, Roman Bogorodskiy wrote:
> > Hi,
> > 
> > Loading of the vmm(4) module shows errors like:
> > 
> > Jan 15 17:32:10 generic kernel: vmm: No vgic found
> > Jan 15 17:32:10 generic kernel: module_register_init: MOD_LOAD (vmm, 0xffff0000e12931f0, 0) error 19
> > 
> > The module is listed in kldstat:
> > 
> > $ kldstat |grep vmm
> >  7    1 0xffff0000e1268000    4f000 vmm.ko
> > $
> 
> This is due to a bug.  vmm.ko should unload itself after the error you
> observed above: https://reviews.freebsd.org/D54750

Thanks for the fix.

> > But bhyve does not start:
> > 
> > # bhyve -o bootrom=/usr/local/share/u-boot/u-boot-bhyve-arm64/u-boot.bin -s 1,virtio-blk,./FreeBSD-15.0-RELEASE-arm64-aarch64-ufs.raw -o console=stdio vm0
> > bhyve: vm_openf: No such file or directory
> > #
> > 
> > Host system is:
> > 
> > Pine64 Quartz64 Model A
> > FreeBSD 15.0-RELEASE arm64
> > 
> > gic0: <ARM Generic Interrupt Controller v3.0> mem 0xfd400000-0xfd40ffff,0xfd460000-0xfd4dffff irq 12 on ofwbus0
> > gic0: using for IPIs
> > 
> > CPU  0: ARM Cortex-A55 r2p0 affinity:  0  0
> >                    Cache Type = <64 byte CWG,64 byte ERG,64 byte D-cacheline,VIPT I-cache,64 byte I-cacheline>
> >  Instruction Set Attributes 0 = <DP,RDM,Atomic,CRC32,SHA2,SHA1,AES+PMULL>
> >  Instruction Set Attributes 1 = <RCPC-8.3,DCPoP>
> >  Instruction Set Attributes 2 = <>
> >          Processor Features 0 = <RAS,GIC,AdvSIMD+HP,FP+HP,EL3 32,EL2 32,EL1 32,EL0 32>
> >          Processor Features 1 = <MTE_frac,PSTATE.SSBS>
> >          Processor Features 2 = <>
> >       Memory Model Features 0 = <TGran4,TGran64,TGran16,SNSMem,BigEnd,16bit ASID,1TB PA>
> >       Memory Model Features 1 = <XNX,PAN+ATS1E1,LO,HPD+TTPBHA,VH,16bit VMID,HAF+DS>
> >       Memory Model Features 2 = <32bit CCIDX,48bit VA,IESB,UAO,CnP>
> >       Memory Model Features 3 = <>
> >       Memory Model Features 4 = <>
> >              Debug Features 0 = <DoubleLock,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3p1,Debugv8p2>
> >              Debug Features 1 = <>
> >          Auxiliary Features 0 = <>
> >          Auxiliary Features 1 = <>
> > AArch32 Instruction Set Attributes 5 = <RDM,CRC32,SHA2,SHA1,AES+VMULL,SEVL>
> > AArch32 Media and VFP Features 0 = <FPRound,FPSqrt,FPDivide,DP VFPv3+v4,SP VFPv3+v4,AdvSIMD>
> > AArch32 Media and VFP Features 1 = <SIMDFMAC,FPHP Arith,SIMDHP Arith,SIMDSP,SIMDInt,SIMDLS,FPDNaN,FPFtZ>
> > CPU  1: ARM Cortex-A55 r2p0 affinity:  1  0
> > CPU  2: ARM Cortex-A55 r2p0 affinity:  2  0
> > CPU  3: ARM Cortex-A55 r2p0 affinity:  3  0
> > 
> > Does the board need something in addition to GICv3 that is missing that
> > is needed to make vmm(4) work, or is that a configuration or vmm(4)
> > issue?
> 
> The vgic driver is refusing to attach, apparently because we don't
> detect virtualization support when probing the controller.  When booting
> from a FDT we look for an "interrupts" property to determine this, but
> it's not clear to me whether that's totally right.  Can you share the
> device tree you're using with this board?

Not sure what's the right way to share the device tree, so I used the
command I found on wiki (https://wiki.freebsd.org/FlattenedDeviceTree),
that is: sysctl -b hw.fdt.dtb | dtc -I dtb

It's lengthy, so I uploaded it here:

https://people.freebsd.org/~novel/misc/quartz64_devicetree.txt

And some more details. Until today I was using u-boot,
sysutils/u-boot-quartz64-a specifically.

Then I tried using Tianocore EDK2. Apparently, it supports three modes
for devices:

 - ACPI
 - ACPI + devicetree
 - Devicetree

The devicetree mode behaves the same way as u-boot, i.e. the vgic fails
to attach.

In the ACPI (and ACPI + devicetree) mode I can actually start a bhyve
VM.

However, in this mode Ethernet interface is not detected.

Earlier it was available as:

eqos0: <DesignWare EQOS Gigabit ethernet> mem 0xfe010000-0xfe01ffff irq 28,29 on ofwbus0

and now it's completely missing, though I can see it in the device tree.
Does it get confused by ACPI presence?

Roman


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?aWvEs2_2aN0Gz67l>