pmcraid_all...ntrol_blocks(9)
π pmcraid_allocate_control_blocks β¨
okay so bestie, welcome to the Kernel API Manual β this one's about pmcraid_allocate_control_blocks, and it's literally the moment our scsi driver gets its fancy DMA control blocks sorted. it's giving "getting your whole life together before the party starts" π
πΈ NAME πΈ
pmcraid_allocate_control_blocks β allocates memory control blocks π
π¦ SYNOPSIS π¦
int pmcraid_allocate_control_blocks (struct pmcraid_instance *pinstance
);
yeah that's the whole vibe. one arg, one int back. iconic honestly.
β¨ ARGUMENTS β¨
pinstanceβ pointer to the per adapter instance structure. that's your adapter's whole personality file, and we're handing over a pointer to it π
π DESCRIPTION π
so what this function actually does: it allocates PCI memory for DMAable buffers π
and the big three are IOARCB, IOADLs and IOASAs. those are the control blocks, and they need memory the hardware can DMA into, hence the PCI memory situation.
and the timing? super important β this is called after the command blocks are already allocated. so not first, bestie. command blocks first, then this. the way that ordering matters is lowkey everything π
ngl the description is short but that's the tea β DMAable buffers, PCI memory, after command blocks. no extra lore.
π Return Value π
0β in case it can allocate all control blocks. slay, full success β¨-ENOMEMβ otherwise, i.e. no memory to be found. the classic out-of-memory heartbreak π
π SEE ALSO π
and here's the whole friend group, so you can go read up on everyone else too π«Ά
./drivers/scsipmcraid_sdev_init(9)pmcraid_sdev_configure(9)pmcraid_sdev_destroy(9)pmcraid_change_queue_depth(9)pmcraid_init_cmdblk(9)pmcraid_reinit_cmdblk(9)pmcraid_get_free_cmd(9)pmcraid_return_cmd(9)pmcraid_read_interrupts(9)pmcraid_disable_interrupts(9)pmcraid_enable_interrupts(9)pmcraid_clr_trans_op(9)pmcraid_reset_type(9)pmcraid_bist_done(9)pmcraid_start_bist(9)pmcraid_reset_alert_done(9)pmcraid_reset_alert(9)pmcraid_timeout_handler(9)pmcraid_internal_done(9)pmcraid_reinit_cfgtable_done(9)pmcraid_erp_done(9)_pmcraid_fire_command(9)pmcraid_send_cmd(9)pmcraid_ioa_shutdown_done(9)pmcraid_ioa_shutdown(9)pmcraid_get_fwversion_done(9)pmcraid_get_fwversion(9)pmcraid_identify_hrrq(9)pmcraid_send_hcam_cmd(9)pmcraid_init_hcam(9)pmcraid_send_hcam(9)pmcraid_prepare_cancel_cmd(9)pmcraid_cancel_hcam(9)pmcraid_cancel_ccn(9)pmcraid_cancel_ldn(9)pmcraid_expose_resource(9)pmcraid_netlink_init(9)pmcraid_netlink_release(9)pmcraid_notify_ccn(9)pmcraid_notify_ldn(9)pmcraid_notify_ioastate(9)pmcraid_handle_config_change(9)pmcraid_get_error_info(9)pmcraid_ioasc_logger(9)pmcraid_handle_error_log(9)pmcraid_process_ccn(9)pmcraid_process_ldn(9)pmcraid_register_hcams(9)pmcraid_unregister_hcams(9)pmcraid_reset_enable_ioa(9)pmcraid_soft_reset(9)pmcraid_get_dump(9)pmcraid_fail_outstanding_cmds(9)pmcraid_ioa_reset(9)pmcraid_initiate_reset(9)pmcraid_reset_reload(9)pmcraid_reset_bringdown(9)pmcraid_reset_bringup(9)pmcraid_request_sense(9)pmcraid_cancel_all(9)pmcraid_frame_auto_sense(9)pmcraid_error_handler(9)pmcraid_reset_device(9)_pmcraid_io_done(9)pmcraid_io_done(9)pmcraid_abort_cmd(9)pmcraid_abort_complete(9)pmcraid_eh_abort_handler(9)pmcraid_eh_device_reset_handler(9)pmcraid_eh_host_reset_handler(9)pmcraid_init_ioadls(9)pmcraid_build_ioadl(9)pmcraid_queuecommand_lck(9)pmcraid_ioctl_driver(9)pmcraid_check_ioctl_buffer(9)pmcraid_show_log_level(9)pmcraid_store_log_level(9)pmcraid_show_drv_version(9)pmcraid_show_adapter_id(9)pmcraid_isr(9)pmcraid_worker_function(9)pmcraid_tasklet_function(9)pmcraid_unregister_interrupt_handler(9)pmcraid_register_interrupt_handler(9)pmcraid_release_cmd_blocks(9)pmcraid_release_control_blocks(9)pmcraid_allocate_cmd_blocks(9)pmcraid_release_host_rrqs(9)pmcraid_allocate_host_rrqs(9)pmcraid_release_hcams(9)pmcraid_allocate_hcams(9)pmcraid_release_config_buffers(9)pmcraid_allocate_config_buffers(9)pmcraid_init_tasklets(9)pmcraid_kill_tasklets(9)pmcraid_release_buffers(9)pmcraid_init_buffers(9)pmcraid_reinit_buffers(9)pmcraid_init_instance(9)pmcraid_shutdown(9)pmcraid_setup_chrdev(9)pmcraid_release_chrdev(9)pmcraid_remove(9)pmcraid_suspend(9)pmcraid_resume(9)pmcraid_complete_ioa_reset(9)pmcraid_set_supported_devs(9)pmcraid_set_timestamp(9)pmcraid_init_res_table(9)pmcraid_querycfg(9)pmcraid_probe(9)pmcraid_init(9)pmcraid_exit(9)
that's the whole page bestie, every single function link kept intact, no cap π§ and for the little sign-off: this one lives in the source ./drivers/scsi, dated October 2026 β so like, future-dated and still iconic ππ
π¦ 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