1 /*
2  * Copyright (C) 2018-2022 Intel Corporation.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef VCPUID_H_
8 #define VCPUID_H_
9 
10 #define CPUID_CHECK_SUBLEAF	(1U << 0U)
11 #define MAX_VM_VCPUID_ENTRIES	64U
12 
13 /* Guest capability flags reported by CPUID */
14 #define GUEST_CAPS_PRIVILEGE_VM	(1U << 0U)
15 
16 struct vcpuid_entry {
17 	uint32_t eax;
18 	uint32_t ebx;
19 	uint32_t ecx;
20 	uint32_t edx;
21 	uint32_t leaf;
22 	uint32_t subleaf;
23 	uint32_t flags;
24 	uint32_t padding;
25 };
26 
27 int32_t set_vcpuid_entries(struct acrn_vm *vm);
28 void guest_cpuid(struct acrn_vcpu *vcpu,
29 			uint32_t *eax, uint32_t *ebx,
30 			uint32_t *ecx, uint32_t *edx);
31 
32 #endif /* VCPUID_H_ */
33