mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
SecurityPkg/OpalPassword: Change send BlockSID policy
https://bugzilla.tianocore.org/show_bug.cgi?id=1782 Change Send BlockSID command time from ReadyToBoot to EndOfDxe. Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
e0972cfc7d
commit
539a6c9318
@ -424,6 +424,47 @@ BuildOpalDeviceInfo (
|
||||
FreePool (S3InitDevices);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Send BlockSid command if needed.
|
||||
|
||||
**/
|
||||
VOID
|
||||
SendBlockSidCommand (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
OPAL_DRIVER_DEVICE *Itr;
|
||||
TCG_RESULT Result;
|
||||
OPAL_SESSION Session;
|
||||
UINT32 PpStorageFlag;
|
||||
|
||||
PpStorageFlag = Tcg2PhysicalPresenceLibGetManagementFlags ();
|
||||
if ((PpStorageFlag & TCG2_BIOS_STORAGE_MANAGEMENT_FLAG_ENABLE_BLOCK_SID) != 0) {
|
||||
//
|
||||
// Send BlockSID command to each Opal disk
|
||||
//
|
||||
Itr = mOpalDriver.DeviceList;
|
||||
while (Itr != NULL) {
|
||||
if (Itr->OpalDisk.SupportedAttributes.BlockSid) {
|
||||
ZeroMem(&Session, sizeof(Session));
|
||||
Session.Sscp = Itr->OpalDisk.Sscp;
|
||||
Session.MediaId = Itr->OpalDisk.MediaId;
|
||||
Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
|
||||
|
||||
DEBUG ((DEBUG_INFO, "OpalPassword: EndOfDxe point, send BlockSid command to device!\n"));
|
||||
Result = OpalBlockSid (&Session, TRUE); // HardwareReset must always be TRUE
|
||||
if (Result != TcgResultSuccess) {
|
||||
DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Itr = Itr->Next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Notification function of EFI_END_OF_DXE_EVENT_GROUP_GUID event group.
|
||||
|
||||
@ -475,6 +516,11 @@ OpalEndOfDxeEventNotify (
|
||||
TmpDev = TmpDev->Next;
|
||||
}
|
||||
|
||||
//
|
||||
// Send BlockSid command if needed.
|
||||
//
|
||||
SendBlockSidCommand ();
|
||||
|
||||
DEBUG ((DEBUG_INFO, "%a() - exit\n", __FUNCTION__));
|
||||
|
||||
gBS->CloseEvent (Event);
|
||||
@ -2262,53 +2308,6 @@ OpalDriverGetDeviceList(
|
||||
return mOpalDriver.DeviceList;
|
||||
}
|
||||
|
||||
/**
|
||||
ReadyToBoot callback to send BlockSid command.
|
||||
|
||||
@param Event Pointer to this event
|
||||
@param Context Event handler private Data
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
ReadyToBootCallback (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
)
|
||||
{
|
||||
OPAL_DRIVER_DEVICE *Itr;
|
||||
TCG_RESULT Result;
|
||||
OPAL_SESSION Session;
|
||||
UINT32 PpStorageFlag;
|
||||
|
||||
gBS->CloseEvent (Event);
|
||||
|
||||
PpStorageFlag = Tcg2PhysicalPresenceLibGetManagementFlags ();
|
||||
if ((PpStorageFlag & TCG2_BIOS_STORAGE_MANAGEMENT_FLAG_ENABLE_BLOCK_SID) != 0) {
|
||||
//
|
||||
// Send BlockSID command to each Opal disk
|
||||
//
|
||||
Itr = mOpalDriver.DeviceList;
|
||||
while (Itr != NULL) {
|
||||
if (Itr->OpalDisk.SupportedAttributes.BlockSid) {
|
||||
ZeroMem(&Session, sizeof(Session));
|
||||
Session.Sscp = Itr->OpalDisk.Sscp;
|
||||
Session.MediaId = Itr->OpalDisk.MediaId;
|
||||
Session.OpalBaseComId = Itr->OpalDisk.OpalBaseComId;
|
||||
|
||||
DEBUG ((DEBUG_INFO, "OpalPassword: ReadyToBoot point, send BlockSid command to device!\n"));
|
||||
Result = OpalBlockSid (&Session, TRUE); // HardwareReset must always be TRUE
|
||||
if (Result != TcgResultSuccess) {
|
||||
DEBUG ((DEBUG_ERROR, "OpalBlockSid fail\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Itr = Itr->Next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Stop this Controller.
|
||||
|
||||
@ -2571,7 +2570,6 @@ EfiDriverEntryPoint(
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_EVENT ReadyToBootEvent;
|
||||
EFI_EVENT EndOfDxeEvent;
|
||||
|
||||
Status = EfiLibInstallDriverBindingComponentName2 (
|
||||
@ -2604,16 +2602,6 @@ EfiDriverEntryPoint(
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// register a ReadyToBoot event callback for sending BlockSid command
|
||||
//
|
||||
Status = EfiCreateEventReadyToBootEx (
|
||||
TPL_CALLBACK,
|
||||
ReadyToBootCallback,
|
||||
(VOID *) &ImageHandle,
|
||||
&ReadyToBootEvent
|
||||
);
|
||||
|
||||
//
|
||||
// Install Hii packages.
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user