Linux-MIPS Archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper
@ 2023-09-12 13:48 Thomas Zimmermann
  2023-09-12 13:48 ` [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:48 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Clean up and rename fb_pgprotect() to work without struct file. Then
refactor the implementation for PowerPC. This change has been discussed
at [1] in the context of refactoring fbdev's mmap code.

The first two patches update fbdev and replace fbdev's fb_pgprotect()
with pgprot_framebuffer() on all architectures. The new helper's stream-
lined interface enables more refactoring within fbdev's mmap
implementation.

Patches 3 to 5 adapt PowerPC's internal interfaces to provide
phys_mem_access_prot() that works without struct file. Neither the
architecture code or fbdev helpers need the parameter.

v4:
	* fix commit message (Christophe)
v3:
	* rename fb_pgrotect() to pgprot_framebuffer() (Arnd)
v2:
	* reorder patches to simplify merging (Michael)

[1] https://lore.kernel.org/linuxppc-dev/5501ba80-bdb0-6344-16b0-0466a950f82c@suse.com/

Thomas Zimmermann (5):
  fbdev: Avoid file argument in fb_pgprotect()
  fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
  arch/powerpc: Remove trailing whitespaces
  arch/powerpc: Remove file parameter from phys_mem_access_prot code
  arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code

 arch/ia64/include/asm/fb.h                | 15 +++++++--------
 arch/m68k/include/asm/fb.h                | 19 ++++++++++---------
 arch/mips/include/asm/fb.h                | 11 +++++------
 arch/powerpc/include/asm/book3s/pgtable.h | 10 ++++++++--
 arch/powerpc/include/asm/fb.h             | 13 +++++--------
 arch/powerpc/include/asm/machdep.h        | 13 ++++++-------
 arch/powerpc/include/asm/nohash/pgtable.h | 10 ++++++++--
 arch/powerpc/include/asm/pci.h            |  4 +---
 arch/powerpc/kernel/pci-common.c          |  3 +--
 arch/powerpc/mm/mem.c                     |  8 ++++----
 arch/sparc/include/asm/fb.h               | 15 +++++++++------
 arch/x86/include/asm/fb.h                 | 10 ++++++----
 arch/x86/video/fbdev.c                    | 15 ++++++++-------
 drivers/video/fbdev/core/fb_chrdev.c      |  3 ++-
 include/asm-generic/fb.h                  | 12 ++++++------
 15 files changed, 86 insertions(+), 75 deletions(-)

-- 
2.42.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect()
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
@ 2023-09-12 13:48 ` Thomas Zimmermann
  2023-09-20  8:01   ` Javier Martinez Canillas
  2023-09-12 13:49 ` [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:48 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Only PowerPC's fb_pgprotect() needs the file argument, although
the implementation does not use it. Pass NULL to the internal
helper in preparation of further updates. A later patch will remove
the file parameter from fb_pgprotect().

While at it, replace the shift operation with PHYS_PFN().

Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 arch/powerpc/include/asm/fb.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/fb.h b/arch/powerpc/include/asm/fb.h
index 5f1a2e5f76548..61e3b8806db69 100644
--- a/arch/powerpc/include/asm/fb.h
+++ b/arch/powerpc/include/asm/fb.h
@@ -9,7 +9,12 @@
 static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
 				unsigned long off)
 {
-	vma->vm_page_prot = phys_mem_access_prot(file, off >> PAGE_SHIFT,
+	/*
+	 * PowerPC's implementation of phys_mem_access_prot() does
+	 * not use the file argument. Set it to NULL in preparation
+	 * of later updates to the interface.
+	 */
+	vma->vm_page_prot = phys_mem_access_prot(NULL, PHYS_PFN(off),
 						 vma->vm_end - vma->vm_start,
 						 vma->vm_page_prot);
 }
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
  2023-09-12 13:48 ` [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
@ 2023-09-12 13:49 ` Thomas Zimmermann
  2023-09-13  8:09   ` Geert Uytterhoeven
  2023-09-20  8:09   ` Javier Martinez Canillas
  2023-09-12 13:49 ` [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces Thomas Zimmermann
                   ` (4 subsequent siblings)
  6 siblings, 2 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:49 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Rename the fbdev mmap helper fb_pgprotect() to pgprot_framebuffer().
The helper sets VMA page-access flags for framebuffers in device I/O
memory.

Also clean up the helper's parameters and return value. Instead of
the VMA instance, pass the individial parameters separately: existing
page-access flags, the VMAs start and end addresses and the offset
in the underlying device memory rsp file. Return the new page-access
flags. These changes align pgprot_framebuffer() with other pgprot_()
functions.

v4:
	* fix commit message (Christophe)
v3:
	* rename fb_pgprotect() to pgprot_framebuffer() (Arnd)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 arch/ia64/include/asm/fb.h           | 15 +++++++--------
 arch/m68k/include/asm/fb.h           | 19 ++++++++++---------
 arch/mips/include/asm/fb.h           | 11 +++++------
 arch/powerpc/include/asm/fb.h        | 13 +++++--------
 arch/sparc/include/asm/fb.h          | 15 +++++++++------
 arch/x86/include/asm/fb.h            | 10 ++++++----
 arch/x86/video/fbdev.c               | 15 ++++++++-------
 drivers/video/fbdev/core/fb_chrdev.c |  3 ++-
 include/asm-generic/fb.h             | 12 ++++++------
 9 files changed, 58 insertions(+), 55 deletions(-)

diff --git a/arch/ia64/include/asm/fb.h b/arch/ia64/include/asm/fb.h
index 1717b26fd423f..7fce0d5423590 100644
--- a/arch/ia64/include/asm/fb.h
+++ b/arch/ia64/include/asm/fb.h
@@ -8,17 +8,16 @@
 
 #include <asm/page.h>
 
-struct file;
-
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
 {
-	if (efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start))
-		vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+	if (efi_range_is_wc(vm_start, vm_end - vm_start))
+		return pgprot_writecombine(prot);
 	else
-		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+		return pgprot_noncached(prot);
 }
