Commit fffdea0949823adaf93face116e9268d40a7d4d4

Con Kolivas 2013-08-21T21:15:27

Update NEWS.

diff --git a/NEWS b/NEWS
index 0e93140..ae1a402 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,103 @@
+Version 3.4.0 - 21st August 2013
+
+- Use stack data for HW error% in avalon stats.
+- Add avalon HW error% to stats and only show BTB variables if avalon is a BTB.
+- Check for cnx_needed on each loop through wait_lp_current.
+- Return positive for cnx_needed when no_work is true.
+- Stratum is used more often so test for it first.
+- Reorder support names alphabetically.
+- Only display the no pool work message once if there are multiple waiters in
+hash_pop
+- Provide a message and set a bool when no work is available from any pools and
+when it resumes again.
+- We don't want to continue into the hash_pop function if the getq is frozen.
+- Only report threads in and out in queued work devices across a get work since
+the rest happens asynchronously and the get work is what the device might be
+waiting on.
+- Thread reportin and out can be static non inline.
+- usbutils cps sleep_estimate is not an underestimate
+- usbutils add cps stats estimates
+- Provide cgtimer_sub helper functions.
+- Provide cgtimer_to_ms helper functions.
+- Rename cgsleep_prepare_r as cgtimer_time to get time in cgtimer_t format and
+call cgsleep_prepare_r as a macro for cgtimer_time
+- Use the reentrant cgsleep functions for usecps in usbutils.
+- TimeBeginPeriod and TimeEndPeriod do not add significant overhead when run the
+entire time for cgminer so avoid trying to maintain balanced numbers of them for
+specific time calls to simplify code.
+- Replace all references to the old n*sleep functions with the equivalent
+cgsleep_*s replacements.
+- timeGetTime uses huge resources on windows so revert to using timevals for its
+implementation of cgtimer_t
+- Quotient/remainder error in ms division.
+- Only grab a queued work item if we successfully grab the lock to submit work
+in bflsc_send_work
+- BTB get version from Firmware
+- Carve out the unused portions of sha2 implementation.
+- Import Aaron D. Gifford's fast sha256 implementation.
+- Increase the que_low watermarks on BFLSC for they are too low to keep the
+device busy on scanwork loops.
+- Provide cgtimer_to_timeval helper functions.
+- Provide a timeval_to_cgtime helper function to reuse values.
+- Check for thr->work_restart in restart_wait.
+- We should be using que_low to decrease scan sleep time in bflsc.
+- Prepare sleep time on bflsc if no dev needs work yet to avoid busy waiting.
+- Simplify cgsleep code for windows by using a typedef for cgtimer_t that
+resolves to clock resolution, using that internally.
+- On windows use the higher accuracy timegettime function to really get 1ms
+clock and timer accuracy.
+- Use the cgsleep reentrant function to sleep for bflsc between read results to
+account for time taken to perform reads.
+- Use 100ms delay between checking for results on all bflsc devices as the
+buffering of results mean checking more frequently just wastes CPU and causes
+more lock contention for only marginally better latencies.
+- Fix missed endtimeperiod in overrun timer on windows.
+- Make cgsleep_us_r take an int64_t for us.
+- Make the cgsleep functions build on windows.
+- Use the cgsleep reentrant function in avalon_send_task.
+- Use the reentrant cgsleep functions within the avalon_send_tasks function.
+- Set high resolution timing on windows within the cgsleep functions.
+- Use the reentrant cgsleep function to time sleeps on reading from avalon.
+- Provide reentrant versions of cgsleep functions to allow start time to be set
+separately from the beginning of the actual sleep, allowing scheduling delays to
+be counted in the sleep.
+- Make the nmsleep and nusleep functions use the new cgsleep functions
+internally till functions are migrated to the new cgsleep API.
+- Add a ms_to_timespec helper function, and create a cgsleep_ms function that
+uses absolute timers with clock_nanosleep to avoid overruns.
+- Add rt lib linkage to enable use of clock_nanosleep functions with older
+glibc.
+- Add necessary time header include to avalon driver.
+- Do a sleep of the full duration it would take to do all the work using
+clock_nanosleep in avalon_send_tasks to avoid sleep overruns before polling to
+see if it's ready.
+- Add a timeraddspec helper function.
+- Provide a us_to_timespec helper function.
+- Use the us_to_timeval helper function in the avalon driver.
+- Provide a us_to_timeval helper function.
+- Use timeval_to_spec helper in avalon driver.
+- Add helper functions to convert timespec to timeval and vice versa.
+- simplifying buffer full check
+- forking bitburner write thread function
+- making sure original Avalon is unaffected by BitBurner changes
+- changes to queueing strategy for BitBurner boards
+- Do not poll in avalon_get_results without sleeping if we have finished parsing
+a full result.
+- Add c to ambient temperature display for avalon driver.
+- BTB allow up to 1400mV as per firmware limits
+- avalon for timeout allow d='calculate it' and fix uninitialised
+- Use cloned work when finding avalon results since another thread can discard
+the work item while it's in use.
+- Provide a variant of find_work_bymidstate that returns a clone of the found
+work.
+
+
 Version 3.3.4 - 14th August 2013
 
 - API/miner.php add some % fields
 - Nonce2 stratum submission is not working with nonce2 lengths >4, revert the 
 buggy __bin2hex function and use bin2hex.
