On Tue, Feb 28, 2023 at 09:37:33PM +0000, Matthew Wilcox (Oracle) wrote: > Push the iteration over each page down to the architectures (many > can flush the entire THP without iteration). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > --- > mm/memory.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index bfa3100ec5a3..69e844d5f75c 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4222,8 +4222,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > if (unlikely(!pmd_none(*vmf->pmd))) > goto out; > > - for (i = 0; i < HPAGE_PMD_NR; i++) > - flush_icache_page(vma, page + i); > + flush_icache_pages(vma, page, HPAGE_PMD_NR); > > entry = mk_huge_pmd(page, vma->vm_page_prot); > if (write) > -- > 2.39.1 I get this: CC mm/memory.o /home/mike/git/linux/mm/memory.c: In function 'do_set_pmd': /home/mike/git/linux/mm/memory.c:4191:13: warning: unused variable 'i' [-Wunused-variable] 4191 | int i; | ^ And the patch here makes it go away: diff --git a/mm/memory.c b/mm/memory.c index cc7845ff09ba..c359fb8643e5 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4188,7 +4188,6 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) bool write = vmf->flags & FAULT_FLAG_WRITE; unsigned long haddr = vmf->address & HPAGE_PMD_MASK; pmd_t entry; - int i; vm_fault_t ret = VM_FAULT_FALLBACK; if (!transhuge_vma_suitable(vma, haddr)) -- Sincerely yours, Mike.