From dc70fe9ce0daefb3192baa06e139b48fc352eeff Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 14 Apr 2012 17:38:31 +1000 Subject: [PATCH] Do a complete cgminer restart if the ATI Display Library fails, as it does on windows after running for some time, when fanspeed reporting fails. --- adl.c | 10 ++++++++++ miner.h | 1 + 2 files changed, 11 insertions(+) diff --git a/adl.c b/adl.c index 13dd06bc..28be4d5b 100644 --- a/adl.c +++ b/adl.c @@ -679,6 +679,16 @@ int gpu_fanpercent(int gpu) lock_adl(); ret = __gpu_fanpercent(ga); unlock_adl(); + if (unlikely(ga->has_fanspeed && ret == -1)) { + applog(LOG_WARNING, "GPU %d stopped reporting fanspeed due to driver corruption", gpu); + if (opt_restart) { + applog(LOG_WARNING, "Restart enabled, will restart cgminer"); + applog(LOG_WARNING, "You can disable this with the --no-restart option"); + app_restart(); + } + applog(LOG_WARNING, "Disabling fanspeed monitoring on this device"); + ga->has_fanspeed = false; + } return ret; } diff --git a/miner.h b/miner.h index cdcb44c9..24a6ef36 100644 --- a/miner.h +++ b/miner.h @@ -657,5 +657,6 @@ extern void tq_freeze(struct thread_q *tq); extern void tq_thaw(struct thread_q *tq); extern bool successful_connect; extern void adl(void); +extern void app_restart(void); #endif /* __MINER_H__ */