|
@@ -350,7 +350,7 @@ void *devm_memremap_pages(struct device *dev, struct resource *res,
|
|
|
pgprot_t pgprot = PAGE_KERNEL;
|
|
|
struct dev_pagemap *pgmap;
|
|
|
struct page_map *page_map;
|
|
|
- int error, nid, is_ram;
|
|
|
+ int error, nid, is_ram, i = 0;
|
|
|
|
|
|
align_start = res->start & ~(SECTION_SIZE - 1);
|
|
|
align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE)
|
|
@@ -448,6 +448,8 @@ void *devm_memremap_pages(struct device *dev, struct resource *res,
|
|
|
list_del(&page->lru);
|
|
|
page->pgmap = pgmap;
|
|
|
percpu_ref_get(ref);
|
|
|
+ if (!(++i % 1024))
|
|
|
+ cond_resched();
|
|
|
}
|
|
|
devres_add(dev, page_map);
|
|
|
return __va(res->start);
|