1. 19 Jun, 2018 8 commits
    • Nicholas Piggin's avatar
      powerpc/64s/radix: Fix radix_kvm_prefetch_workaround paca access of not possible CPU · 758380b8
      Nicholas Piggin authored
      If possible CPUs are limited (e.g., by kexec), then the kvm prefetch
      workaround function can access the paca pointer for a !possible CPU.
      
      Fixes: d2e60075 ("powerpc/64: Use array of paca pointers and allocate pacas individually")
      Cc: stable@kernel.org
      Reported-by: default avatarPridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
      Tested-by: default avatarPridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      758380b8
    • Michael Ellerman's avatar
      powerpc/64s: Fix build failures with CONFIG_NMI_IPI=n · e08ecba1
      Michael Ellerman authored
      I broke the build when CONFIG_NMI_IPI=n with my recent commit to add
      arch_trigger_cpumask_backtrace(), eg:
      
        stacktrace.c:(.text+0x1b0): undefined reference to `.smp_send_safe_nmi_ipi'
      
      We should rework the CONFIG symbols here in future to avoid these
      double barrelled ifdefs but for now they fix the build.
      
      Fixes: 5cc05910 ("powerpc/64s: Wire up arch_trigger_cpumask_backtrace()")
      Reported-by: default avatarChristophe LEROY <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      e08ecba1
    • Nicholas Piggin's avatar
      powerpc/64: hard disable irqs on the panic()ing CPU · 855b6232
      Nicholas Piggin authored
      Similar to previous patches, hard disable interrupts when a CPU is
      in panic. This reduces the chance the watchdog has to interfere with
      the panic, and avoids any other type of masked interrupt being
      executed when crashing which minimises the length of the crash path.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      855b6232
    • Nicholas Piggin's avatar
      powerpc: smp_send_stop do not offline stopped CPUs · de6e5d38
      Nicholas Piggin authored
      Marking CPUs stopped by smp_send_stop as offline can cause warnings
      due to cross-CPU wakeups. This trace was noticed on a busy system
      running a sysrq+c crash test, after the injected crash:
      
      WARNING: CPU: 51 PID: 1546 at kernel/sched/core.c:1179 set_task_cpu+0x22c/0x240
      CPU: 51 PID: 1546 Comm: kworker/u352:1 Tainted: G      D
      Workqueue: mlx5e mlx5e_update_stats_work [mlx5_core]
      [...]
      NIP [c00000000017c21c] set_task_cpu+0x22c/0x240
      LR [c00000000017d580] try_to_wake_up+0x230/0x720
      Call Trace:
      [c000000001017700] runqueues+0x0/0xb00 (unreliable)
      [c00000000017d580] try_to_wake_up+0x230/0x720
      [c00000000015a214] insert_work+0x104/0x140
      [c00000000015adb0] __queue_work+0x230/0x690
      [c000003fc5007910] [c00000000015b26c] queue_work_on+0x5c/0x90
      [c0080000135fc8f8] mlx5_cmd_exec+0x538/0xcb0 [mlx5_core]
      [c008000013608fd0] mlx5_core_access_reg+0x140/0x1d0 [mlx5_core]
      [c00800001362777c] mlx5e_update_pport_counters.constprop.59+0x6c/0x90 [mlx5_core]
      [c008000013628868] mlx5e_update_ndo_stats+0x28/0x90 [mlx5_core]
      [c008000013625558] mlx5e_update_stats_work+0x68/0xb0 [mlx5_core]
      [c00000000015bcec] process_one_work+0x1bc/0x5f0
      [c00000000015ecac] worker_thread+0xac/0x6b0
      [c000000000168338] kthread+0x168/0x1b0
      [c00000000000b628] ret_from_kernel_thread+0x5c/0xb4
      
      This happens because firstly the CPU is not really offline in the
      usual sense, processes and interrupts have not been migrated away.
      Secondly smp_send_stop does not happen atomically on all CPUs, so
      one CPU can have marked itself offline, while another CPU is still
      running processes or interrupts which can affect the first CPU.
      
      Fix this by just not marking the CPU as offline. It's more like
      frozen in time, so offline does not really reflect its state properly
      anyway. There should be nothing in the crash/panic path that walks
      online CPUs and synchronously waits for them, so this change should
      not introduce new hangs.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      de6e5d38
    • Nicholas Piggin's avatar
      powerpc/64: hard disable irqs in panic_smp_self_stop · 8c1aef6a
      Nicholas Piggin authored
      Similarly to commit 855bfe0d ("powerpc: hard disable irqs in
      smp_send_stop loop"), irqs should be hard disabled by
      panic_smp_self_stop.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      8c1aef6a
    • Michael Ellerman's avatar
      powerpc/64s: Fix DT CPU features Power9 DD2.1 logic · 749a0278
      Michael Ellerman authored
      In the device tree CPU features quirk code we want to set
      CPU_FTR_POWER9_DD2_1 on all Power9s that aren't DD2.0 or earlier. But
      we got the logic wrong and instead set it on all CPUs that aren't
      Power9 DD2.0 or earlier, ie. including Power8.
      
      Fix it by making sure we're on a Power9. This isn't a bug in practice
      because the only code that checks the feature is Power9 only to begin
      with. But we'll backport it anyway to avoid confusion.
      
      Fixes: 9e9626ed ("powerpc/64s: Fix POWER9 DD2.2 and above in DT CPU features")
      Cc: stable@vger.kernel.org # v4.17+
      Reported-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Acked-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      749a0278
    • Nicholas Piggin's avatar
      powerpc/64s/radix: Fix MADV_[FREE|DONTNEED] TLB flush miss problem with THP · 02390f66
      Nicholas Piggin authored
      The patch 99baac21 ("mm: fix MADV_[FREE|DONTNEED] TLB flush miss
      problem") added a force flush mode to the mmu_gather flush, which
      unconditionally flushes the entire address range being invalidated
      (even if actual ptes only covered a smaller range), to solve a problem
      with concurrent threads invalidating the same PTEs causing them to
      miss TLBs that need flushing.
      
      This does not work with powerpc that invalidates mmu_gather batches
      according to page size. Have powerpc flush all possible page sizes in
      the range if it encounters this concurrency condition.
      
      Patch 4647706e ("mm: always flush VMA ranges affected by
      zap_page_range") does add a TLB flush for all page sizes on powerpc for
      the zap_page_range case, but that is to be removed and replaced with
      the mmu_gather flush to avoid redundant flushing. It is also thought to
      not cover other obscure race conditions:
      
      https://lkml.kernel.org/r/BD3A0EBE-ECF4-41D4-87FA-C755EA9AB6BD@gmail.com
      
      Hash does not have a problem because it invalidates TLBs inside the
      page table locks.
      Reported-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      02390f66
    • Michael Jeanson's avatar
      powerpc/e500mc: Set assembler machine type to e500mc · 69a84059
      Michael Jeanson authored
      In binutils 2.26 a new opcode for the "wait" instruction was added for the
      POWER9 and has precedence over the one specific to the e500mc. Commit
      ebf714ff ("powerpc/e500mc: Add support for the wait instruction in
      e500_idle") uses this instruction specifically on the e500mc to work around
      an erratum.
      
      This results in an invalid instruction in idle_e500 when we build for the
      e500mc on bintutils >= 2.26 with the default assembler machine type.
      
      Since multiplatform between e500 and non-e500 is not supported, set the
      assembler machine type globaly when CONFIG_PPC_E500MC=y.
      Signed-off-by: default avatarMichael Jeanson <mjeanson@efficios.com>
      Reviewed-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      CC: Paul Mackerras <paulus@samba.org>
      CC: Michael Ellerman <mpe@ellerman.id.au>
      CC: Kumar Gala <galak@kernel.crashing.org>
      CC: Vakul Garg <vakul.garg@nxp.com>
      CC: Scott Wood <swood@redhat.com>
      CC: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      CC: linuxppc-dev@lists.ozlabs.org
      CC: linux-kernel@vger.kernel.org
      CC: stable@vger.kernel.org
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      69a84059
  2. 16 Jun, 2018 8 commits
    • Linus Torvalds's avatar
      Linux 4.18-rc1 · ce397d21
      Linus Torvalds authored
      ce397d21
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20180616' of git://git.kernel.dk/linux-block · 265c5596
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "A collection of fixes that should go into -rc1. This contains:
      
         - bsg_open vs bsg_unregister race fix (Anatoliy)
      
         - NVMe pull request from Christoph, with fixes for regressions in
           this window, FC connect/reconnect path code unification, and a
           trace point addition.
      
         - timeout fix (Christoph)
      
         - remove a few unused functions (Christoph)
      
         - blk-mq tag_set reinit fix (Roman)"
      
      * tag 'for-linus-20180616' of git://git.kernel.dk/linux-block:
        bsg: fix race of bsg_open and bsg_unregister
        block: remov blk_queue_invalidate_tags
        nvme-fabrics: fix and refine state checks in __nvmf_check_ready
        nvme-fabrics: handle the admin-only case properly in nvmf_check_ready
        nvme-fabrics: refactor queue ready check
        blk-mq: remove blk_mq_tagset_iter
        nvme: remove nvme_reinit_tagset
        nvme-fc: fix nulling of queue data on reconnect
        nvme-fc: remove reinit_request routine
        blk-mq: don't time out requests again that are in the timeout handler
        nvme-fc: change controllers first connect to use reconnect path
        nvme: don't rely on the changed namespace list log
        nvmet: free smart-log buffer after use
        nvme-rdma: fix error flow during mapping request data
        nvme: add bio remapping tracepoint
        nvme: fix NULL pointer dereference in nvme_init_subsystem
        blk-mq: reinit q->tag_set_list entry only after grace period
      265c5596
    • Linus Torvalds's avatar
      Merge tag 'docs-broken-links' of git://linuxtv.org/mchehab/experimental · 5e7b9212
      Linus Torvalds authored
      Pull documentation fixes from Mauro Carvalho Chehab:
       "This solves a series of broken links for files under Documentation,
        and improves a script meant to detect such broken links (see
        scripts/documentation-file-ref-check).
      
        The changes on this series are:
      
         - can.rst: fix a footnote reference;
      
         - crypto_engine.rst: Fix two parsing warnings;
      
         - Fix a lot of broken references to Documentation/*;
      
         - improve the scripts/documentation-file-ref-check script, in order
           to help detecting/fixing broken references, preventing
           false-positives.
      
        After this patch series, only 33 broken references to doc files are
        detected by scripts/documentation-file-ref-check"
      
      * tag 'docs-broken-links' of git://linuxtv.org/mchehab/experimental: (26 commits)
        fix a series of Documentation/ broken file name references
        Documentation: rstFlatTable.py: fix a broken reference
        ABI: sysfs-devices-system-cpu: remove a broken reference
        devicetree: fix a series of wrong file references
        devicetree: fix name of pinctrl-bindings.txt
        devicetree: fix some bindings file names
        MAINTAINERS: fix location of DT npcm files
        MAINTAINERS: fix location of some display DT bindings
        kernel-parameters.txt: fix pointers to sound parameters
        bindings: nvmem/zii: Fix location of nvmem.txt
        docs: Fix more broken references
        scripts/documentation-file-ref-check: check tools/*/Documentation
        scripts/documentation-file-ref-check: get rid of false-positives
        scripts/documentation-file-ref-check: hint: dash or underline
        scripts/documentation-file-ref-check: add a fix logic for DT
        scripts/documentation-file-ref-check: accept more wildcards at filenames
        scripts/documentation-file-ref-check: fix help message
        media: max2175: fix location of driver's companion documentation
        media: v4l: fix broken video4linux docs locations
        media: dvb: point to the location of the old README.dvb-usb file
        ...
      5e7b9212
    • Linus Torvalds's avatar
      Merge tag 'fsnotify_for_v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · dbb2816f
      Linus Torvalds authored
      Pull fsnotify updates from Jan Kara:
       "fsnotify cleanups unifying handling of different watch types.
      
        This is the shortened fsnotify series from Amir with the last five
        patches pulled out. Amir has modified those patches to not change
        struct inode but obviously it's too late for those to go into this
        merge window"
      
      * tag 'fsnotify_for_v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        fsnotify: add fsnotify_add_inode_mark() wrappers
        fanotify: generalize fanotify_should_send_event()
        fsnotify: generalize send_to_group()
        fsnotify: generalize iteration of marks by object type
        fsnotify: introduce marks iteration helpers
        fsnotify: remove redundant arguments to handle_event()
        fsnotify: use type id to identify connector object type
      dbb2816f
    • Linus Torvalds's avatar
      Merge tag 'fbdev-v4.18' of git://github.com/bzolnier/linux · 644f2639
      Linus Torvalds authored
      Pull fbdev updates from Bartlomiej Zolnierkiewicz:
       "There is nothing really major here, few small fixes, some cleanups and
        dead drivers removal:
      
         - mark omapfb drivers as orphans in MAINTAINERS file (Tomi Valkeinen)
      
         - add missing module license tags to omap/omapfb driver (Arnd
           Bergmann)
      
         - add missing GPIOLIB dependendy to omap2/omapfb driver (Arnd
           Bergmann)
      
         - convert savagefb, aty128fb & radeonfb drivers to use msleep & co.
           (Jia-Ju Bai)
      
         - allow COMPILE_TEST build for viafb driver (media part was reviewed
           by media subsystem Maintainer)
      
         - remove unused MERAM support from sh_mobile_lcdcfb and shmob-drm
           drivers (drm parts were acked by shmob-drm driver Maintainer)
      
         - remove unused auo_k190xfb drivers
      
         - misc cleanups (Souptick Joarder, Wolfram Sang, Markus Elfring, Andy
           Shevchenko, Colin Ian King)"
      
      * tag 'fbdev-v4.18' of git://github.com/bzolnier/linux: (26 commits)
        fb_omap2: add gpiolib dependency
        video/omap: add module license tags
        MAINTAINERS: make omapfb orphan
        video: fbdev: pxafb: match_string() conversion fixup
        video: fbdev: nvidia: fix spelling mistake: "scaleing" -> "scaling"
        video: fbdev: fix spelling mistake: "frambuffer" -> "framebuffer"
        video: fbdev: pxafb: Convert to use match_string() helper
        video: fbdev: via: allow COMPILE_TEST build
        video: fbdev: remove unused sh_mobile_meram driver
        drm: shmobile: remove unused MERAM support
        video: fbdev: sh_mobile_lcdcfb: remove unused MERAM support
        video: fbdev: remove unused auo_k190xfb drivers
        video: omap: Improve a size determination in omapfb_do_probe()
        video: sm501fb: Improve a size determination in sm501fb_probe()
        video: fbdev-MMP: Improve a size determination in path_init()
        video: fbdev-MMP: Delete an error message for a failed memory allocation in two functions
        video: auo_k190x: Delete an error message for a failed memory allocation in auok190x_common_probe()
        video: sh_mobile_lcdcfb: Delete an error message for a failed memory allocation in two functions
        video: sh_mobile_meram: Delete an error message for a failed memory allocation in sh_mobile_meram_probe()
        video: fbdev: sh_mobile_meram: Drop SUPERH platform dependency
        ...
      644f2639
    • Linus Torvalds's avatar
      Merge branch 'afs-proc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 35773c93
      Linus Torvalds authored
      Pull AFS updates from Al Viro:
       "Assorted AFS stuff - ended up in vfs.git since most of that consists
        of David's AFS-related followups to Christoph's procfs series"
      
      * 'afs-proc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        afs: Optimise callback breaking by not repeating volume lookup
        afs: Display manually added cells in dynamic root mount
        afs: Enable IPv6 DNS lookups
        afs: Show all of a server's addresses in /proc/fs/afs/servers
        afs: Handle CONFIG_PROC_FS=n
        proc: Make inline name size calculation automatic
        afs: Implement network namespacing
        afs: Mark afs_net::ws_cell as __rcu and set using rcu functions
        afs: Fix a Sparse warning in xdr_decode_AFSFetchStatus()
        proc: Add a way to make network proc files writable
        afs: Rearrange fs/afs/proc.c to remove remaining predeclarations.
        afs: Rearrange fs/afs/proc.c to move the show routines up
        afs: Rearrange fs/afs/proc.c by moving fops and open functions down
        afs: Move /proc management functions to the end of the file
      35773c93
    • Linus Torvalds's avatar
      Merge branch 'work.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 29d6849d
      Linus Torvalds authored
      Pull compat updates from Al Viro:
       "Some biarch patches - getting rid of assorted (mis)uses of
        compat_alloc_user_space().
      
        Not much in that area this cycle..."
      
      * 'work.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        orangefs: simplify compat ioctl handling
        signalfd: lift sigmask copyin and size checks to callers of do_signalfd4()
        vmsplice(): lift importing iovec into vmsplice(2) and compat counterpart
      29d6849d
    • Linus Torvalds's avatar
      Merge branch 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · a5b729ea
      Linus Torvalds authored
      Pull aio fixes from Al Viro:
       "Assorted AIO followups and fixes"
      
      * 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        eventpoll: switch to ->poll_mask
        aio: only return events requested in poll_mask() for IOCB_CMD_POLL
        eventfd: only return events requested in poll_mask()
        aio: mark __aio_sigset::sigmask const
      a5b729ea
  3. 15 Jun, 2018 24 commits