Fail to boot FreeBSD12 or 13 on POWER9 under PowerKVM

Alexey Kardashevskiy aik at ozlabs.ru
Fri Apr 5 04:08:07 UTC 2019


Hi!

I am trying a freebsd guest on a POWER9 (pvr=004e1201) host with
linux+kvm (5.1.0-rc2) and qemu (upstream, 4.0) and something goes wrong
- it crashes as (the full output is below):

=====
run_interrupt_driven_hooks: still waiting after 300 seconds for xpt_config
random: unblocking device.
panic: run_interrupt_driven_config_hooks: waited too long
cpuid = 0
time = 361
KDB: stack backtrace:
0xe000000000008660: at .kdb_backtrace+0x5c
0xe000000000008790: at .vpanic+0x1b4
0xe000000000008850: at .panic+0x38
0xe0000000000088e0: at .boot_run_interrupt_driven_config_hooks+0x194
0xe0000000000089e0: at .mi_startup+0x1f8
0xe000000000008a80: at btext+0xc4
KDB: enter: panic
[ thread pid 0 tid 100000 ]
Stopped at      .kdb_enter+0x60:        ld      r2, r1, 0x28
db>
=====


The systems were installed from:
FreeBSD-12.0-RELEASE-powerpc-powerpc64-dvd1.iso
FreeBSD-13.0-CURRENT-powerpc-powerpc64-20190307-r344854-disc1.iso

Everything by default (vt100 terminal, etc), IBM vio-scsi disk and
cdrom, 8GB RAM, 16MB backing huge pages, the host is running in the hash
(HPT) mode.

However the exact same disk images + qemu/slof binary + qemu command
line + linux kernel do boot on POWER8E (pvr=004b0201) and POWER8NVL
(pvr=004c0100) to the login prompt.


I told QEMU to enforce XICS interrupt controller mode, POWER8
compatibility (although it does not make sense as FreeBSD does not do
"client-architecture-support" RTAS call), what else can I try?


While at it, FreeBSD is aware of 004b0201 and 004e1201 but it fails to
recognize 004c0100 (the FreeBSD guest still boots just fine):

cpu0: Unknown PowerPC CPU revision 0x0100, 3259.00 MHz
cpu0: Features c4000000<PPC32,PPC64,MMU>

but in fact architecturally it behaves exactly as IBMPOWER8 (004bxxxx or
004d0000).



build/qemu-aikrhel74alt-ppc64/ppc64-softmmu/qemu-system-ppc64 \
-nodefaults \
-chardev stdio,id=STDIO0,signal=off,mux=on \
-device spapr-vty,id=svty0,reg=0x71000110,chardev=STDIO0 \
-mon id=MON0,chardev=STDIO0,mode=readline -nographic -vga none \
img/freebsd12-64G.qcow2 -enable-kvm \
-smp 1 -mem-prealloc -mem-path qemu_hp_16M_node0 -m 8G \
-machine \
pseries,cap-hpt-max-page-size=16M,cap-cfpc=broken,max-cpu-compat=power8,ic-mode=xics
\
-snapshot -bios ./slof.bin \
-L /home/aik/t/qemu-ppc64-bios/ \
-trace events=qemu_trace_events -d guest_errors \
-chardev socket,id=SOCKET0,server,nowait,path=qemu.mon.8324 \
-mon chardev=SOCKET0,mode=control


SLOF **********************************************************************
QEMU Starting
 Build Date = Apr  5 2019 13:01:51
 FW Version = git-a5b428e1c1eae703
 Press "s" to enter Open Firmware.

Populating /vdevice methods
Populating /vdevice/nvram at 71000000
Populating /vdevice/v-scsi at 71000001
       SCSI: Looking for devices
          8000000000000000 DISK     : "QEMU     QEMU HARDDISK    2.5+"
Populating /vdevice/vty at 71000110
Populating /pci at 800000020000000
No NVRAM common partition, re-initializing...
Scanning USB
Using default console: /vdevice/vty at 71000110

  Welcome to Open Firmware

  Copyright (c) 2004, 2017 IBM Corporation All rights reserved.
  This program and the accompanying materials are made available
  under the terms of the BSD License available at
  http://www.opensource.org/licenses/bsd-license.php


