1. 14 Jul, 2008 11 commits
    • Matthew Wilcox's avatar
      AHCI: Remove an unnecessary flush from ahci_qc_issue · 2640d7c0
      Matthew Wilcox authored
      In an I/O heavy workload (IOZone), ahci_qc_issue is the second-highest
      consumer of CPU cycles.  Removing the flush gets us approximately 10%
      bandwidth improvement.  I believe this to be because the CPU can start
      queueing the next request instead of waiting for the readl() to flush the
      writes to the device.  The flush isn't necessary because we're using a
      'queue' metaphor; we don't guarantee the command has got to the device,
      nor do we need to guarantee the command has got to the controller.
      Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      2640d7c0
    • Zhang Rui's avatar
      AHCI: speed up resume · 24920c8a
      Zhang Rui authored
      During resume, sleep 1 second to wait for the HBA reset
      to finish is a waste of time.
      
      According to the AHCI 1.2 spec,
      We should poll the HOST_CTL register,
      and return error if the host reset is not
      finished within 1 second.
      
      Test results show that the HBA reset can be done quickly(in usecs).
      And this patch may save nearly 1 second during resume.
      Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      24920c8a
    • Matthew Wilcox's avatar
      [libata] Add support for VPD page b1 · 1e9dbc92
      Matthew Wilcox authored
      SCSI VPD page b1 reports the nominal rotation speed and physical size
      of the device.  Devices that conform to ATA-8 can return this information
      in words 217 and 168 of the identify data.
      Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      1e9dbc92
    • Harvey Harrison's avatar
      ata: endianness annotations in pata drivers · 6ad67403
      Harvey Harrison authored
      drivers/ata/pata_qdi.c:142:9: warning: incorrect type in assignment (different base types)
      drivers/ata/pata_qdi.c:142:9:    expected unsigned int [unsigned] [usertype] pad
      drivers/ata/pata_qdi.c:142:9:    got restricted __le32 [usertype] <noident>
      drivers/ata/pata_qdi.c:146:15: warning: cast to restricted __le32
      
      drivers/ata/pata_winbond.c:110:9: warning: incorrect type in assignment (different base types)
      drivers/ata/pata_winbond.c:110:9:    expected unsigned int [unsigned] [usertype] pad
      drivers/ata/pata_winbond.c:110:9:    got restricted __le32 [usertype] <noident>
      drivers/ata/pata_winbond.c:114:15: warning: cast to restricted __le32
      
      drivers/ata/pata_legacy.c:310:9: warning: incorrect type in assignment (different base types)
      drivers/ata/pata_legacy.c:310:9:    expected unsigned int [unsigned] [usertype] pad
      drivers/ata/pata_legacy.c:310:9:    got restricted __le32 [usertype] <noident>
      drivers/ata/pata_legacy.c:314:15: warning: cast to restricted __le32
      drivers/ata/pata_legacy.c:752:11: warning: cast to restricted __le32
      drivers/ata/pata_legacy.c:756:9: warning: incorrect type in assignment (different base types)
      drivers/ata/pata_legacy.c:756:9:    expected unsigned int [unsigned] [addressable] [assigned] [usertype] pad
      drivers/ata/pata_legacy.c:756:9:    got restricted __le32 [usertype] <noident>
      Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      6ad67403
    • Tejun Heo's avatar
      libata-eh: update atapi_eh_request_sense() to take @dev instead of @qc · 3eabddb8
      Tejun Heo authored
      Update atapi_eh_request_sense() to take @dev, @sense_buf and
      @dfl_sense_key instead of taking @qc and extracting information from
      it.  This change is to make the function more generic and allow it to
      be called from other places.
      
      While at it, make cdb initialization use initializer.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      3eabddb8
    • Pavel Machek's avatar
    • Kristen Carlson Accardi's avatar
      libata/ahci: enclosure management support · 18f7ba4c
      Kristen Carlson Accardi authored
      Add Enclosure Management support to libata and ahci.
      Signed-off-by: default avatarKristen Carlson Accardi <kristen.c.accardi@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      18f7ba4c
    • Tejun Heo's avatar
      libata: improve EH internal command timeout handling · 87fbc5a0
      Tejun Heo authored
      ATA_TMOUT_INTERNAL which was 30secs were used for all internal
      commands which is way too long when something goes wrong.  This patch
      implements command type based stepped timeouts.  Different command
      types can use different timeouts and each command type can use
      different timeout values after timeouts.
      
      ie. the initial timeout is set to a value which should cover most of
      the cases but not too long so that run away cases don't delay things
      too much.  After the first try times out, the second try can use
      longer timeout and if that one times out too, it can go for full 30sec
      timeout.
      
      IDENTIFYs use 5s - 10s - 30s timeout and all other commands use 5s -
      10s timeouts.
      
      This patch significantly cuts down the needed time to handle failure
      cases while still allowing libata to work with nut job devices through
      retries.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      87fbc5a0
    • Tejun Heo's avatar
      libata: use ULONG_MAX to terminate reset timeout table · d8af0eb6
      Tejun Heo authored
      This doesn't introduce any functional changes.  This is to make reset
      timeout table consistent with to-be-added command timeout tables.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      d8af0eb6
    • Tejun Heo's avatar
      libata: improve EH retry delay handling · 0a2c0f56
      Tejun Heo authored
      EH retries were delayed by 5 seconds to ensure that resets don't occur
      back-to-back.  However, this 5 second delay is superflous or excessive
      in many cases.  For example, after IDENTIFY times out, there's no
      reason to wait five more seconds before retrying.
      
      This patch adds ehc->last_reset timestamp and record the timestamp for
      the last reset trial or success and uses it to space resets by
      ATA_EH_RESET_COOL_DOWN which is 5 secs and removes unconditional 5 sec
      sleeps.
      
      As this change makes inter-try waits often shorter and they're
      redundant in nature, this patch also removes the "retrying..."
      messages.
      
      While at it, convert explicit rounding up division to DIV_ROUND_UP().
      
      This change speeds up EH in many cases w/o sacrificing robustness.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      0a2c0f56
    • Tejun Heo's avatar
      libata: consistently use msecs for time durations · 341c2c95
      Tejun Heo authored
      libata has been using mix of jiffies and msecs for time druations.
      This is getting confusing.  As writing sub HZ values in jiffies is
      PITA and msecs_to_jiffies() can't be used as initializer, unify unit
      for all time durations to msecs.  So, durations are in msecs and
      deadlines are in jiffies.  ata_deadline() is added to compute deadline
      from a start time and duration in msecs.
      
      While at it, drop now superflous _msec suffix from arguments and
      rename @timeout to @deadline if it represents a fixed point in time
      rather than duration.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      341c2c95
  2. 13 Jul, 2008 6 commits
  3. 12 Jul, 2008 17 commits
  4. 11 Jul, 2008 6 commits