Thread (38 messages) 38 messages, 4 authors, 2020-11-01

Re: [PATCH 2/4] PM: hibernate: improve robustness of mapping pages in the direct map

From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Date: 2020-10-28 21:47:01
Also in: linux-arm-kernel, linux-mm, linux-pm, linux-riscv, linux-s390, lkml, sparclinux

On Sun, 2020-10-25 at 12:15 +0200, Mike Rapoport wrote:
+       if (IS_ENABLED(CONFIG_ARCH_HAS_SET_DIRECT_MAP)) {
+               unsigned long addr = (unsigned
long)page_address(page);
+               int ret;
+
+               if (enable)
+                       ret = set_direct_map_default_noflush(page);
+               else
+                       ret = set_direct_map_invalid_noflush(page);
+
+               if (WARN_ON(ret))
+                       return;
+
+               flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
+       } else {
+               debug_pagealloc_map_pages(page, 1, enable);
+       }
Looking at the arm side again, I think this might actually introduce a
regression for the arm/hibernate/DEBUG_PAGEALLOC combo.

Unlike __kernel_map_pages(), it looks like arm's cpa will always bail
in the set_direct_map_() functions if rodata_full is false. So if
rodata_full was disabled but debug page alloc is on, then this would
now skip remapping the pages. I guess the significance depends on
whether hibernate could actually try to save any DEBUG_PAGEALLOC
unmapped pages. Looks like it to me though.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help