)]}'
{
  "commit": "98a8470ffcf9029e7b5452c20afc2c8ae11086c1",
  "tree": "4a7880ca75009059979e66495e682636708578ad",
  "parents": [
    "ff12cdc35c5c98a376c8c896e58f0e61c503cf90"
  ],
  "author": {
    "name": "Frederic Weisbecker",
    "email": "frederic@kernel.org",
    "time": "Tue Nov 30 17:21:08 2021 +0100"
  },
  "committer": {
    "name": "Paul E. McKenney",
    "email": "paulmck@kernel.org",
    "time": "Tue Nov 30 11:19:15 2021 -0800"
  },
  "message": "rcu/exp: Mark current CPU as exp-QS in IPI loop second pass\n\nExpedited RCU grace periods invoke sync_rcu_exp_select_node_cpus(), which\ntakes two passes over the leaf rcu_node structure\u0027s CPUs.  The first\npass gathers up the current CPU and CPUs that are in dynticks idle mode.\nThe workqueue will report a quiescent state on their behalf later.\nThe second pass sends IPIs to the rest of the CPUs, but excludes the\ncurrent CPU, incorrectly assuming it has been included in the first\npass\u0027s list of CPUs.\n\nUnfortunately the current CPU may have changed between the first and\nsecond pass, due to the fact that the various rcu_node structures\u0027\n-\u003elock fields have been dropped, thus momentarily enabling preemption.\nThis means that if the second pass\u0027s CPU was not on the first pass\u0027s\nlist, it will be ignored completely.  There will be no IPI sent to\nit, and there will be no reporting of quiescent states on its behalf.\nUnfortunately, the expedited grace period will nevertheless be waiting\nfor that CPU to report a quiescent state, but with that CPU having no\nreason to believe that such a report is needed.\n\nThe result will be an expedited grace period stall.\n\nFix this by no longer excluding the current CPU from consideration during\nthe second pass.\n\nFixes: b9ad4d6ed18e (\"rcu: Avoid self-IPI in sync_rcu_exp_select_node_cpus()\")\nReviewed-by: Neeraj Upadhyay \u003cquic_neeraju@quicinc.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfrederic@kernel.org\u003e\nCc: Uladzislau Rezki \u003curezki@gmail.com\u003e\nCc: Neeraj Upadhyay \u003cquic_neeraju@quicinc.com\u003e\nCc: Boqun Feng \u003cboqun.feng@gmail.com\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Joel Fernandes \u003cjoel@joelfernandes.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a96d17206d87ab541f696140dbff8e1cf5cd6047",
      "old_mode": 33188,
      "old_path": "kernel/rcu/tree_exp.h",
      "new_id": "237a79989abae0fd169b436e97ea6edd39d63ec5",
      "new_mode": 33188,
      "new_path": "kernel/rcu/tree_exp.h"
    }
  ]
}
