-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
3789 lines (3451 loc) · 182 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 3.1.0 - April 28th, 2013
- va_copy is meant to be matched by a va_end in log_generic.
- usbutils remove_in_use break
- usbutils remove_in_use missing prev
- usbutils missing add_in_use
- Clean up summary slightly better on exit.
- Make the scan sleep time after scanwork in bflsc dynamic to keep queues
between watermark levels.
- Remove unused temp counts in bflsc.
- Calculate a rolling 5 min average set of temperatures for bflsc.
- Damp the display of voltage for BFLSC devices.
- Damp the temperature display measurement for bflsc since it fluctuates so
wildly.
- bflsc add volt stats
- Handle failed tolines command in bflsc driver.
- Can use a read lock instead of a write lock in bflsc scanwork.
- Since we are filling a queue on the bflsc devices, there is no need to run
through scanwork frequently provided we use the restart_wait function to abort
early during a block change.
- Remove flushed work in bfl scanwork from the hash table.
- Set correct device in process_nonces in bflsc driver.
- bflsc add work reply INPROCESS: missing from the spec
- bflsc put in some error messages not yet written
- bflsc get completed hashes as late as possible
- Fix potential memory leak with unused work items in bflsc_queue_full
- Reverse bools in bflsc_queue_full
- Avoid recursive loop calling correct function instead.
- bflsc fix details identification
- Differentiate BFLSC device from regular bitforce and give warning if no
support is compiled in.
- util.c str_text make a fully text readable version of str
- BFLSC fix FPGA identity overlap
- Locking error in bflsc_send_work
- Use htobe32 function for converting nonce in bflsc.
- Replace deprecated bzero with memset in bflsc driver.
- Fix compilation of bflsc driver without opencl.
- Check for realloc failures in bflsc driver.
- Check for failure to calloc in bflsc driver.
- Trivial style change
- Use copy_time function in bflsc driver.
- Use cgtime in bflsc driver and update copyright notice.
- Use a separate function for bfl initialise that doesn't require locking.
- Fix BFLSC building.
- bflsc v0.1
Version 3.0.1 - April 25th, 2013
- Bypass attempting to read and save binary files on OSX to avoid crashes on >1
GPU.
- Receive failures in recv_line should unconditionally fail.
- Use sock_blocks in api.c
- Use sock_blocks function for stratum send and receive.
- Create an OS specific sock_blocks function.
Version 3.0.0 - April 22nd, 2013
- Further fix distdir for hexdump.c
- Fix build and distdir.
- Remove all CPU mining code.
- compile on win32
- Update SCRYPT README with improved hashrates for 7970.
- Use copy_time helper throughout cgminer.c
- Provide wrappers for commonly used timer routines with API stats.
- Avoid one cgtime call in sole_hash_work.
- Fulltest is true if value is <= target.
- Use system host to endian functions for clarity in fulltest.
- Provide endian_flipX functions to avoid special casing big endian in cgminer.c
- Provide a flip128 helper to simplify big endian flipping.
- Use flip helpers to simplify code for calculation of midstate.
- Use flip32 function instead of open coding it in gen_stratum_work.
- Move util.c exports to util.h
- Fix warning on building avalon on win32
- Use cgtime in driver-avalon.c
- Use cgtime in driver-icarus.c
- Use cgtime in driver-bitforce.c
- Use cgtime in logging.c
- Use cgtime in usbutils.c
- Use cgtime in driver-opencl.c
- Use cgtime wrapper in driver-modminer.c
- Use cgtime in driver-ztex.c
- Use cgtime in compat.h
- Use cgtime instead of gettimeofday in fpgautils.c
- Replace gettimeofday usage in cgminer.c with cgtime
- Create a cgminer specific gettimeofday wrapper that is always called with tz
set to NULL and increases the resolution on windows.
- Add high resolution to nmsleep wrapper on windows.
- Set default ocl work size for scrypt to 256.
- define le32toh if needed
- fliter out the wrong result from adjust fan code
- compile avalon driver on win32 and win64
- Restart threads on the rare chance we found the block ourselves.
- Add more FAQs about crossfire.
- Set last device valid work on adding device.
- Increment last device valid work count in submit_nonce to cover scrypt.
- Set opt_scrypt drv max diff for correctness.
- Make scrypt submission use the submit_nonce code, with nonces matching
endianness.
- Do testing for HW errors on submit nonce for both scrypt and sha.
- Increment hardware error count from the one site.
- Rename scrypt regenhash function for consistency.
- Add new best share info to verbose logging.
- Add notice for when network diff is changed.
- Convert error getting device IDs in ocl code to info log level only since
multiple platforms may be installed and the error is harmless there.
- Unnecessary extra array in ocl code.
- Further driver FAQs.
- Add MAC FAQ.
- Add more FAQ details.
- Check for work restart after disable in the hash queued work loop since it may
be a long time before we re-enable a device.
- Unconditionally test for many wrong results on avalon and reset to avoid
passing a corrupt avalon result to temperature code.
- build out of source dir
- Set device_diff for queued work or there will be no diff1 share count.
- Only reset an avalon device with no results when there are no results
consecutively.
- More FAQs.
- More FAQs.
- Cleanup when stratum curl fails to initialise.
- Avoid applog in recalloc_sock.
- Avoid applog under stratum_lock in recv_line.
- Avoid applog under stratum_lock in __stratum_send.
- Put spacing around locking in util.c for clarity.
- Avoid applog under cg_wlock.
- Put spacing around locking code for clarity.
- Avoid applog under pool_lock.
- Avoid more recursive locks.
- Avoid applog while ch_lock is held.
- Avoid recursive locks in fill_queue.
- Variable is already initialised in global scope.
- More GPU faqs.
- More README faqs.
- Yet more README faqs.
- Add more faqs to README.
- Wrap result wrong tests in avalon scanhash in unlikely() and only consider a
hash count of zero wrong if a restart wasn't issued.
- avalon: if result_wrong >= get_work_count jump out the read loop
- Fix warning on 32bit.
- Fix warning on 32bit.
- Avoid curl_easy_cleanup on old curl versions in setup_stratum_curl as well.
- fix the fan control on max temp2/3
- for some reason network down. one simple cgminer command: "cgminer -o
127.0.0.1:8888 -O fa:ke --avalon-options 115200:32:10:50:256" can idle the
avalon for safe power and protect chip
- if hash_count == 0; reinit avalon, fix the 0MHS bug use the max value of temp1
and temp2 for fan control
- Reinstate the matching_work_count per subdevice on avalon based on the work
subid.
- Avalon driver is missing the drv_id.
- Rationalise and simplify the share diff and block solve detection to a common
site.
- Rationalise and simplify the share diff and block solve detection to a common
site.
- Make the avalon array size a macro.
- Use replacement of work items in the avalon buffer as needed instead of
flushing them.
- Reinstate wrong work count to reset avalon regardless and display number of
wrong results.
- Revert "The result_wrong measurement for avalon is continually leading to
false positives so remove it."
- select() on serial usb in avalon does not work properly with zero timeout.
- The result_wrong measurement for avalon is continually leading to false
positives so remove it.
- Revert "Use only 2 queued work arrays in avalon."
- Use no timeout on further reads in avalon_gets
- Do sequential reads in avalon_get_reset to cope with partial reads.
- Show read discrepancy in avalon_get_reset.
- Reuse avalon_get_work_count variable.
- Check for AVA_GETS_RESTART when deciding if avalon has messed up.
- Make the detection of all wrong results on avalon much more conservative to
avoid false positives on work restarts.
- Show error codes on select and read fail in avalon.
- If we get a restart message in avalon_gets still check if there's a receive
message to parse first without a timeout before returning AVA_GETS_RESTART.
- Use only 2 queued work arrays in avalon.
- avalon_gets is always called from the one call site so inline it.
- The read_count is unused by the avalon get result code and no longer required
for avalon reset so simplify code removing it.
- Use a separate avalon_get_reset function for resetting avalon instead of using
avalon_get_result.
- The current hash count returned by avalon scanhash is just an obfuscated
utility counter so make it explicit.
- Check for a restart before a timeout in message parsing code in avalon.
- We should check for a restart message before checking for a timeout in avalon
scanhash.
- Store the subid for the work item in avalon.
- usbutils more stats for bflsc
- Fix record_temp_fan function in avalon driver. Patch by Xiangfu
- Remove inappropriate memset of struct avalon result which was corrupting fan
values.
- Fix warning with no curses built in.
- Bump version to 2.11.4
- Add API support for Avalon.
- Only do_avalon_close once on multiple errors.
- Reset the result_wrong count on block change in avalon scanhash to prevent
false positives for all nonces failed.
- Small timeouts on select() instead of instant timeout increase reliability of
socket reads and writes.
- Only get extra work in fill_queue if we don't have any unqueued work in the
list.
- Small timeouts on select() instead of instant timeout increase reliability of
socket reads and writes.
- Rotate the avalon work array and free work on AVA_SEND_BUFFER_EMPTY as well.
- Only get extra work in fill_queue if we don't have any unqueued work in the
list.
- Don't get any work if our queue is already full in avalon_fill.
- Differentiate socket closed from socket error in recv_line.
- Differentiate socket closed from socket error in recv_line.
- Free avalon->works in the event we call avalon_prepare on failure to
initialise.
- Fix warnings.
- Create an array of 4 lots of work for avalon and cycle through them.
- Remove unused per unit matching work count for avalon.
- Rename the confusing avalon_info pointer.
- Simplify avalon scanhash code using the new find_queued_work_bymidstate
function. Partially works only.
- Members of cgpu_info for avalon are not meant to be in the union.
- Use correct struct device_drv for avalon_drv.
- cgminer.c -S help to only say Icarus
- Check enough work is queued before queueing more in avalon_fill.
- Actually put the work in the avalon queue.
- Rneame avalon_api to avalon_drv.
- First draft of port of avalon driver to new cgminer queued infrastructure.
- Add Makefile entry for driver-avalon.
- Add configure support for avalon.
Version 2.11.4 - April 5th, 2013
- Remove bfl-sc option from configure for 2.11 branch.
- Only update hashrate calculation with the log interval.
- Update the total_tv_end only when we show the log to prevent failure to update
logs.
- Minor README updates.
- Add example 7970 tuning for scrypt in readme.
- Update driver recommendations.
- Add extensive GPU FAQs for the flood of new Scrypt miners.
- Remove help option for cpumining in build environment.
- Remove scripts that make it too easy to compile CPU mining support.
- Win32 and win64 build updates
- Remove references to CPU mining from README.
- Show share hash as little endian as needed.
- usbutils extra message requirements
- Make hashmeter frequency for hash_queued_work match sole_work.
- Update links and recommended SDKs.
- Update scrypt readme re drivers and sdk.
- usbutils.c usb_cmdname() usb_cmds -> string name
- BFL FPGA Windows timeout set to 999ms
- AUTHORS - spam update time (one year since the last)
- Update README for x970 memdiff values.
- Update README to match changes to display.
- Remove increasingly irrelevant discarded work from status lines.
- Remove increasingly irrelevant queued and efficiency values from status and
move WU to status line.
- Allow cgminer to start if usb hotplug is enabled but no devices yet exist.
- Do not scan other gpu platforms if one is specified.
- Update README for sync objects on windows.
- Update README about intensity.
- Add information for setting gpu max alloc and sync parameters for windows with
scrypt.
- If the hashmeter is less than the log interval and being updated by the
watchdog, don't update the hashrate.
Version 2.11.3 - March 17, 2013
- Update docs and reorder README to show executive summary near top.
- Update the hashmeter at most 5 times per second.
- Usbutils use its own internal read buffer
- Calculate work utility for devices that support target diffs of greater than
1, and update scrypt code to use it.
- usbutils allow read termination match to be a string
- Set default GPU threads to 1 for scrypt.
- Connect backup stratum pools if the primary pool cannot deliver work.
- Use a new algorithm for choosing a thread concurrency when none or no shader
value is specified for scrypt.
- Do not round up the bufsize to the maximum allocable with scrypt.
- Remove the rounding-up of the scrypt padbuffer which was not effectual and
counter-productive on devices with lots of ram, limiting thread concurrencies
and intensities.
- bufsize is an unsigned integer, make it so for debug.
- Update the hashmeter once per second but only display the extra logs every
opt_log_inteval.
- add a dummy ztex to usbutils so cgminer -n lists ztex also
- nDevs required for -n with usb
- USB device list - convert some common error numbers to messages
- USB -n 'known' text only without ---usb-list-all
- USB modify -n and --usb-dump to only show known devices or use new
--usb-list-all option to see all
- Make pool adding while running asynchronous, using the pool test thread
functionality.
- Only curl easy cleanup a stratum curl if it exists.
- Sacrifice the ram of curl handles in stratum disconnects when we have built
with old libcurl to avoid crashes.
- cgminer -n to include a USB device list
- usbutils allow call of usb_all() from other code
- Convert gbt_lock to a cg_lock.
- Add intermediate variants of cglocks that can be up or downgraded to read or
write locks and use them for stratum work generation.
- Move the stratum and GBT data to be protected under a new cg_lock data_lock.
- Convert the ch_lock to cg_lock.
- Convert the control_lock to a cg_lock.
- Remove unused qd_lock.
- Implement cg_lock write biased rwlocks.
- do usb_initialise() after the started message so we see it
- --usb-dump display brief dump if value = 0
- USB add --usb options to limit USB device selection v0.1
Version 2.11.2 - March 9, 2013
- Whitelist AMD APP SDK 2.8 for diablo kernel.
- Cope with the highest opencl platform not having usable devices.
- Fix memory leak with share submission on GPU work structures as discovered by
twobitcoins.
- usb_cleanup() without locking.
- Use curl_easy_cleanup to close any open stratum sockets.
- Show pool number in switch message
- Don't start testing any pools with the watchpool thread if any of the test
threads are still active.
- Set sockd to false should curl setup fail on stratum.
- Close any open sockets when reusing a curl handle and reopen the socket
whenever we're retrying stratum.
- Set pool died on failed testing to allow idle flag and time to be set.
- Remove unused pthread_t typedefs from struct pool.
- Perform pool_resus on all pools that are found alive with the test pool
threads.
- Use pool_unworkable in select_balanced as well.
- Differentiate pool_unusable from pool_unworkable.
- Keep a connection open on higher priority stratum pools to fail back to them.
- Rename threads according to what pool they're associated with as well.
- Set the wrong bool in pool_active
- Start the stratum thread only if we successfully init and authorise it,
otherwise unset the init flag.
- Make the initialisation of the stratum thread more robust allowing the
watchpool thread safe access to it after the stratum thread is started.
- API no longer ignore send() status
- API make the main socket non-static
Version 2.11.1 - March 7, 2013
- Shorten the time before keepalive probes are sent out and how frequently
they're sent with stratum curls.
- Only set stratum auth once to prevent multiple threads being started.
- Display select return value on select fail in stratum thread.
- Clear the socket of anything in the receive buffer if we're going to retry
connecting.
- Allow pools to be resuscitated on first startup by the watchpool thread.
- Check all pools simultaneously at startup switching to the first alive one to
speed up startup.
- Clear just the socket buffer when we don't care what is left in a stratum
socket.
- Clear the stratum socket whenever we are closing it since the buffer is going
to be reused.
- Do not continue work from a stratum pool where the connection has been
interrupted.
- Reset stratum_notify flag on suspend_stratum as well.
- Close any sockets opened if we fail to initiate stratum but have opened the
socket.
- Close any existing stratum socket if we are attempting to restart stratum so
the pool knows the connection has gone.
- Show mechanism of stratum interruption if select times out.
- Make stratum connection interrupted message higher priority to be visible at
normal logging levels.
- Implement client.show_message support for stratum.
- API add 'Network Difficulty' to 'coin'
- Setup BFLSC support
- API use control_lock when switching pools
- Make sure to retry only once with noresume support for stratum.
- Instead of keeping track of when the last work item was generated to keep
stratum connections open, keep them open if any shares have been submitted
awaiting a response.
- usbutils.c copy full size to 'Last Command'
- configure - set USE_USBUTILS when usbutils is required and use it in the code
- Clear last pool work on switching pools if the current pool supports local
work generation or we are in failover only mode.
- make rw locks: mining_thr_lock and devices_lock
- Release MMQ device only once (not 4 times)
- api.c fix MSG overlap
- Hotplug - allow setting interval via --hotplug or API
- curses - fix - put a dev_width inside #ifdef
- usb_cleanup() use correct locking mechanism
- Implement and use usb_cleanup() on shutdown or restart
- miner.php report 'Last Valid Work' as time before request
- API - return Last Valid Work
- api -> drv
- ZTX bug set missing drv_id
Version 2.11.0 - March 2, 2013
- Update kernel file names signifying changes.
- Update a pool's last work time when the work is popped as well as staged.
- API always report failed send() replies
- Update diff stale: total and pools when stratum throws away shares
- Keep stratum connections open for 2 minutes after the last work item was
staged to allow stray shares to be submitted on pool switching.
- Try to extract the sessionid associated with mining.notify on 3rd level array
and submit it along with the userid to support mining resume, failing gracefully
and restarting if the pool rejects it.
- Speed up watchdog interval and therefore display updates to 2 seconds.
- Update copyright dates.
- Cope with misread sessionid on stratum for now.
- Use constants from the array of __constants throughout the diablo kernel.
- Create a __constant array for use within diablo kernel.
- Fix --benchmark generating valid work for cgminer.
- Use the sessionid as passed on stratum connect to attempt to resume a
connection once and then clear it if it fails, to use a new connection.
- Move to storing the nonce1 in the work struct instead of the sessionid for the
now defunct first draft mining.resume protocol.
- Use global constant arrays for all other constants used in scrypt kernel.
- Use global __constants for sha functions in scrypt kernel.
- Use constants for endian swap macros.
- Revise scrypt kernel copyright notice.
- Separate out additions in scrypt kernel.
- Reuse some Vals[] variables that can be assigned to constants earlier in the
poclbm kernel, making for fewer ops.
- Put all constants used in poclbm kernel into __const memory array to speed up
concurrent reads on the wavefront.
- BFL stop 1st init command if no device
- Add a get_queued function for devices to use to retrieve work items from the
queued hashtable.
- Bugfix: Duplicate stratum sessionid when copying work, to avoid double-free
- Bugfix: Missing pool_no parameter to applog for no-stratum-sessionid debug
message
- Add the choice of hash loop to the device driver, defaulting to hash_sole_work
if none is specified.
- Add comments.
- Add a driver specific flush_work for queued devices that may have work items
already queued to abort working on them on the device and discard them.
- Flush queued work on a restart from the hash database and discard the work
structs.
- Create a central point for removal of work items completed by queued device
drivers.
- Create a fill_queue function that creates hashtables of as many work items as
is required by the device driver till it flags the queue full.
- Create the hash queued work variant for use with devices that are fast enough
to require a queue.
- Update copyright year.
- Fix tv_lastupdate being made into tv_end and update the hashmeter on cycle,
not opt_log_interval.
- Fix tv_lastupdate being made into tv_end and update the hashmeter on cycle,
not opt_log_interval.
- Only continue submitting shares with mining.resume support on stratum when the
session id matches.
- Provide support for mining.resume with stratum, currently re-authorising after
successful resumption pending finalising of the protocol process.
- Provide basic framework for restarting stratum depending on whether resume
support exists or not.
- Abstract out the setting up of the stratum curl socket.
- Free sessionid in clean_work and remove redundant setting of strings to NULL
since the whole work struct is zeroed.
- Only clear stratum shares mandatorily on stratum dropouts when the pool does
not support resume.
- Try resubmitting stratum shares every 5 seconds for up to 2 minutes if the
pool session id exists and matches on failure to submit.
- Do as much outside of mutex locking of sshare_lock as possible.
- Remove last reference to struct work used outside the sshare_lock in
submit_work_thread
- Unlock the sshare_lock in submit_work_thread when all references to work and
sshare are complete.
- Add timestamps to stratum_share structs as they're generated and copy the
stratum sessionid if it exists to stratum work generated.
- Store session id for stratum if the pool supports it for future mining.resume
support.
- API.java allow partial reads
- debug_cb buffer type warning
- MMQ rewrite the last of the old scanhash loop and drastically reduce CPU
- hash_sole_work can be static
- Make the numbuf larger to accept larger scrypt parameters.
- Keep the unique id of each work item across copy_work to prevent multiple work
items having the same id.
- Abstract out the main hashing loop to allow us to use a separate loop for
devices that are fast enough to require queued work.
- Provide a noop thread_enable function for drivers that don't support it.
- Provide a noop thread_shutdown function for drivers that don't support it.
- Provide a noop hw_error function for drivers that don't support it.
- Provide a noop prepare_work for drivers that don't support it.
- Provide a noop thread_init for drivers that don't support it.
- Provide a noop can_limit_work for devices that don't support it.
- Provide a noop thread_prepare function for drivers that don't use
thread_prepare.
- Use blank_get_statline_before for GPU devices that don't support adl
monitoring.
- Provide a noop get_stats function for drivers that don't support it.
- Provide a blank get_statline for drivers that don't support it.
- Provide a blank get_statline_before function for drivers that don't have one.
- Fill drivers missing reinit_device with a noop version.
- add 'count' to cumstomsummarypage 'calc'
- hotplug use get_thread() where appropriate
- convert sleep(const) to nmsleep()
- remove empty #ifdef
- call a separate get_devices() with locking, as required
- usbutils - avoid free cgusb twice
- usbutils hotplug v0.1
- Report USB nodev as ZOMBIE on the screen
- Change file modes.
Version 2.10.5 - February 7, 2013
- Fix logic fail on partial writes with stratum send that was leading to corrupt
message submissions.
- Do not consider every call to stratum_resumed a pool recovery unless it was
actually idle.
- Do not enable the pool disable on reject feature unless explicitly enabled
with --disable-rejecting.
- Stratum disconnect shares - count total against stale
- Use sanity checking to prevent a possible overflow with invalid data being
given by the pool for difficulty as reported by luke-Jr.
- Check for calloc failure for completeness in gen_stratum_work.
- Cache the coinbase length to speed up stratum work generation.
- Cache the header length when generating stratum work to avoid calculating it
on every work generation, and to only need one alloc+sprintf, speeding up work
generation.
- Use heap ram for coinbase in gen_stratum_work, zeroing it before use.
- Provide a wrapper for aligning lengths of size_t to 4 byte boundaries.
- Fix memory leak on stratum share submission.
- Zero the best share string memory when zeroing stats.
Version 2.10.4 - December 29, 2012
- Change the pool stratum socket buffer to be dynamically allocated to
accomodate any size coinbase and keep receiving data in recv line for up to 60s
if no end of line has been received.
- Differentiate socket full from sock full.
- Allow stratum to startup without notify but check it is valid before creating
stratum work.
- Do not try to generate stratum work unless the notify command has succeeded.
- Reset total diff1 shares when zeroing stats as well to show correct work
utility.
Version 2.10.3 - December 26, 2012
- Do not give the share submission failure message on planned stratum
disconnects.
- Parse anything in the stratum socket if it's full without waiting. Empty the
socket even if a connection is not needed in case there are share returns.
- Provide a mechanism to zero all the statistics from the menu.
- Display the current pool diff in the status line.
- Display block diff in status line.
- Generalise the code for solving a block to enable block solve detection with
scrypt mining.
- Generate the output hash for scrypt as well and use the one function to set
share_diff.
- Use the flip80 function in regeneratehash and the correct sized hash array.
- Use one size for scratchbuf as a macro in scrypt.c
- Stage work outside of the stgd lock to prevent attempted recursive locking in
clone_available.
- share_diff needs to be performed on a BE version of the output hash to work,
leading to false best_share values as spotted by luke-Jr.
- Remove the unused sha224 functions.
- Use the flip functions in hashtest.
- Simplify the setting of the nonce data field in work on submitting nonces.
- Scrypt code does not enter the hashtest function.
- Go back to cloning available work under staged lock.
- Updated links to AMD APP SDK
- Updated link to ADL SDK
- scrypt_diff uses a uint64_t as well.
- Correct target for stratum support with scrypt mining.
- libztex: fixed a typo
- libztex: check returnvalue of libusb_claim_interface() and release the
interface in case of early exit
Version 2.10.2 - December 19, 2012
- Stop all work from the current pool if it's a stratum pool once it is
disconnected since it will be invalid upon reconnecting.
- Discard all staged work from stratum pools as well as the shares upon
disconnection since all the work becomes invalid.
- Use correct cbreak after 15 second delay when no pool is found alive.
- MMQ missing firmware -> ERR not DEBUG
- Allow stratum to work with scrypt.
- MMQ ensure delta clock can never exceed limits
- MMQ lowercase new string constants
- MMQ add api pgaset for clock
- API V1.23 - new pgaset command, to be used soon
- Protect the best_share/best_diff values under control lock.
- MMQ style police
- MMQ count work check timeout failures
- MMQ allow partial work replies and count them
- Check a stratum pool hasn't gone dead while being a backup pool and missed
having its idle flag cleared.
- MMQ overheat: remove clockdown (doesn't help) + ensure no lost shares
- API-README grammar
- API-README explain custom page extensions in miner.php
- miner.php add a sample group pool report
- miner.php allow where,group,having on cumstom pages
Version 2.10.1 - December 14, 2012
- Check for EWOULDBLOCK when supported in send and recv as well.
- Use the raw send() command instead of curl_easy_send since curl raw socket
usage introduces random bugs on windows.
- Use raw recv() command in place of curl_easy_recv since the curl
implementation introduces random bugs on windows builds when the recv fails.
- miner.php when displaying a single rig, add prev/next rig buttons if they
exist, next to refresh
- miner.php allow custom page joins for STATS
- API show if pool has GBT (so people know not to use that pool)
- miner.php - include windows easyphp link
- driver-ztex: use the correct size for the swap array
- API stats - display pool byte transfer stats
- Pool store data transfer stats
- README ModMiner dependency
- Benchmark incorrect work size
- ChangeLog refer to NEWS
- MMQ handle over temp differently and hash longer
- driver-ztex: search the complete noncerange based on the actual speed
- README - update ModMiner details
- API-README update
- api use a dynamic io buffer, truncated before it reaches the current ~64k
limit
Version 2.10.0 - December 10, 2012
- Include prctl header for thread renaming to work.
- Set tv_idle time if a pool is not active when input from the menu.
- usb display message when device is in use/another cgminer
- libztex: avoid the use of libusb_error_name()
- minor unlikely zero pointer test
- BeaverCreek doesn't like BFI INT patching.
- Only stratum pools that are idle need to be kicked via cnx_needed.
- mmq - abbreviate the temperature numbers
- Do not do any setup if opt_api_listen is disabled in api.c.
- usbutils.c uninitialised usbstat for non-primary mmqs
- Only set the lagging flag for select_pool() on failed getwork if we're not in
opt_fail_only mode.
- libztex: in case the selectFpga() failed set the selected fpga to unknown
- Modified windows-build.txt to update git instructions.
- libztex: use a function for the twice called firmware reset code
- libztex: removed an unused struct member (ztex->valid)
- driver-ztex: support for broken fpga on a multifpga board
- Set the pool lagging flag on startup to avoid it being shown initially, and
only unset it once the maximum number of staged work items has been reached.
- Avoid recursive locking of the stgd lock.
- Return value of keep_sockalive is no longer used.
- Remove dependency on mstcpip.h for windows build by making curl version >=
7.25.0 mandatory on windows builds, and use curl functions for keepalive
whenever possible instead.
- Make main() the getwork scheduler once everything is set up, so that all app
exits use the kill_work and quit paths.
- ztex: more style and whitespace fixes
- libztex: silenced another warning
- Set successful connect to true on auth stratum to allow summary on exit from
single stratum pool.
- Only consider work stale for stratum of different job_id if it's not a share.
- Increment version preempting changed version signifying different codebase to
2.9
- Hash_pop should signal further waiters on its own pthread conditional in case
there are multiple waiters.
- Check the job_id has not changed on stratum work when deciding if the work is
stale as might occur across disconnections.
- Perform pool_resus on getwork pool that generates work in getwork_thread.
- Set pool lagging message for getwork pool that falls to zero staged in getwork
thread.
- Stage extra work when the primary pool is a getwork pool without rolltime.
- Do not try to clean up twice if kill message is given.
- Only recalculate total_staged in getwork thread if required.
- Include the correct config header in libztex and include it before other
includes.
- Implement a completely new getwork scheduler. Stage all work from the one
thread, making it possible to serialise all requests minimising the number of
getworks requested or local work generated. Use a pthread conditional to wake up
the thread whenever work is removed to generate enough work to stay above the
watermark set by opt_queue. Remove all remnants of the old queueing mechanism,
deleting the now defunct queued count.
- libztex: fixed some warnings and removed some whitespaces
- libztex: silenced some warnings
- Remove all references to the now unused workio_cmd structure.
- Remove the old workio command queue thread, replacing it with a kill
conditional to exit the program.
- Remove getwork command from workio_cmd queues and do them directly from
queue_request.
- Begin tearing down the old workio command queues by removing submit commands
from there and submit them asynchronously via their own threads.
- Update windows build instructions.
- Set pool probed to true on successful authorisation with stratum to avoid it
being pinged later with pool_getswork.
- driver-ztex: libztex_setFreq() must be called before ztex_releaseFpga()
- driver-ztex: changed two pairs of malloc()/memset() to calloc()
- libztex: Read bitstream file in 2kb blocks with simpler and faster code
- Added the binary versions of ztex_ufm1_15d4.ihx and ztex_ufm1_15y1.ihx
- Trivial space removal.
- libztex: Add firmware download support for ZTEX 1.15d and 1.15x
- libztex: Factor out local version of libusb_get_string_descriptor_ascii()
- Shut up some boring old cpu warnings.
- Style changes.
- Allow pool active to be called on stratum or disabled pools in the watchpool
thread if the pool has not been probed.
- libztex: Make log messages say bitstream when refering to bitstreams
- libztex: Don't return error when a bitstream was already configured
- libztex: Read bitstream file in 64kb blocks with simpler and faster code
- libztex: Verify that the mining firmware is not a dummy firmware
- libztex: Match mining firmware ZTEX descriptor against the dummy firmware
- Combine shared padding into one char.
- libztex: Start download sequence only after reading in the new firmware
- libztex: Download mining firmware to all devices with dummy firmware
- lock (most of) the threaded statistics updates
- README stats don't add up
- usbutils.c remove compiler warning
- Make need connection return true if a pool is idle.
- API add Best Share to summary
- Check on creating new GBT work if the structures are up to date and update
them as required rather than regularly.
- Update windows build instructions.
- Enable backup stratum connections for getwork when the primary pool doesn't
have longpoll aka solo mining.
- Check for correct absence of opt_fail_only in cnx_needed.
- Remove unused variable.
- The specification for stratum has been elaborated to say that a changed diff
applies only to new work so do not retarget when submitting shares.
- Use a variable length string array in submit_upstream_work to cope with
massive GBT submissions.
- API lock access to some summary statistics (and copy them)
- Suspend stratum connections to backup pools when there is no requirement to
potentially grab work from them.
- Fix missing export for RenameThread.
- enumerate the mining threadnames
- MMQ avoid possible number overrun crashes
- mmq usb v0.4 + api usb stats
- setting the name of the threads for linux,freebsd,openbsd and osx code is
borrowed from bitcoins util.c, so it is already tested
- Don't show broken WU value with scrypt mining.
- Style police.
- Remove unused getwork times in getswork.
- Fix readme wordwrap.
Version 2.9.6 - December 2, 2012
- Make gen_stratum_work more robust by using a dynamically allocated array for
the header in case bogus data is sent by the pool to avoid overflowing a static
array.
- scrypt_diff now returns a uint64_t
- Support monitoring and reporting much higher diffs for scrypt mining,
truncating irrelevant zeroes from displayed hash.
- Pass ostate values around in scrypt to be able to extract full hashes if
needed later on.
- Since we will be using calloc_str to put a string into it, convert the
function to calloc_strcat which does it automatically.
- Revert "Handle crash exceptions by trying to restart cgminer unless the
--no-restart option is used."
- Count longpoll and GBT decodes as queued work since the count otherwise
remains static.
- Use the string helper functions to create gbt blocks of any length.
- Provide helper functions calloc_str and realloc_strcat to create and extend
arbitrary length arrays based on string length.
Version 2.9.5 - November 25, 2012
- fixes target calc for mips openwrt
- openwrt needs roundl
- Get rid of unused last_work in opencl thread data.
- Do away with the flaky free_work api in the driver code which would often lose
the work data in opencl and simply flush it before exiting the opencl scanhash.
- Use base_work for comparison just for cleanness in __copy_work
- Remove all static work structs, using the make and free functions.
- Add pool no. to stale share detected message.
- Add info about which pool share became stale while resubmitting.
-b Copy the work on opencl_free_work
- Add an extra slot in the max backlog for ztex to minimise dupes.
- Do not use or count the getworks submitted which are simply testing that pools
are still up. This was increasing share leakage and making stats not reflect
real work.
- Track all dynamically allocated memory within the work struct by copying work
structs in a common place, creating freshly allocated heap ram for all arrays
within the copied struct. Clear all work structs from the same place to ensure
memory does not leak from arrays within the struct. Convert the gbt coinbase and
stratum strings within the work struct to heap ram. This will allow arbitrary
lengths without an upper limit for the strings, preventing the overflows that
happen with GBT.
- libztex: Work around ZTEX USB firmware bug exposed by the FreeBSD libusb
- opencl: Use new dev_error function for REASON_DEV_NOSTART
Version 2.9.4 - November 18, 2012
- Provide rudimentary support for the balancing failover strategies with stratum
and GBT by switching pools silently on getwork requests.
- Convert remaining modminer and bfl uses of usleep to nmsleep.
- Convert libztex to nmsleep where possible.
- Convert unreliable usleep calls to nmsleep calls in ztex driver.
- Support workid for block submission on GBT pools that use it.
- Provide rudimentary support for literal ipv6 addresses when parsing stratum
URLs.
- Work around libcurl cflags not working on hacked up mingw installations on
windows.
- Only increase gpu engine speed by a larger step if the temperature is below
hysteresis instead of increasing it to max speed.
- Convert pool not responding and pool alive message on backup pools to verbose
level only since they mean a single failed getwork.
- Update work block on the longpoll work item before calling restart threads to
ensure all work but the longpoll work item gets discarded when we call
discard_stale from restart_threads.
- Do not attempt to remove the stratum share hash after unsuccessful submission
since it may already be removed by clear_stratum_shares.
- Check against a double for current pool diff.
- Support for fractional diffs and the classic just-below-1 share all FFs diff
target.
Version 2.9.3 - November 11, 2012
- Make header larger on gen stratum work to accomodate \0 at the end.
Version 2.9.2 - November 11, 2012
- Use stratum block change from backup pools as an alternative to longpoll for
pools that don't support LP.
- Check share target diff for best_share to be calculated when solo mining.
- Round some more static string arrays to 4 byte boundaries.
- There is no need for the static arrays to be larger than required, so long as
they're 4 byte aligned to appease ARM.
- Store the full stratum url information in rpc_url for correct configuration
file saving.
- Put in a hack to prevent dud work from sneaking into test_work_current being
seen as a new block.
- Reset the work->longpoll flag where it will affect stratum work items as well.
- Check for both coinbase/append and submit/coinbase support before using GBT
protocol.
- First pass through testing for GBT should not set probed to true since we are
about to probe again.
- Hash1 is only used by the deprecated cpu mining code and never changes so
remove it from the work struct and bypass needing to process the value for all
other mining.
- Get a work item once per minute for all getwork and GBT pools to test they're
still alive and to maintain a current GBT template.
- Get a fresh block template with GBT pools on switching to them.
Version 2.9.1 - November 6, 2012
- Reset work flags to prevent GBT shares from being submitted as stratum ones
after switching.
Version 2.9.0 - November 6, 2012
- Add endian swap defines for where missing.
- Only retarget stratum shares to new pool diff if diff has dropped.
- Remove resetting of probed variable when detecting GBT.
- Count lost stratum share submits and increase message priority to warning.
- Only retrieve a new block template for GBT pools that are the current pool.
- Show which pool untracked share messages have come from.
- Add management for dead GBT pools.
- Count lost shares with stratum as submit stale lost.
- Discard record of stratum shares sent and report lost shares on disconnection
since they will never be reported back.
- Swab, don't just swap the bytes in the GBT target.
- Change status window message for GBT connected pools versus LP.
- Generate a gbt work item from longpoll when required to set new block and
message appropriately.
- Use existing pool submit_old bool from gbt data.
- Retrieve a new block template if more than 30 seconds has elapsed since the
last one to keep the data current and test the pool is still alive.
- Update GBT longpollid every time we request a new longpoll.
- Manage appropriate response codes for share submission with GBT.
- Allow the longpoll thread to start with GBT and only set the longpollid once.
- Correct last few components of GBT block generation courtesy of Luke-jr.
- Use correct length for offsetting extra nonce and remaining data.
- Flip all 80 bytes in the flip function which was wrongly named flip256 for its
purpose.
- Calculate midstate for gbt work and remove now unused variable.
- Use a standard function for flipping bytes.
- Insert the extra nonce and remaining data in the correct position in the
coinbase.
- Remove txn size debugging and enlarge gbt block string to prevent overflow.
- Remove varint display debugging.
- Build varint correctly for share submission and sleep 5 seconds before
retrying submit.
- Make gbt_coinbase large enough for submissions, swap bytes correctly to make a
header from GBT and encode the number of transactions in share submission.
- Store the fixed size entries as static variables in GBT in binary form,
byteswapping as is required.
- 32 bit hex encoded variables should be in LE with GBT.
- Target and prevblockhash need to be reversed from GBT variables.
- Construct block for submission when using GBT.
- Use same string for debug as for submission and make string larger to cope
with future GBT messages.
- Skip trying to decipher LP url if we have GBT support.
- Store all the transaction hashes in pool->txn_hashes instead of separating
txn0 and correct generation of merkle root, fixing memory overwrites.
- Hook into various places to generate GBT work where appropriate.
- Create extra work fields when generating GBT work.
- Generate header from correct hashing generation of the merkle root for GBT.
- Generate the merkle root for gbt work generation.
- Create a store of the transactions with GBT in the minimum size form required
to generate work items with a varied coinbase.
- Create a function that generates a GBT coinbase from the existing pool
variables.
- Extract and store the various variables GBT uses when decoding gbt work.
- Check for invalid json result in work_decode.
- Decode work in separate functions for getwork vs gbt.
- Check for the coinbase/append mutable in GBT support to decide whether to use
it or not.
- Add a gbt mutex within the pool struct for protecting the gbt values.
- Convert work decode function to prepare for decoding block templates.
- Check for GBT support on first probing the pool and convert to using the GBT
request as the rpc request for that pool.
- Make the rpc request used with getwork a pool variable to allow it to be
converted to/from gbt requests.
- Changes to build prototypes to support building on FreeBSD 9.1-RC2 amd64
- Free old stratum_work data before replacing it
- There is no need for addrinfo any more.
- server and client sockaddr_in are no longer used in struct pool.
- Merge pull request #322 from luke-jr/bugfix_stratum_tmpwork
- Set sshare id and swork_id within the sshare mutex to avoid multiple share
submits with the same id.
- Initialize temporary stratum work
Version 2.8.7 - October 29, 2012
- Fail on select() failing in stratum thread without needing to attempt
recv_line.
- Add share to stratum database before sending it again in case we get a
response from the pool before it's added.
Version 2.8.6 - October 29, 2012
- Shorten the initiate stratum connect timeout to 30 seconds.
- Shorten the stratum timeout on read to 90 seconds to detect unresponsive pool.
- Display best share difficulty on exit.
- Make stratum socket fail more robust on windows by disabling the send buffer.
- Reuse the same curl handle forcing a new connection instead of risking
derefencing.
- Add information about submission failure to stratum send.
- Only add stratum share to database if we succeeded in submitting it, with a
debug output saying it succeeded.
- Use keepalive with stratum sockets to improve its ability to detect broken
connections.
- Show only the URL in the status bar to avoid long prefixes making for extra
long lines.
- Display compact status in menu and update README to reflect current menu
entries.
- Add a compact display mode that does not list per device statistics in the
status window.
- Add blank spaces after best share displayed.
- Round a few static string arrays up to 4 byte boundaries for ARM.
- Display best share diff for scrypt as well.
- Show the best diff share as "best share" and add info to the README.
- Display the best diff share submitted so far.
- Redundant check.
- The work struct pointer in struct pc_data in findnonce is never freed yet
there is no need to allocate it separately so make struct work a static part of
the struct pc_data. s
Version 2.8.5 - October 23, 2012
- Handle crash exceptions by trying to restart cgminer unless the --no-restart
option is used.
- Switch queued count when choosing a different pool from a failed stratum pool
in getwork thread.
- Put a mandatory 5s wait between reattempting a getwork on failure to avoid
hammering requests.
- The ATI stream / AMD APP SDK environment variables appear to only interfere
with win32 builds so bypass them.
- Make sure to check pool stratum curl exists under lock before attempting any
recv to not risk dereferencing upon attempting to reinitiate stratum.
- Avoid redefining macros and align to 4 byte boundaries.
- API - add Stratum information to pools
- update FPGA-README for MMQ
Version 2.8.4 - October 18, 2012
- Time for dynamic is in microseconds, not ms.
- x86_64 builds of mingw32 are not supported directly and should just configure
as generic mingw32 builds since they're NOT 64 bit.
- Cope with both ATI stream and AMD APP SDK roots being set when building.
- Use 3 significant digits when suffix string is used and values are >1000.
- MMQ new initialisation (that works) and clocking control
- Get rid of unused warning for !scrypt.
- Use select on stratum send to make sure the socket is writeable.
- Cope with dval being zero in suffix_string and display a single decimal place
when significant digits is not specified but the value is greater than 1000.
- Pad out the suffix string function with zeroes on the right.
- Failure to calloc in bin2hex is a fatal failure always so just check for that
failure within the function and abort, simplifying the rest of the code.
- Provide locking around the change of the stratum curl structures to avoid
possible races.
- Bump opencl kernel version numbers.
- Remove atomic ops from opencl kernels given rarity of more than once nonce on
the same wavefront and the potential increased ramspeed requirements to use the
atomics.