BufferSize,\r
&ImageHandle\r
);\r
-\r
- FreePool (PciOptionRomImageDevicePath);\r
-\r
- if (!EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // Record the Option ROM Image device path when LoadImage fails.\r
+ // PciOverride.GetDriver() will try to look for the Image Handle using the device path later.\r
+ //\r
+ AddDriver (PciDevice, NULL, PciOptionRomImageDevicePath);\r
+ } else {\r
Status = gBS->StartImage (ImageHandle, NULL, NULL);\r
if (!EFI_ERROR (Status)) {\r
- AddDriver (PciDevice, ImageHandle);\r
+ //\r
+ // Record the Option ROM Image Handle\r
+ //\r
+ AddDriver (PciDevice, ImageHandle, NULL);\r
PciRomAddImageMapping (\r
ImageHandle,\r
PciDevice->PciRootBridgeIo->SegmentNumber,\r
RetStatus = EFI_SUCCESS;\r
}\r
}\r
+ FreePool (PciOptionRomImageDevicePath);\r
\r
NextImage:\r
RomBarOffset += ImageSize;\r