mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-09 20:12:57 +00:00
vbox: disable ioapic support by default
and add xml configuration option to switch it on if required. Avoids trouble on Windows 7 guest where IRQ injected by VMMDev PCI device is not delivered. If ioapic is required and Windows guest addition "hangs", look in file DevPCI.cpp, function pciSetIrqInternal, variable fIsApicEnabled. If config[0xde] == 0xbe config[0xad] == 0xef it works. "Deadbeaf" seems to/should be set in ACPI file vbox.dsl. Happens for unknown reason not on Genode/Nova. Fixes #1188
This commit is contained in:
parent
f0c7eccdc7
commit
671e36bc45
@ -1 +1 @@
|
|||||||
13aca05c49d35f7ce7a2cfd25d2751d9d6de9019
|
8c27e2319a0ff50a02d4555148eccc829f77b4fc
|
||||||
|
@ -90,6 +90,7 @@ append config {
|
|||||||
<resource name="RAM" quantum="1G"/>
|
<resource name="RAM" quantum="1G"/>
|
||||||
<config>
|
<config>
|
||||||
<image type="iso" file="test.iso" />
|
<image type="iso" file="test.iso" />
|
||||||
|
<!-- <ioapic/> -->
|
||||||
<libc stdout="/dev/log" stderr="/dev/log">
|
<libc stdout="/dev/log" stderr="/dev/log">
|
||||||
<vfs>
|
<vfs>
|
||||||
<dir name="dev"> <log/> </dir>
|
<dir name="dev"> <log/> </dir>
|
||||||
|
@ -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 <base/lock.h>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+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 */
|
|
@ -202,11 +202,16 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
args.add(c_file);
|
args.add(c_file);
|
||||||
args.add("-ioapic");
|
|
||||||
|
|
||||||
if (bOverlay)
|
if (bOverlay)
|
||||||
args.add("-overlay");
|
args.add("-overlay");
|
||||||
|
|
||||||
|
/* ioapic support */
|
||||||
|
try {
|
||||||
|
Genode::Xml_node node = Genode::config()->xml_node().sub_node("ioapic");
|
||||||
|
args.add("-ioapic");
|
||||||
|
} catch (...) { }
|
||||||
|
|
||||||
/* shared folder setup */
|
/* shared folder setup */
|
||||||
unsigned shares = 0;
|
unsigned shares = 0;
|
||||||
try {
|
try {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user