audk/SecurityPkg/Tcg/Opal/OpalPassword
Hao Wu a3efbc29c4 SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1409

For the current implementation of OpalPassword drivers, it has a feature
to support devices being automatically unlocked in the S3 resume. For this
feature, two types of devices are supported:

* ATA hard disks working under AHCI mode
* NVM Express devices

The support of this feature requires the above 2 types of device to be
initialized at the PEI phase during S3 resume, which is done by the
co-work of the OpalPasswordDxe driver and the OpalPasswordPei driver.

More specifically, the OpalPasswordDxe will handle:

* Pre-allocate MMIO resource and save it in a driver internal LockBox for
  OpalPasswordPei to retrieve;
* Save the PCI configuration space of ATA controllers into boot script.

Meanwhile, the OpalPasswordPei will handle:

* Rely on the boot script for the PCI configuration space program of ATA
  controllers;
* Restore the driver internal LockBox to get the MMIO resource;
* Complete the PCI configuration space program for ATA and NVME
  controllers;
* Initialize ATA and NVME controllers and devices.

This commit will remove these hardware initialization related codes from
the OpalPassword drivers. The hardware initialization will be covered by
PEI storage device drivers (e.g. NvmExpressPei & AhciPei in the
MdeModulePkg).

After such codes removal, the OpalPasswordDxe will only handle:

* Construct/update the S3StorageDeviceInitList LockBox with the managing
  ATA and NVME devices.

And the OpalPasswordPei will only handle:

* Locate Storage Security Command PPI instances to perform the device
  automatic unlock during the S3 resume.

Cc: Chao Zhang <chao.b.zhang@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
2019-02-22 08:20:08 +08:00
..
ComponentName.c SecurityPkg OpalPassword: Add solution without SMM device code 2018-03-08 21:33:50 +08:00
OpalDriver.c SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalDriver.h SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalHii.c SecurityPkg/OpalPassword: Update strings on Opal Setup page 2019-02-14 13:37:27 +08:00
OpalHii.h SecurityPkg/OpalPassword: Update strings on Opal Setup page 2019-02-14 13:37:27 +08:00
OpalHiiCallbacks.c SecurityPkg/OpalPassword: Update strings on Opal Setup page 2019-02-14 13:37:27 +08:00
OpalHiiFormStrings.uni SecurityPkg/OpalPassword: Update strings on Opal Setup page 2019-02-14 13:37:27 +08:00
OpalHiiFormValues.h SecurityPkg OpalPasswordDxe: Move OPAL request variable definition 2018-03-17 15:48:54 +08:00
OpalPasswordCommon.h SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalPasswordDxe.inf SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalPasswordForm.vfr SecurityPkg/OpalPassword: Update strings on Opal Setup page 2019-02-14 13:37:27 +08:00
OpalPasswordPei.c SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalPasswordPei.h SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00
OpalPasswordPei.inf SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI 2019-02-22 08:20:08 +08:00