1. 25 3月, 2009 34 次提交
  2. 14 3月, 2009 3 次提交
    • T
      ata_piix: add workaround for Samsung DB-P70 · e9c1670c
      Tejun Heo 提交于
      Samsung DB-P70 somehow botched the first ICH9 SATA port.  The board
      doesn't expose the first port but somehow SStatus reports link online
      while failing SRST protocol leading to repeated probe failures and
      thus long boot delay.
      
      Because the BIOS doesn't carry any identifying DMI information, the
      port can't be blacklisted safely.  Fortunately, the controller does
      have subsystem vendor and ID set.  It's unclear whether the subsystem
      IDs are used only for the board but it can be safely worked around by
      disabling SIDPR access and just using SRST works around the problem.
      Even when the workaround is triggered on an unaffected board the only
      side effect will be missing SCR access.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NJoseph Jang <josephjang@gmail.com>
      Reported-by: NJonghyon Sohn <mrsohn@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      e9c1670c
    • S
      libata: Keep shadow last_ctl up to date during resets · e3e4385f
      Stuart MENEFY 提交于
      libata keeps a shadow copy of the ATA CTL register (which is write only),
      and only writes to the hardware when the required value doesn't match
      the shadow. However this copy wasn't being maintained when performing
      reset functions. This could cause problems for the first operation after
      a reset when the correct value might not be written to the CTL register.
      
      This problem was observed when hotplugging a drive: the identify command
      was being issued with interrupts enabled, when they should have been
      disabled.
      Signed-off-by: NStuart Menefy <stuart.menefy@st.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      e3e4385f
    • M
      sata_mv: fix MSI irq race condition · 9d51af7b
      Mark Lord 提交于
      Fix a (rare) race condition in mv_interrupt() when using MSI.
      
      The value of hpriv->main_irq_mask_addr can change on on the fly,
      and without this patch we could end up writing back a stale copy
      to the hardware.
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      9d51af7b
  3. 05 3月, 2009 3 次提交
    • R
      libata: Don't trust current capacity values in identify words 57-58 · 968e594a
      Robert Hancock 提交于
      Hanno Böck reported a problem where an old Conner CP30254 240MB hard drive
      was reported as 1.1TB in capacity by libata:
      
      http://lkml.org/lkml/2009/2/13/134
      
      This was caused by libata trusting the drive's reported current capacity in
      sectors in identify words 57 and 58 if the drive does not support LBA and the
      current CHS translation values appear valid. Unfortunately it seems older
      ATA specs were vague about what this field should contain and a number of drives
      used values with wrong byte order or that were totally bogus. There's no
      unique information that it conveys and so we can just calculate the number
      of sectors from the reported current CHS values.
      
      While we're at it, clean up this function to use named constants for the
      identify word values.
      Signed-off-by: NRobert Hancock <hancockrwd@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      968e594a
    • T
      libata: make sure port is thawed when skipping resets · d6515e6f
      Tejun Heo 提交于
      When SCR access is available and the link is offline, softreset is
      skipped as it only wastes time and some controllers don't respond very
      well.  However, the skip path forgot to thaw the port, which not only
      blocks further event notification from the port but also causes
      repeated EH invocations on the same event on drivers which rely on
      ->thaw() to clear events if the IRQ is shared with another device or
      port.
      
      This problem has always been there but is uncovered by recent sata_nv
      nf2/3 change which dropped hardreset support while maintaining SCR
      access.  nf2/3 doesn't clear hotplug event mask from the interrupt
      handler but relies on ->thaw() to clear them.  When the hardreset was
      there, the reset action was never skipped and the port was always
      thawed but, with the hardreset gone, ->prereset() determines that
      there's no need for softreset and both ->softreset() and ->thaw() are
      skipped.  This leads to stuck hotplug event in the IRQ status register
      triggering hotplug event whenever IRQ is delieverd on the same IRQ.
      As the controller shares the same IRQ for both ports, this happens on
      every IO if one port is occpupied and the other isn't.
      
      This patch fixes the problem by making sure that the port is thawed on
      reset-skip path.
      
      bko#11615 reports this problem.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Robert Hancock <hancockrwd@gmail.com>
      Reported-by: NDan Andresan <danyer@gmail.com>
      Reported-by: NArne Woerner <arne_woerner@yahoo.com>
      Reported-by: NStefan Lippers-Hollmann <s.L-H@gmx.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      d6515e6f
    • B
      sata_nv: fix module parameter description · 55f784c8
      Brandon Ehle 提交于
      Update MODULE_PARM_DESC for ADMA to reflect the fact that the
      option is disabled by default.
      Signed-off-by: NBrandon Ehle <azverkan@yahoo.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      55f784c8