irdma_reg_phys_mr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– irdma_reg_phys_mr(9) β€” like, the Kernel API Manual, bestie πŸ’–

okay so this is a page from the Kernel API Manual, section 9, and it's all about irdma_reg_phys_mr β€” the little function that handles registering kernel physical memory 🫢


✨ NAME ✨

irdma_reg_phys_mr β€” register kernel physical memory πŸŽ€


🌸 SYNOPSIS 🌸

struct ib_mr * irdma_reg_phys_mr (struct ib_pd *pd , u64 addr , u64 size
, int access , u64 *iova_start , bool dma_mr );

that's the whole signature, copy it exactly bestie, no cap πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

okay so here's who's who in this function's group chat:

  • pd β€” the ibpd pointer. that's your PD, your protection domain bestie πŸ’–
  • addr β€” the physical address of the memory you're registering. literally where it lives in physical memory 🏠
  • size β€” how big the memory you're registering is. no guessing, tell it the size fr fr πŸ“
  • access β€” the access rights. yes this matters, it's giving permissions energy πŸ”
  • iova_start β€” start of the virtual address for physical buffers. this is your u64 *, so it's a pointer, keep that in mind 🎯
  • dma_mr β€” a bool flag indicating whether this region is a PD DMA MR. it's a flag, so true/false, iconic behaviour ⭐

πŸ‘‘ SEE ALSO πŸ‘‘

so there's a kernel file involved: ./drivers/infiniband/hw/irdma/verbs.c β€” that's where the action lives, go look at it 🧚

and like… the friend list is LONG, bestie. every single one of these, no skipping:

irdma_query_device(9), irdma_query_port(9), irdma_disassociate_ucontext(9), irdma_mmap(9), irdma_alloc_push_page(9), irdma_alloc_ucontext(9), irdma_dealloc_ucontext(9), irdma_alloc_pd(9), irdma_dealloc_pd(9), irdma_get_pbl(9), irdma_clean_cqes(9), _irdma_destroy_qp(9), irdma_destroy_qp(9), irdma_setup_virt_qp(9), irdma_setup_umode_qp(9), irdma_setup_kmode_qp(9), irdma_create_qp(9), irdma_query_qp(9), irdma_query_pkey(9), irdma_modify_qp_roce(9), irdma_modify_qp(9), irdma_srq_free_rsrc(9), irdma_cq_free_rsrc(9), irdma_free_cqbuf(9), irdma_process_resize_list(9), irdma_destroy_srq(9), irdma_destroy_cq(9), irdma_resize_cq(9), irdma_srq_event(9), irdma_modify_srq(9), irdma_create_srq(9), irdma_query_srq(9), irdma_create_cq(9), irdma_get_mr_access(9), irdma_free_stag(9), irdma_create_stag(9), irdma_next_pbl_addr(9), irdma_copy_user_pgaddrs(9), irdma_check_mem_contiguous(9), irdma_check_mr_contiguous(9), irdma_setup_pbles(9), irdma_handle_q_mem(9), irdma_hw_alloc_mw(9), irdma_alloc_mw(9), irdma_dealloc_mw(9), irdma_hw_alloc_stag(9), irdma_alloc_mr(9), irdma_set_page(9), irdma_map_mr_sg(9), irdma_hwreg_mr(9), irdma_reg_user_mr(9), irdma_get_dma_mr(9), irdma_del_memlist(9), irdma_dereg_mr(9), irdma_post_send(9), irdma_post_srq_recv(9), irdma_post_recv(9), irdma_flush_err_to_ib_wc_status(9), irdma_process_cqe(9), irdma_poll_one(9), __irdma_poll_cq(9), irdma_poll_cq(9), irdma_req_notify_cq(9), irdma_alloc_hw_port_stats(9), irdma_get_hw_stats(9), irdma_query_gid(9),

and the multicast girlies 🌈: mcast_list_add(9), mcast_list_del(9), mcast_list_lookup_ip(9), irdma_mcast_cqp_op(9), irdma_mcast_mac(9), irdma_attach_mcast(9), irdma_detach_mcast(9), irdma_ah_exists(9), irdma_destroy_ah(9), irdma_create_user_ah(9), irdma_create_ah(9), irdma_query_ah(9),

and the device-init squad πŸ”₯: irdma_init_roce_device(9), irdma_init_iw_device(9), irdma_init_rdma_device(9), irdma_port_ibevent(9), irdma_ib_unregister_device(9), irdma_ib_register_device(9), irdma_ib_dealloc_device(9).

that is genuinely everyone, i counted, do not come for me πŸ’€


also hi, the file path ./drivers/infiniband/hw/irdma is where this whole party lives, iykyk πŸ“

k that's the page bestie, mwah πŸ’‹ β€” this one's from October 2026, irdma_reg_phys_mr(9), Kernel API Manual energy all the way, periodt πŸ‘‘βœ¨

πŸ“¦ where this page comes from