Commit 9a0bcc8890846381dd1955e7ad436b62e4f47b2d

Luke Dashjr 2012-01-20T17:29:52

Bugfix: Iterate over devices rather than threads for watchdog (and ADL)

diff --git a/main.c b/main.c
index 6a16eb2..f9cda11 100644
--- a/main.c
+++ b/main.c
@@ -5005,14 +5005,12 @@ static void *watchdog_thread(void *userdata)
 		}
 
 #ifdef HAVE_OPENCL
-		for (i = 0; i < mining_threads; i++) {
-			struct thr_info *thr;
+		for (i = 0; i < total_devices; ++i) {
+			struct cgpu_info *cgpu = devices[i];
+			struct thr_info *thr = cgpu->thread;
 			bool *enable;
-			struct cgpu_info *cgpu;
 			int gpu;
 
-			thr = &thr_info[i];
-			cgpu = thr->cgpu;
 			if (cgpu->api != &opencl_api)
 				continue;
 			/* Use only one thread per device to determine if the GPU is healthy */
@@ -6221,6 +6219,8 @@ retry_pools:
 
 			if (unlikely(thr_info_create(thr, NULL, miner_thread, thr)))
 				quit(1, "thread %d create failed", thr->id);
+
+			cgpu->thread = thr;
 		}
 	}
 
diff --git a/miner.h b/miner.h
index 79f7ac1..f17187b 100644
--- a/miner.h
+++ b/miner.h
@@ -252,6 +252,7 @@ struct cgpu_info {
 	struct timeval last_message_tv;
 
 	int threads;
+	struct thr_info *thread;
 
 	bool dynamic;
 	int intensity;