#include <linux/types.h>
#include <linux/acpi.h>
#include <linux/export.h>
#include <linux/bitfield.h>
#include <linux/cpumask.h>
#include <linux/sched/task_stack.h>
#include <linux/panic_notifier.h>
#include <linux/ptrace.h>
#include <linux/random.h>
#include <linux/efi.h>
#include <linux/kdebug.h>
#include <linux/kmsg_dump.h>
#include <linux/sizes.h>
#include <linux/slab.h>
#include <linux/dma-map-ops.h>
#include <linux/set_memory.h>
#include <asm/hyperv-tlfs.h>
#include <asm/mshyperv.h>
bool __weak hv_root_partition;
EXPORT_SYMBOL_GPL(…);
bool __weak hv_nested;
EXPORT_SYMBOL_GPL(…);
struct ms_hyperv_info __weak ms_hyperv;
EXPORT_SYMBOL_GPL(…);
u32 *hv_vp_index;
EXPORT_SYMBOL_GPL(…);
u32 hv_max_vp_index;
EXPORT_SYMBOL_GPL(…);
void * __percpu *hyperv_pcpu_input_arg;
EXPORT_SYMBOL_GPL(…);
void * __percpu *hyperv_pcpu_output_arg;
EXPORT_SYMBOL_GPL(…);
static void hv_kmsg_dump_unregister(void);
static struct ctl_table_header *hv_ctl_table_hdr;
void __init hv_common_free(void)
{ … }
void *hv_alloc_hyperv_page(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void *hv_alloc_hyperv_zeroed_page(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void hv_free_hyperv_page(void *addr)
{ … }
EXPORT_SYMBOL_GPL(…);
static void *hv_panic_page;
static int sysctl_record_panic_msg = …;
static struct ctl_table hv_ctl_table[] = …;
static int hv_die_panic_notify_crash(struct notifier_block *self,
unsigned long val, void *args);
static struct notifier_block hyperv_die_report_block = …;
static struct notifier_block hyperv_panic_report_block = …;
static int hv_die_panic_notify_crash(struct notifier_block *self,
unsigned long val, void *args)
{ … }
static void hv_kmsg_dump(struct kmsg_dumper *dumper,
struct kmsg_dump_detail *detail)
{ … }
static struct kmsg_dumper hv_kmsg_dumper = …;
static void hv_kmsg_dump_unregister(void)
{ … }
static void hv_kmsg_dump_register(void)
{ … }
int __init hv_common_init(void)
{ … }
void __init ms_hyperv_late_init(void)
{ … }
int hv_common_cpu_init(unsigned int cpu)
{ … }
int hv_common_cpu_die(unsigned int cpu)
{ … }
bool hv_query_ext_cap(u64 cap_query)
{ … }
EXPORT_SYMBOL_GPL(…);
void hv_setup_dma_ops(struct device *dev, bool coherent)
{ … }
EXPORT_SYMBOL_GPL(…);
bool hv_is_hibernation_supported(void)
{ … }
EXPORT_SYMBOL_GPL(…);
static u64 __hv_read_ref_counter(void)
{ … }
u64 (*hv_read_reference_counter)(void) = …;
EXPORT_SYMBOL_GPL(…);
bool __weak hv_is_isolation_supported(void)
{ … }
EXPORT_SYMBOL_GPL(…);
bool __weak hv_isolation_type_snp(void)
{ … }
EXPORT_SYMBOL_GPL(…);
bool __weak hv_isolation_type_tdx(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_setup_vmbus_handler(void (*handler)(void))
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_remove_vmbus_handler(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_setup_kexec_handler(void (*handler)(void))
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_remove_kexec_handler(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_setup_crash_handler(void (*handler)(struct pt_regs *regs))
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hv_remove_crash_handler(void)
{ … }
EXPORT_SYMBOL_GPL(…);
void __weak hyperv_cleanup(void)
{ … }
EXPORT_SYMBOL_GPL(…);
u64 __weak hv_ghcb_hypercall(u64 control, void *input, void *output, u32 input_size)
{ … }
EXPORT_SYMBOL_GPL(…);
u64 __weak hv_tdx_hypercall(u64 control, u64 param1, u64 param2)
{ … }
EXPORT_SYMBOL_GPL(…);