- if (!EFI_ERROR (Status)) {\r
- Status = gBS->LoadImage (\r
- FALSE,\r
- gPciBusDriverBinding.DriverBindingHandle,\r
- PciOptionRomImageDevicePath,\r
- Buffer,\r
- BufferSize,\r
- &ImageHandle\r
- );\r
- }\r
-\r
- //\r
- // load image and start image\r
- //\r
- if (!EFI_ERROR (Status)) {\r
- Status = gBS->LoadImage (\r
- FALSE,\r
- gPciBusDriverBinding.DriverBindingHandle,\r
- PciOptionRomImageDevicePath,\r
- Buffer,\r
- BufferSize,\r
- &ImageHandle\r
- );\r
- }\r
-\r
- FreePool (PciOptionRomImageDevicePath);\r
-\r
- if (!EFI_ERROR (Status)) {\r
+ Status = gBS->LoadImage (\r
+ FALSE,\r
+ gPciBusDriverBinding.DriverBindingHandle,\r
+ PciOptionRomImageDevicePath,\r
+ Buffer,\r
+ BufferSize,\r
+ &ImageHandle\r
+ );\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