multi-core FreeBSD guest hangs after warm reboot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Medium
|
Unassigned | ||
Debian |
New
|
Undecided
|
Unassigned |
Bug Description
On some Linux KVM hosts in our environment, FreeBSD guests fail to reboot properly if they have more than one CPU (socket, core, and/or thread). They will boot fine the first time, but after issuing a "reboot" command via the OS the guest starts to boot but hangs during SMP initialization. Fully shutting down and restarting the guest works in all cases.
The only meaningful difference between hosts with the problem and those without is the CPU. Hosts with Xeon E5-26xx v2 processors have the problem, including at least the "Intel(R) Xeon(R) CPU E5-2667 v2" and the "Intel(R) Xeon(R) CPU E5-2650 v2".
Hosts with any other CPU, including "Intel(R) Xeon(R) CPU E5-2650 0", "Intel(R) Xeon(R) CPU E5-2620 0", or "AMD Opteron(TM) Processor 6274" do not have the problem. Note the "v2" in the names of the problematic CPUs.
On hosts with a "v2" Xeon, I can reproduce the problem under Linux kernel 3.10 or 3.12 and Qemu 1.7.0 or 2.0.0.
The problem occurs with all currently-supported versions of FreeBSD, including 8.4, 9.2, 10.0 and 11-CURRENT.
On a Linux KVM host with a "v2" Xeon, this command line is adequate to reproduce the problem:
/usr/bin/
I have tried many variations including different models of -machine and -cpu for the guest with no visible difference.
A native FreeBSD installation on a host with a "v2" Xeon does not have the problem, nor do a paravirtualized FreeBSD guests under bhyve (the BSD legacy-free hypervisor) using the same FreeBSD disk images as on the Linux hosts. So it seems unlikely the cause is on the FreeBSD side of things.
I would greatly appreciate any feedback or developer attention to this. I am happy to provide additional details, test patches, etc.
I'm having this same issue. Tried with both FreeNAS (which uses FreeBSD 9), and a minimal install of FreeBSD 10. Everything seems to work great up until you try to do a warm boot. I've compiled a custom FreeBSD kernel with everything unnecessary removed, and also changed the number of CPUs assigned to the guest. Nothing seems to work above a single CPU.
I'm on a fully patched Ubuntu 14.04 system. Here is the top of my /proc/cpuinfo from the Ubuntu hypervisor.
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping : 4
microcode : 0x416
cpu MHz : 2500.010
cache size : 25600 KB
physical id : 0
siblings : 20
core id : 0
cpu cores : 10