1. 29 Sep, 2008 8 commits
    • Elias Oltmanns's avatar
      libata: Implement disk shock protection support · 45fabbb7
      Elias Oltmanns authored
      On user request (through sysfs), the IDLE IMMEDIATE command with UNLOAD
      FEATURE as specified in ATA-7 is issued to the device and processing of
      the request queue is stopped thereafter until the specified timeout
      expires or user space asks to resume normal operation. This is supposed
      to prevent the heads of a hard drive from accidentally crashing onto the
      platter when a heavy shock is anticipated (like a falling laptop
      expected to hit the floor). In fact, the whole port stops processing
      commands until the timeout has expired in order to avoid any resets due
      to failed commands on another device.
      Signed-off-by: default avatarElias Oltmanns <eo@nebensachen.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      45fabbb7
    • Elias Oltmanns's avatar
      [libata] Introduce ata_id_has_unload() · ea6ce53c
      Elias Oltmanns authored
      Add a function to check an ATA device's id for head unload support as
      specified in ATA-7.
      Signed-off-by: default avatarElias Oltmanns <eo@nebensachen.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      ea6ce53c
    • Ben Dooks's avatar
      PATA: RPC now selects HAVE_PATA_PLATFORM for pata platform driver · 2ad69677
      Ben Dooks authored
      The RPC machine type now selects HAVE_PATA_PLATFORM so we can remove
      the special case in the PATA_PLATFORM configuration code.
      
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      2ad69677
    • Tejun Heo's avatar
      ata_piix: drop merged SCR access and use slave_link instead · be77e43a
      Tejun Heo authored
      Now that libata has slave_link, there's no need to keep ugly merged
      SCR access.  Drop it and use slave_link instead.  This results in
      simpler code and much better separate link handling for master and
      slave.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      be77e43a
    • Tejun Heo's avatar
      libata: implement slave_link · b1c72916
      Tejun Heo authored
      Explanation taken from the comment of ata_slave_link_init().
      
       In libata, a port contains links and a link contains devices.  There
       is single host link but if a PMP is attached to it, there can be
       multiple fan-out links.  On SATA, there's usually a single device
       connected to a link but PATA and SATA controllers emulating TF based
       interface can have two - master and slave.
      
       However, there are a few controllers which don't fit into this
       abstraction too well - SATA controllers which emulate TF interface
       with both master and slave devices but also have separate SCR
       register sets for each device.  These controllers need separate links
       for physical link handling (e.g. onlineness, link speed) but should
       be treated like a traditional M/S controller for everything else
       (e.g. command issue, softreset).
      
       slave_link is libata's way of handling this class of controllers
       without impacting core layer too much.  For anything other than
       physical link handling, the default host link is used for both master
       and slave.  For physical link handling, separate @ap->slave_link is
       used.  All dirty details are implemented inside libata core layer.
       From LLD's POV, the only difference is that prereset, hardreset and
       postreset are called once more for the slave link, so the reset
       sequence looks like the following.
      
       prereset(M) -> prereset(S) -> hardreset(M) -> hardreset(S) ->
       softreset(M) -> postreset(M) -> postreset(S)
      
       Note that softreset is called only for the master.  Softreset resets
       both M/S by definition, so SRST on master should handle both (the
       standard method will work just fine).
      
      As slave_link excludes PMP support and only code paths which deal with
      the attributes of physical link are affected, all the changes are
      localized to libata.h, libata-core.c and libata-eh.c.
      
       * ata_is_host_link() updated so that slave_link is considered as host
         link too.
      
       * iterator extended to iterate over the slave_link when using the
         underbarred version.
      
       * force param handling updated such that devno 16 is mapped to the
         slave link/device.
      
       * ata_link_on/offline() updated to return the combined result from
         master and slave link.  ata_phys_link_on/offline() are the direct
         versions.
      
       * EH autopsy and report are performed separately for master slave
         links.  Reset is udpated to implement the above described reset
         sequence.
      
      Except for reset update, most changes are minor, many of them just
      modifying dev->link to ata_dev_phys_link(dev) or using phys online
      test instead.
      
      After this update, LLDs can take full advantage of per-dev SCR
      registers by simply turning on slave link.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      b1c72916
    • Tejun Heo's avatar
      libata: misc updates to prepare for slave link · b5b3fa38
      Tejun Heo authored
      * Add ATA_EH_ALL_ACTIONS.
      
      * Make sata_link_{on|off}_line() return bool instead of int.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      b5b3fa38
    • Tejun Heo's avatar
      libata: reimplement link iterator · aadffb68
      Tejun Heo authored
      Implement __ata_port_next_link() and reimplement
      __ata_port_for_each_link() and ata_port_for_each_link() using it.
      This removes relatively large inlined code and makes iteration easier
      to extend.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      aadffb68
    • Tejun Heo's avatar
      libata: make SCR access ops per-link · 82ef04fb
      Tejun Heo authored
      Logically, SCR access ops should take @link; however, there was no
      compelling reason to convert all SCR access ops when adding @link
      abstraction as there's one-to-one mapping between a port and a non-PMP
      link.  However, that assumption won't hold anymore with the scheduled
      addition of slave link.
      
      Make SCR access ops per-link.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      82ef04fb
  2. 25 Sep, 2008 1 commit
  3. 24 Sep, 2008 22 commits
  4. 23 Sep, 2008 9 commits