summaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2022-08-13 17:47:37 +0200
committerMauro Carvalho Chehab <mchehab@kernel.org>2022-09-24 09:41:33 +0200
commitfce48bf10141953e55bd9ffb34de22dde7fdca03 (patch)
treec6b0a6009e82dc5d7742dc3187b36b1b2dd318e8 /drivers/staging
parent8519635cb292ee4e804e3f465a54b13447180366 (diff)
downloadlinux-stable-fce48bf10141953e55bd9ffb34de22dde7fdca03.tar.gz
linux-stable-fce48bf10141953e55bd9ffb34de22dde7fdca03.tar.bz2
linux-stable-fce48bf10141953e55bd9ffb34de22dde7fdca03.zip
media: atomisp: hmm_bo: Further simplify alloc_private_pages()
Further simplify alloc_private_pages(). Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/media/atomisp/pci/hmm/hmm_bo.c29
1 files changed, 6 insertions, 23 deletions
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index 275314241263..bb52171a9d87 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -642,21 +642,11 @@ static void free_private_bo_pages(struct hmm_buffer_object *bo,
/*Allocate pages which will be used only by ISP*/
static int alloc_private_pages(struct hmm_buffer_object *bo)
{
- int ret;
- unsigned int pgnr, blk_pgnr, alloc_pgnr;
+ const gfp_t gfp = __GFP_NOWARN | __GFP_RECLAIM | __GFP_FS;
struct page *pages;
- gfp_t gfp = GFP_NOWAIT | __GFP_NOWARN; /* REVISIT: need __GFP_FS too? */
- int i, j;
-
- pgnr = bo->pgnr;
-
- i = 0;
- alloc_pgnr = 0;
-
- while (pgnr) {
- gfp &= ~GFP_NOWAIT;
- gfp |= __GFP_RECLAIM | __GFP_FS;
+ int i, ret;
+ for (i = 0; i < bo->pgnr; i++) {
pages = alloc_pages(gfp, 0); // alloc 1 page
if (unlikely(!pages)) {
dev_err(atomisp_dev,
@@ -664,12 +654,10 @@ static int alloc_private_pages(struct hmm_buffer_object *bo)
__func__);
goto cleanup;
} else {
- blk_pgnr = 1;
-
/*
* set memory to uncacheable -- UC_MINUS
*/
- ret = set_pages_uc(pages, blk_pgnr);
+ ret = set_pages_uc(pages, 1);
if (ret) {
dev_err(atomisp_dev,
"set page uncacheablefailed.\n");
@@ -679,18 +667,13 @@ static int alloc_private_pages(struct hmm_buffer_object *bo)
goto cleanup;
}
- for (j = 0; j < blk_pgnr; j++, i++) {
- bo->pages[i] = pages + j;
- }
-
- pgnr -= blk_pgnr;
+ bo->pages[i] = pages;
}
}
return 0;
cleanup:
- alloc_pgnr = i;
- free_private_bo_pages(bo, alloc_pgnr);
+ free_private_bo_pages(bo, i);
return -ENOMEM;
}