From 8c80e407f53903a73b254ec2929bed498886d0cf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 24 Aug 2020 08:29:56 -0600 Subject: [PATCH] Fix detection of framebuffer BAR --- .../GraphicsOutputDxe/GraphicsOutput.c | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/UefiPayloadPkg/GraphicsOutputDxe/GraphicsOutput.c b/UefiPayloadPkg/GraphicsOutputDxe/GraphicsOutput.c index 39ad03fe32..71f8d25a7e 100644 --- a/UefiPayloadPkg/GraphicsOutputDxe/GraphicsOutput.c +++ b/UefiPayloadPkg/GraphicsOutputDxe/GraphicsOutput.c @@ -320,14 +320,14 @@ GraphicsOutputDriverBindingStart ( VOID *HobStart; EFI_PEI_GRAPHICS_INFO_HOB *GraphicsInfo; EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *DeviceInfo; - EFI_PHYSICAL_ADDRESS FrameBufferBase; - - FrameBufferBase = 0; HobStart = GetFirstGuidHob (&gEfiGraphicsInfoHobGuid); ASSERT ((HobStart != NULL) && (GET_GUID_HOB_DATA_SIZE (HobStart) == sizeof (EFI_PEI_GRAPHICS_INFO_HOB))); GraphicsInfo = (EFI_PEI_GRAPHICS_INFO_HOB *)(GET_GUID_HOB_DATA (HobStart)); + DEBUG ((DEBUG_INFO, "[%a]: GraphicsInfo HOB: FrameBufferBase = %lx, FrameBufferSize = %lx\n", + gEfiCallerBaseName, GraphicsInfo->FrameBufferBase, GraphicsInfo->FrameBufferSize)); + HobStart = GetFirstGuidHob (&gEfiGraphicsDeviceInfoHobGuid); if ((HobStart == NULL) || (GET_GUID_HOB_DATA_SIZE (HobStart) < sizeof (*DeviceInfo))) { // @@ -424,24 +424,9 @@ GraphicsOutputDriverBindingStart ( Resources->AddrRangeMin, Resources->AddrLen )); - if ((Resources->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) && - (Resources->Len == (UINT16)(sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3)) && - (Resources->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) && - (Resources->AddrLen >= GraphicsInfo->FrameBufferSize) - ) - { - if (FrameBufferBase == 0) { - FrameBufferBase = Resources->AddrRangeMin; - } - - if (DeviceInfo->BarIndex == MAX_UINT8) { - if (Resources->AddrRangeMin == GraphicsInfo->FrameBufferBase) { - FrameBufferBase = Resources->AddrRangeMin; - break; - } - } else { - break; - } + if (Resources->AddrRangeMin <= GraphicsInfo->FrameBufferBase && + (Resources->AddrRangeMin + Resources->AddrLen) >= (GraphicsInfo->FrameBufferBase + GraphicsInfo->FrameBufferSize)) { + break; } } } @@ -468,7 +453,7 @@ GraphicsOutputDriverBindingStart ( goto CloseProtocols; } - Private->GraphicsOutputMode.FrameBufferBase = FrameBufferBase; + Private->GraphicsOutputMode.FrameBufferBase = GraphicsInfo->FrameBufferBase; Private->GraphicsOutputMode.FrameBufferSize = GraphicsInfo->FrameBufferSize; Private->GraphicsOutputMode.Info = &GraphicsInfo->GraphicsMode;