Inter-revision diff: patch 1

Comparing v4 (message) to v8 (message)

--- v4
+++ v8
@@ -1,63 +1,26 @@
-From: Peter Zijlstra <peterz@infradead.org>
+This configuration variable will be used to build the code needed to
+handle speculative page fault.
 
-One of the side effects of speculating on faults (without holding
-mmap_sem) is that we can race with free_pgtables() and therefore we
-cannot assume the page-tables will stick around.
+By default it is turned off, and activated depending on architecture
+support.
 
-Remove the reliance on the pte pointer.
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-
-[Remove only if !__HAVE_ARCH_CALL_SPF]
+Suggested-by: Thomas Gleixner <tglx@linutronix.de>
 Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
 ---
- mm/memory.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ mm/Kconfig | 3 +++
+ 1 file changed, 3 insertions(+)
 
-diff --git a/mm/memory.c b/mm/memory.c
-index 6632c9b357c9..4e4fe233d066 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -2287,6 +2287,7 @@ int apply_to_page_range(struct mm_struct *mm, unsigned long addr,
- }
- EXPORT_SYMBOL_GPL(apply_to_page_range);
+diff --git a/mm/Kconfig b/mm/Kconfig
+index c782e8fb7235..42be0d92336e 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
+@@ -760,3 +760,6 @@ config GUP_BENCHMARK
+ 	  performance of get_user_pages_fast().
  
-+#ifndef __HAVE_ARCH_CALL_SPF
- /*
-  * handle_pte_fault chooses page fault handler according to an entry which was
-  * read non-atomically.  Before making any commitment, on those architectures
-@@ -2296,7 +2297,7 @@ EXPORT_SYMBOL_GPL(apply_to_page_range);
-  * and do_anonymous_page can safely check later on).
-  */
- static inline int pte_unmap_same(struct mm_struct *mm, pmd_t *pmd,
--				pte_t *page_table, pte_t orig_pte)
-+				 pte_t *page_table, pte_t orig_pte)
- {
- 	int same = 1;
- #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
-@@ -2310,6 +2311,7 @@ static inline int pte_unmap_same(struct mm_struct *mm, pmd_t *pmd,
- 	pte_unmap(page_table);
- 	return same;
- }
-+#endif
- 
- static inline void cow_user_page(struct page *dst, struct page *src, unsigned long va, struct vm_area_struct *vma)
- {
-@@ -2871,11 +2873,14 @@ int do_swap_page(struct vm_fault *vmf)
- 
- 	if (vma_readahead)
- 		page = swap_readahead_detect(vmf, &swap_ra);
+ 	  See tools/testing/selftests/vm/gup_benchmark.c
 +
-+#ifndef __HAVE_ARCH_CALL_SPF
- 	if (!pte_unmap_same(vma->vm_mm, vmf->pmd, vmf->pte, vmf->orig_pte)) {
- 		if (page)
- 			put_page(page);
- 		goto out;
- 	}
-+#endif
- 
- 	entry = pte_to_swp_entry(vmf->orig_pte);
- 	if (unlikely(non_swap_entry(entry))) {
++config SPECULATIVE_PAGE_FAULT
++       bool
 -- 
 2.7.4
 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help