|
@@ -691,9 +691,13 @@ static void *avalon_get_results(void *userdata)
|
|
|
if (unlikely(avalon->results <= -info->miner_count)) {
|
|
if (unlikely(avalon->results <= -info->miner_count)) {
|
|
|
applog(LOG_ERR, "AVA%d: %d invalid consecutive results, resetting",
|
|
applog(LOG_ERR, "AVA%d: %d invalid consecutive results, resetting",
|
|
|
avalon->device_id, -avalon->results);
|
|
avalon->device_id, -avalon->results);
|
|
|
|
|
+
|
|
|
|
|
+ /* Lock to prevent more work being sent during reset */
|
|
|
|
|
+ mutex_lock(&info->qlock);
|
|
|
avalon_reset(avalon, fd);
|
|
avalon_reset(avalon, fd);
|
|
|
avalon_idle(avalon, info, fd);
|
|
avalon_idle(avalon, info, fd);
|
|
|
avalon->results = 0;
|
|
avalon->results = 0;
|
|
|
|
|
+ mutex_unlock(&info->qlock);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (unlikely(offset + rsize >= AVALON_READBUF_SIZE)) {
|
|
if (unlikely(offset + rsize >= AVALON_READBUF_SIZE)) {
|