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>
This commit is contained in:
		
					parent
					
						
							
								8d056c48e4
							
						
					
				
			
			
				commit
				
					
						b3acc56bfe
					
				
			
		
					 2 changed files with 4 additions and 0 deletions
				
			
		|  | @ -360,6 +360,9 @@ static inline void ClearPageCompound(struct page *page) | ||||||
| 	ClearPageHead(page); | 	ClearPageHead(page); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  | 
 | ||||||
|  | #define PG_head_mask ((1L << PG_head)) | ||||||
|  | 
 | ||||||
| #else | #else | ||||||
| /*
 | /*
 | ||||||
|  * Reduce page flag use as much as possible by overlapping |  * Reduce page flag use as much as possible by overlapping | ||||||
|  |  | ||||||
|  | @ -1617,6 +1617,7 @@ static int __init crash_save_vmcoreinfo_init(void) | ||||||
| #ifdef CONFIG_MEMORY_FAILURE | #ifdef CONFIG_MEMORY_FAILURE | ||||||
| 	VMCOREINFO_NUMBER(PG_hwpoison); | 	VMCOREINFO_NUMBER(PG_hwpoison); | ||||||
| #endif | #endif | ||||||
|  | 	VMCOREINFO_NUMBER(PG_head_mask); | ||||||
| 	VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE); | 	VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE); | ||||||
| 
 | 
 | ||||||
| 	arch_crash_save_vmcoreinfo(); | 	arch_crash_save_vmcoreinfo(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Petr Tesarik
				Petr Tesarik