drivers/infiniband/hw/mlx5/dm.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/mlx5/dm.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/mlx5/dm.h- Extension
.h- Size
- 1757 bytes
- Lines
- 69
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
mlx5_ib.h
Detected Declarations
struct mlx5_ib_dmstruct mlx5_ib_dm_op_entrystruct mlx5_ib_dm_memicstruct mlx5_ib_dm_icm
Annotated Snippet
struct mlx5_ib_dm {
struct ib_dm ibdm;
u32 type;
phys_addr_t dev_addr;
size_t size;
};
struct mlx5_ib_dm_op_entry {
struct mlx5_user_mmap_entry mentry;
phys_addr_t op_addr;
struct mlx5_ib_dm_memic *dm;
u8 op;
};
struct mlx5_ib_dm_memic {
struct mlx5_ib_dm base;
struct mlx5_user_mmap_entry mentry;
struct xarray ops;
struct mutex ops_xa_lock;
struct kref ref;
size_t req_length;
};
struct mlx5_ib_dm_icm {
struct mlx5_ib_dm base;
u32 obj_id;
};
static inline struct mlx5_ib_dm *to_mdm(struct ib_dm *ibdm)
{
return container_of(ibdm, struct mlx5_ib_dm, ibdm);
}
static inline struct mlx5_ib_dm_memic *to_memic(struct ib_dm *ibdm)
{
return container_of(ibdm, struct mlx5_ib_dm_memic, base.ibdm);
}
static inline struct mlx5_ib_dm_icm *to_icm(struct ib_dm *ibdm)
{
return container_of(ibdm, struct mlx5_ib_dm_icm, base.ibdm);
}
struct ib_dm *mlx5_ib_alloc_dm(struct ib_device *ibdev,
struct ib_ucontext *context,
struct ib_dm_alloc_attr *attr,
struct uverbs_attr_bundle *attrs);
void mlx5_ib_dm_mmap_free(struct mlx5_ib_dev *dev,
struct mlx5_user_mmap_entry *mentry);
void mlx5_cmd_dealloc_memic(struct mlx5_dm *dm, phys_addr_t addr,
u64 length);
void mlx5_cmd_dealloc_memic_op(struct mlx5_dm *dm, phys_addr_t addr,
u8 operation);
#endif /* _MLX5_IB_DM_H */
Annotation
- Immediate include surface: `mlx5_ib.h`.
- Detected declarations: `struct mlx5_ib_dm`, `struct mlx5_ib_dm_op_entry`, `struct mlx5_ib_dm_memic`, `struct mlx5_ib_dm_icm`.
- Atlas domain: Driver Families / drivers/infiniband.
- Implementation status: source implementation candidate.
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.