From mboxrd@z Thu Jan 1 00:00:00 1970 From: mindentropy@gmail.com (mind entropy) Date: Sat, 13 Sep 2014 13:32:06 +0530 Subject: On virt_to_phys doubts. Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org 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 #include #include #include #include #include #include #include #include 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.