Merge tag 'nfsd-5.14' of git://linux-nfs.org/~bfields/linux
[linux-2.6-microblaze.git] / arch / arm64 / mm / init.c
index e55409c..8490ed2 100644 (file)
@@ -219,42 +219,17 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
        free_area_init(max_zone_pfns);
 }
 
-int pfn_valid(unsigned long pfn)
+int pfn_is_map_memory(unsigned long pfn)
 {
        phys_addr_t addr = PFN_PHYS(pfn);
-       struct mem_section *ms;
 
-       /*
-        * Ensure the upper PAGE_SHIFT bits are clear in the
-        * pfn. Else it might lead to false positives when
-        * some of the upper bits are set, but the lower bits
-        * match a valid pfn.
-        */
+       /* avoid false positives for bogus PFNs, see comment in pfn_valid() */
        if (PHYS_PFN(addr) != pfn)
                return 0;
 
-       if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
-               return 0;
-
-       ms = __pfn_to_section(pfn);
-       if (!valid_section(ms))
-               return 0;
-
-       /*
-        * ZONE_DEVICE memory does not have the memblock entries.
-        * memblock_is_map_memory() check for ZONE_DEVICE based
-        * addresses will always fail. Even the normal hotplugged
-        * memory will never have MEMBLOCK_NOMAP flag set in their
-        * memblock entries. Skip memblock search for all non early
-        * memory sections covering all of hotplug memory including
-        * both normal and ZONE_DEVICE based.
-        */
-       if (!early_section(ms))
-               return pfn_section_valid(ms, pfn);
-
        return memblock_is_map_memory(addr);
 }
-EXPORT_SYMBOL(pfn_valid);
+EXPORT_SYMBOL(pfn_is_map_memory);
 
 static phys_addr_t memory_limit = PHYS_ADDR_MAX;
 
@@ -499,6 +474,13 @@ void __init mem_init(void)
        BUILD_BUG_ON(TASK_SIZE_32 > DEFAULT_MAP_WINDOW_64);
 #endif
 
+       /*
+        * Selected page table levels should match when derived from
+        * scratch using the virtual address range and page size.
+        */
+       BUILD_BUG_ON(ARM64_HW_PGTABLE_LEVELS(CONFIG_ARM64_VA_BITS) !=
+                    CONFIG_PGTABLE_LEVELS);
+
        if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) {
                extern int sysctl_overcommit_memory;
                /*