20 Sep, 2016

1 commit

  • gic_raise_softirq() walks the list of cpus using for_each_cpu(), it calls
    gic_compute_target_list() which advances the iterator by the number of
    CPUs in the cluster.

    If gic_compute_target_list() reaches the last CPU it leaves the iterator
    pointing at the last CPU. This means the next time round the for_each_cpu()
    loop cpumask_next() will be called with an invalid CPU.

    This triggers a warning when built with CONFIG_DEBUG_PER_CPU_MAPS:
    [ 3.077738] GICv3: CPU1: found redistributor 1 region 0:0x000000002f120000
    [ 3.077943] CPU1: Booted secondary processor [410fd0f0]
    [ 3.078542] ------------[ cut here ]------------
    [ 3.078746] WARNING: CPU: 1 PID: 0 at ../include/linux/cpumask.h:121 gic_raise_softirq+0x12c/0x170
    [ 3.078812] Modules linked in:
    [ 3.078869]
    [ 3.078930] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.8.0-rc5+ #5188
    [ 3.078994] Hardware name: Foundation-v8A (DT)
    [ 3.079059] task: ffff80087a1a0080 task.stack: ffff80087a19c000
    [ 3.079145] PC is at gic_raise_softirq+0x12c/0x170
    [ 3.079226] LR is at gic_raise_softirq+0xa4/0x170
    [ 3.079296] pc : [] lr : [] pstate: 200001c9
    [ 3.081139] Call trace:
    [ 3.081202] Exception stack(0xffff80087a19fbe0 to 0xffff80087a19fd10)

    [ 3.082269] [] gic_raise_softirq+0x12c/0x170
    [ 3.082354] [] smp_send_reschedule+0x34/0x40
    [ 3.082433] [] resched_curr+0x50/0x88
    [ 3.082512] [] check_preempt_curr+0x60/0xd0
    [ 3.082593] [] ttwu_do_wakeup+0x20/0xe8
    [ 3.082672] [] ttwu_do_activate+0x90/0xc0
    [ 3.082753] [] try_to_wake_up+0x224/0x370
    [ 3.082836] [] default_wake_function+0x10/0x18
    [ 3.082920] [] __wake_up_common+0x5c/0xa0
    [ 3.083003] [] __wake_up_locked+0x14/0x20
    [ 3.083086] [] complete+0x40/0x60
    [ 3.083168] [] secondary_start_kernel+0x15c/0x1d0
    [ 3.083240] [] 0x808911a4
    [ 3.113401] Detected PIPT I-cache on CPU2

    Avoid updating the iterator if the next call to cpumask_next() would
    cause the for_each_cpu() loop to exit.

    There is no change to gic_raise_softirq()'s behaviour, (cpumask_next()s
    eventual call to _find_next_bit() will return early as start >= nbits),
    this patch just silences the warning.

    Fixes: 021f653791ad ("irqchip: gic-v3: Initial support for GICv3")
    Signed-off-by: James Morse
    Acked-by: Marc Zyngier
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Jason Cooper
    Link: http://lkml.kernel.org/r/1474306155-3303-1-git-send-email-james.morse@arm.com
    Signed-off-by: Thomas Gleixner

    James Morse
     

19 Sep, 2016

