1. 04 Nov, 2008 3 commits
    • Tejun Heo's avatar
      sata_nv: fix generic, nf2/3 detection regression · 3c324283
      Tejun Heo authored
      All three flavors of sata_nv's are different in how their hardreset
      behaves.
      
      * generic: Hardreset is not reliable.  Link often doesn't come online
        after hardreset.
      
      * nf2/3: A little bit better - link comes online with longer debounce
        timing.  However, nf2/3 can't reliable wait for the first D2H
        Register FIS, so it can't wait for device readiness or classify the
        device after hardreset.  Follow-up SRST required.
      
      * ck804: Hardreset finally works.
      
      The core layer change to prefer hardreset and follow up changes
      exposed the above issues and caused various detection regressions for
      all three flavors.  This patch, hopefully, fixes all the known issues
      and should make sata_nv error handling more reliable.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      3c324283
    • Marcin Slusarz's avatar
      sata_via: restore vt*_prepare_host error handling · 554d491d
      Marcin Slusarz authored
      commit b9d5b89b (sata_via: fix support
      for 5287) accidently (?) removed vt*_prepare_host error handling - restore it
      
      catched by gcc:
      drivers/ata/sata_via.c: In function 'svia_init_one':
      drivers/ata/sata_via.c:567: warning: 'host' may be used uninitialized in this function
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Joseph Chan <JosephChan@via.com.tw>
      Cc: Jeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      554d491d
    • Mikael Pettersson's avatar
      sata_promise: add ATA engine reset to reset ops · cadef677
      Mikael Pettersson authored
      Promise ATA engines need to be reset when errors occur.
      That's currently done for errors detected by sata_promise itself,
      but it's not done for errors like timeouts detected outside of
      the low-level driver.
      
      The effect of this omission is that a timeout tends to result
      in a sequence of failed COMRESETs after which libata EH gives
      up and disables the port. At that point the port's ATA engine
      hangs and even reloading the driver will not resume it.
      
      To fix this, make sata_promise override ->hardreset on SATA
      ports with code which calls pdc_reset_port() on the port in
      question before calling libata's hardreset. PATA ports don't
      use ->hardreset, so for those we override ->softreset instead.
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      cadef677
  2. 03 Nov, 2008 21 commits
  3. 02 Nov, 2008 16 commits