linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-arch@vger.kernel.org
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: [PATCH v4 04/36] mm: Remove ARCH_IMPLEMENTS_FLUSH_DCACHE_FOLIO
Date: Wed, 15 Mar 2023 05:14:12 +0000	[thread overview]
Message-ID: <20230315051444.3229621-5-willy@infradead.org> (raw)
In-Reply-To: <20230315051444.3229621-1-willy@infradead.org>

Current best practice is to reuse the name of the function as a define
to indicate that the function is implemented by the architecture.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 Documentation/core-api/cachetlb.rst | 24 +++++++++---------------
 include/linux/cacheflush.h          |  4 ++--
 mm/util.c                           |  2 +-
 3 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/Documentation/core-api/cachetlb.rst b/Documentation/core-api/cachetlb.rst
index d4c9e2a28d36..770008afd409 100644
--- a/Documentation/core-api/cachetlb.rst
+++ b/Documentation/core-api/cachetlb.rst
@@ -269,7 +269,7 @@ maps this page at its virtual address.
 	If D-cache aliasing is not an issue, these two routines may
 	simply call memcpy/memset directly and do nothing more.
 
-  ``void flush_dcache_page(struct page *page)``
+  ``void flush_dcache_folio(struct folio *folio)``
 
         This routines must be called when:
 
@@ -277,7 +277,7 @@ maps this page at its virtual address.
 	     and / or in high memory
 	  b) the kernel is about to read from a page cache page and user space
 	     shared/writable mappings of this page potentially exist.  Note
-	     that {get,pin}_user_pages{_fast} already call flush_dcache_page
+	     that {get,pin}_user_pages{_fast} already call flush_dcache_folio
 	     on any page found in the user address space and thus driver
 	     code rarely needs to take this into account.
 
@@ -291,7 +291,7 @@ maps this page at its virtual address.
 
 	The phrase "kernel writes to a page cache page" means, specifically,
 	that the kernel executes store instructions that dirty data in that
-	page at the page->virtual mapping of that page.  It is important to
+	page at the kernel virtual mapping of that page.  It is important to
 	flush here to handle D-cache aliasing, to make sure these kernel stores
 	are visible to user space mappings of that page.
 
@@ -302,18 +302,18 @@ maps this page at its virtual address.
 	If D-cache aliasing is not an issue, this routine may simply be defined
 	as a nop on that architecture.
 
-        There is a bit set aside in page->flags (PG_arch_1) as "architecture
+        There is a bit set aside in folio->flags (PG_arch_1) as "architecture
 	private".  The kernel guarantees that, for pagecache pages, it will
 	clear this bit when such a page first enters the pagecache.
 
 	This allows these interfaces to be implemented much more
 	efficiently.  It allows one to "defer" (perhaps indefinitely) the
 	actual flush if there are currently no user processes mapping this
-	page.  See sparc64's flush_dcache_page and update_mmu_cache_range
+	page.  See sparc64's flush_dcache_folio and update_mmu_cache_range
 	implementations for an example of how to go about doing this.
 
-	The idea is, first at flush_dcache_page() time, if
-	page_file_mapping() returns a mapping, and mapping_mapped on that
+	The idea is, first at flush_dcache_folio() time, if
+	folio_flush_mapping() returns a mapping, and mapping_mapped() on that
 	mapping returns %false, just mark the architecture private page
 	flag bit.  Later, in update_mmu_cache_range(), a check is made
 	of this flag bit, and if set the flush is done and the flag bit
@@ -327,12 +327,6 @@ maps this page at its virtual address.
 			dirty.  Again, see sparc64 for examples of how
 			to deal with this.
 
-  ``void flush_dcache_folio(struct folio *folio)``
-	This function is called under the same circumstances as
-	flush_dcache_page().  It allows the architecture to
-	optimise for flushing the entire folio of pages instead
-	of flushing one page at a time.
-
   ``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
   unsigned long user_vaddr, void *dst, void *src, int len)``
   ``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
@@ -353,7 +347,7 @@ maps this page at its virtual address.
 
   	When the kernel needs to access the contents of an anonymous
 	page, it calls this function (currently only
-	get_user_pages()).  Note: flush_dcache_page() deliberately
+	get_user_pages()).  Note: flush_dcache_folio() deliberately
 	doesn't work for an anonymous page.  The default
 	implementation is a nop (and should remain so for all coherent
 	architectures).  For incoherent architectures, it should flush
@@ -370,7 +364,7 @@ maps this page at its virtual address.
   ``void flush_icache_page(struct vm_area_struct *vma, struct page *page)``
 
 	All the functionality of flush_icache_page can be implemented in
-	flush_dcache_page and update_mmu_cache_range. In the future, the hope
+	flush_dcache_folio and update_mmu_cache_range. In the future, the hope
 	is to remove this interface completely.
 
 The final category of APIs is for I/O to deliberately aliased address
diff --git a/include/linux/cacheflush.h b/include/linux/cacheflush.h
index a6189d21f2ba..82136f3fcf54 100644
--- a/include/linux/cacheflush.h
+++ b/include/linux/cacheflush.h
@@ -7,14 +7,14 @@
 struct folio;
 
 #if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE
