hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/hfi1/user_sdma.h
....@@ -1,6 +1,7 @@
11 #ifndef _HFI1_USER_SDMA_H
22 #define _HFI1_USER_SDMA_H
33 /*
4
+ * Copyright(c) 2020 - Cornelis Networks, Inc.
45 * Copyright(c) 2015 - 2018 Intel Corporation.
56 *
67 * This file is provided under a dual BSD/GPLv2 license. When using or
....@@ -52,6 +53,7 @@
5253 #include "common.h"
5354 #include "iowait.h"
5455 #include "user_exp_rcv.h"
56
+#include "mmu_rb.h"
5557
5658 /* The maximum number of Data io vectors per message/request */
5759 #define MAX_VECTORS_PER_REQ 8
....@@ -110,12 +112,6 @@
110112 SDMA_PKT_Q_DEFERRED,
111113 };
112114
113
-/*
114
- * Maximum retry attempts to submit a TX request
115
- * before putting the process to sleep.
116
- */
117
-#define MAX_DEFER_RETRY_COUNT 1
118
-
119115 #define SDMA_IOWAIT_TIMEOUT 1000 /* in milliseconds */
120116
121117 #define SDMA_DBG(req, fmt, ...) \
....@@ -139,7 +135,6 @@
139135 unsigned long unpinned;
140136 struct mmu_rb_handler *handler;
141137 atomic_t n_locked;
142
- struct mm_struct *mm;
143138 };
144139
145140 struct hfi1_user_sdma_comp_q {
....@@ -150,7 +145,6 @@
150145 struct sdma_mmu_node {
151146 struct mmu_rb_node rb;
152147 struct hfi1_user_sdma_pkt_q *pq;
153
- atomic_t refcount;
154148 struct page **pages;
155149 unsigned int npages;
156150 };
....@@ -158,16 +152,11 @@
158152 struct user_sdma_iovec {
159153 struct list_head list;
160154 struct iovec iov;
161
- /* number of pages in this vector */
162
- unsigned int npages;
163
- /* array of pinned pages for this vector */
164
- struct page **pages;
165155 /*
166156 * offset into the virtual address space of the vector at
167157 * which we last left off.
168158 */
169159 u64 offset;
170
- struct sdma_mmu_node *node;
171160 };
172161
173162 /* evict operation argument */
....@@ -204,12 +193,12 @@
204193 s8 ahg_idx;
205194
206195 /* Writeable fields shared with interrupt */
207
- u64 seqcomp ____cacheline_aligned_in_smp;
208
- u64 seqsubmitted;
196
+ u16 seqcomp ____cacheline_aligned_in_smp;
197
+ u16 seqsubmitted;
209198
210199 /* Send side fields */
211200 struct list_head txps ____cacheline_aligned_in_smp;
212
- u64 seqnum;
201
+ u16 seqnum;
213202 /*
214203 * KDETH.OFFSET (TID) field
215204 * The offset can cover multiple packets, depending on the
....@@ -245,7 +234,7 @@
245234 struct list_head list;
246235 struct user_sdma_request *req;
247236 u16 flags;
248
- u64 seqnum;
237
+ u16 seqnum;
249238 };
250239
251240 int hfi1_user_sdma_alloc_queues(struct hfi1_ctxtdata *uctxt,
....@@ -256,4 +245,9 @@
256245 struct iovec *iovec, unsigned long dim,
257246 unsigned long *count);
258247
248
+static inline struct mm_struct *mm_from_sdma_node(struct sdma_mmu_node *node)
249
+{
250
+ return node->rb.handler->mn.mm;
251
+}
252
+
259253 #endif /* _HFI1_USER_SDMA_H */