-#define fb_pgprotect fb_pgprotect
+#define pgprot_framebuffer pgprot_framebuffer
 
 static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n)
 {
diff --git a/arch/m68k/include/asm/fb.h b/arch/m68k/include/asm/fb.h
index 24273fc7ad917..9941b7434b696 100644
--- a/arch/m68k/include/asm/fb.h
+++ b/arch/m68k/include/asm/fb.h
@@ -5,26 +5,27 @@
 #include <asm/page.h>
 #include <asm/setup.h>
 
-struct file;
-
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
 {
 #ifdef CONFIG_MMU
 #ifdef CONFIG_SUN3
-	pgprot_val(vma->vm_page_prot) |= SUN3_PAGE_NOCACHE;
+	pgprot_val(prot) |= SUN3_PAGE_NOCACHE;
 #else
 	if (CPU_IS_020_OR_030)
-		pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE030;
+		pgprot_val(prot) |= _PAGE_NOCACHE030;
 	if (CPU_IS_040_OR_060) {
-		pgprot_val(vma->vm_page_prot) &= _CACHEMASK040;
+		pgprot_val(prot) &= _CACHEMASK040;
 		/* Use no-cache mode, serialized */
-		pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S;
+		pgprot_val(prot) |= _PAGE_NOCACHE_S;
 	}
 #endif /* CONFIG_SUN3 */
 #endif /* CONFIG_MMU */
+
+	return prot;
 }
-#define fb_pgprotect fb_pgprotect
+#define pgprot_framebuffer pgprot_framebuffer
 
 #include <asm-generic/fb.h>
 
diff --git a/arch/mips/include/asm/fb.h b/arch/mips/include/asm/fb.h
index 18b7226403bad..d98d6681d64ec 100644
--- a/arch/mips/include/asm/fb.h
+++ b/arch/mips/include/asm/fb.h
@@ -3,14 +3,13 @@
 
 #include <asm/page.h>
 
-struct file;
-
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
 {
-	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+	return pgprot_noncached(prot);
 }
-#define fb_pgprotect fb_pgprotect
+#define pgprot_framebuffer pgprot_framebuffer
 
 /*
  * MIPS doesn't define __raw_ I/O macros, so the helpers
diff --git a/arch/powerpc/include/asm/fb.h b/arch/powerpc/include/asm/fb.h
index 61e3b8806db69..3cecf14d51de8 100644
--- a/arch/powerpc/include/asm/fb.h
+++ b/arch/powerpc/include/asm/fb.h
@@ -2,23 +2,20 @@
 #ifndef _ASM_FB_H_
 #define _ASM_FB_H_
 
-#include <linux/fs.h>
-
 #include <asm/page.h>
 
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
 {
 	/*
 	 * PowerPC's implementation of phys_mem_access_prot() does
 	 * not use the file argument. Set it to NULL in preparation
 	 * of later updates to the interface.
 	 */
-	vma->vm_page_prot = phys_mem_access_prot(NULL, PHYS_PFN(off),
-						 vma->vm_end - vma->vm_start,
-						 vma->vm_page_prot);
+	return phys_mem_access_prot(NULL, PHYS_PFN(offset), vm_end - vm_start, prot);
 }
