> -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Dong, > Eric > Sent: Wednesday, May 08, 2019 11:02 AM > To: devel@edk2.groups.io > Cc: Wu, Hao A > Subject: [edk2-devel] [Patch v2 2/3] SecurityPkg/OpalPassword: Change send > BlockSID policy. > > https://bugzilla.tianocore.org/show_bug.cgi?id=1782 > > Change Send BlockSID command time from ReadyToBoot to > EndOfDxe.
Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > > Signed-off-by: Eric Dong <eric.d...@intel.com> > Cc: Hao Wu <hao.a...@intel.com> > --- > .../Tcg/Opal/OpalPassword/OpalDriver.c | 104 ++++++++---------- > 1 file changed, 46 insertions(+), 58 deletions(-) > > diff --git a/SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.c > b/SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.c > index 42999c89f0..009a97f66f 100644 > --- a/SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.c > +++ b/SecurityPkg/Tcg/Opal/OpalPassword/OpalDriver.c > @@ -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. > // > -- > 2.21.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#40227): https://edk2.groups.io/g/devel/message/40227 Mute This Topic: https://groups.io/mt/31539609/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-