blob: f8bdcfe8f21999d43d7a676e12ffd03c182b1c33 (
plain)
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
|
/** @file
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#define VIRT_HSTI_SECURITY_FEATURE_SIZE 2
#define VIRT_HSTI_BYTE0_SMM_SMRAM_LOCK BIT0
#define VIRT_HSTI_BYTE0_SMM_SECURE_VARS_FLASH BIT1
#define VIRT_HSTI_BYTE0_READONLY_CODE_FLASH BIT2
typedef struct {
// ADAPTER_INFO_PLATFORM_SECURITY
UINT32 Version;
UINT32 Role;
CHAR16 ImplementationID[256];
UINT32 SecurityFeaturesSize;
// bitfields
UINT8 SecurityFeaturesRequired[VIRT_HSTI_SECURITY_FEATURE_SIZE];
UINT8 SecurityFeaturesImplemented[VIRT_HSTI_SECURITY_FEATURE_SIZE];
UINT8 SecurityFeaturesVerified[VIRT_HSTI_SECURITY_FEATURE_SIZE];
CHAR16 ErrorString[1];
} VIRT_ADAPTER_INFO_PLATFORM_SECURITY;
VOID
VirtHstiSetSupported (
VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti,
IN UINT32 ByteIndex,
IN UINT8 BitMask
);
BOOLEAN
VirtHstiIsSupported (
VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti,
IN UINT32 ByteIndex,
IN UINT8 BitMask
);
VOID
VirtHstiTestResult (
CHAR16 *ErrorMsg,
IN UINT32 ByteIndex,
IN UINT8 BitMask
);
/* QemuQ35.c */
VIRT_ADAPTER_INFO_PLATFORM_SECURITY *
VirtHstiQemuQ35Init (
VOID
);
VOID
VirtHstiQemuQ35Verify (
VOID
);
/* QemuPC.c */
VIRT_ADAPTER_INFO_PLATFORM_SECURITY *
VirtHstiQemuPCInit (
VOID
);
VOID
VirtHstiQemuPCVerify (
VOID
);
/* QemuCommon.c */
VOID
VirtHstiQemuCommonInit (
VIRT_ADAPTER_INFO_PLATFORM_SECURITY *VirtHsti
);
VOID
VirtHstiQemuCommonVerify (
VOID
);
/* Flash.c */
#define QEMU_FIRMWARE_FLASH_UNKNOWN 0
#define QEMU_FIRMWARE_FLASH_IS_ROM 1
#define QEMU_FIRMWARE_FLASH_IS_RAM 2
#define QEMU_FIRMWARE_FLASH_READ_ONLY 3
#define QEMU_FIRMWARE_FLASH_WRITABLE 4
UINT32
VirtHstiQemuFirmwareFlashCheck (
UINT32 Address
);
|