On 2024/10/09 15:06, Ming Wang wrote: > The calculation of the starting PFN for exclusion in > exclude_nodata_pages() was rounding down, potentially excluding > the last valid page of a LOAD segment. > > This commit fixes the issue by rounding up the calculated PFN to the > nearest page boundary, ensuring that the last valid page is included and > not erroneously excluded. > > Signed-off-by: Ming Wang <wangming01@xxxxxxxxxxx> > --- > makedumpfile.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index 2fa67e7..b356eb3 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -5215,7 +5215,7 @@ exclude_nodata_pages(struct cycle *cycle) > NULL, &file_size)) { > unsigned long long pfn, pfn_end; > > - pfn = paddr_to_pfn(phys_start + file_size); > + pfn = paddr_to_pfn(roundup(phys_start + file_size, PAGESIZE())); > pfn_end = paddr_to_pfn(roundup(phys_end, PAGESIZE())); > > if (pfn < cycle->start_pfn) Thank you for the v2 patch. I confirmed that without the patch "makedumpfile -d 0" excluded some pages wrongly: $ makedumpfile -d 0 vmcore dump.d0 ... pfn 0000000000054000 pfn_end 0000000000054000 pfn 000000000006989f pfn_end 00000000000698a0 crash> ptob 6989f 6989f: 6989f000 crash> rd -p 6989f000 rd: page excluded: physical address: 6989f000 type: "64-bit PHYSADDR" and it didn't with the patch: $ makedumpfile -d 0 vmcore dump.d0.patched ... pfn 0000000000054000 pfn_end 0000000000054000 pfn 00000000000698a0 pfn_end 00000000000698a0 crash> rd -p 6989f000 6989f000: cccccccc30646870 phd0.... Tested ok and applied. https://github.com/makedumpfile/makedumpfile/commit/f2c5f761ea99dbacaaf988caf1d51bc142b353fa Thanks, Kazu _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec