vbox5: enable SMP setups

We use the use old IOAPIC implementation, which works for us much better than
the new one.

Issue #2338
This commit is contained in:
Alexander Boettcher 2017-02-14 11:18:12 +01:00 committed by Christian Helmuth
parent c782966aea
commit e4aea2efeb
16 changed files with 57 additions and 13 deletions

View File

@ -45,12 +45,14 @@ VBOX_CC_OPT += -DRTLOG_REL_ENABLED -DRT_STRICT -DVBOX_STRICT
VBOX_CC_OPT += -DVBOX_WITH_USB -DVBOX_WITH_VUSB
VBOX_CC_OPT += -DVBOX_WITH_NEW_APIC
VBOX_CC_OPT += -DVBOX_WITH_NEW_IOAPIC
# SMP is not working with the new version
# VBOX_CC_OPT += -DVBOX_WITH_NEW_APIC
# VBOX_CC_OPT += -DVBOX_WITH_NEW_IOAPIC
VBOX_CC_OPT += -DVBOX_WITH_E1000
VBOX_CC_OPT += -DVBOX_WITH_AHCI
VBOX_CC_OPT += -DVBOX_WITH_MULTI_CORE
VIRTUALBOX_VERSION_MAJOR := $(shell cat $(VIRTUALBOX_DIR)/Config.kmk 2>/dev/null | grep "VBOX_VERSION_MAJOR = " | grep -v "'VBOX_VERSION_MAJOR" | sed "s/^.*= //")
VIRTUALBOX_VERSION_MINOR := $(shell cat $(VIRTUALBOX_DIR)/Config.kmk 2>/dev/null | grep "VBOX_VERSION_MINOR = " | grep -v "'VBOX_VERSION_MINOR" | sed "s/^.*= //")

View File

@ -13,7 +13,11 @@ SRC_CC += Devices/PC/DevACPI.cpp
SRC_CC += Devices/PC/DevFwCommon.cpp
SRC_CC += Devices/PC/DevDMA.cpp
SRC_CC += Devices/PC/DevHPET.cpp
ifeq ($(filter $(VBOX_CC_OPT),-DVBOX_WITH_NEW_IOAPIC),)
SRC_CC += Devices/PC/DevIoApic_Old.cpp
else
SRC_CC += Devices/PC/DevIoApic.cpp
endif
SRC_CC += Devices/PC/DevLPC.cpp
SRC_CC += Devices/PC/DevPcBios.cpp
SRC_C += Devices/PC/DevPcArch.c

View File

@ -87,8 +87,10 @@ SRC_CC += VMM/VMMR3/IOM.cpp
SRC_CC += VMM/VMMAll/IOMAll.cpp
SRC_CC += VMM/VMMAll/IOMAllMMIO.cpp
ifneq ($(filter $(VBOX_CC_OPT),-DVBOX_WITH_NEW_APIC),)
SRC_CC += VMM/VMMR3/APIC.cpp
SRC_CC += VMM/VMMAll/APICAll.cpp
endif
CC_OPT += -DVBOX_IN_VMM

View File

@ -0,0 +1,25 @@
#
# Windows 10 in VirtualBox 4
#
assert_spec nova
assert_spec 64bit
set flavor "win10"
set use_vbox4 1
set use_vbox5 0
set use_rumpfs 1
# Write overlay only into ram
set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_usb 1
set use_ps2 [have_spec ps2]
set use_vms 1
set use_cpu_load 0
source ${genode_dir}/repos/ports/run/vbox_win.inc

View File

@ -71,6 +71,8 @@ if {(![have_spec nova] && ![have_spec muen])} {
set virtualbox_binary "virtualbox-rem"
if {[have_spec muen]} { set virtualbox_binary "virtualbox-muen" }
if {[have_spec nova]} { set virtualbox_binary "virtualbox-nova" }
set virtualbox5_binary "virtualbox5-rem"
if {[have_spec nova]} { set virtualbox5_binary "virtualbox5-nova" }
set flavor "win7"

View File

@ -8,7 +8,7 @@ assert_spec 64bit
set flavor "win7"
set use_vbox4 0
set use_vbox5 5
set use_vbox5 1
set use_rumpfs 1
# Write overlay only into ram

View File

@ -21,7 +21,7 @@
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="513,100,1024,790"/>
</ExtraData>
<Hardware version="2">
<CPU count="1" hotplug="false">
<CPU count="2" hotplug="false">
<HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/>

View File

@ -38,6 +38,9 @@ extern "C" int VBoxDevicesRegister(PPDMDEVREGCB pCallbacks, uint32_t u32Version)
REGISTER(DevicePcArch);
REGISTER(DevicePcBios);
REGISTER(DeviceIOAPIC);
#ifndef VBOX_WITH_NEW_APIC
REGISTER(DeviceAPIC);
#endif
REGISTER(DevicePS2KeyboardMouse);
REGISTER(DevicePIIX3IDE);
REGISTER(DeviceI8254);

View File

@ -182,8 +182,12 @@ class Backupable : public Shareable<T>
void rollback() { }
void commit() { }
void commitCopy() { }
void assignCopy(const T *) { }
void assignCopy(const Backupable &) { }
void assignCopy(const T *t) {
*this->Shareable<T>::data() = *t; }
void assignCopy(const Backupable<T> &t) {
*this->Shareable<T>::data() = *t.data(); }
HRESULT backupEx() { return S_OK; }

View File

@ -46,13 +46,15 @@ blk_cache
rump_ext2
thread
pthread
vbox_auto_win7
vbox_auto_win7_64
vbox_auto_win7_64_raw
vbox_auto_win7_vbox5
vbox_auto_win7_share
vbox_auto_win7_multiple
vbox_auto_win81_64
vbox4_win7_32
vbox4_win7_64
vbox4_win7_64_raw
vbox4_win7_32_share
vbox4_win7_64_multiple
vbox4_win81_64
vbox4_win10_64
vbox5_win7_32
vbox5_win10_64
tz_vmm
vmm
bomb