|
|
@@ -1232,6 +1232,8 @@ static bool bitforce_thread_init(struct thr_info *thr)
|
|
|
bool sc = initdata->sc;
|
|
|
int xlink_id = 0, boardno = 0;
|
|
|
struct bitforce_proc_data *first_on_this_board;
|
|
|
+ char buf[100];
|
|
|
+ int fd = bitforce->device_fd;
|
|
|
|
|
|
for ( ; bitforce; bitforce = bitforce->next_proc)
|
|
|
{
|
|
|
@@ -1294,6 +1296,9 @@ static bool bitforce_thread_init(struct thr_info *thr)
|
|
|
}
|
|
|
bitforce->status = LIFE_INIT2;
|
|
|
|
|
|
+ // Clear job queue to start fresh; ignore response
|
|
|
+ bitforce_cmd1(fd, data->xlink_id, buf, sizeof(buf), "ZQX");
|
|
|
+
|
|
|
first_on_this_board = procdata;
|
|
|
for (int proc = 1; proc < data->parallel; ++proc)
|
|
|
{
|
|
|
@@ -1316,6 +1321,7 @@ static bool bitforce_thread_init(struct thr_info *thr)
|
|
|
{}
|
|
|
}
|
|
|
|
|
|
+ // NOTE: This doesn't restore the first processor, but it does get us the last one; this is sufficient for the delay debug and start of the next loop below
|
|
|
bitforce = thr->cgpu;
|
|
|
|
|
|
free(initdata->parallels);
|
|
|
@@ -1327,6 +1333,10 @@ static bool bitforce_thread_init(struct thr_info *thr)
|
|
|
applog(LOG_DEBUG, "%s: Delaying start by %dms", bitforce->dev_repr, wait / 1000);
|
|
|
nmsleep(wait);
|
|
|
|
|
|
+ // Clear results queue last, to start fresh; ignore response
|
|
|
+ for (bitforce = bitforce->device; bitforce; bitforce = bitforce->next_proc)
|
|
|
+ bitforce_zox(thr, "ZOX");
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|