14 Oct, 2011

6 commits

  • We require additional information to create XRC SRQs than we can
    exchange using the existing create SRQ ABI. Provide an enhanced create
    ABI for extended SRQ types.

    Based on patches by Jack Morgenstein
    and Roland Dreier

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Allow user space to create XRC domains. Because XRCDs are expected to
    be shared among multiple processes, we use inodes to identify an XRCD.

    Based on patches by Jack Morgenstein

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • XRC TGT QPs are intended to be shared among multiple users and
    processes. Allow the destruction of an XRC TGT QP to be done explicitly
    through ib_destroy_qp() or when the XRCD is destroyed.

    To support destroying an XRC TGT QP, we need to track TGT QPs with the
    XRCD. When the XRCD is destroyed, all tracked XRC TGT QPs are also
    cleaned up.

    To avoid stale reference issues, if a user is holding a reference on a
    TGT QP, we increment a reference count on the QP. The user releases the
    reference by calling ib_release_qp. This releases any access to the QP
    from a user above verbs, but allows the QP to continue to exist until
    destroyed by the XRCD.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • XRC ("eXtended reliable connected") is an IB transport that provides
    better scalability by allowing senders to specify which shared receive
    queue (SRQ) should be used to receive a message, which essentially
    allows one transport context (QP connection) to serve multiple
    destinations (as long as they share an adapter, of course).

    XRC communication is between an initiator (INI) QP and a target (TGT)
    QP. Target QPs are associated with SRQs through an XRCD. An XRC TGT QP
    behaves like a receive-only RD QP. XRC INI QPs behave similarly to RC
    QPs, except that work requests posted to an XRC INI QP must specify the
    remote SRQ that is the target of the work request.

    We define two new QP types for XRC, to distinguish between INI and TGT
    QPs, and update the core layer to support XRC QPs.

    This patch is derived from work by Jack Morgenstein

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • XRC ("eXtended reliable connected") is an IB transport that provides
    better scalability by allowing senders to specify which shared receive
    queue (SRQ) should be used to receive a message, which essentially
    allows one transport context (QP connection) to serve multiple
    destinations (as long as they share an adapter, of course).

    XRC defines SRQs that are specifically used by XRC connections. Expand
    the SRQ code to support XRC SRQs. An XRC SRQ is currently restricted to
    only XRC use according to the IB XRC Annex.

    Portions of this patch were derived from work by
    Jack Morgenstein .

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     
  • Currently, there is only a single ("basic") type of SRQ, but with XRC
    support we will add a second. Prepare for this by defining an SRQ type
    and setting all current users to IB_SRQT_BASIC.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

13 Oct, 2011

1 commit

  • XRC ("eXtended reliable connected") is an IB transport that provides
    better scalability by allowing senders to specify which shared receive
    queue (SRQ) should be used to receive a message, which essentially
    allows one transport context (QP connection) to serve multiple
    destinations (as long as they share an adapter, of course).

    A few new concepts are introduced to support this. This patch adds:

    - A new device capability flag, IB_DEVICE_XRC, which low-level
    drivers set to indicate that a device supports XRC.
    - A new object type, XRC domains (struct ib_xrcd), and new verbs
    ib_alloc_xrcd()/ib_dealloc_xrcd(). XRCDs are used to limit which
    XRC SRQs an incoming message can target.

    This patch is derived from work by Jack Morgenstein .

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

05 Oct, 2011

12 commits

  • Linus Torvalds
     
  • * git://github.com/davem330/net:
    pch_gbe: Fixed the issue on which a network freezes
    pch_gbe: Fixed the issue on which PC was frozen when link was downed.
    make PACKET_STATISTICS getsockopt report consistently between ring and non-ring
    net: xen-netback: correctly restart Tx after a VM restore/migrate
    bonding: properly stop queuing work when requested
    can bcm: fix incomplete tx_setup fix
    RDSRDMA: Fix cleanup of rds_iw_mr_pool
    net: Documentation: Fix type of variables
    ibmveth: Fix oops on request_irq failure
    ipv6: nullify ipv6_ac_list and ipv6_fl_list when creating new socket
    cxgb4: Fix EEH on IBM P7IOC
    can bcm: fix tx_setup off-by-one errors
    MAINTAINERS: tehuti: Alexander Indenbaum's address bounces
    dp83640: reduce driver noise
    ptp: fix L2 event message recognition

    Linus Torvalds
     
  • * 'fix/asoc' of git://github.com/tiwai/sound:
    ASoC: omap_mcpdm_remove cannot be __devexit
    ASoC: Fix setting update bits for WM8753_LADC and WM8753_RADC
    ASoC: use a valid device for dev_err() in Zylonite

    Linus Torvalds
     
  • * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/kms: fix channel_remap setup (v2)
    drm/radeon: Set cursor x/y to 0 when x/yorigin > 0.
    drm/radeon: Update AVIVO cursor coordinate origin before x/yorigin calculation.
    drm/radeon: Simplify cursor x/yorigin calculation.
    drm/radeon/kms: fix cursor image off-by-one error
    drm/radeon/kms: Fix logic error in DP HPD handler
    drm/radeon/kms: add retry limits for native DP aux defer
    drm/radeon/kms: fix regression in DP aux defer handling

    Linus Torvalds
     
  • * 'spi/merge' of git://git.secretlab.ca/git/linux-2.6:
    spi-topcliff-pch: Fix overrun issue
    spi-topcliff-pch: Add recovery processing in case FIFO overrun error occurs
    spi-topcliff-pch: Fix CPU read complete condition issue
    spi-topcliff-pch: Fix SSN Control issue
    spi-topcliff-pch: add tx-memory clear after complete transmitting

    Linus Torvalds
     
  • Add the ability to disable PCI-E MPS turning and using the BIOS
    configured MPS defaults. Due to the number of issues recently
    discovered on some x86 chipsets, make this the default behavior.

    Also, add the option for peer to peer DMA MPS configuration. Peer to
    peer DMA is outside the scope of this patch, but MPS configuration could
    prevent it from working by having the MPS on one root port different
    than the MPS on another. To work around this, simply make the system
    wide MPS the smallest possible value (128B).

    Signed-off-by: Jon Mason
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Linus Torvalds

    Jon Mason
     
  • Most asics just use the hw default value which requires
    no explicit programming. For those that need a different
    value, the vbios will program it properly. As such,
    there's no need to program these registers explicitly
    in the driver. Changing MC_SHARED_CHREMAP requires a reload
    of all data in vram otherwise its contents will be scambled.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=40103

    v2: drop now unused channel_remap functions.

    Signed-off-by: Alex Deucher
    Reviewed-by: Michel Dänzer
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • We found that adding load, Rx data sometimes drops.(with DMA transfer mode)
    The cause is that before starting Rx-DMA processing, Tx-DMA processing starts.
    This causes FIFO overrun occurs.

    This patch fixes the issue by modifying FIFO tx-threshold and DMA descriptor
    size like below.

    Current this patch
    Rx-descriptor 4Byte+12Byte*341 --> 12Byte*340-4Byte-12Byte
    Rx-threshold (Not modified)
    Tx-descriptor 4Byte+12Byte*341 --> 16Byte-12Byte*340
    Rx-threshold 12Byte --> 2Byte

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Grant Likely

    Tomoya MORINAGA
     
  • Add recovery processing in case FIFO overrun error occurs with DMA transfer mode.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Grant Likely

    Tomoya MORINAGA
     
  • We found Rx data sometimes drops.(with non-DMA transfer mode)
    The cause is read complete condition is not true.

    This patch fixes the issue.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Grant Likely

    Tomoya MORINAGA
     
  • During processing 1 command/data series,
    SSN should keep LOW.
    However, currently, SSN becomes HIGH.
    This patch fixes the issue.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Grant Likely

    Tomoya MORINAGA
     
  • Currently, in case of reading date from SPI flash,
    command is sent twice.
    The cause is that tx-memory clear processing is missing .
    This patch adds the tx-momory clear processing.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Grant Likely

    Tomoya MORINAGA
     

