// NVME\r
NVME_CONTEXT mNvmeContext;\r
\r
-EFI_GCD_MEMORY_SPACE_DESCRIPTOR *mGcdMemSpace = NULL;\r
-UINTN mNumberOfDescriptors = 0;\r
-\r
/**\r
Add new bridge node or nvme device info to the device list.\r
\r
return Status;\r
}\r
\r
-/**\r
- OpalPassword Notification for SMM EndOfDxe protocol.\r
-\r
- @param[in] Protocol Points to the protocol's unique identifier.\r
- @param[in] Interface Points to the interface instance.\r
- @param[in] Handle The handle on which the interface was installed.\r
-\r
- @retval EFI_SUCCESS Notification runs successfully.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-OpalPasswordEndOfDxeNotification (\r
- IN CONST EFI_GUID *Protocol,\r
- IN VOID *Interface,\r
- IN EFI_HANDLE Handle\r
- )\r
-{\r
- UINTN NumberOfDescriptors;\r
- EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemSpaceMap;\r
- EFI_STATUS Status;\r
-\r
- Status = gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemSpaceMap);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- mGcdMemSpace = AllocateCopyPool (NumberOfDescriptors * sizeof (EFI_GCD_MEMORY_SPACE_DESCRIPTOR), MemSpaceMap);\r
- if (EFI_ERROR (Status)) {\r
- gBS->FreePool (MemSpaceMap);\r
- return Status;\r
- }\r
-\r
- mNumberOfDescriptors = NumberOfDescriptors;\r
- gBS->FreePool (MemSpaceMap);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
/**\r
Main entry for this driver.\r
\r
EFI_SMM_VARIABLE_PROTOCOL *SmmVariable;\r
OPAL_EXTRA_INFO_VAR OpalExtraInfo;\r
UINTN DataSize;\r
- EFI_EVENT EndOfDxeEvent;\r
EFI_PHYSICAL_ADDRESS Address;\r
\r
mBuffer = NULL;\r
//\r
mSwSmiValue = (UINT8) Context.SwSmiInputValue;\r
\r
- //\r
- // Create event to record GCD descriptors at end of dxe for judging AHCI/NVMe PCI Bar\r
- // is in MMIO space to avoid attack.\r
- //\r
- Status = gSmst->SmmRegisterProtocolNotify (&gEfiSmmEndOfDxeProtocolGuid, OpalPasswordEndOfDxeNotification, &EndOfDxeEvent);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG((DEBUG_ERROR, "OpalPasswordSmm: Register SmmEndOfDxe fail, Status: %r\n", Status));\r
- goto EXIT;\r
- }\r
Status = gSmst->SmmLocateProtocol (&gEfiSmmVariableProtocolGuid, NULL, (VOID**)&SmmVariable);\r
if (!EFI_ERROR (Status)) {\r
DataSize = sizeof (OPAL_EXTRA_INFO_VAR);\r