mirror of https://gitee.com/openkylin/linux.git
arm64: kdump: no need to mark crashkernel pages manually PG_reserved
The crashkernel is reserved via memblock_reserve(). memblock_free_all() will call free_low_memory_core_early(), which will go over all reserved memblocks, marking the pages as PG_reserved. So manually marking pages as PG_reserved is not necessary, they are already in the desired state (otherwise they would have been handed over to the buddy as free pages and bad things would happen). Link: http://lkml.kernel.org/r/20190114125903.24845-8-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: Bhupesh Sharma <bhsharma@redhat.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: James Morse <james.morse@arm.com> Cc: David Hildenbrand <david@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Dave Kleikamp <dave.kleikamp@oracle.com> Cc: Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Florian Fainelli <f.fainelli@gmail.com> Cc: Stefan Agner <stefan@agner.ch> Cc: Laura Abbott <labbott@redhat.com> Cc: Greg Hackmann <ghackmann@android.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Kristina Martsenko <kristina.martsenko@arm.com> Cc: CHANDAN VN <chandan.vn@samsung.com> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org> Cc: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
aee4944244
commit
d9fa9d9517
|
@ -321,7 +321,7 @@ void crash_post_resume(void)
|
||||||
* but does not hold any data of loaded kernel image.
|
* but does not hold any data of loaded kernel image.
|
||||||
*
|
*
|
||||||
* Note that all the pages in crash dump kernel memory have been initially
|
* Note that all the pages in crash dump kernel memory have been initially
|
||||||
* marked as Reserved in kexec_reserve_crashkres_pages().
|
* marked as Reserved as memory was allocated via memblock_reserve().
|
||||||
*
|
*
|
||||||
* In hibernation, the pages which are Reserved and yet "nosave" are excluded
|
* In hibernation, the pages which are Reserved and yet "nosave" are excluded
|
||||||
* from the hibernation iamge. crash_is_nosave() does thich check for crash
|
* from the hibernation iamge. crash_is_nosave() does thich check for crash
|
||||||
|
|
|
@ -118,35 +118,10 @@ static void __init reserve_crashkernel(void)
|
||||||
crashk_res.start = crash_base;
|
crashk_res.start = crash_base;
|
||||||
crashk_res.end = crash_base + crash_size - 1;
|
crashk_res.end = crash_base + crash_size - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init kexec_reserve_crashkres_pages(void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_HIBERNATION
|
|
||||||
phys_addr_t addr;
|
|
||||||
struct page *page;
|
|
||||||
|
|
||||||
if (!crashk_res.end)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* To reduce the size of hibernation image, all the pages are
|
|
||||||
* marked as Reserved initially.
|
|
||||||
*/
|
|
||||||
for (addr = crashk_res.start; addr < (crashk_res.end + 1);
|
|
||||||
addr += PAGE_SIZE) {
|
|
||||||
page = phys_to_page(addr);
|
|
||||||
SetPageReserved(page);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
static void __init reserve_crashkernel(void)
|
static void __init reserve_crashkernel(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init kexec_reserve_crashkres_pages(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_KEXEC_CORE */
|
#endif /* CONFIG_KEXEC_CORE */
|
||||||
|
|
||||||
#ifdef CONFIG_CRASH_DUMP
|
#ifdef CONFIG_CRASH_DUMP
|
||||||
|
@ -586,8 +561,6 @@ void __init mem_init(void)
|
||||||
/* this will put all unused low memory onto the freelists */
|
/* this will put all unused low memory onto the freelists */
|
||||||
memblock_free_all();
|
memblock_free_all();
|
||||||
|
|
||||||
kexec_reserve_crashkres_pages();
|
|
||||||
|
|
||||||
mem_init_print_info(NULL);
|
mem_init_print_info(NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue