• Hans de Goede's avatar
    [PATCH] hwmon: abituguru timeout fixes · faf9b616
    Hans de Goede authored
    This patch contains 2 sets of fixes for the abituguru:
     1) Much improved timeout handling, drasticly reducing the amount of
        timeout errors on some motherboards
     2) Fix the exit paths in the bank1 sensor type detect code to always
        restore the original settings even on an error. Without this our
        special test settings could remain seriously confusing the system
        BIOS's setup menu.
    
    Both are very much related and are must haves, to avoid messing up the
    uguru CMOS settings.
    
    Detailed changes:
    - Much improved timeout / wait for status handling. Many thanks to Sunil
      Kumar, for all his testing, ideas and patches! The code now first busy
      waits, polling the uguru for the expected status as this usually
      succeeds pretty quickly (within 90 reads). To avoid unnecessary CPU burn
      in timeout conditions, the amount of busy waiting has been halved from
      previous versions (120 tries instead of 250). This is not a problem,
      because this version goes to sleep after 120 attemps for 1 jiffy and
      then tries again, it does this sleep and try again 5 times before
      finally giving up. This (almost?) completly removes the timeout errors
      some people have seen regulary. Apparently some older uguru versions
      sometimes are distracted for a (relatively) long time. This solves this.
    - These timeout errors not only occur in the sending address part of
      reading the uguru but also in the wait for read state, so errors in
      this state are now handled as retryable just like send address state
      errors and are only logged and reported to userspace if 3 executive
      tries fail.
    - Fix a very nasty bug in the bank1 sensor type detection code, where it
      would not restore the original settings in any of the error paths!
    - Since not successfully restoring the original settings can seriously
      confuse the system BIOS (hang when entering the relevant setup menu),
      we now try restoring them 3 times before giving up.
    Signed-off-by: default avatarHans de Goede <j.w.r.degoede@hhs.nl>
    Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    faf9b616
abituguru.c 50.3 KB