forked from mirrors/linux
		
	mm: use flush_icache_pages() in do_set_pmd()
Push the iteration over each page down to the architectures (many can flush the entire THP without iteration). Link: https://lkml.kernel.org/r/20230802151406.3735276-34-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									af4fcb0729
								
							
						
					
					
						commit
						9f1f5b60e7
					
				
					 1 changed files with 1 additions and 3 deletions
				
			
		| 
						 | 
					@ -4265,7 +4265,6 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
 | 
				
			||||||
	bool write = vmf->flags & FAULT_FLAG_WRITE;
 | 
						bool write = vmf->flags & FAULT_FLAG_WRITE;
 | 
				
			||||||
	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 | 
						unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 | 
				
			||||||
	pmd_t entry;
 | 
						pmd_t entry;
 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
	vm_fault_t ret = VM_FAULT_FALLBACK;
 | 
						vm_fault_t ret = VM_FAULT_FALLBACK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!transhuge_vma_suitable(vma, haddr))
 | 
						if (!transhuge_vma_suitable(vma, haddr))
 | 
				
			||||||
| 
						 | 
					@ -4298,8 +4297,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
 | 
				
			||||||
	if (unlikely(!pmd_none(*vmf->pmd)))
 | 
						if (unlikely(!pmd_none(*vmf->pmd)))
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < HPAGE_PMD_NR; i++)
 | 
						flush_icache_pages(vma, page, HPAGE_PMD_NR);
 | 
				
			||||||
		flush_icache_page(vma, page + i);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	entry = mk_huge_pmd(page, vma->vm_page_prot);
 | 
						entry = mk_huge_pmd(page, vma->vm_page_prot);
 | 
				
			||||||
	if (write)
 | 
						if (write)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue