Kernel physical addr : 0x32d01fe0 Platform phys offset : 0x30000000 Page offset : 0xc0553fb4
The page offset looks weird, since 32bit kernel has 2/2 or 3/1 or 1/3 user/kernel virtual address split. It is not reasonable to have 0xc0553fb4 as page offset. You should c0000000 for 3/1 split. 2014/9/13 下午8:59 於 "mind entropy" <[email protected]> 寫道: > On Sat, Sep 13, 2014 at 2:01 PM, Miles MH Chen <[email protected]> > wrote: > > Hi, > > > > Do you know the value of PHYS_OFFSET of your platform? > > PHYS_OFFSET defines the starting physical address of your DRAM. > > > > physical address = kmalloc'ed address - PAGE_OFFSET + PHYS_OFFSET > > > > MH > > > > On Sat, Sep 13, 2014 at 4:02 PM, mind entropy <[email protected]> > wrote: > >> > >> Hi, > >> > >> I want to know the physical address [just for debugging and info.Not > >> for DMA etc] of a particular virtual address allocated via kmalloc. > >> > >> I am running the below code on S3C2440 with 64MB of RAM. The > >> /proc/meminfo returns > >> > >> MemTotal: 59164 kB > >> MemFree: 35884 kB > >> MemAvailable: 47148 kB > >> > >> > >> I run the following module for printing the addresses. [This module > >> is only for test. So excuse if I have cut corners]. > >> > >> ------------------------------------------------ > >> > >> #include <linux/init.h> > >> #include <linux/kernel.h> > >> #include <linux/printk.h> > >> #include <linux/module.h> > >> #include <linux/gfp.h> > >> #include <linux/types.h> > >> #include <linux/mm.h> > >> #include <linux/mm_types.h> > >> #include <linux/slab.h> > >> > >> static int vm_mem_test_init(void) > >> { > >> > >> void *km; > >> > >> printk(KERN_ALERT "vm mem test init\n"); > >> > >> km = kmalloc(1,GFP_KERNEL); > >> > >> if(km == NULL) { > >> printk(KERN_ALERT "Could not kmalloc\n"); > >> return -1; > >> } else { > >> printk(KERN_ALERT "Allocated\n"); > >> printk(KERN_ALERT "Virtual addr : %x\n",(unsigned int)km); > >> printk(KERN_ALERT "Kernel physical addr : > >> 0x%x\n",virt_to_phys(km)); > >> kfree(km); > >> } > >> > >> return 0; > >> > >> } > >> > >> > >> The output for the following is: > >> > >> Virtual addr : c2c080e0 > >> Kernel physical addr : 0x32c080e0 > >> > >> ----------------------------------------------------------- > >> > >> The kernel physical address is wrong as I only have 64MB. Should I be > >> doing a kernel page table walk to get the associated physical address? > >> > >> Thanks > >> Gautam. > >> > >> _______________________________________________ > >> Kernelnewbies mailing list > >> [email protected] > >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > > > > Miles, > > I tried printing it. The output is as follows: > > Kernel physical addr : 0x32d01fe0 > Platform phys offset : 0x30000000 > Page offset : 0xc0553fb4 > > The S3C2440 is an ARM9TDMI processor. > > > -Gautam. >
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
