Browse Source

Do the driver flush in avalon code lockless since it can lead to deadlocks.

Con Kolivas 12 years ago
parent
commit
c3f1336996
1 changed files with 2 additions and 3 deletions
  1. 2 3
      driver-avalon.c

+ 2 - 3
driver-avalon.c

@@ -1520,10 +1520,9 @@ static void avalon_flush_work(struct cgpu_info *avalon)
 {
 {
 	struct avalon_info *info = avalon->device_data;
 	struct avalon_info *info = avalon->device_data;
 
 
-	mutex_lock(&info->qlock);
-	/* Will overwrite any work queued */
+	/* Will overwrite any work queued. Do this unlocked since it's just
+	 * changing a single non-critical value and prevents deadlocks */
 	avalon->queued = 0;
 	avalon->queued = 0;
-	mutex_unlock(&info->qlock);
 
 
 	/* Signal main loop we need more work */
 	/* Signal main loop we need more work */
 	cgsem_post(&info->qsem);
 	cgsem_post(&info->qsem);