In commit db27e9f3d8f0 ("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>
80 lines
2.3 KiB
INI
80 lines
2.3 KiB
INI
## @file
|
|
# This driver is a sample implementation of the Graphics Output Protocol for
|
|
# the QEMU (Cirrus Logic 5446) video controller.
|
|
#
|
|
# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# This program and the accompanying materials
|
|
# are licensed and made available under the terms and conditions of the BSD License
|
|
# which accompanies this distribution. The full text of the license may be found at
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
#
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = QemuVideoDxe
|
|
FILE_GUID = e3752948-b9a1-4770-90c4-df41c38986be
|
|
MODULE_TYPE = UEFI_DRIVER
|
|
VERSION_STRING = 1.0
|
|
|
|
ENTRY_POINT = InitializeQemuVideo
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
|
#
|
|
# DRIVER_BINDING = gQemuVideoDriverBinding
|
|
# COMPONENT_NAME = gQemuVideoComponentName
|
|
#
|
|
|
|
[Sources.common]
|
|
ComponentName.c
|
|
Driver.c
|
|
DriverSupportedEfiVersion.c
|
|
Gop.c
|
|
Initialize.c
|
|
|
|
[Sources.Ia32, Sources.X64]
|
|
VbeShim.c
|
|
UnalignedIoGcc.c | GCC
|
|
UnalignedIoMsc.c | MSFT
|
|
UnalignedIoIcc.c | INTEL
|
|
|
|
[Sources.IPF, Sources.EBC]
|
|
UnalignedIoUnsupported.c
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
OptionRomPkg/OptionRomPkg.dec
|
|
OvmfPkg/OvmfPkg.dec
|
|
|
|
[LibraryClasses]
|
|
BaseMemoryLib
|
|
FrameBufferBltLib
|
|
DebugLib
|
|
DevicePathLib
|
|
MemoryAllocationLib
|
|
PcdLib
|
|
PciLib
|
|
PrintLib
|
|
TimerLib
|
|
UefiBootServicesTableLib
|
|
UefiDriverEntryPoint
|
|
UefiLib
|
|
|
|
[Protocols]
|
|
gEfiDriverSupportedEfiVersionProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
|
gEfiGraphicsOutputProtocolGuid # PROTOCOL BY_START
|
|
gEfiDevicePathProtocolGuid # PROTOCOL BY_START
|
|
gEfiPciIoProtocolGuid # PROTOCOL TO_START
|
|
|
|
[Pcd]
|
|
gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion
|
|
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
|