-- The write thread in avalon is only ever actually woken up by timeout so remove 
+- The write thread in avalon is only ever actually woken up by timeout so remove
 the write semaphore and use a simple sleep poll.
 - Fix warning.
 - Interrupting reads on the avalon to start writes loses data so remove the 
@@ -48,7 +142,7 @@ before downgrading the lock.
 working at all via config files.
 -  Cache the hex2bin of pool nonce1 in stratum, avoiding hex2bin on each work 
 generation.
--  Cache the binary generation of coinbase1 and 2 on stratum, avoiding a hex2bin 
+-  Cache the binary generation of coinbase1 and 2 on stratum, avoiding a hex2bin
 of coinbase1 and 2 on each work generation.
 -  cgsem - increase information on failure
 -  avalon init write_sem before use
@@ -59,7 +153,7 @@ of coinbase1 and 2 on each work generation.
 -  Fix uninit variable warnings.
 -  usbutils - force check every combination
 -  Fix warning.
-- Recreate curses windows on windows when a device is hotplugged to allow window 
+- Recreate curses windows on windows when a device is hotplugged to allow window
 resizing without crashing.
 - Update copyright notice.
 - Limit intensity range according to whether scrypt is in use or not.
@@ -100,11 +194,11 @@ waited to avoid a 60 second wait dropping to 1 second due to a blocked socket.
 - size check get_datestamp/get_timestamp and remove unused cgpu->init
 - make all statline overflow safe
 - WU only needs +2 width
-- Check for a timeout in avalon_scanhash and post to the write sem if we receive 
+- Check for a timeout in avalon_scanhash and post to the write sem if we receive
 one.
-- Decay result count in avalon more slowly to not falsely detect idle periods as 
+- Decay result count in avalon more slowly to not falsely detect idle periods as
 low result return rates.
-- Count the number of miners idled in avalon to account more accurately for when 
+- Count the number of miners idled in avalon to account more accurately for when
 its result return rate is too low.
 - Fix potential dereference when starting avalon with all new work.
 - Convert the decay_time function into one that truly creates an exponentially 
@@ -113,18 +207,18 @@ decaying average over opt_log_interval.
 settings if the fanspeed has reached maximum.
 - Reinstate more aggressive <2% HW error target for avalon-auto
 - Set avalon fan min and fan max to PWM values instead of percentage.
-- Provide an --avalon-freq command line to give a valid range of frequencies for 
+- Provide an --avalon-freq command line to give a valid range of frequencies for
 avalon in auto mode.
 - Set the avalon idle frequency to lowest if avalon auto is enabled and we have 
 an overheat condition.
 - Decrease avalon frequency in auto mode if we are unable to maintain the 
 temperature in the optimal range.
 - Don't count invalid nonces as hashrate for bflsc.
-- Use a more conservative upper limit of 1% for hardware errors with avalon auto 
+- Use a more conservative upper limit of 1% for hardware errors with avalon auto
 frequency.
-- Allow the avalon fanspeed range to be passed as parameter on the command line, 
+- Allow the avalon fanspeed range to be passed as parameter on the command line,
 default to 20-100%
-- Just display A: and R: for difficulty accepted and rejected to preserve screen 
+- Just display A: and R: for difficulty accepted and rejected to preserve screen
 real estate and decrease decimal places for WU.
 - correct device DR: and remove global U:
 - Update all screen A/R to instead use DA/DR and device U to WU