|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * Copyright (c) 2023, Microsoft Corporation. | 
|  | */ | 
|  |  | 
|  | #ifndef _MSHV_H_ | 
|  | #define _MSHV_H_ | 
|  |  | 
|  | #include <linux/stddef.h> | 
|  | #include <linux/string.h> | 
|  | #include <hyperv/hvhdk.h> | 
|  |  | 
|  | #define mshv_field_nonzero(STRUCT, MEMBER) \ | 
|  | memchr_inv(&((STRUCT).MEMBER), \ | 
|  | 0, sizeof_field(typeof(STRUCT), MEMBER)) | 
|  |  | 
|  | int hv_call_get_vp_registers(u32 vp_index, u64 partition_id, u16 count, | 
|  | union hv_input_vtl input_vtl, | 
|  | struct hv_register_assoc *registers); | 
|  |  | 
|  | int hv_call_set_vp_registers(u32 vp_index, u64 partition_id, u16 count, | 
|  | union hv_input_vtl input_vtl, | 
|  | struct hv_register_assoc *registers); | 
|  |  | 
|  | int hv_call_get_partition_property(u64 partition_id, u64 property_code, | 
|  | u64 *property_value); | 
|  |  | 
|  | #endif /* _MSHV_H */ |