1. 31 8月, 2007 2 次提交
  2. 24 8月, 2007 1 次提交
  3. 23 8月, 2007 5 次提交
    • T
      libata: don't check n_sectors during revalidation if zero · b54eebd6
      Tejun Heo 提交于
      If the initial configuration fails early, n_sectors is left at zero.
      Checking against it during revalidation makes retried configuration
      fail due to n_sectors mismatch.  Ignore zero n_sectors during
      revalidation.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      b54eebd6
    • A
      pata_via: Add Arima W730-K8 and other rebadgings · 9edbdbea
      Alan Cox 提交于
      More cable funnies
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Tested-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      9edbdbea
    • A
      pata_sis: Add the FSC Amilo and friends · 4f2d47cf
      Alan Cox 提交于
      More short cables
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      4f2d47cf
    • M
      pata_pdc2027x: PLL detection fixes · 78c4af0b
      Mikael Pettersson 提交于
      Previously I reported that the pata_pdc2027x PLL detection changes
      in kernel 2.6.22 broke the driver on my PowerMac:
      
      >pata_pdc2027x: Invalid PLL input clock 1691742kHz, give up!
      
      This is followed by a number of errors and speed reduction
      steps on the affected ports.
      
      There are two bugs in pata_pdc2027x's PLL detection code:
      
      1. The PLL counter's start value is read before the chip is
         put in "test mode". Outside of test mode the counter is
         halted, and on the PowerMac the counter is zero because
         the chip hasn't been initialised by its BIOS.
      
         The fix is to move the read of the start value to after
         test mode is started, but before the mdelay() in test mode.
         This also improves the precision of the PLL detection.
      
      2. The code to compute the number of PLL decrements during the
         mdelay() in test mode fails to consider that the PLL counter
         only is 30 bits wide. If there is a wraparound, it will compute
         an incorrect and much too large value. On the PowerMac, the
         start count is zero, the end count is a large 30-bit value, so
         wraparound occurs and an out of bounds PLL clock is detected.
      
         The fix is to mask the (start - end) computation to 30 bits.
      
      While debugging this I also noticed that pdc_read_counter()
      reads the two halves of the 30-bit PLL counter as 16-bit values,
      and then combines them as if the halves only are 15 bits wide.
      To avoid confusion, the halves should be read as 15-bit values.
      
      This patch implements all three changes. It fixes the PLL detection
      failure on my PowerMac, and doesn't cause any regressions on an x86
      with an identical card.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      78c4af0b
    • T
      libata: fix n_sectors failure handling during revalidation · 8270bec4
      Tejun Heo 提交于
      If revalidation fails because device has different n_sectors after
      configuration the original n_sectors should be restored before failing
      revalidation.  Without this fix, n_sectors difference will incorrectly
      and silently pass revalidation when revalidation is retried.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Acked-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      8270bec4
  4. 15 8月, 2007 8 次提交
  5. 06 8月, 2007 1 次提交
  6. 01 8月, 2007 7 次提交
  7. 25 7月, 2007 3 次提交
  8. 24 7月, 2007 1 次提交
  9. 21 7月, 2007 1 次提交
  10. 20 7月, 2007 11 次提交
    • T
      libata: implement EH fast drain · 5ddf24c5
      Tejun Heo 提交于
      In most cases, when EH is scheduled, all in-flight commands are
      aborted causing EH to kick in immediately.  However, in some cases
      (especially with PMP), it's unclear which commands are affected by the
      error condition and although aborting all in-flight commands work, it
      isn't optimal and may cause unnecessary disruption.  On the other
      hand, waiting for in-flight commands to drain themselves can take up
      to 30seconds.
      
      This patch implements EH fast drain to handle such situations.  It
      gives in-flight commands some time to finish up but doesn't wait for
      too long.  After EH is scheduled, fast drain timer is started and if
      no other completion occurs in ATA_EH_FASTDRAIN_INTERVAL all in-flight
      commands are aborted.  If any completion occurred in the interval, the
      port is given another interval to finish up itself.
      
      Currently ATA_EH_FASTDRAIN_INTERVAL is 3 secs which should be enough
      for finishing up most commands.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5ddf24c5
    • T
      libata: schedule probing after SError access failure during autopsy · 4e57c517
      Tejun Heo 提交于
      If SError isn't accessible, EH can't tell whether hotplug has happened
      or not.  Report SError read failure with AC_ERR_OTHER and schedule
      probing with hardreset.  This will be mainly useful for PMPs.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      4e57c517
    • T
      libata: clear HOTPLUG flag after a reset · fccb6ea5
      Tejun Heo 提交于
      ATA_EHI_HOTPLUGGED is a hint for reset functions indicating the the
      port might have gone through hotplug/unplug just before entering EH.
      Reset functions modify their behaviors a bit to handle the situation
      better - e.g. using longer debouncing delay.
      
      Currently, once HOTPLUG is set, it isn't cleared till the end of EH.
      This is unnecessary and makes EH take longer.  Clear the HOTPLUGGED
      flag after a reset try (successful or not).
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      fccb6ea5
    • T
      libata: improve SCSI scan failure handling · 1ae46317
      Tejun Heo 提交于
      SCSI scan may fail due to memory allocation failure even if EH is not
      in progress.  Due to use of GFP_ATOMIC in SCSI scan path, allocation
      failure isn't too rare especially while probing multiple devices at
      once which is the case when a bunch of devices are connected to PMP.
      
      This patch moves SCSI scan failure detetion logic from
      ata_scsi_hotplug() to ata_scsi_scan_host() and implement synchronous
      scan behavior.  The synchronous path sleeps briefly and repeats SCSI
      scan if some devices aren't attached properly.  It contains robust
      retry loop to minimize the chance of device misdetection during boot
      and falls back to async retry if everything fails.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      1ae46317
    • T
      libata: quickly trigger SATA SPD down after debouncing failed · f1545154
      Tejun Heo 提交于
      Debouncing failure is a good indicator of basic link problem.  Use
      -EPIPE to indicate debouncing failure and make ata_eh_reset() invoke
      sata_down_spd_limit() if the error occurs during reset.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      f1545154
    • T
      libata: improve SATA PHY speed down logic · 008a7896
      Tejun Heo 提交于
      sata_down_spd_limit() first reads the current SPD from SStatus and
      limit the speed to the lower one of one below the current limit or one
      below the current SPD in SStatus.  SPD may not be accessible or valid
      when SPD down is requested making sata_down_spd_limit() fail when it's
      most needed.
      
      This patch makes the current SPD cached after each successful reset
      and forces GEN I speed (1.5Gbps) if neither of SStatus or the cached
      value is valid, so sata_down_spd_limit() is now guaranteed to lower
      the speed limit if lower speed is available.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      008a7896
    • S
      The SATA controller device ID is different according to · badc2341
      su henry 提交于
      the onchip SATA type set in the system BIOS:
      Device                              Device ID
      SATA in IDE mode             0x4390
      SATA in AHCI mode           0x4391
      SATA in non-raid5 driver     0x4392
      SATA in raid5 driver           0x4393
      
      Although the device ID is different, they use the same AHCI driver
      .The attached file is the patch for adding these device
      IDs for ATI SB700.
      
      Signed-off-by: henry.su.ati@gmail.com
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      badc2341
    • T
      ahci: implement SCR_NOTIFICATION r/w · 203ef6c4
      Tejun Heo 提交于
      Make ahci_scr_read/write() handle SCR_NOTIFICATION if the controller
      supports it.  Also, print "sntf" in the cap line if supported.
      
      While at it, convert eight space into a tab in ahci_print_info().
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      203ef6c4
    • T
      ahci: make NO_NCQ handling more consistent · 274c1fde
      Tejun Heo 提交于
      ahci_save_initial_config() is responsible for reading, screening the
      host CAP register and storing the modified result into hpriv->cap for
      the rest of the driver.  Move ATA_FLAG_NO_NCQ handling into
      ahci_save_initial_config().  It's more consistent this way and the
      rest of the driver can always refer to hpriv->cap to determine
      configured capability.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      274c1fde
    • T
      libata: make ->scr_read/write callbacks return error code · da3dbb17
      Tejun Heo 提交于
      Convert ->scr_read/write callbacks to return error code to better
      indicate failure.  This will help handling of SCR_NOTIFICATION.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      da3dbb17
    • T
      libata: implement AC_ERR_NCQ · 5335b729
      Tejun Heo 提交于
      When an NCQ command fails, all commands in flight are aborted and the
      offending one is reported using log page 10h.  Depending on controller
      characteristics and LLD implementation, all commands may appear as
      having a device error due to shared TF status making it hard to
      determine what's actually going on.
      
      This patch adds AC_ERR_NCQ, marks the command reported by log page 10h
      with it and print extra "<F>" after the error report for the command
      to help distinguishing the offending command.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5335b729