# multi-core CPU support for guest OS on VirtualBox



## seiji (Sep 10, 2010)

_How can I enable multi-core CPU support for guest OS on VirtualBox running on FreeBSD ? Is multi-core CPU for guest OS supported ?_

I'm running VirtualBox 3.2.8 on FreeBSD i386 8.1-STABLE with GENERIC kernel. My box has Intel Core2Quad Q6700.


```
>uname -a
FreeBSD xxx.xxx.xxx 8.1-STABLE FreeBSD 8.1-STABLE #0: Sat Aug 14 00:40:03 EDT 2010
root@xxx.xxx.xxx:/usr/obj/usr/src/sys/GENERIC  i386

>grep CPU /var/run/dmesg.boot | head -6
CPU: Intel(R) Core(TM)2 Quad CPU    Q6700  @ 2.66GHz (2666.78-MHz 686-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
cpu2: <ACPI CPU> on acpi0
cpu3: <ACPI CPU> on acpi0
```

I've compiled VirtualBox after upgrading to 8.1-STABLE. So source and binary are in sync. (As shown below, I'm running it with VBoxHeadless.)


```
>pkg_info | grep virtualbox
virtualbox-ose-3.2.8 A general-purpose full virtualizer for x86 hardware
virtualbox-ose-kmod-3.2.8 VirtualBox kernel module for FreeBSD

>cat /var/db/ports/virtualbox-ose/options
# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for virtualbox-ose-3.2.8
_OPTIONS_READ=virtualbox-ose-3.2.8
WITHOUT_QT4=true
WITHOUT_DEBUG=true
WITHOUT_GUESTADDITIONS=true
WITHOUT_DBUS=true
WITHOUT_PULSEAUDIO=true
WITHOUT_X11=true
WITH_VDE=true
WITH_VNC=true
WITHOUT_WEBSERVICE=true
WITHOUT_NLS=true
```

Under this environment, I've installed WindowsXP SP3 and FreeBSD 8.1 with "--cpus 4" (for "VBoxManage modifyvm". Full output is in showvminfo.txt)


```
> VBoxManage showvminfo FreeBSD1 | egrep -i "(CPU|VT-x)"
Number of CPUs:  4
Synthetic Cpu:   off
CPUID overrides: None
VT-x VPID:       on
```

But neither of those guest OSes recognized multiple CPUs. Here is an output from guest FreeBSD. As you can see, it only shows 1 CPU.


```
>uname -a
FreeBSD  8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

>dmesg | grep CPU
CPU: Intel(R) Core(TM)2 Quad CPU    Q6700  @ 2.66GHz (2613.37-MHz 686-class CPU)

cpu0: <ACPI CPU> on acpi0
```

And Task Manager on WindowsXP guest shows only 1 CPU.

Does anybody have any idea why/how ?


----------



## seiji (Sep 10, 2010)

*Regarding to guest additions*

FYI: WindowsXP guest has additions installed, FreeBSD gues doesn't. (Although, I believe additions for FreeBSD doesn't have any impact on no. of CPUs.)


----------



## seiji (Sep 10, 2010)

*[Solved] Needed to turn on IOAPIC*

Bah ...

Searching the web gave me this page http://ubuntuforums.org/showthread.php?t=1290942 and it turned out I needed to turn on "IOAPIC" ("VBoxManage modifyvm FreeBSD1 --ioapic on"). Now guest OS recognizes multiple CPUs.


----------

