diff for duplicates of <4794C40A.3020500@qumranet.com> diff --git a/a/2.hdr b/N1/2.hdr index 7961e49..5c9a3e5 100644 --- a/a/2.hdr +++ b/N1/2.hdr @@ -1,5 +1,5 @@ Content-Type: text/x-patch; - name="0005-memory.c-add-new-exported-function-replace_page.patch" + name="0005-memory.c-add-new-exported-function-replace_page.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; - filename*0="0005-memory.c-add-new-exported-function-replace_page.patch" + filename*0="0005-memory.c-add-new-exported-function-replace_page.patch" diff --git a/a/2.txt b/N1/2.txt index af455c1..8b13789 100644 --- a/a/2.txt +++ b/N1/2.txt @@ -1,102 +1 @@ ->From c6fc21397e37481696723115cb1680f42661be48 Mon Sep 17 00:00:00 2001 -From: Izik Eidus <izike-atKUWr5tajBWk0Htik3J/w@public.gmane.org> -Date: Mon, 21 Jan 2008 17:04:45 +0200 -Subject: [PATCH] memory.c: add new exported function replace_page() - replace_page() - replace the pte mapping related to vm area between two pages - (from oldpage to newpage) -Signed-off-by: Izik Eidus <izike-atKUWr5tajBWk0Htik3J/w@public.gmane.org> ---- - include/linux/mm.h | 5 +++- - mm/memory.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 64 insertions(+), 1 deletions(-) - -diff --git a/include/linux/mm.h b/include/linux/mm.h -index 1b7b95c..a311c25 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -1094,7 +1094,10 @@ int remap_pfn_range(struct vm_area_struct *, unsigned long addr, - unsigned long pfn, unsigned long size, pgprot_t); - int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *); - int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, -- unsigned long pfn); -+ unsigned long pfn); -+ -+int replace_page(struct vm_area_struct *vma, struct page *oldpage, -+ struct page *newpage, pgprot_t prot); - - struct page *follow_page(struct vm_area_struct *, unsigned long address, - unsigned int foll_flags); -diff --git a/mm/memory.c b/mm/memory.c -index 4bf0b6d..d8cb36b 100644 ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -2360,6 +2360,66 @@ static int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma, - return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte); - } - -+/** -+ * replace_page - replace the pte mapping related to vm area between two pages -+ * (from oldpage to newpage) -+ */ -+int replace_page(struct vm_area_struct *vma, struct page *oldpage, -+ struct page *newpage, pgprot_t prot) -+{ -+ struct mm_struct *mm = vma->vm_mm; -+ pgd_t *pgd; -+ pud_t *pud; -+ pmd_t *pmd; -+ pte_t *ptep; -+ spinlock_t *ptl; -+ unsigned long addr; -+ int ret; -+ -+ BUG_ON(!PageLocked(oldpage)); -+ -+ ret = -EFAULT; -+ addr = page_address_in_vma(oldpage, vma); -+ if (addr == -EFAULT) -+ goto out; -+ -+ pgd = pgd_offset(mm, addr); -+ if (!pgd_present(*pgd)) -+ goto out; -+ -+ pud = pud_offset(pgd, addr); -+ if (!pud_present(*pud)) -+ goto out; -+ -+ pmd = pmd_offset(pud, addr); -+ if (!pmd_present(*pmd)) -+ goto out; -+ -+ ptep = pte_offset_map_lock(mm, pmd, addr, &ptl); -+ if (!ptep) -+ goto out; -+ -+ ret = 0; -+ get_page(newpage); -+ page_add_file_rmap(newpage); -+ -+ flush_cache_page(vma, addr, pte_pfn(*ptep)); -+ ptep_clear_flush(vma, addr, ptep); -+ set_pte_at(mm, addr, ptep, mk_pte(newpage, prot)); -+ -+ page_remove_rmap(oldpage, vma); -+ if (PageAnon(oldpage)) { -+ dec_mm_counter(mm, anon_rss); -+ inc_mm_counter(mm, file_rss); -+ } -+ put_page(oldpage); -+ -+ pte_unmap_unlock(ptep, ptl); -+out: -+ return ret; -+} -+EXPORT_SYMBOL_GPL(replace_page); -+ - - /* - * do_no_pfn() tries to create a new page mapping for a page without --- -1.5.3.6 diff --git a/a/3.hdr b/a/3.hdr deleted file mode 100644 index 4b86001..0000000 --- a/a/3.hdr +++ /dev/null @@ -1,4 +0,0 @@ -Content-Type: text/plain; charset="us-ascii" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Content-Disposition: inline diff --git a/a/3.txt b/a/3.txt deleted file mode 100644 index 7656627..0000000 --- a/a/3.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------- -This SF.net email is sponsored by: Microsoft -Defy all challenges. Microsoft(R) Visual Studio 2008. -http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ diff --git a/a/4.hdr b/a/4.hdr deleted file mode 100644 index 4b86001..0000000 --- a/a/4.hdr +++ /dev/null @@ -1,4 +0,0 @@ -Content-Type: text/plain; charset="us-ascii" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Content-Disposition: inline diff --git a/a/4.txt b/a/4.txt deleted file mode 100644 index 960c924..0000000 --- a/a/4.txt +++ /dev/null @@ -1,4 +0,0 @@ -_______________________________________________ -kvm-devel mailing list -kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org -https://lists.sourceforge.net/lists/listinfo/kvm-devel diff --git a/a/content_digest b/N1/content_digest index 4d008f9..bf32d10 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,12 +1,12 @@ - "From\0Izik Eidus <izike-atKUWr5tajBWk0Htik3J/w@public.gmane.org>\0" + "From\0Izik Eidus <izike@qumranet.com>\0" "Subject\0[RFC][PATCH 2/5] add new exported function replace_page()\0" "Date\0Mon, 21 Jan 2008 18:10:50 +0200\0" - "To\0kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>" - andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org - avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org - dor.laor-atKUWr5tajBWk0Htik3J/w@public.gmane.org - linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org - " yaniv-atKUWr5tajBWk0Htik3J/w@public.gmane.org\0" + "To\0kvm-devel <kvm-devel@lists.sourceforge.net>" + andrea@qumranet.com + avi@qumranet.com + dor.laor@qumranet.com + linux-mm@kvack.org + " yaniv@qumranet.com\0" "\01:1\0" "b\0" "\n" @@ -15,119 +15,5 @@ "\01:2\0" "fn\00005-memory.c-add-new-exported-function-replace_page.patch\0" "b\0" - ">From c6fc21397e37481696723115cb1680f42661be48 Mon Sep 17 00:00:00 2001\n" - "From: Izik Eidus <izike-atKUWr5tajBWk0Htik3J/w@public.gmane.org>\n" - "Date: Mon, 21 Jan 2008 17:04:45 +0200\n" - "Subject: [PATCH] memory.c: add new exported function replace_page()\n" - " replace_page() - replace the pte mapping related to vm area between two pages\n" - " (from oldpage to newpage)\n" - "\n" - "Signed-off-by: Izik Eidus <izike-atKUWr5tajBWk0Htik3J/w@public.gmane.org>\n" - "---\n" - " include/linux/mm.h | 5 +++-\n" - " mm/memory.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++\n" - " 2 files changed, 64 insertions(+), 1 deletions(-)\n" - "\n" - "diff --git a/include/linux/mm.h b/include/linux/mm.h\n" - "index 1b7b95c..a311c25 100644\n" - "--- a/include/linux/mm.h\n" - "+++ b/include/linux/mm.h\n" - "@@ -1094,7 +1094,10 @@ int remap_pfn_range(struct vm_area_struct *, unsigned long addr,\n" - " \t\t\tunsigned long pfn, unsigned long size, pgprot_t);\n" - " int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *);\n" - " int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,\n" - "-\t\t\tunsigned long pfn);\n" - "+\t\t unsigned long pfn);\n" - "+\n" - "+int replace_page(struct vm_area_struct *vma, struct page *oldpage,\n" - "+\t\t struct page *newpage, pgprot_t prot);\n" - " \n" - " struct page *follow_page(struct vm_area_struct *, unsigned long address,\n" - " \t\t\tunsigned int foll_flags);\n" - "diff --git a/mm/memory.c b/mm/memory.c\n" - "index 4bf0b6d..d8cb36b 100644\n" - "--- a/mm/memory.c\n" - "+++ b/mm/memory.c\n" - "@@ -2360,6 +2360,66 @@ static int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma,\n" - " \treturn __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);\n" - " }\n" - " \n" - "+/**\n" - "+ * replace_page - replace the pte mapping related to vm area between two pages\n" - "+ * (from oldpage to newpage)\n" - "+ */\n" - "+int replace_page(struct vm_area_struct *vma, struct page *oldpage,\n" - "+\t\t struct page *newpage, pgprot_t prot)\n" - "+{\n" - "+\tstruct mm_struct *mm = vma->vm_mm;\n" - "+\tpgd_t *pgd;\n" - "+\tpud_t *pud;\n" - "+\tpmd_t *pmd;\n" - "+\tpte_t *ptep;\n" - "+\tspinlock_t *ptl;\n" - "+\tunsigned long addr;\n" - "+\tint ret;\n" - "+\n" - "+\tBUG_ON(!PageLocked(oldpage));\n" - "+\n" - "+\tret = -EFAULT;\n" - "+\taddr = page_address_in_vma(oldpage, vma);\n" - "+\tif (addr == -EFAULT)\n" - "+\t\tgoto out;\n" - "+\n" - "+\tpgd = pgd_offset(mm, addr);\n" - "+\tif (!pgd_present(*pgd))\n" - "+\t\tgoto out;\n" - "+\n" - "+\tpud = pud_offset(pgd, addr);\n" - "+\tif (!pud_present(*pud))\n" - "+\t\tgoto out;\n" - "+\n" - "+\tpmd = pmd_offset(pud, addr);\n" - "+\tif (!pmd_present(*pmd))\n" - "+\t\tgoto out;\n" - "+\n" - "+\tptep = pte_offset_map_lock(mm, pmd, addr, &ptl);\n" - "+\tif (!ptep)\n" - "+\t\tgoto out;\n" - "+\n" - "+\tret = 0;\n" - "+\tget_page(newpage);\n" - "+\tpage_add_file_rmap(newpage);\n" - "+\n" - "+\tflush_cache_page(vma, addr, pte_pfn(*ptep));\n" - "+\tptep_clear_flush(vma, addr, ptep);\n" - "+\tset_pte_at(mm, addr, ptep, mk_pte(newpage, prot));\n" - "+\n" - "+\tpage_remove_rmap(oldpage, vma);\n" - "+\tif (PageAnon(oldpage)) {\n" - "+\t\tdec_mm_counter(mm, anon_rss);\n" - "+\t\tinc_mm_counter(mm, file_rss);\n" - "+\t}\n" - "+\tput_page(oldpage);\n" - "+\n" - "+\tpte_unmap_unlock(ptep, ptl);\n" - "+out:\n" - "+\treturn ret;\n" - "+}\n" - "+EXPORT_SYMBOL_GPL(replace_page);\n" - "+\n" - " \n" - " /*\n" - " * do_no_pfn() tries to create a new page mapping for a page without\n" - "-- \n" - 1.5.3.6 - "\01:3\0" - "b\0" - "-------------------------------------------------------------------------\n" - "This SF.net email is sponsored by: Microsoft\n" - "Defy all challenges. Microsoft(R) Visual Studio 2008.\n" - http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ - "\01:4\0" - "b\0" - "_______________________________________________\n" - "kvm-devel mailing list\n" - "kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org\n" - https://lists.sourceforge.net/lists/listinfo/kvm-devel -3b024062297e7b937490673d266d12722f7abe91cd0067a371803ef84729b86b +0bc6ac75d4b694babb2ba933391cfbb5cfb9199f7d20ab7d0ef8409aea000a0c
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.