Lines Matching refs:cur

65  * @cur: cursor object to initialize
71 struct xe_res_cursor *cur)
73 cur->sgl = NULL;
79 cur->mem_type = res->mem_type;
81 switch (cur->mem_type) {
106 cur->mm = mm;
107 cur->start = drm_buddy_block_offset(block) + start;
108 cur->size = min(drm_buddy_block_size(mm, block) - start,
110 cur->remaining = size;
111 cur->node = block;
121 cur->start = start;
122 cur->size = size;
123 cur->remaining = size;
124 cur->node = NULL;
125 cur->mem_type = XE_PL_TT;
129 static inline void __xe_res_sg_next(struct xe_res_cursor *cur)
131 struct scatterlist *sgl = cur->sgl;
132 u64 start = cur->start;
140 cur->start = start;
141 cur->size = sg_dma_len(sgl) - start;
142 cur->sgl = sgl;
151 * @cur: cursor object to initialize
157 struct xe_res_cursor *cur)
162 cur->node = NULL;
163 cur->start = start;
164 cur->remaining = size;
165 cur->size = 0;
166 cur->sgl = sg->sgl;
167 cur->mem_type = XE_PL_TT;
168 __xe_res_sg_next(cur);
174 * @cur: the cursor to advance
179 static inline void xe_res_next(struct xe_res_cursor *cur, u64 size)
185 XE_WARN_ON(size > cur->remaining);
187 cur->remaining -= size;
188 if (!cur->remaining)
191 if (cur->size > size) {
192 cur->size -= size;
193 cur->start += size;
197 if (cur->sgl) {
198 cur->start += size;
199 __xe_res_sg_next(cur);
203 switch (cur->mem_type) {
207 start = size - cur->size;
208 block = cur->node;
214 while (start >= drm_buddy_block_size(cur->mm, block)) {
215 start -= drm_buddy_block_size(cur->mm, block);
221 cur->start = drm_buddy_block_offset(block) + start;
222 cur->size = min(drm_buddy_block_size(cur->mm, block) - start,
223 cur->remaining);
224 cur->node = block;
234 * @cur: the cursor to return the dma address from
236 static inline u64 xe_res_dma(const struct xe_res_cursor *cur)
238 return cur->sgl ? sg_dma_address(cur->sgl) + cur->start : cur->start;