Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kexec: save PG_head_mask in VMCOREINFO

To allow filtering of huge pages, makedumpfile must be able to identify
them in the dump. This can be done by checking the appropriate page
flag, so communicate its value to makedumpfile through the VMCOREINFO
interface.

There's only one small catch. Depending on how many page flags are
available on a given architecture, this bit can be called PG_head or
PG_compound.

I sent a similar patch back in 2012, but Eric Biederman did not like
using an #ifdef. So, this time I'm adding a common symbol
(PG_head_mask) instead.

See https://lkml.org/lkml/2012/11/28/91 for the previous version.

Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Fengguang Wu <fengguang.wu@intel.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Shaohua Li <shli@kernel.org>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Petr Tesarik and committed by
Linus Torvalds
b3acc56b 8d056c48

+4
+3
include/linux/page-flags.h
··· 360 360 ClearPageHead(page); 361 361 } 362 362 #endif 363 + 364 + #define PG_head_mask ((1L << PG_head)) 365 + 363 366 #else 364 367 /* 365 368 * Reduce page flag use as much as possible by overlapping
+1
kernel/kexec.c
··· 1617 1617 #ifdef CONFIG_MEMORY_FAILURE 1618 1618 VMCOREINFO_NUMBER(PG_hwpoison); 1619 1619 #endif 1620 + VMCOREINFO_NUMBER(PG_head_mask); 1620 1621 VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE); 1621 1622 1622 1623 arch_crash_save_vmcoreinfo();