Index | Thread | Search

From:
Brent Cook <busterb@gmail.com>
Subject:
Re: Sysupgrade on i386 vmm to current snapshot hangs on boot into upgrade kernel
To:
Alexander Bluhm <bluhm@openbsd.org>
Cc:
Mike Larkin <mlarkin@nested.page>, tech@openbsd.org
Date:
Sun, 5 Apr 2026 04:58:11 -0500

Download raw body.

Thread
On Tue, Mar 31, 2026 at 1:35 PM Alexander Bluhm <bluhm@openbsd.org> wrote:

> On Tue, Mar 31, 2026 at 09:30:30AM -0700, Mike Larkin wrote:
> > rebuild the host kernel with HZ=1000 and see if running that makes the
> problem
> > go away.
>
> I have option HZ=1000 in host's sys/conf/GENERIC now.  It does not help.
> Guest's GENERIC is unmodified.
>
> When the i386 guest boots, its GENERIC either says
> cpu0: AMD EPYC 73F3 16-Core Processor ("AuthenticAMD" 686-class, 512KB L2
> cache) 3.50 GHz, 19-01-01
> or
> cpu0: AMD EPYC 73F3 16-Core Processor ("AuthenticAMD" 686-class, 512KB L2
> cache) 74 MHz, 19-01-01
>
>
Same thing here, but this is a clue why RAMDISK_CD hangs but not GENERIC
are hanging, at least for me.

Adding pvclock0 allows RAMDISK_CD to boot 100% of the time in my local vmm
machine.

diff --git a/sys/arch/i386/conf/RAMDISK_CD b/sys/arch/i386/conf/RAMDISK_CD
index c00f6dcbbb4..24bd4e465a9 100644
--- a/sys/arch/i386/conf/RAMDISK_CD
+++ b/sys/arch/i386/conf/RAMDISK_CD
@@ -28,6 +28,7 @@ config                bsd root on rd0a swap on rd0b and
wd0b and sd0b
 mainbus0       at root

 pvbus0         at mainbus0     # Paravirtual device bus
+pvclock0       at pvbus?       # KVM/VMD paravirtual clock

 acpi0          at bios?
 #acpitimer*    at acpi?


Previously, I was adding debug messages to see where the first hang occurs.
It was around the first call to biowait, which makes sense if timer
interrupts are not setup correctly. When I occasionally did get a
successful boot before, the core would correctly calibrate at 4 Ghz :

OpenBSD 7.9-beta (RAMDISK_CD) #21: Sat Apr 4 19:47:32 CDT 2026
bcook@coyote.my.domain:/usr/src/sys/arch/i386/compile/RAMDISK_CD real mem =
3220688896 (3071MB) avail mem = 3151634432 (3005MB) random: good seed from
bootblocks mainbus0 at root bios0 at mainbus0: date 06/23/99, BIOS32 rev. 0
@ 0xfefc2, SMBIOS rev. 2.4 @ 0xf2220 (10 entries) bios0: vendor SeaBIOS
version "1.16.3p1-OpenBSD-vmm" date 01/01/2011 bios0: OpenBSD VMM acpi at
bios0 function 0x0 not configured pcibios at bios0 function 0x1a not
configured bios0: ROM list: 0xef000/0x1000! cpu0 at mainbus0:
(uniprocessor) cpu0: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
("GenuineIntel" 686-class) 83 MHz, 06-3c-03 cpu0:
FPU,V86,DE,PSE,TSC,MSR,PAE,CX8,SEP,PGE,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,PAGE1GB,LONG,LAHF,ABM,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,MD_CLEAR,XSAVEOPT,MELTDOWN
pvbus0 at mainbus0: KVM, OpenBSD pci0 at mainbus0 bus 0: configuration mode
1 (no bios) pchb0 at pci0 dev 0 function 0 "OpenBSD VMM Host" rev 0x00
virtio0 at pci0 dev 1 function 0 "Qumranet Virtio 1.x RNG" rev 0x01 viornd0
at virtio0 virtio0: irq 3 virtio1 at pci0 dev 2 function 0 "Qumranet Virtio
1.x Network" rev 0x01 vio0 at virtio1: 1 queue, address fe:e1:bb:d1:7a:39
virtio1: irq 5 virtio2 at pci0 dev 3 function 0 "Qumranet Virtio 1.x
Storage" rev 0x01 vioblk0 at virtio2 virtio2: irq 6 scsibus0 at vioblk0: 1
targets sd0 at scsibus0 targ 0 lun 0: <VirtIO, Block Device, > sd0:
51200MB, 512 bytes/sector, 104857600 sectors virtio3 at pci0 dev 4 function
0 "OpenBSD VMM Control" rev 0x00 vmmci0 at virtio3 virtio3: irq 7 isa0 at
mainbus0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns8250, no fifo
com0: console pcdisplay0 at isa0 port 0x3d0/16 iomem 0xb8000/32768
wsdisplay0 at pcdisplay0 mux 1: console (80x25, vt100 emulation) npx0 at
isa0 port 0xf0/16: reported by CPUID; using exception 16 softraid0 at root
scsibus1 at softraid0: 256 targets sr: dk sd0 devno=0x402 flags=0x3 sr: dk
rd0 devno=0x1102 flags=0x3 sr: wait done slept=0 sr: calling boot_assembly
sr: bootprobe open rawdev=0xd02 sd0: sdopen: scsi_start sd0: sdopen:
scsi_start done sd0: sdopen: scsi_test_unit_ready sd0: sdopen:
scsi_test_unit_ready done error=0 sd0: sdopen: sd_get_parms sd0: sdopen:
sd_get_parms done sd0: sdopen: sdgetdisklabel sd0: sdgetdisklabel: enter
lp=0xd63a6000 sd0: sdgetdisklabel: bzero done sd0: sdgetdisklabel: type set
sd0: sdgetdisklabel: packname set sd0: sdgetdisklabel: checksum done sd0:
sdgetdisklabel: calling readdisklabel dev=0xd02 readdisklabel: enter
dev=0xd02 readdisklabel: initdisklabel done secsize=512 secpercyl=16065
readdisklabel: calling geteblk secsize=512 readdisklabel: calling
readdoslabel bp=0xd6363f18 readdisksector: calling strat blkno=0
sdstrategy: enter dev=0xd02 blkno=0 sdstart: enter readdisksector: strat
returned, calling biowait