All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suresh Siddha <suresh.b.siddha@intel.com>
To: Michal Nazarewicz <mina86@tlen.pl>
Cc: "linux-newbie@vger.kernel.org" <linux-newbie@vger.kernel.org>,
	"; venkatesh.pallipadi"@intel.com
Subject: Re: remap_pfn_range() and mapping RAM
Date: Mon, 11 May 2009 10:40:29 -0700	[thread overview]
Message-ID: <1242063629.27006.8590.camel@localhost.localdomain> (raw)
In-Reply-To: <87ab5koqhz.fsf@erwin.mina86.com>

On Sun, 2009-05-10 at 09:46 -0700, Michal Nazarewicz wrote:
> Hello everyone,
> 
> While developing a method for mapping RAM memory into user space
> I stumbled across Suresh Siddha's commit that "broke" my code:
> 
>   commit be03d9e8022030c16abf534e33e185bfc3d40eef
>   x86, pat: fix warn_on_once() while mapping 0-1MB range with /dev/mem
> 
> I believe there were important reasons for the changes but how do I map
> user RAM memory into user space?  Up to this point I've used something
> along the lines of (error checking removed):
> 
> #v+
> static int file_mmap(struct file *file, struct vm_area_struct *vma)
> {
> 	const size_t start  = /* physical address of memory allocated
> 	                         using alloc_bootmem_low_pages() */;
> 
> 	return remap_pfn_range(vma, vma->vm_start,
> 	                       (start >> PAGE_SHIFT) + vma->vm_pgoff
> 	                       vma->vm_end - vma->vm_start,
> 	                       vma->vm_page_prot);
> }
> #v-
> 
> Reverting the be03... commit makes it work again but I guess it's not
> a good way to solve this problem.
> 
> Could anyone point me to proper function which may be used like
> remap_pfn_range() but work on RAM addresses?  It is important, that the
> function will work in similar fashion, ie. create raw PFN mappings
> without associated struct page.

Are you using 2.6.29?

This mainline commit:

commit 4bb9c5c02153dfc89a6c73a6f32091413805ad7d
Author: Pallipadi, Venkatesh <venkatesh.pallipadi@intel.com>
Date:   Thu Mar 12 17:45:27 2009 -0700

has fixed this issue with this portion of the patch:

diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index e0ab173..21bc1f7 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -641,10 +641,11 @@ static int reserve_pfn_range(u64 paddr, unsigned
long size
        is_ram = pat_pagerange_is_ram(paddr, paddr + size);
 
        /*
-        * reserve_pfn_range() doesn't support RAM pages.
+        * reserve_pfn_range() doesn't support RAM pages. Maintain the
current
+        * behavior with RAM pages by returning success.
         */
        if (is_ram != 0)
-               return -EINVAL;
+               return 0;
 
        ret = reserve_memtype(paddr, paddr + size, want_flags, &flags);
        if (ret)

thanks
suresh

--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

  reply	other threads:[~2009-05-11 17:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-10 16:46 remap_pfn_range() and mapping RAM Michal Nazarewicz
2009-05-11 17:40 ` Suresh Siddha [this message]
2009-05-12 18:56   ` Michal Nazarewicz

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=1242063629.27006.8590.camel@localhost.localdomain \
    --to=suresh.b.siddha@intel.com \
    --cc="; venkatesh.pallipadi"@intel.com \
    --cc=linux-newbie@vger.kernel.org \
    --cc=mina86@tlen.pl \
    /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.