]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - arch/powerpc/mm/book3s32/mmu.c
mm: introduce include/linux/pgtable.h
[mirror_ubuntu-jammy-kernel.git] / arch / powerpc / mm / book3s32 / mmu.c
index 39ba53ca5bb55693b879bb43064503f7e67410d4..a6dcc708eee39aa779318bb6518fd68bc15d35a8 100644 (file)
@@ -170,6 +170,12 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
                pr_debug("RAM mapped without BATs\n");
                return base;
        }
+       if (debug_pagealloc_enabled()) {
+               if (base >= border)
+                       return base;
+               if (top >= border)
+                       top = border;
+       }
 
        if (!strict_kernel_rwx_enabled() || base >= border || top <= border)
                return __mmu_mapin_ram(base, top);
@@ -187,6 +193,7 @@ void mmu_mark_initmem_nx(void)
        int i;
        unsigned long base = (unsigned long)_stext - PAGE_OFFSET;
        unsigned long top = (unsigned long)_etext - PAGE_OFFSET;
+       unsigned long border = (unsigned long)__init_begin - PAGE_OFFSET;
        unsigned long size;
 
        if (IS_ENABLED(CONFIG_PPC_BOOK3S_601))
@@ -201,9 +208,10 @@ void mmu_mark_initmem_nx(void)
                size = block_size(base, top);
                size = max(size, 128UL << 10);
                if ((top - base) > size) {
-                       if (strict_kernel_rwx_enabled())
-                               pr_warn("Kernel _etext not properly aligned\n");
                        size <<= 1;
+                       if (strict_kernel_rwx_enabled() && base + size > border)
+                               pr_warn("Some RW data is getting mapped X. "
+                                       "Adjust CONFIG_DATA_SHIFT to avoid that.\n");
                }
                setibat(i++, PAGE_OFFSET + base, base, size, PAGE_KERNEL_TEXT);
                base += size;