mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
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>
(cherry picked from commit e774e4eca6)
(cherry picked from https://android-review.googlesource.com/q/commit:c0f24579002c3fb0e404f223f8574c7f4fdac200)
Merged-In: I6f476f9c2e2b50574d2898c3f1ef6b648d92df24
Change-Id: I6f476f9c2e2b50574d2898c3f1ef6b648d92df24
This commit is contained in:
committed by
Will McVicker
parent
81d55bc3b9
commit
eef88095dc
@@ -136,6 +136,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_reprogram_all_keys);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_reprogram_all_keys);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_complete_init);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command);
|
||||||
|
|||||||
@@ -8882,6 +8882,8 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
|
|||||||
ufshcd_auto_hibern8_enable(hba);
|
ufshcd_auto_hibern8_enable(hba);
|
||||||
|
|
||||||
ufshpb_toggle_state(hba, HPB_RESET, HPB_PRESENT);
|
ufshpb_toggle_state(hba, HPB_RESET, HPB_PRESENT);
|
||||||
|
|
||||||
|
trace_android_rvh_ufs_complete_init(hba);
|
||||||
out:
|
out:
|
||||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_ufs_reprogram_all_keys,
|
|||||||
TP_PROTO(struct ufs_hba *hba, int *err),
|
TP_PROTO(struct ufs_hba *hba, int *err),
|
||||||
TP_ARGS(hba, err), 1);
|
TP_ARGS(hba, err), 1);
|
||||||
|
|
||||||
|
DECLARE_RESTRICTED_HOOK(android_rvh_ufs_complete_init,
|
||||||
|
TP_PROTO(struct ufs_hba *hba),
|
||||||
|
TP_ARGS(hba), 1);
|
||||||
|
|
||||||
DECLARE_HOOK(android_vh_ufs_prepare_command,
|
DECLARE_HOOK(android_vh_ufs_prepare_command,
|
||||||
TP_PROTO(struct ufs_hba *hba, struct request *rq,
|
TP_PROTO(struct ufs_hba *hba, struct request *rq,
|
||||||
struct ufshcd_lrb *lrbp, int *err),
|
struct ufshcd_lrb *lrbp, int *err),
|
||||||
|
|||||||
Reference in New Issue
Block a user