diff --git a/driver-opencl.c b/driver-opencl.c index 3d8638ae..028eb916 100644 --- a/driver-opencl.c +++ b/driver-opencl.c @@ -295,10 +295,12 @@ char *set_gpu_engine(const char *_arg) return NULL; } -char *set_gpu_fan(char *arg) +char *set_gpu_fan(const char *_arg) { int i, val1 = 0, val2 = 0, device = 0; char *nextptr; + char *arg = (char *)alloca(strlen(_arg) + 1); + strcpy(arg, _arg); nextptr = strtok(arg, ","); if (nextptr == NULL) diff --git a/driver-opencl.h b/driver-opencl.h index 4ddcb5df..d1e1e5f4 100644 --- a/driver-opencl.h +++ b/driver-opencl.h @@ -9,7 +9,7 @@ extern void *reinit_gpu(void *userdata); extern char *set_gpu_map(char *arg); extern char *set_gpu_threads(const char *arg); extern char *set_gpu_engine(const char *arg); -extern char *set_gpu_fan(char *arg); +extern char *set_gpu_fan(const char *arg); extern char *set_gpu_memclock(const char *arg); extern char *set_gpu_memdiff(char *arg); extern char *set_gpu_powertune(char *arg); diff --git a/sgminer.c b/sgminer.c index ce61cc9a..0415b8cd 100644 --- a/sgminer.c +++ b/sgminer.c @@ -2814,7 +2814,7 @@ static void show_hash(struct work *work, char *hashshow) } hash32 = (uint32_t *)(rhash + ofs); h32 = be32toh(*hash32); - + snprintf(hashshow, 64, "%08lx Diff %s/%s%s", h32, diffdisp, wdiffdisp, work->block ? " BLOCK!" : ""); } @@ -6241,22 +6241,24 @@ static void get_work_prepare_thread(struct thr_info *mythr, struct work *work) set_rawintensity(work->pool->rawintensity); if (work->pool->thread_concurrency) set_thread_concurrency(work->pool->thread_concurrency); - if (work->pool->gpu_engine) { - set_gpu_engine(work->pool->gpu_engine); - for (i = 0; i < nDevs; i++) - set_engineclock(i, gpus[i].min_engine); - } - if (work->pool->gpu_memclock) { - set_gpu_memclock(work->pool->gpu_memclock); - for (i = 0; i < nDevs; i++) - set_memoryclock(i, gpus[i].gpu_memclock); - } - if (work->pool->gpu_fan) { - set_gpu_fan(work->pool->gpu_fan); - for (i = 0; i < nDevs; i++) - if (gpus[i].min_fan == gpus[i].gpu_fan) - set_fanspeed(i, gpus[i].gpu_fan); - } + #ifdef HAVE_ADL + if (work->pool->gpu_engine) { + set_gpu_engine(work->pool->gpu_engine); + for (i = 0; i < nDevs; i++) + set_engineclock(i, gpus[i].min_engine); + } + if (work->pool->gpu_memclock) { + set_gpu_memclock(work->pool->gpu_memclock); + for (i = 0; i < nDevs; i++) + set_memoryclock(i, gpus[i].gpu_memclock); + } + if (work->pool->gpu_fan) { + set_gpu_fan(work->pool->gpu_fan); + for (i = 0; i < nDevs; i++) + if (gpus[i].min_fan == gpus[i].gpu_fan) + set_fanspeed(i, gpus[i].gpu_fan); + } + #endif // Change algorithm for each thread (thread_prepare calls initCl) for (i = 0; i < mining_threads; i++) { struct thr_info *thr = mining_thr[i]; @@ -8042,7 +8044,7 @@ void enable_device(struct cgpu_info *cgpu) #ifdef HAVE_CURSES adj_width(mining_threads, &dev_width); #endif - + rwlock_init(&cgpu->qlock); cgpu->queued_work = NULL; }