1. 16 5月, 2018 5 次提交
  2. 24 2月, 2018 1 次提交
    • P
      rcu: Create RCU-specific workqueues with rescuers · ad7c946b
      Paul E. McKenney 提交于
      RCU's expedited grace periods can participate in out-of-memory deadlocks
      due to all available system_wq kthreads being blocked and there not being
      memory available to create more.  This commit prevents such deadlocks
      by allocating an RCU-specific workqueue_struct at early boot time, and
      providing it with a rescuer to ensure forward progress.  This uses the
      shiny new init_rescuer() function provided by Tejun (but indirectly).
      
      This commit also causes SRCU to use this new RCU-specific
      workqueue_struct.  Note that SRCU's use of workqueues never blocks them
      waiting for readers, so this should be safe from a forward-progress
      viewpoint.  Note that this moves SRCU from system_power_efficient_wq
      to a normal workqueue.  In the unlikely event that this results in
      measurable degradation, a separate power-efficient workqueue will be
      creates for SRCU.
      Reported-by: NPrateek Sood <prsood@codeaurora.org>
      Reported-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      ad7c946b
  3. 21 2月, 2018 25 次提交
    • P
      torture: Provide more sensible nreader/nwriter defaults for rcuperf · 85ba6bfe
      Paul E. McKenney 提交于
      The default values for nreader and nwriter are apparently not all that
      user-friendly, resulting in people doing scalability tests that ran all
      runs at large scale.  This commit therefore makes both the nreaders and
      nwriters module default to the number of CPUs, and adds a comment to
      rcuperf.c stating that the number of CPUs should be specified using the
      nr_cpus kernel boot parameter.  This commit also eliminates the redundant
      rcuperf scripting specification of default values for these parameters.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      85ba6bfe
    • P
      rcutorture: Record which grace-period primitives are tested · db0c1a8a
      Paul E. McKenney 提交于
      The rcu_torture_writer() function adapts to requested testing from module
      parameters as well as the function pointers in the structure referenced
      by cur_ops.  However, as long as the module parameters do not conflict
      with the function pointers, this adaptation is silent.  This silence can
      result in confusion as to exactly what was tested, which could in turn
      result in untested RCU code making its way into mainline.
      
      This commit therefore makes rcu_torture_writer() announce exactly which
      portions of RCU's API it ends up testing.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      db0c1a8a
    • P
      rcutorture: Re-enable testing of dynamic expediting · f7c0e6ad
      Paul E. McKenney 提交于
      During boot, normal grace periods are processed as expedited.  When
      rcutorture is built into the kernel, it starts during boot and thus
      detects that normal grace periods are unconditionally expedited.
      Therefore, rcutorture concludes that there is no point in trying
      to dynamically enable expediting, do it disables this aspect of testing,
      which is a bit of an overreaction to the temporary boot-time expediting.
      
      This commit therefore rechecks forced expediting throughout the test,
      enabling dynamic expediting if normal grace periods are processed
      normally at any point.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      f7c0e6ad
    • P
      rcutorture: Avoid fake-writer use of undefined primitives · eb033993
      Paul E. McKenney 提交于
      Currently the rcu_torture_fakewriter() function invokes cur_ops->sync()
      and cur_ops->exp_sync() without first checking to see if they are in
      fact non-NULL.  This results in kernel NULL pointer dereferences when
      testing RCU implementations that choose not to provide the full set of
      primitives.  Given that it is perfectly reasonable to have specialized
      RCU implementations that provide only a subset of the RCU API, this is
      a bug in rcutorture.
      
      This commit therefore makes rcu_torture_fakewriter() check function
      pointers before invoking them, thus allowing it to test subsetted
      RCU implementations.
      Reported-by: NLihao Liang <lianglihao@huawei.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      eb033993
    • P
      rcutorture: Abstract function and module names · e0d31a34
      Paul E. McKenney 提交于
      This commit moves to __func__ for function names and for KBUILD_MODNAME
      for module names, all in the name of better resilience to change.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      e0d31a34
    • P
      rcutorture: Replace multi-instance kzalloc() with kcalloc() · 68a675d4
      Paul E. McKenney 提交于
      This commit replaces array-allocation calls to kzalloc() with
      equivalent calls to kcalloc().
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      68a675d4
    • P
      rcu: Remove SRCU throttling · 6308f347
      Paul E. McKenney 提交于
      The code in srcu_gp_end() inserts a delay every 0x3ff grace periods in
      order to prevent SRCU grace-period work from consuming an entire CPU
      when there is a long sequence of expedited SRCU grace-period requests.
      However, all of SRCU's grace-period work is carried out in workqueues,
      which are in turn within kthreads, which are automatically throttled as
      needed by the scheduler.  In particular, if there is plenty of idle time,
      there is no point in throttling.
      
      This commit therefore removes the expedited SRCU grace-period throttling.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      6308f347
    • B
      srcu: Remove dead code in srcu_gp_end() · a72da917
      Byungchul Park 提交于
      Of course, compilers will optimize out a dead code. Anyway, remove
      any dead code for better readibility.
      Signed-off-by: NByungchul Park <byungchul.park@lge.com>
      Reviewed-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      a72da917
    • I
      srcu: Reduce scans of srcu_data in counter wrap check · 8ddbd883
      Ildar Ismagilov 提交于
      Currently, given a multi-level srcu_node tree, SRCU can scan the full
      set of srcu_data structures at each level when cleaning up after a grace
      period.  This, though harmless otherwise, represents pointless overhead.
      This commit therefore eliminates this overhead by scanning the srcu_data
      structures only when traversing the leaf srcu_node structures.
      Signed-off-by: NIldar Ismagilov <devix84@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      8ddbd883
    • I
      srcu: Prevent sdp->srcu_gp_seq_needed_exp counter wrap · a35d13ec
      Ildar Ismagilov 提交于
      SRCU checks each srcu_data structure's grace-period number for counter
      wrap four times per cycle by default.  This frequency guarantees that
      normal comparisons will detect potential wrap.  However, the expedited
      grace-period number is not checked.  The consquences are not too horrible
      (a failure to expedite a grace period when requested), but it would be
      good to avoid such things.  This commit therefore adds this check to
      the expedited grace-period number.
      Signed-off-by: NIldar Ismagilov <devix84@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      a35d13ec
    • P
      srcu: Abstract function name · cb4081cd
      Paul E. McKenney 提交于
      This commit moves to __func__ for function names in the name of better
      resilience to change.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      cb4081cd
    • P
      rcu: Make expedited RCU CPU selection avoid unnecessary stores · 65963d24
      Paul E. McKenney 提交于
      This commit reworks the first loop in sync_rcu_exp_select_cpus()
      to avoid doing unnecssary stores to other CPUs' rcu_data
      structures.  This speeds up that first loop by roughly a factor of
      two on an old x86 system.  In the case where the system is mostly
      idle, this loop incurs a large fraction of the overhead of the
      synchronize_rcu_expedited().  There is less benefit on busy systems
      because the overhead of the smp_call_function_single() in the second
      loop dominates in that case.
      
      However, it is not unusual to do configuration chances involving
      RCU grace periods (both expedited and normal) while the system is
      mostly idle, so this optimization is worth doing.
      
      While we are in the area, this commit also adds parentheses to arguments
      used by the for_each_leaf_node_possible_cpu() macro.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      65963d24
    • P
      rcu: Trace expedited GP delays due to transitioning CPUs · 7f5d42d0
      Paul E. McKenney 提交于
      If a CPU is transitioning to or from offline state, an expedited
      grace period may undergo a timed wait.  This timed wait can unduly
      delay grace periods, so this commit adds a trace statement to make
      it visible.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      7f5d42d0
    • P
      rcu: Add more tracing of expedited grace periods · 9a414201
      Paul E. McKenney 提交于
      This commit adds more tracing of expedited grace periods to enable
      improved debugging of slowdowns.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      9a414201
    • I
      rcu: Fix misprint in srcu_funnel_exp_start · 274afd6b
      Ildar Ismagilov 提交于
      The srcu_funnel_exp_start() function checks to see if the srcu_struct
      structure's expedited grace period counter needs updating to reflect a
      newly arrived request for an expedited SRCU grace period.  Unfortunately,
      the check is backwards, so this commit reverses the sense of the test.
      Signed-off-by: NIldar Ismagilov <devix84@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      274afd6b
    • M
      rcu: Use wrapper for lockdep asserts · a32e01ee
      Matthew Wilcox 提交于
      Commits c0b334c5 and ea9b0c8a introduced new sparse warnings
      by accessing rcu_node->lock directly and ignoring the __private
      marker.  Introduce a new wrapper and use it.  Also fix a similar problem
      in srcutree.c introduced by a3883df3.
      Signed-off-by: NMatthew Wilcox <mawilcox@microsoft.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      a32e01ee
    • L
      rcu: Remove redundant nxttail index macro define · 65518db8
      Liu, Changcheng 提交于
      RCU's nxttail has been optimized to be a rcu_segcblist, which is
      a multi-tailed linked list with macros defined for the indexes for
      each tail.  The indexes have been defined in linux/rcu_segcblist.h,
      so this commit removes the redundant definitions in kernel/rcu/tree.h.
      Signed-off-by: NLiu Changcheng <changcheng.liu@intel.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      65518db8
    • P
      rcu: Consolidate rcu.h #ifdefs · bfbd767d
      Paul E. McKenney 提交于
      The kernel/rcu/rcu.h file has a pair of consecutive #ifdefs on
      CONFIG_TINY_RCU, so this commit consolidates them, thus saving a few
      lines of code.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      bfbd767d
    • P
      rcu: More clearly identify grace-period kthread stack dump · d07aee2c
      Paul E. McKenney 提交于
      It is not always obvious that the stack dump from a starved grace-period
      kthread isn't instead that of a CPU stalling the current grace period.
      This commit therefore adds a pr_err() flagging these dumps.
      Reported-by: NPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      d07aee2c
    • P
      rcu: Remove obsolete force-quiescent-state statistics for debugfs · d62df573
      Paul E. McKenney 提交于
      The debugfs interface displayed statistics on RCU-pending checks but
      this interface has since been removed.  This commit therefore removes the
      no-longer-used rcu_state structure's ->n_force_qs_lh and ->n_force_qs_ngp
      fields along with their updates.  (Though the ->n_force_qs_ngp field
      was actually not used at all, embarrassingly enough.)
      
      If this information proves necessary in the future, the corresponding
      event traces will be added.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      d62df573
    • P
      rcu: Remove obsolete __rcu_pending() statistics for debugfs · 01c495f7
      Paul E. McKenney 提交于
      The debugfs interface displayed statistics on RCU-pending checks
      but this interface has since been removed.  This commit therefore
      removes the no-longer-used rcu_data structure's ->n_rcu_pending,
      ->n_rp_core_needs_qs, ->n_rp_report_qs, ->n_rp_cb_ready,
      ->n_rp_cpu_needs_gp, ->n_rp_gp_completed, ->n_rp_gp_started,
      ->n_rp_nocb_defer_wakeup, and ->n_rp_need_nothing fields along with
      their updates.
      
      If this information proves necessary in the future, the corresponding
      event traces will be added.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      01c495f7
    • P
      rcu: Remove obsolete callback-invocation statistics for debugfs · 62df63e0
      Paul E. McKenney 提交于
      The debugfs interface displayed statistics on RCU callback invocation but
      this interface has since been removed.  This commit therefore removes the
      no-longer-used rcu_data structure's ->n_cbs_invoked and ->n_nocbs_invoked
      fields along with their updates.
      
      If this information proves necessary in the future, the corresponding
      event traces will be added.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      62df63e0
    • P
      rcu: Remove obsolete boost statistics for debugfs · bec06785
      Paul E. McKenney 提交于
      The debugfs interface displayed statistics on RCU priority boosting,
      but this interface has since been removed.  This commit therefore
      removes the no-longer-used rcu_data structure's ->n_tasks_boosted,
      ->n_exp_boosts, and ->n_exp_boosts and their updates.
      
      If this information proves necessary in the future, the corresponding
      event traces will be added.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      bec06785
    • T
      rcu: Call touch_nmi_watchdog() while printing stall warnings · 3caa973b
      Tejun Heo 提交于
      When RCU stall warning triggers, it can print out a lot of messages
      while holding spinlocks.  If the console device is slow (e.g. an
      actual or IPMI serial console), it may end up triggering NMI hard
      lockup watchdog like the following.
      
      *** CPU printking while holding RCU spinlock
      
        PID: 4149739  TASK: ffff881a46baa880  CPU: 13  COMMAND: "CPUThreadPool8"
         #0 [ffff881fff945e48] crash_nmi_callback at ffffffff8103f7d0
         #1 [ffff881fff945e58] nmi_handle at ffffffff81020653
         #2 [ffff881fff945eb0] default_do_nmi at ffffffff81020c36
         #3 [ffff881fff945ed0] do_nmi at ffffffff81020d32
         #4 [ffff881fff945ef0] end_repeat_nmi at ffffffff81956a7e
            [exception RIP: io_serial_in+21]
            RIP: ffffffff81630e55  RSP: ffff881fff943b88  RFLAGS: 00000002
            RAX: 000000000000ca00  RBX: ffffffff8230e188  RCX: 0000000000000000
            RDX: 00000000000002fd  RSI: 0000000000000005  RDI: ffffffff8230e188
            RBP: ffff881fff943bb0   R8: 0000000000000000   R9: ffffffff820cb3c4
            R10: 0000000000000019  R11: 0000000000002000  R12: 00000000000026e1
            R13: 0000000000000020  R14: ffffffff820cd398  R15: 0000000000000035
            ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0000
        --- <NMI exception stack> ---
         #5 [ffff881fff943b88] io_serial_in at ffffffff81630e55
         #6 [ffff881fff943b90] wait_for_xmitr at ffffffff8163175c
         #7 [ffff881fff943bb8] serial8250_console_putchar at ffffffff816317dc
         #8 [ffff881fff943bd8] uart_console_write at ffffffff8162ac00
         #9 [ffff881fff943c08] serial8250_console_write at ffffffff81634691
        #10 [ffff881fff943c80] univ8250_console_write at ffffffff8162f7c2
        #11 [ffff881fff943c90] console_unlock at ffffffff810dfc55
        #12 [ffff881fff943cf0] vprintk_emit at ffffffff810dffb5
        #13 [ffff881fff943d50] vprintk_default at ffffffff810e01bf
        #14 [ffff881fff943d60] vprintk_func at ffffffff810e1127
        #15 [ffff881fff943d70] printk at ffffffff8119a8a4
        #16 [ffff881fff943dd0] print_cpu_stall_info at ffffffff810eb78c
        #17 [ffff881fff943e88] rcu_check_callbacks at ffffffff810ef133
        #18 [ffff881fff943ee8] update_process_times at ffffffff810f3497
        #19 [ffff881fff943f10] tick_sched_timer at ffffffff81103037
        #20 [ffff881fff943f38] __hrtimer_run_queues at ffffffff810f3f38
        #21 [ffff881fff943f88] hrtimer_interrupt at ffffffff810f442b
      
      *** CPU triggering the hardlockup watchdog
      
        PID: 4149709  TASK: ffff88010f88c380  CPU: 26  COMMAND: "CPUThreadPool35"
         #0 [ffff883fff1059d0] machine_kexec at ffffffff8104a874
         #1 [ffff883fff105a30] __crash_kexec at ffffffff811116cc
         #2 [ffff883fff105af0] __crash_kexec at ffffffff81111795
         #3 [ffff883fff105b08] panic at ffffffff8119a6ae
         #4 [ffff883fff105b98] watchdog_overflow_callback at ffffffff81135dbd
         #5 [ffff883fff105bb0] __perf_event_overflow at ffffffff81186866
         #6 [ffff883fff105be8] perf_event_overflow at ffffffff81192bc4
         #7 [ffff883fff105bf8] intel_pmu_handle_irq at ffffffff8100b265
         #8 [ffff883fff105df8] perf_event_nmi_handler at ffffffff8100489f
         #9 [ffff883fff105e58] nmi_handle at ffffffff81020653
        #10 [ffff883fff105eb0] default_do_nmi at ffffffff81020b94
        #11 [ffff883fff105ed0] do_nmi at ffffffff81020d32
        #12 [ffff883fff105ef0] end_repeat_nmi at ffffffff81956a7e
            [exception RIP: queued_spin_lock_slowpath+248]
            RIP: ffffffff810da958  RSP: ffff883fff103e68  RFLAGS: 00000046
            RAX: 0000000000000000  RBX: 0000000000000046  RCX: 00000000006d0000
            RDX: ffff883fff49a950  RSI: 0000000000d10101  RDI: ffffffff81e54300
            RBP: ffff883fff103e80   R8: ffff883fff11a950   R9: 0000000000000000
            R10: 000000000e5873ba  R11: 000000000000010f  R12: ffffffff81e54300
            R13: 0000000000000000  R14: ffff88010f88c380  R15: ffffffff81e54300
            ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        --- <NMI exception stack> ---
        #13 [ffff883fff103e68] queued_spin_lock_slowpath at ffffffff810da958
        #14 [ffff883fff103e70] _raw_spin_lock_irqsave at ffffffff8195550b
        #15 [ffff883fff103e88] rcu_check_callbacks at ffffffff810eed18
        #16 [ffff883fff103ee8] update_process_times at ffffffff810f3497
        #17 [ffff883fff103f10] tick_sched_timer at ffffffff81103037
        #18 [ffff883fff103f38] __hrtimer_run_queues at ffffffff810f3f38
        #19 [ffff883fff103f88] hrtimer_interrupt at ffffffff810f442b
        --- <IRQ stack> ---
      
      Avoid spuriously triggering NMI hardlockup watchdog by touching it
      from the print functions.  show_state_filter() shares the same problem
      and solution.
      
      v2: Relocate the comment to where it belongs.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      3caa973b
    • P
      rcu: Fix CPU offload boot message when no CPUs are offloaded · 3016611e
      Paul E. McKenney 提交于
      In CONFIG_RCU_NOCB_CPU=y kernels, if the boot parameters indicate that
      none of the CPUs should in fact be offloaded, the following somewhat
      obtuse message appears:
      
      	Offload RCU callbacks from CPUs: .
      
      This commit therefore makes the message at least grammatically correct
      in this case:
      
      	Offload RCU callbacks from CPUs: (none)
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      3016611e
  4. 16 2月, 2018 1 次提交
  5. 12 12月, 2017 5 次提交
    • P
      torture: Eliminate torture_runnable and perf_runnable · a2f2577d
      Paul E. McKenney 提交于
      The purpose of torture_runnable is to allow rcutorture and locktorture
      to be started and stopped via sysfs when they are built into the kernel
      (as in not compiled as loadable modules).  However, the 0444 permissions
      for both instances of torture_runnable prevent this use case from ever
      being put into practice.  Given that there have been no complaints
      about this deficiency, it is reasonable to conclude that no one actually
      makes use of this sysfs capability.  The perf_runnable module parameter
      for rcuperf is in the same situation.
      
      This commit therefore removes both torture_runnable instances as well
      as perf_runnable.
      Reported-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      a2f2577d
    • P
      rcutorture: Preempt RCU-preempt readers more vigorously · e8302739
      Paul E. McKenney 提交于
      This commit attempts to make a very rare rcutorture failure happen
      more often by increasing the fraction of RCU-preempt read-side critical
      sections that are preempted.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      e8302739
    • P
      torture: Reduce #ifdefs for preempt_schedule() · cc1321c9
      Paul E. McKenney 提交于
      This commit adds a torture_preempt_schedule() that is nothingness
      in !PREEMPT builds and is preempt_schedule() otherwise.  Then
      torture_preempt_schedule() is used to eliminate several ugly #ifdefs,
      both in rcutorture and in locktorture.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      cc1321c9
    • R
      rcu: Remove have_rcu_nocb_mask from tree_plugin.h · 84b12b75
      Rakib Mullick 提交于
      Currently have_rcu_nocb_mask is used to avoid double allocation of
      rcu_nocb_mask during boot up. Due to different representation of
      cpumask_var_t on different kernel config CPUMASK=y(or n) it was okay.
      But now we have a helper cpumask_available(), which can be utilized
      to check whether rcu_nocb_mask has been allocated or not without using
      a variable.
      
      Removing the variable also reduces vmlinux size.
      
      Unpatched version:
      text	   data	    bss	    dec	    hex	filename
      13050393	7852470	14543408	35446271	21cddff	vmlinux
      
      Patched version:
       text	   data	    bss	    dec	    hex	filename
      13050390	7852438	14543408	35446236	21cdddc	vmlinux
      Signed-off-by: NRakib Mullick <rakib.mullick@gmail.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Cc: Josh Triplett <josh@joshtriplett.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Lai Jiangshan <jiangshanlai@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      84b12b75
    • P
      rcu: Add comment giving debug strategy for double call_rcu() · efd88b02
      Paul E. McKenney 提交于
      The following statement has for some reason proven non-intuitive:
      
      	WARN_ON_ONCE(rcu_segcblist_empty(&rdp->cblist) != (count == 0));
      
      This commit therefore adds a comment that states that this warning
      usually triggers in response to a double call_rcu(), which is sort
      of like a double free.  The comment also suggests building with
      CONFIG_DEBUG_OBJECTS_RCU_HEAD=y to track down the double call_rcu().
      Reported-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      efd88b02
  6. 08 12月, 2017 1 次提交
  7. 29 11月, 2017 2 次提交