Skip to content

Conversation

@multics69
Copy link
Contributor

We increase the task's latency-criticality when it is woken from an interrupt context. To use test if a BPF program runs in an interrupt context, we sync bpf_experimental.h from the latest version in bpf-next.

The updated version has the four helpers: bpf_in_nmi(), bpf_in_hardirq(),
bpf_in_serving_softirq(), and bpf_in_task().

Signed-off-by: Changwoo Min <changwoo@igalia.com>
In a similar vein to checking whether a waker is an RT/DL task, we increase
the task's latency-criticality when it is woken from an interrupt context:
either a hardirq (top half) or a softirq (bottom half).

- hardirq: The top half of an interrupt processing (e.g., mouse move,
  keypress, disk I/O completion, or GPU V-Sync) has just been completed,
  and it hands off further processing to a fair task. The task that was
  waiting for this specific hardware signal gets the "Express Lane."

- softirq: The kernel just finished the bottom half of an interrupt
  processing, like network packets and timers. If a packet arrives for your
  Browser, or a timer expires for a frame refresh, the task gets a "High"
  boost. This keeps the data pipeline flowing smoothly.

Note that the irq-boosted criticality will flow through the forward &
backward propagation mechanisms.

Signed-off-by: Changwoo Min <changwoo@igalia.com>
@multics69 multics69 added this pull request to the merge queue Jan 28, 2026
Merged via the queue into sched-ext:main with commit 6233520 Jan 28, 2026
22 checks passed
@multics69 multics69 deleted the lavd-boost-irq-wakeup branch January 28, 2026 01:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants