12 Jun, 2009

2 commits

  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    [libata] ata_piix: Enable parallel scan
    sata_nv: use hardreset only for post-boot probing
    [libata] ahci: Restore SB600 SATA controller 64 bit DMA
    ata_piix: Remove stale comment
    ata_piix: Turn on hotplugging support for older chips
    ahci: misc cleanups for EM stuff
    [libata] get rid of ATA_MAX_QUEUE loop in ata_qc_complete_multiple() v2
    sata_sil: enable 32-bit PIO
    sata_sx4: speed up ECC initialization
    libata-sff: avoid byte swapping in ata_sff_data_xfer()
    [libata] ahci: use less error-prone array initializers

    Linus Torvalds
     
  • * 'for-2.6.31' of git://git.kernel.dk/linux-2.6-block: (153 commits)
    block: add request clone interface (v2)
    floppy: fix hibernation
    ramdisk: remove long-deprecated "ramdisk=" boot-time parameter
    fs/bio.c: add missing __user annotation
    block: prevent possible io_context->refcount overflow
    Add serial number support for virtio_blk, V4a
    block: Add missing bounce_pfn stacking and fix comments
    Revert "block: Fix bounce limit setting in DM"
    cciss: decode unit attention in SCSI error handling code
    cciss: Remove no longer needed sendcmd reject processing code
    cciss: change SCSI error handling routines to work with interrupts enabled.
    cciss: separate error processing and command retrying code in sendcmd_withirq_core()
    cciss: factor out fix target status processing code from sendcmd functions
    cciss: simplify interface of sendcmd() and sendcmd_withirq()
    cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code
    cciss: Use schedule_timeout_uninterruptible in SCSI error handling code
    block: needs to set the residual length of a bidi request
    Revert "block: implement blkdev_readpages"
    block: Fix bounce limit setting in DM
    Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt
    ...

    Manually fix conflicts with tracing updates in:
    block/blk-sysfs.c
    drivers/ide/ide-atapi.c
    drivers/ide/ide-cd.c
    drivers/ide/ide-floppy.c
    drivers/ide/ide-tape.c
    include/trace/events/block.h
    kernel/trace/blktrace.c

    Linus Torvalds
     

10 Jun, 2009