-#ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_FOLIO
+#ifndef flush_dcache_folio
 void flush_dcache_folio(struct folio *folio);
 #endif
 #else
 static inline void flush_dcache_folio(struct folio *folio)
 {
 }
-#define ARCH_IMPLEMENTS_FLUSH_DCACHE_FOLIO 0
+#define flush_dcache_folio flush_dcache_folio
 #endif /* ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE */
 
 #endif /* _LINUX_CACHEFLUSH_H */
diff --git a/mm/util.c b/mm/util.c
index dd12b9531ac4..98ce51b01627 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -1125,7 +1125,7 @@ void page_offline_end(void)
 }
 EXPORT_SYMBOL(page_offline_end);
 
-#ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_FOLIO
+#ifndef flush_dcache_folio
 void flush_dcache_folio(struct folio *folio)
 {
 	long i, nr = folio_nr_pages(folio);
-- 
2.39.2


  parent reply	other threads:[~2023-03-15  5:16 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-15  5:14 [PATCH v4 00/36] New page table range API Matthew Wilcox (Oracle)
2023-03-15  5:14 ` [PATCH v4 01/36] mm: Convert page_table_check_pte_set() to page_table_check_ptes_set() Matthew Wilcox (Oracle)
2023-03-15  9:21   ` Mike Rapoport
2023-03-23 18:36   ` Pasha Tatashin
2023-05-25  2:16   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 02/36] mm: Add generic flush_icache_pages() and documentation Matthew Wilcox (Oracle)
2023-03-15  9:27   ` Mike Rapoport
2023-05-25  2:23   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 03/36] mm: Add folio_flush_mapping() Matthew Wilcox (Oracle)
2023-03-15  9:28   ` Mike Rapoport
2023-05-25  2:35   ` Anshuman Khandual
2023-03-15  5:14 ` Matthew Wilcox (Oracle) [this message]
2023-03-15  9:28   ` [PATCH v4 04/36] mm: Remove ARCH_IMPLEMENTS_FLUSH_DCACHE_FOLIO Mike Rapoport
2023-05-25  2:43   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 05/36] mm: Add default definition of set_ptes() Matthew Wilcox (Oracle)
2023-03-15  9:34   ` Mike Rapoport
2023-05-25  3:01   ` Anshuman Khandual
2023-05-25  4:06     ` Matthew Wilcox
2023-03-15  5:14 ` [PATCH v4 06/36] alpha: Implement the new page table range API Matthew Wilcox (Oracle)
2023-03-15  9:41   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 07/36] arc: " Matthew Wilcox (Oracle)
2023-03-15  9:44   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 08/36] arm: " Matthew Wilcox (Oracle)
2023-03-15  9:48   ` Mike Rapoport
2023-03-15 10:56   ` Russell King (Oracle)
2023-03-15  5:14 ` [PATCH v4 09/36] arm64: " Matthew Wilcox (Oracle)
2023-03-15  9:49   ` Mike Rapoport
2023-05-25  3:35   ` Anshuman Khandual
2023-05-25  4:05     ` Matthew Wilcox
2023-05-25  4:43       ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 10/36] csky: " Matthew Wilcox (Oracle)
2023-03-15  9:50   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 11/36] hexagon: " Matthew Wilcox (Oracle)
2023-03-15  9:54   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 12/36] ia64: " Matthew Wilcox (Oracle)
2023-03-15  9:55   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 13/36] loongarch: " Matthew Wilcox (Oracle)
2023-03-15 10:07   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 14/36] m68k: " Matthew Wilcox (Oracle)
2023-03-15  7:43   ` Geert Uytterhoeven
2023-03-16 16:32     ` Geert Uytterhoeven
2023-03-15 10:07   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 15/36] microblaze: " Matthew Wilcox (Oracle)
2023-03-15 10:07   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 16/36] mips: " Matthew Wilcox (Oracle)
2023-03-15 10:08   ` Mike Rapoport
2023-03-15 10:50   ` Thomas Bogendoerfer
2023-03-15 20:33     ` Matthew Wilcox
2023-03-17 15:29       ` Thomas Bogendoerfer
2023-03-19 18:45         ` Thomas Bogendoerfer
2023-03-19 20:16           ` Matthew Wilcox
2023-03-21 11:30             ` Thomas Bogendoerfer
2023-03-15  5:14 ` [PATCH v4 17/36] nios2: " Matthew Wilcox (Oracle)
2023-03-15 10:08   ` Mike Rapoport
2023-06-13 22:45     ` Dinh Nguyen
2023-07-10 20:18       ` Matthew Wilcox
2023-07-10 23:10         ` Dinh Nguyen
2023-03-15  5:14 ` [PATCH v4 18/36] openrisc: " Matthew Wilcox (Oracle)
2023-03-15 10:09   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 19/36] parisc: " Matthew Wilcox (Oracle)
2023-03-15 10:09   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 20/36] powerpc: " Matthew Wilcox (Oracle)
2023-03-15  9:43   ` Christophe Leroy
2023-03-15 10:18     ` Christophe Leroy
2023-03-17  3:47       ` Matthew Wilcox
2023-03-18  9:19         ` Christophe Leroy
2023-07-10 20:24           ` Matthew Wilcox
2023-07-11  4:40             ` Christophe Leroy
2023-03-15 10:09   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 21/36] riscv: " Matthew Wilcox (Oracle)
2023-03-15 10:10   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 22/36] s390: " Matthew Wilcox (Oracle)
2023-03-15 10:10   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 23/36] superh: " Matthew Wilcox (Oracle)
2023-03-15  7:22   ` John Paul Adrian Glaubitz
2023-03-15  7:36   ` John Paul Adrian Glaubitz
2023-03-15 10:10   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 24/36] sparc32: " Matthew Wilcox (Oracle)
2023-03-15 10:11   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 25/36] sparc64: " Matthew Wilcox (Oracle)
2023-03-15 10:11   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 26/36] um: " Matthew Wilcox (Oracle)
2023-03-15 10:12   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 27/36] x86: " Matthew Wilcox (Oracle)
2023-03-15 10:12   ` Mike Rapoport
2023-03-15 10:34   ` Peter Zijlstra
2023-03-15 11:16     ` Mike Rapoport
2023-03-15 11:19       ` Peter Zijlstra
2023-03-15 16:12         ` Matthew Wilcox
2023-03-15  5:14 ` [PATCH v4 28/36] xtensa: " Matthew Wilcox (Oracle)
2023-03-15 10:12   ` Mike Rapoport
2023-03-15  5:14 ` [PATCH v4 29/36] mm: Remove page_mapping_file() Matthew Wilcox (Oracle)
2023-05-25  3:50   ` Anshuman Khandual
2023-05-25  4:03     ` Matthew Wilcox
2023-05-25  4:46       ` Anshuman Khandual
2023-05-25  5:37   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 30/36] mm: Rationalise flush_icache_pages() and flush_icache_page() Matthew Wilcox (Oracle)
2023-03-15  5:14 ` [PATCH v4 31/36] mm: Tidy up set_ptes definition Matthew Wilcox (Oracle)
2023-05-25  6:20   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 32/36] mm: Use flush_icache_pages() in do_set_pmd() Matthew Wilcox (Oracle)
2023-05-25  6:31   ` Anshuman Khandual
2023-03-15  5:14 ` [PATCH v4 33/36] filemap: Add filemap_map_folio_range() Matthew Wilcox (Oracle)
2023-03-15  5:14 ` [PATCH v4 34/36] rmap: add folio_add_file_rmap_range() Matthew Wilcox (Oracle)
2023-03-15 13:34   ` Ryan Roberts
2023-03-15 16:08     ` Ryan Roberts
2023-03-16 16:27       ` Yin, Fengwei
2023-03-16 16:34         ` Ryan Roberts
2023-03-17  8:23           ` Yin, Fengwei
2023-03-17 12:46             ` Ryan Roberts
2023-03-17 13:28               ` Yin, Fengwei
2023-03-15  5:14 ` [PATCH v4 35/36] mm: Convert do_set_pte() to set_pte_range() Matthew Wilcox (Oracle)
2023-03-15 15:26   ` Ryan Roberts
2023-03-16 16:23     ` Yin, Fengwei
2023-03-16 16:38       ` Ryan Roberts
2023-03-16 16:41         ` Yin, Fengwei
2023-03-16 16:50           ` Ryan Roberts
2023-03-16 17:52         ` Matthew Wilcox
2023-03-17  1:58           ` Yin, Fengwei
2023-03-17  3:44             ` Matthew Wilcox
2023-03-17  6:33               ` Yin, Fengwei
2023-03-17  8:00                 ` Ryan Roberts
2023-03-17  8:19                   ` Yin, Fengwei
2023-03-17 13:00                     ` Ryan Roberts
2023-03-17 13:44                       ` Yin, Fengwei
2023-03-24 14:58                     ` Will Deacon
2023-03-24 15:11                       ` Matthew Wilcox
2023-03-24 17:23                         ` Will Deacon
2023-03-27  1:23                           ` Yin Fengwei
2023-03-20 13:38               ` Yin, Fengwei
2023-03-20 14:08                 ` Matthew Wilcox
2023-03-21  1:58                   ` Yin, Fengwei
2023-03-21  5:13                   ` Yin Fengwei
2023-05-30  8:07                   ` [PATCH 0/4] New page table range API fixup patches Yin Fengwei
2023-05-30  8:07                     ` [PATCH 1/4] filemap: avoid interfere with xas.xa_index Yin Fengwei
2023-05-30  8:07                     ` [PATCH 2/4] rmap: fix typo in folio_add_file_rmap_range() Yin Fengwei
2023-05-30  8:07                     ` [PATCH 3/4] mm: mark PTEs referencing the accessed folio young Yin Fengwei
2023-05-30  8:07                     ` [PATCH 4/4] filemap: Check address range in filemap_map_folio_range() Yin Fengwei
2023-03-15  5:14 ` [PATCH v4 36/36] filemap: Batch PTE mappings Matthew Wilcox (Oracle)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230315051444.3229621-5-willy@infradead.org \
    --to=willy@infradead.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).