29 Sep, 2008

1 commit

  • Commit 2fd673ecf0378ddeeeb87b3605e50212e0c0ddc6 which tried to remove
    hardreset for generic accidentally removed it for all flavors as all
    others were inheriting from nv_generic_ops. This patch reinstates
    nv_hardreset() and puts it into nv_common_ops which all flavors
    inherit from. nv_generic_ops now inherits from nv_common_ops and
    overrides .hardreset to ATA_OP_NULL.

    While at it, explain why nv_hardreset and ATA_OP_NULL override are
    necessary.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

14 Sep, 2008

2 commits


09 Sep, 2008

7 commits

  • Add the Intel Ibex Peak (PCH) SATA RAID Controller DeviceIDs.

    Signed-off-by: Seth Heasley
    Signed-off-by: Jeff Garzik

    Seth Heasley
     
  • Remove duplicate call to pcim_enable_device in sil680_init_one.

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

    David Milburn
     
  • On HSM_ST_ERR, ata_hsm_move() triggers WARN_ON() if AC_ERR_DEV or
    AC_ERR_HSM is not set. PHY events may trigger HSM_ST_ERR with other
    error codes and, with or without it, there just isn't much reason to
    do WARN_ON() on it. Even if error code is not set there, core EH
    logic won't have any problem dealing with the error condition.

    OSDL bz#11065 reports this problem.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • of them being unifying probing, hotplug and EH reset paths uniform.
    Previously, broken hardreset could go unnoticed as it wasn't used
    during probing but when something goes wrong or after hotplug the
    problem will surface and bite hard.

    OSDL bug 11195 reports that sata_nv generic flavor falls into this
    category. Hardreset itself succeeds but PHY stays offline after
    hardreset. I tried longer debounce timing but the result was the
    same.

    http://bugzilla.kernel.org/show_bug.cgi?id=11195

    So, it seems we'll have to drop hardreset from the generic flavor.

    Signed-off-by: Tejun Heo
    Cc: Peer Chen
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Marvell ahcis don't play nicely with PMPs. Disable it.

    Reported by KueiHuan Chen in the following thread.

    http://thread.gmane.org/gmane.linux.ide/33296

    Signed-off-by: Tejun Heo
    Cc: KueiHuan Chen
    Cc: Mark Lord
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Signed-off-by: Petr Jelen
    Signed-off-by: Mark Lord
    Signed-off-by: Jeff Garzik

    Mark Lord
     
  • I've been chasing Jeff about this for months. Jeff added the Marvell
    device identifiers to the ahci driver without making the AHCI driver
    handle the PATA port. This means a lot of users can't use current
    kernels and in most distro cases can't even install.

    This has been going on since March 2008 for the 6121 Marvell, and late 2007
    for the 6145!!!

    This was all pointed out at the time and repeatedly ignored. Bugs assigned
    to Jeff about this are ignored also.

    To quote Jeff in email

    > "Just switch the order of 'ahci' and 'pata_marvell' in
    > /etc/modprobe.conf, then use Fedora's tools regenerate the initrd.

    > See? It's not rocket science, and the current configuration can be
    > easily made to work for Fedora users."

    (Which isn't trivial, isn't end user, shouldn't be needed, and as it usually
    breaks at install time is in fact impossible)

    To quote Jeff in August 2007

    > " mv-ahci-pata
    > Marvell 6121/6141 PATA support. Needs fixing in the 'PATA controller
    > command' area before it is usable, and can go upstream."

    Only he add the ids anyway later and caused regressions, adding a further
    id in March causing more regresions.

    The actual fix for the moment is very simple. If the user has included
    the pata_marvell driver let it drive the ports. If they've only selected
    for SATA support give them the AHCI driver which will run the port a fraction
    faster. Allow the user to control this decision via ahci.marvell_enable as
    a module parameter so that distributions can ship 'it works' defaults and
    smarter users (or config tools) can then flip it over it desired.

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

    Alan Cox
     

