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:
Jocelyn Falempe 2024-05-02 10:43:13 +02:00
parent e93c5917f3
commit e7b702aa47
5 changed files with 28 additions and 27 deletions

View File

@ -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>

View File

@ -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

View File

@ -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)
{

View File

@ -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);
}

View File

@ -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