{"push_id":2506370010,"size":115,"distinct_size":115,"ref":"refs/heads/oreo","head":"2d143ea23855003070c65a5e7981b1080d2673ca","before":"162a88c7a921c95626393e75dede475d38cb126c","commits":[{"sha":"c7b984b13323fb771c165f0be3bd675580e5473f","author":{"name":"Tim Murray","email":"fc967dd1b0265d0311b05dbb56de7d3bd8ed4e2b@google.com"},"message":"mido: enable additional RCU debugging\n\nbug 34193533\nTests: boots\n\nChange-Id: Idf207e62a79d73c02ccc9f67804139a8e783a288","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/c7b984b13323fb771c165f0be3bd675580e5473f"},{"sha":"5e5ed4c5d7c11a3ad7ff0016baaf590f6e1b7408","author":{"name":"Patrick Daly","email":"2c98d18550b6e94ee93faf6d92fa2bedb58842c9@codeaurora.org"},"message":"BACKPORT: rcu: Fix missing task information during rcu-preempt stall\n\nThe first item list_for_each_entry_continue(alist) iterates over is\nalist->next, rather than alist itself. Consequently,\nrcu_print_detail_task_stall_rnp() skips the task referenced by gp_tasks.\n\nUse gp_tasks->prev as the argument to list_for_each_entry_continue()\ninstead.\n\nBug: 34193533\n\nChange-Id: I7515ce7c49fd86bf0357405e98356d0f1f761ec7\nSigned-off-by: Patrick Daly <pdaly@codeaurora.org>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Joel Fernandes <joelaf@google.com>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/5e5ed4c5d7c11a3ad7ff0016baaf590f6e1b7408"},{"sha":"c8ded8bac9b2f957b7f2034e1e4084d24f5dcf5b","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"BACKPORT: rcu: Move RCU_BOOST variable declarations, eliminating #ifdef\n\nThere are some RCU_BOOST-specific per-CPU variable declarations that\nare needlessly defined under #ifdef in kernel/rcu/tree.c.  This commit\ntherefore moves these declarations into a pre-existing #ifdef in\nkernel/rcu/tree_plugin.h.\n\nChange-Id: Id6c315e96d67e03ba97290b5381f99aed5182055\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/c8ded8bac9b2f957b7f2034e1e4084d24f5dcf5b"},{"sha":"db94d1e2305e1cf43e05d382cd12606c78ce1dfa","author":{"name":"Clark Williams","email":"54f34eeb6912a6e3afe9f6d6afe6fbe30c370022@gmail.com"},"message":"BACKPORT: rcu: Unify boost and kthread priorities\n\nRename CONFIG_RCU_BOOST_PRIO to CONFIG_RCU_KTHREAD_PRIO and use this\nvalue for both the per-CPU kthreads (rcuc/N) and the rcu boosting\nthreads (rcub/n).\n\nAlso, create the module_parameter rcutree.kthread_prio to be used on\nthe kernel command line at boot to set a new value (rcutree.kthread_prio=N).\n\nSigned-off-by: Clark Williams <clark.williams@gmail.com>\n[ paulmck: Ported to rcu/dev, applied Paul Bolle and Peter Zijlstra feedback. ]\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\n\nChange-Id: I6a352581fba41993f3984381bc96152d48662cf2","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/db94d1e2305e1cf43e05d382cd12606c78ce1dfa"},{"sha":"089f5daa689f9a58e2cec1ab038a0bd7108a2666","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"BACKPORT: rcu: Optionally run grace-period kthreads at real-time priority\n\nRecent testing has shown that under heavy load, running RCU's grace-period\nkthreads at real-time priority can improve performance (according to 0day\ntest robot) and reduce the incidence of RCU CPU stall warnings.  However,\nmost systems do just fine with the default non-realtime priorities for\nthese kthreads, and it does not make sense to expose the entire user\nbase to any risk stemming from this change, given that this change is\nof use only to a few users running extremely heavy workloads.\n\nTherefore, this commit allows users to specify realtime priorities\nfor the grace-period kthreads, but leaves them running SCHED_OTHER\nby default.  The realtime priority may be specified at build time\nvia the RCU_KTHREAD_PRIO Kconfig parameter, or at boot time via the\nrcutree.kthread_prio parameter.  Either way, 0 says to continue the\ndefault SCHED_OTHER behavior and values from 1-99 specify that priority\nof SCHED_FIFO behavior.  Note that a value of 0 is not permitted when\nthe RCU_BOOST Kconfig parameter is specified.\n\nChange-Id: Idbd2075e4f5aa578f949258fd4113a42b1941b21\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/089f5daa689f9a58e2cec1ab038a0bd7108a2666"},{"sha":"f244f6cb1eec6600b6cd64a3f13d2a130e31aa0d","author":{"name":"Daniel Bristot de Oliveira","email":"4479e7fb8b67571481eea6bea86d718e30273107@redhat.com"},"message":"BACKPORT: rcu: sysctl: Panic on RCU Stall\n\nIt is not always easy to determine the cause of an RCU stall just by\nanalysing the RCU stall messages, mainly when the problem is caused\nby the indirect starvation of rcu threads. For example, when preempt_rcu\nis not awakened due to the starvation of a timer softirq.\n\nWe have been hard coding panic() in the RCU stall functions for\nsome time while testing the kernel-rt. But this is not possible in\nsome scenarios, like when supporting customers.\n\nThis patch implements the sysctl kernel.panic_on_rcu_stall. If\nset to 1, the system will panic() when an RCU stall takes place,\nenabling the capture of a vmcore. The vmcore provides a way to analyze\nall kernel/tasks states, helping out to point to the culprit and the\nsolution for the stall.\n\nThe kernel.panic_on_rcu_stall sysctl is disabled by default.\n\nChanges from v1:\n- Fixed a typo in the git log\n- The if(sysctl_panic_on_rcu_stall) panic() is in a static function\n- Fixed the CONFIG_TINY_RCU compilation issue\n- The var sysctl_panic_on_rcu_stall is now __read_mostly\n\nCc: Jonathan Corbet <corbet@lwn.net>\nCc: \"Paul E. McKenney\" <paulmck@linux.vnet.ibm.com>\nCc: Josh Triplett <josh@joshtriplett.org>\nCc: Steven Rostedt <rostedt@goodmis.org>\nCc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>\nCc: Lai Jiangshan <jiangshanlai@gmail.com>\nAcked-by: Christian Borntraeger <borntraeger@de.ibm.com>\nReviewed-by: Josh Triplett <josh@joshtriplett.org>\nReviewed-by: Arnaldo Carvalho de Melo <acme@kernel.org>\nTested-by: \"Luis Claudio R. Goncalves\" <lgoncalv@redhat.com>\nSigned-off-by: Daniel Bristot de Oliveira <bristot@redhat.com>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\n\n(cherry picked from commit 088e9d253d3a4ab7e058dd84bb532c32dadf1882)\nBug: 34991231\nBug: 35674410\nChange-Id: I0dcb47cb55c9115add79977b1c74cc0c67f9d772\nSigned-off-by: Wei Wang <wvw@google.com>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/f244f6cb1eec6600b6cd64a3f13d2a130e31aa0d"},{"sha":"467949bec4fb26603f1d1f0eb42c0d0620223b8e","author":{"name":"John Dias","email":"0bf0aa9cb6b07050fd8ca7e9a5b8b18ec52aef5b@google.com"},"message":"rcu: boost: avoid preemption before calling complete()\n\nTracing showed that it was possible for a boosted\nthread to be descheduled with its priority de-boosted\nbefore it had signalled completion to the boosting thread.\nThe fix here is to avoid preemption between releasing\nthe mutex and calling complete().\n\nBug: 34193533\nChange-Id: I598adb62ca675e2da5289b397f971127d4090092\nSigned-off-by: John Dias <joaodias@google.com>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/467949bec4fb26603f1d1f0eb42c0d0620223b8e"},{"sha":"9ec67ddcaeda0780e6253138d9719632f0cb3bb4","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Remove CONFIG_RCU_CPU_STALL_VERBOSE\n\nThe CONFIG_RCU_CPU_STALL_VERBOSE Kconfig parameter causes preemptible\nRCU's CPU stall warnings to dump out any preempted tasks that are blocking\nthe current RCU grace period.  This information is useful, and the default\nhas been CONFIG_RCU_CPU_STALL_VERBOSE=y for some years.  It is therefore\ntime for this commit to remove this Kconfig parameter, so that future\nkernel builds will always act as if CONFIG_RCU_CPU_STALL_VERBOSE=y.\n\nChange-Id: Ie3b3b59f96c6db648286c087fb6109f6570c5960\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <msfjarvis@gmail.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/9ec67ddcaeda0780e6253138d9719632f0cb3bb4"},{"sha":"58f5e52dd3b9ff71c0e3fbf5378b13c0aef388d3","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Avoid IPIing idle CPUs from synchronize_sched_expedited()\n\nCurrently, synchronize_sched_expedited() sends IPIs to all online CPUs,\neven those that are idle or executing in nohz_full= userspace.  Because\nidle CPUs and nohz_full= userspace CPUs are in extended quiescent states,\nthere is no need to IPI them in the first place.  This commit therefore\navoids IPIing CPUs that are already in extended quiescent states.\n\nChange-Id: Ic2f68ad950c329103dc9f0e7e431bb6a1ab9b81a\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <msfjarvis@gmail.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/58f5e52dd3b9ff71c0e3fbf5378b13c0aef388d3"},{"sha":"bc6e958775699484b17f04fed5529fdbf6da3ea3","author":{"name":"Pranith Kumar","email":"99f39d96f0d0b011d351b608fe7e2870596fa4a9@gmail.com"},"message":"rcu: Remove redundant TREE_PREEMPT_RCU config option\n\nPREEMPT_RCU and TREE_PREEMPT_RCU serve the same function after\nTINY_PREEMPT_RCU has been removed. This patch removes TREE_PREEMPT_RCU\nand uses PREEMPT_RCU config option in its place.\n\nSigned-off-by: Pranith Kumar <bobby.prani@gmail.com>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/bc6e958775699484b17f04fed5529fdbf6da3ea3"},{"sha":"00527d2f4c4f693278853e6f0b6ec1a8e0951a9f","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Fix for rcuo online-time-creation reorganization bug\n\nCommit 35ce7f29a44a (rcu: Create rcuo kthreads only for onlined CPUs)\ncontains checks for the case where CPUs are brought online out of\norder, re-wiring the rcuo leader-follower relationships as needed.\nUnfortunately, this rewiring was broken.  This apparently went undetected\ndue to the tendency of systems to bring CPUs online in order.  This commit\nnevertheless fixes the rewiring.\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/00527d2f4c4f693278853e6f0b6ec1a8e0951a9f"},{"sha":"4af8a912e20113cd2ad5ede10c183bc890facb40","author":{"name":"Christoph Lameter","email":"ef3ecccf258fa062c5c6521a4887d40541963af7@linux.com"},"message":"rcu: Remove rcu_dynticks * parameters when they are always this_cpu_ptr(&rcu_dynticks)\n\nFor some functions in kernel/rcu/tree* the rdtp parameter is always\nthis_cpu_ptr(rdtp).  Remove the parameter if constant and calculate the\npointer in function.\n\nThis will have the advantage that it is obvious that the address are\nall per cpu offsets and thus it will enable the use of this_cpu_ops in\nthe future.\n\nSigned-off-by: Christoph Lameter <cl@linux.com>\n[ paulmck: Forward-ported to rcu/dev, whitespace adjustment. ]\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nReviewed-by: Pranith Kumar <bobby.prani@gmail.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/4af8a912e20113cd2ad5ede10c183bc890facb40"},{"sha":"01322aca0f7cdd8145d65c5a45dcf6f038be1eb0","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Use DEFINE_PER_CPU_SHARED_ALIGNED for rcu_data\n\nThe rcu_data per-CPU variable has a number of fields that are atomically\nmanipulated, potentially by any CPU.  This situation can result in false\nsharing with per-CPU variables that have the misfortune of being allocated\nadjacent to rcu_data in memory.  This commit therefore changes the\nDEFINE_PER_CPU() to DEFINE_PER_CPU_SHARED_ALIGNED() in order to avoid\nthis false sharing.\n\nReported-by: Christoph Lameter <cl@linux.com>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nReviewed-by: Christoph Lameter <cl@linux.com>\nReviewed-by: Pranith Kumar <bobby.prani@gmail.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/01322aca0f7cdd8145d65c5a45dcf6f038be1eb0"},{"sha":"67a0a98185312b9350be0868602632c2493b7c23","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcutorture: Fix rcu_torture_cbflood() memory leak\n\nCommit 38706bc5a29a (rcutorture: Add callback-flood test) vmalloc()ed\na bunch of RCU callbacks, but failed to free them.  This commit fixes\nthat oversight.\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nReviewed-by: Pranith Kumar <bobby.prani@gmail.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/67a0a98185312b9350be0868602632c2493b7c23"},{"sha":"6ad4654efabd3932d6db7ebe0455801bbd943f5a","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Fix FIXME in rcu_tasks_kthread()\n\nThis commit affines rcu_tasks_kthread() to the housekeeping CPUs\nin CONFIG_NO_HZ_FULL builds.  This is just a default, so systems\nadministrators are free to put this kthread somewhere else if they wish.\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/6ad4654efabd3932d6db7ebe0455801bbd943f5a"},{"sha":"71f0371ad0dd1551cface384437e7560e87e7c4b","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Make rcu_nmi_enter() handle nesting\n\nThe x86 architecture has multiple types of NMI-like interrupts: real\nNMIs, machine checks, and, for some values of NMI-like, debugging\nand breakpoint interrupts.  These interrupts can nest inside each\nother.  Andy Lutomirski is adding RCU support to these interrupts,\nso rcu_nmi_enter() and rcu_nmi_exit() must now correctly handle nesting.\n\nThis commit therefore introduces nesting, using a clever NMI-coordination\nalgorithm suggested by Andy.  The trick is to atomically increment\n->dynticks (if needed) before manipulating ->dynticks_nmi_nesting on entry\n(and, accordingly, after on exit).  In addition, ->dynticks_nmi_nesting\nis incremented by one if ->dynticks was incremented and by two otherwise.\nThis means that when rcu_nmi_exit() sees ->dynticks_nmi_nesting equal\nto one, it knows that ->dynticks must be atomically incremented.\n\nThis NMI-coordination algorithms has been validated by the following\nPromela model:\n\n------------------------------------------------------------------------\n\n/*\n * Promela model for Andy Lutomirski's suggested change to rcu_nmi_enter()\n * that allows nesting.\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, you can access it online at\n * http://www.gnu.org/licenses/gpl-2.0.html.\n *\n * Copyright IBM Corporation, 2014\n *\n * Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\n */\n\nbyte dynticks_nmi_nesting = 0;\nbyte dynticks = 0;\n\n/*\n * Promela verision of rcu_nmi_enter().\n */\ninline rcu_nmi_enter()\n{\n\tbyte incby;\n\tbyte tmp;\n\n\tincby = BUSY_INCBY;\n\tassert(dynticks_nmi_nesting >= 0);\n\tif\n\t:: (dynticks & 1) == 0 ->\n\t\tatomic {\n\t\t\tdynticks = dynticks + 1;\n\t\t}\n\t\tassert((dynticks & 1) == 1);\n\t\tincby = 1;\n\t:: else ->\n\t\tskip;\n\tfi;\n\ttmp = dynticks_nmi_nesting;\n\ttmp = tmp + incby;\n\tdynticks_nmi_nesting = tmp;\n\tassert(dynticks_nmi_nesting >= 1);\n}\n\n/*\n * Promela verision of rcu_nmi_exit().\n */\ninline rcu_nmi_exit()\n{\n\tbyte tmp;\n\n\tassert(dynticks_nmi_nesting > 0);\n\tassert((dynticks & 1) != 0);\n\tif\n\t:: dynticks_nmi_nesting != 1 ->\n\t\ttmp = dynticks_nmi_nesting;\n\t\ttmp = tmp - BUSY_INCBY;\n\t\tdynticks_nmi_nesting = tmp;\n\t:: else ->\n\t\tdynticks_nmi_nesting = 0;\n\t\tatomic {\n\t\t\tdynticks = dynticks + 1;\n\t\t}\n\t\tassert((dynticks & 1) == 0);\n\tfi;\n}\n\n/*\n * Base-level NMI runs non-atomically.  Crudely emulates process-level\n * dynticks-idle entry/exit.\n */\nproctype base_NMI()\n{\n\tbyte busy;\n\n\tbusy = 0;\n\tdo\n\t::\t/* Emulate base-level dynticks and not. */\n\t\tif\n\t\t:: 1 ->\tatomic {\n\t\t\t\tdynticks = dynticks + 1;\n\t\t\t}\n\t\t\tbusy = 1;\n\t\t:: 1 ->\tskip;\n\t\tfi;\n\n\t\t/* Verify that we only sometimes have base-level dynticks. */\n\t\tif\n\t\t:: busy == 0 -> skip;\n\t\t:: busy == 1 -> skip;\n\t\tfi;\n\n\t\t/* Model RCU's NMI entry and exit actions. */\n\t\trcu_nmi_enter();\n\t\tassert((dynticks & 1) == 1);\n\t\trcu_nmi_exit();\n\n\t\t/* Emulated re-entering base-level dynticks and not. */\n\t\tif\n\t\t:: !busy -> skip;\n\t\t:: busy ->\n\t\t\tatomic {\n\t\t\t\tdynticks = dynticks + 1;\n\t\t\t}\n\t\t\tbusy = 0;\n\t\tfi;\n\n\t\t/* We had better now be in dyntick-idle mode. */\n\t\tassert((dynticks & 1) == 0);\n\tod;\n}\n\n/*\n * Nested NMI runs atomically to emulate interrupting base_level().\n */\nproctype nested_NMI()\n{\n\tdo\n\t::\t/*\n\t\t * Use an atomic section to model a nested NMI.  This is\n\t\t * guaranteed to interleave into base_NMI() between a pair\n\t\t * of base_NMI() statements, just as a nested NMI would.\n\t\t */\n\t\tatomic {\n\t\t\t/* Verify that we only sometimes are in dynticks. */\n\t\t\tif\n\t\t\t:: (dynticks & 1) == 0 -> skip;\n\t\t\t:: (dynticks & 1) == 1 -> skip;\n\t\t\tfi;\n\n\t\t\t/* Model RCU's NMI entry and exit actions. */\n\t\t\trcu_nmi_enter();\n\t\t\tassert((dynticks & 1) == 1);\n\t\t\trcu_nmi_exit();\n\t\t}\n\tod;\n}\n\ninit {\n\trun base_NMI();\n\trun nested_NMI();\n}\n\n------------------------------------------------------------------------\n\nThe following script can be used to run this model if placed in\nrcu_nmi.spin:\n\n------------------------------------------------------------------------\n\nif ! spin -a rcu_nmi.spin\nthen\n\techo Spin errors!!!\n\texit 1\nfi\nif ! cc -DSAFETY -o pan pan.c\nthen\n\techo Compilation errors!!!\n\texit 1\nfi\n./pan -m100000\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nReviewed-by: Lai Jiangshan <laijs@cn.fujitsu.com>\n\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>\n\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/71f0371ad0dd1551cface384437e7560e87e7c4b"},{"sha":"01811f4e7b8c222727fd157b2bac1c0a146e9822","author":{"name":"Alexander Gordeev","email":"840ef8418a045e2a597676027ea56f79bb2faf20@redhat.com"},"message":"rcu: Remove redundant rcu_is_cpu_rrupt_from_idle() from tiny RCU\n\nLet's start assuming that something in the idle loop posts a callback,\nand scheduling-clock interrupt occurs:\n\n1. The system is idle and stays that way, no runnable tasks.\n\n2. Scheduling-clock interrupt occurs, rcu_check_callbacks() is called\n   as result, which in turn calls rcu_is_cpu_rrupt_from_idle().\n\n3. rcu_is_cpu_rrupt_from_idle() reports the CPU was interrupted from\n   idle, which results in rcu_sched_qs() call, which does a\n   raise_softirq(RCU_SOFTIRQ).\n\n4. Upon return from interrupt, rcu_irq_exit() is invoked, which calls\n   rcu_idle_enter_common(), which in turn calls rcu_sched_qs() again,\n   which does another raise_softirq(RCU_SOFTIRQ).\n\n5. The softirq happens shortly and invokes rcu_process_callbacks(),\n   which invokes __rcu_process_callbacks().\n\n6. So now callbacks can be invoked. At least they can be if\n   ->donetail has been updated. Which it will have been because\n   rcu_sched_qs() invokes rcu_qsctr_help().\n\nIn the described scenario rcu_sched_qs() and raise_softirq(RCU_SOFTIRQ)\nget called twice in steps 3 and 4. This redundancy could be eliminated\nby removing rcu_is_cpu_rrupt_from_idle() function.\n\nSigned-off-by: Alexander Gordeev <agordeev@redhat.com>\nCc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/01811f4e7b8c222727fd157b2bac1c0a146e9822"},{"sha":"3adf099e12c4970a056021c0e6c76b6cbd72b985","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Fix invoke_rcu_callbacks() comment\n\nDespite what the comment says, it is only softirqs that are disabled,\nnot interrupts.  This commit therefore fixes the comment.\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/3adf099e12c4970a056021c0e6c76b6cbd72b985"},{"sha":"a9bc288a49a0a7a22d81d4c35b0d72472b7826bf","author":{"name":"Lai Jiangshan","email":"4c9eb49378914b743bdd32292c04df29b820d73e@cn.fujitsu.com"},"message":"tiny_rcu: Directly force QS when call_rcu_[bh|sched]() on idle_task\n\nFor RCU in UP, context-switch = QS = GP, thus we can force a\ncontext-switch when any call_rcu_[bh|sched]() is happened on idle_task.\nAfter doing so, rcu_idle/irq_enter/exit() are useless, so we can simply\nmake these functions empty.\n\nMore important, this change does not change the functionality logically.\nNote: raise_softirq(RCU_SOFTIRQ)/rcu_sched_qs() in rcu_idle_enter() and\noutmost rcu_irq_exit() will have to wake up the ksoftirqd\n(due to in_interrupt() == 0).\n\nBefore this patch\t\tAfter this patch:\ncall_rcu_sched() in idle;\tcall_rcu_sched() in idle\n\t\t\t\t  set resched\ndo other stuffs;\t\tdo other stuffs\noutmost rcu_irq_exit()\t\toutmost rcu_irq_exit() (empty function)\n  (or rcu_idle_enter())\t\t  (or rcu_idle_enter(), also empty function)\n\t\t\t\tstart to resched. (see above)\n  rcu_sched_qs()\t\trcu_sched_qs()\n    QS,and GP and advance cb\t  QS,and GP and advance cb\n    wake up the ksoftirqd\t    wake up the ksoftirqd\n      set resched\nresched to ksoftirqd (or other)\tresched to ksoftirqd (or other)\n\nThese two code patches are almost the same.\n\nSize changed after patched:\n\nsize kernel/rcu/tiny-old.o kernel/rcu/tiny-patched.o\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   3449\t    206\t      8\t   3663\t    e4f\tkernel/rcu/tiny-old.o\n   2406\t    144\t      8\t   2558\t    9fe\tkernel/rcu/tiny-patched.o\n\nChange-Id: I81eb78abc386a14af63abc95f51253ea66338636\nSigned-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/a9bc288a49a0a7a22d81d4c35b0d72472b7826bf"},{"sha":"a83c7b0d3d8ad5d9e0fe89956c6a0138d79844c4","author":{"name":"Paul E. McKenney","email":"1e0ce936bb9b355d257bf5790d2513c3f28be22b@linux.vnet.ibm.com"},"message":"rcu: Fix rcu_barrier() race that could result in too-short wait\n\nThe rcu_barrier() no-callbacks check for no-CBs CPUs has race conditions.\nIt checks a given CPU's lists of callbacks, and if all three no-CBs lists\nare empty, ignores that CPU.  However, these three lists could potentially\nbe empty even when callbacks are present if the check executed just as\nthe callbacks were being moved from one list to another.  It turns out\nthat recent versions of rcutorture can spot this race.\n\nThis commit plugs this hole by consolidating the per-list counts of\nno-CBs callbacks into a single count, which is incremented before\nthe corresponding callback is posted and after it is invoked.  Then\nrcu_barrier() checks this single count to reliably determine whether\nthe corresponding CPU has no-CBs callbacks.\n\nSigned-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Harsh Shandilya <harsh@prjkt.io>","distinct":true,"url":"https://api.github.com/repos/Cangkuls/mido/commits/a83c7b0d3d8ad5d9e0fe89956c6a0138d79844c4"}]}
{"actor":{"display_login":"YudiWidiyanto"}}