Skip to content

Commit aaa2f4e

Browse files
Matthew Wilcox (Oracle)dumbbell
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 c4b95c7 commit aaa2f4e

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
@@ -189,64 +189,64 @@ i915_error_printer(struct drm_i915_error_state_buf *e)
189189
}
190190

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

197-
static int pool_refill(struct pagevec *pv, gfp_t gfp)
197+
static int pool_refill(struct folio_batch *fbatch, gfp_t gfp)
198198
{
199-
while (pagevec_space(pv)) {
200-
struct page *p;
199+
while (folio_batch_space(fbatch)) {
200+
struct folio *folio;
201201

202-
p = alloc_page(gfp);
203-
if (!p)
202+
folio = folio_alloc(gfp, 0);
203+
if (!folio)
204204
return -ENOMEM;
205205

206-
pagevec_add(pv, p);
206+
folio_batch_add(fbatch, folio);
207207
}
208208

209209
return 0;
210210
}
211211

212-
static int pool_init(struct pagevec *pv, gfp_t gfp)
212+
static int pool_init(struct folio_batch *fbatch, gfp_t gfp)
213213
{
214214
int err;
215215

216-
pagevec_init(pv);
216+
folio_batch_init(fbatch);
217217

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

222222
return err;
223223
}
224224

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

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

233-
return p ? page_address(p) : NULL;
233+
return folio ? folio_address(folio) : NULL;
234234
}
235235

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

240-
if (pagevec_space(pv))
241-
pagevec_add(pv, p);
240+
if (folio_batch_space(fbatch))
241+
folio_batch_add(fbatch, folio);
242242
else
243-
__free_page(p);
243+
folio_put(folio);
244244
}
245245

246246
#ifdef CONFIG_DRM_I915_COMPRESS_ERROR
247247

248248
struct i915_vma_compress {
249-
struct pagevec pool;
249+
struct folio_batch pool;
250250
struct z_stream_s zstream;
251251
void *tmp;
252252
};
@@ -387,7 +387,7 @@ static void err_compression_marker(struct drm_i915_error_state_buf *m)
387387
#else
388388

389389
struct i915_vma_compress {
390-
struct pagevec pool;
390+
struct folio_batch pool;
391391
};
392392

393393
static bool compress_init(struct i915_vma_compress *c)

0 commit comments

Comments
 (0)