Re: [PATCH] sched/core: Account PSI IRQ time to the execution context

From: John Stultz

Date: Mon Sep 21 2026 - 23:32:09 EST


On Fri, Sep 18, 2026 at 6:29 AM Zhan Xusheng <zhanxusheng1024@xxxxxxxxx> wrote:
>
> psi_account_irqtime() has two callers which share rq->psi_irq_time, and
> they disagree about the context: __schedule() passes the outgoing rq->curr,
> sched_tick() passes rq->donor. Under proxy execution the donor is blocked
> on a mutex while rq->curr burns the CPU.
>
> The tick charges PSI_IRQ_FULL to the donor's cgroup and advances the
> timestamp, so the call from __schedule() then finds delta <= 0 and charges
> nothing. The delta is not counted twice, it lands on the wrong cgroup.
>
> Pass rq->curr, which is what the call read before commit af0c8b2bf67b
> ("sched: Split scheduler and execution contexts") renamed curr to donor
> across sched_tick(). Without CONFIG_SCHED_PROXY_EXEC the two rq members
> are a union, so this only changes anything where that option is set, and
> it depends on EXPERT.
>
> Fixes: af0c8b2bf67b ("sched: Split scheduler and execution contexts")
> Signed-off-by: Zhan Xusheng <zhanxusheng@xxxxxxxxxx>

Thank you for finding this, and thank you to Hui Su for testing it!

Acked-by: John Stultz <jstultz@xxxxxxxxxx>

thanks
-john