]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xtensa: remove uses of PG_arch_1 on individual pages
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 26 Mar 2024 17:10:24 +0000 (17:10 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 26 Apr 2024 03:56:13 +0000 (20:56 -0700)
Since switching to the new page table range API, we disregard the
PG_arch_1 (aka dcache dirty) flag on tail pages, and only pay attention to
it on the folio.  Fix these two missed spots where we were setting it on
arbitrary pages.

Link: https://lkml.kernel.org/r/20240326171045.410737-3-willy@infradead.org
Reported-by: Svetly Todorov <svetly.todorov@memverge.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Svetly Todorov <svetly.todorov@memverge.com> [xtensa]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/xtensa/mm/cache.c

index 7ec66a79f4723cdaad936274607a36a615a56d5e..23be0e7516cede9446c2d446740188c510b034e1 100644 (file)
@@ -87,12 +87,13 @@ static inline void *coherent_kvaddr(struct page *page, unsigned long base,
 
 void clear_user_highpage(struct page *page, unsigned long vaddr)
 {
+       struct folio *folio = page_folio(page);
        unsigned long paddr;
        void *kvaddr = coherent_kvaddr(page, TLBTEMP_BASE_1, vaddr, &paddr);
 
        preempt_disable();
        kmap_invalidate_coherent(page, vaddr);
-       set_bit(PG_arch_1, &page->flags);
+       set_bit(PG_arch_1, folio_flags(folio, 0));
        clear_page_alias(kvaddr, paddr);
        preempt_enable();
 }
@@ -101,6 +102,7 @@ EXPORT_SYMBOL(clear_user_highpage);
 void copy_user_highpage(struct page *dst, struct page *src,
                        unsigned long vaddr, struct vm_area_struct *vma)
 {
+       struct folio *folio = page_folio(dst);
        unsigned long dst_paddr, src_paddr;
        void *dst_vaddr = coherent_kvaddr(dst, TLBTEMP_BASE_1, vaddr,
                                          &dst_paddr);
@@ -109,7 +111,7 @@ void copy_user_highpage(struct page *dst, struct page *src,
 
        preempt_disable();
        kmap_invalidate_coherent(dst, vaddr);
-       set_bit(PG_arch_1, &dst->flags);
+       set_bit(PG_arch_1, folio_flags(folio, 0));
        copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr);
        preempt_enable();
 }