diff options
Diffstat (limited to 'kernel/memremap.c')
-rw-r--r-- | kernel/memremap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/memremap.c b/kernel/memremap.c index 6bcbfbf1a8fd..403ab9cdb949 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c | |||
@@ -350,7 +350,7 @@ void *devm_memremap_pages(struct device *dev, struct resource *res, | |||
350 | pgprot_t pgprot = PAGE_KERNEL; | 350 | pgprot_t pgprot = PAGE_KERNEL; |
351 | struct dev_pagemap *pgmap; | 351 | struct dev_pagemap *pgmap; |
352 | struct page_map *page_map; | 352 | struct page_map *page_map; |
353 | int error, nid, is_ram; | 353 | int error, nid, is_ram, i = 0; |
354 | 354 | ||
355 | align_start = res->start & ~(SECTION_SIZE - 1); | 355 | align_start = res->start & ~(SECTION_SIZE - 1); |
356 | align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) | 356 | align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) |
@@ -448,6 +448,8 @@ void *devm_memremap_pages(struct device *dev, struct resource *res, | |||
448 | list_del(&page->lru); | 448 | list_del(&page->lru); |
449 | page->pgmap = pgmap; | 449 | page->pgmap = pgmap; |
450 | percpu_ref_get(ref); | 450 | percpu_ref_get(ref); |
451 | if (!(++i % 1024)) | ||
452 | cond_resched(); | ||
451 | } | 453 | } |
452 | devres_add(dev, page_map); | 454 | devres_add(dev, page_map); |
453 | return __va(res->start); | 455 | return __va(res->start); |