public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ardb@kernel.org>
To: devel@edk2.groups.io, kraxel@redhat.com
Cc: Oliver Steffen <osteffen@redhat.com>,
	Laszlo Ersek <lersek@redhat.com>,
	 Jiewen Yao <jiewen.yao@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim
Date: Tue, 13 Feb 2024 11:41:33 +0100	[thread overview]
Message-ID: <CAMj1kXEiNMdCCVABDLeC_Cp5VJoYgz52rm9twX5L8fR=OuDKNg@mail.gmail.com> (raw)
In-Reply-To: <20240213085925.687848-1-kraxel@redhat.com>

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]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-02-13 10:41 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13  8:59 [edk2-devel] [PATCH 1/1] OvmfPkg/QemuVideoDxe: purge VbeShim Gerd Hoffmann
2024-02-13 10:41 ` Ard Biesheuvel [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMj1kXEiNMdCCVABDLeC_Cp5VJoYgz52rm9twX5L8fR=OuDKNg@mail.gmail.com' \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox