diff for duplicates of <4E60C067.4010600@citrix.com> diff --git a/a/1.txt b/N1/1.txt index 3297b60..00bb963 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -18,58 +18,3 @@ On 01/09/11 22:17, Andrew Morton wrote: > been playing games with To: headers? Sorry, I should have Cc'd linux-kernel and others on the original patch. - ->From 6844ca07140e08f29454ca7b3fa459571c7ba428 Mon Sep 17 00:00:00 2001 -From: David Vrabel <david.vrabel@citrix.com> -Date: Thu, 1 Sep 2011 11:42:50 +0100 -Subject: [PATCH] mm: sync vmalloc address space page tables in -alloc_vm_area() - -Xen backend drivers (e.g., blkback and netback) would sometimes fail -to map grant pages into the vmalloc address space allocated with -alloc_vm_area(). The GNTTABOP_map_grant_ref would fail because Xen -could not find the page (in the L2 table) containing the PTEs it -needed to update. - -(XEN) mm.c:3846:d0 Could not find L1 PTE for address fbb42000 - -netback and blkback were making the hypercall from a kernel thread -where task->active_mm != &init_mm and alloc_vm_area() was only -updating the page tables for init_mm. The usual method of deferring -the update to the page tables of other processes (i.e., after taking a -fault) doesn't work as a fault cannot occur during the hypercall. - -This would work on some systems depending on what else was using -vmalloc. - -Fix this by reverting ef691947d8a3d479e67652312783aedcf629320a -(vmalloc: remove vmalloc_sync_all() from alloc_vm_area()) and add a -comment to explain why it's needed. - -Signed-off-by: David Vrabel <david.vrabel@citrix.com> -Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> ---- - mm/vmalloc.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 7ef0903..5016f19 100644 ---- a/mm/vmalloc.c -+++ b/mm/vmalloc.c -@@ -2140,6 +2140,14 @@ struct vm_struct *alloc_vm_area(size_t size) - return NULL; - } - -+ /* -+ * If the allocated address space is passed to a hypercall -+ * before being used then we cannot rely on a page fault to -+ * trigger an update of the page tables. So sync all the page -+ * tables here. -+ */ -+ vmalloc_sync_all(); -+ - return area; - } - EXPORT_SYMBOL_GPL(alloc_vm_area); --- -1.7.2.5 diff --git a/a/content_digest b/N1/content_digest index 97d4cd3..8e7305f 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -35,61 +35,6 @@ "> Problem is, I can't find David's original email anywhere. Someone's\n" "> been playing games with To: headers?\n" "\n" - "Sorry, I should have Cc'd linux-kernel and others on the original patch.\n" - "\n" - ">From 6844ca07140e08f29454ca7b3fa459571c7ba428 Mon Sep 17 00:00:00 2001\n" - "From: David Vrabel <david.vrabel@citrix.com>\n" - "Date: Thu, 1 Sep 2011 11:42:50 +0100\n" - "Subject: [PATCH] mm: sync vmalloc address space page tables in\n" - "alloc_vm_area()\n" - "\n" - "Xen backend drivers (e.g., blkback and netback) would sometimes fail\n" - "to map grant pages into the vmalloc address space allocated with\n" - "alloc_vm_area(). The GNTTABOP_map_grant_ref would fail because Xen\n" - "could not find the page (in the L2 table) containing the PTEs it\n" - "needed to update.\n" - "\n" - "(XEN) mm.c:3846:d0 Could not find L1 PTE for address fbb42000\n" - "\n" - "netback and blkback were making the hypercall from a kernel thread\n" - "where task->active_mm != &init_mm and alloc_vm_area() was only\n" - "updating the page tables for init_mm. The usual method of deferring\n" - "the update to the page tables of other processes (i.e., after taking a\n" - "fault) doesn't work as a fault cannot occur during the hypercall.\n" - "\n" - "This would work on some systems depending on what else was using\n" - "vmalloc.\n" - "\n" - "Fix this by reverting ef691947d8a3d479e67652312783aedcf629320a\n" - "(vmalloc: remove vmalloc_sync_all() from alloc_vm_area()) and add a\n" - "comment to explain why it's needed.\n" - "\n" - "Signed-off-by: David Vrabel <david.vrabel@citrix.com>\n" - "Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>\n" - "---\n" - " mm/vmalloc.c | 8 ++++++++\n" - " 1 files changed, 8 insertions(+), 0 deletions(-)\n" - "\n" - "diff --git a/mm/vmalloc.c b/mm/vmalloc.c\n" - "index 7ef0903..5016f19 100644\n" - "--- a/mm/vmalloc.c\n" - "+++ b/mm/vmalloc.c\n" - "@@ -2140,6 +2140,14 @@ struct vm_struct *alloc_vm_area(size_t size)\n" - " \t\treturn NULL;\n" - " \t}\n" - "\n" - "+\t/*\n" - "+\t * If the allocated address space is passed to a hypercall\n" - "+\t * before being used then we cannot rely on a page fault to\n" - "+\t * trigger an update of the page tables. So sync all the page\n" - "+\t * tables here.\n" - "+\t */\n" - "+\tvmalloc_sync_all();\n" - "+\n" - " \treturn area;\n" - " }\n" - " EXPORT_SYMBOL_GPL(alloc_vm_area);\n" - "-- \n" - 1.7.2.5 + Sorry, I should have Cc'd linux-kernel and others on the original patch. -2631723b5ada943ee6ceaf53890fd7e461c55f9a2bf8aacf28986858a4c54d23 +45b7048a0e1739f021cce2988dc92aef3c1f8d69f746544c3cce37626960ee40
diff --git a/a/1.txt b/N2/1.txt index 3297b60..bd03228 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -73,3 +73,10 @@ index 7ef0903..5016f19 100644 EXPORT_SYMBOL_GPL(alloc_vm_area); -- 1.7.2.5 + +-- +To unsubscribe, send a message with 'unsubscribe linux-mm' in +the body to majordomo@kvack.org. For more info on Linux MM, +see: http://www.linux-mm.org/ . +Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ +Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N2/content_digest index 97d4cd3..15c191e 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -90,6 +90,13 @@ " }\n" " EXPORT_SYMBOL_GPL(alloc_vm_area);\n" "-- \n" - 1.7.2.5 + "1.7.2.5\n" + "\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -2631723b5ada943ee6ceaf53890fd7e461c55f9a2bf8aacf28986858a4c54d23 +f6b738b2f9ac3bb1758912a425fff2287e3e3e6287385ec989b393fe83415f9f
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.