Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 90803342b1 OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL)
The Windows 2008 R2 SP1 (and Windows 7) UEFI guest's default video driver
dereferences the real mode Int10h vector, loads the pointed-to handler
code, and executes what it thinks to be VGA BIOS services in an internal
real-mode emulator. Consequently, video mode switching doesn't work in
Windows 2008 R2 SP1 when it runs on the pure UEFI build of OVMF, making
the guest uninstallable.

This patch adds a VGABIOS "shim" to QemuVideoDxe. For the first stdvga or
QXL card bound, an extremely stripped down VGABIOS imitation is installed
in the C segment. It provides a real implementation for the few services
that are in fact necessary for the win2k8r2sp1 UEFI guest, plus some fakes
that the guest invokes but whose effect is not important.

The C segment is not present in the UEFI memory map prepared by OVMF. We
never add memory space that would cover it (either in PEI, in the form of
memory resource descriptor HOBs, or in DXE, via gDS->AddMemorySpace()).
This way the handler body is invisible to all non-buggy UEFI guests, and
the rest of edk2.

The Int10h real-mode IVT entry is covered with a Boot Services Code page,
making that too unaccessible to the rest of edk2. (Thus UEFI guest OSes
different from the Windows 2008 family can reclaim the page. The Windows
2008 family accesses the page at zero regardless of the allocation type.)

The patch is the result of collaboration:

Initial proof of concept IVT entry installation and handler skeleton (in
NASM) by Jordan Justen.

Service tracing and implementation, data collection/analysis, and C coding
by yours truly.

Last minute changes by Gerd Hoffmann:
- Use OEM mode number (0xf1) instead of standard 800x600 mode (0x143). The
  resolution of the OEM mode (0xf1) is not standardized; the guest can't
  expect anything from it in advance.
- Use 1024x768 rather than 800x600 for more convenience in the Windows
  2008 R2 SP1 guest during OS installation, and after normal boot until
  the QXL XDDM guest driver is installed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15540 6f19259b-4bc3-4df7-8a09-765794883524
2014-05-20 16:33:00 +00:00
AppPkg Enable the build command override the .DSC file contents to enable debug output and specify which debug messages are displayed. An example: 2013-11-19 02:37:37 +00:00
ArmPkg ArmPkg/BdsLib: Added support for TFTP servers without 'tsize' extension 2014-05-19 16:41:25 +00:00
ArmPlatformPkg ArmPlatformPkg/NorFlashDxe: Fixed LBA for FVB 2014-05-14 22:11:04 +00:00
BaseTools Fix CRLF format 2014-01-27 05:36:53 +00:00
BeagleBoardPkg ARM Packages: CRLF fixup 2014-02-12 15:30:34 +00:00
Conf Adding top-level Conf directory for next generation of EDK II build infrastructure tools. 2007-06-20 19:33:23 +00:00
CryptoPkg Update CryptoPkg version: 0.92 -> 0.93 2014-01-10 02:30:22 +00:00
DuetPkg Change PciIo::GetBarAttributes() to return unsupported for a unsupported bar even it's below 6 to follow the UEFI Spec. 2014-05-19 06:08:26 +00:00
EdkCompatibilityPkg Fix CRLF format 2014-01-23 05:27:14 +00:00
EdkShellBinPkg New EdkShell binaries. 2014-01-10 04:57:57 +00:00
EdkShellPkg EdkShellPkg/ShellR64.patch: Adding missing files from the patch 2014-01-14 15:31:01 +00:00
EmbeddedPkg EmbeddedPkg/PrePiLib: Remove duplicated definition of EFI_STATUS_CODE_DATA_MAX_SIZE 2014-05-16 00:11:35 +00:00
EmulatorPkg EmulatorPkg/Unix GCC: Add additional library search paths 2014-04-15 23:53:35 +00:00
FatBinPkg New FatDxe binary. 2014-01-10 02:44:43 +00:00
IntelFrameworkModulePkg MdeModulePkg/IntelFrameworkModulePkg ACPI: Follow the new UEFI 2.4a spec to return EFI_ACCESS_DENIED for duplicated FADT, FACS or DSDT installation. 2014-05-06 02:11:23 +00:00
IntelFrameworkPkg Update IntelFrameworkPkg version: 0.92->0.93 2014-01-10 01:18:20 +00:00
MdeModulePkg Change PciIo::GetBarAttributes() to return unsupported for a unsupported bar even it's below 6 to follow the UEFI Spec. 2014-05-15 07:22:27 +00:00
MdePkg Fix comment typos. 2014-05-13 09:14:00 +00:00
NetworkPkg Fix some build issues (ARM toolchain). 2014-05-15 01:13:05 +00:00
Nt32Pkg Follow UEFI spec to add the definition for EFI_SPECIFICATION_VERSION, and update other table version to refer to it. Remove the “/D TIANO_RELEASE_VERSION=0x00080006” option in Nt32Pkg DSC file, since it’s not used in source code. 2013-11-26 07:36:29 +00:00
Omap35xxPkg ARM Packages: CRLF fixup 2014-02-12 15:30:34 +00:00
OptionRomPkg Fix CRLF format 2014-01-22 08:39:50 +00:00
OvmfPkg OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL) 2014-05-20 16:33:00 +00:00
PcAtChipsetPkg Did proper error handling when SetVariable failed, and put RTC write operation at the behind of SetVariable, if SetVariable failed, RTC content could not be changed. 2014-03-19 02:42:36 +00:00
PerformancePkg PerfomancePkg Dp: Add missing EFIAPI for PrintToken(). 2014-03-26 07:08:12 +00:00
SecurityPkg Config Access Protocol return value not follow spec, update code to follow it. 2014-04-28 06:53:29 +00:00
ShellBinPkg ShellBinPkg: Updated ARM and AArch64 EFI Shell binaries 2014-05-07 12:58:55 +00:00
ShellPkg Handle multi instances device path while connecting console devices. 2014-05-19 00:39:48 +00:00
SourceLevelDebugPkg Not to copy mailbox into new space when debug agent initialization for S3 Boot Script. 2014-03-27 06:02:54 +00:00
StdLib StdLib: StdLib/Malloc.c 2014-04-17 20:59:50 +00:00
StdLibPrivateInternalFiles EADK (StdLib, AppPkg, StdLibPrivateInternalFiles): Update ReadMe.txt in all packages. 2013-10-24 23:14:10 +00:00
UefiCpuPkg Fix ResetVectorVtf0.asm comment typo 2014-01-28 02:30:10 +00:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
BuildNotes2.txt Update to new SVN URL in readme.txt 2013-06-08 05:26:39 +00:00
edksetup.bat edksetup.bat: Fixed corrupts CYGWIN_HOME 2014-02-24 14:14:13 +00:00
edksetup.sh edksetup.sh: Fix typo and return code 2014-01-30 19:26:53 +00:00