All of lore.kernel.org
 help / color / mirror / Atom feed
From: c.seitz@tu-bs.de (Christoph Seitz)
To: kernelnewbies@lists.kernelnewbies.org
Subject: User space memory
Date: Tue, 12 Mar 2013 15:03:53 +0100	[thread overview]
Message-ID: <513F35C9.5060409@tu-bs.de> (raw)
In-Reply-To: <CACPKTANtQAvK2k+K686D3M7nxAJA8MyZmqA=qdR+fyg2LfBtxw@mail.gmail.com>

Am 12.03.2013 14:08, schrieb Prabhu nath:
> 
> 
> On Sun, Mar 10, 2013 at 11:30 PM, Christoph Seitz <c.seitz@tu-bs.de
> <mailto:c.seitz@tu-bs.de>> wrote:
> 
>     Hi all,
> 
>     I have some problems allocation Memory the right way and use it in my
>     kernel module.
> 
>     I use a char device for reading and writing from/to a pcie dma card.
>     Especially the read function makes me some headache. The user allocates
>     some memory with posix_memalign and call the read function on the
>     device, so that the devices knows where to write to. My driver now uses
>     get_user_pages() to pin the user pages. The memory has never been
>     written or read by the user, so it's not yet in the RAM, right? And
>     get_user_pages returns a valid number of pages, but for every page the
>     same struct. (respectively the same pointer). Is there any way to ensure
>     that the user pages are in the ram and get_user_pages returns a valid
>     page array? 
> 
> 
> If you know the RAM physical address range you can figure out by doing
> the following
>     *page_to_pfn(page_ptr) << 12*;
>     where page_ptr is a struct page * returned by get_user_pages().
>    *page_to_pfn()* will return the pfn of the corresponding page frame
> and left shifting by 12 bits will give you page frame base address.

Maybe my description was a little bit misleading. I have the problem,
that if I don't write to that allocated memory in the user application,
I won't get any valid pages from get_user_pages. The reason seems to be,
that thees pages never got faulted and so the user memory never gets a
page frame. Is there any chance for a kernel module to force a page
fault or to assign the user memory a page frame?
I found out, if I use the force flag with get_user_pages, the pages get
faulted, but there has to be a nicer way than using the force flag.

Regards,
Chris

  reply	other threads:[~2013-03-12 14:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-10 18:00 User space memory Christoph Seitz
2013-03-12 13:08 ` Prabhu nath
2013-03-12 14:03   ` Christoph Seitz [this message]
2013-03-12 17:18     ` Valdis.Kletnieks at vt.edu
2013-03-12 14:29   ` Valdis.Kletnieks at vt.edu
2013-03-13  5:18     ` Prabhu nath

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=513F35C9.5060409@tu-bs.de \
    --to=c.seitz@tu-bs.de \
    --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.