09 Mar, 2007

8 commits

  • Some platform devices are driven without driver attached, so managed
    resources can be acquired without driver attached. Make sure such
    resources are released by calling devres_release_all() in
    device_del().

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

    Tejun Heo
     
  • host->ops->host_stop() might access ports. Free ports after
    host_stop.

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

    Tejun Heo
     
  • Commit 721449bf0d51213fe3abf0ac3e3561ef9ea7827a added support for using the
    ADMA notifier bits to determine which commands to check for completion.
    However there have been reports that this causes command timeouts in certain
    cases. This is still being investigated. In addition, apparently the notifiers
    won't work if ADMA is disabled on the other port as a result of an ATAPI device
    being connected, and we don't handle this case properly.

    For now, just restore the previous behavior of checking all active commands
    to see if they are complete, without relying on the notifiers.

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

    Robert Hancock
     
  • Recently I got my hands on nVidia's MCP61 PM-AM board, and
    it contains IDE chip configured by BIOS with only primary
    channel enabled. This confuses code which probes for
    device DMA capabilities - it gets 0x60 (happy duplex
    device) from primary channel BMDMA, but 0xFF (nobody here)
    from secondary channel BMDMA. Due to this code then believes
    that chip is simplex. I do not address this problem in
    my patch, as I'm not sure how to handle this. Probably
    ata_pci_init_one should have bitmap of enabled/possible
    interfaces instead of their count, but it looks like
    quite intrusive change, and maybe we do not care - for device
    with only one channel simplex and regular DMA engines are
    same.

    But making device simplex pointed out that support for
    DMA on simplex devices is currently broken - ata_dev_xfermask
    tests whether device is simplex and if it is whether DMA
    engine was assigned to this port. If not then it strips
    out DMA bits from device. Problem is that code which assigns
    DMA engine to port in ata_set_mode first detect device
    mode and assigns DMA engine to channel only if some DMA
    capable device was found.

    And as xfermask stripped out DMA bits, host->simplex_claimed
    is always NULL with current implementation.

    By allowing DMA either if simplex_claimed is NULL or if it
    points to current port DMA can be finally used - it gets
    assigned to first port which contains any DMA capable
    device.

    Before:
    pata_amd 0000:00:06.0: version 0.2.8
    PCI: Setting latency timer of device 0000:00:06.0 to 64
    ata5: PATA max UDMA/133 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001f000 irq 14
    ata6: PATA max UDMA/133 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001f008 irq 15
    scsi4 : pata_amd
    ata5.00: ATAPI, max UDMA/66
    ata5.00: simplex DMA is claimed by other device, disabling DMA
    ata5.00: configured for PIO4
    scsi5 : pata_amd
    ata6: port disabled. ignoring.
    ata6: reset failed, giving up
    scsi 4:0:0:0: CD-ROM ATAPI DVD W DH16W1P LG12 PQ: 0 ANSI: 5

    After:
    pata_amd 0000:00:06.0: version 0.2.8
    PCI: Setting latency timer of device 0000:00:06.0 to 64
    ata5: PATA max UDMA/133 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001f000 irq 14
    ata6: PATA max UDMA/133 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001f008 irq 15
    scsi4 : pata_amd
    ata5.00: ATAPI, max UDMA/66
    ata5.00: configured for UDMA/33
    scsi5 : pata_amd
    ata6: port disabled. ignoring.
    ata6: reset failed, giving up
    scsi 4:0:0:0: CD-ROM ATAPI DVD W DH16W1P LG12 PQ: 0 ANSI: 5

    Signed-off-by: Petr Vandrovec
    Signed-off-by: Jeff Garzik

    Petr Vandrovec
     
  • A while ago I modified the libata code so that drivers can return -ENOENT
    for unknown ports not fiddle with the EH flags and print stuff directly.
    Somewhere along the line ata_piix didn't get fully converted.

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

    Alan Cox
     
  • * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
    IPoIB: Turn on interface's carrier after broadcast group is joined
    RDMA/ucma: Avoid sending reject if backlog is full
    RDMA/cxgb3: Fix MR permission problems
    RDMA/cxgb3: Don't reuse skbs that are non-linear or cloned
    RDMA/cxgb3: Squelch logging AE errors
    RDMA/cxgb3: Stop EP timer when MPA exchange is aborted by peer
    RDMA/cxgb3: Move QP to error on destroy if the state is IDLE
    RDMA/cxgb3: Fixes for "normal close" failures
    RDMA/cxgb3: Fix build on sparc64
    RDMA/cma: Initialize rdma_bind_list in cma_alloc_any_port()
    RDMA/cxgb3: Don't use mm after it's freed in iwch_mmap()
    RDMA/cxgb3: Start ep timer on a MPA reject
    IB/mthca: Fix error path in mthca_alloc_memfree()
    IB/ehca: Fix sync between completion handler and destroy cq
    IPoIB: Only handle async events for one port

    Linus Torvalds
     
  • Do netif_carrier_on() right after the IPv4 broadcast multicast group
    is joined, rather than waiting for all of the initial set of multicast
    group joins to finish. This allows at least IPv4 traffic to limp
    along on broken fabrics where not all multicast groups can be joined.

    Signed-off-by: Shirley Ma
    Signed-off-by: Roland Dreier

    Shirley Ma
     
  • For 2.6.20 it mostly used to just not work, for 2.6.21-rc it crashes, this
    seems to be down to luck (bad or good). The libata-acpi code needs to
    avoid doing PCI work on non-PCI devices. This is one hack although it's
    not pretty and perhaps there is a "right" way to check if a struct device
    * is PCI ?

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

    Alan Cox
     

08 Mar, 2007

6 commits


07 Mar, 2007

26 commits