mpi3mr_map_data_buffer_dma(9)
π mpi3mr_map_data_buffer_dma(9) β like, the Kernel API Manual era π
okay bestie, buckle up, because this one is actually kind of the moment. we're in the Kernel API Manual, function mpi3mr_map_data_buffer_dma. yes the name is a mouthful, no you're not allowed to abbreviate it, it's giving "my parents named me after the whole alphabet" energy but we love her π
β¨ NAME β¨
mpi3mr_map_data_buffer_dma β build dma descriptors for data buffers. that's it, that's the whole job, she builds dma descriptors for data buffers and she does it well π¦
πΈ SYNOPSIS πΈ
int mpi3mr_map_data_buffer_dma (struct mpi3mr_ioc *mrioc , struct
mpi3mr_buf_map *drv_buf , u16 desc_count );
look at her go. three args, returns an int, absolute main character energy π
π ARGUMENTS π
mriocβ the adapter instance reference. yep, your whole adapter, just vibing there as a pointer πdrv_bufβ the buffer map descriptor. this is the little map that says where stuff goes πΊοΈdesc_countβ the number of dma descriptors that have already been consumed. key word: already. she's counting what's gone, not what's left π
π DESCRIPTION π
okay so here's the tea β β this function does two things and she's highkey good at both:
- she computes how many pre-allocated DMA descriptors are required for the given data buffer π₯
- and if that number of descriptors is free, she sets up the mapping of the scattered DMA address to the given data buffer β¨
and then, plot twist: if the data direction of the buffer is DMA_TO_DEVICE, the actual data gets copied over to the DMA buffers. not me being obsessed with a conditional π so basically: work out how many descriptors you need, check they're actually available, map the scattered DMA address onto the buffer, and copy the real data across when the direction is DMA_TO_DEVICE. literal icon behaviour π§
β RETURN β
0on success π (slay)-1on failure π (not slay)
π¦ SEE ALSO π¦
bestie there are so many of these, and every single one ate, so we're listing them all. no skips, no cuts, we respect the whole family reunion π
- Kernel file
./drivers/scsi/mpi3mr/mpi3mr_app.c mpi3mr_alloc_trace_buffer(9)mpi3mr_alloc_diag_bufs(9)mpi3mr_issue_diag_buf_post(9)mpi3mr_post_diag_bufs(9)mpi3mr_issue_diag_buf_release(9)mpi3mr_process_trigger(9)mpi3mr_global_trigger(9)mpi3mr_scsisense_trigger(9)mpi3mr_event_trigger(9)mpi3mr_reply_trigger(9)mpi3mr_get_num_trigger(9)mpi3mr_refresh_trigger(9)mpi3mr_release_diag_bufs(9)mpi3mr_set_trigger_data_in_hdb(9)mpi3mr_set_trigger_data_in_all_hdb(9)mpi3mr_hdbstatuschg_evt_th(9)mpi3mr_diag_buffer_for_type(9)mpi3mr_bsg_pel_abort(9)mpi3mr_bsg_verify_adapter(9)mpi3mr_bsg_refresh_hdb_triggers(9)mpi3mr_bsg_upload_hdb(9)mpi3mr_bsg_repost_hdb(9)mpi3mr_bsg_query_hdb(9)mpi3mr_enable_logdata(9)mpi3mr_get_logdata(9)mpi3mr_bsg_pel_enable(9)mpi3mr_get_all_tgt_info(9)mpi3mr_get_change_count(9)mpi3mr_bsg_adp_reset(9)mpi3mr_bsg_populate_adpinfo(9)mpi3mr_bsg_process_drv_cmds(9)mpi3mr_total_num_ioctl_sges(9)mpi3mr_bsg_build_sgl(9)mpi3mr_get_nvme_data_fmt(9)mpi3mr_build_nvme_sgl(9)mpi3mr_build_nvme_prp(9)mpi3mr_bsg_process_mpt_cmds(9)mpi3mr_app_save_logdata_th(9)mpi3mr_bsg_request(9)mpi3mr_bsg_exit(9)mpi3mr_bsg_node_release(9)mpi3mr_bsg_init(9)version_fw_show(9)fw_queue_depth_show(9)op_req_q_count_show(9)reply_queue_count_show(9)reply_qfull_count_show(9)logging_level_show(9)logging_level_store(9)adp_state_show(9)fwfault_count_show(9)sas_address_show(9)device_handle_show(9)persistent_id_show(9)sas_ncq_prio_supported_show(9)sas_ncq_prio_enable_show(9)
fr fr, that's the whole page. every flag, every function, every (9) β all present and accounted for π«Ά
and that's a wrap bestie!! π this gem lives over in ./drivers/scsi/mpi3mr, dated October 2026, and honestly? iconic of her. go map those buffers, ily, bye ππβ¨
π¦ 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