drm_dp_mst_atomic_check_mgr(9)
π drm_dp_mst_atomic_check_mgr(9) π
okay so this is a page from the Kernel API Manual, bestie β yes it's a whole manual, like a physical book but for gremlins who read C for fun. Pull up a chair, we're checking MST topology managers and we're gonna slay it β¨
πΈ NAME πΈ
drm_dp_mst_atomic_check_mgr β the vibe check for an MST topology manager's atomic state. like, is your atomic state actually valid or are you lying to me π
π¦ SYNOPSIS π¦
int drm_dp_mst_atomic_check_mgr (struct drm_atomic_commit *state ,
struct drm_dp_mst_topology_mgr *mgr , struct drm_dp_mst_topology_state
*mst_state , struct drm_dp_mst_port **failing_port );
π ARGUMENTS π
stateβ the global atomic state, the big picture, the main character of the whole commit πmgrβ the manager you want checked. yes, that one. the one you're side-eyeing πmst_stateβ the MST atomic state that belongs tomgr. it's their state, respect it π«Άfailing_portβ an out-param that hands you back the port with a BW limitation. it's literally the "who did this" of the operation π
β¨ DESCRIPTION β¨
So what this does: it checks the given MST manager's topology state for an atomic update to make sure it's valid. and yeah, "valid" includes checking whether there's enough bandwidth to support the new timeslot allocations in the atomic update. that's the whole point, no cap π₯
Any atomic drivers supporting DP MST must make sure to call this β or thedrm_dp_mst_atomic_checkfunction β after checking the rest of their state in theirdrm_mode_config_funcs.atomic_checkcallback. not optional, bestie, it's giving mandatory π
See also: drm_dp_mst_atomic_check drm_dp_atomic_find_time_slots drm_dp_atomic_release_time_slots β the little friend group of related functions π«Ά
And now the cute annotated list of what failing_port can come back as:
- The non-root port where a BW limit check failed, with all the ports downstream of
failing_portpassing the BW limit check. the returned port pointer is valid until at least one payload downstream of it exists. so like, don't hold onto it forever, it's on a lease π¦ NULLif the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check. root port took the L, downstream ports are innocent π-EINVAL, if the new state is invalid, because the root port has too many payloads. too many!! payloads!! ma'am this is a Wendy's π
π RETURN π
0if the new state is valid β iconic, we love a clean pass β-ENOSPC, if the new state is invalid, because of BW limitation.failing_portis set to: β¦ yeah, see the list up in DESCRIPTION, that's where the three cases live π
π SEE ALSO π
okay this list is long long, like the entire extended friend group showed up to the party π§ and they're all here for a reason:
Kernel file ./drivers/gpu/drm/display/drm_dp_mst_topology.c dp mst helper(9), Branch device and port refcounting(9), drm_dp_mst_get_mstb_malloc(9), drm_dp_mst_put_mstb_malloc(9), drm_dp_mst_get_port_malloc(9), drm_dp_mst_put_port_malloc(9), drm_dp_mst_topology_try_get_mstb(9), drm_dp_mst_topology_get_mstb(9), drm_dp_mst_topology_put_mstb(9), drm_dp_mst_topology_try_get_port(9), drm_dp_mst_topology_get_port(9), drm_dp_mst_topology_put_port(9), drm_dp_mst_dpcd_read(9), drm_dp_mst_dpcd_write(9), drm_dp_mst_connector_late_register(9), drm_dp_mst_connector_early_unregister(9), drm_dp_add_payload_part1(9), drm_dp_remove_payload_part1(9), drm_dp_remove_payload_part2(9), drm_dp_add_payload_part2(9), drm_dp_get_vc_payload_bw(9), drm_dp_read_mst_cap(9), drm_dp_mst_topology_mgr_set_mst(9), drm_dp_mst_topology_queue_probe(9), drm_dp_mst_topology_mgr_suspend(9), drm_dp_mst_topology_mgr_resume(9), drm_dp_mst_hpd_irq_handle_event(9), drm_dp_mst_hpd_irq_send_new_request(9), drm_dp_mst_detect_port(9), drm_dp_mst_edid_read(9), drm_dp_mst_get_edid(9), drm_dp_atomic_find_time_slots(9), drm_dp_atomic_release_time_slots(9), drm_dp_mst_atomic_setup_commit(9), drm_dp_mst_atomic_wait_for_dependencies(9), drm_dp_mst_root_conn_atomic_check(9), drm_dp_mst_update_slots(9), drm_dp_check_act_status(9), drm_dp_calc_pbn_mode(9), drm_dp_mst_dump_topology(9), drm_dp_mst_port_downstream_of_parent(9), drm_dp_mst_add_affected_dsc_crtcs(9), drm_dp_mst_atomic_enable_dsc(9), drm_dp_mst_atomic_check(9), drm_atomic_get_mst_topology_state(9), drm_atomic_get_old_mst_topology_state(9), drm_atomic_get_new_mst_topology_state(9), drm_dp_mst_topology_mgr_init(9), drm_dp_mst_topology_mgr_destroy(9), drm_dp_mst_register_i2c_bus(9), drm_dp_mst_unregister_i2c_bus(9), drm_dp_mst_is_virtual_dpcd(9), drm_dp_mst_aux_for_parent(9), drm_dp_mst_dsc_aux_for_port(9)
like I said. everybody came ππ
sign-off time π«Ά this little gem lives in ./drivers/gpu/drm/display, and it's dated October 2026 β future-coded of it honestly. go forth, call your atomic checks, and stay hydrated bestie πβ¨π
π¦ 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