Xeon E5430, ubuntu 8.04 x86_64, currently kvm-62. Reports of same issue in kvm76:
https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/239107
Host kernel: 2.6.24-19
Guest: FreeBSD 6.2, i386 and amd64
Problem: FreeBSD will start normally as a guest OS. When a "reboot" is issued to the guest, it will not come back up without destroying the guest, and then starting it again.
Screenshots from a reboot:
http://lehner.pair.com/screenshot1.png
Note that the drive is listed.
http://lehner.pair.com/screenshot2.png
In the second screenshot, the drive should be listed right after the Timecounters lines.
If the guest is destroyed at that point, and restarted it will come up fine. This can be reproduced 100% of the time. Happens both when using a file or a partition for the guest OS.
Reproducible for kvm-74,kvm-75,kvm-76 with FreeBSD 6.2, 6.3 and 7.0.
This is KVM-specific bug. QEMU 0.9.1 does not suffer from it.
KVM-76: When passed --no-kvm option - the reboot is happening without any problems, so this has something to do with kernel kvm module as well.
kvm-77 on Linux 2.6.24-19-server x86_64 fails to reboot FreeBSD properly as well.
KVM-78 is affected as well.
When FreeBSD is started in verbose output mode, the following messages appear:
First Boot:
...
ata0-master: pio=PIO4 wdma=WDMA2 udma=UDMA100 cable=80 wire
ad0: setting PIO4 on PIIX3 chip
ad0: setting WDMA2 on PIIX3 chip
ad0: 8192MB <QEMU HARDDISK="" 0.9.1=""> at ata0-master WDMA2
ad0: 16777216 sectors [16644C/16H/63S] 16 sectors/interrupt 1 depth queue
GEOM: new disk ad0
...
Warm reboot:
...
ata0: reiniting channel ..
ata0: reset tp1 mask=03 ostat0=58 ostat1=58
ata0: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
ata0: stat1=0x00 err=0x01 lsb=0xff msb=0xff
ata0: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ata0: reinit done ..
ata0: reiniting channel ..
ata0: reset tp1 mask=03 ostat0=58 ostat1=58
ata0: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
ata0: stat1=0x00 err=0x01 lsb=0xff msb=0xff
ata0: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ata0: reinit done ..
ata1: reiniting channel ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=58
ata1: stat0=0x00 err=0x01 lsb=0x14 msb=0xeb
ata1: stat1=0x00 err=0x01 lsb=0xff msb=0xff
ata1: reset tp2 stat0=00 stat1=00 devices=0x4<ATAPI_MASTER>
ata1: reinit done ..
ata1: reiniting channel ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=58
ata1: stat0=0x00 err=0x01 lsb=0x14 msb=0xeb
ata1: stat1=0x00 err=0x01 lsb=0xff msb=0xff
ata1: reset tp2 stat0=00 stat1=00 devices=0x4<ATAPI_MASTER>
ata1: reinit done ..
ATA PseudoRAID loaded
Trying to mount root from ufs:/dev/ad0s1a
Manual root filesystem specification:
<fstype>:<device> Mount <device> using filesystem <fstype>
eg. ufs:da0s1a
? List valid disk boot devices
<empty line=""> Abort manual input
mountroot>
adding -no-kvm-irqchip DOES fix this problem, -no-kvm-pit is not sufficient.
Looks like resolved in KVM-80, FreeBSD reboots are working properly.
Thanks!