Pull RCU updates from Ingo Molnar: "The main changes in this cycle were: - Make kfree_rcu() use kfree_bulk() for added performance - RCU updates - Callback-overload handling updates - Tasks-RCU KCSAN and sparse updates - Locking torture test and RCU torture test updates - Documentation updates - Miscellaneous fixes" * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (74 commits) rcu: Make rcu_barrier() account for offline no-CBs CPUs rcu: Mark rcu_state.gp_seq to detect concurrent writes Documentation/memory-barriers: Fix typos doc: Add rcutorture scripting to torture.txt doc/RCU/rcu: Use https instead of http if possible doc/RCU/rcu: Use absolute paths for non-rst files doc/RCU/rcu: Use ':ref:' for links to other docs doc/RCU/listRCU: Update example function name doc/RCU/listRCU: Fix typos in a example code snippets doc/RCU/Design: Remove remaining HTML tags in ReST files doc: Add some more RCU list patterns in the kernel rcutorture: Set KCSAN Kconfig options to detect more data races rcutorture: Manually clean up after rcu_barrier() failure rcutorture: Make rcu_torture_barrier_cbs() post from corresponding CPU rcuperf: Measure memory footprint during kfree_rcu() test rcutorture: Annotation lockless accesses to rcu_torture_current rcutorture: Add READ_ONCE() to rcu_torture_count and rcu_torture_batch rcutorture: Fix stray access to rcu_fwd_cb_nodelay rcutorture: Fix rcu_torture_one_read()/rcu_torture_writer() data race rcutorture: Make kvm-find-errors.sh abort on bad directory ...
Showing the changes to include/trace (1 of 34 files). Show all
Unified · Split
| @@ -623,6 +623,34 @@ TRACE_EVENT_RCU(rcu_invoke_kfree_callback, · 622 unmodified lines | |||
| 623 | __entry->rcuname, __entry->rhp, __entry->offset) | 623 | __entry->rcuname, __entry->rhp, __entry->offset) |
| 624 | ); | 624 | ); |
| 625 | 625 | ||
| 626 | /* | ||
| 627 | * Tracepoint for the invocation of a single RCU callback of the special | ||
| 628 | * kfree_bulk() form. The first argument is the RCU flavor, the second | ||
| 629 | * argument is a number of elements in array to free, the third is an | ||
| 630 | * address of the array holding nr_records entries. | ||
| 631 | */ | ||
| 632 | TRACE_EVENT_RCU(rcu_invoke_kfree_bulk_callback, | ||
| 633 | |||
| 634 | TP_PROTO(const char *rcuname, unsigned long nr_records, void **p), | ||
| 635 | |||
| 636 | TP_ARGS(rcuname, nr_records, p), | ||
| 637 | |||
| 638 | TP_STRUCT__entry( | ||
| 639 | __field(const char *, rcuname) | ||
| 640 | __field(unsigned long, nr_records) | ||
| 641 | __field(void **, p) | ||
| 642 | ), | ||
| 643 | |||
| 644 | TP_fast_assign( | ||
| 645 | __entry->rcuname = rcuname; | ||
| 646 | __entry->nr_records = nr_records; | ||
| 647 | __entry->p = p; | ||
| 648 | ), | ||
| 649 | |||
| 650 | TP_printk("%s bulk=0x%p nr_records=%lu", | ||
| 651 | __entry->rcuname, __entry->p, __entry->nr_records) | ||
| 652 | ); | ||
| 653 | |||
| 626 | /* | 654 | /* |
| 627 | * Tracepoint for exiting rcu_do_batch after RCU callbacks have been | 655 | * Tracepoint for exiting rcu_do_batch after RCU callbacks have been |
| 628 | * invoked. The first argument is the name of the RCU flavor, | 656 | * invoked. The first argument is the name of the RCU flavor, |
| @@ -712,6 +740,7 @@ TRACE_EVENT_RCU(rcu_torture_read, · 83 unmodified lines | |||
| 712 | * "Begin": rcu_barrier() started. | 740 | * "Begin": rcu_barrier() started. |
| 713 | * "EarlyExit": rcu_barrier() piggybacked, thus early exit. | 741 | * "EarlyExit": rcu_barrier() piggybacked, thus early exit. |
| 714 | * "Inc1": rcu_barrier() piggyback check counter incremented. | 742 | * "Inc1": rcu_barrier() piggyback check counter incremented. |
| 743 | * "OfflineNoCBQ": rcu_barrier() found offline no-CBs CPU with callbacks. | ||
| 715 | * "OnlineQ": rcu_barrier() found online CPU with callbacks. | 744 | * "OnlineQ": rcu_barrier() found online CPU with callbacks. |
| 716 | * "OnlineNQ": rcu_barrier() found online CPU, no callbacks. | 745 | * "OnlineNQ": rcu_barrier() found online CPU, no callbacks. |
| 717 | * "IRQ": An rcu_barrier_callback() callback posted on remote CPU. | 746 | * "IRQ": An rcu_barrier_callback() callback posted on remote CPU. |