History

Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm

Pull memremap fix from Dan Williams: "The new memremap() api introduced in the 4.3 cycle to unify/replace ioremap_cache() and ioremap_wt() is mishandling the highmem case. This patch has received a build success notification from a 0day-kbuild-robot run and has received an ack from Ard" From the commit message: "The impact of this bug is low for now since the pmem driver is the only user of memremap(), but this is important to fix before more conversions to memremap arrive in 4.4" * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: memremap: fix highmem support

Linus Torvalds committed 11 years ago

Commit 95fc00a2 parents ca04d39 182475b1 file · +12 −2Browse files

Showing the changes to kernel (1 of 1 file). Show all

Unified · Split

kernel/memremap.c+12−2
@@ -24,6 +24,16 @@ __weak void __iomem *ioremap_cache(resource_size_t offset, unsigned long size) · 23 unmodified lines
24}24}
25#endif25#endif
26 26
27static void *try_ram_remap(resource_size_t offset, size_t size)
28{
29 struct page *page = pfn_to_page(offset >> PAGE_SHIFT);
30
31 /* In the simple case just return the existing linear address */
32 if (!PageHighMem(page))
33 return __va(offset);
34 return NULL; /* fallback to ioremap_cache */
35}
36
27/**37/**
28 * memremap() - remap an iomem_resource as cacheable memory38 * memremap() - remap an iomem_resource as cacheable memory
29 * @offset: iomem resource start address39 * @offset: iomem resource start address
@@ -66,8 +76,8 @@ void *memremap(resource_size_t offset, size_t size, unsigned long flags) · 36 unmodified lines
66 * the requested range is potentially in "System RAM"76 * the requested range is potentially in "System RAM"
67 */77 */
68 if (is_ram == REGION_INTERSECTS)78 if (is_ram == REGION_INTERSECTS)
69 addr = __va(offset);79 addr = try_ram_remap(offset, size);
70 else80 if (!addr)
71 addr = ioremap_cache(offset, size);81 addr = ioremap_cache(offset, size);
72 }82 }
73 83