Trying to load:  from: /vdevice/v-scsi at 71000001/disk at 8000000000000000 ...
  Successfully loaded

>> FreeBSD/powerpc Open Firmware boot block
   Boot path:   /vdevice/v-scsi at 71000001/disk at 8000000000000000
   Boot loader: /boot/loader
   Boot volume:   /vdevice/v-scsi at 71000001/disk at 8000000000000000:2
Consoles: Open Firmware console

FreeBSD/powerpc64 Open Firmware loader, Revision 0.1
Memory: 8388608KB
Booted from: /vdevice/v-scsi at 71000001/disk at 8000000000000000

Loading /boot/defaults/loader.conf
/boot/kernel/kernel data=0x136c550+0x4aa1f0 syms=[0x8+0x165c78+0x8+0x1643cb]
/boot/entropy size=0x1000

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel]...
Kernel entry at 0x1025d0 ...
---<<BOOT>>---
Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-RELEASE r341666 GENERIC powerpc
gcc version 4.2.1 20070831 patched [FreeBSD]
VT: init without driver.
cpu0: IBM POWER9 revision 2.1, 2250.00 MHz
cpu0: Features
dc007182<PPC32,PPC64,ALTIVEC,FPU,MMU,SMT,ISNOOP,ARCH205,ARCH206,VSX,TRUELE>
cpu0: Features2
eee00000<ARCH207,HTM,DSCR,ISEL,TAR,VCRYPTO,ARCH300,IEEE128,DARN>
real memory  = 8544436224 (8148 MB)
avail memory = 8258940928 (7876 MB)
random: unblocking device.
random: entropy device external interface
kbd0 at kbdmux0
random: registering fast source PowerISA DARN random number generator
random: fast provider: "PowerISA DARN random number generator"
ofwbus0: <Open Firmware Device Tree> on nexus0
xicp0: <External Interrupt Presentation Controller> on ofwbus0
xicp0: Handling CPUs 0-7
vdevice0: <POWER Hypervisor Virtual Device Root> on ofwbus0
uart0: <POWER Hypervisor Virtual Serial Port> irq 16781585 on vdevice0
vscsi0: <POWER Hypervisor Virtual SCSI Bus> irq 16781570 on vdevice0
vscsi0: Queue depth 22 commands
pcib0: <RTAS Host-PCI bridge> on ofwbus0
pci0: <POWER Hypervisor PCI bus> on pcib0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
rtas0: <Run-Time Abstraction Services> on ofwbus0
rtas0: registered as a time-of-day clock, resolution 0.002000s
Timecounter "timebase" frequency 512000000 Hz quality 0
Event timer "decrementer" frequency 512000000 Hz quality 1000
Timecounters tick every 1.000 msec
usb_needs_explore_all: no devclass
run_interrupt_driven_hooks: still waiting after 60 seconds for xpt_config
run_interrupt_driven_hooks: still waiting after 120 seconds for xpt_config
run_interrupt_driven_hooks: still waiting after 180 seconds for xpt_config
run_interrupt_driven_hooks: still waiting after 240 seconds for xpt_config
run_interrupt_driven_hooks: still waiting after 300 seconds for xpt_config
random: unblocking device.
panic: run_interrupt_driven_config_hooks: waited too long
cpuid = 0
time = 361
KDB: stack backtrace:
0xe000000000008660: at .kdb_backtrace+0x5c
0xe000000000008790: at .vpanic+0x1b4
0xe000000000008850: at .panic+0x38
0xe0000000000088e0: at .boot_run_interrupt_driven_config_hooks+0x194
0xe0000000000089e0: at .mi_startup+0x1f8
0xe000000000008a80: at btext+0xc4
KDB: enter: panic
[ thread pid 0 tid 100000 ]
Stopped at      .kdb_enter+0x60:        ld      r2, r1, 0x28
db>



-- 
Alexey


More information about the freebsd-ppc mailing list