11 commits

  • This patch turns on parallel scanning for the ata_piix driver.
    This driver is used on most netbooks (no AHCI for cheap storage it seems).
    The scan is the dominating time factor in the kernel boot for these
    devices; with this flag it gets cut in half for the device I used
    for testing (eeepc).
    Alan took a look at the driver source and concluded that it ought to be safe
    to do for this driver. Alan has also checked with the hardware team.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Arjan van de Ven
     
  • When I thought it was finally defeated, it came back with vengeance.
    The failure cases are ever more convoluted. Now there is a single
    combination which fails boot probing - MCP5x + Intel SSD and there are
    two hotplug failure reports on different flavors where softreset fails
    to bring up the device.

    Through the many bug reports after the switch to hardreset, the
    following patterns emerged.

    - Softreset during boot always works.

    - Hardreset during boot sometimes fails to bring up the link on
    certain comibnations and device signature acquisition is unreliable.

    - Hardreset is often necessary after hotplug.

    It looks like the old behavior of preferring softreset was somehow
    pretty close to the working reset protocol although it could have lost
    a device during phy error handling by issuing hardreset.

    This patch implements nv_hardreset() which kicks in only for post-boot
    (!LOADING) device probing resets. This should be able to work around
    all known problem cases. This isn't perfect but given the various
    hardreset quirks on these controllers, I think this is as good as it
    can get.

    Tested on mcp5x (swncq), nf3 and ck804 for all both boot, warm and
    hot probing cases.

    Kudos to all the bug reporters and their painful hours with these damn
    controllers. ;-)

    Signed-off-by: Tejun Heo
    Cc: Robert Hancock
    Reported-by: David Lang
    Reported-by: Samo Vodopivec
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Community reported one SB600 SATA issue(BZ #9412), which led to 64 bit
    DMA disablement for all SB600 revisions by driver maintainers with
    commits c7a42156d99bcea7f8173ba7a6034bbaa2ecb77c and
    4cde32fc4b32e96a99063af3183acdfd54c563f0.

    But the root cause is ASUS M2A-VM system BIOS bug in old revisions
    like 0901, while forcing into 32bit DMA happens to work as workaround.
    Now it's time to withdraw 4cde32fc4b32e96a99063af3183acdfd54c563f0
    so as to restore the SB600 SATA 64bit DMA capability.
    This patch is also adding the workaround for M2A-VM old BIOS revisions,
    but users are suggested to upgrade their system BIOS to the latest one
    if they meet this issue.

    Signed-off-by: Shane Huang
    Cc: Tejun Heo
    Signed-off-by: Jeff Garzik

    Shane Huang
     
  • Combined mode pci quirk hacks went away - so the table to keep in sync
    no longer exists.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • We can't do this for the later ones as they have all sorts of magic boot
    time stuff that needs reviewing and the like. However we can do it for the
    older ones and it turns out we need to as some IBM docking stations have a
    second PIIX series device in them and without this change you can't use it
    very well

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • Make the following EM related cleanups.

    * Use msleep(1) instead of udelay(100) and reduce retry count to 5.

    * s/MAX_SLOTS/EM_MAX_SLOTS/, s/MAX_RETRY/EM_MAX_RETRY/

    * Make EM constants enums as suggested by Jeff.

    Signed-off-by: Tejun Heo
    Acked-by: David Milburn
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • We very rarely (if ever) complete more than one command in the
    sactive mask at the time, even for extremely high IO rates. So
    looping over the entire range of possible tags is pointless,
    instead use __ffs() to just find the completed tags directly.

    Updated to clear the tag from the done_mask instead of shifting
    done_mask down as suggested by From: Tejun Heo
    Verified with a user space tester to produce the same results.

    Signed-off-by: Jens Axboe
    Signed-off-by: Jeff Garzik

    Jens Axboe
     
  • 32-bit PIO seems to work fine on sata_sil hardware (tested on SiI3114) and is
    listed as OK in the Silicon Image datasheets. Enable it.

    Signed-off-by: Robert Hancock
    Signed-off-by: Jeff Garzik

    Robert Hancock
     
  • ECC initialization takes too long. It writes zeroes by portions
    of 4 byte, it takes more than 6 minutes on my machine to initialize
    512Mb ECC DIMM module. Change portion to 128Kb - it significantly
    reduces initialization time.

    Signed-off-by: Alexander Beregalov
    Signed-off-by: Jeff Garzik

    Alexander Beregalov
     
  • Handling of the trailing byte in ata_sff_data_xfer() is suboptimal bacause:

    - it always initializes the padding buffer to 0 which is not really needed in
    both the read and write cases;

    - it has to use memcpy() to transfer a single byte from/to the padding buffer;

    - it uses io{read|write}16() accessors which swap bytes on the big endian CPUs
    and so have to additionally convert the data from/to the little endian format
    instead of using io{read|write}16_rep() accessors which are not supposed to
    change the byte ordering.

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Jeff Garzik

    Sergei Shtylyov
     
  • Also, remove unneeded prototype.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     

09 Jun, 2009

1 commit

  • The previous patch submission had a I typo I didn't catch but Bartlomiej
    noted. Guess this proves the point about any patch being risky late in an rc

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     

06 Jun, 2009

5 commits

  • Some ALi devices report simplex if they have been disabled and re-enabled, and
    restoring the byte does not work. Ignore it - the needed supporting logic is
    already present for the SATA ULi ports.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • HP Compaq nc6000 suffers from the double disk spindown issue.
    Add it to the broken poweroff DMI list.

    Signed-off-by: Ville Syrjala
    Signed-off-by: Jeff Garzik

    Ville Syrjala
     
  • Harddisks on HP dv[4-6] and HDX18 fail to come online after resume on
    earlier BIOSen. Fortunately, HP recently released BIOS updates for
    all machines to fix the issue. Detect old BIOSen, warn the user to
    update BIOS on boot and suspend attempts and fail suspend.

    Kudos to all the bug reporters.

    Signed-off-by: Tejun Heo
    Cc: kernel.org@epperson.homelinux.net
    Cc: emisca@gmail.com
    Cc: Gadi Cohen
    Cc: Paul Swanson
    Cc: s@ourada.org
    Cc: Trevor Davenport
    Cc: corruptor1972
    Cc: Victoria Wilson
    Cc: khiraly
    Cc: Sean
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Fix the PIO mode 2 using mode 0 timings -- this driver should enable the
    fast timing bank starting with PIO2, just like the PIIX/ICH drivers do.
    Also, fix/rephrase some comments while at it.

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Jeff Garzik

    Sergei Shtylyov
     
  • The basic problem here that pata_legacy attaches the host, sees if it found
    any devices and detaches it if none were found. With async probing, it's not
    waiting until discovery is finished before deciding it has no devices and
    trying the detach leading to this warning:

    ata1: PATA max PIO4 cmd 0x1f0 ctl 0x3f6 irq 14
    ------------[ cut here ]------------
    WARNING: at drivers/ata/libata-core.c:6222 ata_host_detach+0x75/0x90()
    Modules linked in:
    Pid: 1, comm: swapper Not tainted 2.6.30-rc7 #1
    Call Trace:
    [] ? ata_host_detach+0x75/0x90
    [] ? ata_host_detach+0x75/0x90
    [] ? warn_slowpath_common+0x45/0x80
    [] ? warn_slowpath_null+0xa/0x10
    [] ? ata_host_detach+0x75/0x90
    [] ? legacy_init+0x44e/0x87f
    [] ? legacy_init+0x0/0x87f
    [] ? _stext+0x21/0x140
    [] ? proc_register+0x2f/0x190
    [] ? create_proc_entry+0x5c/0xc0
    [] ? register_irq_proc+0x6e/0x90
    [] ? kernel_init+0x6e/0xbf
    [] ? kernel_init+0x0/0xbf
    [] ? kernel_thread_helper+0x7/0x10
    ---[ end trace ef1ee36e873ae3a0 ]---

    Because it detaches before the probe is complete.

    One way to fix it would be to put an async_synchronize_full() before looking
    for devices, which this patch does. A better way might be to separate libata
    into its own domain and only wait for that.

    Reported-by: Mikael Pettersson
    Signed-off-by: James Bottomley
    Signed-off-by: Jeff Garzik

    James Bottomley
     

03 Jun, 2009

1 commit

  • This matches Bartlomiej's patch for ide_pci_generic:
    c339dfdd65b52bfd947ab29d1210314a2f6d622d

    In the libata case netcell has its own mini driver. I suspect this fix is
    actually only needed for some firmware revs but it does no harm either way.

    Signed-off-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Alan Cox
     

23 May, 2009

1 commit


16 May, 2009

6 commits

  • This patch provides new heuristics for parsing both the form factor and
    media rotation rate ATA IDENFITY words.

    The reported ATA version must be 7 or greater and the device must return
    values defined as valid in the standard. Only then are the
    characteristics reported to SCSI via the VPD B1 page.

    This seems like a reasonable compromise to me considering that we have
    been shipping several kernel releases that key off the rotation rate bit
    without any version checking whatsoever. With no complaints so far.

    Signed-off-by: Martin K. Petersen
    Signed-off-by: Jeff Garzik

    Martin K. Petersen
     
  • For disks with 4KB sectors, report the correct block size and alignment
    when filling out the READ CAPACITY(16) response.

    This patch is based upon code from Matthew Wilcox' 4KB ATA tree. I
    fixed the bug I reported a while back caused by ATA and SCSI using
    different approaches to describing the alignment.

    Signed-off-by: Martin K. Petersen
    Signed-off-by: Jeff Garzik

    Martin K. Petersen
     
  • The bit 11 of command description is reserved bit in Freescale
    SATA controller and needs to be set to '1'. This is needed to
    make sure the last write from the controller to the buffer
    descriptor is seen before an interrupt is raised.

    Signed-off-by: Dave Liu
    Signed-off-by: Kumar Gala
    Signed-off-by: Jeff Garzik

    Dave Liu
     
  • We we build with dma_addr_t as a 64-bit quantity we get:

    drivers/ata/sata_fsl.c: In function 'sata_fsl_fill_sg':
    drivers/ata/sata_fsl.c:340: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'dma_addr_t'

    Signed-off-by: Kumar Gala
    Signed-off-by: Jeff Garzik

    Kumar Gala
     
  • Issuing ATA_CMD_SET_FEATURES (0xef) times out because
    pdc20621_interrupt ignores command completion since
    ATA_TFLAG_POLLING flag is set.

    This has already been fixed for sata_promise:

    commit 51b94d2a5a90d4800e74d7348bcde098a28f4fb3
    Author: Tejun Heo
    Date: Fri Jun 8 13:46:55 2007 -0700

    sata_promise: use TF interface for polling NODATA commands

    Also, this patch includes Mikael's original patches:

    http://marc.info/?l=linux-ide&m=121135828227724&w=2
    http://marc.info/?l=linux-ide&m=121144512109826&w=2

    Signed-off-by: Mikael Pettersson
    Signed-off-by: David Milburn
    Signed-off-by: Jeff Garzik

    David Milburn
     
  • Signed-off-by: Jeff Garzik

    Jeff Garzik
     

12 May, 2009

8 commits

  • The Sony TZ90 needs the cable type hardcoding. See bug #12734

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • See Errata documentation. The recommended workaround is to use PIO4 instead
    which will we automatically do by flagging this mode not available.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • Signed-off-by: Vitaly Mayatskikh
    Signed-off-by: Jeff Garzik

    Vitaly Mayatskikh
     
  • 79b42babbac2a5a522b8e269fb2811b6e1063030 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
    Signed-off-by: Borislav Petkov
    Signed-off-by: Jeff Garzik

    Borislav Petkov
     
  • 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: Tejun Heo
    Reported-by: Vladimir Botka
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • 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: Bartlomiej Zolnierkiewicz
    Signed-off-by: Jeff Garzik

    Bartlomiej Zolnierkiewicz
     
  • Marvell's new SoC (65 nano) needs different settings for its SATA
    PHY registers.

    Tested-by: Martin Michlmayr
    Signed-off-by: Saeed Bishara
    Signed-off-by: Jeff Garzik

    Martin Michlmayr
     
  • 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: Tejun Heo
    Reported-by: Tim Connors
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

11 May, 2009

1 commit

  • With recent unification of fields, it's now guaranteed that
    rq->data_len always equals blk_rq_bytes(). Convert all non-IDE direct
    users to accessors. IDE will be converted in a separate patch.

    Boaz: spotted incorrect data_len/resid_len conversion in osd.

    [ Impact: convert direct rq->data_len usages to blk_rq_bytes() ]

    Signed-off-by: Tejun Heo
    Acked-by: Sergei Shtylyov
    Cc: Pete Zaitcev
    Cc: Eric Moore
    Cc: Markus Lidel
    Cc: Darrick J. Wong
    Cc: James Bottomley
    Cc: Eric Moore
    Cc: Boaz Harrosh
    Cc: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    Tejun Heo
     

18 Apr, 2009

4 commits

  • fix those errors:

    drivers/ata/pata_legacy.c: In function ‘pdc_data_xfer_vlb’:
    drivers/ata/pata_legacy.c:289: error: ‘ap’ undeclared (first use in this function)
    drivers/ata/pata_legacy.c:289: error: (Each undeclared identifier is reported only once
    drivers/ata/pata_legacy.c:289: error: for each function it appears in.)
    drivers/ata/pata_legacy.c: At top level:
    drivers/ata/pata_legacy.c:869: error: ‘ATA_PFLAG_PIO32_CHANGE’ undeclared here (not in a
    +function)
    make[2]: *** [drivers/ata/pata_legacy.o] Error 1
    make[1]: *** [drivers/ata] Error 2

    Signed-off-by: Zhenwen Xu
    Acked-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Zhenwen Xu
     
  • Some VIA chipsets will reset the DEV bit after IEN changes on ctl. Our
    optimised write path avoids doing this but we need to remove the
    optimisation on these devices.

    [Identified and some original patches proposed by Josehn Chan @ VIA but
    discussion then all ground to a halt so given a test case I dug it back out]

    Signed-off-by: Alan Cox

    Alan Cox
     
  • Workaround for errata SATA#24 in sata_mv.
    This errata affects WRITE_MULTI* commands when
    the device multi_count produces a DRQ block size >= 4Kbytes.

    We work around it here by converting such operations
    into ordinary PIO_WRITEs instead.

    Note that this might result in a PIO FUA write unavoidably being converted
    into a non-FUA write. In practice, any system using FUA is also going to be
    using DMA rather than PIO, so this shouldn't affect anyone in the real world.

    Signed-off-by: Mark Lord
    Signed-off-by: Jeff Garzik

    Mark Lord
     
  • Tidy up qc->tf accesses in the mv_qc_prep() functions.

    Signed-off-by: Mark Lord
    Signed-off-by: Jeff Garzik

    Mark Lord