-#define fb_pgprotect fb_pgprotect
+#define pgprot_framebuffer pgprot_framebuffer
 
 #include <asm-generic/fb.h>
 
diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h
index 572ecd3e1cc48..24440c0fda490 100644
--- a/arch/sparc/include/asm/fb.h
+++ b/arch/sparc/include/asm/fb.h
@@ -4,15 +4,18 @@
 
 #include <linux/io.h>
 
+#include <asm/page.h>
+
 struct fb_info;
-struct file;
-struct vm_area_struct;
 
 #ifdef CONFIG_SPARC32
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
-{ }
-#define fb_pgprotect fb_pgprotect
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
+{
+	return prot;
+}
+#define pgprot_framebuffer pgprot_framebuffer
 #endif
 
 int fb_is_primary_device(struct fb_info *info);
diff --git a/arch/x86/include/asm/fb.h b/arch/x86/include/asm/fb.h
index 23873da8fb77c..c3b9582de7efd 100644
--- a/arch/x86/include/asm/fb.h
+++ b/arch/x86/include/asm/fb.h
@@ -2,12 +2,14 @@
 #ifndef _ASM_X86_FB_H
 #define _ASM_X86_FB_H
 
+#include <asm/page.h>
+
 struct fb_info;
-struct file;
-struct vm_area_struct;
 
-void fb_pgprotect(struct file *file, struct vm_area_struct *vma, unsigned long off);
-#define fb_pgprotect fb_pgprotect
+pgprot_t pgprot_framebuffer(pgprot_t prot,
+			    unsigned long vm_start, unsigned long vm_end,
+			    unsigned long offset);
+#define pgprot_framebuffer pgprot_framebuffer
 
 int fb_is_primary_device(struct fb_info *info);
 #define fb_is_primary_device fb_is_primary_device
diff --git a/arch/x86/video/fbdev.c b/arch/x86/video/fbdev.c
index 49a0452402e97..1dd6528cc947c 100644
--- a/arch/x86/video/fbdev.c
+++ b/arch/x86/video/fbdev.c
@@ -13,16 +13,17 @@
 #include <linux/vgaarb.h>
 #include <asm/fb.h>
 
-void fb_pgprotect(struct file *file, struct vm_area_struct *vma, unsigned long off)
+pgprot_t pgprot_framebuffer(pgprot_t prot,
+			    unsigned long vm_start, unsigned long vm_end,
+			    unsigned long offset)
 {
-	unsigned long prot;
-
-	prot = pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK;
+	pgprot_val(prot) &= ~_PAGE_CACHE_MASK;
 	if (boot_cpu_data.x86 > 3)
-		pgprot_val(vma->vm_page_prot) =
-			prot | cachemode2protval(_PAGE_CACHE_MODE_UC_MINUS);
+		pgprot_val(prot) |= cachemode2protval(_PAGE_CACHE_MODE_UC_MINUS);
+
+	return prot;
 }
-EXPORT_SYMBOL(fb_pgprotect);
+EXPORT_SYMBOL(pgprot_framebuffer);
 
 int fb_is_primary_device(struct fb_info *info)
 {
diff --git a/drivers/video/fbdev/core/fb_chrdev.c b/drivers/video/fbdev/core/fb_chrdev.c
index eadb81f53a821..32a7315b4b6dd 100644
--- a/drivers/video/fbdev/core/fb_chrdev.c
+++ b/drivers/video/fbdev/core/fb_chrdev.c
@@ -365,7 +365,8 @@ static int fb_mmap(struct file *file, struct vm_area_struct *vma)
 	mutex_unlock(&info->mm_lock);
 
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
-	fb_pgprotect(file, vma, start);
+	vma->vm_page_prot = pgprot_framebuffer(vma->vm_page_prot, vma->vm_start,
+					       vma->vm_end, start);
 
 	return vm_iomap_memory(vma, start, len);
 }
diff --git a/include/asm-generic/fb.h b/include/asm-generic/fb.h
index bb7ee9c70e603..6ccabb400aa66 100644
--- a/include/asm-generic/fb.h
+++ b/include/asm-generic/fb.h
@@ -12,14 +12,14 @@
 #include <linux/pgtable.h>
 
 struct fb_info;
-struct file;
 
-#ifndef fb_pgprotect
-#define fb_pgprotect fb_pgprotect
-static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
-				unsigned long off)
+#ifndef pgprot_framebuffer
+#define pgprot_framebuffer pgprot_framebuffer
+static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
+					  unsigned long vm_start, unsigned long vm_end,
+					  unsigned long offset)
 {
-	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+	return pgprot_writecombine(prot);
 }
 #endif
 
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
  2023-09-12 13:48 ` [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
  2023-09-12 13:49 ` [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
@ 2023-09-12 13:49 ` Thomas Zimmermann
  2023-09-13  6:34   ` Philippe Mathieu-Daudé
  2023-09-12 13:49 ` [PATCH v4 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code Thomas Zimmermann
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:49 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Fix coding style. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 arch/powerpc/include/asm/machdep.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h
index 4f6e7d7ee3883..933465ed4c432 100644
--- a/arch/powerpc/include/asm/machdep.h
+++ b/arch/powerpc/include/asm/machdep.h
@@ -10,7 +10,7 @@
 #include <linux/export.h>
 
 struct pt_regs;
-struct pci_bus;	
+struct pci_bus;
 struct device_node;
 struct iommu_table;
 struct rtc_time;
@@ -78,8 +78,8 @@ struct machdep_calls {
 	unsigned char 	(*nvram_read_val)(int addr);
 	void		(*nvram_write_val)(int addr, unsigned char val);
 	ssize_t		(*nvram_write)(char *buf, size_t count, loff_t *index);
-	ssize_t		(*nvram_read)(char *buf, size_t count, loff_t *index);	
-	ssize_t		(*nvram_size)(void);		
+	ssize_t		(*nvram_read)(char *buf, size_t count, loff_t *index);
+	ssize_t		(*nvram_size)(void);
 	void		(*nvram_sync)(void);
 
 	/* Exception handlers */
@@ -102,9 +102,9 @@ struct machdep_calls {
 	 */
 	long	 	(*feature_call)(unsigned int feature, ...);
 
-	/* Get legacy PCI/IDE interrupt mapping */ 
+	/* Get legacy PCI/IDE interrupt mapping */
 	int		(*pci_get_legacy_ide_irq)(struct pci_dev *dev, int channel);
-	
+
 	/* Get access protection for /dev/mem */
 	pgprot_t	(*phys_mem_access_prot)(struct file *file,
 						unsigned long pfn,
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v4 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2023-09-12 13:49 ` [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces Thomas Zimmermann
@ 2023-09-12 13:49 ` Thomas Zimmermann
  2023-09-12 13:49 ` [PATCH v4 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code Thomas Zimmermann
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:49 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Remove 'file' parameter from struct machdep_calls.phys_mem_access_prot
and its implementation in pci_phys_mem_access_prot(). The file is not
used on PowerPC. By removing it, a later patch can simplify fbdev's
mmap code, which uses phys_mem_access_prot() on PowerPC.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 arch/powerpc/include/asm/book3s/pgtable.h | 10 ++++++++--
 arch/powerpc/include/asm/machdep.h        |  3 +--
 arch/powerpc/include/asm/nohash/pgtable.h | 10 ++++++++--
 arch/powerpc/include/asm/pci.h            |  4 +---
 arch/powerpc/kernel/pci-common.c          |  3 +--
 arch/powerpc/mm/mem.c                     |  8 ++++----
 6 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/arch/powerpc/include/asm/book3s/pgtable.h b/arch/powerpc/include/asm/book3s/pgtable.h
index d18b748ea3ae0..84e36a5726417 100644
--- a/arch/powerpc/include/asm/book3s/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/pgtable.h
@@ -20,9 +20,15 @@ extern void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
 extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,
 				 pte_t *ptep, pte_t entry, int dirty);
 
+extern pgprot_t __phys_mem_access_prot(unsigned long pfn, unsigned long size,
+				       pgprot_t vma_prot);
+
 struct file;
-extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
-				     unsigned long size, pgprot_t vma_prot);
+static inline pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
+					    unsigned long size, pgprot_t vma_prot)
+{
+	return __phys_mem_access_prot(pfn, size, vma_prot);
+}
 #define __HAVE_PHYS_MEM_ACCESS_PROT
 
 void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep);
diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h
index 933465ed4c432..d31a5ec1550d4 100644
--- a/arch/powerpc/include/asm/machdep.h
+++ b/arch/powerpc/include/asm/machdep.h
@@ -106,8 +106,7 @@ struct machdep_calls {
 	int		(*pci_get_legacy_ide_irq)(struct pci_dev *dev, int channel);
 
 	/* Get access protection for /dev/mem */
-	pgprot_t	(*phys_mem_access_prot)(struct file *file,
-						unsigned long pfn,
+	pgprot_t	(*phys_mem_access_prot)(unsigned long pfn,
 						unsigned long size,
 						pgprot_t vma_prot);
 
diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h
index a6caaaab6f922..90366b0b3ad9a 100644
--- a/arch/powerpc/include/asm/nohash/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/pgtable.h
@@ -246,9 +246,15 @@ extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addre
 
 #define pgprot_writecombine pgprot_noncached_wc
 
+extern pgprot_t __phys_mem_access_prot(unsigned long pfn, unsigned long size,
+				       pgprot_t vma_prot);
+
 struct file;
-extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
-				     unsigned long size, pgprot_t vma_prot);
+static inline pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
+					    unsigned long size, pgprot_t vma_prot)
+{
+	return __phys_mem_access_prot(pfn, size, vma_prot);
+}
 #define __HAVE_PHYS_MEM_ACCESS_PROT
 
 #ifdef CONFIG_HUGETLB_PAGE
diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
index 289f1ec85bc54..34ed4d51c546b 100644
--- a/arch/powerpc/include/asm/pci.h
+++ b/arch/powerpc/include/asm/pci.h
@@ -104,9 +104,7 @@ extern void of_scan_pci_bridge(struct pci_dev *dev);
 extern void of_scan_bus(struct device_node *node, struct pci_bus *bus);
 extern void of_rescan_bus(struct device_node *node, struct pci_bus *bus);
 
-struct file;
-extern pgprot_t	pci_phys_mem_access_prot(struct file *file,
-					 unsigned long pfn,
+extern pgprot_t	pci_phys_mem_access_prot(unsigned long pfn,
 					 unsigned long size,
 					 pgprot_t prot);
 
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index e88d7c9feeec3..73f12a17e572e 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -521,8 +521,7 @@ int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma)
  * PCI device, it tries to find the PCI device first and calls the
  * above routine
  */
-pgprot_t pci_phys_mem_access_prot(struct file *file,
-				  unsigned long pfn,
+pgprot_t pci_phys_mem_access_prot(unsigned long pfn,
 				  unsigned long size,
 				  pgprot_t prot)
 {
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 8b121df7b08f8..03aadf657d15a 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -34,18 +34,18 @@ unsigned long long memory_limit;
 unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] __page_aligned_bss;
 EXPORT_SYMBOL(empty_zero_page);
 
-pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
-			      unsigned long size, pgprot_t vma_prot)
+pgprot_t __phys_mem_access_prot(unsigned long pfn, unsigned long size,
+				pgprot_t vma_prot)
 {
 	if (ppc_md.phys_mem_access_prot)
-		return ppc_md.phys_mem_access_prot(file, pfn, size, vma_prot);
+		return ppc_md.phys_mem_access_prot(pfn, size, vma_prot);
 
 	if (!page_is_ram(pfn))
 		vma_prot = pgprot_noncached(vma_prot);
 
 	return vma_prot;
 }
-EXPORT_SYMBOL(phys_mem_access_prot);
+EXPORT_SYMBOL(__phys_mem_access_prot);
 
 #ifdef CONFIG_MEMORY_HOTPLUG
 static DEFINE_MUTEX(linear_mapping_mutex);
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v4 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2023-09-12 13:49 ` [PATCH v4 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code Thomas Zimmermann
@ 2023-09-12 13:49 ` Thomas Zimmermann
  2023-09-18  7:32 ` [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
  2023-09-20 15:06 ` Arnd Bergmann
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-12 13:49 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch, Thomas Zimmermann

Call __phys_mem_access_prot() from the fbdev mmap helper
pgprot_framebuffer(). Allows to avoid the file argument of NULL.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 arch/powerpc/include/asm/fb.h | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/fb.h b/arch/powerpc/include/asm/fb.h
index 3cecf14d51de8..c0c5d1df7ad1e 100644
--- a/arch/powerpc/include/asm/fb.h
+++ b/arch/powerpc/include/asm/fb.h
@@ -8,12 +8,7 @@ static inline pgprot_t pgprot_framebuffer(pgprot_t prot,
 					  unsigned long vm_start, unsigned long vm_end,
 					  unsigned long offset)
 {
-	/*
-	 * PowerPC's implementation of phys_mem_access_prot() does
-	 * not use the file argument. Set it to NULL in preparation
-	 * of later updates to the interface.
-	 */
-	return phys_mem_access_prot(NULL, PHYS_PFN(offset), vm_end - vm_start, prot);
+	return __phys_mem_access_prot(PHYS_PFN(offset), vm_end - vm_start, prot);
 }
 #define pgprot_framebuffer pgprot_framebuffer
 
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces
  2023-09-12 13:49 ` [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces Thomas Zimmermann
@ 2023-09-13  6:34   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-09-13  6:34 UTC (permalink / raw
  To: Thomas Zimmermann, mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch

On 12/9/23 15:49, Thomas Zimmermann wrote:
> Fix coding style. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>   arch/powerpc/include/asm/machdep.h | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
  2023-09-12 13:49 ` [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
@ 2023-09-13  8:09   ` Geert Uytterhoeven
  2023-09-20  8:09   ` Javier Martinez Canillas
  1 sibling, 0 replies; 13+ messages in thread
From: Geert Uytterhoeven @ 2023-09-13  8:09 UTC (permalink / raw
  To: Thomas Zimmermann
  Cc: mpe, npiggin, christophe.leroy, arnd, deller, linuxppc-dev,
	linux-fbdev, linux-ia64, linux-m68k, linux-mips, sparclinux,
	dri-devel, linux-arch

Hi Thomas,

On Tue, Sep 12, 2023 at 5:32 PM Thomas Zimmermann <tzimmermann@suse.de> wrote:
> Rename the fbdev mmap helper fb_pgprotect() to pgprot_framebuffer(
> The helper sets VMA page-access flags for framebuffers in device I/O
> memory.
>
> Also clean up the helper's parameters and return value. Instead of
> the VMA instance, pass the individial parameters separately: existing
> page-access flags, the VMAs start and end addresses and the offset
> in the underlying device memory rsp file. Return the new page-access
> flags. These changes align pgprot_framebuffer() with other pgprot_()
> functions.
>
> v4:
>         * fix commit message (Christophe)
> v3:
>         * rename fb_pgprotect() to pgprot_framebuffer() (Arnd)
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Thanks for your patch!

>  arch/m68k/include/asm/fb.h           | 19 ++++++++++---------

Looks like you forgot to apply my
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
given on v1.

I didn't notice before, as I never received v2 and v3 due to the
gmail/vger email issues.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2023-09-12 13:49 ` [PATCH v4 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code Thomas Zimmermann
@ 2023-09-18  7:32 ` Thomas Zimmermann
  2023-09-20 15:06 ` Arnd Bergmann
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-18  7:32 UTC (permalink / raw
  To: mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, linux-arch


[-- Attachment #1.1: Type: text/plain, Size: 2721 bytes --]

Ping for a review.

I'd like to get at least the first two patches into the DRM git tree. 
The PPC patches could later be merged through another tree.

Best regards
Thomas

Am 12.09.23 um 15:48 schrieb Thomas Zimmermann:
> Clean up and rename fb_pgprotect() to work without struct file. Then
> refactor the implementation for PowerPC. This change has been discussed
> at [1] in the context of refactoring fbdev's mmap code.
> 
> The first two patches update fbdev and replace fbdev's fb_pgprotect()
> with pgprot_framebuffer() on all architectures. The new helper's stream-
> lined interface enables more refactoring within fbdev's mmap
> implementation.
> 
> Patches 3 to 5 adapt PowerPC's internal interfaces to provide
> phys_mem_access_prot() that works without struct file. Neither the
> architecture code or fbdev helpers need the parameter.
> 
> v4:
> 	* fix commit message (Christophe)
> v3:
> 	* rename fb_pgrotect() to pgprot_framebuffer() (Arnd)
> v2:
> 	* reorder patches to simplify merging (Michael)
> 
> [1] https://lore.kernel.org/linuxppc-dev/5501ba80-bdb0-6344-16b0-0466a950f82c@suse.com/
> 
> Thomas Zimmermann (5):
>    fbdev: Avoid file argument in fb_pgprotect()
>    fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
>    arch/powerpc: Remove trailing whitespaces
>    arch/powerpc: Remove file parameter from phys_mem_access_prot code
>    arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code
> 
>   arch/ia64/include/asm/fb.h                | 15 +++++++--------
>   arch/m68k/include/asm/fb.h                | 19 ++++++++++---------
>   arch/mips/include/asm/fb.h                | 11 +++++------
>   arch/powerpc/include/asm/book3s/pgtable.h | 10 ++++++++--
>   arch/powerpc/include/asm/fb.h             | 13 +++++--------
>   arch/powerpc/include/asm/machdep.h        | 13 ++++++-------
>   arch/powerpc/include/asm/nohash/pgtable.h | 10 ++++++++--
>   arch/powerpc/include/asm/pci.h            |  4 +---
>   arch/powerpc/kernel/pci-common.c          |  3 +--
>   arch/powerpc/mm/mem.c                     |  8 ++++----
>   arch/sparc/include/asm/fb.h               | 15 +++++++++------
>   arch/x86/include/asm/fb.h                 | 10 ++++++----
>   arch/x86/video/fbdev.c                    | 15 ++++++++-------
>   drivers/video/fbdev/core/fb_chrdev.c      |  3 ++-
>   include/asm-generic/fb.h                  | 12 ++++++------
>   15 files changed, 86 insertions(+), 75 deletions(-)
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect()
  2023-09-12 13:48 ` [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
@ 2023-09-20  8:01   ` Javier Martinez Canillas
  2023-09-22  7:40     ` Thomas Zimmermann
  0 siblings, 1 reply; 13+ messages in thread
From: Javier Martinez Canillas @ 2023-09-20  8:01 UTC (permalink / raw
  To: Thomas Zimmermann, mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, Thomas Zimmermann, sparclinux, linuxppc-dev

Thomas Zimmermann <tzimmermann@suse.de> writes:

Hello Thomas,

> Only PowerPC's fb_pgprotect() needs the file argument, although
> the implementation does not use it. Pass NULL to the internal

Can you please mention the function that's the implementation for
PowerPC ? If I'm looking at the code correctly, that function is
phys_mem_access_prot() defined in the arch/powerpc/mm/mem.c file:

pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
			      unsigned long size, pgprot_t vma_prot)
{
	if (ppc_md.phys_mem_access_prot)
		return ppc_md.phys_mem_access_prot(file, pfn, size, vma_prot);

	if (!page_is_ram(pfn))
		vma_prot = pgprot_noncached(vma_prot);

	return vma_prot;
}

and if set, ppc_md.phys_mem_access_prot is pci_phys_mem_access_prot()
that is defined in the arch/powerpc/kernel/pci-common.c source file:

https://elixir.bootlin.com/linux/v6.6-rc2/source/arch/powerpc/kernel/pci-common.c#L524

That function indeed doesn't use the file argument. So your patch looks
correct to me.

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
  2023-09-12 13:49 ` [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
  2023-09-13  8:09   ` Geert Uytterhoeven
@ 2023-09-20  8:09   ` Javier Martinez Canillas
  1 sibling, 0 replies; 13+ messages in thread
From: Javier Martinez Canillas @ 2023-09-20  8:09 UTC (permalink / raw
  To: Thomas Zimmermann, mpe, npiggin, christophe.leroy, arnd, deller
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, Thomas Zimmermann, sparclinux, linuxppc-dev

Thomas Zimmermann <tzimmermann@suse.de> writes:

Hello Thomas,

> Rename the fbdev mmap helper fb_pgprotect() to pgprot_framebuffer().
> The helper sets VMA page-access flags for framebuffers in device I/O
> memory.
>

I think this rename makes it more clear.

> Also clean up the helper's parameters and return value. Instead of
> the VMA instance, pass the individial parameters separately: existing
> page-access flags, the VMAs start and end addresses and the offset

But I fail to see the benefit of this part. Could you please add an
explanation about why this change is desirable ?

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2023-09-18  7:32 ` [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
@ 2023-09-20 15:06 ` Arnd Bergmann
  6 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2023-09-20 15:06 UTC (permalink / raw
  To: Thomas Zimmermann, Michael Ellerman, Nicholas Piggin,
	Christophe Leroy, Helge Deller
  Cc: linuxppc-dev, linux-fbdev, linux-ia64, linux-m68k, linux-mips,
	sparclinux, dri-devel, Linux-Arch

On Tue, Sep 12, 2023, at 09:48, Thomas Zimmermann wrote:
> Clean up and rename fb_pgprotect() to work without struct file. Then
> refactor the implementation for PowerPC. This change has been discussed
> at [1] in the context of refactoring fbdev's mmap code.
>
> The first two patches update fbdev and replace fbdev's fb_pgprotect()
> with pgprot_framebuffer() on all architectures. The new helper's stream-
> lined interface enables more refactoring within fbdev's mmap
> implementation.
>
> Patches 3 to 5 adapt PowerPC's internal interfaces to provide
> phys_mem_access_prot() that works without struct file. Neither the
> architecture code or fbdev helpers need the parameter.
>
> v4:
> 	* fix commit message (Christophe)
> v3:
> 	* rename fb_pgrotect() to pgprot_framebuffer() (Arnd)

I had another look today, and everything look good to me now.

Whole series

Reviewed-by: Arnd Bergmann <arnd@arndb.de>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect()
  2023-09-20  8:01   ` Javier Martinez Canillas
@ 2023-09-22  7:40     ` Thomas Zimmermann
  0 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2023-09-22  7:40 UTC (permalink / raw
  To: Javier Martinez Canillas, mpe, npiggin, christophe.leroy, arnd,
	deller
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, sparclinux, linuxppc-dev


[-- Attachment #1.1: Type: text/plain, Size: 1622 bytes --]

Hi Javier

Am 20.09.23 um 10:01 schrieb Javier Martinez Canillas:
> Thomas Zimmermann <tzimmermann@suse.de> writes:
> 
> Hello Thomas,
> 
>> Only PowerPC's fb_pgprotect() needs the file argument, although
>> the implementation does not use it. Pass NULL to the internal
> 
> Can you please mention the function that's the implementation for

Sure

> PowerPC ? If I'm looking at the code correctly, that function is
> phys_mem_access_prot() defined in the arch/powerpc/mm/mem.c file:
> 
> pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
> 			      unsigned long size, pgprot_t vma_prot)
> {
> 	if (ppc_md.phys_mem_access_prot)
> 		return ppc_md.phys_mem_access_prot(file, pfn, size, vma_prot);
> 
> 	if (!page_is_ram(pfn))
> 		vma_prot = pgprot_noncached(vma_prot);
> 
> 	return vma_prot;
> }
> 
> and if set, ppc_md.phys_mem_access_prot is pci_phys_mem_access_prot()
> that is defined in the arch/powerpc/kernel/pci-common.c source file:
> 
> https://elixir.bootlin.com/linux/v6.6-rc2/source/arch/powerpc/kernel/pci-common.c#L524

Yes, that's correct. The only value for that function pointer appears to 
be pci_phys_mem_access_prot()

> 
> That function indeed doesn't use the file argument. So your patch looks
> correct to me.
> 
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

Thanks

Best regards
Thomas

> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-09-22  7:41 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-12 13:48 [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
2023-09-12 13:48 ` [PATCH v4 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
2023-09-20  8:01   ` Javier Martinez Canillas
2023-09-22  7:40     ` Thomas Zimmermann
2023-09-12 13:49 ` [PATCH v4 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
2023-09-13  8:09   ` Geert Uytterhoeven
2023-09-20  8:09   ` Javier Martinez Canillas
2023-09-12 13:49 ` [PATCH v4 3/5] arch/powerpc: Remove trailing whitespaces Thomas Zimmermann
2023-09-13  6:34   ` Philippe Mathieu-Daudé
2023-09-12 13:49 ` [PATCH v4 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code Thomas Zimmermann
2023-09-12 13:49 ` [PATCH v4 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code Thomas Zimmermann
2023-09-18  7:32 ` [PATCH v4 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
2023-09-20 15:06 ` Arnd Bergmann

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 read-only IMAP folder(s) and NNTP newsgroup(s).