Jelajahi Sumber

msm: synx: Fix for dispatching callbacks in kernel fencing

If wait-signal happens on APSS core, callbacks were not getting
dispatched because of recent changes (CR3442156). This fix ensures
callbacks are dispatched properly when handles are signaled.

Change-Id: I0b11634327afa3575c12819a639e104b27e82707
Signed-off-by: Urvesh Rathod <[email protected]>
Urvesh Rathod 2 tahun lalu
induk
melakukan
f549339d0b
1 mengubah file dengan 5 tambahan dan 6 penghapusan
  1. 5 6
      msm/synx/synx.c

+ 5 - 6
msm/synx/synx.c

@@ -599,15 +599,14 @@ void synx_signal_handler(struct work_struct *cb_dispatch)
 				goto fail;
 				goto fail;
 			}
 			}
 		}
 		}
-		else {
+		else
 			rc = synx_native_signal_fence(synx_obj, status);
 			rc = synx_native_signal_fence(synx_obj, status);
-			if (rc == SYNX_SUCCESS)
-				rc = synx_native_signal_core(synx_obj, status,
-						(signal_cb->flag & SYNX_SIGNAL_FROM_CALLBACK) ?
-						true : false, signal_cb->ext_sync_id);
-		}
 	}
 	}
 
 
+	if (rc == SYNX_SUCCESS && !synx_util_is_merged_object(synx_obj))
+		rc = synx_native_signal_core(synx_obj, status,
+			(signal_cb->flag & SYNX_SIGNAL_FROM_CALLBACK) ?
+			true : false, signal_cb->ext_sync_id);
 	mutex_unlock(&synx_obj->obj_lock);
 	mutex_unlock(&synx_obj->obj_lock);
 
 
 	if (rc != SYNX_SUCCESS)
 	if (rc != SYNX_SUCCESS)