audk/OvmfPkg/QemuVideoDxe
Laszlo Ersek 947f3737ab OvmfPkg/QemuVideoDxe/VbeShim: handle PAM1 register on Q35 correctly
In commit db27e9f3d8 ("OvmfPkg/LegacyRegion: Support legacy region
manipulation of Q35", 2016-03-15), Ray extended the
OvmfPkg/Csm/CsmSupportLib PAM register manipulation to Q35. However, we
missed that the same should be done to the QemuVideoDxe VBE Shim as well.

The omission has caused no problems in practice on Q35, because QEMU has
let us write to the ROM area, regardless of the PAM1 setting, all this
time. This has now changed with recent QEMU commit 208fa0e43645 ("pc: make
'pc.rom' readonly when machine has PCI enabled", 2017-07-28). The QEMU
commit exposes the OVMF bug when Windows 7 is started on Q35, using QEMU
2.10 -- the VBE Shim is no longer put in place and Windows 7 cannot find
it.

To remedy this, assign the "Pam1Address" local variable a PciLib address
that matches the board type (i440fx vs. q35).

Regarding the PcdLib dependency: QemuVideoDxe already uses PcdLib, both
directly (see "PcdDriverSupportedEfiVersion") and indirectly (e.g. via the
DxePciLibI440FxQ35 PciLib instance). Add PcdLib to [LibraryClasses] for
completeness.

Cc: Aleksei Kovura <alex3kov@zoho.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Ref: https://bugs.launchpad.net/qemu/+bug/1715700
Reported-by: Aleksei Kovura <alex3kov@zoho.com>
Special-thanks-to: Gerd Hoffmann <kraxel@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Aleksei Kovura <alex3kov@zoho.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2017-09-20 20:25:19 +02:00
..
ComponentName.c OvmfPkg: Add QemuVideoDxe driver 2011-04-12 15:08:51 +00:00
Driver.c OvmfPkg/QemuVideoDxe: VMWare SVGA device support 2017-04-07 12:34:11 +02:00
DriverSupportedEfiVersion.c OvmfPkg: Add QemuVideoDxe driver 2011-04-12 15:08:51 +00:00
Gop.c OvmfPkg/QemuVideoDxe: VMWare SVGA device support 2017-04-07 12:34:11 +02:00
Initialize.c OvmfPkg/QemuVideoDxe: VMWare SVGA device support 2017-04-07 12:34:11 +02:00
Qemu.h OvmfPkg/QemuVideoDxe: VMWare SVGA device support 2017-04-07 12:34:11 +02:00
QemuVideoDxe.inf OvmfPkg/QemuVideoDxe/VbeShim: handle PAM1 register on Q35 correctly 2017-09-20 20:25:19 +02:00
UnalignedIoGcc.c OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O. 2017-04-07 12:22:30 +02:00
UnalignedIoIcc.c OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O. 2017-04-07 12:22:30 +02:00
UnalignedIoInternal.h OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O. 2017-04-07 12:22:30 +02:00
UnalignedIoMsc.c OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O. 2017-04-07 12:22:30 +02:00
UnalignedIoUnsupported.c OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O. 2017-04-07 12:22:30 +02:00
VbeShim.asm OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL) 2014-05-20 16:33:00 +00:00
VbeShim.c OvmfPkg/QemuVideoDxe/VbeShim: handle PAM1 register on Q35 correctly 2017-09-20 20:25:19 +02:00
VbeShim.h OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL) 2014-05-20 16:33:00 +00:00
VbeShim.sh OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL) 2014-05-20 16:33:00 +00:00