fadump.c (0ea8a56de21be24cb79abb03dee79aabcd60a316) | fadump.c (c9118e6c37bff9ade90b638207a6e0db676ee6a9) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Firmware Assisted dump: A robust mechanism to get reliable kernel crash 4 * dump with assistance from firmware. This approach does not use kexec, 5 * instead firmware assists in booting the kdump kernel while preserving 6 * memory contents. The most of the code implementation has been adapted 7 * from phyp assisted dump implementation written by Linas Vepstas and 8 * Manish Ahuja --- 1228 unchanged lines hidden (view full) --- 1237 } 1238} 1239 1240/* 1241 * Skip memory holes and free memory that was actually reserved. 1242 */ 1243static void fadump_release_reserved_area(u64 start, u64 end) 1244{ | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Firmware Assisted dump: A robust mechanism to get reliable kernel crash 4 * dump with assistance from firmware. This approach does not use kexec, 5 * instead firmware assists in booting the kdump kernel while preserving 6 * memory contents. The most of the code implementation has been adapted 7 * from phyp assisted dump implementation written by Linas Vepstas and 8 * Manish Ahuja --- 1228 unchanged lines hidden (view full) --- 1237 } 1238} 1239 1240/* 1241 * Skip memory holes and free memory that was actually reserved. 1242 */ 1243static void fadump_release_reserved_area(u64 start, u64 end) 1244{ |
1245 u64 tstart, tend, spfn, epfn; 1246 struct memblock_region *reg; | 1245 u64 tstart, tend, spfn, epfn, reg_spfn, reg_epfn, i; |
1247 1248 spfn = PHYS_PFN(start); 1249 epfn = PHYS_PFN(end); | 1246 1247 spfn = PHYS_PFN(start); 1248 epfn = PHYS_PFN(end); |
1250 for_each_memblock(memory, reg) { 1251 tstart = max_t(u64, spfn, memblock_region_memory_base_pfn(reg)); 1252 tend = min_t(u64, epfn, memblock_region_memory_end_pfn(reg)); | 1249 1250 for_each_mem_pfn_range(i, MAX_NUMNODES, ®_spfn, ®_epfn, NULL) { 1251 tstart = max_t(u64, spfn, reg_spfn); 1252 tend = min_t(u64, epfn, reg_epfn); 1253 |
1253 if (tstart < tend) { 1254 fadump_free_reserved_memory(tstart, tend); 1255 1256 if (tend == epfn) 1257 break; 1258 1259 spfn = tend; 1260 } --- 451 unchanged lines hidden --- | 1254 if (tstart < tend) { 1255 fadump_free_reserved_memory(tstart, tend); 1256 1257 if (tend == epfn) 1258 break; 1259 1260 spfn = tend; 1261 } --- 451 unchanged lines hidden --- |