16 Jul, 2008

4 commits


15 Jul, 2008

36 commits

  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix compile error with CONFIG_AS_CFI=n
    Documentation: document debugpat commandline option
    x86: sanitize Kconfig
    x86, suspend, acpi: correct and add comments about Big Real Mode
    x86, suspend, acpi: enter Big Real Mode

    Fixed trivial conflict in include/asm-x86/dwarf2.h due to just using
    different names for "cfi_ignore" (vs "__cfi_ignore") macro.

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (61 commits)
    ext4: Documention update for new ordered mode and delayed allocation
    ext4: do not set extents feature from the kernel
    ext4: Don't allow nonextenst mount option for large filesystem
    ext4: Enable delalloc by default.
    ext4: delayed allocation i_blocks fix for stat
    ext4: fix delalloc i_disksize early update issue
    ext4: Handle page without buffers in ext4_*_writepage()
    ext4: Add ordered mode support for delalloc
    ext4: Invert lock ordering of page_lock and transaction start in delalloc
    mm: Add range_cont mode for writeback
    ext4: delayed allocation ENOSPC handling
    percpu_counter: new function percpu_counter_sum_and_set
    ext4: Add delayed allocation support in data=writeback mode
    vfs: add hooks for ext4's delayed allocation support
    jbd2: Remove data=ordered mode support using jbd buffer heads
    ext4: Use new framework for data=ordered mode in JBD2
    jbd2: Implement data=ordered mode handling via inodes
    vfs: export filemap_fdatawrite_range()
    ext4: Fix lock inversion in ext4_ext_truncate()
    ext4: Invert the locking order of page_lock and transaction start
    ...

    Linus Torvalds
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/radeon: fixup issue with radeon and PAT support.

    Linus Torvalds
     
  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    Revert "SELinux: allow fstype unknown to policy to use xattrs if present"

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (52 commits)
    IB/mlx4: Use kzalloc() for new QPs so flags are initialized to 0
    mlx4_core: Use MOD_STAT_CFG command to get minimal page size
    RDMA/cma: Simplify locking needed for serialization of callbacks
    RDMA/addr: Keep pointer to netdevice in struct rdma_dev_addr
    RDMA/cxgb3: Fixes for zero STag
    RDMA/core: Add local DMA L_Key support
    IB/mthca: Fix check of max_send_sge for special QPs
    IB/mthca: Use round_jiffies() for catastrophic error polling timer
    IB/mthca: Remove "stop" flag for catastrophic error polling timer
    IPoIB: Double default RX/TX ring sizes
    IPoIB/cm: Reduce connected mode TX object size
    IB/ipath: Use IEEE OUI for vendor_id reported by ibv_query_device()
    IPoIB: Use dev_set_mtu() to change mtu
    IPoIB: Use rtnl lock/unlock when changing device flags
    IPoIB: Get rid of ipoib_mcast_detach() wrapper
    IPoIB: Only set Q_Key once: after joining broadcast group
    IPoIB: Remove priv->mcast_mutex
    IPoIB: Remove unused IPOIB_MCAST_STARTED code
    RDMA/cxgb3: Set rkey field for new memory windows in iwch_alloc_mw()
    RDMA/nes: Get rid of ring_doorbell parameter of nes_post_cqp_request()
    ...

    Linus Torvalds
     
  • AS arch/x86/lib/csum-copy_64.o
    arch/x86/lib/csum-copy_64.S: Assembler messages:
    arch/x86/lib/csum-copy_64.S:48: Error: Macro `ignore' was already defined
    make[1]: *** [arch/x86/lib/csum-copy_64.o] Error 1
    make: *** [arch/x86/lib] Error 2

    It appears that csum-copy_64.S and dwarf2.h both define an ignore macro.
    I would expect one of them can be renamed quite easily, unless they
    are references elsewhere.

    Caused-by-commit: 392a0fc96bd059b38564f5f8fb58327460cb5a9d
    x86: merge dwarf2 headers

    Signed-off-by: Thomas Gleixner

    Kevin Winchester
     
  • Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Set default n for MEMTEST and MTRR_SANITIZER and fix the help texts.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Ingo Molnar
     
  • This reverts commit 811f3799279e567aa354c649ce22688d949ac7a9.

    From Eric Paris:

    "Please drop this patch for now. It deadlocks on ntfs-3g. I need to
    rework it to handle fuse filesystems better. (casey was right)"

    James Morris
     
  • Current code uses kmalloc() and then just does a bitwise OR operation on
    qp->flags in create_qp_common(), which means that qp->flags may
    potentially have some unintended bits set. This patch uses kzalloc()
    and avoids further explicit clearing of structure members, which also
    shrinks the code:

    add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-65 (-65)
    function old new delta
    create_qp_common 2024 1959 -65

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • There was a bug in some versions of the mlx4 driver in
    mlx4_alloc_fmr(), which hardcoded the minimum acceptable page_shift to
    be 12. However, new ConnectX firmware can support a minimum
    page_shift of 9 (log_pg_sz of 9 returned by QUERY_DEV_LIM) -- so with
    old drivers, ib_fmr_alloc() would fail for ULPs using the device
    minimum when creating FMRs.

    To preserve firmware compatibility with released mlx4 drivers, the
    firmware will continue to return 12 as before for log_page_sz in
    QUERY_DEV_CAP for these drivers. However, to enable new drivers to
    take advantage of the available smaller page size, the mlx4 driver now
    first sets the log_pg_sz to the device minimum by setting a
    log_page_sz value to 0 via the MOD_STAT_CFG command and then reading
    the real minimum via QUERY_DEV_CAP.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: Vladimir Sokolovsky
    Signed-off-by: Roland Dreier

    Vladimir Sokolovsky
     
  • The RDMA CM has some logic in place to make sure that callbacks on a
    given CM ID are delivered to the consumer in a serialized manner.
    Specifically it has code to protect against a device removal racing
    with a running callback function.

    This patch simplifies this logic by using a mutex per ID instead of a
    wait queue and atomic variable. This means that cma_disable_remove()
    now is more properly named to cma_disable_callback(), and
    cma_enable_remove() can now be removed because it just would become a
    trivial wrapper around mutex_unlock().

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Keep a pointer to the local (src) netdevice in struct rdma_dev_addr,
    and copy it in as part of rdma_copy_addr(). Use rdma_translate_ip()
    in cma_new_conn_id() to reduce some code duplication and also make
    sure the src_dev member gets set.

    In a high-availability configuration the netdevice pointer can be used
    by the RDMA CM to align RDMA sessions to use the same links as the IP
    stack does under fail-over and route change cases.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Handling the zero STag in receive work request requires some extra
    logic in the driver:

    - Only set the QP_PRIV bit for kernel mode QPs.

    - Add a zero STag build function for recv wrs. The uP needs a PBL
    allocated and passed down in the recv WR so it can construct a HW
    PBL for the zero STag S/G entries. Note: we need to place a few
    restrictions on zero STag usage because of this:

    1) all SGEs in a recv WR must either be zero STag or not. No mixing.

    2) an individual SGE length cannot exceed 128MB for a zero-stag SGE.
    This should be OK since it's not really practical to allocate
    such a large chunk of pinned contiguous DMA mapped memory.

    - Add an optimized non-zero-STag recv wr format for kernel users.
    This is needed to optimize both zero and non-zero STag cracking in
    the recv path for kernel users.

    - Remove the iwch_ prefix from the static build functions.

    - Bump required FW version.

    Signed-off-by: Steve Wise

    Steve Wise
     
  • - Change the IB_DEVICE_ZERO_STAG flag to the transport-neutral name
    IB_DEVICE_LOCAL_DMA_LKEY, which is used by iWARP RNICs to indicate 0
    STag support and IB HCAs to indicate reserved L_Key support.

    - Add a u32 local_dma_lkey member to struct ib_device. Drivers fill
    this in with the appropriate local DMA L_Key (if they support it).

    - Fix up the drivers using this flag.

    Signed-off-by: Steve Wise
    Signed-off-by: Roland Dreier

    Steve Wise
     
  • The MLX transport requires two extra gather entries for sends (one for
    the header and one for the checksum at the end, as the comment says).
    However the code checked that max_recv_sge was not too big, instead of
    checking max_send_sge as it should have. Fix the code to check the
    correct condition.

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Exactly when the catastrophic error polling timer function runs is not
    important, so use round_jiffies() to save unnecessary wakeups.

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Since we use del_timer_sync() anyway, there's no need for an
    additional flag to tell the timer not to rearm.

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Increase IPoIB ring sizes to twice their original sizes (RX: 128->256,
    TX: 64->128) to act as a shock absorber for high traffic peaks. With
    the current settings, we have seen cases that there are many calls to
    netif_stop_queue(), which causes degradation in throughput. Also,
    larger receive buffer sizes help IPoIB in CM mode to avoid experiencing
    RNR NAK conditions due to insufficient receive buffers at the SRQ.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • Since IPoIB connected mode does not NETIF_F_SG, we only have one DMA
    mapping per send, so we don't need a mapping[] array. Define a new
    struct with a single u64 mapping member and use it for the CM tx_ring.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • The IB spe. for SubnGet(NodeInfo) and query HCA says that the vendor
    ID field should be the IEEE OUI assigned to the vendor. The ipath
    driver was returning the PCI vendor ID instead. This will affect
    applications which call ibv_query_device(). The old value was
    0x001fc1 or 0x001077, the new value is 0x001175.

    The vendor ID doesn't appear to be exported via /sys so that should
    reduce possible compatibility issues. I'm only aware of Open MPI as a
    major application which depends on this change, and they have made
    necessary adjustments.

    Signed-off-by: Ralph Campbell
    Signed-off-by: Roland Dreier

    Ralph Campbell
     
  • When the driver sets the MTU of the net device outside of its
    change_mtu method, it should make use of dev_set_mtu() instead of
    directly setting the mtu field of struct netdevice. Otherwise
    functions registered to be called upon MTU change will not get called
    (this is done through call_netdevice_notifiers() in dev_set_mtu()).

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • Use of this lock is required to synchronize changes to the netdvice's
    data structs. Also move the call to ipoib_flush_paths() after the
    modification of the netdevice flags in set_mode().

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • ipoib_mcast_detach() does nothing except call ib_detach_mcast(), so just
    use the core API in the one place that does a multicast group detach.

    add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-105 (-105)
    function old new delta
    ipoib_mcast_leave 357 319 -38
    ipoib_mcast_detach 67 - -67

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • The current code will set the Q_Key for any join of a non-sendonly
    multicast group. The operation involves a modify QP operation, which
    is fairly heavyweight, and is only really required after the join of
    the broadcast group. Fix this by adding a parameter to ipoib_mcast_attach()
    to control when the Q_Key is set.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • No need for a mutex around calls to ib_attach_mcast/ib_detach_mcast
    since these operations are synchronized at the HW driver layer.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • The IPOIB_MCAST_STARTED flag is not used at all since commit b3e2749b
    ("IPoIB: Don't drop multicast sends when they can be queued"), so
    remove it.

    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Eli Cohen
     
  • Signed-off-by: Steve Wise
    Signed-off-by: Roland Dreier

    Steve Wise
     
  • Every caller of nes_post_cqp_request() passed it NES_CQP_REQUEST_RING_DOORBELL,
    so just remove that parameter and always ring the doorbell.

    Signed-off-by: Roland Dreier
    Acked-by: Faisal Latif

    Roland Dreier
     
  • cxgb3 does not currently report the page size capabilities, and
    incorrectly reports them internally.

    This version changes the bit-shifting to a static value (per Steve's
    request).

    Signed-off-by: Jon Mason
    Acked-by: Steve Wise
    Signed-off-by: Roland Dreier

    Jon Mason
     
  • The iw_nes driver repeats the logic

    if (atomic_dec_and_test(&cqp_request->refcount)) {
    if (cqp_request->dynamic) {
    kfree(cqp_request);
    } else {
    spin_lock_irqsave(&nesdev->cqp.lock, flags);
    list_add_tail(&cqp_request->list, &nesdev->cqp_avail_reqs);
    spin_unlock_irqrestore(&nesdev->cqp.lock, flags);
    }
    }

    over and over. Wrap this up in functions nes_free_cqp_request() and
    nes_put_cqp_request() to simplify such code.

    In addition to making the source smaller and more readable, this shrinks
    the compiled code quite a bit:

    add/remove: 2/0 grow/shrink: 0/13 up/down: 164/-1692 (-1528)
    function old new delta
    nes_free_cqp_request - 147 +147
    nes_put_cqp_request - 17 +17
    nes_modify_qp 2316 2293 -23
    nes_hw_modify_qp 737 657 -80
    nes_dereg_mr 945 860 -85
    flush_wqes 501 416 -85
    nes_manage_apbvt 648 560 -88
    nes_reg_mr 1117 1026 -91
    nes_cqp_ce_handler 927 769 -158
    nes_alloc_mw 1052 884 -168
    nes_create_qp 5314 5141 -173
    nes_alloc_fmr 2212 2035 -177
    nes_destroy_cq 1097 918 -179
    nes_create_cq 2787 2598 -189
    nes_dealloc_mw 762 566 -196

    Signed-off-by: Roland Dreier
    Acked-by: Faisal Latif

    Roland Dreier
     
  • The patch tries to solve the problem of device going down and paths being
    flushed on an SM change event. The method is to mark the paths as candidates for
    refresh (by setting the new valid flag to 0), and wait for an ARP
    probe a new path record query.

    The solution requires a different and less intrusive handling of SM
    change event. For that, the second argument of the flush function
    changes its meaning from a boolean flag to a level. In most cases, SM
    failover doesn't cause LID change so traffic won't stop. In the rare
    cases of LID change, the remote host (the one that hadn't changed its
    LID) will lose connectivity until paths are refreshed. This is no
    worse than the current state. In fact, preventing the device from
    going down saves packets that otherwise would be lost.

    Signed-off-by: Moni Levy
    Signed-off-by: Moni Shoua
    Signed-off-by: Roland Dreier

    Moni Shoua
     
  • This gives ehca an autogenerated modalias and therefore enables automatic loading.

    Signed-off-by: Joachim Fenkes
    Signed-off-by: Roland Dreier

    Joachim Fenkes
     
  • Add "ipoib_use_lro" module parameter to enable LRO and an
    "ipoib_lro_max_aggr" module parameter to set the max number of packets
    to be aggregated. Make LRO controllable and LRO statistics accessible
    through ethtool.

    Signed-off-by: Vladimir Sokolovsky
    Signed-off-by: Eli Cohen
    Signed-off-by: Roland Dreier

    Vladimir Sokolovsky
     
  • Set IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK for IPoIB's UD QPs if
    supported by the underlying device. This creates an improvement of up
    to 39% in bandwidth when sending multicast packets with IPoIB, and an
    improvment of 12% in cpu usage.

    Signed-off-by: Ron Livne
    Signed-off-by: Roland Dreier

    Ron Livne