[Crash-utility] [PATCH] [PPC32] Fix vmalloc address translation for BookE

Suzuki K. Poulose suzuki at in.ibm.com
Thu Jan 19 05:42:26 UTC 2012


On ബുധന്‍ 18 ജനുവരി 2012 08:11 വൈകു, Dave Anderson wrote:
>
>
> ----- Original Message -----
>> (2012/01/16 14:15), Suzuki K. Poulose wrote:
>>> This patch fixes the vmalloc address translation for BookE.This
>>> patch is based on the PPC44x definitions and may not work fine for
>>> other systems.
>>>
>>> crash>   mod
>>> mod: cannot access vmalloc'd module memory
>>> crash>
>>>
>>>
>>> After the patch :
>>>
>>> crash>   mod
>>>    MODULE   NAME        SIZE  OBJECT FILE
>>> d1018fd8  mbcache     6023  (not loaded)  [CONFIG_KALLSYMS]
>>> d1077190  jbd        58360  (not loaded)  [CONFIG_KALLSYMS]
>>> d107ca98  llc         4525  (not loaded)  [CONFIG_KALLSYMS]
>>> d1130de4  ext3      203186  (not loaded)  [CONFIG_KALLSYMS]
>>> d114bbac  squashfs   26129  (not loaded)  [CONFIG_KALLSYMS]
>>>
>>>
>>> On ppc44x, the virtual-address is split as below :
>>>
>>> Bits   |0      10|11      19|20         31|
>>> 	-----------------------------------
>>>          |   PGD   |    PMD   | PAGE_OFFSET  |
>>>           -----------------------------------
>>>
>>> The PAGE_BASE_ADDR is a 64bit value(of type phys_addr_t).
>>>
>>> Note : I am not sure how do we distinguish the different values (PGDIR_SHIFT etc)
>>> for different PPC32 systems. Since there are a lot of different platforms
>>> under PPC32, we need some mechanism to dynamically determine the PGDIR, PTE
>>> shift values. One option is to put the information in the VMCOREINFO.
>>
>> Hi Suzuki,
>>
>> How about using powerpc_base_platform symbol?
>>
>>   *PTRRELOC(&powerpc_base_platform) = t->platform;
>>
>> $ grep -rIw platform arch/powerpc/kernel/cputable.c
>> /* The platform string corresponding to the real PVR */
>>                  .platform               = "power3",
>>                  .platform               = "power3",
>>                  .platform               = "rs64",
>>                  .platform               = "rs64",
>>                  .platform               = "rs64",
>>                  .platform               = "rs64",
>>                  .platform               = "power4",
>>                  .platform               = "power4",
>>         :
>>         :
>>
>> This kconfig based platform string data can be read
>>    base_platform = symbol_value("powerpc_base_platform symbols");
>>    read_string(base_platform, buf, buffer-size);
>> at ppc_init(POST_GDB).
>>
>> I think platform can be distinguished with following naming rules.
>>   - CONFIG_40x=y: platform is "ppc403"
>>   - CONFIG_44x=y: platform is "ppc440"
>>
>> Thanks,
>> Toshi
>
> That makes good sense.  Suzuki, are you re-working the patch
> with Toshi's suggestion?
>
I will take a look at this. Sorry, have been a bit busy.

Thanks
Suzuki




More information about the Crash-utility mailing list