mips: fix HIGHMEM initialization
Subsystems (2)
PATCH 1/1 mips: fix HIGHMEM initialization
From: "Mike Rapoport (Microsoft)" <[email protected]>
Commit 6faea3422e3b ("arch, mm: streamline HIGHMEM freeing") overzealously removed mem_init_free_highmem() function that beside freeing high memory pages checked for CPU support for high memory as a prerequisite.
Partially restore mem_init_free_highmem() with a new highmem_init() name and make it discard high memory in case there is no CPU support for it.
--- arch/mips/mm/init.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
arch/mips/mm/init.c +23 -0
@@ -425,6 +425,28 @@ void __init paging_init(void)static struct kcore_list kcore_kseg0;#endif +static inline void __init highmem_init (void ) +{ +#ifdef CONFIG_HIGHMEM +unsigned long tmp; + +/* +* If CPU cannot support HIGHMEM discard the memory above highstart_pfn +*/ +if (cpu_has_dc_aliases) { +memblock_remove (PFN_PHYS (highstart_pfn),-1 ); +return ; + } + +for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) { +struct page *page =pfn_to_page (tmp); + +if (!memblock_is_memory (PFN_PHYS (tmp))) +SetPageReserved (page); + } +#endif +} +void __init arch_mm_preinit (void ) {/*
@@ -435,6 +457,7 @@ void __init arch_mm_preinit(void)maar_init ();setup_zero_pages ();/* Setup zeroed pages. */ +highmem_init ();#ifdef CONFIG_64BIT if ((unsigned long ) &_text > (unsigned long )CKSEG0 )
Signature · 1 line
2.51.0
Hi Mike,
Quoted 6 lines
Von: Mike Rapoport <[email protected]>
Betreff: [PATCH] mips: fix HIGHMEM initializationCommit
6faea3422e3b("arch, mm: streamline HIGHMEM freeing") overzealously removedmem_init_free_highmem()function that beside freeing high memory pages checked for CPU support for high memory as a prerequisite.
Ah, that gives a little insight to the issue.
Thanks for the patch.
Markus