Home
last modified time | relevance | path

Searched refs:gp_seq (Results 1 – 17 of 17) sorted by relevance

/linux/include/trace/events/
H A Drcu.h71 TP_PROTO(const char *rcuname, unsigned long gp_seq, const char *gpevent),
73 TP_ARGS(rcuname, gp_seq, gpevent),
77 __field(long, gp_seq)
83 __entry->gp_seq = (long)gp_seq;
88 __entry->rcuname, __entry->gp_seq, __entry->gpevent)
109 TP_PROTO(const char *rcuname, unsigned long gp_seq,
113 TP_ARGS(rcuname, gp_seq, gp_seq_req, level, grplo, grphi, gpevent),
117 __field(long, gp_seq)
127 __entry->gp_seq = (long)gp_seq;
136 __entry->rcuname, (long)__entry->gp_seq, (long)__entry->gp_seq_req, __entry->level,
[all …]
/linux/kernel/rcu/
H A Dtiny.c35 unsigned long gp_seq; /* Grace-period counter. */ member
42 .gp_seq = 0 - 300UL,
61 WRITE_ONCE(rcu_ctrlblk.gp_seq, rcu_ctrlblk.gp_seq + 2); in rcu_qs()
148 WRITE_ONCE(rcu_ctrlblk.gp_seq, rcu_ctrlblk.gp_seq + 2); in synchronize_rcu()
202 return READ_ONCE(rcu_ctrlblk.gp_seq); in get_state_synchronize_rcu()
212 unsigned long gp_seq = get_state_synchronize_rcu(); in start_poll_synchronize_rcu() local
218 return gp_seq; in start_poll_synchronize_rcu()
229 return oldstate == RCU_GET_STATE_COMPLETED || READ_ONCE(rcu_ctrlblk.gp_seq) != oldstate; in poll_state_synchronize_rcu()
236 return READ_ONCE(rcu_ctrlblk.gp_seq) & 0xffffULL; in rcutorture_gather_gp_seqs()
H A Dtree.c95 .gp_seq = (0UL - 300UL) << RCU_SEQ_CTR_SHIFT,
222 return rcu_seq_state(rcu_seq_current(&rcu_state.gp_seq)); in rcu_gp_in_progress()
523 return READ_ONCE(rcu_state.gp_seq); in rcu_get_gp_seq()
550 void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq) in rcutorture_get_gp_data() argument
553 *gp_seq = rcu_seq_current(&rcu_state.gp_seq); in rcutorture_get_gp_data()
560 return ((READ_ONCE(rcu_state.gp_seq) & 0xffffULL) << 40) | in rcutorture_gather_gp_seqs()
805 if (ULONG_CMP_LT(rcu_seq_current(&rdp->gp_seq) + seq_gpwrap_lag, in rcu_gpnum_ovf()
806 rnp->gp_seq)) { in rcu_gpnum_ovf()
810 if (ULONG_CMP_LT(rdp->rcu_iw_gp_seq + ULONG_MAX / 4, rnp->gp_seq)) in rcu_gpnum_ovf()
811 rdp->rcu_iw_gp_seq = rnp->gp_seq + ULONG_MAX / 4; in rcu_gpnum_ovf()
[all …]
H A Dtree_stall.h258 rdp->rcu_iw_gp_seq = rnp->gp_seq; in rcu_iw_handler()
396 static void rcu_dump_cpu_stacks(unsigned long gp_seq) in rcu_dump_cpu_stacks() argument
405 if (gp_seq != data_race(rcu_state.gp_seq)) { in rcu_dump_cpu_stacks()
488 if (rsrp->gp_seq != rdp->gp_seq) in print_cpu_stat_info()
535 ticks_value = rcu_seq_ctr(rcu_state.gp_seq - rdp->gp_seq); in print_cpu_stall_info()
542 delta = rcu_seq_ctr(rdp->mynode->gp_seq - rdp->rcu_iw_gp_seq); in print_cpu_stall_info()
579 (long)rcu_seq_current(&rcu_state.gp_seq), in rcu_check_gp_kthread_starvation()
622 (long)rcu_seq_current(&rcu_state.gp_seq), in rcu_check_gp_kthread_expired_fqs_timer()
631 static void print_other_cpu_stall(unsigned long gp_seq, unsigned long gps) in print_other_cpu_stall() argument
674 (long)rcu_seq_current(&rcu_state.gp_seq), totqlen, in print_other_cpu_stall()
[all …]
H A Drcu.h548 void rcu_tasks_get_gp_data(int *flags, unsigned long *gp_seq);
553 void rcu_tasks_rude_get_gp_data(int *flags, unsigned long *gp_seq);
585 void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq);
595 static inline void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq) in rcutorture_get_gp_data() argument
598 *gp_seq = 0; in rcutorture_get_gp_data()
620 unsigned long *gp_seq) in srcutorture_get_gp_data() argument
623 *gp_seq = sp->srcu_idx; in srcutorture_get_gp_data()
629 unsigned long *gp_seq);
H A Drcu_segcblist.c241 BUILD_BUG_ON(RCU_NEXT_TAIL + 1 != ARRAY_SIZE(rsclp->gp_seq)); in rcu_segcblist_init()
242 BUILD_BUG_ON(ARRAY_SIZE(rsclp->tails) != ARRAY_SIZE(rsclp->gp_seq)); in rcu_segcblist_init()
316 *lp = rsclp->gp_seq[RCU_WAIT_TAIL]; in rcu_segcblist_nextgp()
482 if (ULONG_CMP_LT(seq, rsclp->gp_seq[i])) in rcu_segcblist_advance()
507 rsclp->gp_seq[j] = rsclp->gp_seq[i]; in rcu_segcblist_advance()
544 ULONG_CMP_LT(rsclp->gp_seq[i], seq)) in rcu_segcblist_accelerate()
584 rsclp->gp_seq[i] = seq; in rcu_segcblist_accelerate()
H A Dtree_plugin.h256 WARN_ON_ONCE(rnp->completedqs == rnp->gp_seq); in rcu_preempt_ctxt_queue()
303 __this_cpu_read(rcu_data.gp_seq), in rcu_qs()
352 ? rnp->gp_seq in rcu_note_context_switch()
353 : rcu_seq_snap(&rnp->gp_seq)); in rcu_note_context_switch()
537 WARN_ON_ONCE(rnp->completedqs == rnp->gp_seq && in rcu_preempt_deferred_qs_irqrestore()
544 rnp->gp_seq, t->pid); in rcu_preempt_deferred_qs_irqrestore()
565 rnp->gp_seq, in rcu_preempt_deferred_qs_irqrestore()
798 rnp->gp_seq, t->pid); in rcu_preempt_check_blocked_tasks()
878 (long)READ_ONCE(rnp->gp_seq), (long)rnp->completedqs); in dump_blkd_tasks()
956 __this_cpu_read(rcu_data.gp_seq), TPS("cpuqs")); in rcu_qs()
H A Dtree.h45 unsigned long gp_seq; /* Track rsp->gp_seq. */ member
167 unsigned long gp_seq; /* Track rdp->gp_seq counter */ member
191 unsigned long gp_seq; /* Track rsp->gp_seq counter. */ member
361 unsigned long gp_seq ____cacheline_internodealigned_in_smp;
H A Dtree_nocb.h184 return &rnp->nocb_gp_wq[rcu_seq_ctr(rnp->gp_seq) & 0x1]; in rcu_nocb_gp_get()
475 rcu_seq_done(&rdp->mynode->gp_seq, cur_gp_seq)) { in rcu_nocb_try_bypass()
711 rcu_seq_done(&rnp->gp_seq, cur_gp_seq))) { in nocb_gp_wait()
785 rcu_seq_done(&rnp->gp_seq, wait_gp_seq) || in nocb_gp_wait()
899 rcu_seq_done(&rnp->gp_seq, cur_gp_seq) && in nocb_cb_wait()
1549 sprintf(bufw, "%ld(%ld)", rsclp->seglen[RCU_WAIT_TAIL], rsclp->gp_seq[RCU_WAIT_TAIL]); in show_rcu_nocb_state()
1551 rsclp->gp_seq[RCU_NEXT_READY_TAIL]); in show_rcu_nocb_state()
H A Drcutorture.c421 void (*get_gp_data)(int *flags, unsigned long *gp_seq);
718 static void srcu_get_gp_data(int *flags, unsigned long *gp_seq) in srcu_get_gp_data() argument
720 srcutorture_get_gp_data(srcu_ctlp, flags, gp_seq); in srcu_get_gp_data()
2826 unsigned long __maybe_unused gp_seq = 0; in rcu_torture_stats_print() local
2829 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_stats_print()
2833 rcu_torture_writer_state, gp_seq, flags, in rcu_torture_stats_print()
4014 unsigned long gp_seq = 0; in rcu_torture_cleanup() local
4073 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_cleanup()
4075 cur_ops->name, (long)gp_seq, flags, in rcu_torture_cleanup()
4076 rcutorture_seq_diff(gp_seq, start_gp_seq)); in rcu_torture_cleanup()
[all …]
H A Dtasks.h1269 void rcu_tasks_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_get_gp_data() argument
1272 *gp_seq = rcu_seq_current(&rcu_tasks.tasks_gp_seq); in rcu_tasks_get_gp_data()
1434 void rcu_tasks_rude_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_rude_get_gp_data() argument
1437 *gp_seq = rcu_seq_current(&rcu_tasks_rude.tasks_gp_seq); in rcu_tasks_rude_get_gp_data()
H A Dsrcutree.c2012 unsigned long *gp_seq) in srcutorture_get_gp_data() argument
2015 *gp_seq = rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq); in srcutorture_get_gp_data()
/linux/Documentation/RCU/Design/Data-Structures/
H A DData-Structures.rst272 1 unsigned long gp_seq;
274 RCU grace periods are numbered, and the ``->gp_seq`` field contains the
278 ``->gp_seq`` are zero, then RCU is idle. Any other value in the bottom
282 There are ``->gp_seq`` fields in the ``rcu_node`` and ``rcu_data``
292 | Given that the root rcu_node structure has a gp_seq field, |
293 | why does RCU maintain a separate gp_seq in the rcu_state structure? |
294 | Why not just use the root rcu_node's gp_seq as the official record |
300 | updating the root node's gp_seq immediately would create unnecessary |
303 | If we did rcu_seq_start() directly on the root node's gp_seq: |
305 | 1. All CPUs would immediately see their node's gp_seq from their rdp's|
[all …]
/linux/include/linux/
H A Drcu_segcblist.h193 unsigned long gp_seq[RCU_CBLIST_NSEGS]; member
/linux/Documentation/RCU/Design/Memory-Ordering/
H A DTree-RCU-Memory-Ordering.rst341 advance the ``rcu_state`` structure's ``->gp_seq`` grace-period-number
369 breadth-first, setting each ``rcu_node`` structure's ``->gp_seq`` field
379 ``rcu_state`` structure's ``->gp_seq`` field) before setting each leaf
380 ``rcu_node`` structure's ``->gp_seq`` field, each CPU's observation of
436 | beginning of the grace period (the advancing of ``->gp_seq`` from |
566 advancing all the ``->gp_seq`` fields, then it advances the
567 ``rcu_state`` structure's ``->gp_seq`` field. The ordering effects are
586 | once the ``rcu_state`` structure's ``->gp_seq`` field has been |
595 Once a given CPU's leaf ``rcu_node`` structure's ``->gp_seq`` field has
/linux/Documentation/RCU/Design/Requirements/
H A DRequirements.rst1992 rcu_seq_start(&rcu_state.gp_seq);
1993 // gp_seq = 5
2002 rcu_seq_end(&rcu_state.gp_seq);
2003 // gp_seq = 8
2009 By incrementing ``gp_seq`` first, CPU1's RCU read-side critical section
/linux/Documentation/admin-guide/
H A Dkernel-parameters.txt6120 rdp and rnp's gp_seq before setting overflow flag.