All of lore.kernel.org
 help / color / mirror / Atom feed
From: orca.chen@gmail.com (Miles MH Chen)
To: kernelnewbies@lists.kernelnewbies.org
Subject: On virt_to_phys doubts.
Date: Sat, 13 Sep 2014 21:43:50 +0800	[thread overview]
Message-ID: <CAHkaATTZHyPFqekNw0E7UtNyGNxv19aCaRZmqUPbEd3yVTjoyg@mail.gmail.com> (raw)
In-Reply-To: <CAM2a4uy2ty49rOn_x433n8fT6+am0-LWBcjpBJvsSN5Xcjdm_Q@mail.gmail.com>

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" <mindentropy@gmail.com> ???

> On Sat, Sep 13, 2014 at 2:01 PM, Miles MH Chen <orca.chen@gmail.com>
> 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 <mindentropy@gmail.com>
> 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
> >> Kernelnewbies at kernelnewbies.org
> >> 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.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140913/e311f9d8/attachment.html 

  reply	other threads:[~2014-09-13 13:43 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-13  8:02 On virt_to_phys doubts mind entropy
2014-09-13  8:31 ` Miles MH Chen
2014-09-13 12:59   ` mind entropy
2014-09-13 13:43     ` Miles MH Chen [this message]
2014-09-13 13:52       ` mind entropy
2014-09-13 16:50         ` Miles MH Chen
2014-09-29 17:08           ` mind entropy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHkaATTZHyPFqekNw0E7UtNyGNxv19aCaRZmqUPbEd3yVTjoyg@mail.gmail.com \
    --to=orca.chen@gmail.com \
    --cc=kernelnewbies@lists.kernelnewbies.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.