Commits
Suman Anna committed 091031c0089
remoteproc: debugfs: fix a SRCU deadlock with recovery file The remoteproc debugfs file 'recovery' interface is provided to aid developers to halt an error recovery and perform a post-mortem analysis of a remote processor before continuing with the error recovery. A write operation on this file can be used to disable the recovery, recover once or to re-enable the error recovery without halting. This debugfs file is created using the debugfs_create_file(), so supports the file lifetime management support intrinsically by means of the srcu construct in the debugfs core (added in 4.7 kernel). The remoteproc recovery process when triggered also involves the caching and removal of the current traces and creation of the last traces which operate on the same debugfs srcu lock, causing an SRCU deadlock with the following signature, "Illegal synchronize_srcu() in same-type SRCU (or in RCU) read-side critical section!". Use the debugfs_create_file_unsafe() to create the recovery file in a non-proxying operation mode to avoid this deadlock. The file lifetime management for the corresponding file_operations is skipped for now as the creation of this recovery file is failrly self-managed within the remoteproc core. A long term solution would probably be to revise the crash handler workqueue to perform just the recovery in the workqueue function. Signed-off-by: Suman Anna <s-anna@ti.com>