IONIC_DV_..._UDMA_MASK(3)
π NAME π
okay so bestie, meet ionic_dv_pd_set_udma_mask β she's the one who restricts the UDMA pipeline IDs of a protection domain. gatekeeping, but make it hardware β¨
π¦ SYNOPSIS π¦
#include <infiniband/ionic_dv.h>
int ionic_dv_pd_set_udma_mask(struct ibv_pd *ibpd, uint8_t udma_mask);
πΈ DESCRIPTION πΈ
So ionic_dv_pd_set_udma_mask() does one very specific thing and she does it well: she restricts which UDMA pipelines are available for queues created under the protection domain (or parent domain) ibpd. Any queue you create after this call gets assigned to one of the pipelines that udma_mask enables. no cap, that's the whole vibe.
Now, udma_mask must be a subset of the device's available UDMA pipelines β the ones you get back from ionic_dv_ctx_get_udma_mask(3). that's the vibe check, and you don't want to fail it π«Ά
β οΈ important: changing the UDMA mask of a protection domain has zero effect on queues you already created. she's not retroactive, she's not looking back. main character energy only moves forward π
the recommended usage pattern (the iconic workflow) is:
- create a protection domain with
ibv_alloc_pd(3). - create parent domains of that PD for each desired UDMA mask using
ibv_alloc_parent_domain(3). - set the desired UDMA mask on each parent domain with this function β yes, the one we're literally talking about.
- create queues associated with the parent domain that has the desired UDMA mask. slay, done.
and there's an alternative usage too, for the lowkey chaotic girls: create a single PD and change its UDMA mask before creating each queue. π
π ARGUMENTS π
ibpdβ the protection domain or parent domain you're modifying. must be an ionic protection domain, that's non-negotiable bestie. must. be. ionic. πudma_maskβ a bitmask of UDMA pipeline IDs to enable. must be a subset of the mask returned byionic_dv_ctx_get_udma_mask(3). no extra bits allowed, this isn't a "close enough" situation.
β RETURN VALUE β
returns 0 on success β iconic, flawless, no notes π β or a positive errno value on failure:
EPERMβibpdis not an ionic protection domain. literally what we said. she checked your vibes and you failed. πEINVALβudma_maskcontains bits that aren't present in the device's UDMA mask. too much, bestie, dial it back.
π¦ SEE ALSO π¦
ionicdv(7), ionic_dv_pd_get_udma_mask(3), ionic_dv_ctx_get_udma_mask(3), ionic_dv_ctx_get_udma_count(3), ibv_alloc_pd(3), ibv_alloc_parent_domain(3)
like the group chat, but for manpages β¨
π AUTHORS π
Advanced Micro Devices, Inc. β the AMD girlies wrote this and honestly? ate. π₯
π that's the page bestie! this was Ionic Programmer's Manual, section 3, dated2025-06-23, brought to you byionicβ go forth and mask those UDMA pipelines responsibly π§ββοΈβπ
π¦ where this page comes from
- arch rolling: rdma-core 65.0-1 Β· GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-MIT AND GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-FreeBSD AND GPL-2.0-or-later OR LicenseRef-Intel-BSD-3-Clause AND GPL-2.0-or-later OR LicenseRef-PathScale-BSD-Patent-License AND CC0-1.0 AND MIT AND BSD-2-Clause AND CPL-1.0 OR BSD-2-Clause OR GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms