linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper
@ 2023-09-22  8:04 Thomas Zimmermann
  2023-09-22  8:04 ` [PATCH v5 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Thomas Zimmermann @ 2023-09-22  8:04 UTC (permalink / raw)
  To: mpe, npiggin, christophe.leroy, arnd, deller, javierm
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, Thomas Zimmermann, sparclinux, linuxppc-dev

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.

v5:
	* improve commit descriptions (Javier)
	* add missing tags (Geert)
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(-)


base-commit: f8d21cb17a99b75862196036bb4bb93ee9637b74
-- 
2.42.0


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

* [PATCH v5 1/5] fbdev: Avoid file argument in fb_pgprotect()
  2023-09-22  8:04 [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
@ 2023-09-22  8:04 ` Thomas Zimmermann
  2023-09-22  8:04 ` [PATCH v5 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Thomas Zimmermann @ 2023-09-22  8:04 UTC (permalink / raw)
  To: mpe, npiggin, christophe.leroy, arnd, deller, javierm
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, Thomas Zimmermann, sparclinux, linuxppc-dev

Only PowerPC's fb_pgprotect() needs the file argument, although
the implementation in either phys_mem_access_prot() or
pci_phys_mem_access_prot() 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().

v5:
	* state function names in commit description (Javier)

Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
---
 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] 11+ messages in thread

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

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>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> # m68k
---
 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] 11+ messages in thread

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

Fix coding style. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 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] 11+ messages in thread

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

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>
Reviewed-by: Arnd Bergmann <arnd@arndb.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] 11+ messages in thread

* [PATCH v5 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code
  2023-09-22  8:04 [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2023-09-22  8:04 ` [PATCH v5 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code Thomas Zimmermann
@ 2023-09-22  8:04 ` Thomas Zimmermann
  2023-09-25  8:00 ` [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
  2023-11-13  2:45 ` (subset) " Michael Ellerman
  6 siblings, 0 replies; 11+ messages in thread
From: Thomas Zimmermann @ 2023-09-22  8:04 UTC (permalink / raw)
  To: mpe, npiggin, christophe.leroy, arnd, deller, javierm
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, Thomas Zimmermann, sparclinux, linuxppc-dev

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>
Reviewed-by: Arnd Bergmann <arnd@arndb.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] 11+ messages in thread

* Re: [PATCH v5 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
  2023-09-22  8:04 ` [PATCH v5 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
@ 2023-09-22  8:28   ` Javier Martinez Canillas
  0 siblings, 0 replies; 11+ messages in thread
From: Javier Martinez Canillas @ 2023-09-22  8:28 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, Geert Uytterhoeven, Thomas Zimmermann, sparclinux,
	linuxppc-dev

Thomas Zimmermann <tzimmermann@suse.de> writes:

> 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>
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> # m68k
> ---

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

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat


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

* Re: [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-09-22  8:04 [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (4 preceding siblings ...)
  2023-09-22  8:04 ` [PATCH v5 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code Thomas Zimmermann
@ 2023-09-25  8:00 ` Thomas Zimmermann
  2023-10-18 10:48   ` Michael Ellerman
  2023-11-13  2:45 ` (subset) " Michael Ellerman
  6 siblings, 1 reply; 11+ messages in thread
From: Thomas Zimmermann @ 2023-09-25  8:00 UTC (permalink / raw)
  To: mpe, npiggin, christophe.leroy, arnd, deller, javierm
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, sparclinux, linuxppc-dev


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

FYI, I intent to merge patches 1 and 2 of this patchset into 
drm-misc-next. The updates for PowerPC can be merged through PPC trees 
later. Let me know if this does not work for you.

Best regards
Thomas

Am 22.09.23 um 10:04 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.
> 
> v5:
> 	* improve commit descriptions (Javier)
> 	* add missing tags (Geert)
> 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(-)
> 
> 
> base-commit: f8d21cb17a99b75862196036bb4bb93ee9637b74

-- 
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] 11+ messages in thread

* Re: [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-09-25  8:00 ` [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
@ 2023-10-18 10:48   ` Michael Ellerman
  0 siblings, 0 replies; 11+ messages in thread
From: Michael Ellerman @ 2023-10-18 10:48 UTC (permalink / raw)
  To: Thomas Zimmermann, npiggin, christophe.leroy, arnd, deller,
	javierm
  Cc: linux-arch, linux-fbdev, linux-ia64, linux-mips, dri-devel,
	linux-m68k, sparclinux, linuxppc-dev

Thomas Zimmermann <tzimmermann@suse.de> writes:
> FYI, I intent to merge patches 1 and 2 of this patchset into 
> drm-misc-next. The updates for PowerPC can be merged through PPC trees 
> later. Let me know if this does not work for you.

Hi Thomas,

Sorry for the late reply, I was on leave.

Yeah that's fine.

cheers

> Am 22.09.23 um 10:04 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.
>> 
>> v5:
>> 	* improve commit descriptions (Javier)
>> 	* add missing tags (Geert)
>> 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(-)
>> 
>> 
>> base-commit: f8d21cb17a99b75862196036bb4bb93ee9637b74
>
> -- 
> 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)

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

* Re: (subset) [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-09-22  8:04 [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
                   ` (5 preceding siblings ...)
  2023-09-25  8:00 ` [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
@ 2023-11-13  2:45 ` Michael Ellerman
  2023-11-13  9:22   ` Thomas Zimmermann
  6 siblings, 1 reply; 11+ messages in thread
From: Michael Ellerman @ 2023-11-13  2:45 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: linux-arch, linux-fbdev, linuxppc-dev, dri-devel

On Fri, 22 Sep 2023 10:04:54 +0200, 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-5 applied to powerpc/fixes.

[3/5] arch/powerpc: Remove trailing whitespaces
      https://git.kernel.org/powerpc/c/322948c3198cf80e7c10d953ddad24ebd85757cd
[4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code
      https://git.kernel.org/powerpc/c/1f92a844c35e483c00bab8a7b7d39c555ee799d8
[5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code
      https://git.kernel.org/powerpc/c/deebe5f607d7f72f83c41163191ad0c1c4356385

cheers

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

* Re: (subset) [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper
  2023-11-13  2:45 ` (subset) " Michael Ellerman
@ 2023-11-13  9:22   ` Thomas Zimmermann
  0 siblings, 0 replies; 11+ messages in thread
From: Thomas Zimmermann @ 2023-11-13  9:22 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: linux-arch, linux-fbdev, linuxppc-dev, dri-devel


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



Am 13.11.23 um 03:45 schrieb Michael Ellerman:
> On Fri, 22 Sep 2023 10:04:54 +0200, 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-5 applied to powerpc/fixes.
> 
> [3/5] arch/powerpc: Remove trailing whitespaces
>        https://git.kernel.org/powerpc/c/322948c3198cf80e7c10d953ddad24ebd85757cd
> [4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code
>        https://git.kernel.org/powerpc/c/1f92a844c35e483c00bab8a7b7d39c555ee799d8
> [5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code
>        https://git.kernel.org/powerpc/c/deebe5f607d7f72f83c41163191ad0c1c4356385

Great, thanks a lot!

> 
> cheers

-- 
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] 11+ messages in thread

end of thread, other threads:[~2023-11-13  9:23 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-22  8:04 [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
2023-09-22  8:04 ` [PATCH v5 1/5] fbdev: Avoid file argument in fb_pgprotect() Thomas Zimmermann
2023-09-22  8:04 ` [PATCH v5 2/5] fbdev: Replace fb_pgprotect() with pgprot_framebuffer() Thomas Zimmermann
2023-09-22  8:28   ` Javier Martinez Canillas
2023-09-22  8:04 ` [PATCH v5 3/5] arch/powerpc: Remove trailing whitespaces Thomas Zimmermann
2023-09-22  8:04 ` [PATCH v5 4/5] arch/powerpc: Remove file parameter from phys_mem_access_prot code Thomas Zimmermann
2023-09-22  8:04 ` [PATCH v5 5/5] arch/powerpc: Call internal __phys_mem_access_prot() in fbdev code Thomas Zimmermann
2023-09-25  8:00 ` [PATCH v5 0/5] ppc, fbdev: Clean up fbdev mmap helper Thomas Zimmermann
2023-10-18 10:48   ` Michael Ellerman
2023-11-13  2:45 ` (subset) " Michael Ellerman
2023-11-13  9:22   ` Thomas Zimmermann

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).