1. 30 Sep, 2016 16 commits
    • Yuriy Kolerov's avatar
      ARCv2: intc: Use kflag if STATUS32.IE must be reset · bc0c7ece
      Yuriy Kolerov authored
      In the end of "arc_init_IRQ" STATUS32.IE flag is going to be affected by
      "flag" instruction but "flag" never touches IE flag on ARCv2. So "kflag"
      instruction must be used instead of "flag".
      Signed-off-by: default avatarYuriy Kolerov <yuriy.kolerov@synopsys.com>
      Cc: stable@vger.kernel.org #4.2+
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      bc0c7ece
    • Vineet Gupta's avatar
      ARC: .exit.* sections can be discarded in .eh_frame regime · 99a2ca65
      Vineet Gupta authored
      We used to keep the .exit.* sections as linker would fail in final link
      due to references from .debug_frame which itself could not be discardrd
      due to the forced "write,alloc" attributes for it.
      
      |   LD      init/built-in.o
      | `.exit.text' referenced in section `.debug_frame' of arch/arc/built-in.o: defined in discarded section `.exit.text' of arch/arc/built-in.o
      | Makefile:949: recipe for target 'vmlinux' failed
      
      With .debug_frame now retired, this hack is no longer needed.
      kernel binary is now a little bit smaller as well.
      
      closes STAR 9000549913
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      99a2ca65
    • Vineet Gupta's avatar
      ARC: dw2 unwind: enable cfi pseudo ops in string lib · 86effd0d
      Vineet Gupta authored
      This uses a new set of annoations viz. ENTRY_CFI/END_CFI to enabel cfi
      ops generation.
      
      Note that we didn't change the normal ENTRY/EXIT as we don't actually
      want unwind info in the trap/exception/interrutp handlers which use
      these, as unwinder then gets confused (it keeps recursing vs. stopping).
      Semantically these are leaf routines and unwinding should stop when it
      hits those routines.
      
      Before
      ------
      
          28.52%     1.19%          9929  hackbench  libuClibc-1.0.17.so   [.] __write_nocancel
                  |
                  ---__write_nocancel
                     |--8.95%--EV_Trap
                     |           --8.25%--sys_write
                     |                     |--3.93%--sock_write_iter
           ...
                     |--2.62%--memset   <==== [LEAF entry as no unwind info]
                               ^^^^^^
      
      After
      -----
      
          29.46%     1.24%         13622  hackbench  libuClibc-1.0.17.so   [.] __write_nocancel
                  |
                  ---__write_nocancel
                     |--9.31%--EV_Trap
                     |           --8.62%--sys_write
                     |                     |--4.17%--sock_write_iter
           ...
                     |--6.19%--sys_write
                     |           --6.19%--sock_write_iter
                     |                     unix_stream_sendmsg
                     |                     |--1.62%--sock_alloc_send_pskb
                     |                     |--0.89%--sock_def_readable
                     |                     |--0.88%--_raw_spin_unlock_irqrestore
                     |                     |--0.69%--memset
                     |                     |         ^^^^^^     <==== [now in proper callframe]
                     |                     |
                     |                      --0.52%--skb_copy_datagram_from_iter
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      86effd0d
    • Vineet Gupta's avatar
      ARC: dw2 unwind: add infrastructure for adding cfi pseudo ops to asm · 5a205a32
      Vineet Gupta authored
      1. detect whether binutils supports the cfi pseudo ops
      2. define conditional macros to generate the ops
      3. define new ENTRY_CFI/END_CFI to annotate hand asm code.
         - Needed because we don't want to emit dwarf info in general ENTRY/END
           used by lowest level trap/exception/interrutp handlers as unwinder
           gets confused trying to unwind out of them. We want unwinder to
           instead stop when it hits onfo those routines
         - These provide minimal start/end cfi ops assuming routine doesn't
           touch stack memory/regs
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      5a205a32
    • Vineet Gupta's avatar
      ARC: entry: make ret_from_system_call local label · 2dad1122
      Vineet Gupta authored
      This essentially removes ENTRY() assembler annotation for this symbol
      since it didn't have a pairing END()
      
      This in ahead of introducing cfi pseudo ops in ENTRY/END which expects
      paired cfi_startproc/cfi_endproc
      
      | ../arch/arc/kernel/entry.S: Assembler messages:
      | ../arch/arc/kernel/entry.S:270: Error: previous CFI entry not closed (missing .cfi_endproc)
      | ../scripts/Makefile.build:326: recipe for target 'arch/arc/kernel/entry-arcv2.o' failed
      | make[4]: *** [arch/arc/kernel/entry-arcv2.o] Error 1
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      2dad1122
    • Vineet Gupta's avatar
      ARC: dw2 unwind: don't force dwarf 2 · 2d048642
      Vineet Gupta authored
      In .debug_frame based unwinding regime, we used to force -gdwarf-2 since
      kernel unwinder only claimed to handle dwarf 2. This changed since commit
      6d0d5060 ("ARC: dw2 unwind: Don't bail for CIE.version != 1")
      which added some support beyond dwarf 2, atleast to handle CIE != 1
      
      The ill-effect of -gdwarf-2 is that it forces generation of .debug_*
      sections, which bloats loadable modules .ko files. For the curious, this
      doesn't affect vmlinx binary since linker script discards .debug_* but
      same discard is not yet implemented for modules.
      
      So it seems we can drop the -gdwarf-2 toggle, which should not be needed
      anyways given that we now use .eh_frame based unwinding.
      
      I've verified using GNU 2016.09-engo10 that the actual unwind info is
      not different with or w/o this toggle - but the debug_* sections are
      gone for good.
      
      before
      -----
      arc-linux-readelf -S q_proc.ko-unwinding-1-eh_frame-switch | grep debug
        [15] .debug_info       PROGBITS        00000000 000300 00d08d 00 	0   0  1
        [16] .rela.debug_info  RELA            00000000 0162a0 008844 0c   I 29  15  4
        [17] .debug_abbrev     PROGBITS        00000000 00d38d 0005f8 00 	0   0  1
        [18] .debug_loc        PROGBITS        00000000 00d985 000070 00 	0   0  1
        [19] .rela.debug_loc   RELA            00000000 01eae4 0000c0 0c   I 29  18  4
        [20] .debug_aranges    PROGBITS        00000000 00d9f5 000040 00 	0   0  1
        [21] .rela.debug_arang RELA            00000000 01eba4 000030 0c   I 29  20  4
        [22] .debug_ranges     PROGBITS        00000000 00da35 000018 00 	0   0  1
        [23] .rela.debug_range RELA            00000000 01ebd4 000030 0c   I 29  22  4
        [24] .debug_line       PROGBITS        00000000 00da4d 000b5b 00 	0   0  1
        [25] .rela.debug_line  RELA            00000000 01ec04 0000cc 0c   I 29  24  4
        [26] .debug_str        PROGBITS        00000000 00e5a8 007831 01   MS 0   0  1
      
      after
      ----
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      2d048642
    • Vineet Gupta's avatar
      ARC: dw2 unwind: switch to .eh_frame based unwinding · 6716dbbd
      Vineet Gupta authored
      So finally after almost 8 years of dealing with .debug_frame, we are
      finally switching to .eh_frame. The reason being stripped kernel
      binaries had non-functional unwinder as .debug_frame was gone.
      Also, in general .eh_frame seems more common way of doing unwinding.
      
      This also folds a revert of f52e126c ("ARC: unwind: ensure that
      .debug_frame is generated (vs. .eh_frame)") to ensure that we start
      getting .eh_frame
      Reported-by: default avatarDaniel Mentz <danielmentz@google.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      6716dbbd
    • Vineet Gupta's avatar
      ARC: dw2 unwind: factor CIE specifics for .eh_frame/.debug_frame · d040876b
      Vineet Gupta authored
      This paves way for switching to .eh_frame based unwindiing
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      d040876b
    • Vineet Gupta's avatar
      94f4fb08
    • Alexey Brodkin's avatar
      arc: perf: Enable generic "cache-references" and "cache-misses" events · e0d5321f
      Alexey Brodkin authored
      We used to live with PERF_COUNT_HW_CACHE_REFERENCES and
      PERF_COUNT_HW_CACHE_REFERENCES not specified on ARC.
      
      Those events are actually aliases to 2 cache events that we do support
      and so this change sets "cache-reference" and "cache-misses" events
      in the same way as "L1-dcache-loads" and L1-dcache-load-misses.
      
      And while at it adding debug info for cache events as well as doing a
      subtle fix in HW events debug info - config value is much better
      represented by hex so we may see not only event index but as well other
      control bits set (if they exist).
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-snps-arc@lists.infradead.org
      Cc: linux-kernel@vger.kernel.org
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      e0d5321f
    • Noam Camus's avatar
      ARC: [plat-eznps] add missing atomic_fetch_xxx operations · ce0f4932
      Noam Camus authored
      Build brekeage since last changes to generic atomic operations.
      Added couple of missing macros which are now mandatory
      Signed-off-by: default avatarNoam Camus <noamca@mellanox.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      ce0f4932
    • Vineet Gupta's avatar
      ARCv2: Implement atomic64 based on LLOCKD/SCONDD instructions · ce636527
      Vineet Gupta authored
      ARCv2 ISA provides 64-bit exclusive load/stores so use them to implement
      the 64-bit atomics and elide the spinlock based generic 64-bit atomics
      
      boot tested with atomic64 self-test (and GOD bless the person who wrote
      them, I realized my inline assmebly is sloppy as hell)
      
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: linux-snps-arc@lists.infradead.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      ce636527
    • Vineet Gupta's avatar
      ARCv2: Support dynamic peripheral address space in HS38 rel 3.0 cores · 26c01c49
      Vineet Gupta authored
      HS release 3.0 provides for even more flexibility in specifying the
      volatile address space for mapping peripherals.
      
      With HS 2.1 @start was made flexible / programmable - with HS 3.0 even
      @end can be setup (vs. fixed to 0xFFFF_FFFF before).
      
      So add code to reflect that and while at it remove an unused struct
      defintion
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      26c01c49
    • Vineet Gupta's avatar
      ARCv2: identify HS38 rel 3.0 cores · f5076846
      Vineet Gupta authored
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      f5076846
    • Vineet Gupta's avatar
      ARCv2: Add support for ZeBu Emulation platform for HS cores · 9efac679
      Vineet Gupta authored
      The cool thing is that same kernel image can run on
       - nsim OSCI simulation platform
       - SDPlite FPGA setups
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      9efac679
    • Alexey Brodkin's avatar
      arc: Add "model" properly in device tree description of all boards · 618a9cd0
      Alexey Brodkin authored
      As it was discussed quite some time ago (see
      https://lkml.org/lkml/2015/11/5/862) it's a good practice to add
      "model" property in .dts. Moreover as per ePAPR "model" property is
      required and should look like "manufacturer,model" so we do here.
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Jonas Gorski <jonas.gorski@gmail.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Christian Ruppert <christian.ruppert@alitech.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      618a9cd0
  2. 19 Sep, 2016 1 commit
  3. 18 Sep, 2016 7 commits
  4. 17 Sep, 2016 5 commits
  5. 16 Sep, 2016 11 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-for-4.8-rc6' of git://people.freedesktop.org/~airlied/linux · 5fbf3e32
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Two sets of i915 fixes, one set of vc4 crasher fixes, and a couple of
        atmel fixes.
      
        Nothing too out there at this stage, though I think some people are
        holidaying so it's been quiet enough"
      
      * tag 'drm-fixes-for-4.8-rc6' of git://people.freedesktop.org/~airlied/linux:
        drm/i915: Ignore OpRegion panel type except on select machines
        Revert "drm/i915/psr: Make idle_frames sensible again"
        drm/i915: Restore lost "Initialized i915" welcome message
        drm/vc4: mark vc4_bo_cache_purge() static
        drm/i915: Add GEN7_PCODE_MIN_FREQ_TABLE_GT_RATIO_OUT_OF_RANGE to SNB
        drm/i915: disable 48bit full PPGTT when vGPU is active
        drm/i915: enable vGPU detection for all
        drm/atmel-hlcdc: Make ->reset() implementation static
        drm: atmel-hlcdc: Fix vertical scaling
        drm/vc4: Allow some more signals to be packed with uniform resets.
        drm/i915/dvo: Remove dangling call to drm_encoder_cleanup()
      5fbf3e32
    • Linus Torvalds's avatar
      Merge tag 'pm-4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 095f5cfa
      Linus Torvalds authored
      Pull power management fix from Rafael Wysocki:
       "More annotations of tracepoints in the runtime PM framework to prevent
        RCU from complaining when that code is invoked from the idle path
        (Paul McKenney)"
      
      * tag 'pm-4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM / runtime: Use _rcuidle for runtime suspend tracepoints
      095f5cfa
    • Dave Airlie's avatar
      Merge tag 'drm-vc4-fixes-2016-09-14' of https://github.com/anholt/linux into drm-fixes · 09cb5b78
      Dave Airlie authored
      This pull request brings in a fix for crashes in X on VC4.
      
      * tag 'drm-vc4-fixes-2016-09-14' of https://github.com/anholt/linux:
        drm/vc4: mark vc4_bo_cache_purge() static
        drm/vc4: Allow some more signals to be packed with uniform resets.
      09cb5b78
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2016-09-15' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 9929c097
      Dave Airlie authored
      i915 fixes from Jani.
      
      * tag 'drm-intel-fixes-2016-09-15' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Ignore OpRegion panel type except on select machines
        Revert "drm/i915/psr: Make idle_frames sensible again"
        drm/i915: Restore lost "Initialized i915" welcome message
      9929c097
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma · dd5a477c
      Linus Torvalds authored
      Pull rdma fixes from Doug Ledford:
       "Round three of 4.8 rc fixes.
      
        This is likely the last rdma pull request this cycle.  The new rxe
        driver had a few issues (you probably saw the boot bot bug report) and
        they should be addressed now.  There are a couple other fixes here,
        mainly mlx4.  There are still two outstanding issues that need
        resolved but I don't think their fix will make this kernel cycle.
      
        Summary:
      
         - Various fixes to rdmavt, ipoib, mlx5, mlx4, rxe"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma:
        IB/rdmavt: Don't vfree a kzalloc'ed memory region
        IB/rxe: Fix kmem_cache leak
        IB/rxe: Fix race condition between requester and completer
        IB/rxe: Fix duplicate atomic request handling
        IB/rxe: Fix kernel panic in udp_setup_tunnel
        IB/mlx5: Set source mac address in FTE
        IB/mlx5: Enable MAD_IFC commands for IB ports only
        IB/mlx4: Diagnostic HW counters are not supported in slave mode
        IB/mlx4: Use correct subnet-prefix in QP1 mads under SR-IOV
        IB/mlx4: Fix code indentation in QP1 MAD flow
        IB/mlx4: Fix incorrect MC join state bit-masking on SR-IOV
        IB/ipoib: Don't allow MC joins during light MC flush
        IB/rxe: fix GFP_KERNEL in spinlock context
      dd5a477c
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 008f08d6
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "Here are a couple of bugfixes for v4.8-rc.
      
        Most of them have actually been around for a while this time but for
        some reason didn't get applied early on.  The shmobile regulator fix
        is the only one that isn't completely obvious.
      
        Device tree changes:
         - archtimer interrupts must be level triggered (multiple platforms)
         - fix for USB and MMC clocks on STiH410
         - fix split DT repository in case of raspberry-pi 3
         - a new use of skeleton.dtsi on arm64 has crept in after that was
           removed.
      
        defconfig updates:
         - xilinx vdma has a new Kconfig symbol name
         - keystone requires CONFIG_NOP_USB_XCEIV since v4.8-rc1
      
        Code fixes:
         - fix regulator quirk on shmobile
         - suspend-to-ram regression on EXYNOS
      
        Maintainer updates:
         - Javier Martinez Canillas is now a reviewer for Samsung EXYNOS"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: keystone: defconfig: Fix USB configuration
        arm64: dts: Fix broken architected timer interrupt trigger
        ARM: multi_v7_defconfig: update XILINX_VDMA
        ARM64: dts: bcm: Use a symlink to R-Pi dtsi files from arch=arm
        ARM: dts: Remove use of skeleton.dtsi from bcm283x.dtsi
        ARM: dts: STiH407-family: Provide interconnect clock for consumption in ST SDHCI
        ARM: dts: STiH410: Handle interconnect clock required by EHCI/OHCI (USB)
        ARM: shmobile: fix regulator quirk for Gen2
        ARM: EXYNOS: Clear OF_POPULATED flag from PMU node in IRQ init callback
        MAINTAINERS: Add myself as reviewer for Samsung Exynos support
      008f08d6
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm · cac4662a
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
       "Most of this update are fixes primarily discovered from testing on the
        older StrongARM 1110 and PXA systems, as a result of recent interest
        from several people in these platforms:
      
         - Locomo interrupt handling incorrectly stores the handler data in
           the chip's private data slot: when Locomo is combined with an
           interrupt controller who's chip uses the chip private data, this
           leads to an oops.
      
         - SA1111 was missing a call to clk_disable() to clean up after a
           failed probe.
      
         - SA1111 and PCMCIA suspend/resume was broken:
      
           The PCMCIA "ds" layer was using the legacy bus suspend/resume
           methods, which the core PM code is no longer calling as a result of
           device_pm_check_callbacks() introduced in commit aa8e54b5
           ("PM / sleep: Go direct_complete if driver has no callbacks").
      
           SA1111 was broken due to changes to PCMCIA which makes PCMCIA
           suspend itself later than the SA1111 code expects, and resume
           before the SA1111 code has initialised access to the pcmcia
           sub-device.
      
         - the default SA1111 interrupt mask polarity got messed up when it
           was converted to use a dynamic interrupt base number for its
           interrupts.
      
         - fix platform_get_irq() error code propagation, which was causing
           problems on platforms where the interrupt may not be available at
            probe time in DT setups.
      
         - fix the lack of clock to PCMCIA code on PXA platforms, which was
           omitted in conversions of PXA to CCF.
      
         - fix an oops in the PXA PCMCIA code caused by a previous commit not
           realising that Lubbock is different from the rest of the PXA PCMCIA
           drivers.
      
         - ensure that SA1111 low-level PCMCIA drivers propagate their error
           codes to the main probe function, rather than the driver silently
           accepting a failure.
      
         - fix the sa11xx debugfs reporting of timing information, which
           always indicated zero due to the clock being a factor of 1000 out.
      
         - fix the polarity of the status change signal reported from the
           sockets.
      
        Lastly, one ARM specific commit from Stefan Agner fixing the LPAE
        cache attributes"
      
      * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: pxa/lubbock: add pcmcia clock
        ARM: locomo: fix locomo irq handling
        ARM: 8612/1: LPAE: initialize cache policy correctly
        ARM: sa1111: fix missing clk_disable()
        ARM: sa1111: fix pcmcia suspend/resume
        ARM: sa1111: fix pcmcia interrupt mask polarity
        ARM: sa1111: fix error code propagation in sa1111_probe()
        pcmcia: lubbock: fix sockets configuration
        pcmcia: sa1111: fix propagation of lowlevel board init return code
        pcmcia: soc_common: fix SS_STSCHG polarity
        pcmcia: sa11xx_base: add units to the timing information
        pcmcia: sa11xx_base: fix reporting of timing information
        pcmcia: ds: fix suspend/resume
      cac4662a
    • Colin Ian King's avatar
      IB/rdmavt: Don't vfree a kzalloc'ed memory region · e4618d40
      Colin Ian King authored
      The userspace memory region 'mr' is allocated with kzalloc in
      __rvt_alloc_mr  however it is incorrectly being freed with vfree in
      __rvt_free_mr. Fix this by using kfree to free it.
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
      Acked-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      e4618d40
    • Yonatan Cohen's avatar
      IB/rxe: Fix kmem_cache leak · c1cc72cb
      Yonatan Cohen authored
      Decrement qp reference when handling error path
      in completer to prevent kmem_cache leak.
      
      Fixes: 8700e3e7 ("Soft RoCE driver")
      Signed-off-by: default avatarYonatan Cohen <yonatanc@mellanox.com>
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      c1cc72cb
    • Yonatan Cohen's avatar
      IB/rxe: Fix race condition between requester and completer · 3050b998
      Yonatan Cohen authored
      rxe_requester() is sending a pkt with rxe_xmit_packet() and
      then calls rxe_update() to update the wqe and qp's psn values.
      But sometimes the response is received before the requester
      had time to update the wqe in which case the completer
      acts on errornous wqe values.
      This fix updates the wqe and qp before actually sending
      the request and rolls back when xmit fails.
      
      Fixes: 8700e3e7 ("Soft RoCE driver")
      Signed-off-by: default avatarYonatan Cohen <yonatanc@mellanox.com>
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      3050b998
    • Yonatan Cohen's avatar
      IB/rxe: Fix duplicate atomic request handling · 90894887
      Yonatan Cohen authored
      When handling ack for atomic opcodes like "fetch&add"
      or "cmp&swp", the method send_atomic_ack() saves the ack
      before sending it, in case it gets lost and never reach the
      requester. In which case the method duplicate_request()
      will need to find it using the duplicated request.psn.
      But send_atomic_ack() used a wrong psn value and thus
      the above ack was never found.
      This fix uses the ack.psn to locate the ack in case
      its needed.
      This fix also copies the ack packet to the skb's control buffer
      since duplicate_request() will need it when calling rxe_xmit_packet()
      
      Fixes: 8700e3e7 ("Soft RoCE driver")
      Signed-off-by: default avatarYonatan Cohen <yonatanc@mellanox.com>
      Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      90894887