UINT32 StallPerPollUsec;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
UINT64 OriginalPciAttributes;\r
+ EFI_EVENT ExitBoot;\r
MPT_SCSI_DMA_BUFFER *Dma;\r
EFI_PHYSICAL_ADDRESS DmaPhysical;\r
VOID *DmaMapping;\r
return EFI_UNSUPPORTED;\r
}\r
\r
+STATIC\r
+VOID\r
+EFIAPI\r
+MptScsiExitBoot (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
+ )\r
+{\r
+ MPT_SCSI_DEV *Dev;\r
+\r
+ Dev = Context;\r
+ DEBUG ((DEBUG_VERBOSE, "%a: Context=0x%p\n", __FUNCTION__, Context));\r
+ MptScsiReset (Dev);\r
+}\r
STATIC\r
EFI_STATUS\r
EFIAPI\r
goto Unmap;\r
}\r
\r
+ Status = gBS->CreateEvent (\r
+ EVT_SIGNAL_EXIT_BOOT_SERVICES,\r
+ TPL_CALLBACK,\r
+ &MptScsiExitBoot,\r
+ Dev,\r
+ &Dev->ExitBoot\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto UninitDev;\r
+ }\r
+\r
//\r
// Host adapter channel, doesn't exist\r
//\r
&Dev->PassThru\r
);\r
if (EFI_ERROR (Status)) {\r
- goto UninitDev;\r
+ goto CloseExitBoot;\r
}\r
\r
return EFI_SUCCESS;\r
\r
+CloseExitBoot:\r
+ gBS->CloseEvent (Dev->ExitBoot);\r
+\r
UninitDev:\r
MptScsiReset (Dev);\r
\r
return Status;\r
}\r
\r
+ gBS->CloseEvent (Dev->ExitBoot);\r
+\r
MptScsiReset (Dev);\r
\r
Dev->PciIo->Unmap (\r