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:
Ingrid Gallardo
2022-10-26 12:08:28 -07:00
parent f5cc2eb42f
commit b87b258b9e
3 changed files with 10 additions and 1 deletions

View File

@@ -191,6 +191,7 @@ struct msm_hw_fence_mem_data {
* @create_hw_fences: boolean to continuosly create hw-fences within debugfs
* @clients_list: list of debug clients registered
* @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 dentry *root;
@@ -204,6 +205,8 @@ struct msm_hw_fence_dbg_data {
struct list_head clients_list;
struct mutex clients_list_lock;
u64 lock_wake_cnt;
};
/**

View File

@@ -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,
&hw_fence_dump_queues_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;
}

View File

@@ -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
* 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,
drv_data->ipcc_client_pid,
drv_data->ipcc_client_vid, 30); /* Trigger APPS Signal 30 */