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

Commit 84585aa8 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Shrink ->dynticks_{nmi_,}nesting from long long to long



Because the ->dynticks_nesting field now only contains the process-based
nesting level instead of a value encoding both the process nesting level
and the irq "nesting" level, we no longer need a long long, even on
32-bit systems.  This commit therefore changes both the ->dynticks_nesting
and ->dynticks_nmi_nesting fields to long.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent bd2b879a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -436,14 +436,14 @@ TRACE_EVENT(rcu_fqs,
 */
TRACE_EVENT(rcu_dyntick,

	TP_PROTO(const char *polarity, long long oldnesting, long long newnesting),
	TP_PROTO(const char *polarity, long oldnesting, long newnesting),

	TP_ARGS(polarity, oldnesting, newnesting),

	TP_STRUCT__entry(
		__field(const char *, polarity)
		__field(long long, oldnesting)
		__field(long long, newnesting)
		__field(long, oldnesting)
		__field(long, newnesting)
	),

	TP_fast_assign(
@@ -452,7 +452,7 @@ TRACE_EVENT(rcu_dyntick,
		__entry->newnesting = newnesting;
	),

	TP_printk("%s %llx %llx", __entry->polarity,
	TP_printk("%s %lx %lx", __entry->polarity,
		  __entry->oldnesting, __entry->newnesting)
);

+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@
#endif /* #else #ifdef CONFIG_RCU_TRACE */

/* Offset to allow for unmatched rcu_irq_{enter,exit}(). */
#define DYNTICK_IRQ_NONIDLE	((INT_MAX / 2) + 1)
#define DYNTICK_IRQ_NONIDLE	((LONG_MAX / 2) + 1)


/*
+3 −3
Original line number Diff line number Diff line
@@ -946,7 +946,7 @@ void rcu_irq_exit_irqson(void)
 * we really have exited idle, and must do the appropriate accounting.
 * The caller must have disabled interrupts.
 */
static void rcu_eqs_exit_common(long long newval, int user)
static void rcu_eqs_exit_common(long newval, int user)
{
	RCU_TRACE(struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);)

@@ -979,7 +979,7 @@ static void rcu_eqs_exit_common(long long newval, int user)
static void rcu_eqs_exit(bool user)
{
	struct rcu_dynticks *rdtp;
	long long oldval;
	long oldval;

	lockdep_assert_irqs_disabled();
	rdtp = this_cpu_ptr(&rcu_dynticks);
@@ -1043,7 +1043,7 @@ void rcu_user_exit(void)
void rcu_nmi_enter(void)
{
	struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
	int incby = 2;
	long incby = 2;

	/* Complain about underflow. */
	WARN_ON_ONCE(rdtp->dynticks_nmi_nesting < 0);
+2 −2
Original line number Diff line number Diff line
@@ -38,8 +38,8 @@
 * Dynticks per-CPU state.
 */
struct rcu_dynticks {
	long long dynticks_nesting; /* Track irq/process nesting level. */
	int dynticks_nmi_nesting;   /* Track NMI nesting level. */
	long dynticks_nesting;      /* Track process nesting level. */
	long dynticks_nmi_nesting;  /* Track irq/NMI nesting level. */
	atomic_t dynticks;	    /* Even value for idle, else odd. */
	bool rcu_need_heavy_qs;     /* GP old, need heavy quiescent state. */
	unsigned long rcu_qs_ctr;   /* Light universal quiescent state ctr. */
+1 −1
Original line number Diff line number Diff line
@@ -1687,7 +1687,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
	}
	print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
	delta = rdp->mynode->gpnum - rdp->rcu_iw_gpnum;
	pr_err("\t%d-%c%c%c%c: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u fqs=%ld %s\n",
	pr_err("\t%d-%c%c%c%c: (%lu %s) idle=%03x/%ld/%ld softirq=%u/%u fqs=%ld %s\n",
	       cpu,
	       "O."[!!cpu_online(cpu)],
	       "o."[!!(rdp->grpmask & rdp->mynode->qsmaskinit)],