[Crash-utility] kmem command problem (bug ofdump_mem_map_SPARSEMEM?)

Takao Indoh indou.takao at jp.fujitsu.com
Tue Feb 6 19:37:30 UTC 2007


On Tue, 06 Feb 2007 13:52:37 -0500, Dave Anderson wrote:

>How about changing section #3 above to something like this?:
>
>                 *  to the section with that page
>                 */
>                if (mi->flags & ADDRESS_SPECIFIED) {
>-                       ulong pfn = mi->spec_addr >> PAGESHIFT();
>+                       ulong pfn;
>+                       physaddr_t tmp;
>+
>+                       if (pg_spec) {
>+                               if (!page_to_phys(mi->spec_addr, &tmp))
>+                                       return;
>+                               pfn = tmp >> PAGESHIFT();
>+                       } else
>+                               pfn = mi->spec_addr >> PAGESHIFT();
>                        section_nr = pfn_to_section_nr(pfn);
>                }
>

Thanks, it looks good, but I found another problem.

I applied your patch and tested kmem command. 

crash> kmem -p e000000105090000
      PAGE        PHYSICAL      MAPPING       INDEX CNT FLAGS

It seems kmem command entered infinite loop. It is another problem.
I found page_to_phys did not return correct physical address.
When mi->spec_addr is 0xe000000105090000, corresponding physical address
is 0x180000000.

> crash> kmem -p | grep e000000105090000
> e000000105090000 180000000      -------       -----   0 600200080000

However, page_to_phys returns 0x100000000. I think page_to_phys does not
support sparsemem system.

Takao Indoh




More information about the Crash-utility mailing list