----- Original Message ----- > Hi Dave, > > On Tue, Dec 18, 2012 at 2:12 PM, Dave Anderson <anderson@xxxxxxxxxx> > wrote: > >> > crash> p mem_section[0x400] > >> > $13 = (struct mem_section *) 0xffffffff81a26658 > >> > crash> p mem_section[0x400][0x0] > >> > $14 = { > >> > section_mem_map = 0xffffffff81a26630, > >> > pageblock_flags = 0xffffffff81a26680 > >> > } > > I think I did show the memory section. But it is understandable if you missed it. > I plodded my way through the macros to figure out that the flag value > of > > > crash> p $tp->page->flags > > $9 = 0x200000000000000 > > ultimately maps to indexes of 0x400 and 0. > (47 bit shift for first index) > There are only two fields because of kernel build options. > > > crash> struct mem_section ffff88021e5eb000 -x > > struct mem_section { > > section_mem_map = 0xffffea0000000003, > > pageblock_flags = 0xffff88021e1eaa00, > > Since your example has upper 4 bytes of 0xffffea00, similar to > the (cfs_page_t *) 0xffffea001bb1d1e8 page address I am trying to > understand, maybe the 0xffffffff81a26630 address is bogus? > > > page_cgroup = 0xffff880215880000, > > pad = 0x0 Right, mem_section->section_mem_map has to contain a vmemmap address for this to make any sense. You might try the obvious, which is to do what is done for the advertised vmemmap pages. Get the page structure offset from the beginning of the vmemmap range: crash> eval 0xffffea001bb1d1e8 - ffffea0000000000 hexadecimal: 1bb1d1e8 decimal: 464638440 octal: 3354350750 binary: 0000000000000000000000000000000000011011101100011101000111101000 crash> Get the page number (pfn) by dividing that by the sizeof a page (64 on my system): crash> eval 1bb1d1e8 / 64 hexadecimal: 6ec747 decimal: 7259975 octal: 33543507 binary: 0000000000000000000000000000000000000000011011101100011101000111 crash> Multiply the resultant pfn times the page size to get the physical address: crash> eval 6ec747 * 4k hexadecimal: 6ec747000 (29039900KB) decimal: 29736857600 octal: 335435070000 binary: 0000000000000000000000000000011011101100011101000111000000000000 crash> And then "rd -p" the physical address to see if (1) it exists, and (2) you can somehow verify that the data is correct -- if that's even possible. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility