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.
diff --git a/adl.c b/adl.c
index 13dd06b..28be4d5 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 cdcb44c..24a6ef3 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__ */