mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	kdump: defer the insertion of crashkernel resources
In /proc/iomem, sub-regions should be inserted after their parent,
otherwise the insertion of parent resource fails.  But after generic
crashkernel reservation applied, in both RISC-V and ARM64 (LoongArch will
also use generic reservation later on), crashkernel resources are inserted
before their parent, which causes the parent disappear in /proc/iomem.  So
we defer the insertion of crashkernel resources to an early_initcall().
1, Without 'crashkernel' parameter:
 100d0100-100d01ff : LOON0001:00
   100d0100-100d01ff : LOON0001:00 LOON0001:00
 100e0000-100e0bff : LOON0002:00
   100e0000-100e0bff : LOON0002:00 LOON0002:00
 1fe001e0-1fe001e7 : serial
 90400000-fa17ffff : System RAM
   f6220000-f622ffff : Reserved
   f9ee0000-f9ee3fff : Reserved
   fa120000-fa17ffff : Reserved
 fa190000-fe0bffff : System RAM
   fa190000-fa1bffff : Reserved
 fe4e0000-47fffffff : System RAM
   43c000000-441ffffff : Reserved
   47ff98000-47ffa3fff : Reserved
   47ffa4000-47ffa7fff : Reserved
   47ffa8000-47ffabfff : Reserved
   47ffac000-47ffaffff : Reserved
   47ffb0000-47ffb3fff : Reserved
2, With 'crashkernel' parameter, before this patch:
 100d0100-100d01ff : LOON0001:00
   100d0100-100d01ff : LOON0001:00 LOON0001:00
 100e0000-100e0bff : LOON0002:00
   100e0000-100e0bff : LOON0002:00 LOON0002:00
 1fe001e0-1fe001e7 : serial
 e6200000-f61fffff : Crash kernel
 fa190000-fe0bffff : System RAM
   fa190000-fa1bffff : Reserved
 fe4e0000-47fffffff : System RAM
   43c000000-441ffffff : Reserved
   47ff98000-47ffa3fff : Reserved
   47ffa4000-47ffa7fff : Reserved
   47ffa8000-47ffabfff : Reserved
   47ffac000-47ffaffff : Reserved
   47ffb0000-47ffb3fff : Reserved
3, With 'crashkernel' parameter, after this patch:
 100d0100-100d01ff : LOON0001:00
   100d0100-100d01ff : LOON0001:00 LOON0001:00
 100e0000-100e0bff : LOON0002:00
   100e0000-100e0bff : LOON0002:00 LOON0002:00
 1fe001e0-1fe001e7 : serial
 90400000-fa17ffff : System RAM
   e6200000-f61fffff : Crash kernel
   f6220000-f622ffff : Reserved
   f9ee0000-f9ee3fff : Reserved
   fa120000-fa17ffff : Reserved
 fa190000-fe0bffff : System RAM
   fa190000-fa1bffff : Reserved
 fe4e0000-47fffffff : System RAM
   43c000000-441ffffff : Reserved
   47ff98000-47ffa3fff : Reserved
   47ffa4000-47ffa7fff : Reserved
   47ffa8000-47ffabfff : Reserved
   47ffac000-47ffaffff : Reserved
   47ffb0000-47ffb3fff : Reserved
Link: https://lkml.kernel.org/r/20231229080213.2622204-1-chenhuacai@loongson.cn
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Fixes: 0ab97169aa ("crash_core: add generic function to do reservation")
Cc: Baoquan He <bhe@redhat.com>
Cc: Zhen Lei <thunder.leizhen@huawei.com>
Cc: <stable@vger.kernel.org>	[6.6+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									ab27740f76
								
							
						
					
					
						commit
						4a693ce65b
					
				
					 1 changed files with 12 additions and 2 deletions
				
			
		|  | @ -376,7 +376,6 @@ static int __init reserve_crashkernel_low(unsigned long long low_size) | |||
| 
 | ||||
| 	crashk_low_res.start = low_base; | ||||
| 	crashk_low_res.end   = low_base + low_size - 1; | ||||
| 	insert_resource(&iomem_resource, &crashk_low_res); | ||||
| #endif | ||||
| 	return 0; | ||||
| } | ||||
|  | @ -458,8 +457,19 @@ void __init reserve_crashkernel_generic(char *cmdline, | |||
| 
 | ||||
| 	crashk_res.start = crash_base; | ||||
| 	crashk_res.end = crash_base + crash_size - 1; | ||||
| 	insert_resource(&iomem_resource, &crashk_res); | ||||
| } | ||||
| 
 | ||||
| static __init int insert_crashkernel_resources(void) | ||||
| { | ||||
| 	if (crashk_res.start < crashk_res.end) | ||||
| 		insert_resource(&iomem_resource, &crashk_res); | ||||
| 
 | ||||
| 	if (crashk_low_res.start < crashk_low_res.end) | ||||
| 		insert_resource(&iomem_resource, &crashk_low_res); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| early_initcall(insert_crashkernel_resources); | ||||
| #endif | ||||
| 
 | ||||
| int crash_prepare_elf64_headers(struct crash_mem *mem, int need_kernel_map, | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Huacai Chen
						Huacai Chen