drm_kms_hel..._poll_worker(9)
π drm_kms_helper_is_poll_worker(9) β from the Kernel API Manual, bestie
okay so picture this: it's a kernel API manual page, the title is literally drm_kms_hel..._poll_worker(9) (yes the truncation is real, that's just how she abbreviates when the name is too long to slay π), and it's living in the Kernel API Manual. cute. iconic. let's get into it β¨
πΈ NAME πΈ
drm_kms_helper_is_poll_worker β is %current task an output poll worker?
like, literally just asking: is the thing running right now an output poll worker? that's the whole vibe check π«Ά
β¨ SYNOPSIS β¨
bool drm_kms_helper_is_poll_worker (void );
she returns a bool, she takes void, she's low maintenance, we love her π
π ARGUMENTS π
voidβ no arguments. none. zero. nada. she doesn't want anything from you, she's independent like that π
π DESCRIPTION π
So the whole point of this function is to determine if the current task is an output poll worker. That's it. That's the assignment and she ATE π₯
Why do we care tho? Because you can use this to select distinct code paths for output polling vs. other contexts. Basically: "am I in poll-worker land rn, or am I somewhere else?" and then you branch accordingly. iykyk π
π¦ the deadlock situation (this is the important part, bestie)
One use case β and ngl this is the main character reason she exists β is to avoid a deadlock between the output poll worker and the autosuspend worker. Let me break down this messy love triangle for you π
- the autosuspend worker waits for polling to finish when it calls
drm_kms_helper_poll_disable - meanwhile the output poll worker waits for runtime suspend to finish when it calls
pm_runtime_get_syncinside a connector->detecthook
so they're both waiting on each other, forever, like two besties both texting "no you hang up first" π and that's the deadlock. this function lets you check which one you are so you can dodge the whole situation. no cap, that's the tea π
π SEE ALSO π
okay bestie, buckle up, this list is LONG and she did not skip a single one π go read these, they're all part of the same friend group:
- Kernel file
./drivers/gpu/drm/drm_probe_helper.cβ the output probing helper overview(9) β like the group chat archive, start here if you're new π§ drm_kms_helper_poll_enable(9)drm_kms_helper_poll_reschedule(9)drm_helper_probe_detect(9)drm_helper_probe_single_connector_modes(9)drm_kms_helper_hotplug_event(9)drm_kms_helper_connector_hotplug_event(9)drm_kms_helper_poll_disable(9)drm_kms_helper_poll_init(9)drm_kms_helper_poll_fini(9)drmm_kms_helper_poll_init(9)drm_connector_helper_hpd_irq_event(9)drm_helper_hpd_irq_event(9)drm_crtc_helper_mode_valid_fixed(9)drm_connector_helper_get_modes_fixed(9)drm_connector_helper_get_modes(9)drm_connector_helper_tv_get_modes(9)drm_connector_helper_detect_from_ddc(9)
like, for real though β every name above is a real page in section 9 of the kernel docs, and they're all doing related output-probing/polling/hotplug stuff. go be nosy, it's good for you π
and that's the whole page, bestie πβ¨
this little legend lives at ./drivers/gpu/drm, she's stamped October 2026, and she's part of the Kernel API Manual β so if you're ever like "wait, where did I read this??" it was here, in section 9, the whole time π«Ά mwah π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms