diff --git a/repos/ports/ports/virtualbox.hash b/repos/ports/ports/virtualbox.hash index 8604adbb4d..4c78bf933e 100644 --- a/repos/ports/ports/virtualbox.hash +++ b/repos/ports/ports/virtualbox.hash @@ -1 +1 @@ -13aca05c49d35f7ce7a2cfd25d2751d9d6de9019 +8c27e2319a0ff50a02d4555148eccc829f77b4fc diff --git a/repos/ports/run/virtualbox.run b/repos/ports/run/virtualbox.run index b345fadb41..482a3e1a92 100644 --- a/repos/ports/run/virtualbox.run +++ b/repos/ports/run/virtualbox.run @@ -90,6 +90,7 @@ append config { + diff --git a/repos/ports/src/virtualbox/hgcm_sync.patch b/repos/ports/src/virtualbox/hgcm_sync.patch deleted file mode 100644 index 49725aa513..0000000000 --- a/repos/ports/src/virtualbox/hgcm_sync.patch +++ /dev/null @@ -1,34 +0,0 @@ -+++ src/app/virtualbox/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp -@@ -39,6 +39,12 @@ - # define VBOXDD_HGCMCALL_COMPLETED_DONE(a,b,c,d) do { } while (0) - #endif - -+#include -+ -+ -+static Genode::Lock w4c(Genode::Lock::LOCKED); -+ -+ - typedef enum _VBOXHGCMCMDTYPE - { - VBOXHGCMCMDTYPE_LOADSTATE = 0, -@@ -1147,6 +1153,9 @@ int vmmdevHGCMCall (VMMDevState *pVMMDevState, VMMDevHGCMCall *pHGCMCall, uint32 - RTMemFree (pCmd); - } - -+ /* wait for completion */ -+ w4c.lock(); -+ - return rc; - } - -@@ -2382,6 +2391,9 @@ DECLCALLBACK(void) hgcmCompleted (PPDMIHGCMPORT pInterface, int32_t result, PVBO - int rc = VMR3ReqCallVoidNoWait(PDMDevHlpGetVM(pVMMDevState->pDevIns), VMCPUID_ANY, - (PFNRT)hgcmCompletedWorker, 3, pInterface, result, pCmd); - AssertRC(rc); -+ -+ /* signal completion */ -+ w4c.unlock(); - } - - /* @thread EMT */ diff --git a/repos/ports/src/virtualbox/main.cc b/repos/ports/src/virtualbox/main.cc index 72bce4603f..c034eeedd3 100644 --- a/repos/ports/src/virtualbox/main.cc +++ b/repos/ports/src/virtualbox/main.cc @@ -202,11 +202,16 @@ int main() } args.add(c_file); - args.add("-ioapic"); if (bOverlay) args.add("-overlay"); + /* ioapic support */ + try { + Genode::Xml_node node = Genode::config()->xml_node().sub_node("ioapic"); + args.add("-ioapic"); + } catch (...) { } + /* shared folder setup */ unsigned shares = 0; try {