makedumpfile: question about memory hole
HATAYAMA Daisuke
d.hatayama at jp.fujitsu.com
Thu Mar 14 20:31:46 EDT 2013
Hello Kumagai-san,
I have a question about memory hole.
For example, create_1st_bitmap() calculates memory holes in the part
below:
int
create_1st_bitmap(void)
{
...
/*
* If page is on memory hole, set bit on the 1st-bitmap.
*/
pfn_bitmap1 = 0;
for (i = 0; get_pt_load(i, &phys_start, &phys_end, NULL, NULL); i++) {
print_progress(PROGRESS_HOLES, i, num_pt_loads);
pfn_start = paddr_to_pfn(phys_start);
pfn_end = paddr_to_pfn(phys_end);
if (!is_in_segs(pfn_to_paddr(pfn_start)))
pfn_start++;
for (pfn = pfn_start; pfn < pfn_end; pfn++) {
set_bit_on_1st_bitmap(pfn);
pfn_bitmap1++;
}
}
pfn_memhole = info->max_mapnr - pfn_bitmap1;
What I don't understand well is that the part here:
pfn_start = paddr_to_pfn(phys_start);
pfn_end = paddr_to_pfn(phys_end);
if (!is_in_segs(pfn_to_paddr(pfn_start)))
pfn_start++;
phys_start and pfn_to_paddr(pfn_start) should belong to the same page
frame, so I suspect the pfn_start should be included in vmcore.
Looking into kexec-tool side, I don't see additional modification made
to phys_start after it's parsed from /proc/iomem or counterpart on EFI
interface. Is there any assumption about memory holes behind kernel?
Thanks.
HATAYAMA, Daisuke
More information about the kexec
mailing list