ANDROID: scsi: ufs: add complete init vendor hook
Currently the core UFS driver does not have a vops to notify when the device is operational. This commit introduces a hook, which serves to notify device completing initialization and is ready to accept I/O. This is required by the FIPS140-2 [1] self integrity test of inline encryption engine, which must run whenever the host controller is reset. The code requires sleeping while waiting for I/O to complete and allocating some memory dynamically, which requires the vendor hook to be restricted. [1] https://csrc.nist.gov/publications/detail/fips/140/2/final Bug: 185809932 Signed-off-by: Konstantin Vyshetsky <vkon@google.com> Change-Id: I6f476f9c2e2b50574d2898c3f1ef6b648d92df24
This commit is contained in:

committed by
Jaegeuk Kim

parent
7050ead570
commit
e774e4eca6
@@ -214,6 +214,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_fault_cache_page);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_complete_init);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_reprogram_all_keys);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
|
||||
|
@@ -8042,6 +8042,8 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async)
|
||||
ufshcd_auto_hibern8_enable(hba);
|
||||
|
||||
ufshpb_reset(hba);
|
||||
|
||||
trace_android_rvh_ufs_complete_init(hba);
|
||||
out:
|
||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||
if (ret)
|
||||
|
@@ -19,6 +19,10 @@ DECLARE_HOOK(android_vh_ufs_fill_prdt,
|
||||
unsigned int segments, int *err),
|
||||
TP_ARGS(hba, lrbp, segments, err));
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_ufs_complete_init,
|
||||
TP_PROTO(struct ufs_hba *hba),
|
||||
TP_ARGS(hba), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_ufs_reprogram_all_keys,
|
||||
TP_PROTO(struct ufs_hba *hba, int *err),
|
||||
TP_ARGS(hba, err), 1);
|
||||
|
Reference in New Issue
Block a user