mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-21 19:45:52 +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
repos/ports
@ -1 +1 @@
|
||||
13aca05c49d35f7ce7a2cfd25d2751d9d6de9019
|
||||
8c27e2319a0ff50a02d4555148eccc829f77b4fc
|
||||
|
@ -90,6 +90,7 @@ append config {
|
||||
<resource name="RAM" quantum="1G"/>
|
||||
<config>
|
||||
<image type="iso" file="test.iso" />
|
||||
<!-- <ioapic/> -->
|
||||
<libc stdout="/dev/log" stderr="/dev/log">
|
||||
<vfs>
|
||||
<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("-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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user