staticvoid __init jailhouse_x2apic_init(void)
{ #ifdef CONFIG_X86_X2APIC if (!x2apic_enabled()) return; /* * We do not have access to IR inside Jailhouse non-root cells. So * we have to run in physical mode.
*/
x2apic_phys = 1; /* * This will trigger the switch to apic_x2apic_phys. Empty OEM IDs * ensure that only this APIC driver picks up the call.
*/
default_acpi_madt_oem_check("", ""); #endif
}
/* * There are no bridges on the virtual PCI root bus under Jailhouse, * thus no other way to discover all devices than a full scan. * Respect any overrides via the command line, though.
*/ if (pcibios_last_bus < 0)
pcibios_last_bus = 0xff;
for (n = 0; n < ARRAY_SIZE(pcuart_base); n++) { if (pcuart_base[n] != up->iobase) continue;
if (jailhouse_uart_enabled(n)) {
pr_info("Enabling UART%u (port 0x%lx)\n", n,
up->iobase);
jailhouse_setup_irq(up->irq);
} else { /* Deactivate UART if access isn't allowed */
up->iobase = 0;
} break;
}
}
staticvoid __init jailhouse_serial_workaround(void)
{ /* * There are flags inside setup_data that indicate availability of * platform UARTs since setup data version 2. * * In case of version 1, we don't know which UARTs belong Linux. In * this case, unconditionally register 1:1 mapping for legacy UART IRQs * 3 and 4.
*/ if (setup_data.hdr.version > 1)
serial8250_set_isa_configurator(jailhouse_serial_fixup);
} #else/* !CONFIG_SERIAL_8250 */ staticinlinevoid jailhouse_serial_workaround(void)
{
} #endif/* CONFIG_SERIAL_8250 */
staticbool __init jailhouse_x2apic_available(void)
{ /* * The x2APIC is only available if the root cell enabled it. Jailhouse * does not support switching between xAPIC and x2APIC.
*/ return x2apic_enabled();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.