From 9a0bcc8890846381dd1955e7ad436b62e4f47b2d Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Fri, 20 Jan 2012 17:29:52 -0500 Subject: [PATCH] Bugfix: Iterate over devices rather than threads for watchdog (and ADL) --- main.c | 10 +++++----- miner.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index 6a16eb25..f9cda11d 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 79f7ac13..f17187b3 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;