----- "Darrin Thompson" <darrinth(a)gmail.com> wrote:
 I'm finding a problem struct page in a kdump. I want to trace
down
 what that page is referring to. For instance, if I could execute
 kmap(page), and run rd the pointer returned, what would I find there?
 I realize that this may not always be possible. What is the right way
 to attempt it? This is x86_64 if it matters. 
If it's an x86_64, then calling kmap(page) ends up doing this
on the page struct address:
   __va(page_to_pfn(page) << PAGE_SHIFT);
So, I'm presuming that you know the page structure address, but you
want to know how to access the page data via its kmap'd virtual
address.
So for example, suppose I know that the page structure address
is ffff8100006ef680, then "kmem -p <page-address> shows the
physical address of the referenced page:
  crash> kmem -p ffff8100006ef680
        PAGE       PHYSICAL      MAPPING       INDEX CNT FLAGS
  ffff8100006ef680   2b0000                0        0  1 400
  crash>
For x86_64, then it's simply a matter of changing the physical
address into its unity-mapped kernel virtual address (i.e. as
returned by the __va() macro):
  crash> ptov 2b0000
  VIRTUAL           PHYSICAL        
  ffff8100002b0000  2b0000
  crash>
So kmap(0xffff8100006ef680) would return ffff8100002b0000, which
you can "rd":
      
  crash> rd ffff8100002b0000 10
  ffff8100002b0000:  0100c70000080805 fff0db31fb000000   ............1...
  ffff8100002b0010:  8b485500313e6b05 c931c03145302454   .k>1.UH.T$0E1.1.
  ffff8100002b0020:  03f8ba046a0c7a8b 8d4c2c24748b0000   .z.j.......t$,L.
  ffff8100002b0030:  f5e800000090248c fffffb37e9ffffe4   .$..........7...
  ffff8100002b0040:  03398330244c8b48 798300000156860f   H.L$0.9...V....y
  crash>
Or for what it's worth, you can just read the data using the physical
address:
  crash> rd -p 2b0000 10
            2b0000:  0100c70000080805 fff0db31fb000000   ............1...
            2b0010:  8b485500313e6b05 c931c03145302454   .k>1.UH.T$0E1.1.
            2b0020:  03f8ba046a0c7a8b 8d4c2c24748b0000   .z.j.......t$,L.
            2b0030:  f5e800000090248c fffffb37e9ffffe4   .$..........7...
            2b0040:  03398330244c8b48 798300000156860f   H.L$0.9...V....y
  crash> 
I *think* that's what's your asking...
Dave