mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 05:37:54 +00:00
parent
cb3556877d
commit
f4cfa0ca43
@ -14,19 +14,6 @@ configuration option:
|
||||
|
||||
<config xhci="yes">
|
||||
|
||||
IOAPIC
|
||||
======
|
||||
|
||||
The virtual PCI model delivers IRQs to the PIC by default and to the IOAPIC
|
||||
only if the guest operating system selected the IOAPIC with the '_PIC' ACPI
|
||||
method and if it called the '_PRT' ACPI method afterwards. When running a
|
||||
guest operating system which uses the IOAPIC, but does not call these ACPI
|
||||
methods (for example Genode/NOVA), the configuration option
|
||||
|
||||
<config force_ioapic="yes">
|
||||
|
||||
enforces the delivery of PCI IRQs to the IOAPIC.
|
||||
|
||||
CAPSLOCK
|
||||
========
|
||||
|
||||
|
@ -11,8 +11,11 @@
|
||||
* version 2.
|
||||
*/
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/attached_rom_dataspace.h>
|
||||
/*
|
||||
* VirtualBox defines a 'Log' macro, which would interfere with 'Genode::Log'
|
||||
* if we didn't include the header here
|
||||
*/
|
||||
#include <base/log.h>
|
||||
|
||||
/* VirtualBox includes */
|
||||
#include <VBoxDD.h>
|
||||
@ -72,33 +75,3 @@ extern "C" int VBoxDevicesRegister(PPDMDEVREGCB pCallbacks, uint32_t u32Version)
|
||||
|
||||
return VINF_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* The virtual PCI model delivers IRQs to the PIC by default and to the IOAPIC
|
||||
* only if the guest operating system selected the IOAPIC with the '_PIC' ACPI
|
||||
* method and if it called the '_PRT' ACPI method afterwards. When running a
|
||||
* guest operating system which uses the IOAPIC, but does not call these ACPI
|
||||
* methods (for example Genode/NOVA), IRQ delivery to the IOAPIC can be
|
||||
* enforced with the 'force_ioapic' configuration option.
|
||||
*
|
||||
* References:
|
||||
* - 'pciSetIrqInternal()' in DevPCI.cpp
|
||||
* - '_PIC' and '_PRT' ACPI methods in vbox.dsl
|
||||
*/
|
||||
|
||||
static bool read_force_ioapic_from_config()
|
||||
{
|
||||
try {
|
||||
Genode::Attached_rom_dataspace config(genode_env(), "config");
|
||||
return config.xml().attribute_value("force_ioapic", false);
|
||||
} catch (Genode::Rom_connection::Rom_connection_failed) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool force_ioapic()
|
||||
{
|
||||
/* read only once from config ROM */
|
||||
static bool force = read_force_ioapic_from_config();
|
||||
return force;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user