)]}'
{
  "commit": "4217ba4d1be2f4e3c84fd5a7bcd9079e4e3e7fb0",
  "tree": "0536ceb45534f6ecdcdb3af6ce912bfd3758be44",
  "parents": [
    "911e345ff7973320877b465c6b99e2724e2cd0ca"
  ],
  "author": {
    "name": "Frederic Weisbecker",
    "email": "frederic@kernel.org",
    "time": "Thu Oct 19 14:56:29 2023 +0200"
  },
  "committer": {
    "name": "Frederic Weisbecker",
    "email": "frederic@kernel.org",
    "time": "Thu Oct 19 17:09:47 2023 +0200"
  },
  "message": "rcu: Make tiny RCU use ksoftirqd to trigger a QS from idle\n\nThe commit:\n\n\tcff9b2332ab7 (\"kernel/sched: Modify initial boot task idle setup\")\n\nfixed an issue where rcutiny would request a quiescent state with\nsetting TIF_NEED_RESCHED in early boot when init/0 has the PF_IDLE flag\nbut interrupts aren\u0027t enabled yet. An subsequent call to cond_resched()\nwould then re-enable IRQs too early.\n\nHowever the call to resched_cpu() can opportunistically be replaced with\nraising RCU_SOFTIRQ and forcing ksoftirqd wakeup. If callbacks are\ninvolved within the current grace period, this is what RCU wants and\ndoes currently:\n\n1) Trigger exit from idle and go through the scheduler to call\n   rcu_note_context_switch() -\u003e rcu_qs()\n\n2) rcu_qs() notes the quiescent state and raises RCU_SOFTIRQ if there\n   is a callback, waking up ksoftirqd since it isn\u0027t called from an\n   interrupt.\n\nThis all can be optimized within a single call to\nraise_ksoftirqd_irqsoff(). RCU grace period polling while idle is then\nsuboptimized but such a usecase can be considered very rare or even\nnon-existent.\n\nThe advantage of this optimization is that it also works if PF_IDLE is\nset early because ksoftirqd is only created once IRQs are enabled on\nboot and it can\u0027t be awaken before its creation. If\nraise_ksoftirqd_irqsoff() is called after the first scheduling point\nbut before kostfirqd is created, nearby voluntary schedule calls are\nexpected and in the worst case the first launch of ksoftirqd is close\nenough during the first initcalls.\n\nFixes: cff9b2332ab7 (\"kernel/sched: Modify initial boot task idle setup\")\nCc: Liam R. Howlett \u003cLiam.Howlett@oracle.com\u003e\nCc: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nCc: Sebastian Siewior \u003cbigeasy@linutronix.de\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Frederic Weisbecker \u003cfrederic@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fec804b7908032d4416ea9ff3531eae154bba8f9",
      "old_mode": 33188,
      "old_path": "kernel/rcu/tiny.c",
      "new_id": "9460e4e9d84c61d66a1ae5a05236e1944fe5734d",
      "new_mode": 33188,
      "new_path": "kernel/rcu/tiny.c"
    }
  ]
}
