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

Suzuki K. Poulose suzuki at in.ibm.com
Thu Feb 2 08:48:53 UTC 2012


On 02/02/2012 07:46 AM, Toshikazu Nakayama wrote:
> Hi Suzuki,
> I've send wrong file, please switch it.
>
> Thanks,
> Toshi
>
> (2012/02/02 10:59), Toshikazu Nakayama wrote:
>> (2012/01/19 14:42), Suzuki K. Poulose wrote:
>>> 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.
>>
>> Hi Suzuki,
>>
>> I'd put forward a proposal which can make your BookE support easy to adjust.
>> If this patch set is suitable for your Note's solution,
>> please merge into your works, and I'm not sure about BookE's word like PPC44X,
>> also please make reform of its staff.

Thanks for the patches and sorry, I was a bit late to get this done. I have posted
a version today. Could you please review it and let me know your thoughts ?

Thanks

Suzuki




More information about the Crash-utility mailing list