1. 25 1月, 2007 2 次提交
  2. 24 1月, 2007 4 次提交
    • B
      libata: Fixup n_elem initialization · 7a801184
      Brian King 提交于
      Fixup the inialization of qc->n_elem. It currently gets
      initialized to 1 for commands that do not transfer any data.
      Fix this by initializing n_elem to 0 and only setting to 1
      in ata_scsi_qc_new when there is data to transfer. This fixes
      some problems seen with SATA devices attached to ipr adapters.
      Signed-off-by: NBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      7a801184
    • T
      ahci: don't enter slumber on power down · 07c53dac
      Tejun Heo 提交于
      Some ATA/ATAPI devices act weirdly after the link is put into slumber
      mode.  Some hang completely requiring physical power removal while
      others fail to wake up till the link is hardreset a couple of times.
      
      The addition of slumber on power down was never driven by real need.
      It just followed what ahci spec said literally.  The spec itself seems
      faulty in that it doesn't consider devices (not controllers) which
      don't support link powersaving mode.
      
      Theory never matches reality when it comes to dark allys of cheap
      ATA/ATAPI world.  It's just unrealistic to expect vendors to test
      rarely used link powersaving feature rigorously.  This patch makes
      ahci more friendly to the coldness of reality.
      
      This shouldn't have any negative effect - when suspend operation
      succeeds, we power off the whole machine; otherwise, we wake up
      everything.  I can't see any reason to be so elaborate with powering
      down the link in the first place.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      07c53dac
    • R
      sata_nv: don't rely on NV_INT_DEV indication with ADMA · f740d168
      Robert Hancock 提交于
      Several people reported issues with certain drive commands timing out on
      sata_nv controllers running in ADMA mode. The commands in question were
      non-DMA-mapped commands, usually FLUSH CACHE or FLUSH CACHE EXT.
      
       From experimentation it appears that the NV_INT_DEV indication isn't
      always set when a legitimate command completion interrupt is received on
      a legacy-mode command, at least not on these controllers in ADMA mode.
      When a command is pending on the port, force the flag on always in the
      irq_stat value before calling nv_host_intr so that the drive busy state
      is always checked by ata_host_intr.
      
      This also fixes some questionable code in nv_host_intr which called
      ata_check_status when a command was pending and ata_host_intr returned
      "unhandled". If the device interrupted at just the wrong time this could
      cause interrupts to be lost.
      Signed-off-by: NRobert Hancock <hancockr@shaw.ca>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      f740d168
    • T
      ahci: make ULi M5288 ignore interface fatal error bit · 82490c09
      Tejun Heo 提交于
      As with JMicron controllers, ULi M5288 sets interface fatal error bit
      on device error including ATAPI CC.  This makes libata hardreset the
      port on ATAPI CC thus making it impossible to use.  Ignore interface
      fatal error bit on ULi M5288.  This fixes bugzilla bug #7837.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      82490c09
  3. 20 1月, 2007 3 次提交
  4. 06 1月, 2007 2 次提交
  5. 03 1月, 2007 1 次提交
    • A
      [PATCH] libata: fix combined mode · dc3c3377
      Alan 提交于
      This is a slight variant on the patch I posted December 16th to fix
      libata combined mode handling. The only real change is that we now
      correctly also reserve BAR1,2,4. That is basically a neatness issue.
      
      Jeff was unhappy about two things
      
      1. That it didn't work in the case of one channel native one channel
      legacy.
      
      This is a silly complaint because the SFF layer in libata doesn't handle
      this case yet anyway.
      
      2. The case where combined mode is in use and IDE=n.
      
      In this case the libata quirk code reserves the resources in question
      correctly already.
      
      Once the combined mode stuff is redone properly (2.6.21) then the entire
      mess turns into a single pci_request_regions() for all cases and all the
      ugly resource hackery goes away.
      
      I'm sending this now rather than after running full test suites so that
      it can get the maximal testing in a short time. I'll be running tests on
      this after lunch.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Cc: Jeff Garzik <jgarzik@pobox.com>
      Acked-by: NAlessandro Suardi <alessandro.suardi@gmail.com>
      Acked-by: NTheodore Tso <tytso@mit.edu>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      dc3c3377
  6. 21 12月, 2006 7 次提交
  7. 16 12月, 2006 10 次提交
  8. 14 12月, 2006 1 次提交
  9. 07 12月, 2006 4 次提交
    • A
      [PATCH] libata: Incorrect timing computation for PIO5/6 · fd3367af
      Alan 提交于
      The ata timing computation code makes some mistakes in PIO5/6 because a
      check was not updated correctly when I put this support into the kernel.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      fd3367af
    • M
      [PATCH] sata_promise: new EH conversion, take 2 · 25b93d81
      Mikael Pettersson 提交于
      This patch converts sata_promise to use new-style libata error
      handling on Promise SATA chips, for both SATA and PATA ports.
      
      * ATA_FLAG_SRST is no longer set
      * ->phy_reset is no longer set as it is unused when ->error_handler
         is present, and pdc_sata_phy_reset() has been removed
      * pdc_freeze() masks interrupts and halts DMA via PDC_CTLSTAT
      * pdc_thaw() clears interrupt status in PDC_INT_SEQMASK and then
        unmasks interrupts in PDC_CTLSTAT
      * pdc_error_handler() reinitialises the port if it isn't frozen,
        and then invokes ata_do_eh() with standard {s,}ata reset methods
      * pdc_post_internal_cmd() resets the port in case of errors
      * the PATA-only 20619 chip continues to use old-style EH:
        not by necessity but simply because I don't have documentation
        for it or any way to test it
      
      Since the previous version pdc_error_handler() has been rewritten
      and it now mostly matches ahci and sata_sil24. In case anyone
      wonders: the call to pdc_reset_port() isn't a heavy-duty reset,
      it's a light-weight reset to quickly put a port into a sane state.
      
      The discussion about the PCI flushes in pdc_freeze() and pdc_thaw()
      seemed to end with a consensus that the flushes are OK and not
      obviously redundant, so I decided to keep them for now.
      
      This patch was prepared against 2.6.19-git7, but it also applies
      to 2.6.19 + libata #upstream, with or without the revised sata_promise
      cleanup patch I recently submitted.
      
      This patch does conflict with the #promise-sata-pata patch:
      this patch removes pdc_sata_phy_reset() while #promise-sata-pata
      modifies it. The correct patch resolution is to remove the function.
      
      Tested on 2037x and 2057x chips, with PATA patches on top and disks
      on both SATA and PATA ports.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      25b93d81
    • A
      [PATCH] libata: let ATA_FLAG_PIO_POLLING use polling pio for ATA_PROT_NODATA · e3472cbe
      Albert Lee 提交于
      Even if ATA_FLAG_PIO_POLLING is set, libata uses irq pio for the ATA_PROT_NODATA protocol.
      This patch let ATA_FLAG_PIO_POLLING use polling pio for the ATA_PROT_NODATA protocol.
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e3472cbe
    • M
      [PATCH] sata_promise: cleanups, take 2 · d324d462
      Mikael Pettersson 提交于
      This patch performs two simple cleanups of sata_promise.
      
      * Remove board_20771 and map device id 0x3577 to board_2057x.
        After the recent corrections for SATAII chips, board_20771 and
        board_2057x were equivalent in the driver.
      
      * Remove hp->hotplug_offset and use hp->flags & PDC_FLAG_GEN_II
        to compute hotplug_offset in pdc_host_init(). hp->hotplug_offset
        was used to distinguish 1st and 2nd generation chips in one
        particular case, but now we have that information in a more
        general form in hp->flags, so hp->hotplug_offset is redundant.
      
      Changes since previous submission: rebased on libata-dev #upstream,
      cleaned up hotplug_offset computation based on Tejun's comments,
      expanded hotplug_offset removal rationale.
      
      This patch does not depend on the pending new EH conversion patch.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      d324d462
  10. 05 12月, 2006 6 次提交