[RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings - Kernel

This is a discussion on [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings - Kernel ; While working on x86 PAT, we are having some hurdles with tracking remap_pfn_range() regions, as later we do not have any information to say whether that PFNMAP mapping is linear for the entire vma range or it is smaller granularity ...

+ Reply to Thread
Results 1 to 4 of 4

Thread: [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings

  1. [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings


    While working on x86 PAT, we are having some hurdles with tracking
    remap_pfn_range() regions, as later we do not have any information to say
    whether that PFNMAP mapping is linear for the entire vma range or
    it is smaller granularity regions within the vma.

    A simple solution to this is to use vm_pgoff as an indicator for
    linear mapping over the vma region. Currently, remap_pfn_range
    only sets vm_pgoff only for COW mappings. Below patch changes the
    logic and sets the vm_pgoff irrespective of COW.

    From our understanding of the code, this should not break anyone.
    Just sending it as an RFC to get feedback on whether it is OK to do
    something like this or are there any corner cases that we may
    break or watch out for.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha

    ---
    mm/memory.c | 7 +++----
    1 file changed, 3 insertions(+), 4 deletions(-)

    Index: linux-2.6/mm/memory.c
    ================================================== =================
    --- linux-2.6.orig/mm/memory.c 2008-10-21 09:58:47.000000000 -0700
    +++ linux-2.6/mm/memory.c 2008-10-23 13:38:26.000000000 -0700
    @@ -1575,11 +1575,10 @@ int remap_pfn_range(struct vm_area_struc
    * behaviour that some programs depend on. We mark the "original"
    * un-COW'ed pages by matching them up with "vma->vm_pgoff".
    */
    - if (is_cow_mapping(vma->vm_flags)) {
    - if (addr != vma->vm_start || end != vma->vm_end)
    - return -EINVAL;
    + if (addr == vma->vm_start && end == vma->vm_end)
    vma->vm_pgoff = pfn;
    - }
    + else if (is_cow_mapping(vma->vm_flags))
    + return -EINVAL;

    vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/

  2. Re: [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings


    [Sorry for the duplicate. Correctly sending to Andrew this time.]

    On Thu, Oct 23, 2008 at 03:09:14PM -0700, Venki Pallipadi wrote:
    >
    > While working on x86 PAT, we are having some hurdles with tracking
    > remap_pfn_range() regions, as later we do not have any information to say
    > whether that PFNMAP mapping is linear for the entire vma range or
    > it is smaller granularity regions within the vma.
    >
    > A simple solution to this is to use vm_pgoff as an indicator for
    > linear mapping over the vma region. Currently, remap_pfn_range
    > only sets vm_pgoff only for COW mappings. Below patch changes the
    > logic and sets the vm_pgoff irrespective of COW.
    >
    > From our understanding of the code, this should not break anyone.
    > Just sending it as an RFC to get feedback on whether it is OK to do
    > something like this or are there any corner cases that we may
    > break or watch out for.
    >
    > Signed-off-by: Venkatesh Pallipadi
    > Signed-off-by: Suresh Siddha
    >
    > ---
    > mm/memory.c | 7 +++----
    > 1 file changed, 3 insertions(+), 4 deletions(-)
    >
    > Index: linux-2.6/mm/memory.c
    > ================================================== =================
    > --- linux-2.6.orig/mm/memory.c 2008-10-21 09:58:47.000000000 -0700
    > +++ linux-2.6/mm/memory.c 2008-10-23 13:38:26.000000000 -0700
    > @@ -1575,11 +1575,10 @@ int remap_pfn_range(struct vm_area_struc
    > * behaviour that some programs depend on. We mark the "original"
    > * un-COW'ed pages by matching them up with "vma->vm_pgoff".
    > */
    > - if (is_cow_mapping(vma->vm_flags)) {
    > - if (addr != vma->vm_start || end != vma->vm_end)
    > - return -EINVAL;
    > + if (addr == vma->vm_start && end == vma->vm_end)
    > vma->vm_pgoff = pfn;
    > - }
    > + else if (is_cow_mapping(vma->vm_flags))
    > + return -EINVAL;
    >
    > vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
    >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/

  3. Re: [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings

    On Thu, Oct 23, 2008 at 03:09:14PM -0700, Venki Pallipadi wrote:
    >
    > While working on x86 PAT, we are having some hurdles with tracking
    > remap_pfn_range() regions, as later we do not have any information to say
    > whether that PFNMAP mapping is linear for the entire vma range or
    > it is smaller granularity regions within the vma.
    >
    > A simple solution to this is to use vm_pgoff as an indicator for
    > linear mapping over the vma region. Currently, remap_pfn_range
    > only sets vm_pgoff only for COW mappings. Below patch changes the
    > logic and sets the vm_pgoff irrespective of COW.
    >
    > >From our understanding of the code, this should not break anyone.

    > Just sending it as an RFC to get feedback on whether it is OK to do
    > something like this or are there any corner cases that we may
    > break or watch out for.
    >
    > Signed-off-by: Venkatesh Pallipadi
    > Signed-off-by: Suresh Siddha


    Hmm, I can'tthink of why it would break, but I would like to see an
    entire patch. Obviously you won't try to decode this vma stuff
    directly from the PAT code, but just call mm helpers... ?

    Thanks,
    Nick

    > ---
    > mm/memory.c | 7 +++----
    > 1 file changed, 3 insertions(+), 4 deletions(-)
    >
    > Index: linux-2.6/mm/memory.c
    > ================================================== =================
    > --- linux-2.6.orig/mm/memory.c 2008-10-21 09:58:47.000000000 -0700
    > +++ linux-2.6/mm/memory.c 2008-10-23 13:38:26.000000000 -0700
    > @@ -1575,11 +1575,10 @@ int remap_pfn_range(struct vm_area_struc
    > * behaviour that some programs depend on. We mark the "original"
    > * un-COW'ed pages by matching them up with "vma->vm_pgoff".
    > */
    > - if (is_cow_mapping(vma->vm_flags)) {
    > - if (addr != vma->vm_start || end != vma->vm_end)
    > - return -EINVAL;
    > + if (addr == vma->vm_start && end == vma->vm_end)
    > vma->vm_pgoff = pfn;
    > - }
    > + else if (is_cow_mapping(vma->vm_flags))
    > + return -EINVAL;
    >
    > vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
    >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/

  4. RE: [RFC] remap_pfn_range: store vm_pgoff for all linear_over_vma_region mappings



    >-----Original Message-----
    >From: Nick Piggin [mailto:npiggin@suse.de]
    >Sent: Thursday, October 23, 2008 6:08 PM
    >To: Pallipadi, Venkatesh
    >Cc: hugh@veritas.com; apkm@linux-os.sc.intel.com; Ingo Molnar;
    >linux-kernel
    >Subject: Re: [RFC] remap_pfn_range: store vm_pgoff for all
    >linear_over_vma_region mappings
    >
    >On Thu, Oct 23, 2008 at 03:09:14PM -0700, Venki Pallipadi wrote:
    >>
    >> While working on x86 PAT, we are having some hurdles with tracking
    >> remap_pfn_range() regions, as later we do not have any

    >information to say
    >> whether that PFNMAP mapping is linear for the entire vma range or
    >> it is smaller granularity regions within the vma.
    >>
    >> A simple solution to this is to use vm_pgoff as an indicator for
    >> linear mapping over the vma region. Currently, remap_pfn_range
    >> only sets vm_pgoff only for COW mappings. Below patch changes the
    >> logic and sets the vm_pgoff irrespective of COW.
    >>
    >> >From our understanding of the code, this should not break anyone.

    >> Just sending it as an RFC to get feedback on whether it is OK to do
    >> something like this or are there any corner cases that we may
    >> break or watch out for.
    >>
    >> Signed-off-by: Venkatesh Pallipadi
    >> Signed-off-by: Suresh Siddha

    >
    >Hmm, I can'tthink of why it would break, but I would like to see an
    >entire patch. Obviously you won't try to decode this vma stuff
    >directly from the PAT code, but just call mm helpers... ?
    >


    Yes. We are thinking of it as a call similar to is_cow_mapping().
    May be is_linear_vma_mapping() or something like that. We should
    have the rest of the patches by next week.

    Thanks,
    Venki
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/

+ Reply to Thread