1. 02 3月, 2011 12 次提交
    • S
      sata_dwc_460ex: add debugging options · 14080fa6
      Sergei Shtylyov 提交于
      The driver makes use of the two options (CONFIG_SATA_DWC_[V]DEBUG) to enable
      the debug output but they both are absent in drivers/ata/Kconfig...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      14080fa6
    • S
      sata_dwc_460ex: fix misuse of ata_get_cmd_descript() · 84b47e3b
      Sergei Shtylyov 提交于
      The driver erroneously uses ata_get_cmd_descript() not only for printing out
      the ATA commands but also the protocol and DMA direction enums. Add functions
      for properly printing those out...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      84b47e3b
    • S
      sata_dwc_460ex: fix return value of dma_dwc_xfer_setup() · d285e8bf
      Sergei Shtylyov 提交于
      The caller expects this function to return the DMA channel number on success,
      while it returns 0...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      d285e8bf
    • S
      sata_dwc_460ex: fix compilation errors/warnings · c211962d
      Sergei Shtylyov 提交于
      Fix the following compilation errors/warnings:
      
      drivers/ata/sata_dwc_460ex.c:43:1: warning: "DRV_NAME" redefined
      In file included from drivers/ata/sata_dwc_460ex.c:38:
      drivers/ata/libata.h:31:1: warning: this is the location of the previous
      definition
      drivers/ata/sata_dwc_460ex.c:44:1: warning: "DRV_VERSION" redefined
      drivers/ata/libata.h:32:1: warning: this is the location of the previous
      definition
      drivers/ata/sata_dwc_460ex.c: In function `sata_dwc_exec_command_by_tag':
      drivers/ata/sata_dwc_460ex.c:1356: warning: passing argument 1 of
      `ata_get_cmd_descript' makes integer from pointer without a cast
      drivers/ata/sata_dwc_460ex.c: In function `sata_dwc_qc_issue':
      drivers/ata/sata_dwc_460ex.c:1476: warning: `err' is used uninitialized in this
      function
      drivers/ata/sata_dwc_460ex.c:1465: note: `err' was declared here
      drivers/ata/sata_dwc_460ex.c: In function `sata_dwc_qc_issue':
      drivers/ata/sata_dwc_460ex.c:1493: warning: passing argument 1 of
      `ata_get_cmd_descript' makes integer from pointer without a cast
      drivers/ata/sata_dwc_460ex.c: In function `sata_dwc_qc_prep':
      drivers/ata/sata_dwc_460ex.c:1537: error: `tag' undeclared (first use in this
      function)
      drivers/ata/sata_dwc_460ex.c:1537: error: (Each undeclared identifier is
      reported only once
      drivers/ata/sata_dwc_460ex.c:1537: error: for each function it appears in.)
      
      NB: error only happens if DEBUG_NCQ macro is defined...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      c211962d
    • S
      sata_dwc_460ex: use ATA_PIO4 · b83a4c39
      Sergei Shtylyov 提交于
      Somehow the driver was committed with a bare number for the PIO mask, instead
      of ATA_PIO4...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      b83a4c39
    • J
      4fca377f
    • J
      libsas: convert to libata new error handler · 00dd4998
      James Bottomley 提交于
      The conversion is quite complex given that the libata new error
      handler has to be hooked into the current libsas timeout and error
      handling.  The way this is done is to process all the failed commands
      via libsas first, but if they have no underlying sas task (and they're
      on a sata device) assume they are destined for the libata error
      handler and send them accordingly.
      
      Finally, activate the port recovery of the libata error handler for
      each port known to the host.  This is somewhat suboptimal, since that
      port may not need recovering, but given the current architecture of
      the libata error handler, it's the only way; and the spurious
      activation is harmless.
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      00dd4998
    • J
      libata: separate error handler into usable components · 0e0b494c
      James Bottomley 提交于
      Right at the moment, the libata error handler is incredibly
      monolithic.  This makes it impossible to use from composite drivers
      like libsas and ipr which have to handle error themselves in the first
      instance.
      
      The essence of the change is to split the monolithic error handler
      into two components: one which handles a queue of ata commands for
      processing and the other which handles the back end of readying a
      port.  This allows the upper error handler fine grained control in
      calling libsas functions (and making sure they only get called for ATA
      commands whose lower errors have been fixed up).
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      0e0b494c
    • J
      libata: fix eh locking · c34aeebc
      James Bottomley 提交于
      The SCSI host eh_cmd_q should be protected by the host lock (not the
      port lock).  This probably doesn't matter that much at the moment,
      since we try to serialise the add and eh pieces, but it might matter
      in future for more convenient error handling.  Plus this switches
      libata to the standard eh pattern where you lock, remove from the cmd
      queue to a local list and unlock and then operate on the local list.
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      c34aeebc
    • J
      libata: fix locking for sas paths · a29b5dad
      James Bottomley 提交于
      For historical reasons, libsas uses the scsi host lock as the ata port
      lock, and libata always uses the ata host.  For the old eh, this was
      largely irrelevant since the two locks were never mixed inside the
      code.  However, the new eh has a case where it nests acquisition of
      the host lock inside the port lock (this does look rather deadlock
      prone).  Obviously this would be an instant deadlock if the port lock
      were the host lock, so switch the libsas paths to use the ata host
      lock as well.
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      a29b5dad
    • J
      libata: plumb sas port scan into standard libata paths · 238c9cf9
      James Bottomley 提交于
      The function ata_sas_port_init() has always really done its own thing.
      However, as a precursor to moving to the libata new eh, it has to be
      properly using the standard libata scan paths.  This means separating
      the current libata scan paths into pieces which can be shared with
      libsas and pieces which cant (really just the async call and the host
      scan).
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      238c9cf9
    • T
      libata: fix hotplug for drivers which don't implement LPM · eb0e85e3
      Tejun Heo 提交于
      ata_eh_analyze_serror() suppresses hotplug notifications if LPM is
      being used because LPM generates spurious hotplug events.  It compared
      whether link->lpm_policy was different from ATA_LPM_MAX_POWER to
      determine whether LPM is enabled; however, this is incorrect as for
      drivers which don't implement LPM, lpm_policy is always
      ATA_LPM_UNKNOWN.  This disabled hotplug detection for all drivers
      which don't implement LPM.
      
      Fix it by comparing whether lpm_policy is greater than
      ATA_LPM_MAX_POWER.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: stable@kernel.org
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      eb0e85e3
  2. 01 3月, 2011 10 次提交
  3. 28 2月, 2011 6 次提交
  4. 27 2月, 2011 2 次提交
  5. 26 2月, 2011 10 次提交