1. 12 5月, 2009 5 次提交
    • B
      libata: fix suspend/resume for ATA SEMB devices · f0d0613d
      Borislav Petkov 提交于
      79b42bab fixed identifying ATA devices
      reporting 3c/c3 signature which belongs to SEMB devices now. However,
      suspending the machine with such device (WDC WD2500AAJS-6 01.0) fails
      with the following:
      
      hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
      hda: UDMA/100 mode selected
      hdb: host max PIO4 wanted PIO255(auto-tune) selected PIO4
      hdb: UDMA/66 mode selected
      sd 1:0:0:0: [sda] Starting disk
      ata5: SATA link down (SStatus 0 SControl 300)
      ata1: SATA link down (SStatus 0 SControl 300)
      ata3: SATA link down (SStatus 0 SControl 300)
      ata6: SATA link down (SStatus 0 SControl 300)
      ata2: softreset failed (device not ready)
      ata2: failed due to HW bug, retry pmp=0
      ata4: softreset failed (device not ready)
      ata4: failed due to HW bug, retry pmp=0
      ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
      ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
      ata2.00: class mismatch 1 != 7
      ata2.00: revalidation failed (errno=-19)
      ata2: limiting SATA link speed to 1.5 Gbps
      ata4.00: configured for UDMA/133
      ata2: softreset failed (device not ready)
      ata2: failed due to HW bug, retry pmp=0
      ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
      ata2.00: class mismatch 1 != 7
      ata2.00: revalidation failed (errno=-19)
      ata2.00: disabled
      sd 1:0:0:0: rejecting I/O to offline device
      sd 1:0:0:0: [sda] START_STOP FAILED
      sd 1:0:0:0: [sda] Result: hostbyte=0x01 driverbyte=0x00
      PM: Device 1:0:0:0 failed to thaw: error 65536
      sd 3:0:0:0: [sdb] Starting disk
      
      due to a class mismatch in ata_dev_revalidate(). Fix it by adding the
      ATA_DEV_SEMB device class to the check.
      
      CC: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NBorislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      f0d0613d
    • T
      libata: clear ering on resume · 6f9c1ea2
      Tejun Heo 提交于
      Error timestamps are in jiffies which doesn't run while suspended and
      PHY events during resume isn't too uncommon.  When the two are
      combined, it can lead to unnecessary speed downs if the machine is
      suspended and resumed repeatedly.  Clear error history on resume.
      
      This was reported and verified in bnc#486803 by Vladimir Botka.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NVladimir Botka <vbotka@novell.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6f9c1ea2
    • B
      pata_pdc202xx_old: fix UDMA33 handling · 6ad58b24
      Bartlomiej Zolnierkiewicz 提交于
      The original driver doesn't use 66 MHz clock for UDMA33.
      
      [ The alternative solution would be to adjust UDMA33 timings
        for 66 MHz clock but I think that it is safer to stick with
        old & tested behavior for now. ]
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6ad58b24
    • M
      sata_mv: use new sata phy register settings for new devices · 29b7e43c
      Martin Michlmayr 提交于
      Marvell's new SoC (65 nano) needs different settings for its SATA
      PHY registers.
      Tested-by: NMartin Michlmayr <tbm@cyrius.com>
      Signed-off-by: NSaeed Bishara <saeed@marvell.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      29b7e43c
    • T
      libata: fix attach error handling · 842faa6c
      Tejun Heo 提交于
      New device attach path in ata_eh_revalidate_and_attach() is divided
      into two separate loops because ATA requires IDENTIFY to be issued to
      slave first while the user expects to see device probe messages from
      the master device.  new_mask is used to track which devices are the
      new ones between the first loop and the second.
      
      This usually works well but if an error occurs during configuration
      stage, ata_dev_revalidate_and_attach() returns with error code and
      forgets new_mask.  On the retry run, dev->class is set and new_mask
      for the device is clear, so the device just gets revalidated and thus
      ends up skipping post-configuration procedure including scheduling of
      SCSI_HOTPLUG for the device.  When this occurs, ATA part of probing
      works fine but SCSI probing usually doesn't happen and makes the
      device unreachable.
      
      The behavior has been around for a very long time but it has been
      uncovered with the recent addition of 1_5_GBPS horkage which uses
      -EAGAIN return value from ata_dev_configure() to restart the probing
      sequence after forcing cable speed.
      
      This can be fixed by making sure dev->class is permanently set only
      after all configurations are successfully complete.  Fix it.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reported-by: NTim Connors <tconnors+linuxkml@astro.swin.edu.au>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      842faa6c
  2. 11 5月, 2009 8 次提交
  3. 10 5月, 2009 17 次提交
  4. 09 5月, 2009 10 次提交