mpi3mr_encl...d_chg_evt_bh(9)
π NAME π
mpi3mr_encldev_add_chg_evt_bh β ok so this one's the Enclosure evt bottomhalf, bestie π
(yes it's officially spelled "bottomhalf", we don't make the rules, we just slay in them)
It lives in the Kernel API Manual, and the header up top is doing that truncated mpi3mr_encl...d_chg_evt_bh(9) thing β iconic abbreviation energy, ngl π«Ά
β¨ SYNOPSIS β¨
void mpi3mr_encldev_add_chg_evt_bh (struct mpi3mr_ioc *mrioc , struct
mpi3mr_fwevt *fwevt );
That's it. One void, two pointers, zero drama πΈ (okay maybe a little drama, it's a bottom half)
π ARGUMENTS π
mriocβ your Adapter instance reference π¦ like, the whole card she's working withfwevtβ the Firmware event reference π the specific event literal, handed over on a platter
π§ DESCRIPTION π§
So here's the vibe check π if logging is enabled, this function prints information about the Enclosure device status events or the Enclosure add events. Basically it's the gossip girl of enclosure telemetry β it's telling you what happened, but only if the logging is turned on, iykyk π
And then β the main character part β it adds or removes the enclosure from the controller's internal list of enclosures. Like an exclusive guest list at the club: you're either on it or you're off it, no in-between πβ¨
So: log (maybe), then add-or-remove from the internal list. That's the whole arc π¬
β RETURN β
Nothing. π Literally nothing. void in the synopsis, nothing on the way out β she gives and gives and asks for zero credit, lowkey the most selfless queen in the driver π«Ά
π SEE ALSO π
First up, the Kernel file she lives in β like her literal address π
./drivers/scsi/mpi3mr/mpi3mr_os.c
And now the full squad roll-call, no cap, every single one of them ππ₯
mpi3mr_host_tag_for_scmd(9)mpi3mr_scmd_from_host_tag(9)mpi3mr_clear_scmd_priv(9)mpi3mr_fwevt_free(9)mpi3mr_fwevt_get(9)mpi3mr_fwevt_put(9)mpi3mr_alloc_fwevt(9)mpi3mr_fwevt_add_to_list(9)mpi3mr_hdb_trigger_data_event(9)mpi3mr_fwevt_del_from_list(9)mpi3mr_dequeue_fwevt(9)mpi3mr_cancel_work(9)mpi3mr_cleanup_fwevt_list(9)mpi3mr_queue_qd_reduction_event(9)mpi3mr_invalidate_devhandles(9)mpi3mr_print_scmd(9)mpi3mr_flush_scmd(9)mpi3mr_count_dev_pending(9)mpi3mr_count_tgt_pending(9)mpi3mr_flush_host_io(9)mpi3mr_flush_cmds_for_unrecovered_controller(9)mpi3mr_alloc_tgtdev(9)mpi3mr_tgtdev_add_to_list(9)mpi3mr_tgtdev_del_from_list(9)__mpi3mr_get_tgtdev_by_handle(9)mpi3mr_get_tgtdev_by_handle(9)__mpi3mr_get_tgtdev_by_perst_id(9)mpi3mr_get_tgtdev_by_perst_id(9)__mpi3mr_get_tgtdev_from_tgtpriv(9)mpi3mr_set_io_divert_for_all_vd_in_tg(9)mpi3mr_print_device_event_notice(9)mpi3mr_remove_tgtdev_from_host(9)mpi3mr_report_tgtdev_to_host(9)mpi3mr_change_queue_depth(9)mpi3mr_update_sdev(9)mpi3mr_refresh_tgtdevs(9)mpi3mr_debug_dump_devpg0(9)mpi3mr_update_tgtdev(9)mpi3mr_devstatuschg_evt_bh(9)mpi3mr_devinfochg_evt_bh(9)mpi3mr_free_enclosure_list(9)mpi3mr_enclosure_find_by_handle(9)mpi3mr_process_trigger_data_event_bh(9)mpi3mr_encldev_add_chg_evt_debug(9)mpi3mr_sastopochg_evt_debug(9)mpi3mr_sastopochg_evt_bh(9)mpi3mr_pcietopochg_evt_debug(9)mpi3mr_pcietopochg_evt_bh(9)mpi3mr_logdata_evt_bh(9)mpi3mr_update_sdev_qd(9)mpi3mr_set_qd_for_all_vd_in_tg(9)mpi3mr_fwevt_bh(9)mpi3mr_fwevt_worker(9)mpi3mr_create_tgtdev(9)mpi3mr_flush_delayed_cmd_lists(9)mpi3mr_dev_rmhs_complete_iou(9)mpi3mr_dev_rmhs_complete_tm(9)mpi3mr_dev_rmhs_send_tm(9)mpi3mr_complete_evt_ack(9)mpi3mr_send_event_ack(9)mpi3mr_pcietopochg_evt_th(9)mpi3mr_sastopochg_evt_th(9)mpi3mr_devstatuschg_evt_th(9)mpi3mr_preparereset_evt_th(9)mpi3mr_energypackchg_evt_th(9)mpi3mr_cablemgmt_evt_th(9)mpi3mr_add_event_wait_for_device_refresh(9)mpi3mr_os_handle_events(9)mpi3mr_setup_eedp(9)mpi3mr_build_sense_buffer(9)mpi3mr_map_eedp_error(9)mpi3mr_process_op_reply_desc(9)mpi3mr_get_chain_idx(9)mpi3mr_prepare_sg_scmd(9)mpi3mr_build_sg_scmd(9)mpi3mr_tm_response_name(9)mpi3mr_issue_tm(9)mpi3mr_bios_param(9)mpi3mr_map_queues(9)mpi3mr_get_fw_pending_ios(9)mpi3mr_print_pending_host_io(9)mpi3mr_wait_for_host_io(9)mpi3mr_setup_divert_ws(9)mpi3mr_eh_host_reset(9)mpi3mr_eh_bus_reset(9)mpi3mr_eh_target_reset(9)mpi3mr_eh_dev_reset(9)mpi3mr_eh_abort(9)mpi3mr_scan_start(9)mpi3mr_scan_finished(9)mpi3mr_sdev_destroy(9)mpi3mr_target_destroy(9)mpi3mr_sdev_configure(9)mpi3mr_sdev_init(9)mpi3mr_target_alloc(9)mpi3mr_check_return_unmap(9)mpi3mr_allow_scmd_to_fw(9)mpi3mr_qcmd(9)mpi3mr_init_drv_cmd(9)osintfc_mrioc_security_status(9)mpi3mr_probe(9)mpi3mr_remove(9)mpi3mr_shutdown(9)mpi3mr_suspend(9)mpi3mr_resume(9)mpi3mr_pcierr_error_detected(9)mpi3mr_pcierr_slot_reset(9)mpi3mr_pcierr_resume(9)mpi3mr_pcierr_mmio_enabled(9)
and that's the whole page, bestie β no notes, ate and left zero crumbs π β¨
Signed off from ./drivers/scsi/mpi3mr, dated October 2026 β she's a lil vintage, she's a lil timeless, and she'll see you in the next bottom half π¦ππ
π¦ 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