linux/arch/x86/hyperv/hv_init.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * X86 specific Hyper-V initialization code.
 *
 * Copyright (C) 2016, Microsoft, Inc.
 *
 * Author : K. Y. Srinivasan <[email protected]>
 */

#define pr_fmt(fmt)

#include <linux/efi.h>
#include <linux/types.h>
#include <linux/bitfield.h>
#include <linux/io.h>
#include <asm/apic.h>
#include <asm/desc.h>
#include <asm/e820/api.h>
#include <asm/sev.h>
#include <asm/ibt.h>
#include <asm/hypervisor.h>
#include <asm/hyperv-tlfs.h>
#include <asm/mshyperv.h>
#include <asm/idtentry.h>
#include <asm/set_memory.h>
#include <linux/kexec.h>
#include <linux/version.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/hyperv.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/cpuhotplug.h>
#include <linux/syscore_ops.h>
#include <clocksource/hyperv_timer.h>
#include <linux/highmem.h>

u64 hv_current_partition_id =;
EXPORT_SYMBOL_GPL();

void *hv_hypercall_pg;
EXPORT_SYMBOL_GPL();

union hv_ghcb * __percpu *hv_ghcb_pg;

/* Storage to save the hypercall page temporarily for hibernation */
static void *hv_hypercall_pg_saved;

struct hv_vp_assist_page **hv_vp_assist_page;
EXPORT_SYMBOL_GPL();

static int hyperv_init_ghcb(void)
{}

static int hv_cpu_init(unsigned int cpu)
{}

static void (*hv_reenlightenment_cb)(void);

static void hv_reenlightenment_notify(struct work_struct *dummy)
{}
static DECLARE_DELAYED_WORK(hv_reenlightenment_work, hv_reenlightenment_notify);

void hyperv_stop_tsc_emulation(void)
{}
EXPORT_SYMBOL_GPL();

static inline bool hv_reenlightenment_available(void)
{}

DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_reenlightenment)
{}

void set_hv_tscchange_cb(void (*cb)(void))
{}
EXPORT_SYMBOL_GPL();

void clear_hv_tscchange_cb(void)
{}
EXPORT_SYMBOL_GPL();

static int hv_cpu_die(unsigned int cpu)
{}

static int __init hv_pci_init(void)
{}

static int hv_suspend(void)
{}

static void hv_resume(void)
{}

/* Note: when the ops are called, only CPU0 is online and IRQs are disabled. */
static struct syscore_ops hv_syscore_ops =;

static void (* __initdata old_setup_percpu_clockev)(void);

static void __init hv_stimer_setup_percpu_clockev(void)
{}

static void __init hv_get_partition_id(void)
{}

#if IS_ENABLED(CONFIG_HYPERV_VTL_MODE)
static u8 __init get_vtl(void)
{}
#else
static inline u8 get_vtl(void) { return 0; }
#endif

/*
 * This function is to be invoked early in the boot sequence after the
 * hypervisor has been detected.
 *
 * 1. Setup the hypercall page.
 * 2. Register Hyper-V specific clocksource.
 * 3. Setup Hyper-V specific APIC entry points.
 */
void __init hyperv_init(void)
{}

/*
 * This routine is called before kexec/kdump, it does the required cleanup.
 */
void hyperv_cleanup(void)
{}

void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
{}
EXPORT_SYMBOL_GPL();

bool hv_is_hyperv_initialized(void)
{}
EXPORT_SYMBOL_GPL();