#include <linux/acpi_pmtmr.h>
#include <linux/kernel.h>
#include <linux/reboot.h>
#include <linux/serial_8250.h>
#include <asm/apic.h>
#include <asm/io_apic.h>
#include <asm/acpi.h>
#include <asm/cpu.h>
#include <asm/hypervisor.h>
#include <asm/i8259.h>
#include <asm/irqdomain.h>
#include <asm/pci_x86.h>
#include <asm/reboot.h>
#include <asm/setup.h>
#include <asm/jailhouse_para.h>
static struct jailhouse_setup_data setup_data;
#define SETUP_DATA_V1_LEN …
#define SETUP_DATA_V2_LEN …
static unsigned int precalibrated_tsc_khz;
static void jailhouse_setup_irq(unsigned int irq)
{ … }
static uint32_t jailhouse_cpuid_base(void)
{ … }
static uint32_t __init jailhouse_detect(void)
{ … }
static void jailhouse_get_wallclock(struct timespec64 *now)
{ … }
static void __init jailhouse_timer_init(void)
{ … }
static unsigned long jailhouse_get_tsc(void)
{ … }
static void __init jailhouse_x2apic_init(void)
{ … }
static void __init jailhouse_parse_smp_config(void)
{ … }
static void jailhouse_no_restart(void)
{ … }
static int __init jailhouse_pci_arch_init(void)
{ … }
#ifdef CONFIG_SERIAL_8250
static inline bool jailhouse_uart_enabled(unsigned int uart_nr)
{ … }
static void jailhouse_serial_fixup(int port, struct uart_port *up,
u32 *capabilities)
{ … }
static void __init jailhouse_serial_workaround(void)
{ … }
#else
static inline void jailhouse_serial_workaround(void)
{
}
#endif
static void __init jailhouse_init_platform(void)
{ … }
bool jailhouse_paravirt(void)
{ … }
static bool __init jailhouse_x2apic_available(void)
{ … }
const struct hypervisor_x86 x86_hyper_jailhouse __refconst = …;