IONIC_DV_..._UDMA_MASK(3)

πŸ“¦
version 65.0 Β· 3 versions
, in arch rolling

πŸ’… 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:

  1. create a protection domain with ibv_alloc_pd(3).
  2. create parent domains of that PD for each desired UDMA mask using ibv_alloc_parent_domain(3).
  3. set the desired UDMA mask on each parent domain with this function β€” yes, the one we're literally talking about.
  4. 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 by ionic_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 β€” ibpd is not an ionic protection domain. literally what we said. she checked your vibes and you failed. πŸ’€
  • EINVAL β€” udma_mask contains 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, dated 2025-06-23, brought to you by ionic β€” 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