7 commits

  • There is no point in trying to configure the trigger of a chained
    interrupt if no trigger information has been configured. At best
    this is ignored, and at the worse this confuses the underlying
    irqchip (which is likely not to handle such a thing), and
    unnecessarily alarms the user.

    Only apply the configuration if type is not IRQ_TYPE_NONE.

    Fixes: 1e12c4a9393b ("genirq: Correctly configure the trigger on chained interrupts")
    Reported-and-tested-by: Geert Uytterhoeven
    Signed-off-by: Marc Zyngier
    Link: https://lkml.kernel.org/r/CAMuHMdVW1eTn20=EtYcJ8hkVwohaSuH_yQXrY2MGBEvZ8fpFOg@mail.gmail.com
    Link: http://lkml.kernel.org/r/1474274967-15984-1-git-send-email-marc.zyngier@arm.com
    Signed-off-by: Thomas Gleixner

    Marc Zyngier
     
  • Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are two small fixes, and one new device id, for 4.8-rc7

    The fixes solve a build error that was reported in your tree for the
    blackfin arch, and resolve an issue with a number of broken USB
    devices that reported the wrong interval rate. Included here is also
    a new device id for the usb-serial driver.

    All have been in linux-next with no reported issues"

    * tag 'usb-4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: change bInterval default to 10 ms
    usb: musb: Fix tusb6010 compile error on blackfin
    USB: serial: simple: add support for another Infineon flashloader

    Linus Torvalds
     
  • …l/git/groeck/linux-staging

    Pull uaccess fixes from Guenter Roeck:
    "Two patches fixing problems introduced with copy_from_user changes"

    * tag 'fixes-for-linus-v4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    openrisc: fix the fix of copy_from_user()
    avr32: fix 'undefined reference to `___copy_from_user'

    Linus Torvalds
     
  • Pull perf fixes from Thomas Gleixner:
    "A couple of small fixes to x86 perf drivers:

    - Measure L2 for HW_CACHE* events on AMD

    - Fix the address filter handling in the intel/pt driver

    - Handle the BTS disabling at the proper place"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/amd: Make HW_CACHE_REFERENCES and HW_CACHE_MISSES measure L2
    perf/x86/intel/pt: Do validate the size of a kernel address filter
    perf/x86/intel/pt: Fix kernel address filter's offset validation
    perf/x86/intel/pt: Fix an off-by-one in address filter configuration
    perf/x86/intel: Don't disable "intel_bts" around "intel" event batching

    Linus Torvalds
     
  • Pull SMP build fixlet from Thomas Gleixner:
    "Add a missing include in cpuhotplug.h"

    * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    cpu/hotplug: Include linux/types.h in linux/cpuhotplug.h

    Linus Torvalds
     
  • Pull irq fixes from Thomas Gleixner:
    "Two patches from Boris which address a potential deadlock in the atmel
    irq chip driver"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip/atmel-aic: Fix potential deadlock in ->xlate()
    genirq: Provide irq_gc_{lock_irqsave,unlock_irqrestore}() helpers

    Linus Torvalds
     

18 Sep, 2016

5 commits

  • Since commit acb2505d0119 ("openrisc: fix copy_from_user()"),
    copy_from_user() returns the number of bytes requested, not the
    number of bytes not copied.

    Cc: Al Viro
    Fixes: acb2505d0119 ("openrisc: fix copy_from_user()")
    Signed-off-by: Guenter Roeck

    Guenter Roeck
     
  • avr32 builds fail with:

    arch/avr32/kernel/built-in.o: In function `arch_ptrace':
    (.text+0x650): undefined reference to `___copy_from_user'
    arch/avr32/kernel/built-in.o:(___ksymtab+___copy_from_user+0x0): undefined
    reference to `___copy_from_user'
    kernel/built-in.o: In function `proc_doulongvec_ms_jiffies_minmax':
    (.text+0x5dd8): undefined reference to `___copy_from_user'
    kernel/built-in.o: In function `proc_dointvec_minmax_sysadmin':
    sysctl.c:(.text+0x6174): undefined reference to `___copy_from_user'
    kernel/built-in.o: In function `ptrace_has_cap':
    ptrace.c:(.text+0x69c0): undefined reference to `___copy_from_user'
    kernel/built-in.o:ptrace.c:(.text+0x6b90): more undefined references to
    `___copy_from_user' follow

    Fixes: 8630c32275ba ("avr32: fix copy_from_user()")
    Cc: Al Viro
    Acked-by: Havard Skinnemoen
    Acked-by: Hans-Christian Noren Egtvedt
    Signed-off-by: Guenter Roeck

    Guenter Roeck
     
  • ... by turning it into what used to be multipages counterpart

    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Pull MMC fixes from Ulf Hansson:
    "MMC host:
    - omap/omap_hsmmc: Initialize dma_slave_config to avoid random data
    - sdhci-st: Handle interconnect clock"

    * tag 'mmc-v4.8-rc6' of git://git.linaro.org/people/ulf.hansson/mmc:
    mmc: omap: Initialize dma_slave_config to avoid random data in it's fields
    mmc: omap_hsmmc: Initialize dma_slave_config to avoid random data
    mmc: sdhci-st: Handle interconnect clock
    dt-bindings: mmc: sdhci-st: Mention the discretionary "icn" clock

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    "Fixes for code merged this cycle:

    - Fix restore of SPRs upon wake up from hypervisor state loss from
    Gautham R Shenoy
    - Fix the state of root PE from Gavin Shan
    - Detach from PE on releasing PCI device from Gavin Shan
    - Fix size of NUM_CPU_FTR_KEYS on 32-bit
    - Fix missed TCE invalidations that should fallback to OPAL"

    * tag 'powerpc-4.8-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/powernv/pci: Fix missed TCE invalidations that should fallback to OPAL
    powerpc/powernv: Detach from PE on releasing PCI device
    powerpc/powernv: Fix the state of root PE
    powerpc/kernel: Fix size of NUM_CPU_FTR_KEYS on 32-bit
    powerpc/powernv: Fix restore of SPRs upon wake up from hypervisor state loss

    Linus Torvalds
     

17 Sep, 2016

22 commits

  • Pull cifs fixes from Steve French:
    "Small set of cifs fixes"

    * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
    Move check for prefix path to within cifs_get_root()
    Compare prepaths when comparing superblocks
    Fix memory leaks in cifs_do_mount()

    Linus Torvalds
     
  • Pull nfsd bugfix from Bruce Fields:
    "Fix a memory corruption bug that I introduced in 4.7"

    * tag 'nfsd-4.8-2' of git://linux-nfs.org/~bfields/linux:
    svcauth_gss: Revert 64c59a3726f2 ("Remove unnecessary allocation")

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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.

    Dave Airlie
     
  • 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

    Dave Airlie
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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 aa8e54b559479
    ("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

    Linus Torvalds
     
  • 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: Colin Ian King
    Reviewed-by: Leon Romanovsky
    Acked-by: Dennis Dalessandro
    Signed-off-by: Doug Ledford

    Colin Ian King
     
  • Decrement qp reference when handling error path
    in completer to prevent kmem_cache leak.

    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Yonatan Cohen
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Yonatan Cohen
     
  • 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: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Yonatan Cohen
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Yonatan Cohen
     
  • 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: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Yonatan Cohen
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Yonatan Cohen
     
  • Disable creation of a UDP socket for ipv6 when
    CONFIG_IPV6 is not enabeld. Since udp_sock_create6()
    returns 0 when CONFIG_IPV6 is not set

    [ 46.888632] IP: [] setup_udp_tunnel_sock+0x6/0x4f
    [ 46.891355] *pdpt = 0000000000000000 *pde = f000ff53f000ff53
    [ 46.893918] Oops: 0002 [#1] PREEMPT
    [ 46.896014] CPU: 0 PID: 1 Comm: swapper Not tainted 4.7.0-rc4-00001-g8700e3e #1
    [ 46.900280] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Debian-1.8.2-1 04/01/2014
    [ 46.904905] task: cf06c040 ti: cf05e000 task.ti: cf05e000
    [ 46.907854] EIP: 0060:[] EFLAGS: 00210246 CPU: 0
    [ 46.911137] EIP is at setup_udp_tunnel_sock+0x6/0x4f
    [ 46.914070] EAX: 00000044 EBX: 00000001 ECX: cf05fef0 EDX: ca8142e0
    [ 46.917236] ESI: c2c4505b EDI: cf05fef0 EBP: cf05fed0 ESP: cf05fed0
    [ 46.919836] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
    [ 46.922046] CR0: 80050033 CR2: 000001fc CR3: 02cec000 CR4: 000006b0
    [ 46.924550] Stack:
    [ 46.926014] cf05ff10 c1fd4657 ca8142e0 0000000a 00000000 00000000 0000b712 00000008
    [ 46.931274] 00000000 6bb5bd01 c1fd48de 00000000 00000000 cf05ff1c 00000000 00000000
    [ 46.936122] cf05ff1c c1fd4bdf 00000000 cf05ff28 c2c4507b ffffffff cf05ff88 c2bf1c74
    [ 46.942350] Call Trace:
    [ 46.944403] [] rxe_setup_udp_tunnel+0x8f/0x99
    [ 46.947689] [] ? net_to_rxe+0x4e/0x4e
    [ 46.950567] [] rxe_net_init+0xe/0xa4
    [ 46.953147] [] rxe_module_init+0x20/0x4c
    [ 46.955448] [] do_one_initcall+0x89/0x113
    [ 46.957797] [] ? set_debug_rodata+0xf/0xf
    [ 46.959966] [] ? kernel_init_freeable+0xbe/0x15b
    [ 46.962262] [] kernel_init_freeable+0xde/0x15b
    [ 46.964418] [] kernel_init+0x8/0xd0
    [ 46.966618] [] ret_from_kernel_thread+0xe/0x24
    [ 46.969592] [] ? rest_init+0x6f/0x6f

    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Yonatan Cohen
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Yonatan Cohen
     
  • Set the source mac address in the FTE when L2 specification
    is provided.

    Fixes: 038d2ef87572 ('IB/mlx5: Add flow steering support')
    Signed-off-by: Maor Gottlieb
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Maor Gottlieb
     
  • MAD_IFC command is supported only for physical functions (PF)
    and when physical port is IB. The proposed fix enforces it.

    Fixes: d603c809ef91 ("IB/mlx5: Fix decision on using MAD_IFC")
    Reported-by: David Chang
    Signed-off-by: Noa Osherovich
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Noa Osherovich
     
  • Modify the mlx4_ib_diag_counters() to avoid the following error in the
    hypervisor when the slave tries to query the hardware counters in SR-IOV
    mode.

    mlx4_core 0000:81:00.0: Unknown command:0x30 accepted from slave:1

    Fixes: 3f85f2aaabf7 ("IB/mlx4: Add diagnostic hardware counters")
    Signed-off-by: Kamal Heib
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Kamal Heib
     
  • When sending QP1 MAD packets which use a GRH, the source GID
    (which consists of the 64-bit subnet prefix, and the 64 bit port GUID)
    must be included in the packet GRH.

    For SR-IOV, a GID cache is used, since the source GID needs to be the
    slave's source GID, and not the Hypervisor's GID. This cache also
    included a subnet_prefix. Unfortunately, the subnet_prefix field in
    the cache was never initialized (to the default subnet prefix 0xfe80::0).
    As a result, this field remained all zeroes. Therefore, when SR-IOV
    was active, all QP1 packets which included a GRH had a source GID
    subnet prefix of all-zeroes.

    However, the subnet-prefix should initially be 0xfe80::0 (the default
    subnet prefix). In addition, if OpenSM modifies a port's subnet prefix,
    the new subnet prefix must be used in the GRH when sending QP1 packets.
    To fix this we now initialize the subnet prefix in the SR-IOV GID cache
    to the default subnet prefix. We update the cached value if/when OpenSM
    modifies the port's subnet prefix. We take this cached value when sending
    QP1 packets when SR-IOV is active.

    Note that the value is stored as an atomic64. This eliminates any need
    for locking when the subnet prefix is being updated.

    Note also that we depend on the FW generating the "port management change"
    event for tracking subnet-prefix changes performed by OpenSM. If running
    early FW (before 2.9.4630), subnet prefix changes will not be tracked (but
    the default subnet prefix still will be stored in the cache; therefore
    users who do not modify the subnet prefix will not have a problem).
    IF there is a need for such tracking also for early FW, we will add that
    capability in a subsequent patch.

    Fixes: 1ffeb2eb8be9 ("IB/mlx4: SR-IOV IB context objects and proxy/tunnel SQP support")
    Signed-off-by: Jack Morgenstein
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Jack Morgenstein
     
  • The indentation in the QP1 GRH flow in procedure build_mlx_header is
    really confusing. Fix it, in preparation for a commit which touches
    this code.

    Fixes: 1ffeb2eb8be9 ("IB/mlx4: SR-IOV IB context objects and proxy/tunnel SQP support")
    Signed-off-by: Jack Morgenstein
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Jack Morgenstein
     
  • Because of an incorrect bit-masking done on the join state bits, when
    handling a join request we failed to detect a difference between the
    group join state and the request join state when joining as send only
    full member (0x8). This caused the MC join request not to be sent.
    This issue is relevant only when SRIOV is enabled and SM supports
    send only full member.

    This fix separates scope bits and join states bits a nibble each.

    Fixes: b9c5d6a64358 ('IB/mlx4: Add multicast group (MCG) paravirtualization for SR-IOV')
    Signed-off-by: Alex Vesker
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Alex Vesker
     
  • This fix solves a race between light flush and on the fly joins.
    Light flush doesn't set the device to down and unset IPOIB_OPER_UP
    flag, this means that if while flushing we have a MC join in progress
    and the QP was attached to BC MGID we can have a mismatches when
    re-attaching a QP to the BC MGID.

    The light flush would set the broadcast group to NULL causing an on
    the fly join to rejoin and reattach to the BC MCG as well as adding
    the BC MGID to the multicast list. The flush process would later on
    remove the BC MGID and detach it from the QP. On the next flush
    the BC MGID is present in the multicast list but not found when trying
    to detach it because of the previous double attach and single detach.

    [18332.714265] ------------[ cut here ]------------
    [18332.717775] WARNING: CPU: 6 PID: 3767 at drivers/infiniband/core/verbs.c:280 ib_dealloc_pd+0xff/0x120 [ib_core]
    ...
    [18332.775198] Hardware name: Red Hat KVM, BIOS Bochs 01/01/2011
    [18332.779411] 0000000000000000 ffff8800b50dfbb0 ffffffff813fed47 0000000000000000
    [18332.784960] 0000000000000000 ffff8800b50dfbf0 ffffffff8109add1 0000011832f58300
    [18332.790547] ffff880226a596c0 ffff880032482000 ffff880032482830 ffff880226a59280
    [18332.796199] Call Trace:
    [18332.798015] [] dump_stack+0x63/0x8c
    [18332.801831] [] __warn+0xd1/0xf0
    [18332.805403] [] warn_slowpath_null+0x1d/0x20
    [18332.809706] [] ib_dealloc_pd+0xff/0x120 [ib_core]
    [18332.814384] [] ipoib_transport_dev_cleanup+0xfc/0x1d0 [ib_ipoib]
    [18332.820031] [] ipoib_ib_dev_cleanup+0x98/0x110 [ib_ipoib]
    [18332.825220] [] ipoib_dev_cleanup+0x2d8/0x550 [ib_ipoib]
    [18332.830290] [] ipoib_uninit+0x2f/0x40 [ib_ipoib]
    [18332.834911] [] rollback_registered_many+0x1aa/0x2c0
    [18332.839741] [] rollback_registered+0x31/0x40
    [18332.844091] [] unregister_netdevice_queue+0x48/0x80
    [18332.848880] [] ipoib_vlan_delete+0x1fb/0x290 [ib_ipoib]
    [18332.853848] [] delete_child+0x7d/0xf0 [ib_ipoib]
    [18332.858474] [] dev_attr_store+0x18/0x30
    [18332.862510] [] sysfs_kf_write+0x3a/0x50
    [18332.866349] [] kernfs_fop_write+0x120/0x170
    [18332.870471] [] __vfs_write+0x28/0xe0
    [18332.874152] [] ? percpu_down_read+0x1f/0x50
    [18332.878274] [] vfs_write+0xa2/0x1a0
    [18332.881896] [] SyS_write+0x46/0xa0
    [18332.885632] [] do_syscall_64+0x57/0xb0
    [18332.889709] [] entry_SYSCALL64_slow_path+0x25/0x25
    [18332.894727] ---[ end trace 09ebbe31f831ef17 ]---

    Fixes: ee1e2c82c245 ("IPoIB: Refresh paths instead of flushing them on SM change events")
    Signed-off-by: Alex Vesker
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford

    Alex Vesker
     
  • There is skb_clone(skb, GFP_KERNEL) in spinlock context
    in rxe_rcv_mcast_pkt().

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Alexey Khoroshilov
    Acked-by: Moni Shoua
    Signed-off-by: Doug Ledford

    Alexey Khoroshilov
     

16 Sep, 2016

5 commits

  • …johan/usb-serial into usb-linus

    Johan writes:

    USB-serial fixes for v4.8-rc7

    Here's another Infineon flashloader device id.

    Signed-off-by: Johan Hovold <johan@kernel.org>

    Greg Kroah-Hartman
     
  • …/krzk/linux into fixes

    Pull "ARM: exynos: Fixes for v4.8, secound round" from Krzysztof Kozłowski:

    1. A recent change in populating irqchip devices from Device Tree
    broke Suspend to RAM on Exynos boards due to lack of probing of
    PMU (Power Management Unit) driver. Multiple drivers attach to
    the PMU's DT node: irqchip, clock controller and PMU platform
    driver for handling suspend. The new irqchip code marked the
    PMU's DT node as OF_POPULATED but we need to attach to this
    node also PMU platform driver.

    2. Add Javier as additional reviewer for Exynos patches.

    * tag 'samsung-fixes-4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
    ARM: EXYNOS: Clear OF_POPULATED flag from PMU node in IRQ init callback
    MAINTAINERS: Add myself as reviewer for Samsung Exynos support

    Arnd Bergmann
     
  • Some full-speed mceusb infrared transceivers contain invalid endpoint
    descriptors for their interrupt endpoints, with bInterval set to 0.
    In the past they have worked out okay with the mceusb driver, because
    the driver sets the bInterval field in the descriptor to 1,
    overwriting whatever value may have been there before. However, this
    approach was never sanctioned by the USB core, and in fact it does not
    work with xHCI controllers, because they use the bInterval value that
    was present when the configuration was installed.

    Currently usbcore uses 32 ms as the default interval if the value in
    the endpoint descriptor is invalid. It turns out that these IR
    transceivers don't work properly unless the interval is set to 10 ms
    or below. To work around this mceusb problem, this patch changes the
    endpoint-descriptor parsing routine, making the default interval value
    be 10 ms rather than 32 ms.

    Signed-off-by: Alan Stern
    Tested-by: Wade Berrier
    CC:
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • We have CONFIG_BLACKFIN ifdef redefining all musb registers in
    musb_regs.h and tusb6010.h is never included causing a build
    error with blackfin-allmodconfig and COMPILE_TEST.

    Let's fix the issue by not building tusb6010 if CONFIG_BLACKFIN
    is selected.

    Reported-by: kbuild test robot
    Signed-off-by: Tony Lindgren
    Signed-off-by: Bin Liu
    Signed-off-by: Greg Kroah-Hartman

    Tony Lindgren
     
  • While the Intel PMU monitors the LLC when perf enables the
    HW_CACHE_REFERENCES and HW_CACHE_MISSES events, these events monitor
    L1 instruction cache fetches (0x0080) and instruction cache misses
    (0x0081) on the AMD PMU.

    This is extremely confusing when monitoring the same workload across
    Intel and AMD machines, since parameters like,

    $ perf stat -e cache-references,cache-misses

    measure completely different things.

    Instead, make the AMD PMU measure instruction/data cache and TLB fill
    requests to the L2 and instruction/data cache and TLB misses in the L2
    when HW_CACHE_REFERENCES and HW_CACHE_MISSES are enabled,
    respectively. That way the events measure unified caches on both
    platforms.

    Signed-off-by: Matt Fleming
    Acked-by: Peter Zijlstra
    Cc:
    Cc: Borislav Petkov
    Cc: Linus Torvalds
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1472044328-21302-1-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar

    Matt Fleming