mm-drivers: hw_fence: add debug refcount to trylock
Add debugfs to query the amount of times that inter-vm trylock needs to wakeup the svm. Change-Id: Ic1f88319f502e652902be0d45792768cf5c5154e Signed-off-by: Ingrid Gallardo <quic_ingridg@quicinc.com>
This commit is contained in:
@@ -191,6 +191,7 @@ struct msm_hw_fence_mem_data {
|
|||||||
* @create_hw_fences: boolean to continuosly create hw-fences within debugfs
|
* @create_hw_fences: boolean to continuosly create hw-fences within debugfs
|
||||||
* @clients_list: list of debug clients registered
|
* @clients_list: list of debug clients registered
|
||||||
* @clients_list_lock: lock to synchronize access to the clients list
|
* @clients_list_lock: lock to synchronize access to the clients list
|
||||||
|
* @lock_wake_cnt: number of times that driver triggers wake-up ipcc to unlock inter-vm try-lock
|
||||||
*/
|
*/
|
||||||
struct msm_hw_fence_dbg_data {
|
struct msm_hw_fence_dbg_data {
|
||||||
struct dentry *root;
|
struct dentry *root;
|
||||||
@@ -204,6 +205,8 @@ struct msm_hw_fence_dbg_data {
|
|||||||
|
|
||||||
struct list_head clients_list;
|
struct list_head clients_list;
|
||||||
struct mutex clients_list_lock;
|
struct mutex clients_list_lock;
|
||||||
|
|
||||||
|
u64 lock_wake_cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1003,6 +1003,8 @@ int hw_fence_debug_debugfs_register(struct hw_fence_driver_data *drv_data)
|
|||||||
debugfs_create_file("hw_fence_dump_queues", 0600, debugfs_root, drv_data,
|
debugfs_create_file("hw_fence_dump_queues", 0600, debugfs_root, drv_data,
|
||||||
&hw_fence_dump_queues_fops);
|
&hw_fence_dump_queues_fops);
|
||||||
debugfs_create_file("hw_sync", 0600, debugfs_root, NULL, &hw_sync_debugfs_fops);
|
debugfs_create_file("hw_sync", 0600, debugfs_root, NULL, &hw_sync_debugfs_fops);
|
||||||
|
debugfs_create_u64("hw_fence_lock_wake_cnt", 0600, debugfs_root,
|
||||||
|
&drv_data->debugfs_data.lock_wake_cnt);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -59,7 +59,11 @@ static void _unlock(struct hw_fence_driver_data *drv_data, uint64_t *lock)
|
|||||||
* SVM is in WFI state, since SVM acquire bit is set
|
* SVM is in WFI state, since SVM acquire bit is set
|
||||||
* Trigger IRQ to Wake-Up SVM Client
|
* Trigger IRQ to Wake-Up SVM Client
|
||||||
*/
|
*/
|
||||||
HWFNC_DBG_LOCK("triggering ipc to unblock SVM lock_val:%d\n", lock_val);
|
#if IS_ENABLED(CONFIG_DEBUG_FS)
|
||||||
|
drv_data->debugfs_data.lock_wake_cnt++;
|
||||||
|
HWFNC_DBG_LOCK("triggering ipc to unblock SVM lock_val:%d cnt:%llu\n", lock_val,
|
||||||
|
drv_data->debugfs_data.lock_wake_cnt);
|
||||||
|
#endif
|
||||||
hw_fence_ipcc_trigger_signal(drv_data,
|
hw_fence_ipcc_trigger_signal(drv_data,
|
||||||
drv_data->ipcc_client_pid,
|
drv_data->ipcc_client_pid,
|
||||||
drv_data->ipcc_client_vid, 30); /* Trigger APPS Signal 30 */
|
drv_data->ipcc_client_vid, 30); /* Trigger APPS Signal 30 */
|
||||||
|
Reference in New Issue
Block a user