drivers/scsi/mpi3mr/mpi3mr.h
Source file repositories/reference/linux-study-clean/drivers/scsi/mpi3mr/mpi3mr.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/mpi3mr/mpi3mr.h- Extension
.h- Size
- 51350 bytes
- Lines
- 1630
- Domain
- Driver Families
- Bucket
- drivers/scsi
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/blkdev.hlinux/blk-mq.hlinux/delay.hlinux/dmapool.hlinux/errno.hlinux/init.hlinux/io.hlinux/interrupt.hlinux/kernel.hlinux/miscdevice.hlinux/module.hlinux/pci.hlinux/aer.hlinux/poll.hlinux/sched.hlinux/slab.hlinux/types.hlinux/uaccess.hlinux/utsname.hlinux/workqueue.hlinux/unaligned.hscsi/scsi.hscsi/scsi_cmnd.hscsi/scsi_dbg.hscsi/scsi_device.hscsi/scsi_host.hscsi/scsi_tcq.huapi/scsi/scsi_bsg_mpi3mr.hscsi/scsi_transport_sas.hmpi/mpi30_transport.hmpi/mpi30_cnfg.hmpi/mpi30_image.h
Detected Declarations
struct mpi3mr_nvme_pt_sgestruct mpi3mr_buf_mapstruct mpi3mr_compimg_verstruct mpi3mr_ioc_factsstruct segmentsstruct op_req_qinfostruct op_reply_qinfostruct mpi3mr_intr_infostruct mpi3mr_throttle_group_infostruct mpi3mr_hba_portstruct mpi3mr_sas_portstruct mpi3mr_sas_phystruct mpi3mr_sas_nodestruct mpi3mr_enclosure_nodestruct tgt_dev_sas_satastruct tgt_dev_pciestruct tgt_dev_vdstruct mpi3mr_tgt_devstruct mpi3mr_stgt_priv_datastruct mpi3mr_sdev_priv_datastruct mpi3mr_drv_cmdstruct trigger_event_datastruct diag_buffer_descstruct dma_memory_descstruct chain_elementstruct scmd_privstruct mpi3mr_iocstruct mpi3mr_fwevtstruct delayed_dev_rmhs_nodestruct delayed_evt_ack_nodeenum mpi3mr_iocstateenum mpi3mr_reset_reasonenum queue_typeenum mpi3mr_dev_statefunction mpi3mr_tgtdev_getfunction mpi3mr_free_tgtdevfunction mpi3mr_tgtdev_put
Annotated Snippet
bool device_add);
void mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc);
void mpi3mr_refresh_expanders(struct mpi3mr_ioc *mrioc);
void mpi3mr_add_event_wait_for_device_refresh(struct mpi3mr_ioc *mrioc);
void mpi3mr_flush_drv_cmds(struct mpi3mr_ioc *mrioc);
void mpi3mr_flush_cmds_for_unrecovered_controller(struct mpi3mr_ioc *mrioc);
void mpi3mr_free_enclosure_list(struct mpi3mr_ioc *mrioc);
int mpi3mr_process_admin_reply_q(struct mpi3mr_ioc *mrioc);
void mpi3mr_expander_node_remove(struct mpi3mr_ioc *mrioc,
struct mpi3mr_sas_node *sas_expander);
void mpi3mr_alloc_diag_bufs(struct mpi3mr_ioc *mrioc);
int mpi3mr_post_diag_bufs(struct mpi3mr_ioc *mrioc);
int mpi3mr_issue_diag_buf_release(struct mpi3mr_ioc *mrioc,
struct diag_buffer_desc *diag_buffer);
void mpi3mr_release_diag_bufs(struct mpi3mr_ioc *mrioc, u8 skip_rel_action);
void mpi3mr_set_trigger_data_in_hdb(struct diag_buffer_desc *hdb,
u8 type, union mpi3mr_trigger_data *trigger_data, bool force);
int mpi3mr_refresh_trigger(struct mpi3mr_ioc *mrioc, u8 page_type);
struct diag_buffer_desc *mpi3mr_diag_buffer_for_type(struct mpi3mr_ioc *mrioc,
u8 buf_type);
int mpi3mr_issue_diag_buf_post(struct mpi3mr_ioc *mrioc,
struct diag_buffer_desc *diag_buffer);
void mpi3mr_set_trigger_data_in_all_hdb(struct mpi3mr_ioc *mrioc,
u8 type, union mpi3mr_trigger_data *trigger_data, bool force);
void mpi3mr_reply_trigger(struct mpi3mr_ioc *mrioc, u16 iocstatus,
u32 iocloginfo);
void mpi3mr_hdb_trigger_data_event(struct mpi3mr_ioc *mrioc,
struct trigger_event_data *event_data);
void mpi3mr_scsisense_trigger(struct mpi3mr_ioc *mrioc, u8 senseky, u8 asc,
u8 ascq);
void mpi3mr_event_trigger(struct mpi3mr_ioc *mrioc, u8 event);
void mpi3mr_global_trigger(struct mpi3mr_ioc *mrioc, u64 trigger_data);
void mpi3mr_hdbstatuschg_evt_th(struct mpi3mr_ioc *mrioc,
struct mpi3_event_notification_reply *event_reply);
#endif /*MPI3MR_H_INCLUDED*/
Annotation
- Immediate include surface: `linux/blkdev.h`, `linux/blk-mq.h`, `linux/delay.h`, `linux/dmapool.h`, `linux/errno.h`, `linux/init.h`, `linux/io.h`, `linux/interrupt.h`.
- Detected declarations: `struct mpi3mr_nvme_pt_sge`, `struct mpi3mr_buf_map`, `struct mpi3mr_compimg_ver`, `struct mpi3mr_ioc_facts`, `struct segments`, `struct op_req_qinfo`, `struct op_reply_qinfo`, `struct mpi3mr_intr_info`, `struct mpi3mr_throttle_group_info`, `struct mpi3mr_hba_port`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.