Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2727872d authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'timers/nohz-reviewed' of...

Merge branch 'timers/nohz-reviewed' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks

 into timers/nohz

Pull full dynticks timekeeping and RCU improvements from Frederic Weisbecker.

Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents 65d798f0 f98823ac
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1916,8 +1916,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
	nohz_full=	[KNL,BOOT]
			In kernels built with CONFIG_NO_HZ_FULL=y, set
			the specified list of CPUs whose tick will be stopped
			whenever possible. You need to keep at least one online
			CPU outside the range to maintain the timekeeping.
			whenever possible. The boot CPU will be forced outside
			the range to maintain the timekeeping.
			The CPUs in this range must also be included in the
			rcu_nocbs= set.

	noiotrap	[SH] Disables trapped I/O port accesses.

+7 −0
Original line number Diff line number Diff line
@@ -999,4 +999,11 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
#define kfree_rcu(ptr, rcu_head)					\
	__kfree_rcu(&((ptr)->rcu_head), offsetof(typeof(*(ptr)), rcu_head))

#ifdef CONFIG_RCU_NOCB_CPU
extern bool rcu_is_nocb_cpu(int cpu);
#else
static inline bool rcu_is_nocb_cpu(int cpu) { return false; }
#endif /* #else #ifdef CONFIG_RCU_NOCB_CPU */


#endif /* __LINUX_RCUPDATE_H */
+2 −0
Original line number Diff line number Diff line
@@ -158,8 +158,10 @@ static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; }
# endif /* !CONFIG_NO_HZ_COMMON */

#ifdef CONFIG_NO_HZ_FULL
extern void tick_nohz_init(void);
extern int tick_nohz_full_cpu(int cpu);
#else
static inline void tick_nohz_init(void) { }
static inline int tick_nohz_full_cpu(int cpu) { return 0; }
#endif

+1 −0
Original line number Diff line number Diff line
@@ -547,6 +547,7 @@ asmlinkage void __init start_kernel(void)
	idr_init_cache();
	perf_event_init();
	rcu_init();
	tick_nohz_init();
	radix_tree_init();
	/* init some links before init_ISA_irqs() */
	early_irq_init();
+3 −3
Original line number Diff line number Diff line
@@ -1695,7 +1695,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
			  struct rcu_node *rnp, struct rcu_data *rdp)
{
	/* No-CBs CPUs do not have orphanable callbacks. */
	if (is_nocb_cpu(rdp->cpu))
	if (rcu_is_nocb_cpu(rdp->cpu))
		return;

	/*
@@ -2757,10 +2757,10 @@ static void _rcu_barrier(struct rcu_state *rsp)
	 * corresponding CPU's preceding callbacks have been invoked.
	 */
	for_each_possible_cpu(cpu) {
		if (!cpu_online(cpu) && !is_nocb_cpu(cpu))
		if (!cpu_online(cpu) && !rcu_is_nocb_cpu(cpu))
			continue;
		rdp = per_cpu_ptr(rsp->rda, cpu);
		if (is_nocb_cpu(cpu)) {
		if (rcu_is_nocb_cpu(cpu)) {
			_rcu_barrier_trace(rsp, "OnlineNoCB", cpu,
					   rsp->n_barrier_done);
			atomic_inc(&rsp->barrier_cpu_count);
Loading