Avoid building duplicated GFX HOB (#1002)
In some cases Bootloader will build GFX HOB. This patch updated SBL to check the bootloader GFX HOB first before building a new GFX HOB from FSP. This is to avoid duplicated GFX HOB to be generated in bootloader HOB. Signed-off-by: Maurice Ma <maurice.ma@intel.com>
This commit is contained in:
parent
ca738786cc
commit
f9c97abfdb
|
@ -326,23 +326,27 @@ BuildBaseInfoHob (
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build graphic info hob
|
// Build graphic info hob
|
||||||
BlGfxHob = BuildGuidHob (&gEfiGraphicsInfoHobGuid, sizeof (EFI_PEI_GRAPHICS_INFO_HOB));
|
BlGfxHob = (EFI_PEI_GRAPHICS_INFO_HOB *)GetGuidHobData (NULL, &Length, &gEfiGraphicsInfoHobGuid);
|
||||||
if (BlGfxHob != NULL) {
|
if (BlGfxHob == NULL) {
|
||||||
ZeroMem (BlGfxHob, sizeof (EFI_PEI_GRAPHICS_INFO_HOB));
|
|
||||||
FspGfxHob = (EFI_PEI_GRAPHICS_INFO_HOB *)GetGuidHobData (LdrGlobal->FspHobList, &Length,
|
FspGfxHob = (EFI_PEI_GRAPHICS_INFO_HOB *)GetGuidHobData (LdrGlobal->FspHobList, &Length,
|
||||||
&gEfiGraphicsInfoHobGuid);
|
&gEfiGraphicsInfoHobGuid);
|
||||||
if (FspGfxHob != NULL) {
|
if (FspGfxHob != NULL) {
|
||||||
CopyMem (BlGfxHob, FspGfxHob, sizeof (EFI_PEI_GRAPHICS_INFO_HOB));
|
BlGfxHob = BuildGuidHob (&gEfiGraphicsInfoHobGuid, sizeof (EFI_PEI_GRAPHICS_INFO_HOB));
|
||||||
GfxMode = &BlGfxHob->GraphicsMode;
|
if (BlGfxHob != NULL) {
|
||||||
DEBUG ((DEBUG_INFO, "Graphics Info: %d x %d x 32 @ 0x%08X\n",GfxMode->HorizontalResolution,\
|
CopyMem (BlGfxHob, FspGfxHob, sizeof (EFI_PEI_GRAPHICS_INFO_HOB));
|
||||||
GfxMode->VerticalResolution, BlGfxHob->FrameBufferBase));
|
GfxMode = &BlGfxHob->GraphicsMode;
|
||||||
if ((GfxMode->PixelFormat != PixelRedGreenBlueReserved8BitPerColor) &&
|
DEBUG ((DEBUG_INFO, "Graphics Info: %d x %d x 32 @ 0x%08X\n",GfxMode->HorizontalResolution,\
|
||||||
(GfxMode->PixelFormat != PixelBlueGreenRedReserved8BitPerColor)) {
|
GfxMode->VerticalResolution, BlGfxHob->FrameBufferBase));
|
||||||
DEBUG ((DEBUG_ERROR, "Graphics PixelFormat NOT expected (0x%x)\n", GfxMode->PixelFormat));
|
if ((GfxMode->PixelFormat != PixelRedGreenBlueReserved8BitPerColor) &&
|
||||||
|
(GfxMode->PixelFormat != PixelBlueGreenRedReserved8BitPerColor)) {
|
||||||
|
DEBUG ((DEBUG_ERROR, "Graphics PixelFormat NOT expected (0x%x)\n", GfxMode->PixelFormat));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DEBUG ((DEBUG_INFO, "Failed to get Graphics Info HOB from FSP\n"));
|
DEBUG ((DEBUG_INFO, "Failed to get GFX HOB from FSP\n"));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
DEBUG ((DEBUG_INFO, "Use existing GFX HOB from bootloader\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build graphic device info hob
|
// Build graphic device info hob
|
||||||
|
|
Loading…
Reference in New Issue