Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a FreeBSD-7 guest (in a qcow2 disk image) which works just fine when I start it from the commandline with

# kvm -drive file=freebsd7.disk

But when started from the virt-manager GUI, it gets past the second-stage bootloader and then hangs -- specifically, it "pauses" itself and refuses to be unpaused. Here's a screen shot of the last few things it prints:

enter image description here

and here's the xml configuration gobbledygook from virsh -c qemu:///system dumpxml freebsd7-vm:

<domain type='kvm'>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
    <type arch='x86_64' machine='pc-1.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  <clock offset='utc'/>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/zack/Boxes/freebsd-7.disk'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    <interface type='network'>
      <mac address='52:54:00:1d:9f:8e'/>
      <source network='default'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    <serial type='pty'>
      <target port='0'/>
    <console type='pty'>
      <target type='serial' port='0'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

I'm sure this can be fixed by changing something in the configuration, but I have no idea where to even begin.

(yes, the use of an ancient version of FBSD is deliberate)

EDIT: As suggested below, changing <vcpu placement='static'>4</vcpu> to <vcpu placement='static'>1</vcpu> allows a successful boot. Further, running the VM from the command line with more than one processor produces this crash dump:

# kvm -smp 2 -drive file=freebsd7.disk
KVM internal error. Suberror: 1
emulation failure
RAX=ffffffff8080e1c0 RBX=000000000009f000 RCX=00000000c0000080 RDX=0000000000000000
RSI=000000000000d238 RDI=0000000000000000 RBP=0000000000000000 RSP=0000000000000000
R8 =0000000000000000 R9 =0000000000000000 R10=0000000000000000 R11=0000000000000000
R12=0000000000000000 R13=0000000000000000 R14=0000000000000000 R15=0000000000000000
RIP=000000000009f076 RFL=00010086 [--S--P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
CS =0008 0000000000000000 00000000 00209900 DPL=0 CS64 [--A]
SS =9f00 000000000009f000 0000ffff 0000f300 DPL=3 DS16 [-WA]
DS =0018 0000000000000000 ffffffff 00c09300 DPL=0 DS   [-WA]
FS =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
GS =0000 0000000000000000 0000ffff 0000f300 DPL=3 DS16 [-WA]
LDT=0000 0000000000000000 0000ffff 00008200 DPL=0 LDT
TR =0000 0000000000000000 0000ffff 00008b00 DPL=0 TSS64-busy
GDT=     000000000009f080 00000020
IDT=     0000000000000000 0000ffff
CR0=80000011 CR2=0000000000000000 CR3=000000000009c000 CR4=00000030
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=00000000ffff0ff0 DR7=0000000000000400
Code=00 00 00 80 0f 22 c0 ea 70 f0 09 00 08 00 48 b8 c0 e1 80 80 <ff> ff ff ff ff e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 99 20 00 ff ff 00 00

For what I'm doing with it, backing down to uniprocessor is fine, but I'd like to understand why it doesn't work. The VM image was installed under a different manager GUI (GNOME Boxes) which offered much less control over configuration, and in particular may have given the installer a uniprocessor environment. Does FreeBSD 7 install a different kernel for uniprocessor and multiprocessor machines? Is it possible to switch without reinstalling?

share|improve this question

The kvm command uses default parameters, one of which is enabling only one vCPU. We run multiple FreeBSD 7.x machines with a very similar set-up as yours, but with a different BIOS version. I am wondering if there is something in the Qemu/KVM BIOS that you are using that is causing FreeBSD's multiprocessor support to freak out. As you can see here, as soon as it prints those messages it should print something about the number of processors:

Have you tried booting it from virt-manager with one CPU?

For reference, this is the output for me of virsh dumpxml test (a working FreeBSD VM):

share|improve this answer
I changed the <vcpu> setting from 4 to 1 and it worked, but I have some follow-up questions -- see edits. (I'm not very familiar with *BSD in general. This is a development environment, I'm trying to set up a whole bunch of OSes in VMs for portability testing.) – zwol Feb 15 '13 at 14:34

FreeBSD has used an SMP enabled kernel by default since November 2003, long before the 7.4 release.

Like Andrew, I suspect something in the BIOS confuses the kernel. The boot menu has several options, like (IIRC) booting with ACPI disabled. That could help sometimes.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .