linux/drivers/video/fbdev
Noralf Trønnes ba0263340a fbdev: fb_defio: Export fb_deferred_io_mmap
Export fb_deferred_io_mmap so drivers can change vma->vm_page_prot.
When the framebuffer memory is allocated using dma_alloc_writecombine()
instead of vmalloc(), I get cache syncing problems on ARM.
This solves it:

static int drm_fbdev_cma_deferred_io_mmap(struct fb_info *info,
					  struct vm_area_struct *vma)
{
	fb_deferred_io_mmap(info, vma);
	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);

	return 0;
}

Could this have been done in the core?
Drivers that don't set (struct fb_ops *)->fb_mmap, gets a call to
fb_pgprotect() at the end of the default fb_mmap implementation
(drivers/video/fbdev/core/fbmem.c). This is an architecture specific
function that on many platforms uses pgprot_writecombine(), but not on
all. And looking at some of the fb_mmap implementations, some of them
sets vm_page_prot to nocache for instance, so I think the safest bet is
to do this in the driver and not in the fbdev core. And we can't call
fb_pgprotect() from fb_deferred_io_mmap() either because we don't have
access to the file pointer that powerpc needs.

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1461856717-6476-5-git-send-email-noralf@tronnes.org
2016-05-02 16:24:49 +02:00
..
aty PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
core fbdev: fb_defio: Export fb_deferred_io_mmap 2016-05-02 16:24:49 +02:00
exynos video: exynos: fix modular build 2016-02-29 18:56:03 +02:00
geode video: constify geode ops structures 2015-12-15 15:41:22 +02:00
i810 video: fbdev: i810: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:51 +03:00
intelfb video: Use bool instead int pointer for get_opt_bool() argument 2016-02-16 15:09:20 +02:00
kyro drivers/video/fbdev/kyrofb: Use arch_phys_wc_add() and pci_ioremap_wc_bar() 2015-08-25 09:59:44 +02:00
matrox PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
mb862xx video: fbdev: mb862xx: Fix module autoload for OF platform driver 2015-09-24 14:35:36 +03:00
mbx video/mbx: indent some if statements 2014-07-01 13:32:30 +03:00
mmp fbdev: mmp: print IRQ resource using %pR format string 2016-01-29 13:42:58 +02:00
nvidia video: fbdev: nvidia: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:50 +03:00
omap This is the bulk of GPIO changes for kernel v4.6: 2016-03-17 21:05:32 -07:00
omap2 drm/omap: move dss_mgr_* declarations to omapdrm/omapfb 2016-03-03 17:38:21 +02:00
riva video: fbdev: rivafb: unlock chip before probiding EDID 2015-12-15 15:41:23 +02:00
savage video: fbdev: savagefb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:50 +03:00
sis video: fbdev: sis: remove unused variable 2016-03-03 13:38:29 +02:00
vermilion mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd 2015-11-06 17:50:42 -08:00
via video: fbdev: via: use gpiochip data pointer 2016-01-07 00:02:34 +01:00
68328fb.c video: 68328fb: remove check for CONFIG_FB_68328_INVERT 2014-06-24 10:55:13 +03:00
acornfb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
acornfb.h
amba-clcd-versatile.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
amba-clcd.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
amifb.c fbdev changes for 4.2 2015-06-23 16:23:30 -07:00
arcfb.c
arkfb.c drivers/video/fbdev/arkfb.c: Use arch_phys_wc_add() and pci_iomap_wc() 2015-08-25 09:59:45 +02:00
asiliantfb.c
atafb.c fbdev: kill fb_rotate 2016-02-26 13:28:35 +02:00
atafb.h
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atmel_lcdfb.c This is the bulk of GPIO changes for kernel v4.6: 2016-03-17 21:05:32 -07:00
au1100fb.c fbdev: kill fb_rotate 2016-02-26 13:28:35 +02:00
au1100fb.h MIPS: Alchemy: au1100fb: use clk framework 2014-07-30 14:10:39 +02:00
au1200fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
au1200fb.h
auo_k190x.c fbdev: auo_k190x: avoid unused function warnings 2015-12-15 15:41:23 +02:00
auo_k190x.h
auo_k1900fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
auo_k1901fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
bf54x-lq043fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
bf537-lq035.c fbdev: kill fb_rotate 2016-02-26 13:28:35 +02:00
bfin-lq035q1-fb.c
bfin-t350mcqb-fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
bfin_adv7393fb.c fb: adv7393: add missing semicolon 2014-07-01 13:18:38 +03:00
bfin_adv7393fb.h
broadsheetfb.c fbdev: broadsheetfb: fix memory leak 2015-09-30 10:33:57 +03:00
bt431.h video: fbdev: bt431: Correct cursor format control macro 2016-02-26 13:06:11 +02:00
bt455.h video: fbdev: pmag-ba-fb: Optimize Bt455 colormap addressing 2016-02-26 13:06:11 +02:00
bw2.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
c2p.h
c2p_core.h
c2p_iplan2.c
c2p_planar.c
carminefb.c
carminefb.h
carminefb_regs.h
cg3.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
cg6.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
cg14.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
chipsfb.c fbdev: Remove __init from chips_hw_init() to fix build failure 2014-08-26 12:48:34 +03:00
cirrusfb.c
clps711x-fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
clps711xfb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
cobalt_lcdfb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
controlfb.c powerpc: Move Power Macintosh drivers to generic byteswappers 2015-03-23 14:29:40 +11:00
controlfb.h
cyber2000fb.c video: fbdev: cyber2000fb.c: use container_of to resolve cfb_info from fb_info 2014-09-30 13:06:01 +03:00
cyber2000fb.h
da8xx-fb.c fbdev: da8xx-fb: fix videomodes of lcd panels 2016-02-29 18:29:52 +02:00
dnfb.c
edid.h
efifb.c efifb: Add support for 64-bit frame buffer addresses 2015-10-12 14:20:06 +01:00
ep93xx-fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
fb-puv3.c drivers/video/fbdev/fb-puv3.c: Add header files for function unifb_mmap 2014-05-23 13:51:10 +03:00
ffb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
fm2fb.c
fsl-diu-fb.c video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented 2015-12-09 12:57:06 +02:00
g364fb.c
gbefb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
goldfishfb.c
grvga.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
gxt4500.c gxt4500: enable panning 2015-10-08 12:19:39 +03:00
hecubafb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
hgafb.c video: hgafb: remove unneeded comparison 2015-01-26 14:43:06 +02:00
hitfb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
hpfb.c video/fbdev, asm/io.h: Remove ioremap_writethrough() 2015-06-07 15:28:57 +02:00
hyperv_fb.c drivers:hv: Move MMIO range picking from hyper_fb to hv_vmbus 2015-08-05 11:41:31 -07:00
i740_reg.h
i740fb.c drivers/video/fbdev/i740fb: remove unused variable 2015-12-15 15:41:21 +02:00
igafb.c
imsttfb.c PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
imxfb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
jz4740_fb.c
Kconfig xen kconfig: don't "select INPUT_XEN_KBDDEV_FRONTEND" 2016-03-11 13:37:02 +02:00
leo.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
macfb.c
macmodes.c
macmodes.h
Makefile fbdev: Remove unused SH-Mobile HDMI driver 2015-12-15 15:41:22 +02:00
maxinefb.c
metronomefb.c video: fbdev: metronomefb: two harmless off by one bugs 2016-02-16 14:52:43 +02:00
mx3fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
mxsfb.c video: fbdev: mxsfb: Constify platform_device_id 2015-06-12 12:40:27 +03:00
n411.c fbdev: n411: check return value 2016-02-26 12:16:58 +02:00
neofb.c video: fbdev: neofb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:49 +03:00
nuc900fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
nuc900fb.h
ocfb.c ocfb: fix tgdel and tvdel timing parameters 2016-01-29 13:34:07 +02:00
offb.c PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
p9100.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
platinumfb.c powerpc: Move Power Macintosh drivers to generic byteswappers 2015-03-23 14:29:40 +11:00
platinumfb.h
pm2fb.c video: fbdev: pm2fb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:51 +03:00
pm3fb.c video: fbdev: pm3fb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:52 +03:00
pmag-aa-fb.c video: fbdev: pmag-ba-fb: Optimize Bt455 colormap addressing 2016-02-26 13:06:11 +02:00
pmag-ba-fb.c video: fbdev: pmag-ba-fb: Fix the lower margin size 2016-02-26 13:02:58 +02:00
pmagb-b-fb.c
ps3fb.c
pvr2fb.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
pxa3xx-gcu.c video: fbdev: pxa3xx_gcu: prepare the clocks 2015-08-10 12:25:43 +03:00
pxa3xx-gcu.h
pxa168fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
pxa168fb.h
pxafb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
pxafb.h video: fbdev: pxafb: loosen the platform data bond 2015-12-15 15:41:24 +02:00
q40fb.c
s1d13xxxfb.c arch, drivers: don't include <asm/io.h> directly, use <linux/io.h> instead 2015-08-10 23:07:05 -04:00
s3c-fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
s3c2410fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
s3c2410fb.h
s3fb.c drivers/video/fbdev/s3fb: Use arch_phys_wc_add() and pci_iomap_wc() 2015-08-25 09:59:45 +02:00
sa1100fb.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
sa1100fb.h ARM: 8244/1: fbdev: sa1100fb: make use of device clock 2014-12-05 16:30:25 +00:00
sbuslib.c
sbuslib.h
sh7760fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
sh_mipi_dsi.c
sh_mobile_lcdcfb.c fbdev: sh_mobile_lcdc: Fix destruction of uninitialized mutex 2015-04-07 16:24:15 +03:00
sh_mobile_lcdcfb.h
sh_mobile_meram.c More ACPI and power management updates for 3.19-rc1 2014-12-18 20:28:33 -08:00
simplefb.c simplefb: Remove impossible check for of_clk_get_parent_count() < 0 2016-02-26 16:01:32 -08:00
skeletonfb.c fbdev: kill fb_rotate 2016-02-26 13:28:35 +02:00
sm501fb.c fbdev: sm501fb: use memset_io 2015-03-02 13:17:24 +02:00
sm712.h staging: sm7xxfb: merge sm712fb with fbdev 2015-08-07 15:05:01 -07:00
sm712fb.c fbdev: sm712fb: avoid unused function warnings 2015-12-15 15:41:23 +02:00
smscufx.c video: smscufx: Deletion of unnecessary checks before the function call "vfree" 2014-12-04 16:16:01 +02:00
ssd1307fb.c fbdev: ssd1307fb: add ssd1309 support 2015-09-24 14:10:26 +03:00
sstfb.c
sticore.h
stifb.c arch, drivers: don't include <asm/io.h> directly, use <linux/io.h> instead 2015-08-10 23:07:05 -04:00
sunxvr500.c drivers/video: make fbdev/sunxvr500.c explicitly non-modular 2016-03-03 13:36:51 +02:00
sunxvr1000.c drivers/video: make fbdev/sunxvr1000.c explicitly non-modular 2016-03-03 13:36:51 +02:00
sunxvr2500.c drivers/video: make fbdev/sunxvr2500.c explicitly non-modular 2016-03-03 13:36:51 +02:00
tcx.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
tdfxfb.c video: fbdev: tdfxfb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:52 +03:00
tgafb.c
tmiofb.c
tridentfb.c fbdev changes for 4.4 2015-11-10 10:00:09 -08:00
udlfb.c fbdev: udlfb: remove unneeded initialization in few places 2015-08-20 10:32:40 +03:00
uvesafb.c kernel/params: constify struct kernel_param_ops uses 2015-05-28 11:32:10 +09:30
valkyriefb.c video: fbdev: valkyriefb.c: use container_of to resolve fb_info_valkyrie from fb_info 2014-09-30 13:06:01 +03:00
valkyriefb.h
vesafb.c video: fbdev: vesafb: use arch_phys_wc_add() 2015-06-16 09:42:11 +03:00
vfb.c fbdev: remove unnecessary memset in vfb 2015-08-20 12:03:53 +03:00
vga16fb.c
vt8500lcdfb.c video: vt8500lcdfb: remove unneeded continue 2015-01-13 13:35:04 +02:00
vt8500lcdfb.h
vt8623fb.c drivers/video/fbdev/vt8623fb: Use arch_phys_wc_add() and pci_iomap_wc() 2015-08-25 09:59:45 +02:00
w100fb.c
w100fb.h
wm8505fb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
wm8505fb_regs.h
wmt_ge_rops.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00
wmt_ge_rops.h
xen-fbfront.c video/xen-fbfront: Further s/MFN/GFN clean-up 2015-09-08 18:03:53 +01:00
xilinxfb.c video: fbdev: drop owner assignment from platform_drivers 2014-10-20 16:21:51 +02:00