drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h- Extension
.h- Size
- 18076 bytes
- Lines
- 686
- Domain
- Driver Families
- Bucket
- drivers/infiniband
- 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/types.hpvrdma_verbs.h
Detected Declarations
struct pvrdma_gos_infostruct pvrdma_device_capsstruct pvrdma_ring_page_infostruct pvrdma_device_shared_regionstruct pvrdma_eqestruct pvrdma_cqnestruct pvrdma_cmd_hdrstruct pvrdma_cmd_resp_hdrstruct pvrdma_cmd_query_portstruct pvrdma_cmd_query_port_respstruct pvrdma_cmd_query_pkeystruct pvrdma_cmd_query_pkey_respstruct pvrdma_cmd_create_ucstruct pvrdma_cmd_create_uc_respstruct pvrdma_cmd_destroy_ucstruct pvrdma_cmd_create_pdstruct pvrdma_cmd_create_pd_respstruct pvrdma_cmd_destroy_pdstruct pvrdma_cmd_create_mrstruct pvrdma_cmd_create_mr_respstruct pvrdma_cmd_destroy_mrstruct pvrdma_cmd_create_cqstruct pvrdma_cmd_create_cq_respstruct pvrdma_cmd_resize_cqstruct pvrdma_cmd_resize_cq_respstruct pvrdma_cmd_destroy_cqstruct pvrdma_cmd_create_srqstruct pvrdma_cmd_create_srq_respstruct pvrdma_cmd_modify_srqstruct pvrdma_cmd_query_srqstruct pvrdma_cmd_query_srq_respstruct pvrdma_cmd_destroy_srqstruct pvrdma_cmd_create_qpstruct pvrdma_cmd_create_qp_respstruct pvrdma_cmd_create_qp_resp_v2struct pvrdma_cmd_modify_qpstruct pvrdma_cmd_query_qpstruct pvrdma_cmd_query_qp_respstruct pvrdma_cmd_destroy_qpstruct pvrdma_cmd_destroy_qp_respstruct pvrdma_cmd_create_bindstruct pvrdma_cmd_destroy_bindenum pvrdma_pci_resourceenum pvrdma_device_ctlenum pvrdma_intr_vectorenum pvrdma_intr_causeenum pvrdma_gos_bitsenum pvrdma_gos_type
Annotated Snippet
struct pvrdma_gos_info {
u32 gos_bits:2; /* W: PVRDMA_GOS_BITS_ */
u32 gos_type:4; /* W: PVRDMA_GOS_TYPE_ */
u32 gos_ver:16; /* W: Guest OS version. */
u32 gos_misc:10; /* W: Other. */
u32 pad; /* Pad to 8-byte alignment. */
};
struct pvrdma_device_caps {
u64 fw_ver; /* R: Query device. */
__be64 node_guid;
__be64 sys_image_guid;
u64 max_mr_size;
u64 page_size_cap;
u64 atomic_arg_sizes; /* EX verbs. */
u32 ex_comp_mask; /* EX verbs. */
u32 device_cap_flags2; /* EX verbs. */
u32 max_fa_bit_boundary; /* EX verbs. */
u32 log_max_atomic_inline_arg; /* EX verbs. */
u32 vendor_id;
u32 vendor_part_id;
u32 hw_ver;
u32 max_qp;
u32 max_qp_wr;
u32 device_cap_flags;
u32 max_sge;
u32 max_sge_rd;
u32 max_cq;
u32 max_cqe;
u32 max_mr;
u32 max_pd;
u32 max_qp_rd_atom;
u32 max_ee_rd_atom;
u32 max_res_rd_atom;
u32 max_qp_init_rd_atom;
u32 max_ee_init_rd_atom;
u32 max_ee;
u32 max_rdd;
u32 max_mw;
u32 max_raw_ipv6_qp;
u32 max_raw_ethy_qp;
u32 max_mcast_grp;
u32 max_mcast_qp_attach;
u32 max_total_mcast_qp_attach;
u32 max_ah;
u32 max_fmr;
u32 max_map_per_fmr;
u32 max_srq;
u32 max_srq_wr;
u32 max_srq_sge;
u32 max_uar;
u32 gid_tbl_len;
u16 max_pkeys;
u8 local_ca_ack_delay;
u8 phys_port_cnt;
u8 mode; /* PVRDMA_DEVICE_MODE_ */
u8 atomic_ops; /* PVRDMA_ATOMIC_OP_* bits */
u8 bmme_flags; /* FRWR Mem Mgmt Extensions */
u8 gid_types; /* PVRDMA_GID_TYPE_FLAG_ */
u32 max_fast_reg_page_list_len;
};
struct pvrdma_ring_page_info {
u32 num_pages; /* Num pages incl. header. */
u32 reserved; /* Reserved. */
u64 pdir_dma; /* Page directory PA. */
};
#pragma pack(push, 1)
struct pvrdma_device_shared_region {
u32 driver_version; /* W: Driver version. */
u32 pad; /* Pad to 8-byte align. */
struct pvrdma_gos_info gos_info; /* W: Guest OS information. */
u64 cmd_slot_dma; /* W: Command slot address. */
u64 resp_slot_dma; /* W: Response slot address. */
struct pvrdma_ring_page_info async_ring_pages;
/* W: Async ring page info. */
struct pvrdma_ring_page_info cq_ring_pages;
/* W: CQ ring page info. */
union {
u32 uar_pfn; /* W: UAR pageframe. */
u64 uar_pfn64; /* W: 64-bit UAR page frame. */
};
struct pvrdma_device_caps caps; /* R: Device capabilities. */
};
#pragma pack(pop)
/* Event types. Currently a 1:1 mapping with enum ib_event. */
Annotation
- Immediate include surface: `linux/types.h`, `pvrdma_verbs.h`.
- Detected declarations: `struct pvrdma_gos_info`, `struct pvrdma_device_caps`, `struct pvrdma_ring_page_info`, `struct pvrdma_device_shared_region`, `struct pvrdma_eqe`, `struct pvrdma_cqne`, `struct pvrdma_cmd_hdr`, `struct pvrdma_cmd_resp_hdr`, `struct pvrdma_cmd_query_port`, `struct pvrdma_cmd_query_port_resp`.
- Atlas domain: Driver Families / drivers/infiniband.
- 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.