22 Aug, 2008

13 commits

  • Reported by Andrew Morton:
    drivers/ata/pata_it821x.c: In function 'it821x_port_start':
    drivers/ata/pata_it821x.c:609: warning: 'mtype' may be used uninitialized in
    this function

    Pretty horrid fix, but so's a warning..

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • Dave Müller sent a diff for the pata_oldpiix that highlighted a problem
    where a lot of the ATA drivers assume dma_mode == 0 means "no DMA" while
    the core code uses 0xFF.

    This turns out to have other consequences such as code doing >= XFER_UDMA_0
    also catching 0xFF as UDMAlots. Fortunately it doesn't generally affect
    set_dma_mode, although some drivers call back into their own set mode code
    from other points.

    Having been through the drivers I've added helpers for using_udma/using_mwdma
    dma_enabled so that people don't open code ranges that may change (eg if UDMA8
    appears somewhere)

    Thanks to David for the initial bits
    [and added fix for pata_oldpiix from and signed-off-by Dave Mueller
    -jg]

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

    Alan Cox
     
  • SIS controllers were blacklisted for PMP as enabling it made device
    detection fail whether the device was PMP or not - the natural
    conclusion was the controller chokes on SRST w/ pmp==15. However, it
    turned out that the controller just didn't like issuing SRST after
    hardreset w/o clearing SError first. Interestingly, the SRST itself
    succeeds but the following commands fail.

    If SError is cleared between hardreset and SRST, which is the default
    behavior now, everything works fine and SIS controllers work with PMPs
    happily.

    Remove PMP blacklisting for SIS AHCIs.

    Signed-off-by: Tejun Heo
    Cc: Piter PUNK
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Commit bfce5e0179ad059035df28558724ff60af708e09 implemented custom
    tf_load for pata_via. This patch cleans it up a bit.

    * Instead of duplicating whole body, copy tf and set ATA_TFLAG_DEVICE
    when necessary.

    * Rename via_ata_tf_load() to via_tf_load().

    * No need to set .tf_load in via_port_ops_noirq as it inherits from
    via_port_ops.

    * Clean up indentation.

    Signed-off-by: Tejun Heo
    Cc: Joseph Chan
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Save SControl during probing and restore it on detach. This prevents
    adjustments made by libata drivers to seep into the next driver which
    gets attached (be it a libata one or not).

    It's not clear whether SControl also needs to be restored on suspend.
    The next system to have control (ACPI or kexec'd kernel) would
    probably like to see the original SControl value but there's no
    guarantee that a link is gonna keep working after SControl is adjusted
    without a reset and adding a reset and modified recovery cycle soley
    for this is an overkill. For now, do it only for detach.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • SError belongs to link not port. Use ata_link_printk() to print it.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • As an optimization, follow-up SRST used to be skipped if
    classification wasn't requested even when hardreset requested it via
    -EAGAIN. However, some hardresets can't wait for device readiness and
    skipping SRST can cause timeout or other failures during revalidation.
    Always perform follow-up SRST if hardreset returns -EAGAIN. This
    makes reset paths more predictable and thus less error-prone.

    While at it, move hardreset error checking such that it's done right
    after hardreset is finished. This simplifies followup SRST condition
    check a bit and makes the reset path easier to modify.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • ehc->i.action got accidentally overwritten to ATA_EH_HARD/SOFTRESET in
    ata_eh_reset(). The original intention was to clear reset action
    which wasn't selected. This can cause unexpected behavior when other
    EH actions are scheduled together with reset. Fix it.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • The SoC sata port is based on the 7042/6042 devices (Gen IIE). This patch
    will fix various issues when working with PMP and/or NCQ.

    Signed-off-by: Saeed Bishara
    Signed-off-by: Jeff Garzik

    Saeed Bishara
     
  • This patch adds the Intel Ibex Peak (PCH) IDE mode SATA Controller DeviceIDs.

    Signed-off-by: Seth Heasley
    Signed-off-by: Jeff Garzik

    Seth Heasley
     
  • Resend with proper whitespace.

    This patch adds the Intel Ibex Peak (PCH) SATA RAID Controller DeviceIDs.

    Signed-off-by: Seth Heasley
    Signed-off-by: Jeff Garzik

    Seth Heasley
     
  • sata_mv allowed issuing two DMA commands concurrently which the
    hardware allows. Unfortunately, libata core layer isn't ready for
    this yet and spews ugly warning message and malfunctions on this.
    Don't allow concurrent DMA commands for now.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Implement force params nohrst, nosrst and norst. This is to work
    around reset related problems and ease debugging.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

05 Aug, 2008

1 commit


31 Jul, 2008

6 commits

  • - Add support for the RDC 1010 variant
    - Rework the core library to have a read_id method. This allows the hacky
    bits of it821x to go and prepares us for pata_hd
    - Switch from WARN to BUG in ata_id_string as it will reboot if you get
    it wrong so WARN won't be seen
    - Allow the issue of command 0xFC on the 821x. This is needed to query
    rebuild status.
    - Tidy up printk formatting
    - Do more ident rewriting on RAID volumes to handle firmware provided
    ident data which is rather wonky
    - Report the firmware revision and device layout in RAID mode
    - Don't try and disable raid on the 8211 or RDC - they don't have the
    relevant bits

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

    Alan Cox
     
  • Subsys 106b:00a3 also is the weird apple ich8m which chokes when the
    latter two ports are accessed, add it. Reported by Felipe Sere.

    Signed-off-by: Tejun Heo
    Cc: Felipe Sere
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Fix a potential memory leak when ata_init() encounters an error.

    Signed-off-by: Elias Oltmanns
    Cc: Tejun Heo
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    Elias Oltmanns
     
  • Global and per-LLD ATAPI disable checks were done in the command issue
    path probably because it was left out during EH conversion. On
    affected machines, this can cause lots of warning messages. Move them
    to where they belong - the probing path.

    Reported by Chunbo Luo.

    Signed-off-by: Tejun Heo
    Cc: Chunbo Luo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Add flag VIA_SATA_PATA for vx800, VX800 uses the same
    chipset(0x0581/0x5324) as CX700, which has 1 PATA channel(Master/Slave)
    and 1 SATA channel(Master/Slave) Add function . This is
    to fix the internal bug of VIA chipsets, which will reset the device
    register after changing the IEN bit in CTL register

    Signed-off-by: Joseph Chan
    Cc: Tejun Heo
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    JosephChan@via.com.tw
     
  • The ali_init_one() function does a search for an isa_bridge,
    but then fails to release it if the revision information was
    not correctly found.

    the problem comes from:
    isa_bridge = pci_get_device(...);
    if (isa_bridge && ...) {
    pci_dev_put(isa_bridge);
    }

    where the pci_dev_put() is never called if isa_bridge
    was valid but the extra checks on the chip-revision
    fail to match.

    Signed-off-by: Ben Dooks
    Signed-off-by: Jeff Garzik

    Ben Dooks
     

27 Jul, 2008

1 commit

  • IRQT_* and __IRQT_* were obsoleted long ago by patch [3692/1].
    Remove them completely. Sed script for the reference:

    s/__IRQT_RISEDGE/IRQ_TYPE_EDGE_RISING/g
    s/__IRQT_FALEDGE/IRQ_TYPE_EDGE_FALLING/g
    s/__IRQT_LOWLVL/IRQ_TYPE_LEVEL_LOW/g
    s/__IRQT_HIGHLVL/IRQ_TYPE_LEVEL_HIGH/g
    s/IRQT_RISING/IRQ_TYPE_EDGE_RISING/g
    s/IRQT_FALLING/IRQ_TYPE_EDGE_FALLING/g
    s/IRQT_BOTHEDGE/IRQ_TYPE_EDGE_BOTH/g
    s/IRQT_LOW/IRQ_TYPE_LEVEL_LOW/g
    s/IRQT_HIGH/IRQ_TYPE_LEVEL_HIGH/g
    s/IRQT_PROBE/IRQ_TYPE_PROBE/g
    s/IRQT_NOEDGE/IRQ_TYPE_NONE/g

    Signed-off-by: Dmitry Baryshkov
    Signed-off-by: Russell King

    Dmitry Baryshkov
     

26 Jul, 2008

1 commit


16 Jul, 2008

2 commits

  • Manual merge of:

    arch/powerpc/Kconfig
    arch/powerpc/kernel/stacktrace.c
    arch/powerpc/mm/slice.c
    arch/ppc/kernel/smp.c

    Benjamin Herrenschmidt
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    AHCI: Remove an unnecessary flush from ahci_qc_issue
    AHCI: speed up resume
    [libata] Add support for VPD page b1
    ata: endianness annotations in pata drivers
    libata-eh: update atapi_eh_request_sense() to take @dev instead of @qc
    [libata] sata_svw: update code comments relating to data corruption
    libata/ahci: enclosure management support
    libata: improve EH internal command timeout handling
    libata: use ULONG_MAX to terminate reset timeout table
    libata: improve EH retry delay handling
    libata: consistently use msecs for time durations

    Linus Torvalds
     

15 Jul, 2008

6 commits

  • Manual fixup of:

    arch/powerpc/Kconfig

    Benjamin Herrenschmidt
     
  • Benjamin Herrenschmidt
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block: (37 commits)
    splice: fix generic_file_splice_read() race with page invalidation
    ramfs: enable splice write
    drivers/block/pktcdvd.c: avoid useless memset
    cdrom: revert commit 22a9189 (cdrom: use kmalloced buffers instead of buffers on stack)
    scsi: sr avoids useless buffer allocation
    block: blk_rq_map_kern uses the bounce buffers for stack buffers
    block: add blk_queue_update_dma_pad
    DAC960: push down BKL
    pktcdvd: push BKL down into driver
    paride: push ioctl down into driver
    block: use get_unaligned_* helpers
    block: extend queue_flag bitops
    block: request_module(): use format string
    Add bvec_merge_data to handle stacked devices and ->merge_bvec()
    block: integrity flags can't use bit ops on unsigned short
    cmdfilter: extend default read filter
    sg: fix odd style (extra parenthesis) introduced by cmd filter patch
    block: add bounce support to blk_rq_map_user_iov
    cfq-iosched: get rid of enable_idle being unused warning
    allow userspace to modify scsi command filter on per device basis
    ...

    Linus Torvalds
     
  • In an I/O heavy workload (IOZone), ahci_qc_issue is the second-highest
    consumer of CPU cycles. Removing the flush gets us approximately 10%
    bandwidth improvement. I believe this to be because the CPU can start
    queueing the next request instead of waiting for the readl() to flush the
    writes to the device. The flush isn't necessary because we're using a
    'queue' metaphor; we don't guarantee the command has got to the device,
    nor do we need to guarantee the command has got to the controller.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Jeff Garzik

    Matthew Wilcox
     
  • During resume, sleep 1 second to wait for the HBA reset
    to finish is a waste of time.

    According to the AHCI 1.2 spec,
    We should poll the HOST_CTL register,
    and return error if the host reset is not
    finished within 1 second.

    Test results show that the HBA reset can be done quickly(in usecs).
    And this patch may save nearly 1 second during resume.

    Signed-off-by: Zhang Rui
    Signed-off-by: Jeff Garzik

    Zhang Rui
     
  • SCSI VPD page b1 reports the nominal rotation speed and physical size
    of the device. Devices that conform to ATA-8 can return this information
    in words 217 and 168 of the identify data.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Jeff Garzik

    Matthew Wilcox