1. 13 7月, 2018 7 次提交
    • P
      rcu: Make rcutorture's batches-completed API use ->gp_seq · 17ef2fe9
      Paul E. McKenney 提交于
      The rcutorture test invokes rcu_batches_started(),
      rcu_batches_completed(), rcu_batches_started_bh(),
      rcu_batches_completed_bh(), rcu_batches_started_sched(), and
      rcu_batches_completed_sched() to do grace-period consistency checks,
      and rcuperf uses the _completed variants for statistics.
      These functions use ->gpnum and ->completed.  This commit therefore
      replaces them with rcu_get_gp_seq(), rcu_bh_get_gp_seq(), and
      rcu_sched_get_gp_seq(), adjusting rcutorture and rcuperf to make
      use of them.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      17ef2fe9
    • P
      rcu: Move rcu_gp_slow() to ->gp_seq · dee4f422
      Paul E. McKenney 提交于
      This commit moves rcu_gp_slow() to ->gp_seq.  This function only uses
      the grace-period number to modulate delay, so rcu_seq_ctr(rsp->gp_seq)
      gets the same effect, at least in cases where the delay is to happen
      more than four times per wrap of an unsigned long.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      dee4f422
    • P
      rcu: Introduce grace-period sequence numbers · de30ad51
      Paul E. McKenney 提交于
      This commit adds grace-period sequence numbers (->gp_seq) to the
      rcu_state, rcu_node, and rcu_data structures, and updates them.
      It also checks for consistency between rsp->gpnum and rsp->gp_seq.
      These ->gp_seq counters will eventually replace the existing ->gpnum
      and ->completed counters, allowing a single memory access to determine
      whether or not a grace period is in progress and if so, which one.
      This in turn will enable changes that will reduce ->lock contention on
      the leaf rcu_node structures.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      de30ad51
    • P
      Merge branches 'expedited.2018.07.12a', 'fixes.2018.07.12a',... · 609af1cd
      Paul E. McKenney 提交于
      Merge branches 'expedited.2018.07.12a', 'fixes.2018.07.12a', 'srcu.2018.06.25b' and 'torture.2018.06.25b' into HEAD
      
      expedited.2018.07.12a: Expedited grace-period updates.
      fixes.2018.07.12a: Pre-gp_seq miscellaneous fixes.
      srcu.2018.06.25b: SRCU updates.
      torture.2018.06.25b: Pre-gp_seq torture-test updates.
      609af1cd
    • P
      rcu: Make rcu_gp_cleanup() write only once to ->gp_flags · 18390aea
      Paul E. McKenney 提交于
      At the end of rcu_gp_cleanup(), if another grace period is needed, but
      not via rcu_accelerate_cbs(), the ->gp_flags field is written twice,
      once when making the new grace-period request, and once when clearing
      all other types of requests.  This commit therefore adds an else-clause
      to avoid this double write.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      18390aea
    • P
      rcu: Diagnostics for grace-period startup hangs · 26d950a9
      Paul E. McKenney 提交于
      This commit causes a splat if RCU is idle and a request for a new grace
      period is ignored for more than one second.  This splat normally indicates
      that some code path asked for a new grace period, but failed to wake up
      the RCU grace-period kthread.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      [ paulmck: Fix bug located by Dan Carpenter and his static checker. ]
      [ paulmck: Fix self-deadlock bug located 0day test robot. ]
      [ paulmck: Disable unless CONFIG_PROVE_RCU=y. ]
      26d950a9
    • B
      rcu: Make expedited GPs handle CPU 0 being offline · fcc63543
      Boqun Feng 提交于
      Currently, the parallelized initialization of expedited grace periods uses
      the workqueue associated with each rcu_node structure's ->grplo field.
      This works fine unless that CPU is offline.  This commit therefore uses
      the CPU corresponding to the lowest-numbered online CPU, or just queues
      the work on WORK_CPU_UNBOUND if there are no online CPUs corresponding
      to this rcu_node structure.
      
      Note that this patch uses cpu_is_offline() instead of the usual approach
      of checking bits in the rcu_node structure's ->qsmaskinitnext field.  This
      is safe because preemption is disabled across both the cpu_is_offline()
      check and the call to queue_work_on().
      Signed-off-by: NBoqun Feng <boqun.feng@gmail.com>
      [ paulmck: Disable preemption to close offline race window. ]
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      [ paulmck: Apply Peter Zijlstra feedback on CPU selection. ]
      Tested-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      fcc63543
  2. 27 6月, 2018 3 次提交
    • P
      rcu: Exclude near-simultaneous RCU CPU stall warnings · 8c42b1f3
      Paul E. McKenney 提交于
      There is a two-jiffy delay between the time that a CPU will self-report
      an RCU CPU stall warning and the time that some other CPU will report a
      warning on behalf of the first CPU.  This has worked well in the past,
      but on busy systems, it is possible for the two warnings to overlap,
      which makes interpreting them extremely difficult.
      
      This commit therefore uses a cmpxchg-based timing decision that
      allows only one report in a given one-minute period (assuming default
      stall-warning Kconfig parameters).  This approach will of course fail
      if you are seeing minute-long vCPU preemption, but in that case the
      overlapping RCU CPU stall warnings are the least of your worries.
      Reported-by: NDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      8c42b1f3
    • B
      rcu: Use the proper lockdep annotation in dump_blkd_tasks() · ce11fae8
      Boqun Feng 提交于
      Sparse reported this:
      
      | kernel/rcu/tree_plugin.h:814:9: warning: incorrect type in argument 1 (different modifiers)
      | kernel/rcu/tree_plugin.h:814:9:    expected struct lockdep_map const *lock
      | kernel/rcu/tree_plugin.h:814:9:    got struct lockdep_map [noderef] *<noident>
      
      This is caused by using vanilla lockdep annotations on rcu_node::lock,
      and that requires accessing ->lock of rcu_node directly. However we need
      to keep rcu_node::lock __private to avoid breaking its extra ordering
      guarantee. And we have a dedicated lockdep annotation for
      rcu_node::lock, so use it.
      Signed-off-by: NBoqun Feng <boqun.feng@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      ce11fae8
    • P
      rcu: Add debugging info to assertion · 4bc8d555
      Paul E. McKenney 提交于
      The WARN_ON_ONCE(rcu_preempt_blocked_readers_cgp()) in
      rcu_gp_cleanup() triggers (inexplicably, of course) every so often.
      This commit therefore extracts more information.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      4bc8d555
  3. 26 6月, 2018 10 次提交
  4. 17 6月, 2018 5 次提交
    • L
      Linux 4.18-rc1 · ce397d21
      Linus Torvalds 提交于
      ce397d21
    • L
      Merge tag 'for-linus-20180616' of git://git.kernel.dk/linux-block · 265c5596
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'docs-broken-links' of git://linuxtv.org/mchehab/experimental · 5e7b9212
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'fsnotify_for_v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · dbb2816f
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'fbdev-v4.18' of git://github.com/bzolnier/linux · 644f2639
      Linus Torvalds 提交于
      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
  5. 16 6月, 2018 15 次提交