mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-27 18:43:12 -04:00
Enable user space applications to access the PHC state page when firmware RDMA completion timestamp is supported. This mapping allows user space to convert RDMA completion timestamps to system wall time without kernel transitions, minimizing latency overhead. Applications can directly read the PHC state through mmap, enabling efficient timestamp correlation for precision timing applications. Co-developed-by: Allen Hubbe <allen.hubbe@amd.com> Signed-off-by: Allen Hubbe <allen.hubbe@amd.com> Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com> Link: https://patch.msgid.link/20260610154216.712374-4-abhijit.gangurde@amd.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
117 lines
1.8 KiB
C
117 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
/* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */
|
|
|
|
#ifndef IONIC_ABI_H
|
|
#define IONIC_ABI_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define IONIC_ABI_VERSION 1
|
|
|
|
#define IONIC_EXPDB_64 1
|
|
#define IONIC_EXPDB_128 2
|
|
#define IONIC_EXPDB_256 4
|
|
#define IONIC_EXPDB_512 8
|
|
|
|
#define IONIC_EXPDB_SQ 1
|
|
#define IONIC_EXPDB_RQ 2
|
|
|
|
#define IONIC_CMB_ENABLE 1
|
|
#define IONIC_CMB_REQUIRE 2
|
|
#define IONIC_CMB_EXPDB 4
|
|
#define IONIC_CMB_WC 8
|
|
#define IONIC_CMB_UC 16
|
|
|
|
struct ionic_ctx_req {
|
|
__u32 rsvd[2];
|
|
};
|
|
|
|
struct ionic_ctx_resp {
|
|
__u32 rsvd;
|
|
__u32 page_shift;
|
|
|
|
__aligned_u64 dbell_offset;
|
|
|
|
__u16 version;
|
|
__u8 qp_opcodes;
|
|
__u8 admin_opcodes;
|
|
|
|
__u8 sq_qtype;
|
|
__u8 rq_qtype;
|
|
__u8 cq_qtype;
|
|
__u8 admin_qtype;
|
|
|
|
__u8 max_stride;
|
|
__u8 max_spec;
|
|
__u8 udma_count;
|
|
__u8 expdb_mask;
|
|
__u8 expdb_qtypes;
|
|
|
|
__u8 rsvd2[3];
|
|
__aligned_u64 phc_offset;
|
|
};
|
|
|
|
struct ionic_qdesc {
|
|
__aligned_u64 addr;
|
|
__u32 size;
|
|
__u16 mask;
|
|
__u8 depth_log2;
|
|
__u8 stride_log2;
|
|
};
|
|
|
|
struct ionic_ah_resp {
|
|
__u32 ahid;
|
|
__u32 pad;
|
|
};
|
|
|
|
struct ionic_cq_req {
|
|
struct ionic_qdesc cq[2];
|
|
__u8 udma_mask;
|
|
__u8 rsvd[7];
|
|
};
|
|
|
|
struct ionic_cq_resp {
|
|
__u32 cqid[2];
|
|
__u8 udma_mask;
|
|
__u8 rsvd[7];
|
|
};
|
|
|
|
struct ionic_qp_req {
|
|
struct ionic_qdesc sq;
|
|
struct ionic_qdesc rq;
|
|
__u8 sq_spec;
|
|
__u8 rq_spec;
|
|
__u8 sq_cmb;
|
|
__u8 rq_cmb;
|
|
__u8 udma_mask;
|
|
__u8 rsvd[3];
|
|
};
|
|
|
|
struct ionic_qp_resp {
|
|
__u32 qpid;
|
|
__u8 sq_cmb;
|
|
__u8 rq_cmb;
|
|
__u8 udma_idx;
|
|
__u8 rsvd[1];
|
|
__aligned_u64 sq_cmb_offset;
|
|
__aligned_u64 rq_cmb_offset;
|
|
};
|
|
|
|
struct ionic_srq_req {
|
|
struct ionic_qdesc rq;
|
|
__u8 rq_spec;
|
|
__u8 rq_cmb;
|
|
__u8 udma_mask;
|
|
__u8 rsvd[5];
|
|
};
|
|
|
|
struct ionic_srq_resp {
|
|
__u32 qpid;
|
|
__u8 rq_cmb;
|
|
__u8 udma_idx;
|
|
__u8 rsvd[2];
|
|
__aligned_u64 rq_cmb_offset;
|
|
};
|
|
|
|
#endif /* IONIC_ABI_H */
|