fbdev: Replace fb_pgprotect() with pgprot_framebuffer()
JIRA: https://issues.redhat.com/browse/RHEL-23295 Upstream Status: v6.7-rc1 Conflicts: arch/ia64/include/asm/fb.h arch/m68k/include/asm/fb.h arch/mips/include/asm/fb.h arch/sparc/include/asm/fb.h dropped changes on unused architectures. commit 052ddf7b86d2d9443bce77ef5b5b1ef61a3b79fc Author: Thomas Zimmermann <tzimmermann@suse.de> AuthorDate: Fri Sep 22 10:04:56 2023 +0200 Commit: Thomas Zimmermann <tzimmermann@suse.de> CommitDate: Thu Oct 12 09:20:46 2023 +0200 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> Link: https://patchwork.freedesktop.org/patch/msgid/20230922080636.26762-3-tzimmermann@suse.de Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
This commit is contained in:
parent
e93c5917f3
commit
e7b702aa47
|
@ -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>
|
||||
|
||||
|
|
|
@ -2,12 +2,14 @@
|
|||
#ifndef _ASM_X86_FB_H
|
||||
#define _ASM_X86_FB_H
|
||||
|
||||
struct fb_info;
|
||||
struct file;
|
||||
struct vm_area_struct;
|
||||
#include <asm/page.h>
|
||||
|
||||
void fb_pgprotect(struct file *file, struct vm_area_struct *vma, unsigned long off);
|
||||
#define fb_pgprotect fb_pgprotect
|
||||
struct fb_info;
|
||||
|
||||
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
|
||||
|
|
|
@ -12,16 +12,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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue