| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Linux-specific definitions for managing interactions with Microsoft's
- * Hyper-V hypervisor. The definitions in this file are specific to
- * the ARM64 architecture. See include/asm-generic/mshyperv.h for
- * definitions are that architecture independent.
- *
- * Definitions that are specified in the Hyper-V Top Level Functional
- * Spec (TLFS) should not go in this file, but should instead go in
- * hyperv-tlfs.h.
- *
- * Copyright (C) 2021, Microsoft, Inc.
- *
- * Author : Michael Kelley <mikelley@microsoft.com>
- */
- #ifndef _ASM_MSHYPERV_H
- #define _ASM_MSHYPERV_H
- #include <linux/types.h>
- #include <linux/arm-smccc.h>
- #include <asm/hyperv-tlfs.h>
- /*
- * Declare calls to get and set Hyper-V VP register values on ARM64, which
- * requires a hypercall.
- */
- void hv_set_vpreg(u32 reg, u64 value);
- u64 hv_get_vpreg(u32 reg);
- void hv_get_vpreg_128(u32 reg, struct hv_get_vp_registers_output *result);
- static inline void hv_set_msr(unsigned int reg, u64 value)
- {
- hv_set_vpreg(reg, value);
- }
- static inline u64 hv_get_msr(unsigned int reg)
- {
- return hv_get_vpreg(reg);
- }
- /* SMCCC hypercall parameters */
- #define HV_SMCCC_FUNC_NUMBER 1
- #define HV_FUNC_ID ARM_SMCCC_CALL_VAL( \
- ARM_SMCCC_STD_CALL, \
- ARM_SMCCC_SMC_64, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- HV_SMCCC_FUNC_NUMBER)
- #include <asm-generic/mshyperv.h>
- #endif
|