04 Oct, 2011

17 commits

  • Commit 2a7fade7e03 ("hwmon: lis3: Power on corrections") caused a
    regression on HP laptops with 8bit chip. Writing CTRL2_BOOT_8B bit seems
    clearing the BIOS setup, and no proper interrupt for DriveGuard will be
    triggered any more.

    Since the init code there is basically only for embedded devices, put a
    pdata check so that the problematic initialization will be skipped for
    hp_accel stuff.

    Signed-off-by: Takashi Iwai
    Cc: Eric Piel
    Cc: Samu Onkalo
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Takashi Iwai
     
  • * 'hwmon-for-linus' of git://github.com/groeck/linux:
    hwmon: (coretemp) Avoid leaving around dangling pointer
    hwmon: (coretemp) Fixup platform device ID change

    Linus Torvalds
     
  • * git://github.com/davem330/ide:
    ide-disk: Fix request requeuing

    Linus Torvalds
     
  • * 'btrfs-3.0' of git://github.com/chrismason/linux:
    Btrfs: force a page fault if we have a shorty copy on a page boundary

    Linus Torvalds
     
  • Simon Kirby reported that on his RAID setup with idedisk underneath
    the box OOMs after a couple of days of runtime. Running with
    CONFIG_DEBUG_KMEMLEAK pointed to idedisk_prep_fn() which unconditionally
    allocates an ide_cmd struct. However, ide_requeue_and_plug() can be
    called more than once per request, either from the request issue or the
    IRQ handler path and do blk_peek_request() ends up in idedisk_prep_fn()
    repeatedly, allocating a struct ide_cmd everytime and "forgetting" the
    previous pointer.

    Make sure the code reuses the old allocated chunk.

    Reported-and-tested-by: Simon Kirby
    Cc: [ 39.x, 3.0.x ]
    Link: http://marc.info/?l=linux-kernel&m=131667641517919
    Link: http://lkml.kernel.org/r/20110922072643.GA27232@hostway.ca
    Signed-off-by: Borislav Petkov
    Signed-off-by: David S. Miller

    Borislav Petkov
     
  • The pch_gbe driver has an issue which a network stops,
    when receiving traffic is high.
    In the case, The link down and up are necessary to return a network.

    This patch fixed this issue.

    Signed-off-by: Toshiharu Okada
    Signed-off-by: David S. Miller

    Toshiharu Okada
     
  • When a link was downed during network use,
    there is an issue on which PC freezes.

    This patch fixed this issue.

    Signed-off-by: Toshiharu Okada
    Signed-off-by: David S. Miller

    Toshiharu Okada
     
  • This is a minor change.

    Up until kernel 2.6.32, getsockopt(fd, SOL_PACKET, PACKET_STATISTICS,
    ...) would return total and dropped packets since its last invocation. The
    introduction of socket queue overflow reporting [1] changed drop
    rate calculation in the normal packet socket path, but not when using a
    packet ring. As a result, the getsockopt now returns different statistics
    depending on the reception method used. With a ring, it still returns the
    count since the last call, as counts are incremented in tpacket_rcv and
    reset in getsockopt. Without a ring, it returns 0 if no drops occurred
    since the last getsockopt and the total drops over the lifespan of
    the socket otherwise. The culprit is this line in packet_rcv, executed
    on a drop:

    drop_n_acct:
    po->stats.tp_drops = atomic_inc_return(&sk->sk_drops);

    As it shows, the new drop number it taken from the socket drop counter,
    which is not reset at getsockopt. I put together a small example
    that demonstrates the issue [2]. It runs for 10 seconds and overflows
    the queue/ring on every odd second. The reported drop rates are:
    ring: 16, 0, 16, 0, 16, ...
    non-ring: 0, 15, 0, 30, 0, 46, 0, 60, 0 , 74.

    Note how the even ring counts monotonically increase. Because the
    getsockopt adds tp_drops to tp_packets, total counts are similarly
    reported cumulatively. Long story short, reinstating the original code, as
    the below patch does, fixes the issue at the cost of additional per-packet
    cycles. Another solution that does not introduce per-packet overhead
    is be to keep the current data path, record the value of sk_drops at
    getsockopt() at call N in a new field in struct packetsock and subtract
    that when reporting at call N+1. I'll be happy to code that, instead,
    it's just more messy.

    [1] http://patchwork.ozlabs.org/patch/35665/
    [2] http://kernel.googlecode.com/files/test-packetsock-getstatistics.c

    Signed-off-by: Willem de Bruijn
    Signed-off-by: David S. Miller

    Willem de Bruijn
     
  • If a VM is saved and restored (or migrated) the netback driver will no
    longer process any Tx packets from the frontend. xenvif_up() does not
    schedule the processing of any pending Tx requests from the front end
    because the carrier is off. Without this initial kick the frontend
    just adds Tx requests to the ring without raising an event (until the
    ring is full).

    This was caused by 47103041e91794acdbc6165da0ae288d844c820b (net:
    xen-netback: convert to hw_features) which reordered the calls to
    xenvif_up() and netif_carrier_on() in xenvif_connect().

    Signed-off-by: David Vrabel
    Cc: Ian Campbell
    Acked-by: Ian Campbell
    Signed-off-by: David S. Miller

    David Vrabel
     
  • During a test where a pair of bonding interfaces using ARP monitoring
    were both brought up and torn down (with an rmmod) repeatedly, a panic
    in the timer code was noticed. I tracked this down and determined that
    any of the bonding functions that ran as workqueue handlers and requeued
    more work might not properly exit when the module was removed.

    There was a flag protected by the bond lock called kill_timers that is
    set when the interface goes down or the module is removed, but many of
    the functions that monitor link status now unlock the bond lock to take
    rtnl first. There is a chance that another CPU running the rmmod could
    get the lock and set kill_timers after the first check has passed.

    This patch does not allow any function to queue work that will make
    itself run unless kill_timers is not set. I also noticed while doing
    this work that bond_resend_igmp_join_requests did not have a check for
    kill_timers, so I added the needed call there as well.

    Signed-off-by: Andy Gospodarek
    Reported-by: Liang Zheng
    Signed-off-by: David S. Miller

    Andy Gospodarek
     
  • Apart from the obvious cleanup, this should make the line

    cursor_end = x - xorigin + w;

    correct now.

    Signed-off-by: Michel Dänzer
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Michel Dänzer
     
  • Fixes cursor disappearing prematurely when moving off a top/left edge which
    is not located at the desktop top/left edge.

    Signed-off-by: Michel Dänzer
    Cc: stable@kernel.org
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Michel Dänzer
     
  • Signed-off-by: Michel Dänzer
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Michel Dänzer
     
  • The mouse cursor hotspot calculation when the cursor is partially off the
    top or left side of the screen was off by one.

    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=41158

    Signed-off-by: Nicholas Miell
    Reviewed-by: Michel Dänzer
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Nicholas Miell
     
  • Only disable the pipe if the monitor is physically
    disconnected. The previous logic also disabled the
    pipe if the link was trained.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=41248

    Signed-off-by: Alex Deucher
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • The previous code could potentially loop forever. Limit
    the number of DP aux defer retries to 4 for native aux
    transactions, same as i2c over aux transactions.

    Noticed by: Brad Campbell

    Signed-off-by: Alex Deucher
    Cc: Brad Campbell
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • An incorrect ordering in the error checking code lead
    to DP aux defer being skipped in the aux native write
    path. Move the bytes transferred check (ret == 0)
    below the defer check.

    Tracked down by: Brad Campbell

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=41121

    Signed-off-by: Alex Deucher
    Cc: Brad Campbell
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     

03 Oct, 2011

4 commits