-
Notifications
You must be signed in to change notification settings - Fork 4
/
HvEfi.h
95 lines (75 loc) · 2.5 KB
/
HvEfi.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/** @file
Definitions related to LINUX_EFI_HYPERVISOR_MEDIA_GUID protocol exposed
by the hypervisor loader, loaded by HvLoader.efi.
Note !!!
This is only used for testing the exposed protocol. It is not included
in a production build.
Copyright (c) Microsoft Corporation.
Licensed under the MIT License.
**/
#ifndef __HVEFI_H__
#define __HVEFI_H__
//
// -------------------------------------------------------------------- Defines
//
//
// LINUX_EFI_HYPERVISOR_MEDIA protocol for launching Hyper-V
//
#define LINUX_EFI_HYPERVISOR_MEDIA_GUID \
{0x098d423a, 0x6ca5, 0x4ad4, \
{0x90, 0xfa, 0x72, 0xc3, 0xce, 0x22, 0xc8, 0xd0}}
//
// HV EFI memory descriptor extended attributes values
//
#define HV_EFI_MEMORY_EX_ATTR_HV 0x0000000000001 // Hypervisor pages
#define HV_EFI_MEMORY_EX_ATTR_HVLOADER 0x0000000000002 // HV loader pages
//
// ---------------------------------------------------------------------- Types
//
//
// HV EFI descriptor extention that includes extended attributes.
//
typedef struct _HV_EFI_MEMORY_DESCRIPTOR_EX {
//
// EFI_MEMORY_DESCRIPTOR aligned to 128 bits
//
// HV_EFI_MEMORY_DESCRIPTOR_EX:
UINT64 ExAttribute; // Field size is 64 bits
UINT64 Pad; // Field size is 64 bits
} HV_EFI_MEMORY_DESCRIPTOR_EX, *PHV_EFI_MEMORY_DESCRIPTOR_EX;
//
// LINUX_EFI_HYPERVISOR_MEDIA_PROTOCOL methods
//
typedef
VOID
(EFIAPI *HV_EFI_LAUNCH_HYPERVISOR_ROUTINE) (
IN OPTIONAL VOID *SanitizeBspContext,
OUT VOID *HvlReturnData
);
typedef
UINT32
(EFIAPI *HV_EFI_REGISTER_RUNTIME_RANGE_ROUTINE) (
IN UINT64 BasePage,
IN UINT64 PageCount
);
typedef
EFI_STATUS
(EFIAPI *HV_EFI_GET_MEMORY_MAP_ROUTINE) (
IN OUT UINTN *EfiMemoryMapSize,
IN OUT EFI_MEMORY_DESCRIPTOR *EfiMemoryMap,
OUT UINTN *MapKey,
OUT UINTN *DescriptorSize,
OUT UINT32 *DescriptorVersion
);
typedef
CHAR16*
(EFIAPI *HV_EFI_GET_NEXT_LOG_MESSAGE_ROUTINE) (
IN OUT size_t *NextMessage
);
typedef struct _LINUX_EFI_HYPERVISOR_MEDIA_PROTOCOL {
HV_EFI_LAUNCH_HYPERVISOR_ROUTINE HvlLaunchHv;
HV_EFI_REGISTER_RUNTIME_RANGE_ROUTINE HvlRegisterRuntimeRange;
HV_EFI_GET_MEMORY_MAP_ROUTINE HvlGetMemoryMap;
HV_EFI_GET_NEXT_LOG_MESSAGE_ROUTINE HvlGetNextLogMessage;
} LINUX_EFI_HYPERVISOR_MEDIA_PROTOCOL;
#endif // !__HVEFI_H__