diff --git a/repos/ports/lib/mk/virtualbox5-common.inc b/repos/ports/lib/mk/virtualbox5-common.inc index 5d315017d..cf7cef1d4 100644 --- a/repos/ports/lib/mk/virtualbox5-common.inc +++ b/repos/ports/lib/mk/virtualbox5-common.inc @@ -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/^.*= //") diff --git a/repos/ports/lib/mk/virtualbox5-devices.mk b/repos/ports/lib/mk/virtualbox5-devices.mk index 0d3bd9aee..76fc3cefe 100644 --- a/repos/ports/lib/mk/virtualbox5-devices.mk +++ b/repos/ports/lib/mk/virtualbox5-devices.mk @@ -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 diff --git a/repos/ports/lib/mk/virtualbox5-vmm.mk b/repos/ports/lib/mk/virtualbox5-vmm.mk index 4802ea05f..4ce96ceff 100644 --- a/repos/ports/lib/mk/virtualbox5-vmm.mk +++ b/repos/ports/lib/mk/virtualbox5-vmm.mk @@ -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 diff --git a/repos/ports/run/vbox4_win10_64.run b/repos/ports/run/vbox4_win10_64.run new file mode 100644 index 000000000..2e5641af4 --- /dev/null +++ b/repos/ports/run/vbox4_win10_64.run @@ -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 diff --git a/repos/ports/run/vbox_auto_win7.run b/repos/ports/run/vbox4_win7_32.run similarity index 100% rename from repos/ports/run/vbox_auto_win7.run rename to repos/ports/run/vbox4_win7_32.run diff --git a/repos/ports/run/vbox_auto_win7_multiple.run b/repos/ports/run/vbox4_win7_32_multiple.run similarity index 100% rename from repos/ports/run/vbox_auto_win7_multiple.run rename to repos/ports/run/vbox4_win7_32_multiple.run diff --git a/repos/ports/run/vbox_auto_win7_share.run b/repos/ports/run/vbox4_win7_32_share.run similarity index 98% rename from repos/ports/run/vbox_auto_win7_share.run rename to repos/ports/run/vbox4_win7_32_share.run index 060f11cb6..2b350b509 100644 --- a/repos/ports/run/vbox_auto_win7_share.run +++ b/repos/ports/run/vbox4_win7_32_share.run @@ -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" diff --git a/repos/ports/run/vbox_auto_win7_64.run b/repos/ports/run/vbox4_win7_64.run similarity index 100% rename from repos/ports/run/vbox_auto_win7_64.run rename to repos/ports/run/vbox4_win7_64.run diff --git a/repos/ports/run/vbox_auto_win7_64_raw.run b/repos/ports/run/vbox4_win7_64_raw.run similarity index 100% rename from repos/ports/run/vbox_auto_win7_64_raw.run rename to repos/ports/run/vbox4_win7_64_raw.run diff --git a/repos/ports/run/vbox_auto_win81_64.run b/repos/ports/run/vbox4_win81_64.run similarity index 100% rename from repos/ports/run/vbox_auto_win81_64.run rename to repos/ports/run/vbox4_win81_64.run diff --git a/repos/ports/run/vbox_auto_win10_vbox5.run b/repos/ports/run/vbox5_win10_64.run similarity index 100% rename from repos/ports/run/vbox_auto_win10_vbox5.run rename to repos/ports/run/vbox5_win10_64.run diff --git a/repos/ports/run/vbox_auto_win7_vbox5.run b/repos/ports/run/vbox5_win7_32.run similarity index 95% rename from repos/ports/run/vbox_auto_win7_vbox5.run rename to repos/ports/run/vbox5_win7_32.run index b979d7c08..925e3beeb 100644 --- a/repos/ports/run/vbox_auto_win7_vbox5.run +++ b/repos/ports/run/vbox5_win7_32.run @@ -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 diff --git a/repos/ports/run/vm_win10.vbox b/repos/ports/run/vm_win10.vbox index 6465c032d..3ba073903 100644 --- a/repos/ports/run/vm_win10.vbox +++ b/repos/ports/run/vm_win10.vbox @@ -21,7 +21,7 @@ - + diff --git a/repos/ports/src/virtualbox5/devices.cc b/repos/ports/src/virtualbox5/devices.cc index caa8cb707..82d6c3bae 100644 --- a/repos/ports/src/virtualbox5/devices.cc +++ b/repos/ports/src/virtualbox5/devices.cc @@ -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); diff --git a/repos/ports/src/virtualbox5/frontend/VirtualBoxBase.h b/repos/ports/src/virtualbox5/frontend/VirtualBoxBase.h index 5b51be035..bb9120ee8 100644 --- a/repos/ports/src/virtualbox5/frontend/VirtualBoxBase.h +++ b/repos/ports/src/virtualbox5/frontend/VirtualBoxBase.h @@ -182,8 +182,12 @@ class Backupable : public Shareable void rollback() { } void commit() { } void commitCopy() { } - void assignCopy(const T *) { } - void assignCopy(const Backupable &) { } + + void assignCopy(const T *t) { + *this->Shareable::data() = *t; } + + void assignCopy(const Backupable &t) { + *this->Shareable::data() = *t.data(); } HRESULT backupEx() { return S_OK; } diff --git a/tool/autopilot.list b/tool/autopilot.list index cd64053c6..4e928eb5e 100644 --- a/tool/autopilot.list +++ b/tool/autopilot.list @@ -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