makedumpfile: support for newer kernels [v4.9 onwards]

Abhishek Shah abrs612 at gmail.com
Tue Jul 11 09:17:52 PDT 2017


>>Seeing further, I could see that the "get_mem_map" function at the end
>>[if (!is_xen_memory())]
>>is attempting to change "info->max_mapnr" value based on "mem=" option.
>>-- in particular commit ebe2fa3a5c1e2bfac3778c0fbeca4287a934cc58.
>>And in my kernel command line, "mem=2G" was present, as I intended to
>>take dump of 2G RAM,
>>resulting into reduced "info->max_mapnr".
>
> Basically, this adjusting info->max_mapnr must be harmless since
> it just intends to ignore unused memory regions.
> Did you find out why adjusting info->max_mapnr causes the problem ?
>
Operation of "write_kdump_pages_and_bitmap_cyclic" depends on
info->max_mapnr value.
That is the reason why we have problem with kdump compressed dump, but
not with elf formatted dump.

>From the memory regions that I have, the last region does not seem to
be mapped (which contains the address sought by crash);
because of which, info->max_mapnr is getting adjusted to some reduced
value (compared to the previous info->max_mapnr of 880203).

Following is the memory regions that I have:
mem_map (0)
  mem_map    : ffff8008000c6280
  pfn_start  : 0
  pfn_end    : 40000
mem_map (1)
  mem_map    : 0
  pfn_start  : 40000
  pfn_end    : 80000
mem_map (2)
  mem_map    : 0
  pfn_start  : 80000
  pfn_end    : c0000
mem_map (3)
  mem_map    : 0
  pfn_start  : c0000
  pfn_end    : 100000
mem_map (4)
  mem_map    : 0
  pfn_start  : 100000
  pfn_end    : 140000
mem_map (5)
  mem_map    : 0
  pfn_start  : 140000
  pfn_end    : 180000
mem_map (6)
  mem_map    : 0
  pfn_start  : 180000
  pfn_end    : 1c0000
mem_map (7)
  mem_map    : 0
  pfn_start  : 1c0000
  pfn_end    : 200000
mem_map (8)
  mem_map    : 0
  pfn_start  : 200000
  pfn_end    : 240000
mem_map (9)
  mem_map    : 0
  pfn_start  : 240000
  pfn_end    : 280000
mem_map (10)
  mem_map    : 0
  pfn_start  : 280000
  pfn_end    : 2c0000
mem_map (11)
  mem_map    : 0
  pfn_start  : 2c0000
  pfn_end    : 300000
mem_map (12)
  mem_map    : ffff800045136a80
  pfn_start  : 300000
  pfn_end    : 340000
mem_map (13)
  mem_map    : ffff800046136480
  pfn_start  : 340000
  pfn_end    : 380000
mem_map (14)
  mem_map    : ffff800047136c00
  pfn_start  : 380000
  pfn_end    : 3c0000
mem_map (15)
  mem_map    : 0
  pfn_start  : 3c0000
  pfn_end    : 400000
mem_map (16)
  mem_map    : 0
  pfn_start  : 400000
  pfn_end    : 440000
mem_map (17)
  mem_map    : 0
  pfn_start  : 440000
  pfn_end    : 480000
mem_map (18)
  mem_map    : 0
  pfn_start  : 480000
  pfn_end    : 4c0000
mem_map (19)
  mem_map    : 0
  pfn_start  : 4c0000
  pfn_end    : 500000
mem_map (20)
  mem_map    : 0
  pfn_start  : 500000
  pfn_end    : 540000
mem_map (21)
  mem_map    : 0
  pfn_start  : 540000
  pfn_end    : 580000
mem_map (22)
  mem_map    : 0
  pfn_start  : 580000
  pfn_end    : 5c0000
mem_map (23)
  mem_map    : 0
  pfn_start  : 5c0000
  pfn_end    : 600000
mem_map (24)
  mem_map    : 0
  pfn_start  : 600000
  pfn_end    : 640000
mem_map (25)
  mem_map    : 0
  pfn_start  : 640000
  pfn_end    : 680000
mem_map (26)
  mem_map    : 0
  pfn_start  : 680000
  pfn_end    : 6c0000
mem_map (27)
  mem_map    : 0
  pfn_start  : 6c0000
  pfn_end    : 700000
mem_map (28)
  mem_map    : 0
  pfn_start  : 700000
  pfn_end    : 740000
mem_map (29)
  mem_map    : 0
  pfn_start  : 740000
  pfn_end    : 780000
mem_map (30)
  mem_map    : 0
  pfn_start  : 780000
  pfn_end    : 7c0000
mem_map (31)
  mem_map    : 0
  pfn_start  : 7c0000
  pfn_end    : 800000
mem_map (32)
  mem_map    : 0
  pfn_start  : 800000
  pfn_end    : 840000
mem_map (33)
  mem_map    : 0
  pfn_start  : 840000
  pfn_end    : 880000
mem_map (34)
  mem_map    : 0
  pfn_start  : 880000
  pfn_end    : 880203

>>So, I commented out this portion and confirmed that "info->max_mapnr"
>>remains same
>>throughout. And I was able to get kdump compressed vmcore process-able
>>by crash utility.
>
> This sounds like there are some valid data beyond the adjusted info->max_mapnr,
> is that true ?
I am not sure about it, but crash does look for data in mem_map(34),
I haven't yet look into this in-detail. I will do that soon.


Regards,
Abhishek



More information about the kexec mailing list