* [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
@ 2024-02-13 8:59 Gerd Hoffmann
2024-02-13 10:41 ` Ard Biesheuvel
2024-02-13 10:44 ` Laszlo Ersek
0 siblings, 2 replies; 13+ messages in thread
From: Gerd Hoffmann @ 2024-02-13 8:59 UTC (permalink / raw)
To: devel
Cc: Oliver Steffen, Laszlo Ersek, Ard Biesheuvel, Gerd Hoffmann,
Jiewen Yao
Removing CSM support broke VbeShim.
I see ASSERTS being triggered, both in vbeshim code and elsewhere.
Didn't investigate in detail, but apparently the real mode address space
is not considered being special any more, which invalidates some
assumptions of the vbeshim code.
The guest os which depends on vbeshim for video support is -- according
to the comments -- Windows 2008 R2. Which went EOL in January 2020,
more than four years ago.
Time to retire VbeShim. RIP.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 4 -
OvmfPkg/QemuVideoDxe/VbeShim.h | 701 --------------------------
OvmfPkg/QemuVideoDxe/Driver.c | 9 -
OvmfPkg/QemuVideoDxe/VbeShim.c | 328 ------------
OvmfPkg/QemuVideoDxe/VbeShim.asm | 281 -----------
OvmfPkg/QemuVideoDxe/VbeShim.sh | 82 ---
6 files changed, 1405 deletions(-)
delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.h
delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.c
delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.asm
delete mode 100755 OvmfPkg/QemuVideoDxe/VbeShim.sh
diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
index 43a6e07faa88..6b7baa8525a7 100644
--- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
@@ -33,10 +33,6 @@ [Sources.common]
Initialize.c
Qemu.h
-[Sources.Ia32, Sources.X64]
- VbeShim.c
- VbeShim.h
-
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h
deleted file mode 100644
index cc9b6e14cdcd..000000000000
--- a/OvmfPkg/QemuVideoDxe/VbeShim.h
+++ /dev/null
@@ -1,701 +0,0 @@
-//
-// THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT.
-//
-#ifndef _VBE_SHIM_H_
-#define _VBE_SHIM_H_
-STATIC CONST UINT8 mVbeShim[] = {
- /* 00000000 nop */ 0x90,
- /* 00000001 nop */ 0x90,
- /* 00000002 nop */ 0x90,
- /* 00000003 nop */ 0x90,
- /* 00000004 nop */ 0x90,
- /* 00000005 nop */ 0x90,
- /* 00000006 nop */ 0x90,
- /* 00000007 nop */ 0x90,
- /* 00000008 nop */ 0x90,
- /* 00000009 nop */ 0x90,
- /* 0000000A nop */ 0x90,
- /* 0000000B nop */ 0x90,
- /* 0000000C nop */ 0x90,
- /* 0000000D nop */ 0x90,
- /* 0000000E nop */ 0x90,
- /* 0000000F nop */ 0x90,
- /* 00000010 nop */ 0x90,
- /* 00000011 nop */ 0x90,
- /* 00000012 nop */ 0x90,
- /* 00000013 nop */ 0x90,
- /* 00000014 nop */ 0x90,
- /* 00000015 nop */ 0x90,
- /* 00000016 nop */ 0x90,
- /* 00000017 nop */ 0x90,
- /* 00000018 nop */ 0x90,
- /* 00000019 nop */ 0x90,
- /* 0000001A nop */ 0x90,
- /* 0000001B nop */ 0x90,
- /* 0000001C nop */ 0x90,
- /* 0000001D nop */ 0x90,
- /* 0000001E nop */ 0x90,
- /* 0000001F nop */ 0x90,
- /* 00000020 nop */ 0x90,
- /* 00000021 nop */ 0x90,
- /* 00000022 nop */ 0x90,
- /* 00000023 nop */ 0x90,
- /* 00000024 nop */ 0x90,
- /* 00000025 nop */ 0x90,
- /* 00000026 nop */ 0x90,
- /* 00000027 nop */ 0x90,
- /* 00000028 nop */ 0x90,
- /* 00000029 nop */ 0x90,
- /* 0000002A nop */ 0x90,
- /* 0000002B nop */ 0x90,
- /* 0000002C nop */ 0x90,
- /* 0000002D nop */ 0x90,
- /* 0000002E nop */ 0x90,
- /* 0000002F nop */ 0x90,
- /* 00000030 nop */ 0x90,
- /* 00000031 nop */ 0x90,
- /* 00000032 nop */ 0x90,
- /* 00000033 nop */ 0x90,
- /* 00000034 nop */ 0x90,
- /* 00000035 nop */ 0x90,
- /* 00000036 nop */ 0x90,
- /* 00000037 nop */ 0x90,
- /* 00000038 nop */ 0x90,
- /* 00000039 nop */ 0x90,
- /* 0000003A nop */ 0x90,
- /* 0000003B nop */ 0x90,
- /* 0000003C nop */ 0x90,
- /* 0000003D nop */ 0x90,
- /* 0000003E nop */ 0x90,
- /* 0000003F nop */ 0x90,
- /* 00000040 nop */ 0x90,
- /* 00000041 nop */ 0x90,
- /* 00000042 nop */ 0x90,
- /* 00000043 nop */ 0x90,
- /* 00000044 nop */ 0x90,
- /* 00000045 nop */ 0x90,
- /* 00000046 nop */ 0x90,
- /* 00000047 nop */ 0x90,
- /* 00000048 nop */ 0x90,
- /* 00000049 nop */ 0x90,
- /* 0000004A nop */ 0x90,
- /* 0000004B nop */ 0x90,
- /* 0000004C nop */ 0x90,
- /* 0000004D nop */ 0x90,
- /* 0000004E nop */ 0x90,
- /* 0000004F nop */ 0x90,
- /* 00000050 nop */ 0x90,
- /* 00000051 nop */ 0x90,
- /* 00000052 nop */ 0x90,
- /* 00000053 nop */ 0x90,
- /* 00000054 nop */ 0x90,
- /* 00000055 nop */ 0x90,
- /* 00000056 nop */ 0x90,
- /* 00000057 nop */ 0x90,
- /* 00000058 nop */ 0x90,
- /* 00000059 nop */ 0x90,
- /* 0000005A nop */ 0x90,
- /* 0000005B nop */ 0x90,
- /* 0000005C nop */ 0x90,
- /* 0000005D nop */ 0x90,
- /* 0000005E nop */ 0x90,
- /* 0000005F nop */ 0x90,
- /* 00000060 nop */ 0x90,
- /* 00000061 nop */ 0x90,
- /* 00000062 nop */ 0x90,
- /* 00000063 nop */ 0x90,
- /* 00000064 nop */ 0x90,
- /* 00000065 nop */ 0x90,
- /* 00000066 nop */ 0x90,
- /* 00000067 nop */ 0x90,
- /* 00000068 nop */ 0x90,
- /* 00000069 nop */ 0x90,
- /* 0000006A nop */ 0x90,
- /* 0000006B nop */ 0x90,
- /* 0000006C nop */ 0x90,
- /* 0000006D nop */ 0x90,
- /* 0000006E nop */ 0x90,
- /* 0000006F nop */ 0x90,
- /* 00000070 nop */ 0x90,
- /* 00000071 nop */ 0x90,
- /* 00000072 nop */ 0x90,
- /* 00000073 nop */ 0x90,
- /* 00000074 nop */ 0x90,
- /* 00000075 nop */ 0x90,
- /* 00000076 nop */ 0x90,
- /* 00000077 nop */ 0x90,
- /* 00000078 nop */ 0x90,
- /* 00000079 nop */ 0x90,
- /* 0000007A nop */ 0x90,
- /* 0000007B nop */ 0x90,
- /* 0000007C nop */ 0x90,
- /* 0000007D nop */ 0x90,
- /* 0000007E nop */ 0x90,
- /* 0000007F nop */ 0x90,
- /* 00000080 nop */ 0x90,
- /* 00000081 nop */ 0x90,
- /* 00000082 nop */ 0x90,
- /* 00000083 nop */ 0x90,
- /* 00000084 nop */ 0x90,
- /* 00000085 nop */ 0x90,
- /* 00000086 nop */ 0x90,
- /* 00000087 nop */ 0x90,
- /* 00000088 nop */ 0x90,
- /* 00000089 nop */ 0x90,
- /* 0000008A nop */ 0x90,
- /* 0000008B nop */ 0x90,
- /* 0000008C nop */ 0x90,
- /* 0000008D nop */ 0x90,
- /* 0000008E nop */ 0x90,
- /* 0000008F nop */ 0x90,
- /* 00000090 nop */ 0x90,
- /* 00000091 nop */ 0x90,
- /* 00000092 nop */ 0x90,
- /* 00000093 nop */ 0x90,
- /* 00000094 nop */ 0x90,
- /* 00000095 nop */ 0x90,
- /* 00000096 nop */ 0x90,
- /* 00000097 nop */ 0x90,
- /* 00000098 nop */ 0x90,
- /* 00000099 nop */ 0x90,
- /* 0000009A nop */ 0x90,
- /* 0000009B nop */ 0x90,
- /* 0000009C nop */ 0x90,
- /* 0000009D nop */ 0x90,
- /* 0000009E nop */ 0x90,
- /* 0000009F nop */ 0x90,
- /* 000000A0 nop */ 0x90,
- /* 000000A1 nop */ 0x90,
- /* 000000A2 nop */ 0x90,
- /* 000000A3 nop */ 0x90,
- /* 000000A4 nop */ 0x90,
- /* 000000A5 nop */ 0x90,
- /* 000000A6 nop */ 0x90,
- /* 000000A7 nop */ 0x90,
- /* 000000A8 nop */ 0x90,
- /* 000000A9 nop */ 0x90,
- /* 000000AA nop */ 0x90,
- /* 000000AB nop */ 0x90,
- /* 000000AC nop */ 0x90,
- /* 000000AD nop */ 0x90,
- /* 000000AE nop */ 0x90,
- /* 000000AF nop */ 0x90,
- /* 000000B0 nop */ 0x90,
- /* 000000B1 nop */ 0x90,
- /* 000000B2 nop */ 0x90,
- /* 000000B3 nop */ 0x90,
- /* 000000B4 nop */ 0x90,
- /* 000000B5 nop */ 0x90,
- /* 000000B6 nop */ 0x90,
- /* 000000B7 nop */ 0x90,
- /* 000000B8 nop */ 0x90,
- /* 000000B9 nop */ 0x90,
- /* 000000BA nop */ 0x90,
- /* 000000BB nop */ 0x90,
- /* 000000BC nop */ 0x90,
- /* 000000BD nop */ 0x90,
- /* 000000BE nop */ 0x90,
- /* 000000BF nop */ 0x90,
- /* 000000C0 nop */ 0x90,
- /* 000000C1 nop */ 0x90,
- /* 000000C2 nop */ 0x90,
- /* 000000C3 nop */ 0x90,
- /* 000000C4 nop */ 0x90,
- /* 000000C5 nop */ 0x90,
- /* 000000C6 nop */ 0x90,
- /* 000000C7 nop */ 0x90,
- /* 000000C8 nop */ 0x90,
- /* 000000C9 nop */ 0x90,
- /* 000000CA nop */ 0x90,
- /* 000000CB nop */ 0x90,
- /* 000000CC nop */ 0x90,
- /* 000000CD nop */ 0x90,
- /* 000000CE nop */ 0x90,
- /* 000000CF nop */ 0x90,
- /* 000000D0 nop */ 0x90,
- /* 000000D1 nop */ 0x90,
- /* 000000D2 nop */ 0x90,
- /* 000000D3 nop */ 0x90,
- /* 000000D4 nop */ 0x90,
- /* 000000D5 nop */ 0x90,
- /* 000000D6 nop */ 0x90,
- /* 000000D7 nop */ 0x90,
- /* 000000D8 nop */ 0x90,
- /* 000000D9 nop */ 0x90,
- /* 000000DA nop */ 0x90,
- /* 000000DB nop */ 0x90,
- /* 000000DC nop */ 0x90,
- /* 000000DD nop */ 0x90,
- /* 000000DE nop */ 0x90,
- /* 000000DF nop */ 0x90,
- /* 000000E0 nop */ 0x90,
- /* 000000E1 nop */ 0x90,
- /* 000000E2 nop */ 0x90,
- /* 000000E3 nop */ 0x90,
- /* 000000E4 nop */ 0x90,
- /* 000000E5 nop */ 0x90,
- /* 000000E6 nop */ 0x90,
- /* 000000E7 nop */ 0x90,
- /* 000000E8 nop */ 0x90,
- /* 000000E9 nop */ 0x90,
- /* 000000EA nop */ 0x90,
- /* 000000EB nop */ 0x90,
- /* 000000EC nop */ 0x90,
- /* 000000ED nop */ 0x90,
- /* 000000EE nop */ 0x90,
- /* 000000EF nop */ 0x90,
- /* 000000F0 nop */ 0x90,
- /* 000000F1 nop */ 0x90,
- /* 000000F2 nop */ 0x90,
- /* 000000F3 nop */ 0x90,
- /* 000000F4 nop */ 0x90,
- /* 000000F5 nop */ 0x90,
- /* 000000F6 nop */ 0x90,
- /* 000000F7 nop */ 0x90,
- /* 000000F8 nop */ 0x90,
- /* 000000F9 nop */ 0x90,
- /* 000000FA nop */ 0x90,
- /* 000000FB nop */ 0x90,
- /* 000000FC nop */ 0x90,
- /* 000000FD nop */ 0x90,
- /* 000000FE nop */ 0x90,
- /* 000000FF nop */ 0x90,
- /* 00000100 nop */ 0x90,
- /* 00000101 nop */ 0x90,
- /* 00000102 nop */ 0x90,
- /* 00000103 nop */ 0x90,
- /* 00000104 nop */ 0x90,
- /* 00000105 nop */ 0x90,
- /* 00000106 nop */ 0x90,
- /* 00000107 nop */ 0x90,
- /* 00000108 nop */ 0x90,
- /* 00000109 nop */ 0x90,
- /* 0000010A nop */ 0x90,
- /* 0000010B nop */ 0x90,
- /* 0000010C nop */ 0x90,
- /* 0000010D nop */ 0x90,
- /* 0000010E nop */ 0x90,
- /* 0000010F nop */ 0x90,
- /* 00000110 nop */ 0x90,
- /* 00000111 nop */ 0x90,
- /* 00000112 nop */ 0x90,
- /* 00000113 nop */ 0x90,
- /* 00000114 nop */ 0x90,
- /* 00000115 nop */ 0x90,
- /* 00000116 nop */ 0x90,
- /* 00000117 nop */ 0x90,
- /* 00000118 nop */ 0x90,
- /* 00000119 nop */ 0x90,
- /* 0000011A nop */ 0x90,
- /* 0000011B nop */ 0x90,
- /* 0000011C nop */ 0x90,
- /* 0000011D nop */ 0x90,
- /* 0000011E nop */ 0x90,
- /* 0000011F nop */ 0x90,
- /* 00000120 nop */ 0x90,
- /* 00000121 nop */ 0x90,
- /* 00000122 nop */ 0x90,
- /* 00000123 nop */ 0x90,
- /* 00000124 nop */ 0x90,
- /* 00000125 nop */ 0x90,
- /* 00000126 nop */ 0x90,
- /* 00000127 nop */ 0x90,
- /* 00000128 nop */ 0x90,
- /* 00000129 nop */ 0x90,
- /* 0000012A nop */ 0x90,
- /* 0000012B nop */ 0x90,
- /* 0000012C nop */ 0x90,
- /* 0000012D nop */ 0x90,
- /* 0000012E nop */ 0x90,
- /* 0000012F nop */ 0x90,
- /* 00000130 nop */ 0x90,
- /* 00000131 nop */ 0x90,
- /* 00000132 nop */ 0x90,
- /* 00000133 nop */ 0x90,
- /* 00000134 nop */ 0x90,
- /* 00000135 nop */ 0x90,
- /* 00000136 nop */ 0x90,
- /* 00000137 nop */ 0x90,
- /* 00000138 nop */ 0x90,
- /* 00000139 nop */ 0x90,
- /* 0000013A nop */ 0x90,
- /* 0000013B nop */ 0x90,
- /* 0000013C nop */ 0x90,
- /* 0000013D nop */ 0x90,
- /* 0000013E nop */ 0x90,
- /* 0000013F nop */ 0x90,
- /* 00000140 nop */ 0x90,
- /* 00000141 nop */ 0x90,
- /* 00000142 nop */ 0x90,
- /* 00000143 nop */ 0x90,
- /* 00000144 nop */ 0x90,
- /* 00000145 nop */ 0x90,
- /* 00000146 nop */ 0x90,
- /* 00000147 nop */ 0x90,
- /* 00000148 nop */ 0x90,
- /* 00000149 nop */ 0x90,
- /* 0000014A nop */ 0x90,
- /* 0000014B nop */ 0x90,
- /* 0000014C nop */ 0x90,
- /* 0000014D nop */ 0x90,
- /* 0000014E nop */ 0x90,
- /* 0000014F nop */ 0x90,
- /* 00000150 nop */ 0x90,
- /* 00000151 nop */ 0x90,
- /* 00000152 nop */ 0x90,
- /* 00000153 nop */ 0x90,
- /* 00000154 nop */ 0x90,
- /* 00000155 nop */ 0x90,
- /* 00000156 nop */ 0x90,
- /* 00000157 nop */ 0x90,
- /* 00000158 nop */ 0x90,
- /* 00000159 nop */ 0x90,
- /* 0000015A nop */ 0x90,
- /* 0000015B nop */ 0x90,
- /* 0000015C nop */ 0x90,
- /* 0000015D nop */ 0x90,
- /* 0000015E nop */ 0x90,
- /* 0000015F nop */ 0x90,
- /* 00000160 nop */ 0x90,
- /* 00000161 nop */ 0x90,
- /* 00000162 nop */ 0x90,
- /* 00000163 nop */ 0x90,
- /* 00000164 nop */ 0x90,
- /* 00000165 nop */ 0x90,
- /* 00000166 nop */ 0x90,
- /* 00000167 nop */ 0x90,
- /* 00000168 nop */ 0x90,
- /* 00000169 nop */ 0x90,
- /* 0000016A nop */ 0x90,
- /* 0000016B nop */ 0x90,
- /* 0000016C nop */ 0x90,
- /* 0000016D nop */ 0x90,
- /* 0000016E nop */ 0x90,
- /* 0000016F nop */ 0x90,
- /* 00000170 nop */ 0x90,
- /* 00000171 nop */ 0x90,
- /* 00000172 nop */ 0x90,
- /* 00000173 nop */ 0x90,
- /* 00000174 nop */ 0x90,
- /* 00000175 nop */ 0x90,
- /* 00000176 nop */ 0x90,
- /* 00000177 nop */ 0x90,
- /* 00000178 nop */ 0x90,
- /* 00000179 nop */ 0x90,
- /* 0000017A nop */ 0x90,
- /* 0000017B nop */ 0x90,
- /* 0000017C nop */ 0x90,
- /* 0000017D nop */ 0x90,
- /* 0000017E nop */ 0x90,
- /* 0000017F nop */ 0x90,
- /* 00000180 nop */ 0x90,
- /* 00000181 nop */ 0x90,
- /* 00000182 nop */ 0x90,
- /* 00000183 nop */ 0x90,
- /* 00000184 nop */ 0x90,
- /* 00000185 nop */ 0x90,
- /* 00000186 nop */ 0x90,
- /* 00000187 nop */ 0x90,
- /* 00000188 nop */ 0x90,
- /* 00000189 nop */ 0x90,
- /* 0000018A nop */ 0x90,
- /* 0000018B nop */ 0x90,
- /* 0000018C nop */ 0x90,
- /* 0000018D nop */ 0x90,
- /* 0000018E nop */ 0x90,
- /* 0000018F nop */ 0x90,
- /* 00000190 nop */ 0x90,
- /* 00000191 nop */ 0x90,
- /* 00000192 nop */ 0x90,
- /* 00000193 nop */ 0x90,
- /* 00000194 nop */ 0x90,
- /* 00000195 nop */ 0x90,
- /* 00000196 nop */ 0x90,
- /* 00000197 nop */ 0x90,
- /* 00000198 nop */ 0x90,
- /* 00000199 nop */ 0x90,
- /* 0000019A nop */ 0x90,
- /* 0000019B nop */ 0x90,
- /* 0000019C nop */ 0x90,
- /* 0000019D nop */ 0x90,
- /* 0000019E nop */ 0x90,
- /* 0000019F nop */ 0x90,
- /* 000001A0 nop */ 0x90,
- /* 000001A1 nop */ 0x90,
- /* 000001A2 nop */ 0x90,
- /* 000001A3 nop */ 0x90,
- /* 000001A4 nop */ 0x90,
- /* 000001A5 nop */ 0x90,
- /* 000001A6 nop */ 0x90,
- /* 000001A7 nop */ 0x90,
- /* 000001A8 nop */ 0x90,
- /* 000001A9 nop */ 0x90,
- /* 000001AA nop */ 0x90,
- /* 000001AB nop */ 0x90,
- /* 000001AC nop */ 0x90,
- /* 000001AD nop */ 0x90,
- /* 000001AE nop */ 0x90,
- /* 000001AF nop */ 0x90,
- /* 000001B0 nop */ 0x90,
- /* 000001B1 nop */ 0x90,
- /* 000001B2 nop */ 0x90,
- /* 000001B3 nop */ 0x90,
- /* 000001B4 nop */ 0x90,
- /* 000001B5 nop */ 0x90,
- /* 000001B6 nop */ 0x90,
- /* 000001B7 nop */ 0x90,
- /* 000001B8 nop */ 0x90,
- /* 000001B9 nop */ 0x90,
- /* 000001BA nop */ 0x90,
- /* 000001BB nop */ 0x90,
- /* 000001BC nop */ 0x90,
- /* 000001BD nop */ 0x90,
- /* 000001BE nop */ 0x90,
- /* 000001BF nop */ 0x90,
- /* 000001C0 nop */ 0x90,
- /* 000001C1 nop */ 0x90,
- /* 000001C2 nop */ 0x90,
- /* 000001C3 nop */ 0x90,
- /* 000001C4 nop */ 0x90,
- /* 000001C5 nop */ 0x90,
- /* 000001C6 nop */ 0x90,
- /* 000001C7 nop */ 0x90,
- /* 000001C8 nop */ 0x90,
- /* 000001C9 nop */ 0x90,
- /* 000001CA nop */ 0x90,
- /* 000001CB nop */ 0x90,
- /* 000001CC nop */ 0x90,
- /* 000001CD nop */ 0x90,
- /* 000001CE nop */ 0x90,
- /* 000001CF nop */ 0x90,
- /* 000001D0 nop */ 0x90,
- /* 000001D1 nop */ 0x90,
- /* 000001D2 nop */ 0x90,
- /* 000001D3 nop */ 0x90,
- /* 000001D4 nop */ 0x90,
- /* 000001D5 nop */ 0x90,
- /* 000001D6 nop */ 0x90,
- /* 000001D7 nop */ 0x90,
- /* 000001D8 nop */ 0x90,
- /* 000001D9 nop */ 0x90,
- /* 000001DA nop */ 0x90,
- /* 000001DB nop */ 0x90,
- /* 000001DC nop */ 0x90,
- /* 000001DD nop */ 0x90,
- /* 000001DE nop */ 0x90,
- /* 000001DF nop */ 0x90,
- /* 000001E0 nop */ 0x90,
- /* 000001E1 nop */ 0x90,
- /* 000001E2 nop */ 0x90,
- /* 000001E3 nop */ 0x90,
- /* 000001E4 nop */ 0x90,
- /* 000001E5 nop */ 0x90,
- /* 000001E6 nop */ 0x90,
- /* 000001E7 nop */ 0x90,
- /* 000001E8 nop */ 0x90,
- /* 000001E9 nop */ 0x90,
- /* 000001EA nop */ 0x90,
- /* 000001EB nop */ 0x90,
- /* 000001EC nop */ 0x90,
- /* 000001ED nop */ 0x90,
- /* 000001EE nop */ 0x90,
- /* 000001EF nop */ 0x90,
- /* 000001F0 nop */ 0x90,
- /* 000001F1 nop */ 0x90,
- /* 000001F2 nop */ 0x90,
- /* 000001F3 nop */ 0x90,
- /* 000001F4 nop */ 0x90,
- /* 000001F5 nop */ 0x90,
- /* 000001F6 nop */ 0x90,
- /* 000001F7 nop */ 0x90,
- /* 000001F8 nop */ 0x90,
- /* 000001F9 nop */ 0x90,
- /* 000001FA nop */ 0x90,
- /* 000001FB nop */ 0x90,
- /* 000001FC nop */ 0x90,
- /* 000001FD nop */ 0x90,
- /* 000001FE nop */ 0x90,
- /* 000001FF nop */ 0x90,
- /* 00000200 cmp ax,0x4f00 */ 0x3D, 0x00, 0x4F,
- /* 00000203 jz 0x22d */ 0x74, 0x28,
- /* 00000205 cmp ax,0x4f01 */ 0x3D, 0x01, 0x4F,
- /* 00000208 jz 0x245 */ 0x74, 0x3B,
- /* 0000020A cmp ax,0x4f02 */ 0x3D, 0x02, 0x4F,
- /* 0000020D jz 0x269 */ 0x74, 0x5A,
- /* 0000020F cmp ax,0x4f03 */ 0x3D, 0x03, 0x4F,
- /* 00000212 jz word 0x331 */ 0x0F, 0x84, 0x1B, 0x01,
- /* 00000216 cmp ax,0x4f10 */ 0x3D, 0x10, 0x4F,
- /* 00000219 jz word 0x336 */ 0x0F, 0x84, 0x19, 0x01,
- /* 0000021D cmp ax,0x4f15 */ 0x3D, 0x15, 0x4F,
- /* 00000220 jz word 0x338 */ 0x0F, 0x84, 0x14, 0x01,
- /* 00000224 cmp ah,0x0 */ 0x80, 0xFC, 0x00,
- /* 00000227 jz word 0x33a */ 0x0F, 0x84, 0x0F, 0x01,
- /* 0000022B jmp short 0x22b */ 0xEB, 0xFE,
- /* 0000022D push es */ 0x06,
- /* 0000022E push di */ 0x57,
- /* 0000022F push ds */ 0x1E,
- /* 00000230 push si */ 0x56,
- /* 00000231 push cx */ 0x51,
- /* 00000232 push cs */ 0x0E,
- /* 00000233 pop ds */ 0x1F,
- /* 00000234 mov si,0x0 */ 0xBE, 0x00, 0x00,
- /* 00000237 mov cx,0x100 */ 0xB9, 0x00, 0x01,
- /* 0000023A cld */ 0xFC,
- /* 0000023B rep movsb */ 0xF3, 0xA4,
- /* 0000023D pop cx */ 0x59,
- /* 0000023E pop si */ 0x5E,
- /* 0000023F pop ds */ 0x1F,
- /* 00000240 pop di */ 0x5F,
- /* 00000241 pop es */ 0x07,
- /* 00000242 jmp word 0x34c */ 0xE9, 0x07, 0x01,
- /* 00000245 push es */ 0x06,
- /* 00000246 push di */ 0x57,
- /* 00000247 push ds */ 0x1E,
- /* 00000248 push si */ 0x56,
- /* 00000249 push cx */ 0x51,
- /* 0000024A and cx,0xbfff */ 0x81, 0xE1, 0xFF, 0xBF,
- /* 0000024E cmp cx,0xf1 */ 0x81, 0xF9, 0xF1, 0x00,
- /* 00000252 jz 0x256 */ 0x74, 0x02,
- /* 00000254 jmp short 0x22b */ 0xEB, 0xD5,
- /* 00000256 push cs */ 0x0E,
- /* 00000257 pop ds */ 0x1F,
- /* 00000258 mov si,0x100 */ 0xBE, 0x00, 0x01,
- /* 0000025B mov cx,0x100 */ 0xB9, 0x00, 0x01,
- /* 0000025E cld */ 0xFC,
- /* 0000025F rep movsb */ 0xF3, 0xA4,
- /* 00000261 pop cx */ 0x59,
- /* 00000262 pop si */ 0x5E,
- /* 00000263 pop ds */ 0x1F,
- /* 00000264 pop di */ 0x5F,
- /* 00000265 pop es */ 0x07,
- /* 00000266 jmp word 0x34c */ 0xE9, 0xE3, 0x00,
- /* 00000269 push dx */ 0x52,
- /* 0000026A push ax */ 0x50,
- /* 0000026B cmp bx,0x40f1 */ 0x81, 0xFB, 0xF1, 0x40,
- /* 0000026F jz 0x273 */ 0x74, 0x02,
- /* 00000271 jmp short 0x22b */ 0xEB, 0xB8,
- /* 00000273 mov dx,0x3c0 */ 0xBA, 0xC0, 0x03,
- /* 00000276 mov al,0x20 */ 0xB0, 0x20,
- /* 00000278 out dx,al */ 0xEE,
- /* 00000279 push dx */ 0x52,
- /* 0000027A push ax */ 0x50,
- /* 0000027B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 0000027E mov ax,0x4 */ 0xB8, 0x04, 0x00,
- /* 00000281 out dx,ax */ 0xEF,
- /* 00000282 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 00000285 mov ax,0x0 */ 0xB8, 0x00, 0x00,
- /* 00000288 out dx,ax */ 0xEF,
- /* 00000289 pop ax */ 0x58,
- /* 0000028A pop dx */ 0x5A,
- /* 0000028B push dx */ 0x52,
- /* 0000028C push ax */ 0x50,
- /* 0000028D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 00000290 mov ax,0x5 */ 0xB8, 0x05, 0x00,
- /* 00000293 out dx,ax */ 0xEF,
- /* 00000294 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 00000297 mov ax,0x0 */ 0xB8, 0x00, 0x00,
- /* 0000029A out dx,ax */ 0xEF,
- /* 0000029B pop ax */ 0x58,
- /* 0000029C pop dx */ 0x5A,
- /* 0000029D push dx */ 0x52,
- /* 0000029E push ax */ 0x50,
- /* 0000029F mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002A2 mov ax,0x8 */ 0xB8, 0x08, 0x00,
- /* 000002A5 out dx,ax */ 0xEF,
- /* 000002A6 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 000002A9 mov ax,0x0 */ 0xB8, 0x00, 0x00,
- /* 000002AC out dx,ax */ 0xEF,
- /* 000002AD pop ax */ 0x58,
- /* 000002AE pop dx */ 0x5A,
- /* 000002AF push dx */ 0x52,
- /* 000002B0 push ax */ 0x50,
- /* 000002B1 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002B4 mov ax,0x9 */ 0xB8, 0x09, 0x00,
- /* 000002B7 out dx,ax */ 0xEF,
- /* 000002B8 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 000002BB mov ax,0x0 */ 0xB8, 0x00, 0x00,
- /* 000002BE out dx,ax */ 0xEF,
- /* 000002BF pop ax */ 0x58,
- /* 000002C0 pop dx */ 0x5A,
- /* 000002C1 push dx */ 0x52,
- /* 000002C2 push ax */ 0x50,
- /* 000002C3 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002C6 mov ax,0x3 */ 0xB8, 0x03, 0x00,
- /* 000002C9 out dx,ax */ 0xEF,
- /* 000002CA mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 000002CD mov ax,0x20 */ 0xB8, 0x20, 0x00,
- /* 000002D0 out dx,ax */ 0xEF,
- /* 000002D1 pop ax */ 0x58,
- /* 000002D2 pop dx */ 0x5A,
- /* 000002D3 push dx */ 0x52,
- /* 000002D4 push ax */ 0x50,
- /* 000002D5 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002D8 mov ax,0x1 */ 0xB8, 0x01, 0x00,
- /* 000002DB out dx,ax */ 0xEF,
- /* 000002DC mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 000002DF mov ax,0x400 */ 0xB8, 0x00, 0x04,
- /* 000002E2 out dx,ax */ 0xEF,
- /* 000002E3 pop ax */ 0x58,
- /* 000002E4 pop dx */ 0x5A,
- /* 000002E5 push dx */ 0x52,
- /* 000002E6 push ax */ 0x50,
- /* 000002E7 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002EA mov ax,0x6 */ 0xB8, 0x06, 0x00,
- /* 000002ED out dx,ax */ 0xEF,
- /* 000002EE mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 000002F1 mov ax,0x400 */ 0xB8, 0x00, 0x04,
- /* 000002F4 out dx,ax */ 0xEF,
- /* 000002F5 pop ax */ 0x58,
- /* 000002F6 pop dx */ 0x5A,
- /* 000002F7 push dx */ 0x52,
- /* 000002F8 push ax */ 0x50,
- /* 000002F9 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 000002FC mov ax,0x2 */ 0xB8, 0x02, 0x00,
- /* 000002FF out dx,ax */ 0xEF,
- /* 00000300 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 00000303 mov ax,0x300 */ 0xB8, 0x00, 0x03,
- /* 00000306 out dx,ax */ 0xEF,
- /* 00000307 pop ax */ 0x58,
- /* 00000308 pop dx */ 0x5A,
- /* 00000309 push dx */ 0x52,
- /* 0000030A push ax */ 0x50,
- /* 0000030B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 0000030E mov ax,0x7 */ 0xB8, 0x07, 0x00,
- /* 00000311 out dx,ax */ 0xEF,
- /* 00000312 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 00000315 mov ax,0x300 */ 0xB8, 0x00, 0x03,
- /* 00000318 out dx,ax */ 0xEF,
- /* 00000319 pop ax */ 0x58,
- /* 0000031A pop dx */ 0x5A,
- /* 0000031B push dx */ 0x52,
- /* 0000031C push ax */ 0x50,
- /* 0000031D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
- /* 00000320 mov ax,0x4 */ 0xB8, 0x04, 0x00,
- /* 00000323 out dx,ax */ 0xEF,
- /* 00000324 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
- /* 00000327 mov ax,0x41 */ 0xB8, 0x41, 0x00,
- /* 0000032A out dx,ax */ 0xEF,
- /* 0000032B pop ax */ 0x58,
- /* 0000032C pop dx */ 0x5A,
- /* 0000032D pop ax */ 0x58,
- /* 0000032E pop dx */ 0x5A,
- /* 0000032F jmp short 0x34c */ 0xEB, 0x1B,
- /* 00000331 mov bx,0x40f1 */ 0xBB, 0xF1, 0x40,
- /* 00000334 jmp short 0x34c */ 0xEB, 0x16,
- /* 00000336 jmp short 0x350 */ 0xEB, 0x18,
- /* 00000338 jmp short 0x350 */ 0xEB, 0x16,
- /* 0000033A cmp al,0x3 */ 0x3C, 0x03,
- /* 0000033C jz 0x345 */ 0x74, 0x07,
- /* 0000033E cmp al,0x12 */ 0x3C, 0x12,
- /* 00000340 jz 0x349 */ 0x74, 0x07,
- /* 00000342 jmp word 0x22b */ 0xE9, 0xE6, 0xFE,
- /* 00000345 mov al,0x30 */ 0xB0, 0x30,
- /* 00000347 jmp short 0x34b */ 0xEB, 0x02,
- /* 00000349 mov al,0x20 */ 0xB0, 0x20,
- /* 0000034B iretw */ 0xCF,
- /* 0000034C mov ax,0x4f */ 0xB8, 0x4F, 0x00,
- /* 0000034F iretw */ 0xCF,
- /* 00000350 mov ax,0x14f */ 0xB8, 0x4F, 0x01,
- /* 00000353 iretw */ 0xCF,
-};
-#endif
diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
index c28171d13719..6feca8380224 100644
--- a/OvmfPkg/QemuVideoDxe/Driver.c
+++ b/OvmfPkg/QemuVideoDxe/Driver.c
@@ -466,15 +466,6 @@ QemuVideoControllerDriverStart (
goto UninstallGop;
}
- #if defined MDE_CPU_IA32 || defined MDE_CPU_X64
- if ((Private->Variant == QEMU_VIDEO_BOCHS_MMIO) ||
- (Private->Variant == QEMU_VIDEO_BOCHS))
- {
- InstallVbeShim (Card->Name, Private->GraphicsOutput.Mode->FrameBufferBase);
- }
-
- #endif
-
gBS->RestoreTPL (OldTpl);
return EFI_SUCCESS;
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.c b/OvmfPkg/QemuVideoDxe/VbeShim.c
deleted file mode 100644
index 8f151b96f9a5..000000000000
--- a/OvmfPkg/QemuVideoDxe/VbeShim.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/** @file
- Install a fake VGABIOS service handler (real mode Int10h) for the buggy
- Windows 2008 R2 SP1 UEFI guest.
-
- The handler is never meant to be directly executed by a VCPU; it's there for
- the internal real mode emulator of Windows 2008 R2 SP1.
-
- The code is based on Ralf Brown's Interrupt List:
- <http://www.cs.cmu.edu/~ralf/files.html>
- <http://www.ctyme.com/rbrown.htm>
-
- Copyright (C) 2014, Red Hat, Inc.
- Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
-
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#include <IndustryStandard/LegacyVgaBios.h>
-#include <Library/DebugLib.h>
-#include <Library/PciLib.h>
-#include <Library/PrintLib.h>
-#include <OvmfPlatforms.h>
-
-#include "Qemu.h"
-#include "VbeShim.h"
-
-#pragma pack (1)
-typedef struct {
- UINT16 Offset;
- UINT16 Segment;
-} IVT_ENTRY;
-#pragma pack ()
-
-//
-// This string is displayed by Windows 2008 R2 SP1 in the Screen Resolution,
-// Advanced Settings dialog. It should be short.
-//
-STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)";
-
-/**
- Install the VBE Info and VBE Mode Info structures, and the VBE service
- handler routine in the C segment. Point the real-mode Int10h interrupt vector
- to the handler. The only advertised mode is 1024x768x32.
-
- @param[in] CardName Name of the video card to be exposed in the
- Product Name field of the VBE Info structure. The
- parameter must originate from a
- QEMU_VIDEO_CARD.Name field.
- @param[in] FrameBufferBase Guest-physical base address of the video card's
- frame buffer.
-**/
-VOID
-InstallVbeShim (
- IN CONST CHAR16 *CardName,
- IN EFI_PHYSICAL_ADDRESS FrameBufferBase
- )
-{
- EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF;
- UINTN Segment0Pages;
- IVT_ENTRY *Int0x10;
- EFI_STATUS Segment0AllocationStatus;
- UINT16 HostBridgeDevId;
- UINTN Pam1Address;
- UINT8 Pam1;
- UINTN SegmentCPages;
- VBE_INFO *VbeInfoFull;
- VBE_INFO_BASE *VbeInfo;
- UINT8 *Ptr;
- UINTN Printed;
- VBE_MODE_INFO *VbeModeInfo;
-
- if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & (BIT0|BIT7)) == BIT0) {
- DEBUG ((
- DEBUG_WARN,
- "%a: page 0 protected, not installing VBE shim\n",
- __func__
- ));
- DEBUG ((
- DEBUG_WARN,
- "%a: page 0 protection prevents Windows 7 from booting anyway\n",
- __func__
- ));
- return;
- }
-
- Segment0 = 0x00000;
- SegmentC = 0xC0000;
- SegmentF = 0xF0000;
-
- //
- // Attempt to cover the real mode IVT with an allocation. This is a UEFI
- // driver, hence the arch protocols have been installed previously. Among
- // those, the CPU arch protocol has configured the IDT, so we can overwrite
- // the IVT used in real mode.
- //
- // The allocation request may fail, eg. if LegacyBiosDxe has already run.
- //
- Segment0Pages = 1;
- Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY));
- Segment0AllocationStatus = gBS->AllocatePages (
- AllocateAddress,
- EfiBootServicesCode,
- Segment0Pages,
- &Segment0
- );
-
- if (EFI_ERROR (Segment0AllocationStatus)) {
- EFI_PHYSICAL_ADDRESS Handler;
-
- //
- // Check if a video BIOS handler has been installed previously -- we
- // shouldn't override a real video BIOS with our shim, nor our own shim if
- // it's already present.
- //
- Handler = (Int0x10->Segment << 4) + Int0x10->Offset;
- if ((Handler >= SegmentC) && (Handler < SegmentF)) {
- DEBUG ((
- DEBUG_INFO,
- "%a: Video BIOS handler found at %04x:%04x\n",
- __func__,
- Int0x10->Segment,
- Int0x10->Offset
- ));
- return;
- }
-
- //
- // Otherwise we'll overwrite the Int10h vector, even though we may not own
- // the page at zero.
- //
- DEBUG ((
- DEBUG_INFO,
- "%a: failed to allocate page at zero: %r\n",
- __func__,
- Segment0AllocationStatus
- ));
- } else {
- //
- // We managed to allocate the page at zero. SVN r14218 guarantees that it
- // is NUL-filled.
- //
- ASSERT (Int0x10->Segment == 0x0000);
- ASSERT (Int0x10->Offset == 0x0000);
- }
-
- //
- // Put the shim in place first.
- //
- // Start by determining the address of the PAM1 register.
- //
- HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
- switch (HostBridgeDevId) {
- case INTEL_82441_DEVICE_ID:
- Pam1Address = PMC_REGISTER_PIIX4 (PIIX4_PAM1);
- break;
- case INTEL_Q35_MCH_DEVICE_ID:
- Pam1Address = DRAMC_REGISTER_Q35 (MCH_PAM1);
- break;
- case MICROVM_PSEUDO_DEVICE_ID:
- return;
- default:
- DEBUG ((
- DEBUG_ERROR,
- "%a: unknown host bridge device ID: 0x%04x\n",
- __func__,
- HostBridgeDevId
- ));
- ASSERT (FALSE);
-
- if (!EFI_ERROR (Segment0AllocationStatus)) {
- gBS->FreePages (Segment0, Segment0Pages);
- }
-
- return;
- }
-
- //
- // low nibble covers 0xC0000 to 0xC3FFF
- // high nibble covers 0xC4000 to 0xC7FFF
- // bit1 in each nibble is Write Enable
- // bit0 in each nibble is Read Enable
- //
- Pam1 = PciRead8 (Pam1Address);
- PciWrite8 (Pam1Address, Pam1 | (BIT1 | BIT0));
-
- //
- // We never added memory space during PEI or DXE for the C segment, so we
- // don't need to (and can't) allocate from there. Also, guest operating
- // systems will see a hole in the UEFI memory map there.
- //
- SegmentCPages = 4;
-
- ASSERT (sizeof mVbeShim <= EFI_PAGES_TO_SIZE (SegmentCPages));
- CopyMem ((VOID *)(UINTN)SegmentC, mVbeShim, sizeof mVbeShim);
-
- //
- // Fill in the VBE INFO structure.
- //
- VbeInfoFull = (VBE_INFO *)(UINTN)SegmentC;
- VbeInfo = &VbeInfoFull->Base;
- Ptr = VbeInfoFull->Buffer;
-
- CopyMem (VbeInfo->Signature, "VESA", 4);
- VbeInfo->VesaVersion = 0x0300;
-
- VbeInfo->OemNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
- CopyMem (Ptr, "QEMU", 5);
- Ptr += 5;
-
- VbeInfo->Capabilities = BIT0; // DAC can be switched into 8-bit mode
-
- VbeInfo->ModeListAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
- *(UINT16 *)Ptr = 0x00f1; // mode number
- Ptr += 2;
- *(UINT16 *)Ptr = 0xFFFF; // mode list terminator
- Ptr += 2;
-
- VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536);
- VbeInfo->OemSoftwareVersion = 0x0000;
-
- VbeInfo->VendorNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
- CopyMem (Ptr, "OVMF", 5);
- Ptr += 5;
-
- VbeInfo->ProductNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
- Printed = AsciiSPrint (
- (CHAR8 *)Ptr,
- sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer),
- "%s",
- CardName
- );
- Ptr += Printed + 1;
-
- VbeInfo->ProductRevAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
- CopyMem (Ptr, mProductRevision, sizeof mProductRevision);
- Ptr += sizeof mProductRevision;
-
- ASSERT (sizeof VbeInfoFull->Buffer >= Ptr - VbeInfoFull->Buffer);
- ZeroMem (Ptr, sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer));
-
- //
- // Fil in the VBE MODE INFO structure.
- //
- VbeModeInfo = (VBE_MODE_INFO *)(VbeInfoFull + 1);
-
- //
- // bit0: mode supported by present hardware configuration
- // bit1: optional information available (must be =1 for VBE v1.2+)
- // bit3: set if color, clear if monochrome
- // bit4: set if graphics mode, clear if text mode
- // bit5: mode is not VGA-compatible
- // bit7: linear framebuffer mode supported
- //
- VbeModeInfo->ModeAttr = BIT7 | BIT5 | BIT4 | BIT3 | BIT1 | BIT0;
-
- //
- // bit0: exists
- // bit1: bit1: readable
- // bit2: writeable
- //
- VbeModeInfo->WindowAAttr = BIT2 | BIT1 | BIT0;
-
- VbeModeInfo->WindowBAttr = 0x00;
- VbeModeInfo->WindowGranularityKB = 0x0040;
- VbeModeInfo->WindowSizeKB = 0x0040;
- VbeModeInfo->WindowAStartSegment = 0xA000;
- VbeModeInfo->WindowBStartSegment = 0x0000;
- VbeModeInfo->WindowPositioningAddress = 0x0000;
- VbeModeInfo->BytesPerScanLine = 1024 * 4;
-
- VbeModeInfo->Width = 1024;
- VbeModeInfo->Height = 768;
- VbeModeInfo->CharCellWidth = 8;
- VbeModeInfo->CharCellHeight = 16;
- VbeModeInfo->NumPlanes = 1;
- VbeModeInfo->BitsPerPixel = 32;
- VbeModeInfo->NumBanks = 1;
- VbeModeInfo->MemoryModel = 6; // direct color
- VbeModeInfo->BankSizeKB = 0;
- VbeModeInfo->NumImagePagesLessOne = 0;
- VbeModeInfo->Vbe3 = 0x01;
-
- VbeModeInfo->RedMaskSize = 8;
- VbeModeInfo->RedMaskPos = 16;
- VbeModeInfo->GreenMaskSize = 8;
- VbeModeInfo->GreenMaskPos = 8;
- VbeModeInfo->BlueMaskSize = 8;
- VbeModeInfo->BlueMaskPos = 0;
- VbeModeInfo->ReservedMaskSize = 8;
- VbeModeInfo->ReservedMaskPos = 24;
-
- //
- // bit1: Bytes in reserved field may be used by application
- //
- VbeModeInfo->DirectColorModeInfo = BIT1;
-
- VbeModeInfo->LfbAddress = (UINT32)FrameBufferBase;
- VbeModeInfo->OffScreenAddress = 0;
- VbeModeInfo->OffScreenSizeKB = 0;
-
- VbeModeInfo->BytesPerScanLineLinear = 1024 * 4;
- VbeModeInfo->NumImagesLessOneBanked = 0;
- VbeModeInfo->NumImagesLessOneLinear = 0;
- VbeModeInfo->RedMaskSizeLinear = 8;
- VbeModeInfo->RedMaskPosLinear = 16;
- VbeModeInfo->GreenMaskSizeLinear = 8;
- VbeModeInfo->GreenMaskPosLinear = 8;
- VbeModeInfo->BlueMaskSizeLinear = 8;
- VbeModeInfo->BlueMaskPosLinear = 0;
- VbeModeInfo->ReservedMaskSizeLinear = 8;
- VbeModeInfo->ReservedMaskPosLinear = 24;
- VbeModeInfo->MaxPixelClockHz = 0;
-
- ZeroMem (VbeModeInfo->Reserved, sizeof VbeModeInfo->Reserved);
-
- //
- // Clear Write Enable (bit1), keep Read Enable (bit0) set
- //
- PciWrite8 (Pam1Address, (Pam1 & ~BIT1) | BIT0);
-
- //
- // Second, point the Int10h vector at the shim.
- //
- Int0x10->Segment = (UINT16)((UINT32)SegmentC >> 4);
- Int0x10->Offset = (UINT16)((UINTN)(VbeModeInfo + 1) - SegmentC);
-
- DEBUG ((DEBUG_INFO, "%a: VBE shim installed\n", __func__));
-}
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.asm b/OvmfPkg/QemuVideoDxe/VbeShim.asm
deleted file mode 100644
index 1d284b264124..000000000000
--- a/OvmfPkg/QemuVideoDxe/VbeShim.asm
+++ /dev/null
@@ -1,281 +0,0 @@
-;------------------------------------------------------------------------------
-; @file
-; A minimal Int10h stub that allows the Windows 2008 R2 SP1 UEFI guest's buggy,
-; default VGA driver to switch to 1024x768x32, on the stdvga and QXL video
-; cards of QEMU.
-;
-; Copyright (C) 2014, Red Hat, Inc.
-; Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
-;
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-;------------------------------------------------------------------------------
-
-; enable this macro for debug messages
-;%define DEBUG
-
-%macro DebugLog 1
-%ifdef DEBUG
- push si
- mov si, %1
- call PrintStringSi
- pop si
-%endif
-%endmacro
-
-
-BITS 16
-ORG 0
-
-VbeInfo:
-TIMES 256 nop
-
-VbeModeInfo:
-TIMES 256 nop
-
-
-Handler:
- cmp ax, 0x4f00
- je GetInfo
- cmp ax, 0x4f01
- je GetModeInfo
- cmp ax, 0x4f02
- je SetMode
- cmp ax, 0x4f03
- je GetMode
- cmp ax, 0x4f10
- je GetPmCapabilities
- cmp ax, 0x4f15
- je ReadEdid
- cmp ah, 0x00
- je SetModeLegacy
- DebugLog StrUnknownFunction
-Hang:
- jmp Hang
-
-
-GetInfo:
- push es
- push di
- push ds
- push si
- push cx
-
- DebugLog StrEnterGetInfo
-
- ; target (es:di) set on input
- push cs
- pop ds
- mov si, VbeInfo
- ; source (ds:si) set now
-
- mov cx, 256
- cld
- rep movsb
-
- pop cx
- pop si
- pop ds
- pop di
- pop es
- jmp Success
-
-
-GetModeInfo:
- push es
- push di
- push ds
- push si
- push cx
-
- DebugLog StrEnterGetModeInfo
-
- and cx, ~0x4000 ; clear potentially set LFB bit in mode number
- cmp cx, 0x00f1
- je KnownMode1
- DebugLog StrUnknownMode
- jmp Hang
-KnownMode1:
- ; target (es:di) set on input
- push cs
- pop ds
- mov si, VbeModeInfo
- ; source (ds:si) set now
-
- mov cx, 256
- cld
- rep movsb
-
- pop cx
- pop si
- pop ds
- pop di
- pop es
- jmp Success
-
-
-%define ATT_ADDRESS_REGISTER 0x03c0
-%define VBE_DISPI_IOPORT_INDEX 0x01ce
-%define VBE_DISPI_IOPORT_DATA 0x01d0
-
-%define VBE_DISPI_INDEX_XRES 0x1
-%define VBE_DISPI_INDEX_YRES 0x2
-%define VBE_DISPI_INDEX_BPP 0x3
-%define VBE_DISPI_INDEX_ENABLE 0x4
-%define VBE_DISPI_INDEX_BANK 0x5
-%define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
-%define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
-%define VBE_DISPI_INDEX_X_OFFSET 0x8
-%define VBE_DISPI_INDEX_Y_OFFSET 0x9
-
-%define VBE_DISPI_ENABLED 0x01
-%define VBE_DISPI_LFB_ENABLED 0x40
-
-%macro BochsWrite 2
- push dx
- push ax
-
- mov dx, VBE_DISPI_IOPORT_INDEX
- mov ax, %1
- out dx, ax
-
- mov dx, VBE_DISPI_IOPORT_DATA
- mov ax, %2
- out dx, ax
-
- pop ax
- pop dx
-%endmacro
-
-SetMode:
- push dx
- push ax
-
- DebugLog StrEnterSetMode
-
- cmp bx, 0x40f1
- je KnownMode2
- DebugLog StrUnknownMode
- jmp Hang
-KnownMode2:
-
- ; unblank
- mov dx, ATT_ADDRESS_REGISTER
- mov al, 0x20
- out dx, al
-
- BochsWrite VBE_DISPI_INDEX_ENABLE, 0
- BochsWrite VBE_DISPI_INDEX_BANK, 0
- BochsWrite VBE_DISPI_INDEX_X_OFFSET, 0
- BochsWrite VBE_DISPI_INDEX_Y_OFFSET, 0
- BochsWrite VBE_DISPI_INDEX_BPP, 32
- BochsWrite VBE_DISPI_INDEX_XRES, 1024
- BochsWrite VBE_DISPI_INDEX_VIRT_WIDTH, 1024
- BochsWrite VBE_DISPI_INDEX_YRES, 768
- BochsWrite VBE_DISPI_INDEX_VIRT_HEIGHT, 768
- BochsWrite VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED
-
- pop ax
- pop dx
- jmp Success
-
-
-GetMode:
- DebugLog StrEnterGetMode
- mov bx, 0x40f1
- jmp Success
-
-
-GetPmCapabilities:
- DebugLog StrGetPmCapabilities
- jmp Unsupported
-
-
-ReadEdid:
- DebugLog StrReadEdid
- jmp Unsupported
-
-
-SetModeLegacy:
- DebugLog StrEnterSetModeLegacy
-
- cmp al, 0x03
- je KnownMode3
- cmp al, 0x12
- je KnownMode4
- DebugLog StrUnknownMode
- jmp Hang
-KnownMode3:
- mov al, 0x30
- jmp SetModeLegacyDone
-KnownMode4:
- mov al, 0x20
-SetModeLegacyDone:
- DebugLog StrExitSuccess
- iret
-
-
-Success:
- DebugLog StrExitSuccess
- mov ax, 0x004f
- iret
-
-
-Unsupported:
- DebugLog StrExitUnsupported
- mov ax, 0x014f
- iret
-
-
-%ifdef DEBUG
-PrintStringSi:
- pusha
- push ds ; save original
- push cs
- pop ds
- mov dx, 0x0402
-PrintStringSiLoop:
- lodsb
- cmp al, 0
- je PrintStringSiDone
- out dx, al
- jmp PrintStringSiLoop
-PrintStringSiDone:
- pop ds ; restore original
- popa
- ret
-
-
-StrExitSuccess:
- db 'Exit', 0x0a, 0
-
-StrExitUnsupported:
- db 'Unsupported', 0x0a, 0
-
-StrUnknownFunction:
- db 'Unknown Function', 0x0a, 0
-
-StrEnterGetInfo:
- db 'GetInfo', 0x0a, 0
-
-StrEnterGetModeInfo:
- db 'GetModeInfo', 0x0a, 0
-
-StrEnterGetMode:
- db 'GetMode', 0x0a, 0
-
-StrEnterSetMode:
- db 'SetMode', 0x0a, 0
-
-StrEnterSetModeLegacy:
- db 'SetModeLegacy', 0x0a, 0
-
-StrUnknownMode:
- db 'Unknown Mode', 0x0a, 0
-
-StrGetPmCapabilities:
- db 'GetPmCapabilities', 0x0a, 0
-
-StrReadEdid:
- db 'ReadEdid', 0x0a, 0
-%endif
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.sh b/OvmfPkg/QemuVideoDxe/VbeShim.sh
deleted file mode 100755
index 7a0095a813cf..000000000000
--- a/OvmfPkg/QemuVideoDxe/VbeShim.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-###
-# @file
-# Shell script to assemble and dump the fake Int10h handler from NASM source to
-# a C array.
-#
-# Copyright (C) 2014, Red Hat, Inc.
-# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-###
-
-set -e -u
-
-STEM=$(dirname -- "$0")/$(basename -- "$0" .sh)
-
-#
-# Install exit handler -- remove temporary files.
-#
-exit_handler()
-{
- rm -f -- "$STEM".bin "$STEM".disasm "$STEM".offsets "$STEM".insns \
- "$STEM".bytes
-}
-trap exit_handler EXIT
-
-#
-# Assemble the source file.
-# (nasm doesn't recognize the "--" end-of-options delimiter;
-# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
-#
-nasm -o "$STEM".bin "$STEM".asm
-
-#
-# Disassemble it, in order to get a binary dump associated with the source.
-# (ndisasm doesn't recognize the "--" end-of-options delimiter;
-# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
-#
-ndisasm "$STEM".bin >"$STEM".disasm
-
-#
-# Create three files, each with one column of the disassembly.
-#
-# The first column contains the offsets, and it starts the comment.
-#
-cut -c 1-8 -- "$STEM".disasm \
-| sed -e 's,^, /* ,' >"$STEM".offsets
-
-#
-# The second column contains the assembly-language instructions, and it closes
-# the comment. We first pad it to 30 characters.
-#
-cut -c 29- -- "$STEM".disasm \
-| sed -e 's,$, ,' \
- -e 's,^\(.\{30\}\).*$,\1 */,' >"$STEM".insns
-
-#
-# The third column contains the bytes corresponding to the instruction,
-# represented as C integer constants. First strip trailing whitespace from the
-# middle column of the input disassembly, then process pairs of nibbles.
-#
-cut -c 11-28 -- "$STEM".disasm \
-| sed -e 's, \+$,,' -e 's/\(..\)/ 0x\1,/g' >"$STEM".bytes
-
-#
-# Write the output file, recombining the columns. The output should have CRLF
-# line endings.
-#
-{
- printf '//\n'
- printf '// THIS FILE WAS GENERATED BY "%s". DO NOT EDIT.\n' \
- "$(basename -- "$0")"
- printf '//\n'
- printf '#ifndef _VBE_SHIM_H_\n'
- printf '#define _VBE_SHIM_H_\n'
- printf 'STATIC CONST UINT8 mVbeShim[] = {\n'
- paste -d ' ' -- "$STEM".offsets "$STEM".insns "$STEM".bytes
- printf '};\n'
- printf '#endif\n'
-} \
-| unix2dos >"$STEM".h
--
2.43.0
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115377): https://edk2.groups.io/g/devel/message/115377
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 8:59 [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim Gerd Hoffmann
@ 2024-02-13 10:41 ` Ard Biesheuvel
2024-02-13 10:44 ` Laszlo Ersek
1 sibling, 0 replies; 13+ messages in thread
From: Ard Biesheuvel @ 2024-02-13 10:41 UTC (permalink / raw)
To: devel, kraxel; +Cc: Oliver Steffen, Laszlo Ersek, Jiewen Yao
On Tue, 13 Feb 2024 at 09:59, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Removing CSM support broke VbeShim.
>
> I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> Didn't investigate in detail, but apparently the real mode address space
> is not considered being special any more, which invalidates some
> assumptions of the vbeshim code.
>
> The guest os which depends on vbeshim for video support is -- according
> to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> more than four years ago.
>
> Time to retire VbeShim. RIP.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
> ---
> OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 4 -
> OvmfPkg/QemuVideoDxe/VbeShim.h | 701 --------------------------
> OvmfPkg/QemuVideoDxe/Driver.c | 9 -
> OvmfPkg/QemuVideoDxe/VbeShim.c | 328 ------------
> OvmfPkg/QemuVideoDxe/VbeShim.asm | 281 -----------
> OvmfPkg/QemuVideoDxe/VbeShim.sh | 82 ---
> 6 files changed, 1405 deletions(-)
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.h
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.c
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.asm
> delete mode 100755 OvmfPkg/QemuVideoDxe/VbeShim.sh
>
> diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> index 43a6e07faa88..6b7baa8525a7 100644
> --- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> +++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> @@ -33,10 +33,6 @@ [Sources.common]
> Initialize.c
> Qemu.h
>
> -[Sources.Ia32, Sources.X64]
> - VbeShim.c
> - VbeShim.h
> -
> [Packages]
> MdePkg/MdePkg.dec
> MdeModulePkg/MdeModulePkg.dec
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h
> deleted file mode 100644
> index cc9b6e14cdcd..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.h
> +++ /dev/null
> @@ -1,701 +0,0 @@
> -//
> -// THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT.
> -//
> -#ifndef _VBE_SHIM_H_
> -#define _VBE_SHIM_H_
> -STATIC CONST UINT8 mVbeShim[] = {
> - /* 00000000 nop */ 0x90,
> - /* 00000001 nop */ 0x90,
> - /* 00000002 nop */ 0x90,
> - /* 00000003 nop */ 0x90,
> - /* 00000004 nop */ 0x90,
> - /* 00000005 nop */ 0x90,
> - /* 00000006 nop */ 0x90,
> - /* 00000007 nop */ 0x90,
> - /* 00000008 nop */ 0x90,
> - /* 00000009 nop */ 0x90,
> - /* 0000000A nop */ 0x90,
> - /* 0000000B nop */ 0x90,
> - /* 0000000C nop */ 0x90,
> - /* 0000000D nop */ 0x90,
> - /* 0000000E nop */ 0x90,
> - /* 0000000F nop */ 0x90,
> - /* 00000010 nop */ 0x90,
> - /* 00000011 nop */ 0x90,
> - /* 00000012 nop */ 0x90,
> - /* 00000013 nop */ 0x90,
> - /* 00000014 nop */ 0x90,
> - /* 00000015 nop */ 0x90,
> - /* 00000016 nop */ 0x90,
> - /* 00000017 nop */ 0x90,
> - /* 00000018 nop */ 0x90,
> - /* 00000019 nop */ 0x90,
> - /* 0000001A nop */ 0x90,
> - /* 0000001B nop */ 0x90,
> - /* 0000001C nop */ 0x90,
> - /* 0000001D nop */ 0x90,
> - /* 0000001E nop */ 0x90,
> - /* 0000001F nop */ 0x90,
> - /* 00000020 nop */ 0x90,
> - /* 00000021 nop */ 0x90,
> - /* 00000022 nop */ 0x90,
> - /* 00000023 nop */ 0x90,
> - /* 00000024 nop */ 0x90,
> - /* 00000025 nop */ 0x90,
> - /* 00000026 nop */ 0x90,
> - /* 00000027 nop */ 0x90,
> - /* 00000028 nop */ 0x90,
> - /* 00000029 nop */ 0x90,
> - /* 0000002A nop */ 0x90,
> - /* 0000002B nop */ 0x90,
> - /* 0000002C nop */ 0x90,
> - /* 0000002D nop */ 0x90,
> - /* 0000002E nop */ 0x90,
> - /* 0000002F nop */ 0x90,
> - /* 00000030 nop */ 0x90,
> - /* 00000031 nop */ 0x90,
> - /* 00000032 nop */ 0x90,
> - /* 00000033 nop */ 0x90,
> - /* 00000034 nop */ 0x90,
> - /* 00000035 nop */ 0x90,
> - /* 00000036 nop */ 0x90,
> - /* 00000037 nop */ 0x90,
> - /* 00000038 nop */ 0x90,
> - /* 00000039 nop */ 0x90,
> - /* 0000003A nop */ 0x90,
> - /* 0000003B nop */ 0x90,
> - /* 0000003C nop */ 0x90,
> - /* 0000003D nop */ 0x90,
> - /* 0000003E nop */ 0x90,
> - /* 0000003F nop */ 0x90,
> - /* 00000040 nop */ 0x90,
> - /* 00000041 nop */ 0x90,
> - /* 00000042 nop */ 0x90,
> - /* 00000043 nop */ 0x90,
> - /* 00000044 nop */ 0x90,
> - /* 00000045 nop */ 0x90,
> - /* 00000046 nop */ 0x90,
> - /* 00000047 nop */ 0x90,
> - /* 00000048 nop */ 0x90,
> - /* 00000049 nop */ 0x90,
> - /* 0000004A nop */ 0x90,
> - /* 0000004B nop */ 0x90,
> - /* 0000004C nop */ 0x90,
> - /* 0000004D nop */ 0x90,
> - /* 0000004E nop */ 0x90,
> - /* 0000004F nop */ 0x90,
> - /* 00000050 nop */ 0x90,
> - /* 00000051 nop */ 0x90,
> - /* 00000052 nop */ 0x90,
> - /* 00000053 nop */ 0x90,
> - /* 00000054 nop */ 0x90,
> - /* 00000055 nop */ 0x90,
> - /* 00000056 nop */ 0x90,
> - /* 00000057 nop */ 0x90,
> - /* 00000058 nop */ 0x90,
> - /* 00000059 nop */ 0x90,
> - /* 0000005A nop */ 0x90,
> - /* 0000005B nop */ 0x90,
> - /* 0000005C nop */ 0x90,
> - /* 0000005D nop */ 0x90,
> - /* 0000005E nop */ 0x90,
> - /* 0000005F nop */ 0x90,
> - /* 00000060 nop */ 0x90,
> - /* 00000061 nop */ 0x90,
> - /* 00000062 nop */ 0x90,
> - /* 00000063 nop */ 0x90,
> - /* 00000064 nop */ 0x90,
> - /* 00000065 nop */ 0x90,
> - /* 00000066 nop */ 0x90,
> - /* 00000067 nop */ 0x90,
> - /* 00000068 nop */ 0x90,
> - /* 00000069 nop */ 0x90,
> - /* 0000006A nop */ 0x90,
> - /* 0000006B nop */ 0x90,
> - /* 0000006C nop */ 0x90,
> - /* 0000006D nop */ 0x90,
> - /* 0000006E nop */ 0x90,
> - /* 0000006F nop */ 0x90,
> - /* 00000070 nop */ 0x90,
> - /* 00000071 nop */ 0x90,
> - /* 00000072 nop */ 0x90,
> - /* 00000073 nop */ 0x90,
> - /* 00000074 nop */ 0x90,
> - /* 00000075 nop */ 0x90,
> - /* 00000076 nop */ 0x90,
> - /* 00000077 nop */ 0x90,
> - /* 00000078 nop */ 0x90,
> - /* 00000079 nop */ 0x90,
> - /* 0000007A nop */ 0x90,
> - /* 0000007B nop */ 0x90,
> - /* 0000007C nop */ 0x90,
> - /* 0000007D nop */ 0x90,
> - /* 0000007E nop */ 0x90,
> - /* 0000007F nop */ 0x90,
> - /* 00000080 nop */ 0x90,
> - /* 00000081 nop */ 0x90,
> - /* 00000082 nop */ 0x90,
> - /* 00000083 nop */ 0x90,
> - /* 00000084 nop */ 0x90,
> - /* 00000085 nop */ 0x90,
> - /* 00000086 nop */ 0x90,
> - /* 00000087 nop */ 0x90,
> - /* 00000088 nop */ 0x90,
> - /* 00000089 nop */ 0x90,
> - /* 0000008A nop */ 0x90,
> - /* 0000008B nop */ 0x90,
> - /* 0000008C nop */ 0x90,
> - /* 0000008D nop */ 0x90,
> - /* 0000008E nop */ 0x90,
> - /* 0000008F nop */ 0x90,
> - /* 00000090 nop */ 0x90,
> - /* 00000091 nop */ 0x90,
> - /* 00000092 nop */ 0x90,
> - /* 00000093 nop */ 0x90,
> - /* 00000094 nop */ 0x90,
> - /* 00000095 nop */ 0x90,
> - /* 00000096 nop */ 0x90,
> - /* 00000097 nop */ 0x90,
> - /* 00000098 nop */ 0x90,
> - /* 00000099 nop */ 0x90,
> - /* 0000009A nop */ 0x90,
> - /* 0000009B nop */ 0x90,
> - /* 0000009C nop */ 0x90,
> - /* 0000009D nop */ 0x90,
> - /* 0000009E nop */ 0x90,
> - /* 0000009F nop */ 0x90,
> - /* 000000A0 nop */ 0x90,
> - /* 000000A1 nop */ 0x90,
> - /* 000000A2 nop */ 0x90,
> - /* 000000A3 nop */ 0x90,
> - /* 000000A4 nop */ 0x90,
> - /* 000000A5 nop */ 0x90,
> - /* 000000A6 nop */ 0x90,
> - /* 000000A7 nop */ 0x90,
> - /* 000000A8 nop */ 0x90,
> - /* 000000A9 nop */ 0x90,
> - /* 000000AA nop */ 0x90,
> - /* 000000AB nop */ 0x90,
> - /* 000000AC nop */ 0x90,
> - /* 000000AD nop */ 0x90,
> - /* 000000AE nop */ 0x90,
> - /* 000000AF nop */ 0x90,
> - /* 000000B0 nop */ 0x90,
> - /* 000000B1 nop */ 0x90,
> - /* 000000B2 nop */ 0x90,
> - /* 000000B3 nop */ 0x90,
> - /* 000000B4 nop */ 0x90,
> - /* 000000B5 nop */ 0x90,
> - /* 000000B6 nop */ 0x90,
> - /* 000000B7 nop */ 0x90,
> - /* 000000B8 nop */ 0x90,
> - /* 000000B9 nop */ 0x90,
> - /* 000000BA nop */ 0x90,
> - /* 000000BB nop */ 0x90,
> - /* 000000BC nop */ 0x90,
> - /* 000000BD nop */ 0x90,
> - /* 000000BE nop */ 0x90,
> - /* 000000BF nop */ 0x90,
> - /* 000000C0 nop */ 0x90,
> - /* 000000C1 nop */ 0x90,
> - /* 000000C2 nop */ 0x90,
> - /* 000000C3 nop */ 0x90,
> - /* 000000C4 nop */ 0x90,
> - /* 000000C5 nop */ 0x90,
> - /* 000000C6 nop */ 0x90,
> - /* 000000C7 nop */ 0x90,
> - /* 000000C8 nop */ 0x90,
> - /* 000000C9 nop */ 0x90,
> - /* 000000CA nop */ 0x90,
> - /* 000000CB nop */ 0x90,
> - /* 000000CC nop */ 0x90,
> - /* 000000CD nop */ 0x90,
> - /* 000000CE nop */ 0x90,
> - /* 000000CF nop */ 0x90,
> - /* 000000D0 nop */ 0x90,
> - /* 000000D1 nop */ 0x90,
> - /* 000000D2 nop */ 0x90,
> - /* 000000D3 nop */ 0x90,
> - /* 000000D4 nop */ 0x90,
> - /* 000000D5 nop */ 0x90,
> - /* 000000D6 nop */ 0x90,
> - /* 000000D7 nop */ 0x90,
> - /* 000000D8 nop */ 0x90,
> - /* 000000D9 nop */ 0x90,
> - /* 000000DA nop */ 0x90,
> - /* 000000DB nop */ 0x90,
> - /* 000000DC nop */ 0x90,
> - /* 000000DD nop */ 0x90,
> - /* 000000DE nop */ 0x90,
> - /* 000000DF nop */ 0x90,
> - /* 000000E0 nop */ 0x90,
> - /* 000000E1 nop */ 0x90,
> - /* 000000E2 nop */ 0x90,
> - /* 000000E3 nop */ 0x90,
> - /* 000000E4 nop */ 0x90,
> - /* 000000E5 nop */ 0x90,
> - /* 000000E6 nop */ 0x90,
> - /* 000000E7 nop */ 0x90,
> - /* 000000E8 nop */ 0x90,
> - /* 000000E9 nop */ 0x90,
> - /* 000000EA nop */ 0x90,
> - /* 000000EB nop */ 0x90,
> - /* 000000EC nop */ 0x90,
> - /* 000000ED nop */ 0x90,
> - /* 000000EE nop */ 0x90,
> - /* 000000EF nop */ 0x90,
> - /* 000000F0 nop */ 0x90,
> - /* 000000F1 nop */ 0x90,
> - /* 000000F2 nop */ 0x90,
> - /* 000000F3 nop */ 0x90,
> - /* 000000F4 nop */ 0x90,
> - /* 000000F5 nop */ 0x90,
> - /* 000000F6 nop */ 0x90,
> - /* 000000F7 nop */ 0x90,
> - /* 000000F8 nop */ 0x90,
> - /* 000000F9 nop */ 0x90,
> - /* 000000FA nop */ 0x90,
> - /* 000000FB nop */ 0x90,
> - /* 000000FC nop */ 0x90,
> - /* 000000FD nop */ 0x90,
> - /* 000000FE nop */ 0x90,
> - /* 000000FF nop */ 0x90,
> - /* 00000100 nop */ 0x90,
> - /* 00000101 nop */ 0x90,
> - /* 00000102 nop */ 0x90,
> - /* 00000103 nop */ 0x90,
> - /* 00000104 nop */ 0x90,
> - /* 00000105 nop */ 0x90,
> - /* 00000106 nop */ 0x90,
> - /* 00000107 nop */ 0x90,
> - /* 00000108 nop */ 0x90,
> - /* 00000109 nop */ 0x90,
> - /* 0000010A nop */ 0x90,
> - /* 0000010B nop */ 0x90,
> - /* 0000010C nop */ 0x90,
> - /* 0000010D nop */ 0x90,
> - /* 0000010E nop */ 0x90,
> - /* 0000010F nop */ 0x90,
> - /* 00000110 nop */ 0x90,
> - /* 00000111 nop */ 0x90,
> - /* 00000112 nop */ 0x90,
> - /* 00000113 nop */ 0x90,
> - /* 00000114 nop */ 0x90,
> - /* 00000115 nop */ 0x90,
> - /* 00000116 nop */ 0x90,
> - /* 00000117 nop */ 0x90,
> - /* 00000118 nop */ 0x90,
> - /* 00000119 nop */ 0x90,
> - /* 0000011A nop */ 0x90,
> - /* 0000011B nop */ 0x90,
> - /* 0000011C nop */ 0x90,
> - /* 0000011D nop */ 0x90,
> - /* 0000011E nop */ 0x90,
> - /* 0000011F nop */ 0x90,
> - /* 00000120 nop */ 0x90,
> - /* 00000121 nop */ 0x90,
> - /* 00000122 nop */ 0x90,
> - /* 00000123 nop */ 0x90,
> - /* 00000124 nop */ 0x90,
> - /* 00000125 nop */ 0x90,
> - /* 00000126 nop */ 0x90,
> - /* 00000127 nop */ 0x90,
> - /* 00000128 nop */ 0x90,
> - /* 00000129 nop */ 0x90,
> - /* 0000012A nop */ 0x90,
> - /* 0000012B nop */ 0x90,
> - /* 0000012C nop */ 0x90,
> - /* 0000012D nop */ 0x90,
> - /* 0000012E nop */ 0x90,
> - /* 0000012F nop */ 0x90,
> - /* 00000130 nop */ 0x90,
> - /* 00000131 nop */ 0x90,
> - /* 00000132 nop */ 0x90,
> - /* 00000133 nop */ 0x90,
> - /* 00000134 nop */ 0x90,
> - /* 00000135 nop */ 0x90,
> - /* 00000136 nop */ 0x90,
> - /* 00000137 nop */ 0x90,
> - /* 00000138 nop */ 0x90,
> - /* 00000139 nop */ 0x90,
> - /* 0000013A nop */ 0x90,
> - /* 0000013B nop */ 0x90,
> - /* 0000013C nop */ 0x90,
> - /* 0000013D nop */ 0x90,
> - /* 0000013E nop */ 0x90,
> - /* 0000013F nop */ 0x90,
> - /* 00000140 nop */ 0x90,
> - /* 00000141 nop */ 0x90,
> - /* 00000142 nop */ 0x90,
> - /* 00000143 nop */ 0x90,
> - /* 00000144 nop */ 0x90,
> - /* 00000145 nop */ 0x90,
> - /* 00000146 nop */ 0x90,
> - /* 00000147 nop */ 0x90,
> - /* 00000148 nop */ 0x90,
> - /* 00000149 nop */ 0x90,
> - /* 0000014A nop */ 0x90,
> - /* 0000014B nop */ 0x90,
> - /* 0000014C nop */ 0x90,
> - /* 0000014D nop */ 0x90,
> - /* 0000014E nop */ 0x90,
> - /* 0000014F nop */ 0x90,
> - /* 00000150 nop */ 0x90,
> - /* 00000151 nop */ 0x90,
> - /* 00000152 nop */ 0x90,
> - /* 00000153 nop */ 0x90,
> - /* 00000154 nop */ 0x90,
> - /* 00000155 nop */ 0x90,
> - /* 00000156 nop */ 0x90,
> - /* 00000157 nop */ 0x90,
> - /* 00000158 nop */ 0x90,
> - /* 00000159 nop */ 0x90,
> - /* 0000015A nop */ 0x90,
> - /* 0000015B nop */ 0x90,
> - /* 0000015C nop */ 0x90,
> - /* 0000015D nop */ 0x90,
> - /* 0000015E nop */ 0x90,
> - /* 0000015F nop */ 0x90,
> - /* 00000160 nop */ 0x90,
> - /* 00000161 nop */ 0x90,
> - /* 00000162 nop */ 0x90,
> - /* 00000163 nop */ 0x90,
> - /* 00000164 nop */ 0x90,
> - /* 00000165 nop */ 0x90,
> - /* 00000166 nop */ 0x90,
> - /* 00000167 nop */ 0x90,
> - /* 00000168 nop */ 0x90,
> - /* 00000169 nop */ 0x90,
> - /* 0000016A nop */ 0x90,
> - /* 0000016B nop */ 0x90,
> - /* 0000016C nop */ 0x90,
> - /* 0000016D nop */ 0x90,
> - /* 0000016E nop */ 0x90,
> - /* 0000016F nop */ 0x90,
> - /* 00000170 nop */ 0x90,
> - /* 00000171 nop */ 0x90,
> - /* 00000172 nop */ 0x90,
> - /* 00000173 nop */ 0x90,
> - /* 00000174 nop */ 0x90,
> - /* 00000175 nop */ 0x90,
> - /* 00000176 nop */ 0x90,
> - /* 00000177 nop */ 0x90,
> - /* 00000178 nop */ 0x90,
> - /* 00000179 nop */ 0x90,
> - /* 0000017A nop */ 0x90,
> - /* 0000017B nop */ 0x90,
> - /* 0000017C nop */ 0x90,
> - /* 0000017D nop */ 0x90,
> - /* 0000017E nop */ 0x90,
> - /* 0000017F nop */ 0x90,
> - /* 00000180 nop */ 0x90,
> - /* 00000181 nop */ 0x90,
> - /* 00000182 nop */ 0x90,
> - /* 00000183 nop */ 0x90,
> - /* 00000184 nop */ 0x90,
> - /* 00000185 nop */ 0x90,
> - /* 00000186 nop */ 0x90,
> - /* 00000187 nop */ 0x90,
> - /* 00000188 nop */ 0x90,
> - /* 00000189 nop */ 0x90,
> - /* 0000018A nop */ 0x90,
> - /* 0000018B nop */ 0x90,
> - /* 0000018C nop */ 0x90,
> - /* 0000018D nop */ 0x90,
> - /* 0000018E nop */ 0x90,
> - /* 0000018F nop */ 0x90,
> - /* 00000190 nop */ 0x90,
> - /* 00000191 nop */ 0x90,
> - /* 00000192 nop */ 0x90,
> - /* 00000193 nop */ 0x90,
> - /* 00000194 nop */ 0x90,
> - /* 00000195 nop */ 0x90,
> - /* 00000196 nop */ 0x90,
> - /* 00000197 nop */ 0x90,
> - /* 00000198 nop */ 0x90,
> - /* 00000199 nop */ 0x90,
> - /* 0000019A nop */ 0x90,
> - /* 0000019B nop */ 0x90,
> - /* 0000019C nop */ 0x90,
> - /* 0000019D nop */ 0x90,
> - /* 0000019E nop */ 0x90,
> - /* 0000019F nop */ 0x90,
> - /* 000001A0 nop */ 0x90,
> - /* 000001A1 nop */ 0x90,
> - /* 000001A2 nop */ 0x90,
> - /* 000001A3 nop */ 0x90,
> - /* 000001A4 nop */ 0x90,
> - /* 000001A5 nop */ 0x90,
> - /* 000001A6 nop */ 0x90,
> - /* 000001A7 nop */ 0x90,
> - /* 000001A8 nop */ 0x90,
> - /* 000001A9 nop */ 0x90,
> - /* 000001AA nop */ 0x90,
> - /* 000001AB nop */ 0x90,
> - /* 000001AC nop */ 0x90,
> - /* 000001AD nop */ 0x90,
> - /* 000001AE nop */ 0x90,
> - /* 000001AF nop */ 0x90,
> - /* 000001B0 nop */ 0x90,
> - /* 000001B1 nop */ 0x90,
> - /* 000001B2 nop */ 0x90,
> - /* 000001B3 nop */ 0x90,
> - /* 000001B4 nop */ 0x90,
> - /* 000001B5 nop */ 0x90,
> - /* 000001B6 nop */ 0x90,
> - /* 000001B7 nop */ 0x90,
> - /* 000001B8 nop */ 0x90,
> - /* 000001B9 nop */ 0x90,
> - /* 000001BA nop */ 0x90,
> - /* 000001BB nop */ 0x90,
> - /* 000001BC nop */ 0x90,
> - /* 000001BD nop */ 0x90,
> - /* 000001BE nop */ 0x90,
> - /* 000001BF nop */ 0x90,
> - /* 000001C0 nop */ 0x90,
> - /* 000001C1 nop */ 0x90,
> - /* 000001C2 nop */ 0x90,
> - /* 000001C3 nop */ 0x90,
> - /* 000001C4 nop */ 0x90,
> - /* 000001C5 nop */ 0x90,
> - /* 000001C6 nop */ 0x90,
> - /* 000001C7 nop */ 0x90,
> - /* 000001C8 nop */ 0x90,
> - /* 000001C9 nop */ 0x90,
> - /* 000001CA nop */ 0x90,
> - /* 000001CB nop */ 0x90,
> - /* 000001CC nop */ 0x90,
> - /* 000001CD nop */ 0x90,
> - /* 000001CE nop */ 0x90,
> - /* 000001CF nop */ 0x90,
> - /* 000001D0 nop */ 0x90,
> - /* 000001D1 nop */ 0x90,
> - /* 000001D2 nop */ 0x90,
> - /* 000001D3 nop */ 0x90,
> - /* 000001D4 nop */ 0x90,
> - /* 000001D5 nop */ 0x90,
> - /* 000001D6 nop */ 0x90,
> - /* 000001D7 nop */ 0x90,
> - /* 000001D8 nop */ 0x90,
> - /* 000001D9 nop */ 0x90,
> - /* 000001DA nop */ 0x90,
> - /* 000001DB nop */ 0x90,
> - /* 000001DC nop */ 0x90,
> - /* 000001DD nop */ 0x90,
> - /* 000001DE nop */ 0x90,
> - /* 000001DF nop */ 0x90,
> - /* 000001E0 nop */ 0x90,
> - /* 000001E1 nop */ 0x90,
> - /* 000001E2 nop */ 0x90,
> - /* 000001E3 nop */ 0x90,
> - /* 000001E4 nop */ 0x90,
> - /* 000001E5 nop */ 0x90,
> - /* 000001E6 nop */ 0x90,
> - /* 000001E7 nop */ 0x90,
> - /* 000001E8 nop */ 0x90,
> - /* 000001E9 nop */ 0x90,
> - /* 000001EA nop */ 0x90,
> - /* 000001EB nop */ 0x90,
> - /* 000001EC nop */ 0x90,
> - /* 000001ED nop */ 0x90,
> - /* 000001EE nop */ 0x90,
> - /* 000001EF nop */ 0x90,
> - /* 000001F0 nop */ 0x90,
> - /* 000001F1 nop */ 0x90,
> - /* 000001F2 nop */ 0x90,
> - /* 000001F3 nop */ 0x90,
> - /* 000001F4 nop */ 0x90,
> - /* 000001F5 nop */ 0x90,
> - /* 000001F6 nop */ 0x90,
> - /* 000001F7 nop */ 0x90,
> - /* 000001F8 nop */ 0x90,
> - /* 000001F9 nop */ 0x90,
> - /* 000001FA nop */ 0x90,
> - /* 000001FB nop */ 0x90,
> - /* 000001FC nop */ 0x90,
> - /* 000001FD nop */ 0x90,
> - /* 000001FE nop */ 0x90,
> - /* 000001FF nop */ 0x90,
> - /* 00000200 cmp ax,0x4f00 */ 0x3D, 0x00, 0x4F,
> - /* 00000203 jz 0x22d */ 0x74, 0x28,
> - /* 00000205 cmp ax,0x4f01 */ 0x3D, 0x01, 0x4F,
> - /* 00000208 jz 0x245 */ 0x74, 0x3B,
> - /* 0000020A cmp ax,0x4f02 */ 0x3D, 0x02, 0x4F,
> - /* 0000020D jz 0x269 */ 0x74, 0x5A,
> - /* 0000020F cmp ax,0x4f03 */ 0x3D, 0x03, 0x4F,
> - /* 00000212 jz word 0x331 */ 0x0F, 0x84, 0x1B, 0x01,
> - /* 00000216 cmp ax,0x4f10 */ 0x3D, 0x10, 0x4F,
> - /* 00000219 jz word 0x336 */ 0x0F, 0x84, 0x19, 0x01,
> - /* 0000021D cmp ax,0x4f15 */ 0x3D, 0x15, 0x4F,
> - /* 00000220 jz word 0x338 */ 0x0F, 0x84, 0x14, 0x01,
> - /* 00000224 cmp ah,0x0 */ 0x80, 0xFC, 0x00,
> - /* 00000227 jz word 0x33a */ 0x0F, 0x84, 0x0F, 0x01,
> - /* 0000022B jmp short 0x22b */ 0xEB, 0xFE,
> - /* 0000022D push es */ 0x06,
> - /* 0000022E push di */ 0x57,
> - /* 0000022F push ds */ 0x1E,
> - /* 00000230 push si */ 0x56,
> - /* 00000231 push cx */ 0x51,
> - /* 00000232 push cs */ 0x0E,
> - /* 00000233 pop ds */ 0x1F,
> - /* 00000234 mov si,0x0 */ 0xBE, 0x00, 0x00,
> - /* 00000237 mov cx,0x100 */ 0xB9, 0x00, 0x01,
> - /* 0000023A cld */ 0xFC,
> - /* 0000023B rep movsb */ 0xF3, 0xA4,
> - /* 0000023D pop cx */ 0x59,
> - /* 0000023E pop si */ 0x5E,
> - /* 0000023F pop ds */ 0x1F,
> - /* 00000240 pop di */ 0x5F,
> - /* 00000241 pop es */ 0x07,
> - /* 00000242 jmp word 0x34c */ 0xE9, 0x07, 0x01,
> - /* 00000245 push es */ 0x06,
> - /* 00000246 push di */ 0x57,
> - /* 00000247 push ds */ 0x1E,
> - /* 00000248 push si */ 0x56,
> - /* 00000249 push cx */ 0x51,
> - /* 0000024A and cx,0xbfff */ 0x81, 0xE1, 0xFF, 0xBF,
> - /* 0000024E cmp cx,0xf1 */ 0x81, 0xF9, 0xF1, 0x00,
> - /* 00000252 jz 0x256 */ 0x74, 0x02,
> - /* 00000254 jmp short 0x22b */ 0xEB, 0xD5,
> - /* 00000256 push cs */ 0x0E,
> - /* 00000257 pop ds */ 0x1F,
> - /* 00000258 mov si,0x100 */ 0xBE, 0x00, 0x01,
> - /* 0000025B mov cx,0x100 */ 0xB9, 0x00, 0x01,
> - /* 0000025E cld */ 0xFC,
> - /* 0000025F rep movsb */ 0xF3, 0xA4,
> - /* 00000261 pop cx */ 0x59,
> - /* 00000262 pop si */ 0x5E,
> - /* 00000263 pop ds */ 0x1F,
> - /* 00000264 pop di */ 0x5F,
> - /* 00000265 pop es */ 0x07,
> - /* 00000266 jmp word 0x34c */ 0xE9, 0xE3, 0x00,
> - /* 00000269 push dx */ 0x52,
> - /* 0000026A push ax */ 0x50,
> - /* 0000026B cmp bx,0x40f1 */ 0x81, 0xFB, 0xF1, 0x40,
> - /* 0000026F jz 0x273 */ 0x74, 0x02,
> - /* 00000271 jmp short 0x22b */ 0xEB, 0xB8,
> - /* 00000273 mov dx,0x3c0 */ 0xBA, 0xC0, 0x03,
> - /* 00000276 mov al,0x20 */ 0xB0, 0x20,
> - /* 00000278 out dx,al */ 0xEE,
> - /* 00000279 push dx */ 0x52,
> - /* 0000027A push ax */ 0x50,
> - /* 0000027B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 0000027E mov ax,0x4 */ 0xB8, 0x04, 0x00,
> - /* 00000281 out dx,ax */ 0xEF,
> - /* 00000282 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000285 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 00000288 out dx,ax */ 0xEF,
> - /* 00000289 pop ax */ 0x58,
> - /* 0000028A pop dx */ 0x5A,
> - /* 0000028B push dx */ 0x52,
> - /* 0000028C push ax */ 0x50,
> - /* 0000028D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 00000290 mov ax,0x5 */ 0xB8, 0x05, 0x00,
> - /* 00000293 out dx,ax */ 0xEF,
> - /* 00000294 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000297 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 0000029A out dx,ax */ 0xEF,
> - /* 0000029B pop ax */ 0x58,
> - /* 0000029C pop dx */ 0x5A,
> - /* 0000029D push dx */ 0x52,
> - /* 0000029E push ax */ 0x50,
> - /* 0000029F mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002A2 mov ax,0x8 */ 0xB8, 0x08, 0x00,
> - /* 000002A5 out dx,ax */ 0xEF,
> - /* 000002A6 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002A9 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 000002AC out dx,ax */ 0xEF,
> - /* 000002AD pop ax */ 0x58,
> - /* 000002AE pop dx */ 0x5A,
> - /* 000002AF push dx */ 0x52,
> - /* 000002B0 push ax */ 0x50,
> - /* 000002B1 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002B4 mov ax,0x9 */ 0xB8, 0x09, 0x00,
> - /* 000002B7 out dx,ax */ 0xEF,
> - /* 000002B8 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002BB mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 000002BE out dx,ax */ 0xEF,
> - /* 000002BF pop ax */ 0x58,
> - /* 000002C0 pop dx */ 0x5A,
> - /* 000002C1 push dx */ 0x52,
> - /* 000002C2 push ax */ 0x50,
> - /* 000002C3 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002C6 mov ax,0x3 */ 0xB8, 0x03, 0x00,
> - /* 000002C9 out dx,ax */ 0xEF,
> - /* 000002CA mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002CD mov ax,0x20 */ 0xB8, 0x20, 0x00,
> - /* 000002D0 out dx,ax */ 0xEF,
> - /* 000002D1 pop ax */ 0x58,
> - /* 000002D2 pop dx */ 0x5A,
> - /* 000002D3 push dx */ 0x52,
> - /* 000002D4 push ax */ 0x50,
> - /* 000002D5 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002D8 mov ax,0x1 */ 0xB8, 0x01, 0x00,
> - /* 000002DB out dx,ax */ 0xEF,
> - /* 000002DC mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002DF mov ax,0x400 */ 0xB8, 0x00, 0x04,
> - /* 000002E2 out dx,ax */ 0xEF,
> - /* 000002E3 pop ax */ 0x58,
> - /* 000002E4 pop dx */ 0x5A,
> - /* 000002E5 push dx */ 0x52,
> - /* 000002E6 push ax */ 0x50,
> - /* 000002E7 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002EA mov ax,0x6 */ 0xB8, 0x06, 0x00,
> - /* 000002ED out dx,ax */ 0xEF,
> - /* 000002EE mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002F1 mov ax,0x400 */ 0xB8, 0x00, 0x04,
> - /* 000002F4 out dx,ax */ 0xEF,
> - /* 000002F5 pop ax */ 0x58,
> - /* 000002F6 pop dx */ 0x5A,
> - /* 000002F7 push dx */ 0x52,
> - /* 000002F8 push ax */ 0x50,
> - /* 000002F9 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002FC mov ax,0x2 */ 0xB8, 0x02, 0x00,
> - /* 000002FF out dx,ax */ 0xEF,
> - /* 00000300 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000303 mov ax,0x300 */ 0xB8, 0x00, 0x03,
> - /* 00000306 out dx,ax */ 0xEF,
> - /* 00000307 pop ax */ 0x58,
> - /* 00000308 pop dx */ 0x5A,
> - /* 00000309 push dx */ 0x52,
> - /* 0000030A push ax */ 0x50,
> - /* 0000030B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 0000030E mov ax,0x7 */ 0xB8, 0x07, 0x00,
> - /* 00000311 out dx,ax */ 0xEF,
> - /* 00000312 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000315 mov ax,0x300 */ 0xB8, 0x00, 0x03,
> - /* 00000318 out dx,ax */ 0xEF,
> - /* 00000319 pop ax */ 0x58,
> - /* 0000031A pop dx */ 0x5A,
> - /* 0000031B push dx */ 0x52,
> - /* 0000031C push ax */ 0x50,
> - /* 0000031D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 00000320 mov ax,0x4 */ 0xB8, 0x04, 0x00,
> - /* 00000323 out dx,ax */ 0xEF,
> - /* 00000324 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000327 mov ax,0x41 */ 0xB8, 0x41, 0x00,
> - /* 0000032A out dx,ax */ 0xEF,
> - /* 0000032B pop ax */ 0x58,
> - /* 0000032C pop dx */ 0x5A,
> - /* 0000032D pop ax */ 0x58,
> - /* 0000032E pop dx */ 0x5A,
> - /* 0000032F jmp short 0x34c */ 0xEB, 0x1B,
> - /* 00000331 mov bx,0x40f1 */ 0xBB, 0xF1, 0x40,
> - /* 00000334 jmp short 0x34c */ 0xEB, 0x16,
> - /* 00000336 jmp short 0x350 */ 0xEB, 0x18,
> - /* 00000338 jmp short 0x350 */ 0xEB, 0x16,
> - /* 0000033A cmp al,0x3 */ 0x3C, 0x03,
> - /* 0000033C jz 0x345 */ 0x74, 0x07,
> - /* 0000033E cmp al,0x12 */ 0x3C, 0x12,
> - /* 00000340 jz 0x349 */ 0x74, 0x07,
> - /* 00000342 jmp word 0x22b */ 0xE9, 0xE6, 0xFE,
> - /* 00000345 mov al,0x30 */ 0xB0, 0x30,
> - /* 00000347 jmp short 0x34b */ 0xEB, 0x02,
> - /* 00000349 mov al,0x20 */ 0xB0, 0x20,
> - /* 0000034B iretw */ 0xCF,
> - /* 0000034C mov ax,0x4f */ 0xB8, 0x4F, 0x00,
> - /* 0000034F iretw */ 0xCF,
> - /* 00000350 mov ax,0x14f */ 0xB8, 0x4F, 0x01,
> - /* 00000353 iretw */ 0xCF,
> -};
> -#endif
> diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
> index c28171d13719..6feca8380224 100644
> --- a/OvmfPkg/QemuVideoDxe/Driver.c
> +++ b/OvmfPkg/QemuVideoDxe/Driver.c
> @@ -466,15 +466,6 @@ QemuVideoControllerDriverStart (
> goto UninstallGop;
> }
>
> - #if defined MDE_CPU_IA32 || defined MDE_CPU_X64
> - if ((Private->Variant == QEMU_VIDEO_BOCHS_MMIO) ||
> - (Private->Variant == QEMU_VIDEO_BOCHS))
> - {
> - InstallVbeShim (Card->Name, Private->GraphicsOutput.Mode->FrameBufferBase);
> - }
> -
> - #endif
> -
> gBS->RestoreTPL (OldTpl);
> return EFI_SUCCESS;
>
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.c b/OvmfPkg/QemuVideoDxe/VbeShim.c
> deleted file mode 100644
> index 8f151b96f9a5..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.c
> +++ /dev/null
> @@ -1,328 +0,0 @@
> -/** @file
> - Install a fake VGABIOS service handler (real mode Int10h) for the buggy
> - Windows 2008 R2 SP1 UEFI guest.
> -
> - The handler is never meant to be directly executed by a VCPU; it's there for
> - the internal real mode emulator of Windows 2008 R2 SP1.
> -
> - The code is based on Ralf Brown's Interrupt List:
> - <http://www.cs.cmu.edu/~ralf/files.html>
> - <http://www.ctyme.com/rbrown.htm>
> -
> - Copyright (C) 2014, Red Hat, Inc.
> - Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <IndustryStandard/LegacyVgaBios.h>
> -#include <Library/DebugLib.h>
> -#include <Library/PciLib.h>
> -#include <Library/PrintLib.h>
> -#include <OvmfPlatforms.h>
> -
> -#include "Qemu.h"
> -#include "VbeShim.h"
> -
> -#pragma pack (1)
> -typedef struct {
> - UINT16 Offset;
> - UINT16 Segment;
> -} IVT_ENTRY;
> -#pragma pack ()
> -
> -//
> -// This string is displayed by Windows 2008 R2 SP1 in the Screen Resolution,
> -// Advanced Settings dialog. It should be short.
> -//
> -STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)";
> -
> -/**
> - Install the VBE Info and VBE Mode Info structures, and the VBE service
> - handler routine in the C segment. Point the real-mode Int10h interrupt vector
> - to the handler. The only advertised mode is 1024x768x32.
> -
> - @param[in] CardName Name of the video card to be exposed in the
> - Product Name field of the VBE Info structure. The
> - parameter must originate from a
> - QEMU_VIDEO_CARD.Name field.
> - @param[in] FrameBufferBase Guest-physical base address of the video card's
> - frame buffer.
> -**/
> -VOID
> -InstallVbeShim (
> - IN CONST CHAR16 *CardName,
> - IN EFI_PHYSICAL_ADDRESS FrameBufferBase
> - )
> -{
> - EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF;
> - UINTN Segment0Pages;
> - IVT_ENTRY *Int0x10;
> - EFI_STATUS Segment0AllocationStatus;
> - UINT16 HostBridgeDevId;
> - UINTN Pam1Address;
> - UINT8 Pam1;
> - UINTN SegmentCPages;
> - VBE_INFO *VbeInfoFull;
> - VBE_INFO_BASE *VbeInfo;
> - UINT8 *Ptr;
> - UINTN Printed;
> - VBE_MODE_INFO *VbeModeInfo;
> -
> - if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & (BIT0|BIT7)) == BIT0) {
> - DEBUG ((
> - DEBUG_WARN,
> - "%a: page 0 protected, not installing VBE shim\n",
> - __func__
> - ));
> - DEBUG ((
> - DEBUG_WARN,
> - "%a: page 0 protection prevents Windows 7 from booting anyway\n",
> - __func__
> - ));
> - return;
> - }
> -
> - Segment0 = 0x00000;
> - SegmentC = 0xC0000;
> - SegmentF = 0xF0000;
> -
> - //
> - // Attempt to cover the real mode IVT with an allocation. This is a UEFI
> - // driver, hence the arch protocols have been installed previously. Among
> - // those, the CPU arch protocol has configured the IDT, so we can overwrite
> - // the IVT used in real mode.
> - //
> - // The allocation request may fail, eg. if LegacyBiosDxe has already run.
> - //
> - Segment0Pages = 1;
> - Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY));
> - Segment0AllocationStatus = gBS->AllocatePages (
> - AllocateAddress,
> - EfiBootServicesCode,
> - Segment0Pages,
> - &Segment0
> - );
> -
> - if (EFI_ERROR (Segment0AllocationStatus)) {
> - EFI_PHYSICAL_ADDRESS Handler;
> -
> - //
> - // Check if a video BIOS handler has been installed previously -- we
> - // shouldn't override a real video BIOS with our shim, nor our own shim if
> - // it's already present.
> - //
> - Handler = (Int0x10->Segment << 4) + Int0x10->Offset;
> - if ((Handler >= SegmentC) && (Handler < SegmentF)) {
> - DEBUG ((
> - DEBUG_INFO,
> - "%a: Video BIOS handler found at %04x:%04x\n",
> - __func__,
> - Int0x10->Segment,
> - Int0x10->Offset
> - ));
> - return;
> - }
> -
> - //
> - // Otherwise we'll overwrite the Int10h vector, even though we may not own
> - // the page at zero.
> - //
> - DEBUG ((
> - DEBUG_INFO,
> - "%a: failed to allocate page at zero: %r\n",
> - __func__,
> - Segment0AllocationStatus
> - ));
> - } else {
> - //
> - // We managed to allocate the page at zero. SVN r14218 guarantees that it
> - // is NUL-filled.
> - //
> - ASSERT (Int0x10->Segment == 0x0000);
> - ASSERT (Int0x10->Offset == 0x0000);
> - }
> -
> - //
> - // Put the shim in place first.
> - //
> - // Start by determining the address of the PAM1 register.
> - //
> - HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
> - switch (HostBridgeDevId) {
> - case INTEL_82441_DEVICE_ID:
> - Pam1Address = PMC_REGISTER_PIIX4 (PIIX4_PAM1);
> - break;
> - case INTEL_Q35_MCH_DEVICE_ID:
> - Pam1Address = DRAMC_REGISTER_Q35 (MCH_PAM1);
> - break;
> - case MICROVM_PSEUDO_DEVICE_ID:
> - return;
> - default:
> - DEBUG ((
> - DEBUG_ERROR,
> - "%a: unknown host bridge device ID: 0x%04x\n",
> - __func__,
> - HostBridgeDevId
> - ));
> - ASSERT (FALSE);
> -
> - if (!EFI_ERROR (Segment0AllocationStatus)) {
> - gBS->FreePages (Segment0, Segment0Pages);
> - }
> -
> - return;
> - }
> -
> - //
> - // low nibble covers 0xC0000 to 0xC3FFF
> - // high nibble covers 0xC4000 to 0xC7FFF
> - // bit1 in each nibble is Write Enable
> - // bit0 in each nibble is Read Enable
> - //
> - Pam1 = PciRead8 (Pam1Address);
> - PciWrite8 (Pam1Address, Pam1 | (BIT1 | BIT0));
> -
> - //
> - // We never added memory space during PEI or DXE for the C segment, so we
> - // don't need to (and can't) allocate from there. Also, guest operating
> - // systems will see a hole in the UEFI memory map there.
> - //
> - SegmentCPages = 4;
> -
> - ASSERT (sizeof mVbeShim <= EFI_PAGES_TO_SIZE (SegmentCPages));
> - CopyMem ((VOID *)(UINTN)SegmentC, mVbeShim, sizeof mVbeShim);
> -
> - //
> - // Fill in the VBE INFO structure.
> - //
> - VbeInfoFull = (VBE_INFO *)(UINTN)SegmentC;
> - VbeInfo = &VbeInfoFull->Base;
> - Ptr = VbeInfoFull->Buffer;
> -
> - CopyMem (VbeInfo->Signature, "VESA", 4);
> - VbeInfo->VesaVersion = 0x0300;
> -
> - VbeInfo->OemNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, "QEMU", 5);
> - Ptr += 5;
> -
> - VbeInfo->Capabilities = BIT0; // DAC can be switched into 8-bit mode
> -
> - VbeInfo->ModeListAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - *(UINT16 *)Ptr = 0x00f1; // mode number
> - Ptr += 2;
> - *(UINT16 *)Ptr = 0xFFFF; // mode list terminator
> - Ptr += 2;
> -
> - VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536);
> - VbeInfo->OemSoftwareVersion = 0x0000;
> -
> - VbeInfo->VendorNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, "OVMF", 5);
> - Ptr += 5;
> -
> - VbeInfo->ProductNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - Printed = AsciiSPrint (
> - (CHAR8 *)Ptr,
> - sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer),
> - "%s",
> - CardName
> - );
> - Ptr += Printed + 1;
> -
> - VbeInfo->ProductRevAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, mProductRevision, sizeof mProductRevision);
> - Ptr += sizeof mProductRevision;
> -
> - ASSERT (sizeof VbeInfoFull->Buffer >= Ptr - VbeInfoFull->Buffer);
> - ZeroMem (Ptr, sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer));
> -
> - //
> - // Fil in the VBE MODE INFO structure.
> - //
> - VbeModeInfo = (VBE_MODE_INFO *)(VbeInfoFull + 1);
> -
> - //
> - // bit0: mode supported by present hardware configuration
> - // bit1: optional information available (must be =1 for VBE v1.2+)
> - // bit3: set if color, clear if monochrome
> - // bit4: set if graphics mode, clear if text mode
> - // bit5: mode is not VGA-compatible
> - // bit7: linear framebuffer mode supported
> - //
> - VbeModeInfo->ModeAttr = BIT7 | BIT5 | BIT4 | BIT3 | BIT1 | BIT0;
> -
> - //
> - // bit0: exists
> - // bit1: bit1: readable
> - // bit2: writeable
> - //
> - VbeModeInfo->WindowAAttr = BIT2 | BIT1 | BIT0;
> -
> - VbeModeInfo->WindowBAttr = 0x00;
> - VbeModeInfo->WindowGranularityKB = 0x0040;
> - VbeModeInfo->WindowSizeKB = 0x0040;
> - VbeModeInfo->WindowAStartSegment = 0xA000;
> - VbeModeInfo->WindowBStartSegment = 0x0000;
> - VbeModeInfo->WindowPositioningAddress = 0x0000;
> - VbeModeInfo->BytesPerScanLine = 1024 * 4;
> -
> - VbeModeInfo->Width = 1024;
> - VbeModeInfo->Height = 768;
> - VbeModeInfo->CharCellWidth = 8;
> - VbeModeInfo->CharCellHeight = 16;
> - VbeModeInfo->NumPlanes = 1;
> - VbeModeInfo->BitsPerPixel = 32;
> - VbeModeInfo->NumBanks = 1;
> - VbeModeInfo->MemoryModel = 6; // direct color
> - VbeModeInfo->BankSizeKB = 0;
> - VbeModeInfo->NumImagePagesLessOne = 0;
> - VbeModeInfo->Vbe3 = 0x01;
> -
> - VbeModeInfo->RedMaskSize = 8;
> - VbeModeInfo->RedMaskPos = 16;
> - VbeModeInfo->GreenMaskSize = 8;
> - VbeModeInfo->GreenMaskPos = 8;
> - VbeModeInfo->BlueMaskSize = 8;
> - VbeModeInfo->BlueMaskPos = 0;
> - VbeModeInfo->ReservedMaskSize = 8;
> - VbeModeInfo->ReservedMaskPos = 24;
> -
> - //
> - // bit1: Bytes in reserved field may be used by application
> - //
> - VbeModeInfo->DirectColorModeInfo = BIT1;
> -
> - VbeModeInfo->LfbAddress = (UINT32)FrameBufferBase;
> - VbeModeInfo->OffScreenAddress = 0;
> - VbeModeInfo->OffScreenSizeKB = 0;
> -
> - VbeModeInfo->BytesPerScanLineLinear = 1024 * 4;
> - VbeModeInfo->NumImagesLessOneBanked = 0;
> - VbeModeInfo->NumImagesLessOneLinear = 0;
> - VbeModeInfo->RedMaskSizeLinear = 8;
> - VbeModeInfo->RedMaskPosLinear = 16;
> - VbeModeInfo->GreenMaskSizeLinear = 8;
> - VbeModeInfo->GreenMaskPosLinear = 8;
> - VbeModeInfo->BlueMaskSizeLinear = 8;
> - VbeModeInfo->BlueMaskPosLinear = 0;
> - VbeModeInfo->ReservedMaskSizeLinear = 8;
> - VbeModeInfo->ReservedMaskPosLinear = 24;
> - VbeModeInfo->MaxPixelClockHz = 0;
> -
> - ZeroMem (VbeModeInfo->Reserved, sizeof VbeModeInfo->Reserved);
> -
> - //
> - // Clear Write Enable (bit1), keep Read Enable (bit0) set
> - //
> - PciWrite8 (Pam1Address, (Pam1 & ~BIT1) | BIT0);
> -
> - //
> - // Second, point the Int10h vector at the shim.
> - //
> - Int0x10->Segment = (UINT16)((UINT32)SegmentC >> 4);
> - Int0x10->Offset = (UINT16)((UINTN)(VbeModeInfo + 1) - SegmentC);
> -
> - DEBUG ((DEBUG_INFO, "%a: VBE shim installed\n", __func__));
> -}
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.asm b/OvmfPkg/QemuVideoDxe/VbeShim.asm
> deleted file mode 100644
> index 1d284b264124..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.asm
> +++ /dev/null
> @@ -1,281 +0,0 @@
> -;------------------------------------------------------------------------------
> -; @file
> -; A minimal Int10h stub that allows the Windows 2008 R2 SP1 UEFI guest's buggy,
> -; default VGA driver to switch to 1024x768x32, on the stdvga and QXL video
> -; cards of QEMU.
> -;
> -; Copyright (C) 2014, Red Hat, Inc.
> -; Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -;
> -; SPDX-License-Identifier: BSD-2-Clause-Patent
> -;
> -;------------------------------------------------------------------------------
> -
> -; enable this macro for debug messages
> -;%define DEBUG
> -
> -%macro DebugLog 1
> -%ifdef DEBUG
> - push si
> - mov si, %1
> - call PrintStringSi
> - pop si
> -%endif
> -%endmacro
> -
> -
> -BITS 16
> -ORG 0
> -
> -VbeInfo:
> -TIMES 256 nop
> -
> -VbeModeInfo:
> -TIMES 256 nop
> -
> -
> -Handler:
> - cmp ax, 0x4f00
> - je GetInfo
> - cmp ax, 0x4f01
> - je GetModeInfo
> - cmp ax, 0x4f02
> - je SetMode
> - cmp ax, 0x4f03
> - je GetMode
> - cmp ax, 0x4f10
> - je GetPmCapabilities
> - cmp ax, 0x4f15
> - je ReadEdid
> - cmp ah, 0x00
> - je SetModeLegacy
> - DebugLog StrUnknownFunction
> -Hang:
> - jmp Hang
> -
> -
> -GetInfo:
> - push es
> - push di
> - push ds
> - push si
> - push cx
> -
> - DebugLog StrEnterGetInfo
> -
> - ; target (es:di) set on input
> - push cs
> - pop ds
> - mov si, VbeInfo
> - ; source (ds:si) set now
> -
> - mov cx, 256
> - cld
> - rep movsb
> -
> - pop cx
> - pop si
> - pop ds
> - pop di
> - pop es
> - jmp Success
> -
> -
> -GetModeInfo:
> - push es
> - push di
> - push ds
> - push si
> - push cx
> -
> - DebugLog StrEnterGetModeInfo
> -
> - and cx, ~0x4000 ; clear potentially set LFB bit in mode number
> - cmp cx, 0x00f1
> - je KnownMode1
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode1:
> - ; target (es:di) set on input
> - push cs
> - pop ds
> - mov si, VbeModeInfo
> - ; source (ds:si) set now
> -
> - mov cx, 256
> - cld
> - rep movsb
> -
> - pop cx
> - pop si
> - pop ds
> - pop di
> - pop es
> - jmp Success
> -
> -
> -%define ATT_ADDRESS_REGISTER 0x03c0
> -%define VBE_DISPI_IOPORT_INDEX 0x01ce
> -%define VBE_DISPI_IOPORT_DATA 0x01d0
> -
> -%define VBE_DISPI_INDEX_XRES 0x1
> -%define VBE_DISPI_INDEX_YRES 0x2
> -%define VBE_DISPI_INDEX_BPP 0x3
> -%define VBE_DISPI_INDEX_ENABLE 0x4
> -%define VBE_DISPI_INDEX_BANK 0x5
> -%define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
> -%define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
> -%define VBE_DISPI_INDEX_X_OFFSET 0x8
> -%define VBE_DISPI_INDEX_Y_OFFSET 0x9
> -
> -%define VBE_DISPI_ENABLED 0x01
> -%define VBE_DISPI_LFB_ENABLED 0x40
> -
> -%macro BochsWrite 2
> - push dx
> - push ax
> -
> - mov dx, VBE_DISPI_IOPORT_INDEX
> - mov ax, %1
> - out dx, ax
> -
> - mov dx, VBE_DISPI_IOPORT_DATA
> - mov ax, %2
> - out dx, ax
> -
> - pop ax
> - pop dx
> -%endmacro
> -
> -SetMode:
> - push dx
> - push ax
> -
> - DebugLog StrEnterSetMode
> -
> - cmp bx, 0x40f1
> - je KnownMode2
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode2:
> -
> - ; unblank
> - mov dx, ATT_ADDRESS_REGISTER
> - mov al, 0x20
> - out dx, al
> -
> - BochsWrite VBE_DISPI_INDEX_ENABLE, 0
> - BochsWrite VBE_DISPI_INDEX_BANK, 0
> - BochsWrite VBE_DISPI_INDEX_X_OFFSET, 0
> - BochsWrite VBE_DISPI_INDEX_Y_OFFSET, 0
> - BochsWrite VBE_DISPI_INDEX_BPP, 32
> - BochsWrite VBE_DISPI_INDEX_XRES, 1024
> - BochsWrite VBE_DISPI_INDEX_VIRT_WIDTH, 1024
> - BochsWrite VBE_DISPI_INDEX_YRES, 768
> - BochsWrite VBE_DISPI_INDEX_VIRT_HEIGHT, 768
> - BochsWrite VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED
> -
> - pop ax
> - pop dx
> - jmp Success
> -
> -
> -GetMode:
> - DebugLog StrEnterGetMode
> - mov bx, 0x40f1
> - jmp Success
> -
> -
> -GetPmCapabilities:
> - DebugLog StrGetPmCapabilities
> - jmp Unsupported
> -
> -
> -ReadEdid:
> - DebugLog StrReadEdid
> - jmp Unsupported
> -
> -
> -SetModeLegacy:
> - DebugLog StrEnterSetModeLegacy
> -
> - cmp al, 0x03
> - je KnownMode3
> - cmp al, 0x12
> - je KnownMode4
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode3:
> - mov al, 0x30
> - jmp SetModeLegacyDone
> -KnownMode4:
> - mov al, 0x20
> -SetModeLegacyDone:
> - DebugLog StrExitSuccess
> - iret
> -
> -
> -Success:
> - DebugLog StrExitSuccess
> - mov ax, 0x004f
> - iret
> -
> -
> -Unsupported:
> - DebugLog StrExitUnsupported
> - mov ax, 0x014f
> - iret
> -
> -
> -%ifdef DEBUG
> -PrintStringSi:
> - pusha
> - push ds ; save original
> - push cs
> - pop ds
> - mov dx, 0x0402
> -PrintStringSiLoop:
> - lodsb
> - cmp al, 0
> - je PrintStringSiDone
> - out dx, al
> - jmp PrintStringSiLoop
> -PrintStringSiDone:
> - pop ds ; restore original
> - popa
> - ret
> -
> -
> -StrExitSuccess:
> - db 'Exit', 0x0a, 0
> -
> -StrExitUnsupported:
> - db 'Unsupported', 0x0a, 0
> -
> -StrUnknownFunction:
> - db 'Unknown Function', 0x0a, 0
> -
> -StrEnterGetInfo:
> - db 'GetInfo', 0x0a, 0
> -
> -StrEnterGetModeInfo:
> - db 'GetModeInfo', 0x0a, 0
> -
> -StrEnterGetMode:
> - db 'GetMode', 0x0a, 0
> -
> -StrEnterSetMode:
> - db 'SetMode', 0x0a, 0
> -
> -StrEnterSetModeLegacy:
> - db 'SetModeLegacy', 0x0a, 0
> -
> -StrUnknownMode:
> - db 'Unknown Mode', 0x0a, 0
> -
> -StrGetPmCapabilities:
> - db 'GetPmCapabilities', 0x0a, 0
> -
> -StrReadEdid:
> - db 'ReadEdid', 0x0a, 0
> -%endif
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.sh b/OvmfPkg/QemuVideoDxe/VbeShim.sh
> deleted file mode 100755
> index 7a0095a813cf..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.sh
> +++ /dev/null
> @@ -1,82 +0,0 @@
> -#!/bin/sh
> -###
> -# @file
> -# Shell script to assemble and dump the fake Int10h handler from NASM source to
> -# a C array.
> -#
> -# Copyright (C) 2014, Red Hat, Inc.
> -# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -###
> -
> -set -e -u
> -
> -STEM=$(dirname -- "$0")/$(basename -- "$0" .sh)
> -
> -#
> -# Install exit handler -- remove temporary files.
> -#
> -exit_handler()
> -{
> - rm -f -- "$STEM".bin "$STEM".disasm "$STEM".offsets "$STEM".insns \
> - "$STEM".bytes
> -}
> -trap exit_handler EXIT
> -
> -#
> -# Assemble the source file.
> -# (nasm doesn't recognize the "--" end-of-options delimiter;
> -# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
> -#
> -nasm -o "$STEM".bin "$STEM".asm
> -
> -#
> -# Disassemble it, in order to get a binary dump associated with the source.
> -# (ndisasm doesn't recognize the "--" end-of-options delimiter;
> -# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
> -#
> -ndisasm "$STEM".bin >"$STEM".disasm
> -
> -#
> -# Create three files, each with one column of the disassembly.
> -#
> -# The first column contains the offsets, and it starts the comment.
> -#
> -cut -c 1-8 -- "$STEM".disasm \
> -| sed -e 's,^, /* ,' >"$STEM".offsets
> -
> -#
> -# The second column contains the assembly-language instructions, and it closes
> -# the comment. We first pad it to 30 characters.
> -#
> -cut -c 29- -- "$STEM".disasm \
> -| sed -e 's,$, ,' \
> - -e 's,^\(.\{30\}\).*$,\1 */,' >"$STEM".insns
> -
> -#
> -# The third column contains the bytes corresponding to the instruction,
> -# represented as C integer constants. First strip trailing whitespace from the
> -# middle column of the input disassembly, then process pairs of nibbles.
> -#
> -cut -c 11-28 -- "$STEM".disasm \
> -| sed -e 's, \+$,,' -e 's/\(..\)/ 0x\1,/g' >"$STEM".bytes
> -
> -#
> -# Write the output file, recombining the columns. The output should have CRLF
> -# line endings.
> -#
> -{
> - printf '//\n'
> - printf '// THIS FILE WAS GENERATED BY "%s". DO NOT EDIT.\n' \
> - "$(basename -- "$0")"
> - printf '//\n'
> - printf '#ifndef _VBE_SHIM_H_\n'
> - printf '#define _VBE_SHIM_H_\n'
> - printf 'STATIC CONST UINT8 mVbeShim[] = {\n'
> - paste -d ' ' -- "$STEM".offsets "$STEM".insns "$STEM".bytes
> - printf '};\n'
> - printf '#endif\n'
> -} \
> -| unix2dos >"$STEM".h
> --
> 2.43.0
>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115379): https://edk2.groups.io/g/devel/message/115379
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 8:59 [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim Gerd Hoffmann
2024-02-13 10:41 ` Ard Biesheuvel
@ 2024-02-13 10:44 ` Laszlo Ersek
2024-02-13 14:02 ` Gerd Hoffmann
1 sibling, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2024-02-13 10:44 UTC (permalink / raw)
To: Gerd Hoffmann, devel; +Cc: Oliver Steffen, Ard Biesheuvel, Jiewen Yao
Hi Gerd,
On 2/13/24 09:59, Gerd Hoffmann wrote:
> Removing CSM support broke VbeShim.
>
> I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> Didn't investigate in detail, but apparently the real mode address space
> is not considered being special any more, which invalidates some
> assumptions of the vbeshim code.
>
> The guest os which depends on vbeshim for video support is -- according
> to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> more than four years ago.
>
> Time to retire VbeShim. RIP.
I don't understand this, and/or disagree.
(1) Please collect more information about the ASSERT()s (the failure mode you are seeing). Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
(2) The CSM is actually *mutually exclusive* with the VBE shim. We install the VBE shim *instead* of the full-blown CSM. In function InstallVbeShim(), we have:
//
// Attempt to cover the real mode IVT with an allocation. This is a UEFI
// driver, hence the arch protocols have been installed previously. Among
// those, the CPU arch protocol has configured the IDT, so we can overwrite
// the IVT used in real mode.
//
// The allocation request may fail, eg. if LegacyBiosDxe has already run.
//
Segment0Pages = 1;
Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY));
Segment0AllocationStatus = gBS->AllocatePages (
AllocateAddress,
EfiBootServicesCode,
Segment0Pages,
&Segment0
);
if (EFI_ERROR (Segment0AllocationStatus)) {
EFI_PHYSICAL_ADDRESS Handler;
//
// Check if a video BIOS handler has been installed previously -- we
// shouldn't override a real video BIOS with our shim, nor our own shim if
// it's already present.
//
Handler = (Int0x10->Segment << 4) + Int0x10->Offset;
if ((Handler >= SegmentC) && (Handler < SegmentF)) {
DEBUG ((
DEBUG_INFO,
"%a: Video BIOS handler found at %04x:%04x\n",
__func__,
Int0x10->Segment,
Int0x10->Offset
));
return;
}
//
// Otherwise we'll overwrite the Int10h vector, even though we may not own
// the page at zero.
//
DEBUG ((
DEBUG_INFO,
"%a: failed to allocate page at zero: %r\n",
__func__,
Segment0AllocationStatus
));
} else {
//
// We managed to allocate the page at zero. SVN r14218 guarantees that it
// is NUL-filled.
//
ASSERT (Int0x10->Segment == 0x0000);
ASSERT (Int0x10->Offset == 0x0000);
}
If a CSM were present, the "Video BIOS handler found at ..." log message (and the early exit) should be reached.
See also the reference to LegacyBiosDxe.
In other words, if you build OVMF *without* CSM_ENABLE (before CSM removal), or you just remove CSM from the entire tree, that should be identical, as far as this function is concerned.
See also the commit message of commit 90803342b1b6 ("OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL)", 2014-05-20).
(3) Windows 7 may be EOL, but I'm not convinced there are zero users left using it, especially in "air gapped" virtual machines (i.e., VMs that have no connection to the public internet), potentially with VBE assignment.
Now, I don't insist on keeping the VBE shim alive; it will always be preserved in the git history. But I certainly think we should understand the problem in more detail. (Also, if my CSM removal has caused some *other* regression, I'd be happy to learn about that.)
... Does your log contain the line "failed to allocate page at zero"? Because that could be indicative of some other component allocating page#0 earlier, and the VBE shim corrupting it.
*If* that's the case, then I certainly agree to this patch, but then:
- please update the commit message slightly,
- please remove the InstallVbeShim() declaration from "Qemu.h",
- you can add "Reviewed-by: Laszlo Ersek <lersek@redhat.com>".
Thanks
Laszlo
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 4 -
> OvmfPkg/QemuVideoDxe/VbeShim.h | 701 --------------------------
> OvmfPkg/QemuVideoDxe/Driver.c | 9 -
> OvmfPkg/QemuVideoDxe/VbeShim.c | 328 ------------
> OvmfPkg/QemuVideoDxe/VbeShim.asm | 281 -----------
> OvmfPkg/QemuVideoDxe/VbeShim.sh | 82 ---
> 6 files changed, 1405 deletions(-)
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.h
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.c
> delete mode 100644 OvmfPkg/QemuVideoDxe/VbeShim.asm
> delete mode 100755 OvmfPkg/QemuVideoDxe/VbeShim.sh
>
> diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> index 43a6e07faa88..6b7baa8525a7 100644
> --- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> +++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
> @@ -33,10 +33,6 @@ [Sources.common]
> Initialize.c
> Qemu.h
>
> -[Sources.Ia32, Sources.X64]
> - VbeShim.c
> - VbeShim.h
> -
> [Packages]
> MdePkg/MdePkg.dec
> MdeModulePkg/MdeModulePkg.dec
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h
> deleted file mode 100644
> index cc9b6e14cdcd..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.h
> +++ /dev/null
> @@ -1,701 +0,0 @@
> -//
> -// THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT.
> -//
> -#ifndef _VBE_SHIM_H_
> -#define _VBE_SHIM_H_
> -STATIC CONST UINT8 mVbeShim[] = {
> - /* 00000000 nop */ 0x90,
> - /* 00000001 nop */ 0x90,
> - /* 00000002 nop */ 0x90,
> - /* 00000003 nop */ 0x90,
> - /* 00000004 nop */ 0x90,
> - /* 00000005 nop */ 0x90,
> - /* 00000006 nop */ 0x90,
> - /* 00000007 nop */ 0x90,
> - /* 00000008 nop */ 0x90,
> - /* 00000009 nop */ 0x90,
> - /* 0000000A nop */ 0x90,
> - /* 0000000B nop */ 0x90,
> - /* 0000000C nop */ 0x90,
> - /* 0000000D nop */ 0x90,
> - /* 0000000E nop */ 0x90,
> - /* 0000000F nop */ 0x90,
> - /* 00000010 nop */ 0x90,
> - /* 00000011 nop */ 0x90,
> - /* 00000012 nop */ 0x90,
> - /* 00000013 nop */ 0x90,
> - /* 00000014 nop */ 0x90,
> - /* 00000015 nop */ 0x90,
> - /* 00000016 nop */ 0x90,
> - /* 00000017 nop */ 0x90,
> - /* 00000018 nop */ 0x90,
> - /* 00000019 nop */ 0x90,
> - /* 0000001A nop */ 0x90,
> - /* 0000001B nop */ 0x90,
> - /* 0000001C nop */ 0x90,
> - /* 0000001D nop */ 0x90,
> - /* 0000001E nop */ 0x90,
> - /* 0000001F nop */ 0x90,
> - /* 00000020 nop */ 0x90,
> - /* 00000021 nop */ 0x90,
> - /* 00000022 nop */ 0x90,
> - /* 00000023 nop */ 0x90,
> - /* 00000024 nop */ 0x90,
> - /* 00000025 nop */ 0x90,
> - /* 00000026 nop */ 0x90,
> - /* 00000027 nop */ 0x90,
> - /* 00000028 nop */ 0x90,
> - /* 00000029 nop */ 0x90,
> - /* 0000002A nop */ 0x90,
> - /* 0000002B nop */ 0x90,
> - /* 0000002C nop */ 0x90,
> - /* 0000002D nop */ 0x90,
> - /* 0000002E nop */ 0x90,
> - /* 0000002F nop */ 0x90,
> - /* 00000030 nop */ 0x90,
> - /* 00000031 nop */ 0x90,
> - /* 00000032 nop */ 0x90,
> - /* 00000033 nop */ 0x90,
> - /* 00000034 nop */ 0x90,
> - /* 00000035 nop */ 0x90,
> - /* 00000036 nop */ 0x90,
> - /* 00000037 nop */ 0x90,
> - /* 00000038 nop */ 0x90,
> - /* 00000039 nop */ 0x90,
> - /* 0000003A nop */ 0x90,
> - /* 0000003B nop */ 0x90,
> - /* 0000003C nop */ 0x90,
> - /* 0000003D nop */ 0x90,
> - /* 0000003E nop */ 0x90,
> - /* 0000003F nop */ 0x90,
> - /* 00000040 nop */ 0x90,
> - /* 00000041 nop */ 0x90,
> - /* 00000042 nop */ 0x90,
> - /* 00000043 nop */ 0x90,
> - /* 00000044 nop */ 0x90,
> - /* 00000045 nop */ 0x90,
> - /* 00000046 nop */ 0x90,
> - /* 00000047 nop */ 0x90,
> - /* 00000048 nop */ 0x90,
> - /* 00000049 nop */ 0x90,
> - /* 0000004A nop */ 0x90,
> - /* 0000004B nop */ 0x90,
> - /* 0000004C nop */ 0x90,
> - /* 0000004D nop */ 0x90,
> - /* 0000004E nop */ 0x90,
> - /* 0000004F nop */ 0x90,
> - /* 00000050 nop */ 0x90,
> - /* 00000051 nop */ 0x90,
> - /* 00000052 nop */ 0x90,
> - /* 00000053 nop */ 0x90,
> - /* 00000054 nop */ 0x90,
> - /* 00000055 nop */ 0x90,
> - /* 00000056 nop */ 0x90,
> - /* 00000057 nop */ 0x90,
> - /* 00000058 nop */ 0x90,
> - /* 00000059 nop */ 0x90,
> - /* 0000005A nop */ 0x90,
> - /* 0000005B nop */ 0x90,
> - /* 0000005C nop */ 0x90,
> - /* 0000005D nop */ 0x90,
> - /* 0000005E nop */ 0x90,
> - /* 0000005F nop */ 0x90,
> - /* 00000060 nop */ 0x90,
> - /* 00000061 nop */ 0x90,
> - /* 00000062 nop */ 0x90,
> - /* 00000063 nop */ 0x90,
> - /* 00000064 nop */ 0x90,
> - /* 00000065 nop */ 0x90,
> - /* 00000066 nop */ 0x90,
> - /* 00000067 nop */ 0x90,
> - /* 00000068 nop */ 0x90,
> - /* 00000069 nop */ 0x90,
> - /* 0000006A nop */ 0x90,
> - /* 0000006B nop */ 0x90,
> - /* 0000006C nop */ 0x90,
> - /* 0000006D nop */ 0x90,
> - /* 0000006E nop */ 0x90,
> - /* 0000006F nop */ 0x90,
> - /* 00000070 nop */ 0x90,
> - /* 00000071 nop */ 0x90,
> - /* 00000072 nop */ 0x90,
> - /* 00000073 nop */ 0x90,
> - /* 00000074 nop */ 0x90,
> - /* 00000075 nop */ 0x90,
> - /* 00000076 nop */ 0x90,
> - /* 00000077 nop */ 0x90,
> - /* 00000078 nop */ 0x90,
> - /* 00000079 nop */ 0x90,
> - /* 0000007A nop */ 0x90,
> - /* 0000007B nop */ 0x90,
> - /* 0000007C nop */ 0x90,
> - /* 0000007D nop */ 0x90,
> - /* 0000007E nop */ 0x90,
> - /* 0000007F nop */ 0x90,
> - /* 00000080 nop */ 0x90,
> - /* 00000081 nop */ 0x90,
> - /* 00000082 nop */ 0x90,
> - /* 00000083 nop */ 0x90,
> - /* 00000084 nop */ 0x90,
> - /* 00000085 nop */ 0x90,
> - /* 00000086 nop */ 0x90,
> - /* 00000087 nop */ 0x90,
> - /* 00000088 nop */ 0x90,
> - /* 00000089 nop */ 0x90,
> - /* 0000008A nop */ 0x90,
> - /* 0000008B nop */ 0x90,
> - /* 0000008C nop */ 0x90,
> - /* 0000008D nop */ 0x90,
> - /* 0000008E nop */ 0x90,
> - /* 0000008F nop */ 0x90,
> - /* 00000090 nop */ 0x90,
> - /* 00000091 nop */ 0x90,
> - /* 00000092 nop */ 0x90,
> - /* 00000093 nop */ 0x90,
> - /* 00000094 nop */ 0x90,
> - /* 00000095 nop */ 0x90,
> - /* 00000096 nop */ 0x90,
> - /* 00000097 nop */ 0x90,
> - /* 00000098 nop */ 0x90,
> - /* 00000099 nop */ 0x90,
> - /* 0000009A nop */ 0x90,
> - /* 0000009B nop */ 0x90,
> - /* 0000009C nop */ 0x90,
> - /* 0000009D nop */ 0x90,
> - /* 0000009E nop */ 0x90,
> - /* 0000009F nop */ 0x90,
> - /* 000000A0 nop */ 0x90,
> - /* 000000A1 nop */ 0x90,
> - /* 000000A2 nop */ 0x90,
> - /* 000000A3 nop */ 0x90,
> - /* 000000A4 nop */ 0x90,
> - /* 000000A5 nop */ 0x90,
> - /* 000000A6 nop */ 0x90,
> - /* 000000A7 nop */ 0x90,
> - /* 000000A8 nop */ 0x90,
> - /* 000000A9 nop */ 0x90,
> - /* 000000AA nop */ 0x90,
> - /* 000000AB nop */ 0x90,
> - /* 000000AC nop */ 0x90,
> - /* 000000AD nop */ 0x90,
> - /* 000000AE nop */ 0x90,
> - /* 000000AF nop */ 0x90,
> - /* 000000B0 nop */ 0x90,
> - /* 000000B1 nop */ 0x90,
> - /* 000000B2 nop */ 0x90,
> - /* 000000B3 nop */ 0x90,
> - /* 000000B4 nop */ 0x90,
> - /* 000000B5 nop */ 0x90,
> - /* 000000B6 nop */ 0x90,
> - /* 000000B7 nop */ 0x90,
> - /* 000000B8 nop */ 0x90,
> - /* 000000B9 nop */ 0x90,
> - /* 000000BA nop */ 0x90,
> - /* 000000BB nop */ 0x90,
> - /* 000000BC nop */ 0x90,
> - /* 000000BD nop */ 0x90,
> - /* 000000BE nop */ 0x90,
> - /* 000000BF nop */ 0x90,
> - /* 000000C0 nop */ 0x90,
> - /* 000000C1 nop */ 0x90,
> - /* 000000C2 nop */ 0x90,
> - /* 000000C3 nop */ 0x90,
> - /* 000000C4 nop */ 0x90,
> - /* 000000C5 nop */ 0x90,
> - /* 000000C6 nop */ 0x90,
> - /* 000000C7 nop */ 0x90,
> - /* 000000C8 nop */ 0x90,
> - /* 000000C9 nop */ 0x90,
> - /* 000000CA nop */ 0x90,
> - /* 000000CB nop */ 0x90,
> - /* 000000CC nop */ 0x90,
> - /* 000000CD nop */ 0x90,
> - /* 000000CE nop */ 0x90,
> - /* 000000CF nop */ 0x90,
> - /* 000000D0 nop */ 0x90,
> - /* 000000D1 nop */ 0x90,
> - /* 000000D2 nop */ 0x90,
> - /* 000000D3 nop */ 0x90,
> - /* 000000D4 nop */ 0x90,
> - /* 000000D5 nop */ 0x90,
> - /* 000000D6 nop */ 0x90,
> - /* 000000D7 nop */ 0x90,
> - /* 000000D8 nop */ 0x90,
> - /* 000000D9 nop */ 0x90,
> - /* 000000DA nop */ 0x90,
> - /* 000000DB nop */ 0x90,
> - /* 000000DC nop */ 0x90,
> - /* 000000DD nop */ 0x90,
> - /* 000000DE nop */ 0x90,
> - /* 000000DF nop */ 0x90,
> - /* 000000E0 nop */ 0x90,
> - /* 000000E1 nop */ 0x90,
> - /* 000000E2 nop */ 0x90,
> - /* 000000E3 nop */ 0x90,
> - /* 000000E4 nop */ 0x90,
> - /* 000000E5 nop */ 0x90,
> - /* 000000E6 nop */ 0x90,
> - /* 000000E7 nop */ 0x90,
> - /* 000000E8 nop */ 0x90,
> - /* 000000E9 nop */ 0x90,
> - /* 000000EA nop */ 0x90,
> - /* 000000EB nop */ 0x90,
> - /* 000000EC nop */ 0x90,
> - /* 000000ED nop */ 0x90,
> - /* 000000EE nop */ 0x90,
> - /* 000000EF nop */ 0x90,
> - /* 000000F0 nop */ 0x90,
> - /* 000000F1 nop */ 0x90,
> - /* 000000F2 nop */ 0x90,
> - /* 000000F3 nop */ 0x90,
> - /* 000000F4 nop */ 0x90,
> - /* 000000F5 nop */ 0x90,
> - /* 000000F6 nop */ 0x90,
> - /* 000000F7 nop */ 0x90,
> - /* 000000F8 nop */ 0x90,
> - /* 000000F9 nop */ 0x90,
> - /* 000000FA nop */ 0x90,
> - /* 000000FB nop */ 0x90,
> - /* 000000FC nop */ 0x90,
> - /* 000000FD nop */ 0x90,
> - /* 000000FE nop */ 0x90,
> - /* 000000FF nop */ 0x90,
> - /* 00000100 nop */ 0x90,
> - /* 00000101 nop */ 0x90,
> - /* 00000102 nop */ 0x90,
> - /* 00000103 nop */ 0x90,
> - /* 00000104 nop */ 0x90,
> - /* 00000105 nop */ 0x90,
> - /* 00000106 nop */ 0x90,
> - /* 00000107 nop */ 0x90,
> - /* 00000108 nop */ 0x90,
> - /* 00000109 nop */ 0x90,
> - /* 0000010A nop */ 0x90,
> - /* 0000010B nop */ 0x90,
> - /* 0000010C nop */ 0x90,
> - /* 0000010D nop */ 0x90,
> - /* 0000010E nop */ 0x90,
> - /* 0000010F nop */ 0x90,
> - /* 00000110 nop */ 0x90,
> - /* 00000111 nop */ 0x90,
> - /* 00000112 nop */ 0x90,
> - /* 00000113 nop */ 0x90,
> - /* 00000114 nop */ 0x90,
> - /* 00000115 nop */ 0x90,
> - /* 00000116 nop */ 0x90,
> - /* 00000117 nop */ 0x90,
> - /* 00000118 nop */ 0x90,
> - /* 00000119 nop */ 0x90,
> - /* 0000011A nop */ 0x90,
> - /* 0000011B nop */ 0x90,
> - /* 0000011C nop */ 0x90,
> - /* 0000011D nop */ 0x90,
> - /* 0000011E nop */ 0x90,
> - /* 0000011F nop */ 0x90,
> - /* 00000120 nop */ 0x90,
> - /* 00000121 nop */ 0x90,
> - /* 00000122 nop */ 0x90,
> - /* 00000123 nop */ 0x90,
> - /* 00000124 nop */ 0x90,
> - /* 00000125 nop */ 0x90,
> - /* 00000126 nop */ 0x90,
> - /* 00000127 nop */ 0x90,
> - /* 00000128 nop */ 0x90,
> - /* 00000129 nop */ 0x90,
> - /* 0000012A nop */ 0x90,
> - /* 0000012B nop */ 0x90,
> - /* 0000012C nop */ 0x90,
> - /* 0000012D nop */ 0x90,
> - /* 0000012E nop */ 0x90,
> - /* 0000012F nop */ 0x90,
> - /* 00000130 nop */ 0x90,
> - /* 00000131 nop */ 0x90,
> - /* 00000132 nop */ 0x90,
> - /* 00000133 nop */ 0x90,
> - /* 00000134 nop */ 0x90,
> - /* 00000135 nop */ 0x90,
> - /* 00000136 nop */ 0x90,
> - /* 00000137 nop */ 0x90,
> - /* 00000138 nop */ 0x90,
> - /* 00000139 nop */ 0x90,
> - /* 0000013A nop */ 0x90,
> - /* 0000013B nop */ 0x90,
> - /* 0000013C nop */ 0x90,
> - /* 0000013D nop */ 0x90,
> - /* 0000013E nop */ 0x90,
> - /* 0000013F nop */ 0x90,
> - /* 00000140 nop */ 0x90,
> - /* 00000141 nop */ 0x90,
> - /* 00000142 nop */ 0x90,
> - /* 00000143 nop */ 0x90,
> - /* 00000144 nop */ 0x90,
> - /* 00000145 nop */ 0x90,
> - /* 00000146 nop */ 0x90,
> - /* 00000147 nop */ 0x90,
> - /* 00000148 nop */ 0x90,
> - /* 00000149 nop */ 0x90,
> - /* 0000014A nop */ 0x90,
> - /* 0000014B nop */ 0x90,
> - /* 0000014C nop */ 0x90,
> - /* 0000014D nop */ 0x90,
> - /* 0000014E nop */ 0x90,
> - /* 0000014F nop */ 0x90,
> - /* 00000150 nop */ 0x90,
> - /* 00000151 nop */ 0x90,
> - /* 00000152 nop */ 0x90,
> - /* 00000153 nop */ 0x90,
> - /* 00000154 nop */ 0x90,
> - /* 00000155 nop */ 0x90,
> - /* 00000156 nop */ 0x90,
> - /* 00000157 nop */ 0x90,
> - /* 00000158 nop */ 0x90,
> - /* 00000159 nop */ 0x90,
> - /* 0000015A nop */ 0x90,
> - /* 0000015B nop */ 0x90,
> - /* 0000015C nop */ 0x90,
> - /* 0000015D nop */ 0x90,
> - /* 0000015E nop */ 0x90,
> - /* 0000015F nop */ 0x90,
> - /* 00000160 nop */ 0x90,
> - /* 00000161 nop */ 0x90,
> - /* 00000162 nop */ 0x90,
> - /* 00000163 nop */ 0x90,
> - /* 00000164 nop */ 0x90,
> - /* 00000165 nop */ 0x90,
> - /* 00000166 nop */ 0x90,
> - /* 00000167 nop */ 0x90,
> - /* 00000168 nop */ 0x90,
> - /* 00000169 nop */ 0x90,
> - /* 0000016A nop */ 0x90,
> - /* 0000016B nop */ 0x90,
> - /* 0000016C nop */ 0x90,
> - /* 0000016D nop */ 0x90,
> - /* 0000016E nop */ 0x90,
> - /* 0000016F nop */ 0x90,
> - /* 00000170 nop */ 0x90,
> - /* 00000171 nop */ 0x90,
> - /* 00000172 nop */ 0x90,
> - /* 00000173 nop */ 0x90,
> - /* 00000174 nop */ 0x90,
> - /* 00000175 nop */ 0x90,
> - /* 00000176 nop */ 0x90,
> - /* 00000177 nop */ 0x90,
> - /* 00000178 nop */ 0x90,
> - /* 00000179 nop */ 0x90,
> - /* 0000017A nop */ 0x90,
> - /* 0000017B nop */ 0x90,
> - /* 0000017C nop */ 0x90,
> - /* 0000017D nop */ 0x90,
> - /* 0000017E nop */ 0x90,
> - /* 0000017F nop */ 0x90,
> - /* 00000180 nop */ 0x90,
> - /* 00000181 nop */ 0x90,
> - /* 00000182 nop */ 0x90,
> - /* 00000183 nop */ 0x90,
> - /* 00000184 nop */ 0x90,
> - /* 00000185 nop */ 0x90,
> - /* 00000186 nop */ 0x90,
> - /* 00000187 nop */ 0x90,
> - /* 00000188 nop */ 0x90,
> - /* 00000189 nop */ 0x90,
> - /* 0000018A nop */ 0x90,
> - /* 0000018B nop */ 0x90,
> - /* 0000018C nop */ 0x90,
> - /* 0000018D nop */ 0x90,
> - /* 0000018E nop */ 0x90,
> - /* 0000018F nop */ 0x90,
> - /* 00000190 nop */ 0x90,
> - /* 00000191 nop */ 0x90,
> - /* 00000192 nop */ 0x90,
> - /* 00000193 nop */ 0x90,
> - /* 00000194 nop */ 0x90,
> - /* 00000195 nop */ 0x90,
> - /* 00000196 nop */ 0x90,
> - /* 00000197 nop */ 0x90,
> - /* 00000198 nop */ 0x90,
> - /* 00000199 nop */ 0x90,
> - /* 0000019A nop */ 0x90,
> - /* 0000019B nop */ 0x90,
> - /* 0000019C nop */ 0x90,
> - /* 0000019D nop */ 0x90,
> - /* 0000019E nop */ 0x90,
> - /* 0000019F nop */ 0x90,
> - /* 000001A0 nop */ 0x90,
> - /* 000001A1 nop */ 0x90,
> - /* 000001A2 nop */ 0x90,
> - /* 000001A3 nop */ 0x90,
> - /* 000001A4 nop */ 0x90,
> - /* 000001A5 nop */ 0x90,
> - /* 000001A6 nop */ 0x90,
> - /* 000001A7 nop */ 0x90,
> - /* 000001A8 nop */ 0x90,
> - /* 000001A9 nop */ 0x90,
> - /* 000001AA nop */ 0x90,
> - /* 000001AB nop */ 0x90,
> - /* 000001AC nop */ 0x90,
> - /* 000001AD nop */ 0x90,
> - /* 000001AE nop */ 0x90,
> - /* 000001AF nop */ 0x90,
> - /* 000001B0 nop */ 0x90,
> - /* 000001B1 nop */ 0x90,
> - /* 000001B2 nop */ 0x90,
> - /* 000001B3 nop */ 0x90,
> - /* 000001B4 nop */ 0x90,
> - /* 000001B5 nop */ 0x90,
> - /* 000001B6 nop */ 0x90,
> - /* 000001B7 nop */ 0x90,
> - /* 000001B8 nop */ 0x90,
> - /* 000001B9 nop */ 0x90,
> - /* 000001BA nop */ 0x90,
> - /* 000001BB nop */ 0x90,
> - /* 000001BC nop */ 0x90,
> - /* 000001BD nop */ 0x90,
> - /* 000001BE nop */ 0x90,
> - /* 000001BF nop */ 0x90,
> - /* 000001C0 nop */ 0x90,
> - /* 000001C1 nop */ 0x90,
> - /* 000001C2 nop */ 0x90,
> - /* 000001C3 nop */ 0x90,
> - /* 000001C4 nop */ 0x90,
> - /* 000001C5 nop */ 0x90,
> - /* 000001C6 nop */ 0x90,
> - /* 000001C7 nop */ 0x90,
> - /* 000001C8 nop */ 0x90,
> - /* 000001C9 nop */ 0x90,
> - /* 000001CA nop */ 0x90,
> - /* 000001CB nop */ 0x90,
> - /* 000001CC nop */ 0x90,
> - /* 000001CD nop */ 0x90,
> - /* 000001CE nop */ 0x90,
> - /* 000001CF nop */ 0x90,
> - /* 000001D0 nop */ 0x90,
> - /* 000001D1 nop */ 0x90,
> - /* 000001D2 nop */ 0x90,
> - /* 000001D3 nop */ 0x90,
> - /* 000001D4 nop */ 0x90,
> - /* 000001D5 nop */ 0x90,
> - /* 000001D6 nop */ 0x90,
> - /* 000001D7 nop */ 0x90,
> - /* 000001D8 nop */ 0x90,
> - /* 000001D9 nop */ 0x90,
> - /* 000001DA nop */ 0x90,
> - /* 000001DB nop */ 0x90,
> - /* 000001DC nop */ 0x90,
> - /* 000001DD nop */ 0x90,
> - /* 000001DE nop */ 0x90,
> - /* 000001DF nop */ 0x90,
> - /* 000001E0 nop */ 0x90,
> - /* 000001E1 nop */ 0x90,
> - /* 000001E2 nop */ 0x90,
> - /* 000001E3 nop */ 0x90,
> - /* 000001E4 nop */ 0x90,
> - /* 000001E5 nop */ 0x90,
> - /* 000001E6 nop */ 0x90,
> - /* 000001E7 nop */ 0x90,
> - /* 000001E8 nop */ 0x90,
> - /* 000001E9 nop */ 0x90,
> - /* 000001EA nop */ 0x90,
> - /* 000001EB nop */ 0x90,
> - /* 000001EC nop */ 0x90,
> - /* 000001ED nop */ 0x90,
> - /* 000001EE nop */ 0x90,
> - /* 000001EF nop */ 0x90,
> - /* 000001F0 nop */ 0x90,
> - /* 000001F1 nop */ 0x90,
> - /* 000001F2 nop */ 0x90,
> - /* 000001F3 nop */ 0x90,
> - /* 000001F4 nop */ 0x90,
> - /* 000001F5 nop */ 0x90,
> - /* 000001F6 nop */ 0x90,
> - /* 000001F7 nop */ 0x90,
> - /* 000001F8 nop */ 0x90,
> - /* 000001F9 nop */ 0x90,
> - /* 000001FA nop */ 0x90,
> - /* 000001FB nop */ 0x90,
> - /* 000001FC nop */ 0x90,
> - /* 000001FD nop */ 0x90,
> - /* 000001FE nop */ 0x90,
> - /* 000001FF nop */ 0x90,
> - /* 00000200 cmp ax,0x4f00 */ 0x3D, 0x00, 0x4F,
> - /* 00000203 jz 0x22d */ 0x74, 0x28,
> - /* 00000205 cmp ax,0x4f01 */ 0x3D, 0x01, 0x4F,
> - /* 00000208 jz 0x245 */ 0x74, 0x3B,
> - /* 0000020A cmp ax,0x4f02 */ 0x3D, 0x02, 0x4F,
> - /* 0000020D jz 0x269 */ 0x74, 0x5A,
> - /* 0000020F cmp ax,0x4f03 */ 0x3D, 0x03, 0x4F,
> - /* 00000212 jz word 0x331 */ 0x0F, 0x84, 0x1B, 0x01,
> - /* 00000216 cmp ax,0x4f10 */ 0x3D, 0x10, 0x4F,
> - /* 00000219 jz word 0x336 */ 0x0F, 0x84, 0x19, 0x01,
> - /* 0000021D cmp ax,0x4f15 */ 0x3D, 0x15, 0x4F,
> - /* 00000220 jz word 0x338 */ 0x0F, 0x84, 0x14, 0x01,
> - /* 00000224 cmp ah,0x0 */ 0x80, 0xFC, 0x00,
> - /* 00000227 jz word 0x33a */ 0x0F, 0x84, 0x0F, 0x01,
> - /* 0000022B jmp short 0x22b */ 0xEB, 0xFE,
> - /* 0000022D push es */ 0x06,
> - /* 0000022E push di */ 0x57,
> - /* 0000022F push ds */ 0x1E,
> - /* 00000230 push si */ 0x56,
> - /* 00000231 push cx */ 0x51,
> - /* 00000232 push cs */ 0x0E,
> - /* 00000233 pop ds */ 0x1F,
> - /* 00000234 mov si,0x0 */ 0xBE, 0x00, 0x00,
> - /* 00000237 mov cx,0x100 */ 0xB9, 0x00, 0x01,
> - /* 0000023A cld */ 0xFC,
> - /* 0000023B rep movsb */ 0xF3, 0xA4,
> - /* 0000023D pop cx */ 0x59,
> - /* 0000023E pop si */ 0x5E,
> - /* 0000023F pop ds */ 0x1F,
> - /* 00000240 pop di */ 0x5F,
> - /* 00000241 pop es */ 0x07,
> - /* 00000242 jmp word 0x34c */ 0xE9, 0x07, 0x01,
> - /* 00000245 push es */ 0x06,
> - /* 00000246 push di */ 0x57,
> - /* 00000247 push ds */ 0x1E,
> - /* 00000248 push si */ 0x56,
> - /* 00000249 push cx */ 0x51,
> - /* 0000024A and cx,0xbfff */ 0x81, 0xE1, 0xFF, 0xBF,
> - /* 0000024E cmp cx,0xf1 */ 0x81, 0xF9, 0xF1, 0x00,
> - /* 00000252 jz 0x256 */ 0x74, 0x02,
> - /* 00000254 jmp short 0x22b */ 0xEB, 0xD5,
> - /* 00000256 push cs */ 0x0E,
> - /* 00000257 pop ds */ 0x1F,
> - /* 00000258 mov si,0x100 */ 0xBE, 0x00, 0x01,
> - /* 0000025B mov cx,0x100 */ 0xB9, 0x00, 0x01,
> - /* 0000025E cld */ 0xFC,
> - /* 0000025F rep movsb */ 0xF3, 0xA4,
> - /* 00000261 pop cx */ 0x59,
> - /* 00000262 pop si */ 0x5E,
> - /* 00000263 pop ds */ 0x1F,
> - /* 00000264 pop di */ 0x5F,
> - /* 00000265 pop es */ 0x07,
> - /* 00000266 jmp word 0x34c */ 0xE9, 0xE3, 0x00,
> - /* 00000269 push dx */ 0x52,
> - /* 0000026A push ax */ 0x50,
> - /* 0000026B cmp bx,0x40f1 */ 0x81, 0xFB, 0xF1, 0x40,
> - /* 0000026F jz 0x273 */ 0x74, 0x02,
> - /* 00000271 jmp short 0x22b */ 0xEB, 0xB8,
> - /* 00000273 mov dx,0x3c0 */ 0xBA, 0xC0, 0x03,
> - /* 00000276 mov al,0x20 */ 0xB0, 0x20,
> - /* 00000278 out dx,al */ 0xEE,
> - /* 00000279 push dx */ 0x52,
> - /* 0000027A push ax */ 0x50,
> - /* 0000027B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 0000027E mov ax,0x4 */ 0xB8, 0x04, 0x00,
> - /* 00000281 out dx,ax */ 0xEF,
> - /* 00000282 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000285 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 00000288 out dx,ax */ 0xEF,
> - /* 00000289 pop ax */ 0x58,
> - /* 0000028A pop dx */ 0x5A,
> - /* 0000028B push dx */ 0x52,
> - /* 0000028C push ax */ 0x50,
> - /* 0000028D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 00000290 mov ax,0x5 */ 0xB8, 0x05, 0x00,
> - /* 00000293 out dx,ax */ 0xEF,
> - /* 00000294 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000297 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 0000029A out dx,ax */ 0xEF,
> - /* 0000029B pop ax */ 0x58,
> - /* 0000029C pop dx */ 0x5A,
> - /* 0000029D push dx */ 0x52,
> - /* 0000029E push ax */ 0x50,
> - /* 0000029F mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002A2 mov ax,0x8 */ 0xB8, 0x08, 0x00,
> - /* 000002A5 out dx,ax */ 0xEF,
> - /* 000002A6 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002A9 mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 000002AC out dx,ax */ 0xEF,
> - /* 000002AD pop ax */ 0x58,
> - /* 000002AE pop dx */ 0x5A,
> - /* 000002AF push dx */ 0x52,
> - /* 000002B0 push ax */ 0x50,
> - /* 000002B1 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002B4 mov ax,0x9 */ 0xB8, 0x09, 0x00,
> - /* 000002B7 out dx,ax */ 0xEF,
> - /* 000002B8 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002BB mov ax,0x0 */ 0xB8, 0x00, 0x00,
> - /* 000002BE out dx,ax */ 0xEF,
> - /* 000002BF pop ax */ 0x58,
> - /* 000002C0 pop dx */ 0x5A,
> - /* 000002C1 push dx */ 0x52,
> - /* 000002C2 push ax */ 0x50,
> - /* 000002C3 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002C6 mov ax,0x3 */ 0xB8, 0x03, 0x00,
> - /* 000002C9 out dx,ax */ 0xEF,
> - /* 000002CA mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002CD mov ax,0x20 */ 0xB8, 0x20, 0x00,
> - /* 000002D0 out dx,ax */ 0xEF,
> - /* 000002D1 pop ax */ 0x58,
> - /* 000002D2 pop dx */ 0x5A,
> - /* 000002D3 push dx */ 0x52,
> - /* 000002D4 push ax */ 0x50,
> - /* 000002D5 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002D8 mov ax,0x1 */ 0xB8, 0x01, 0x00,
> - /* 000002DB out dx,ax */ 0xEF,
> - /* 000002DC mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002DF mov ax,0x400 */ 0xB8, 0x00, 0x04,
> - /* 000002E2 out dx,ax */ 0xEF,
> - /* 000002E3 pop ax */ 0x58,
> - /* 000002E4 pop dx */ 0x5A,
> - /* 000002E5 push dx */ 0x52,
> - /* 000002E6 push ax */ 0x50,
> - /* 000002E7 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002EA mov ax,0x6 */ 0xB8, 0x06, 0x00,
> - /* 000002ED out dx,ax */ 0xEF,
> - /* 000002EE mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 000002F1 mov ax,0x400 */ 0xB8, 0x00, 0x04,
> - /* 000002F4 out dx,ax */ 0xEF,
> - /* 000002F5 pop ax */ 0x58,
> - /* 000002F6 pop dx */ 0x5A,
> - /* 000002F7 push dx */ 0x52,
> - /* 000002F8 push ax */ 0x50,
> - /* 000002F9 mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 000002FC mov ax,0x2 */ 0xB8, 0x02, 0x00,
> - /* 000002FF out dx,ax */ 0xEF,
> - /* 00000300 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000303 mov ax,0x300 */ 0xB8, 0x00, 0x03,
> - /* 00000306 out dx,ax */ 0xEF,
> - /* 00000307 pop ax */ 0x58,
> - /* 00000308 pop dx */ 0x5A,
> - /* 00000309 push dx */ 0x52,
> - /* 0000030A push ax */ 0x50,
> - /* 0000030B mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 0000030E mov ax,0x7 */ 0xB8, 0x07, 0x00,
> - /* 00000311 out dx,ax */ 0xEF,
> - /* 00000312 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000315 mov ax,0x300 */ 0xB8, 0x00, 0x03,
> - /* 00000318 out dx,ax */ 0xEF,
> - /* 00000319 pop ax */ 0x58,
> - /* 0000031A pop dx */ 0x5A,
> - /* 0000031B push dx */ 0x52,
> - /* 0000031C push ax */ 0x50,
> - /* 0000031D mov dx,0x1ce */ 0xBA, 0xCE, 0x01,
> - /* 00000320 mov ax,0x4 */ 0xB8, 0x04, 0x00,
> - /* 00000323 out dx,ax */ 0xEF,
> - /* 00000324 mov dx,0x1d0 */ 0xBA, 0xD0, 0x01,
> - /* 00000327 mov ax,0x41 */ 0xB8, 0x41, 0x00,
> - /* 0000032A out dx,ax */ 0xEF,
> - /* 0000032B pop ax */ 0x58,
> - /* 0000032C pop dx */ 0x5A,
> - /* 0000032D pop ax */ 0x58,
> - /* 0000032E pop dx */ 0x5A,
> - /* 0000032F jmp short 0x34c */ 0xEB, 0x1B,
> - /* 00000331 mov bx,0x40f1 */ 0xBB, 0xF1, 0x40,
> - /* 00000334 jmp short 0x34c */ 0xEB, 0x16,
> - /* 00000336 jmp short 0x350 */ 0xEB, 0x18,
> - /* 00000338 jmp short 0x350 */ 0xEB, 0x16,
> - /* 0000033A cmp al,0x3 */ 0x3C, 0x03,
> - /* 0000033C jz 0x345 */ 0x74, 0x07,
> - /* 0000033E cmp al,0x12 */ 0x3C, 0x12,
> - /* 00000340 jz 0x349 */ 0x74, 0x07,
> - /* 00000342 jmp word 0x22b */ 0xE9, 0xE6, 0xFE,
> - /* 00000345 mov al,0x30 */ 0xB0, 0x30,
> - /* 00000347 jmp short 0x34b */ 0xEB, 0x02,
> - /* 00000349 mov al,0x20 */ 0xB0, 0x20,
> - /* 0000034B iretw */ 0xCF,
> - /* 0000034C mov ax,0x4f */ 0xB8, 0x4F, 0x00,
> - /* 0000034F iretw */ 0xCF,
> - /* 00000350 mov ax,0x14f */ 0xB8, 0x4F, 0x01,
> - /* 00000353 iretw */ 0xCF,
> -};
> -#endif
> diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
> index c28171d13719..6feca8380224 100644
> --- a/OvmfPkg/QemuVideoDxe/Driver.c
> +++ b/OvmfPkg/QemuVideoDxe/Driver.c
> @@ -466,15 +466,6 @@ QemuVideoControllerDriverStart (
> goto UninstallGop;
> }
>
> - #if defined MDE_CPU_IA32 || defined MDE_CPU_X64
> - if ((Private->Variant == QEMU_VIDEO_BOCHS_MMIO) ||
> - (Private->Variant == QEMU_VIDEO_BOCHS))
> - {
> - InstallVbeShim (Card->Name, Private->GraphicsOutput.Mode->FrameBufferBase);
> - }
> -
> - #endif
> -
> gBS->RestoreTPL (OldTpl);
> return EFI_SUCCESS;
>
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.c b/OvmfPkg/QemuVideoDxe/VbeShim.c
> deleted file mode 100644
> index 8f151b96f9a5..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.c
> +++ /dev/null
> @@ -1,328 +0,0 @@
> -/** @file
> - Install a fake VGABIOS service handler (real mode Int10h) for the buggy
> - Windows 2008 R2 SP1 UEFI guest.
> -
> - The handler is never meant to be directly executed by a VCPU; it's there for
> - the internal real mode emulator of Windows 2008 R2 SP1.
> -
> - The code is based on Ralf Brown's Interrupt List:
> - <http://www.cs.cmu.edu/~ralf/files.html>
> - <http://www.ctyme.com/rbrown.htm>
> -
> - Copyright (C) 2014, Red Hat, Inc.
> - Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <IndustryStandard/LegacyVgaBios.h>
> -#include <Library/DebugLib.h>
> -#include <Library/PciLib.h>
> -#include <Library/PrintLib.h>
> -#include <OvmfPlatforms.h>
> -
> -#include "Qemu.h"
> -#include "VbeShim.h"
> -
> -#pragma pack (1)
> -typedef struct {
> - UINT16 Offset;
> - UINT16 Segment;
> -} IVT_ENTRY;
> -#pragma pack ()
> -
> -//
> -// This string is displayed by Windows 2008 R2 SP1 in the Screen Resolution,
> -// Advanced Settings dialog. It should be short.
> -//
> -STATIC CONST CHAR8 mProductRevision[] = "OVMF Int10h (fake)";
> -
> -/**
> - Install the VBE Info and VBE Mode Info structures, and the VBE service
> - handler routine in the C segment. Point the real-mode Int10h interrupt vector
> - to the handler. The only advertised mode is 1024x768x32.
> -
> - @param[in] CardName Name of the video card to be exposed in the
> - Product Name field of the VBE Info structure. The
> - parameter must originate from a
> - QEMU_VIDEO_CARD.Name field.
> - @param[in] FrameBufferBase Guest-physical base address of the video card's
> - frame buffer.
> -**/
> -VOID
> -InstallVbeShim (
> - IN CONST CHAR16 *CardName,
> - IN EFI_PHYSICAL_ADDRESS FrameBufferBase
> - )
> -{
> - EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF;
> - UINTN Segment0Pages;
> - IVT_ENTRY *Int0x10;
> - EFI_STATUS Segment0AllocationStatus;
> - UINT16 HostBridgeDevId;
> - UINTN Pam1Address;
> - UINT8 Pam1;
> - UINTN SegmentCPages;
> - VBE_INFO *VbeInfoFull;
> - VBE_INFO_BASE *VbeInfo;
> - UINT8 *Ptr;
> - UINTN Printed;
> - VBE_MODE_INFO *VbeModeInfo;
> -
> - if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & (BIT0|BIT7)) == BIT0) {
> - DEBUG ((
> - DEBUG_WARN,
> - "%a: page 0 protected, not installing VBE shim\n",
> - __func__
> - ));
> - DEBUG ((
> - DEBUG_WARN,
> - "%a: page 0 protection prevents Windows 7 from booting anyway\n",
> - __func__
> - ));
> - return;
> - }
> -
> - Segment0 = 0x00000;
> - SegmentC = 0xC0000;
> - SegmentF = 0xF0000;
> -
> - //
> - // Attempt to cover the real mode IVT with an allocation. This is a UEFI
> - // driver, hence the arch protocols have been installed previously. Among
> - // those, the CPU arch protocol has configured the IDT, so we can overwrite
> - // the IVT used in real mode.
> - //
> - // The allocation request may fail, eg. if LegacyBiosDxe has already run.
> - //
> - Segment0Pages = 1;
> - Int0x10 = (IVT_ENTRY *)(UINTN)(Segment0 + 0x10 * sizeof (IVT_ENTRY));
> - Segment0AllocationStatus = gBS->AllocatePages (
> - AllocateAddress,
> - EfiBootServicesCode,
> - Segment0Pages,
> - &Segment0
> - );
> -
> - if (EFI_ERROR (Segment0AllocationStatus)) {
> - EFI_PHYSICAL_ADDRESS Handler;
> -
> - //
> - // Check if a video BIOS handler has been installed previously -- we
> - // shouldn't override a real video BIOS with our shim, nor our own shim if
> - // it's already present.
> - //
> - Handler = (Int0x10->Segment << 4) + Int0x10->Offset;
> - if ((Handler >= SegmentC) && (Handler < SegmentF)) {
> - DEBUG ((
> - DEBUG_INFO,
> - "%a: Video BIOS handler found at %04x:%04x\n",
> - __func__,
> - Int0x10->Segment,
> - Int0x10->Offset
> - ));
> - return;
> - }
> -
> - //
> - // Otherwise we'll overwrite the Int10h vector, even though we may not own
> - // the page at zero.
> - //
> - DEBUG ((
> - DEBUG_INFO,
> - "%a: failed to allocate page at zero: %r\n",
> - __func__,
> - Segment0AllocationStatus
> - ));
> - } else {
> - //
> - // We managed to allocate the page at zero. SVN r14218 guarantees that it
> - // is NUL-filled.
> - //
> - ASSERT (Int0x10->Segment == 0x0000);
> - ASSERT (Int0x10->Offset == 0x0000);
> - }
> -
> - //
> - // Put the shim in place first.
> - //
> - // Start by determining the address of the PAM1 register.
> - //
> - HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
> - switch (HostBridgeDevId) {
> - case INTEL_82441_DEVICE_ID:
> - Pam1Address = PMC_REGISTER_PIIX4 (PIIX4_PAM1);
> - break;
> - case INTEL_Q35_MCH_DEVICE_ID:
> - Pam1Address = DRAMC_REGISTER_Q35 (MCH_PAM1);
> - break;
> - case MICROVM_PSEUDO_DEVICE_ID:
> - return;
> - default:
> - DEBUG ((
> - DEBUG_ERROR,
> - "%a: unknown host bridge device ID: 0x%04x\n",
> - __func__,
> - HostBridgeDevId
> - ));
> - ASSERT (FALSE);
> -
> - if (!EFI_ERROR (Segment0AllocationStatus)) {
> - gBS->FreePages (Segment0, Segment0Pages);
> - }
> -
> - return;
> - }
> -
> - //
> - // low nibble covers 0xC0000 to 0xC3FFF
> - // high nibble covers 0xC4000 to 0xC7FFF
> - // bit1 in each nibble is Write Enable
> - // bit0 in each nibble is Read Enable
> - //
> - Pam1 = PciRead8 (Pam1Address);
> - PciWrite8 (Pam1Address, Pam1 | (BIT1 | BIT0));
> -
> - //
> - // We never added memory space during PEI or DXE for the C segment, so we
> - // don't need to (and can't) allocate from there. Also, guest operating
> - // systems will see a hole in the UEFI memory map there.
> - //
> - SegmentCPages = 4;
> -
> - ASSERT (sizeof mVbeShim <= EFI_PAGES_TO_SIZE (SegmentCPages));
> - CopyMem ((VOID *)(UINTN)SegmentC, mVbeShim, sizeof mVbeShim);
> -
> - //
> - // Fill in the VBE INFO structure.
> - //
> - VbeInfoFull = (VBE_INFO *)(UINTN)SegmentC;
> - VbeInfo = &VbeInfoFull->Base;
> - Ptr = VbeInfoFull->Buffer;
> -
> - CopyMem (VbeInfo->Signature, "VESA", 4);
> - VbeInfo->VesaVersion = 0x0300;
> -
> - VbeInfo->OemNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, "QEMU", 5);
> - Ptr += 5;
> -
> - VbeInfo->Capabilities = BIT0; // DAC can be switched into 8-bit mode
> -
> - VbeInfo->ModeListAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - *(UINT16 *)Ptr = 0x00f1; // mode number
> - Ptr += 2;
> - *(UINT16 *)Ptr = 0xFFFF; // mode list terminator
> - Ptr += 2;
> -
> - VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536);
> - VbeInfo->OemSoftwareVersion = 0x0000;
> -
> - VbeInfo->VendorNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, "OVMF", 5);
> - Ptr += 5;
> -
> - VbeInfo->ProductNameAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - Printed = AsciiSPrint (
> - (CHAR8 *)Ptr,
> - sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer),
> - "%s",
> - CardName
> - );
> - Ptr += Printed + 1;
> -
> - VbeInfo->ProductRevAddress = (UINT32)SegmentC << 12 | (UINT16)(UINTN)Ptr;
> - CopyMem (Ptr, mProductRevision, sizeof mProductRevision);
> - Ptr += sizeof mProductRevision;
> -
> - ASSERT (sizeof VbeInfoFull->Buffer >= Ptr - VbeInfoFull->Buffer);
> - ZeroMem (Ptr, sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer));
> -
> - //
> - // Fil in the VBE MODE INFO structure.
> - //
> - VbeModeInfo = (VBE_MODE_INFO *)(VbeInfoFull + 1);
> -
> - //
> - // bit0: mode supported by present hardware configuration
> - // bit1: optional information available (must be =1 for VBE v1.2+)
> - // bit3: set if color, clear if monochrome
> - // bit4: set if graphics mode, clear if text mode
> - // bit5: mode is not VGA-compatible
> - // bit7: linear framebuffer mode supported
> - //
> - VbeModeInfo->ModeAttr = BIT7 | BIT5 | BIT4 | BIT3 | BIT1 | BIT0;
> -
> - //
> - // bit0: exists
> - // bit1: bit1: readable
> - // bit2: writeable
> - //
> - VbeModeInfo->WindowAAttr = BIT2 | BIT1 | BIT0;
> -
> - VbeModeInfo->WindowBAttr = 0x00;
> - VbeModeInfo->WindowGranularityKB = 0x0040;
> - VbeModeInfo->WindowSizeKB = 0x0040;
> - VbeModeInfo->WindowAStartSegment = 0xA000;
> - VbeModeInfo->WindowBStartSegment = 0x0000;
> - VbeModeInfo->WindowPositioningAddress = 0x0000;
> - VbeModeInfo->BytesPerScanLine = 1024 * 4;
> -
> - VbeModeInfo->Width = 1024;
> - VbeModeInfo->Height = 768;
> - VbeModeInfo->CharCellWidth = 8;
> - VbeModeInfo->CharCellHeight = 16;
> - VbeModeInfo->NumPlanes = 1;
> - VbeModeInfo->BitsPerPixel = 32;
> - VbeModeInfo->NumBanks = 1;
> - VbeModeInfo->MemoryModel = 6; // direct color
> - VbeModeInfo->BankSizeKB = 0;
> - VbeModeInfo->NumImagePagesLessOne = 0;
> - VbeModeInfo->Vbe3 = 0x01;
> -
> - VbeModeInfo->RedMaskSize = 8;
> - VbeModeInfo->RedMaskPos = 16;
> - VbeModeInfo->GreenMaskSize = 8;
> - VbeModeInfo->GreenMaskPos = 8;
> - VbeModeInfo->BlueMaskSize = 8;
> - VbeModeInfo->BlueMaskPos = 0;
> - VbeModeInfo->ReservedMaskSize = 8;
> - VbeModeInfo->ReservedMaskPos = 24;
> -
> - //
> - // bit1: Bytes in reserved field may be used by application
> - //
> - VbeModeInfo->DirectColorModeInfo = BIT1;
> -
> - VbeModeInfo->LfbAddress = (UINT32)FrameBufferBase;
> - VbeModeInfo->OffScreenAddress = 0;
> - VbeModeInfo->OffScreenSizeKB = 0;
> -
> - VbeModeInfo->BytesPerScanLineLinear = 1024 * 4;
> - VbeModeInfo->NumImagesLessOneBanked = 0;
> - VbeModeInfo->NumImagesLessOneLinear = 0;
> - VbeModeInfo->RedMaskSizeLinear = 8;
> - VbeModeInfo->RedMaskPosLinear = 16;
> - VbeModeInfo->GreenMaskSizeLinear = 8;
> - VbeModeInfo->GreenMaskPosLinear = 8;
> - VbeModeInfo->BlueMaskSizeLinear = 8;
> - VbeModeInfo->BlueMaskPosLinear = 0;
> - VbeModeInfo->ReservedMaskSizeLinear = 8;
> - VbeModeInfo->ReservedMaskPosLinear = 24;
> - VbeModeInfo->MaxPixelClockHz = 0;
> -
> - ZeroMem (VbeModeInfo->Reserved, sizeof VbeModeInfo->Reserved);
> -
> - //
> - // Clear Write Enable (bit1), keep Read Enable (bit0) set
> - //
> - PciWrite8 (Pam1Address, (Pam1 & ~BIT1) | BIT0);
> -
> - //
> - // Second, point the Int10h vector at the shim.
> - //
> - Int0x10->Segment = (UINT16)((UINT32)SegmentC >> 4);
> - Int0x10->Offset = (UINT16)((UINTN)(VbeModeInfo + 1) - SegmentC);
> -
> - DEBUG ((DEBUG_INFO, "%a: VBE shim installed\n", __func__));
> -}
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.asm b/OvmfPkg/QemuVideoDxe/VbeShim.asm
> deleted file mode 100644
> index 1d284b264124..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.asm
> +++ /dev/null
> @@ -1,281 +0,0 @@
> -;------------------------------------------------------------------------------
> -; @file
> -; A minimal Int10h stub that allows the Windows 2008 R2 SP1 UEFI guest's buggy,
> -; default VGA driver to switch to 1024x768x32, on the stdvga and QXL video
> -; cards of QEMU.
> -;
> -; Copyright (C) 2014, Red Hat, Inc.
> -; Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -;
> -; SPDX-License-Identifier: BSD-2-Clause-Patent
> -;
> -;------------------------------------------------------------------------------
> -
> -; enable this macro for debug messages
> -;%define DEBUG
> -
> -%macro DebugLog 1
> -%ifdef DEBUG
> - push si
> - mov si, %1
> - call PrintStringSi
> - pop si
> -%endif
> -%endmacro
> -
> -
> -BITS 16
> -ORG 0
> -
> -VbeInfo:
> -TIMES 256 nop
> -
> -VbeModeInfo:
> -TIMES 256 nop
> -
> -
> -Handler:
> - cmp ax, 0x4f00
> - je GetInfo
> - cmp ax, 0x4f01
> - je GetModeInfo
> - cmp ax, 0x4f02
> - je SetMode
> - cmp ax, 0x4f03
> - je GetMode
> - cmp ax, 0x4f10
> - je GetPmCapabilities
> - cmp ax, 0x4f15
> - je ReadEdid
> - cmp ah, 0x00
> - je SetModeLegacy
> - DebugLog StrUnknownFunction
> -Hang:
> - jmp Hang
> -
> -
> -GetInfo:
> - push es
> - push di
> - push ds
> - push si
> - push cx
> -
> - DebugLog StrEnterGetInfo
> -
> - ; target (es:di) set on input
> - push cs
> - pop ds
> - mov si, VbeInfo
> - ; source (ds:si) set now
> -
> - mov cx, 256
> - cld
> - rep movsb
> -
> - pop cx
> - pop si
> - pop ds
> - pop di
> - pop es
> - jmp Success
> -
> -
> -GetModeInfo:
> - push es
> - push di
> - push ds
> - push si
> - push cx
> -
> - DebugLog StrEnterGetModeInfo
> -
> - and cx, ~0x4000 ; clear potentially set LFB bit in mode number
> - cmp cx, 0x00f1
> - je KnownMode1
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode1:
> - ; target (es:di) set on input
> - push cs
> - pop ds
> - mov si, VbeModeInfo
> - ; source (ds:si) set now
> -
> - mov cx, 256
> - cld
> - rep movsb
> -
> - pop cx
> - pop si
> - pop ds
> - pop di
> - pop es
> - jmp Success
> -
> -
> -%define ATT_ADDRESS_REGISTER 0x03c0
> -%define VBE_DISPI_IOPORT_INDEX 0x01ce
> -%define VBE_DISPI_IOPORT_DATA 0x01d0
> -
> -%define VBE_DISPI_INDEX_XRES 0x1
> -%define VBE_DISPI_INDEX_YRES 0x2
> -%define VBE_DISPI_INDEX_BPP 0x3
> -%define VBE_DISPI_INDEX_ENABLE 0x4
> -%define VBE_DISPI_INDEX_BANK 0x5
> -%define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
> -%define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
> -%define VBE_DISPI_INDEX_X_OFFSET 0x8
> -%define VBE_DISPI_INDEX_Y_OFFSET 0x9
> -
> -%define VBE_DISPI_ENABLED 0x01
> -%define VBE_DISPI_LFB_ENABLED 0x40
> -
> -%macro BochsWrite 2
> - push dx
> - push ax
> -
> - mov dx, VBE_DISPI_IOPORT_INDEX
> - mov ax, %1
> - out dx, ax
> -
> - mov dx, VBE_DISPI_IOPORT_DATA
> - mov ax, %2
> - out dx, ax
> -
> - pop ax
> - pop dx
> -%endmacro
> -
> -SetMode:
> - push dx
> - push ax
> -
> - DebugLog StrEnterSetMode
> -
> - cmp bx, 0x40f1
> - je KnownMode2
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode2:
> -
> - ; unblank
> - mov dx, ATT_ADDRESS_REGISTER
> - mov al, 0x20
> - out dx, al
> -
> - BochsWrite VBE_DISPI_INDEX_ENABLE, 0
> - BochsWrite VBE_DISPI_INDEX_BANK, 0
> - BochsWrite VBE_DISPI_INDEX_X_OFFSET, 0
> - BochsWrite VBE_DISPI_INDEX_Y_OFFSET, 0
> - BochsWrite VBE_DISPI_INDEX_BPP, 32
> - BochsWrite VBE_DISPI_INDEX_XRES, 1024
> - BochsWrite VBE_DISPI_INDEX_VIRT_WIDTH, 1024
> - BochsWrite VBE_DISPI_INDEX_YRES, 768
> - BochsWrite VBE_DISPI_INDEX_VIRT_HEIGHT, 768
> - BochsWrite VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED
> -
> - pop ax
> - pop dx
> - jmp Success
> -
> -
> -GetMode:
> - DebugLog StrEnterGetMode
> - mov bx, 0x40f1
> - jmp Success
> -
> -
> -GetPmCapabilities:
> - DebugLog StrGetPmCapabilities
> - jmp Unsupported
> -
> -
> -ReadEdid:
> - DebugLog StrReadEdid
> - jmp Unsupported
> -
> -
> -SetModeLegacy:
> - DebugLog StrEnterSetModeLegacy
> -
> - cmp al, 0x03
> - je KnownMode3
> - cmp al, 0x12
> - je KnownMode4
> - DebugLog StrUnknownMode
> - jmp Hang
> -KnownMode3:
> - mov al, 0x30
> - jmp SetModeLegacyDone
> -KnownMode4:
> - mov al, 0x20
> -SetModeLegacyDone:
> - DebugLog StrExitSuccess
> - iret
> -
> -
> -Success:
> - DebugLog StrExitSuccess
> - mov ax, 0x004f
> - iret
> -
> -
> -Unsupported:
> - DebugLog StrExitUnsupported
> - mov ax, 0x014f
> - iret
> -
> -
> -%ifdef DEBUG
> -PrintStringSi:
> - pusha
> - push ds ; save original
> - push cs
> - pop ds
> - mov dx, 0x0402
> -PrintStringSiLoop:
> - lodsb
> - cmp al, 0
> - je PrintStringSiDone
> - out dx, al
> - jmp PrintStringSiLoop
> -PrintStringSiDone:
> - pop ds ; restore original
> - popa
> - ret
> -
> -
> -StrExitSuccess:
> - db 'Exit', 0x0a, 0
> -
> -StrExitUnsupported:
> - db 'Unsupported', 0x0a, 0
> -
> -StrUnknownFunction:
> - db 'Unknown Function', 0x0a, 0
> -
> -StrEnterGetInfo:
> - db 'GetInfo', 0x0a, 0
> -
> -StrEnterGetModeInfo:
> - db 'GetModeInfo', 0x0a, 0
> -
> -StrEnterGetMode:
> - db 'GetMode', 0x0a, 0
> -
> -StrEnterSetMode:
> - db 'SetMode', 0x0a, 0
> -
> -StrEnterSetModeLegacy:
> - db 'SetModeLegacy', 0x0a, 0
> -
> -StrUnknownMode:
> - db 'Unknown Mode', 0x0a, 0
> -
> -StrGetPmCapabilities:
> - db 'GetPmCapabilities', 0x0a, 0
> -
> -StrReadEdid:
> - db 'ReadEdid', 0x0a, 0
> -%endif
> diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.sh b/OvmfPkg/QemuVideoDxe/VbeShim.sh
> deleted file mode 100755
> index 7a0095a813cf..000000000000
> --- a/OvmfPkg/QemuVideoDxe/VbeShim.sh
> +++ /dev/null
> @@ -1,82 +0,0 @@
> -#!/bin/sh
> -###
> -# @file
> -# Shell script to assemble and dump the fake Int10h handler from NASM source to
> -# a C array.
> -#
> -# Copyright (C) 2014, Red Hat, Inc.
> -# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -###
> -
> -set -e -u
> -
> -STEM=$(dirname -- "$0")/$(basename -- "$0" .sh)
> -
> -#
> -# Install exit handler -- remove temporary files.
> -#
> -exit_handler()
> -{
> - rm -f -- "$STEM".bin "$STEM".disasm "$STEM".offsets "$STEM".insns \
> - "$STEM".bytes
> -}
> -trap exit_handler EXIT
> -
> -#
> -# Assemble the source file.
> -# (nasm doesn't recognize the "--" end-of-options delimiter;
> -# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
> -#
> -nasm -o "$STEM".bin "$STEM".asm
> -
> -#
> -# Disassemble it, in order to get a binary dump associated with the source.
> -# (ndisasm doesn't recognize the "--" end-of-options delimiter;
> -# <https://bugzilla.nasm.us/show_bug.cgi?id=3392829>.)
> -#
> -ndisasm "$STEM".bin >"$STEM".disasm
> -
> -#
> -# Create three files, each with one column of the disassembly.
> -#
> -# The first column contains the offsets, and it starts the comment.
> -#
> -cut -c 1-8 -- "$STEM".disasm \
> -| sed -e 's,^, /* ,' >"$STEM".offsets
> -
> -#
> -# The second column contains the assembly-language instructions, and it closes
> -# the comment. We first pad it to 30 characters.
> -#
> -cut -c 29- -- "$STEM".disasm \
> -| sed -e 's,$, ,' \
> - -e 's,^\(.\{30\}\).*$,\1 */,' >"$STEM".insns
> -
> -#
> -# The third column contains the bytes corresponding to the instruction,
> -# represented as C integer constants. First strip trailing whitespace from the
> -# middle column of the input disassembly, then process pairs of nibbles.
> -#
> -cut -c 11-28 -- "$STEM".disasm \
> -| sed -e 's, \+$,,' -e 's/\(..\)/ 0x\1,/g' >"$STEM".bytes
> -
> -#
> -# Write the output file, recombining the columns. The output should have CRLF
> -# line endings.
> -#
> -{
> - printf '//\n'
> - printf '// THIS FILE WAS GENERATED BY "%s". DO NOT EDIT.\n' \
> - "$(basename -- "$0")"
> - printf '//\n'
> - printf '#ifndef _VBE_SHIM_H_\n'
> - printf '#define _VBE_SHIM_H_\n'
> - printf 'STATIC CONST UINT8 mVbeShim[] = {\n'
> - paste -d ' ' -- "$STEM".offsets "$STEM".insns "$STEM".bytes
> - printf '};\n'
> - printf '#endif\n'
> -} \
> -| unix2dos >"$STEM".h
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115380): https://edk2.groups.io/g/devel/message/115380
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 10:44 ` Laszlo Ersek
@ 2024-02-13 14:02 ` Gerd Hoffmann
2024-02-13 14:55 ` Pedro Falcato
2024-02-13 17:28 ` Laszlo Ersek
0 siblings, 2 replies; 13+ messages in thread
From: Gerd Hoffmann @ 2024-02-13 14:02 UTC (permalink / raw)
To: Laszlo Ersek; +Cc: devel, Oliver Steffen, Ard Biesheuvel, Jiewen Yao, dun.tan
On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
> Hi Gerd,
>
> On 2/13/24 09:59, Gerd Hoffmann wrote:
> > Removing CSM support broke VbeShim.
> >
> > I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> > Didn't investigate in detail, but apparently the real mode address space
> > is not considered being special any more, which invalidates some
> > assumptions of the vbeshim code.
> >
> > The guest os which depends on vbeshim for video support is -- according
> > to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> > more than four years ago.
> >
> > Time to retire VbeShim. RIP.
>
> I don't understand this, and/or disagree.
>
> (1) Please collect more information about the ASSERT()s (the failure mode you are seeing).
> Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
Fair enough. The ASSERT() I see firing is this:
ASSERT /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142): Int0x10->Segment == 0x0000
It reproduces for me when booting with a bunch of hot-pluggable CPUs (qemu -smp 2,maxcpus=32).
I bisected this, and it seems indeed totally unrelated to CSM removal:
725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
Author: Dun Tan <dun.tan@intel.com>
Date: Fri Dec 1 10:53:32 2023 +0800
UefiCpuPkg: Avoid assuming only one smmbasehob
New theory: This is a NULL pointer dereference corrupting the zero page.
I still think it makes sense to retire VbeShim, but of course with a
different commit message and also the leftover function declaration
removed.
Can we unmap the zero page to avoid NULL pointer dereferences going
unnoticed (after removing VbeShim)? IIRC I've seen an config option
for that a while back, but can't find it now in the source tree ...
take care,
Gerd
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115383): https://edk2.groups.io/g/devel/message/115383
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 14:02 ` Gerd Hoffmann
@ 2024-02-13 14:55 ` Pedro Falcato
2024-02-13 14:56 ` Ard Biesheuvel
2024-02-13 17:28 ` Laszlo Ersek
1 sibling, 1 reply; 13+ messages in thread
From: Pedro Falcato @ 2024-02-13 14:55 UTC (permalink / raw)
To: devel, kraxel
Cc: Laszlo Ersek, Oliver Steffen, Ard Biesheuvel, Jiewen Yao, dun.tan
On Tue, Feb 13, 2024 at 2:02 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
> > Hi Gerd,
> >
> > On 2/13/24 09:59, Gerd Hoffmann wrote:
> > > Removing CSM support broke VbeShim.
> > >
> > > I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> > > Didn't investigate in detail, but apparently the real mode address space
> > > is not considered being special any more, which invalidates some
> > > assumptions of the vbeshim code.
> > >
> > > The guest os which depends on vbeshim for video support is -- according
> > > to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> > > more than four years ago.
> > >
> > > Time to retire VbeShim. RIP.
> >
> > I don't understand this, and/or disagree.
> >
> > (1) Please collect more information about the ASSERT()s (the failure mode you are seeing).
> > Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
>
> Fair enough. The ASSERT() I see firing is this:
>
> ASSERT /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142): Int0x10->Segment == 0x0000
>
> It reproduces for me when booting with a bunch of hot-pluggable CPUs (qemu -smp 2,maxcpus=32).
>
> I bisected this, and it seems indeed totally unrelated to CSM removal:
>
> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
> commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
> Author: Dun Tan <dun.tan@intel.com>
> Date: Fri Dec 1 10:53:32 2023 +0800
>
> UefiCpuPkg: Avoid assuming only one smmbasehob
>
> New theory: This is a NULL pointer dereference corrupting the zero page.
Tangentially related: Maybe it's time to unmap the NULL page? :)
--
Pedro
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115384): https://edk2.groups.io/g/devel/message/115384
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 14:55 ` Pedro Falcato
@ 2024-02-13 14:56 ` Ard Biesheuvel
2024-02-13 15:07 ` Pedro Falcato
2024-02-13 15:28 ` Gerd Hoffmann
0 siblings, 2 replies; 13+ messages in thread
From: Ard Biesheuvel @ 2024-02-13 14:56 UTC (permalink / raw)
To: devel, pedro.falcato
Cc: kraxel, Laszlo Ersek, Oliver Steffen, Ard Biesheuvel, Jiewen Yao,
dun.tan
On Tue, 13 Feb 2024 at 15:55, Pedro Falcato <pedro.falcato@gmail.com> wrote:
>
> On Tue, Feb 13, 2024 at 2:02 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
> >
> > On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
> > > Hi Gerd,
> > >
> > > On 2/13/24 09:59, Gerd Hoffmann wrote:
> > > > Removing CSM support broke VbeShim.
> > > >
> > > > I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> > > > Didn't investigate in detail, but apparently the real mode address space
> > > > is not considered being special any more, which invalidates some
> > > > assumptions of the vbeshim code.
> > > >
> > > > The guest os which depends on vbeshim for video support is -- according
> > > > to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> > > > more than four years ago.
> > > >
> > > > Time to retire VbeShim. RIP.
> > >
> > > I don't understand this, and/or disagree.
> > >
> > > (1) Please collect more information about the ASSERT()s (the failure mode you are seeing).
> > > Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
> >
> > Fair enough. The ASSERT() I see firing is this:
> >
> > ASSERT /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142): Int0x10->Segment == 0x0000
> >
> > It reproduces for me when booting with a bunch of hot-pluggable CPUs (qemu -smp 2,maxcpus=32).
> >
> > I bisected this, and it seems indeed totally unrelated to CSM removal:
> >
> > 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
> > commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
> > Author: Dun Tan <dun.tan@intel.com>
> > Date: Fri Dec 1 10:53:32 2023 +0800
> >
> > UefiCpuPkg: Avoid assuming only one smmbasehob
> >
> > New theory: This is a NULL pointer dereference corrupting the zero page.
>
> Tangentially related: Maybe it's time to unmap the NULL page? :)
>
That would break many 3rd party GPU and network drivers.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115385): https://edk2.groups.io/g/devel/message/115385
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 14:56 ` Ard Biesheuvel
@ 2024-02-13 15:07 ` Pedro Falcato
2024-02-13 15:28 ` Gerd Hoffmann
1 sibling, 0 replies; 13+ messages in thread
From: Pedro Falcato @ 2024-02-13 15:07 UTC (permalink / raw)
To: Ard Biesheuvel
Cc: devel, kraxel, Laszlo Ersek, Oliver Steffen, Ard Biesheuvel,
Jiewen Yao, dun.tan
On Tue, Feb 13, 2024 at 2:56 PM Ard Biesheuvel <ardb@kernel.org> wrote:
>
> On Tue, 13 Feb 2024 at 15:55, Pedro Falcato <pedro.falcato@gmail.com> wrote:
> >
> > On Tue, Feb 13, 2024 at 2:02 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
> > >
> > > On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
> > > > Hi Gerd,
> > > >
> > > > On 2/13/24 09:59, Gerd Hoffmann wrote:
> > > > > Removing CSM support broke VbeShim.
> > > > >
> > > > > I see ASSERTS being triggered, both in vbeshim code and elsewhere.
> > > > > Didn't investigate in detail, but apparently the real mode address space
> > > > > is not considered being special any more, which invalidates some
> > > > > assumptions of the vbeshim code.
> > > > >
> > > > > The guest os which depends on vbeshim for video support is -- according
> > > > > to the comments -- Windows 2008 R2. Which went EOL in January 2020,
> > > > > more than four years ago.
> > > > >
> > > > > Time to retire VbeShim. RIP.
> > > >
> > > > I don't understand this, and/or disagree.
> > > >
> > > > (1) Please collect more information about the ASSERT()s (the failure mode you are seeing).
> > > > Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
> > >
> > > Fair enough. The ASSERT() I see firing is this:
> > >
> > > ASSERT /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142): Int0x10->Segment == 0x0000
> > >
> > > It reproduces for me when booting with a bunch of hot-pluggable CPUs (qemu -smp 2,maxcpus=32).
> > >
> > > I bisected this, and it seems indeed totally unrelated to CSM removal:
> > >
> > > 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
> > > commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
> > > Author: Dun Tan <dun.tan@intel.com>
> > > Date: Fri Dec 1 10:53:32 2023 +0800
> > >
> > > UefiCpuPkg: Avoid assuming only one smmbasehob
> > >
> > > New theory: This is a NULL pointer dereference corrupting the zero page.
> >
> > Tangentially related: Maybe it's time to unmap the NULL page? :)
> >
>
>
> That would break many 3rd party GPU and network drivers.
Do they need the zero page to be writable, at least?
The fact that it's 2024 and most of EFI still has the zero page mapped
*and* writable is, uh, annoying to say the least. Even
write-protecting would be a great option.
IMO there's currently little incentive in fixing those 3rd party
blobs, because everything Just Works(tm), except when it doesn't. Like
it seems to have happened this time around.
(and to compound the problem, there's no sort of UBSAN or ASAN support
to catch these issues either. So you virtually can't find NULL pointer
derefs, unless the compiler can see it and trap)
--
Pedro
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115386): https://edk2.groups.io/g/devel/message/115386
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 14:56 ` Ard Biesheuvel
2024-02-13 15:07 ` Pedro Falcato
@ 2024-02-13 15:28 ` Gerd Hoffmann
2024-02-13 15:47 ` Pedro Falcato
1 sibling, 1 reply; 13+ messages in thread
From: Gerd Hoffmann @ 2024-02-13 15:28 UTC (permalink / raw)
To: Ard Biesheuvel
Cc: devel, pedro.falcato, Laszlo Ersek, Oliver Steffen,
Ard Biesheuvel, Jiewen Yao, dun.tan
Hi,
> > > New theory: This is a NULL pointer dereference corrupting the zero page.
> >
> > Tangentially related: Maybe it's time to unmap the NULL page? :)
Suggestion: read mails to the end. Had the same idea + question ;)
> That would break many 3rd party GPU and network drivers.
For virtual machine firmware it might be acceptable to just ignore
that, or at least default to an unmapped zero page and offer an
qemu fw-cfg override in case someone needs that when pci-assigning
nic or gpu to a VM.
take care,
Gerd
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115387): https://edk2.groups.io/g/devel/message/115387
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 15:28 ` Gerd Hoffmann
@ 2024-02-13 15:47 ` Pedro Falcato
2024-02-13 17:31 ` Laszlo Ersek
0 siblings, 1 reply; 13+ messages in thread
From: Pedro Falcato @ 2024-02-13 15:47 UTC (permalink / raw)
To: Gerd Hoffmann
Cc: Ard Biesheuvel, devel, Laszlo Ersek, Oliver Steffen,
Ard Biesheuvel, Jiewen Yao, dun.tan
On Tue, Feb 13, 2024 at 3:28 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Hi,
>
> > > > New theory: This is a NULL pointer dereference corrupting the zero page.
> > >
> > > Tangentially related: Maybe it's time to unmap the NULL page? :)
>
> Suggestion: read mails to the end. Had the same idea + question ;)
Sorry! My bad. Apparently I don't know how to read ;)
>
> > That would break many 3rd party GPU and network drivers.
>
> For virtual machine firmware it might be acceptable to just ignore
> that, or at least default to an unmapped zero page and offer an
> qemu fw-cfg override in case someone needs that when pci-assigning
> nic or gpu to a VM.
IMO this is a really nice suggestion. Could QEMU be modified to inject
the fwcfg option if a VFIO device is present or something? Would that
solve most of the compatibility issues? Are OVMF and QEMU usually
packaged (distro-side) in somewhat of a lockstep?
--
Pedro
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115388): https://edk2.groups.io/g/devel/message/115388
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 14:02 ` Gerd Hoffmann
2024-02-13 14:55 ` Pedro Falcato
@ 2024-02-13 17:28 ` Laszlo Ersek
2024-02-13 18:13 ` Laszlo Ersek
1 sibling, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2024-02-13 17:28 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: devel, Oliver Steffen, Ard Biesheuvel, Jiewen Yao, dun.tan
On 2/13/24 15:02, Gerd Hoffmann wrote:
> On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
>> Hi Gerd,
>>
>> On 2/13/24 09:59, Gerd Hoffmann wrote:
>>> Removing CSM support broke VbeShim.
>>>
>>> I see ASSERTS being triggered, both in vbeshim code and elsewhere.
>>> Didn't investigate in detail, but apparently the real mode address space
>>> is not considered being special any more, which invalidates some
>>> assumptions of the vbeshim code.
>>>
>>> The guest os which depends on vbeshim for video support is -- according
>>> to the comments -- Windows 2008 R2. Which went EOL in January 2020,
>>> more than four years ago.
>>>
>>> Time to retire VbeShim. RIP.
>>
>> I don't understand this, and/or disagree.
>>
>> (1) Please collect more information about the ASSERT()s (the failure mode you are seeing).
>> Because, (a) in the code that's being removed in this patch, I don't see any ASSERT() that should fire, and (b) I cannot reproduce the issue. (In fact my log contains "InstallVbeShim: VBE shim installed".)
>
> Fair enough. The ASSERT() I see firing is this:
>
> ASSERT /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142): Int0x10->Segment == 0x0000
Something nasty is going on here;
138 //
139 // We managed to allocate the page at zero. SVN r14218 guarantees that it
140 // is NUL-filled.
141 //
142 ASSERT (Int0x10->Segment == 0x0000);
"SVN r14218" is git commit d436d5ca0936 -- "Guarantee that free memory in the 4K page starting at address 0 is always cleared to 0".
>
> It reproduces for me when booting with a bunch of hot-pluggable CPUs (qemu -smp 2,maxcpus=32).
>
> I bisected this,
Thank you!
> and it seems indeed totally unrelated to CSM removal:
>
> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
> commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
> Author: Dun Tan <dun.tan@intel.com>
> Date: Fri Dec 1 10:53:32 2023 +0800
>
> UefiCpuPkg: Avoid assuming only one smmbasehob
>
> New theory: This is a NULL pointer dereference corrupting the zero page.
Interesting; this commit is indeed related to having a multitude of (possible?) CPUs.
>
> I still think it makes sense to retire VbeShim, but of course with a
> different commit message and also the leftover function declaration
> removed.
I agree, although in this case, the VBE shim has unexpectedly caught an independent bug for us ;)
>
> Can we unmap the zero page to avoid NULL pointer dereferences going
> unnoticed (after removing VbeShim)? IIRC I've seen an config option
> for that a while back, but can't find it now in the source tree ...
Yes. See "PcdNullPointerDetectionPropertyMask" in "MdeModulePkg/MdeModulePkg.dec".
See NULL_DETECTION_NONSTOP_MODE in CpuDxe (and PiSmmCpuDxeSmm). In CpuDxe, there's a fault handler that's supposed to dump the context to the serial port. From looking only briefly, I'm not sure where the actual unmapping happens (so that we get a page fault in the first place).
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115400): https://edk2.groups.io/g/devel/message/115400
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 15:47 ` Pedro Falcato
@ 2024-02-13 17:31 ` Laszlo Ersek
0 siblings, 0 replies; 13+ messages in thread
From: Laszlo Ersek @ 2024-02-13 17:31 UTC (permalink / raw)
To: Pedro Falcato, Gerd Hoffmann
Cc: Ard Biesheuvel, devel, Oliver Steffen, Ard Biesheuvel, Jiewen Yao,
dun.tan
On 2/13/24 16:47, Pedro Falcato wrote:
> On Tue, Feb 13, 2024 at 3:28 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
>>
>> Hi,
>>
>>>>> New theory: This is a NULL pointer dereference corrupting the zero page.
>>>>
>>>> Tangentially related: Maybe it's time to unmap the NULL page? :)
>>
>> Suggestion: read mails to the end. Had the same idea + question ;)
>
> Sorry! My bad. Apparently I don't know how to read ;)
>
>>
>>> That would break many 3rd party GPU and network drivers.
>>
>> For virtual machine firmware it might be acceptable to just ignore
>> that, or at least default to an unmapped zero page and offer an
>> qemu fw-cfg override in case someone needs that when pci-assigning
>> nic or gpu to a VM.
>
> IMO this is a really nice suggestion. Could QEMU be modified to inject
> the fwcfg option if a VFIO device is present or something? Would that
> solve most of the compatibility issues? Are OVMF and QEMU usually
> packaged (distro-side) in somewhat of a lockstep?
>
Trying to integrate this closely with QEMU looks like a recipe for
derailment, if past experience is to be listened to...
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115401): https://edk2.groups.io/g/devel/message/115401
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 17:28 ` Laszlo Ersek
@ 2024-02-13 18:13 ` Laszlo Ersek
2024-02-13 20:25 ` Laszlo Ersek
0 siblings, 1 reply; 13+ messages in thread
From: Laszlo Ersek @ 2024-02-13 18:13 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: devel, Oliver Steffen, Ard Biesheuvel, Jiewen Yao, dun.tan
On 2/13/24 18:28, Laszlo Ersek wrote:
> On 2/13/24 15:02, Gerd Hoffmann wrote:
>> On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
>>> Hi Gerd,
>>>
>>> On 2/13/24 09:59, Gerd Hoffmann wrote:
>>>> Removing CSM support broke VbeShim.
>>>>
>>>> I see ASSERTS being triggered, both in vbeshim code and elsewhere.
>>>> Didn't investigate in detail, but apparently the real mode address
>>>> space is not considered being special any more, which invalidates
>>>> some assumptions of the vbeshim code.
>>>>
>>>> The guest os which depends on vbeshim for video support is --
>>>> according to the comments -- Windows 2008 R2. Which went EOL in
>>>> January 2020, more than four years ago.
>>>>
>>>> Time to retire VbeShim. RIP.
>>>
>>> I don't understand this, and/or disagree.
>>>
>>> (1) Please collect more information about the ASSERT()s (the failure
>>> mode you are seeing).
>>> Because, (a) in the code that's being removed in this patch, I don't
>>> see any ASSERT() that should fire, and (b) I cannot reproduce the
>>> issue. (In fact my log contains "InstallVbeShim: VBE shim
>>> installed".)
>>
>> Fair enough. The ASSERT() I see firing is this:
>>
>> ASSERT
>> /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142):
>> Int0x10->Segment == 0x0000
>
> Something nasty is going on here;
>
> 138 //
> 139 // We managed to allocate the page at zero. SVN r14218 guarantees that it
> 140 // is NUL-filled.
> 141 //
> 142 ASSERT (Int0x10->Segment == 0x0000);
>
> "SVN r14218" is git commit d436d5ca0936 -- "Guarantee that free memory
> in the 4K page starting at address 0 is always cleared to 0".
>
>>
>> It reproduces for me when booting with a bunch of hot-pluggable CPUs
>> (qemu -smp 2,maxcpus=32).
>>
>> I bisected this,
>
> Thank you!
>
>> and it seems indeed totally unrelated to CSM removal:
>>
>> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
>> commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
>> Author: Dun Tan <dun.tan@intel.com>
>> Date: Fri Dec 1 10:53:32 2023 +0800
>>
>> UefiCpuPkg: Avoid assuming only one smmbasehob
>>
>> New theory: This is a NULL pointer dereference corrupting the zero
>> page.
>
> Interesting; this commit is indeed related to having a multitude of
> (possible?) CPUs.
>
>>
>> I still think it makes sense to retire VbeShim, but of course with a
>> different commit message and also the leftover function declaration
>> removed.
>
> I agree, although in this case, the VBE shim has unexpectedly caught
> an independent bug for us ;)
>
>>
>> Can we unmap the zero page to avoid NULL pointer dereferences going
>> unnoticed (after removing VbeShim)? IIRC I've seen an config option
>> for that a while back, but can't find it now in the source tree ...
>
> Yes. See "PcdNullPointerDetectionPropertyMask" in
> "MdeModulePkg/MdeModulePkg.dec".
>
> See NULL_DETECTION_NONSTOP_MODE in CpuDxe (and PiSmmCpuDxeSmm). In
> CpuDxe, there's a fault handler that's supposed to dump the context to
> the serial port. From looking only briefly, I'm not sure where the
> actual unmapping happens (so that we get a page fault in the first
> place).
Bingo; after building with "--pcd
gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask=65",
and booting with 32 possible VCPUs and 1 present (= cold-plugged) VCPU:
* tail of firmware log (until crash):
> Loading SMM driver at 0x0007FF88000 EntryPoint=0x0007FFA63E5 PiSmmCpuDxeSmm.efi
> SMRR Base: 0x7F000000, SMRR Size: 0x1000000
> PcdCpuSmmCodeAccessCheckEnable = 1
> mAddressEncMask = 0x0
> PcdControlFlowEnforcementPropertyMask = 0
> SMRAM TileSize = 0x00002000 (0x00001000, 0x00001000)
> PiCpuSmmEntry: gSmmBaseHobGuid not found!
> New Allcoated SMRAM SaveState Buffer (0x7FF41000, 0x00046000)
> CPU[000] APIC ID=0000 SMBASE=7FF39000 SaveState=7FF48C00 Size=00000400
> Stacks - 0x7FE81000
> mSmmStackSize - 0x6000
> PcdCpuSmmStackGuard - 0x1
* serial log:
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 000000007FF39000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 0000000000000006, R9 - 0000000000000100, R10 - 000000007E8C3841
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010046
> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 0000000000000006, R9 - 0000000000000100, R10 - 000000007E8C3841
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AE6C, CS - 0000000000000038, RFLAGS - 0000000000010046
> RAX - 0000000000000000, RCX - 000000007FF48C00, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 0000000000000400, R9 - 0000000000000100, R10 - 000000007E8C3841
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000008, RCX - 0000000000000000, RDX - 000000007FF3B000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000008, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000008, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000008, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000010, RCX - 0000000000000000, RDX - 000000007FF3D000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000010, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000010, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000010, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000018, RCX - 0000000000000000, RDX - 000000007FF3F000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000018, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000018, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000018, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000020, RCX - 0000000000000000, RDX - 000000007FF41000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000020, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000020, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000020, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000028, RCX - 0000000000000000, RDX - 000000007FF43000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000028, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000028, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000028, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000030, RCX - 0000000000000000, RDX - 000000007FF45000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000030, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000030, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000030, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000038, RCX - 0000000000000000, RDX - 000000007FF47000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000038, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000038, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000038, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000040, RCX - 0000000000000000, RDX - 000000007FF49000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000040, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000040, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000040, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000048, RCX - 0000000000000000, RDX - 000000007FF4B000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000048, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000048, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000048, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000050, RCX - 0000000000000000, RDX - 000000007FF4D000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000050, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000050, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000050, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000058, RCX - 0000000000000000, RDX - 000000007FF4F000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000058, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000058, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000058, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000060, RCX - 0000000000000000, RDX - 000000007FF51000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000060, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000060, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000060, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000068, RCX - 0000000000000000, RDX - 000000007FF53000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000068, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000068, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000068, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000070, RCX - 0000000000000000, RDX - 000000007FF55000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000070, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000070, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000070, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000078, RCX - 0000000000000000, RDX - 000000007FF57000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000078, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000078, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000078, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000080, RCX - 0000000000000000, RDX - 000000007FF59000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000080, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000080, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000080, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000088, RCX - 0000000000000000, RDX - 000000007FF5B000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000088, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000088, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000088, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000090, RCX - 0000000000000000, RDX - 000000007FF5D000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000090, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000090, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000090, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 0000000000000098, RCX - 0000000000000000, RDX - 000000007FF5F000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000098, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 0000000000000098, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 0000000000000098, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000A0, RCX - 0000000000000000, RDX - 000000007FF61000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000A0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000A0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000A0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000A8, RCX - 0000000000000000, RDX - 000000007FF63000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000A8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000A8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000A8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000B0, RCX - 0000000000000000, RDX - 000000007FF65000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000B0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000B0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000B0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000B8, RCX - 0000000000000000, RDX - 000000007FF67000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000B8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000B8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000B8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000C0, RCX - 0000000000000000, RDX - 000000007FF69000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000C0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000C0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000C0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000C8, RCX - 0000000000000000, RDX - 000000007FF6B000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000C8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000C8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000C8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000D0, RCX - 0000000000000000, RDX - 000000007FF6D000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000D0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000D0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000D0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000D8, RCX - 0000000000000000, RDX - 000000007FF6F000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000D8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000D8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000D8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000E0, RCX - 0000000000000000, RDX - 000000007FF71000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000E0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000E0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000E0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000E8, RCX - 0000000000000000, RDX - 000000007FF73000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000E8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000E8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000E8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000F0, RCX - 0000000000000000, RDX - 000000007FF75000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000F0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000F0, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000F0, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
> RAX - 00000000000000F8, RCX - 0000000000000000, RDX - 000000007FF77000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000F8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
> RAX - 00000000000000F8, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
> RSI - 0000000000001000, RDI - 0000000000000046
> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
> GS - 0000000000000030, SS - 0000000000000030
> CR0 - 0000000080010033, CR2 - 00000000000000F8, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
> FXSAVE_STATE - 000000007EC96470
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
> RIP - 000000007FFA9501, CS - 0000000000000038, RFLAGS - 0000000000010046
> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 0000000000000000
> RBX - 000000002C100800, RSP - 000000007FE86F00, RBP - 000000007FE86F10
> RSI - 0000000000000000, RDI - 0000000000004200
> R8 - 000000007FF87818, R9 - 000000007FFB60A0, R10 - 0000000000000000
> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
> R14 - 0000000000000000, R15 - 0000000000000000
> DS - 0000000000000000, ES - 0000000000000000, FS - 0000000000000000
> GS - 0000000000000000, SS - 0000000000000000
> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
> CR4 - 0000000000000668, CR8 - 0000000000000000
> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
> GDTR - 000000007FFB6240 000000000000004F, LDTR - 0000000000000000
> IDTR - 000000007FE80000 00000000000001FF, TR - 0000000000000000
> FXSAVE_STATE - 000000007FE86B60
> !!!! Find image based on IP(0x7FFA9501)
> Build/Ovmf3264/NOOPT_GCC5/X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm/DEBUG/PiSmmCpuDxeSmm.dll
> (ImageBase=000000007FF88000, EntryPoint=000000007FFA63E5) !!!!
The RIP values are mostly consistent across these page faults:
32 000000007FF8AD50
32 000000007FF8AD82
1 000000007FF8AE6C
1 000000007FFA9501
That is, one PF for each CPU at 000000007FF8AD50, and one PF for each
CPU at 000000007FF8AD82.
Furthermore, if we check the invalid addresses (CR2 -- Page Fault Linear
Address) of these faults, we see that the instruction 000000007FF8AD50
runs in a loop body that iterates, in steps of 0x08, from 0x00 to 0xF8.
The same applies to the instruction at 000000007FF8AD82.
Now, if we check
objdump -S Build/Ovmf3264/NOOPT_GCC5/X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm/DEBUG/PiSmmCpuDxeSmm.debug
then that confirms that relative offset 0x1E3E5 (= EntryPoint-ImageBase
= 000000007FFA63E5-000000007FF88000) is indeed the entry point:
> 000000000001e3e5 <_ModuleEntryPoint>:
> EFIAPI
> _ModuleEntryPoint (
> IN EFI_HANDLE ImageHandle,
> IN EFI_SYSTEM_TABLE *SystemTable
> )
> {
> 1e3e5: 55 push %rbp
> 1e3e6: 48 89 e5 mov %rsp,%rbp
> 1e3e9: 48 83 ec 30 sub $0x30,%rsp
> 1e3ed: 48 89 4d 10 mov %rcx,0x10(%rbp)
> 1e3f1: 48 89 55 18 mov %rdx,0x18(%rbp)
> EFI_STATUS Status;
> EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
Thus we can investigate both faulting instruction pointers too:
(a) 000000007FF8AD50 - 000000007FF88000 = 2D50
(b) 000000007FF8AD82 - 000000007FF88000 = 2D82
And then objdump reports:
(a)
> //
> // Retrieve APIC ID of each enabled processor from the MP Services protocol.
> // Also compute the SMBASE address, CPU Save State address, and CPU Save state
> // size for each CPU in the platform
> //
> for (Index = 0; Index < mMaxNumberOfCpus; Index++) {
> 2d0c: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp)
> 2d13: 00
> 2d14: e9 eb 01 00 00 jmpq 2f04 <PiCpuSmmEntry+0xcdb>
> if (!mSmmRelocated) {
> 2d19: 0f b6 05 b0 b7 02 00 movzbl 0x2b7b0(%rip),%eax # 2e4d0 <mSmmRelocated>
> 2d20: 84 c0 test %al,%al
> 2d22: 75 2f jne 2d53 <PiCpuSmmEntry+0xb2a>
> mCpuHotPlugData.SmBase[Index] = (UINTN)Buffer + Index * TileSize - SMM_HANDLER_OFFSET;
> 2d24: 48 8b 45 d8 mov -0x28(%rbp),%rax
> 2d28: 48 0f af 45 a0 imul -0x60(%rbp),%rax
> 2d2d: 48 89 c2 mov %rax,%rdx
> 2d30: 48 8b 45 d0 mov -0x30(%rbp),%rax
> 2d34: 48 01 c2 add %rax,%rdx
> 2d37: 48 8b 0d 72 b3 02 00 mov 0x2b372(%rip),%rcx # 2e0b0 <mCpuHotPlugData+0x10>
> 2d3e: 48 8b 45 d8 mov -0x28(%rbp),%rax
> 2d42: 48 c1 e0 03 shl $0x3,%rax
> 2d46: 48 01 c8 add %rcx,%rax
> 2d49: 48 81 ea 00 80 00 00 sub $0x8000,%rdx
> 2d50: 48 89 10 mov %rdx,(%rax) <---------------- FAULT
> }
This comes directly from commit
725acd0b9cc047b20a1b9379e46f05d3ebcf485e, and the problem is most
probably that "mCpuHotPlugData.SmBase" is NULL.
And that's indeed very possible, after commit
725acd0b9cc047b20a1b9379e46f05d3ebcf485e:
If GetSmBase() returns NULL, the code will now print "PiCpuSmmEntry:
gSmmBaseHobGuid not found" -- which is indeed what we find in the log --,
but there is nothing to set "mCpuHotPlugData.SmBase" to non-NULL, before
we try to write through it.
(b)
gSmmCpuPrivate->CpuSaveState[Index] = (VOID *)(mCpuHotPlugData.SmBase[Index] + SMRAM_SAVE_STATE_MAP_OFFSET);
2d70: 48 8b 15 39 b3 02 00 mov 0x2b339(%rip),%rdx # 2e0b0 <mCpuHotPlugData+0x10>
2d77: 48 8b 45 d8 mov -0x28(%rbp),%rax
2d7b: 48 c1 e0 03 shl $0x3,%rax
2d7f: 48 01 d0 add %rdx,%rax
2d82: 48 8b 00 mov (%rax),%rax <------------------ FAULT
2d85: 48 8d 90 00 fc 00 00 lea 0xfc00(%rax),%rdx
2d8c: 48 8b 05 35 b3 02 00 mov 0x2b335(%rip),%rax # 2e0c8 <gSmmCpuPrivate>
2d93: 48 8b 48 28 mov 0x28(%rax),%rcx
2d97: 48 8b 45 d8 mov -0x28(%rbp),%rax
2d9b: 48 c1 e0 03 shl $0x3,%rax
2d9f: 48 01 c8 add %rcx,%rax
2da2: 48 89 10 mov %rdx,(%rax)
I'm going to ignore this crash site for now, and theorize more on crash
site (a):
I claim that this NULL pointer dereference (write) has been in place
*ever since* commit 725acd0b9cc0 ("UefiCpuPkg: Avoid assuming only one
smmbasehob", 2023-12-12). That is, I claim / theorize that GetSmBase()
*always* returns a NULL pointer in OVMF SMM; i.e., it's not
"conditional" behavior from GetSmBase().
Instead, the only reason we've not seen it is that we have a *short
loop* counting up (= writing upwards) from address 0 in increments of 8
bytes, and the number of iterations is the possible VCPU count. Because
we have usually very few VCPUs, the overwritten area at the start of
page#0 is pretty small.
But if we have, say, 32 possible VCPUs, then we overwrite 32*8 == 256
bytes, and then the VBE Shim's check for "Int0x10->Segment == 0x0000"
fails. Because, if I count right, the "Int0x10->Segment" field of type
UINT16 starts at linear address 0x42.
We need to fix or revert commit 725acd0b9cc0 for the upcoming stable
release.
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115402): https://edk2.groups.io/g/devel/message/115402
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
2024-02-13 18:13 ` Laszlo Ersek
@ 2024-02-13 20:25 ` Laszlo Ersek
0 siblings, 0 replies; 13+ messages in thread
From: Laszlo Ersek @ 2024-02-13 20:25 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: devel, Oliver Steffen, Ard Biesheuvel, Jiewen Yao, dun.tan
On 2/13/24 19:13, Laszlo Ersek wrote:
> On 2/13/24 18:28, Laszlo Ersek wrote:
>> On 2/13/24 15:02, Gerd Hoffmann wrote:
>>> On Tue, Feb 13, 2024 at 11:44:17AM +0100, Laszlo Ersek wrote:
>>>> Hi Gerd,
>>>>
>>>> On 2/13/24 09:59, Gerd Hoffmann wrote:
>>>>> Removing CSM support broke VbeShim.
>>>>>
>>>>> I see ASSERTS being triggered, both in vbeshim code and elsewhere.
>>>>> Didn't investigate in detail, but apparently the real mode address
>>>>> space is not considered being special any more, which invalidates
>>>>> some assumptions of the vbeshim code.
>>>>>
>>>>> The guest os which depends on vbeshim for video support is --
>>>>> according to the comments -- Windows 2008 R2. Which went EOL in
>>>>> January 2020, more than four years ago.
>>>>>
>>>>> Time to retire VbeShim. RIP.
>>>>
>>>> I don't understand this, and/or disagree.
>>>>
>>>> (1) Please collect more information about the ASSERT()s (the failure
>>>> mode you are seeing).
>>>> Because, (a) in the code that's being removed in this patch, I don't
>>>> see any ASSERT() that should fire, and (b) I cannot reproduce the
>>>> issue. (In fact my log contains "InstallVbeShim: VBE shim
>>>> installed".)
>>>
>>> Fair enough. The ASSERT() I see firing is this:
>>>
>>> ASSERT
>>> /home/kraxel/projects/edk2/OvmfPkg/QemuVideoDxe/VbeShim.c(142):
>>> Int0x10->Segment == 0x0000
>>
>> Something nasty is going on here;
>>
>> 138 //
>> 139 // We managed to allocate the page at zero. SVN r14218 guarantees that it
>> 140 // is NUL-filled.
>> 141 //
>> 142 ASSERT (Int0x10->Segment == 0x0000);
>>
>> "SVN r14218" is git commit d436d5ca0936 -- "Guarantee that free memory
>> in the 4K page starting at address 0 is always cleared to 0".
>>
>>>
>>> It reproduces for me when booting with a bunch of hot-pluggable CPUs
>>> (qemu -smp 2,maxcpus=32).
>>>
>>> I bisected this,
>>
>> Thank you!
>>
>>> and it seems indeed totally unrelated to CSM removal:
>>>
>>> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e is the first bad commit
>>> commit 725acd0b9cc047b20a1b9379e46f05d3ebcf485e
>>> Author: Dun Tan <dun.tan@intel.com>
>>> Date: Fri Dec 1 10:53:32 2023 +0800
>>>
>>> UefiCpuPkg: Avoid assuming only one smmbasehob
>>>
>>> New theory: This is a NULL pointer dereference corrupting the zero
>>> page.
>>
>> Interesting; this commit is indeed related to having a multitude of
>> (possible?) CPUs.
>>
>>>
>>> I still think it makes sense to retire VbeShim, but of course with a
>>> different commit message and also the leftover function declaration
>>> removed.
>>
>> I agree, although in this case, the VBE shim has unexpectedly caught
>> an independent bug for us ;)
>>
>>>
>>> Can we unmap the zero page to avoid NULL pointer dereferences going
>>> unnoticed (after removing VbeShim)? IIRC I've seen an config option
>>> for that a while back, but can't find it now in the source tree ...
>>
>> Yes. See "PcdNullPointerDetectionPropertyMask" in
>> "MdeModulePkg/MdeModulePkg.dec".
>>
>> See NULL_DETECTION_NONSTOP_MODE in CpuDxe (and PiSmmCpuDxeSmm). In
>> CpuDxe, there's a fault handler that's supposed to dump the context to
>> the serial port. From looking only briefly, I'm not sure where the
>> actual unmapping happens (so that we get a page fault in the first
>> place).
>
> Bingo; after building with "--pcd
> gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask=65",
> and booting with 32 possible VCPUs and 1 present (= cold-plugged) VCPU:
>
> * tail of firmware log (until crash):
>
>> Loading SMM driver at 0x0007FF88000 EntryPoint=0x0007FFA63E5 PiSmmCpuDxeSmm.efi
>> SMRR Base: 0x7F000000, SMRR Size: 0x1000000
>> PcdCpuSmmCodeAccessCheckEnable = 1
>> mAddressEncMask = 0x0
>> PcdControlFlowEnforcementPropertyMask = 0
>> SMRAM TileSize = 0x00002000 (0x00001000, 0x00001000)
>> PiCpuSmmEntry: gSmmBaseHobGuid not found!
>> New Allcoated SMRAM SaveState Buffer (0x7FF41000, 0x00046000)
>> CPU[000] APIC ID=0000 SMBASE=7FF39000 SaveState=7FF48C00 Size=00000400
>> Stacks - 0x7FE81000
>> mSmmStackSize - 0x6000
>> PcdCpuSmmStackGuard - 0x1
>
> * serial log:
>
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 000000007FF39000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 0000000000000006, R9 - 0000000000000100, R10 - 000000007E8C3841
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010046
>> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 0000000000000006, R9 - 0000000000000100, R10 - 000000007E8C3841
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AE6C, CS - 0000000000000038, RFLAGS - 0000000000010046
>> RAX - 0000000000000000, RCX - 000000007FF48C00, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 0000000000000400, R9 - 0000000000000100, R10 - 000000007E8C3841
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000008, RCX - 0000000000000000, RDX - 000000007FF3B000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000008, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000008, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000008, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000010, RCX - 0000000000000000, RDX - 000000007FF3D000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000010, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000010, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000010, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000018, RCX - 0000000000000000, RDX - 000000007FF3F000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000018, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000018, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000018, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000020, RCX - 0000000000000000, RDX - 000000007FF41000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000020, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000020, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000020, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000028, RCX - 0000000000000000, RDX - 000000007FF43000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000028, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000028, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000028, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000030, RCX - 0000000000000000, RDX - 000000007FF45000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000030, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000030, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000030, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000038, RCX - 0000000000000000, RDX - 000000007FF47000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000038, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000038, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000038, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000040, RCX - 0000000000000000, RDX - 000000007FF49000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000040, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000040, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000040, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000048, RCX - 0000000000000000, RDX - 000000007FF4B000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000048, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000048, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000048, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000050, RCX - 0000000000000000, RDX - 000000007FF4D000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000050, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000050, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000050, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000058, RCX - 0000000000000000, RDX - 000000007FF4F000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000058, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000058, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000058, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000060, RCX - 0000000000000000, RDX - 000000007FF51000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000060, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000060, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000060, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000068, RCX - 0000000000000000, RDX - 000000007FF53000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000068, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000068, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000068, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000070, RCX - 0000000000000000, RDX - 000000007FF55000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000070, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000070, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000070, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000078, RCX - 0000000000000000, RDX - 000000007FF57000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000078, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000078, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000078, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000080, RCX - 0000000000000000, RDX - 000000007FF59000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000080, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000080, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000080, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000088, RCX - 0000000000000000, RDX - 000000007FF5B000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000088, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000088, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000088, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000090, RCX - 0000000000000000, RDX - 000000007FF5D000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000090, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000090, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000090, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 0000000000000098, RCX - 0000000000000000, RDX - 000000007FF5F000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000098, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 0000000000000098, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 0000000000000098, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000A0, RCX - 0000000000000000, RDX - 000000007FF61000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000A0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000A0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000A0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000A8, RCX - 0000000000000000, RDX - 000000007FF63000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000A8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000A8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000A8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000B0, RCX - 0000000000000000, RDX - 000000007FF65000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000B0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000B0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000B0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000B8, RCX - 0000000000000000, RDX - 000000007FF67000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000B8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000B8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000B8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000C0, RCX - 0000000000000000, RDX - 000000007FF69000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000C0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000C0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000C0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000C8, RCX - 0000000000000000, RDX - 000000007FF6B000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000C8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000C8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000C8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000D0, RCX - 0000000000000000, RDX - 000000007FF6D000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000D0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000D0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000D0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000D8, RCX - 0000000000000000, RDX - 000000007FF6F000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000D8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000D8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000D8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000E0, RCX - 0000000000000000, RDX - 000000007FF71000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000E0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000E0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000E0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000E8, RCX - 0000000000000000, RDX - 000000007FF73000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000E8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000E8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000E8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000F0, RCX - 0000000000000000, RDX - 000000007FF75000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000F0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000F0, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000F0, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000002 I:0 R:0 U:0 W:1 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD50, CS - 0000000000000038, RFLAGS - 0000000000010006
>> RAX - 00000000000000F8, RCX - 0000000000000000, RDX - 000000007FF77000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000F8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FF8AD82, CS - 0000000000000038, RFLAGS - 0000000000010002
>> RAX - 00000000000000F8, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000007FFB6000, RSP - 000000007EC96810, RBP - 000000007EC968F0
>> RSI - 0000000000001000, RDI - 0000000000000046
>> R8 - 000000007FFAD840, R9 - 0000000000000000, R10 - 000000007FF87818
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030
>> GS - 0000000000000030, SS - 0000000000000030
>> CR0 - 0000000080010033, CR2 - 00000000000000F8, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007E7E0000 0000000000000047, LDTR - 0000000000000000
>> IDTR - 000000007DC3B018 0000000000000FFF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007EC96470
>> !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 !!!!
>> ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0
>> RIP - 000000007FFA9501, CS - 0000000000000038, RFLAGS - 0000000000010046
>> RAX - 0000000000000000, RCX - 0000000000000000, RDX - 0000000000000000
>> RBX - 000000002C100800, RSP - 000000007FE86F00, RBP - 000000007FE86F10
>> RSI - 0000000000000000, RDI - 0000000000004200
>> R8 - 000000007FF87818, R9 - 000000007FFB60A0, R10 - 0000000000000000
>> R11 - 0000000000000069, R12 - 0000000000000000, R13 - 0000000000000000
>> R14 - 0000000000000000, R15 - 0000000000000000
>> DS - 0000000000000000, ES - 0000000000000000, FS - 0000000000000000
>> GS - 0000000000000000, SS - 0000000000000000
>> CR0 - 0000000080010033, CR2 - 0000000000000000, CR3 - 000000007EA01000
>> CR4 - 0000000000000668, CR8 - 0000000000000000
>> DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
>> DR3 - 0000000000000000, DR6 - 00000000FFFF4FF0, DR7 - 0000000000000400
>> GDTR - 000000007FFB6240 000000000000004F, LDTR - 0000000000000000
>> IDTR - 000000007FE80000 00000000000001FF, TR - 0000000000000000
>> FXSAVE_STATE - 000000007FE86B60
>> !!!! Find image based on IP(0x7FFA9501)
>> Build/Ovmf3264/NOOPT_GCC5/X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm/DEBUG/PiSmmCpuDxeSmm.dll
>> (ImageBase=000000007FF88000, EntryPoint=000000007FFA63E5) !!!!
>
> The RIP values are mostly consistent across these page faults:
>
> 32 000000007FF8AD50
> 32 000000007FF8AD82
> 1 000000007FF8AE6C
> 1 000000007FFA9501
>
> That is, one PF for each CPU at 000000007FF8AD50, and one PF for each
> CPU at 000000007FF8AD82.
>
> Furthermore, if we check the invalid addresses (CR2 -- Page Fault Linear
> Address) of these faults, we see that the instruction 000000007FF8AD50
> runs in a loop body that iterates, in steps of 0x08, from 0x00 to 0xF8.
> The same applies to the instruction at 000000007FF8AD82.
>
> Now, if we check
>
> objdump -S Build/Ovmf3264/NOOPT_GCC5/X64/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm/DEBUG/PiSmmCpuDxeSmm.debug
>
> then that confirms that relative offset 0x1E3E5 (= EntryPoint-ImageBase
> = 000000007FFA63E5-000000007FF88000) is indeed the entry point:
>
>> 000000000001e3e5 <_ModuleEntryPoint>:
>> EFIAPI
>> _ModuleEntryPoint (
>> IN EFI_HANDLE ImageHandle,
>> IN EFI_SYSTEM_TABLE *SystemTable
>> )
>> {
>> 1e3e5: 55 push %rbp
>> 1e3e6: 48 89 e5 mov %rsp,%rbp
>> 1e3e9: 48 83 ec 30 sub $0x30,%rsp
>> 1e3ed: 48 89 4d 10 mov %rcx,0x10(%rbp)
>> 1e3f1: 48 89 55 18 mov %rdx,0x18(%rbp)
>> EFI_STATUS Status;
>> EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
>
> Thus we can investigate both faulting instruction pointers too:
>
> (a) 000000007FF8AD50 - 000000007FF88000 = 2D50
>
> (b) 000000007FF8AD82 - 000000007FF88000 = 2D82
>
> And then objdump reports:
>
> (a)
>
>> //
>> // Retrieve APIC ID of each enabled processor from the MP Services protocol.
>> // Also compute the SMBASE address, CPU Save State address, and CPU Save state
>> // size for each CPU in the platform
>> //
>> for (Index = 0; Index < mMaxNumberOfCpus; Index++) {
>> 2d0c: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp)
>> 2d13: 00
>> 2d14: e9 eb 01 00 00 jmpq 2f04 <PiCpuSmmEntry+0xcdb>
>> if (!mSmmRelocated) {
>> 2d19: 0f b6 05 b0 b7 02 00 movzbl 0x2b7b0(%rip),%eax # 2e4d0 <mSmmRelocated>
>> 2d20: 84 c0 test %al,%al
>> 2d22: 75 2f jne 2d53 <PiCpuSmmEntry+0xb2a>
>> mCpuHotPlugData.SmBase[Index] = (UINTN)Buffer + Index * TileSize - SMM_HANDLER_OFFSET;
>> 2d24: 48 8b 45 d8 mov -0x28(%rbp),%rax
>> 2d28: 48 0f af 45 a0 imul -0x60(%rbp),%rax
>> 2d2d: 48 89 c2 mov %rax,%rdx
>> 2d30: 48 8b 45 d0 mov -0x30(%rbp),%rax
>> 2d34: 48 01 c2 add %rax,%rdx
>> 2d37: 48 8b 0d 72 b3 02 00 mov 0x2b372(%rip),%rcx # 2e0b0 <mCpuHotPlugData+0x10>
>> 2d3e: 48 8b 45 d8 mov -0x28(%rbp),%rax
>> 2d42: 48 c1 e0 03 shl $0x3,%rax
>> 2d46: 48 01 c8 add %rcx,%rax
>> 2d49: 48 81 ea 00 80 00 00 sub $0x8000,%rdx
>> 2d50: 48 89 10 mov %rdx,(%rax) <---------------- FAULT
>> }
>
> This comes directly from commit
> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e, and the problem is most
> probably that "mCpuHotPlugData.SmBase" is NULL.
>
> And that's indeed very possible, after commit
> 725acd0b9cc047b20a1b9379e46f05d3ebcf485e:
>
> If GetSmBase() returns NULL, the code will now print "PiCpuSmmEntry:
> gSmmBaseHobGuid not found" -- which is indeed what we find in the log --,
> but there is nothing to set "mCpuHotPlugData.SmBase" to non-NULL, before
> we try to write through it.
>
> (b)
>
> gSmmCpuPrivate->CpuSaveState[Index] = (VOID *)(mCpuHotPlugData.SmBase[Index] + SMRAM_SAVE_STATE_MAP_OFFSET);
> 2d70: 48 8b 15 39 b3 02 00 mov 0x2b339(%rip),%rdx # 2e0b0 <mCpuHotPlugData+0x10>
> 2d77: 48 8b 45 d8 mov -0x28(%rbp),%rax
> 2d7b: 48 c1 e0 03 shl $0x3,%rax
> 2d7f: 48 01 d0 add %rdx,%rax
> 2d82: 48 8b 00 mov (%rax),%rax <------------------ FAULT
> 2d85: 48 8d 90 00 fc 00 00 lea 0xfc00(%rax),%rdx
> 2d8c: 48 8b 05 35 b3 02 00 mov 0x2b335(%rip),%rax # 2e0c8 <gSmmCpuPrivate>
> 2d93: 48 8b 48 28 mov 0x28(%rax),%rcx
> 2d97: 48 8b 45 d8 mov -0x28(%rbp),%rax
> 2d9b: 48 c1 e0 03 shl $0x3,%rax
> 2d9f: 48 01 c8 add %rcx,%rax
> 2da2: 48 89 10 mov %rdx,(%rax)
>
> I'm going to ignore this crash site for now, and theorize more on crash
> site (a):
>
> I claim that this NULL pointer dereference (write) has been in place
> *ever since* commit 725acd0b9cc0 ("UefiCpuPkg: Avoid assuming only one
> smmbasehob", 2023-12-12). That is, I claim / theorize that GetSmBase()
> *always* returns a NULL pointer in OVMF SMM; i.e., it's not
> "conditional" behavior from GetSmBase().
>
> Instead, the only reason we've not seen it is that we have a *short
> loop* counting up (= writing upwards) from address 0 in increments of 8
> bytes, and the number of iterations is the possible VCPU count. Because
> we have usually very few VCPUs, the overwritten area at the start of
> page#0 is pretty small.
>
> But if we have, say, 32 possible VCPUs, then we overwrite 32*8 == 256
> bytes, and then the VBE Shim's check for "Int0x10->Segment == 0x0000"
> fails. Because, if I count right, the "Int0x10->Segment" field of type
> UINT16 starts at linear address 0x42.
>
> We need to fix or revert commit 725acd0b9cc0 for the upcoming stable
> release.
This is now <https://bugzilla.tianocore.org/show_bug.cgi?id=4682>; I'm
working on patches.
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115415): https://edk2.groups.io/g/devel/message/115415
Mute This Topic: https://groups.io/mt/104329097/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-02-13 20:25 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-13 8:59 [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim Gerd Hoffmann
2024-02-13 10:41 ` Ard Biesheuvel
2024-02-13 10:44 ` Laszlo Ersek
2024-02-13 14:02 ` Gerd Hoffmann
2024-02-13 14:55 ` Pedro Falcato
2024-02-13 14:56 ` Ard Biesheuvel
2024-02-13 15:07 ` Pedro Falcato
2024-02-13 15:28 ` Gerd Hoffmann
2024-02-13 15:47 ` Pedro Falcato
2024-02-13 17:31 ` Laszlo Ersek
2024-02-13 17:28 ` Laszlo Ersek
2024-02-13 18:13 ` Laszlo Ersek
2024-02-13 20:25 ` Laszlo Ersek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox