Re: [PATCH] [PPC32] Fix vmalloc address translation for BookE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility



[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux