Skip to content

Commit f8a101f

Browse files
Matthew Wilcox (Oracle)akpm00
authored andcommitted
i915: convert i915_gpu_error to use a folio_batch
Remove one of the last remaining users of pagevec. Link: https://lkml.kernel.org/r/20230621164557.3510324-9-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent ce06442 commit f8a101f

1 file changed

Lines changed: 25 additions & 25 deletions

File tree

drivers/gpu/drm/i915/i915_gpu_error.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -187,64 +187,64 @@ i915_error_printer(struct drm_i915_error_state_buf *e)
187187
}
188188

189189
/* single threaded page allocator with a reserved stash for emergencies */
190-
static void pool_fini(struct pagevec *pv)
190+
static void pool_fini(struct folio_batch *fbatch)
191191
{
192-
pagevec_release(pv);
192+
folio_batch_release(fbatch);
193193
}
194194

195-
static int pool_refill(struct pagevec *pv, gfp_t gfp)
195+
static int pool_refill(struct folio_batch *fbatch, gfp_t gfp)
196196
{
197-
while (pagevec_space(pv)) {
198-
struct page *p;
197+
while (folio_batch_space(fbatch)) {
198+
struct folio *folio;
199199

200-
p = alloc_page(gfp);
201-
if (!p)
200+
folio = folio_alloc(gfp, 0);
201+
if (!folio)
202202
return -ENOMEM;
203203

204-
pagevec_add(pv, p);
204+
folio_batch_add(fbatch, folio);
205205
}
206206

207207
return 0;
208208
}
209209

210-
static int pool_init(struct pagevec *pv, gfp_t gfp)
210+
static int pool_init(struct folio_batch *fbatch, gfp_t gfp)
211211
{
212212
int err;
213213

214-
pagevec_init(pv);
214+
folio_batch_init(fbatch);
215215

216-
err = pool_refill(pv, gfp);
216+
err = pool_refill(fbatch, gfp);
217217
if (err)
218-
pool_fini(pv);
218+
pool_fini(fbatch);
219219

220220
return err;
221221
}
222222

223-
static void *pool_alloc(struct pagevec *pv, gfp_t gfp)
223+
static void *pool_alloc(struct folio_batch *fbatch, gfp_t gfp)
224224
{
225-
struct page *p;
225+
struct folio *folio;
226226

227-
p = alloc_page(gfp);
228-
if (!p && pagevec_count(pv))
229-
p = pv->pages[--pv->nr];
227+
folio = folio_alloc(gfp, 0);
228+
if (!folio && folio_batch_count(fbatch))
229+
folio = fbatch->folios[--fbatch->nr];
230230

231-
return p ? page_address(p) : NULL;
231+
return folio ? folio_address(folio) : NULL;
232232
}
233233

234-
static void pool_free(struct pagevec *pv, void *addr)
234+
static void pool_free(struct folio_batch *fbatch, void *addr)
235235
{
236-
struct page *p = virt_to_page(addr);
236+
struct folio *folio = virt_to_folio(addr);
237237

238-
if (pagevec_space(pv))
239-
pagevec_add(pv, p);
238+
if (folio_batch_space(fbatch))
239+
folio_batch_add(fbatch, folio);
240240
else
241-
__free_page(p);
241+
folio_put(folio);
242242
}
243243

244244
#ifdef CONFIG_DRM_I915_COMPRESS_ERROR
245245

246246
struct i915_vma_compress {
247-
struct pagevec pool;
247+
struct folio_batch pool;
248248
struct z_stream_s zstream;
249249
void *tmp;
250250
};
@@ -381,7 +381,7 @@ static void err_compression_marker(struct drm_i915_error_state_buf *m)
381381
#else
382382

383383
struct i915_vma_compress {
384-
struct pagevec pool;
384+
struct folio_batch pool;
385385
};
386386

387387
static bool compress_init(struct i915_vma_compress *c)

0 commit comments

Comments
 (0)