Add fbdev emulation that is optimized for DMA helpers, as used by most drivers. It operates directly on GEM DMA buffers in system memory. Memory pages are mmap'ed directly to userspace. No implicit shadow buffers need to be allocated; as can happen with the generic fbdev emulation. Convert drivers that fulfil the requirements. Tested with fbcon and IGT on vc4. Future direction: providing a dedicated fbdev emulation for GEM DMA helpers will allow us to remove this case from the generic fbdev code. The latter can then be simplified. Thomas Zimmermann (22): drm/fbdev-dma: Implement fbdev emulation for GEM DMA helpers arm/hdlcd: Use GEM DMA fbdev emulation arm/malidp: Use GEM DMA fbdev emulation drm/aspeed: Use GEM DMA fbdev emulation drm/atmel-hlcdc: Use GEM DMA fbdev emulation drm/fsl-dcu: Use GEM DMA fbdev emulation drm/imx/dcss: Use GEM DMA fbdev emulation drm/imx: Use GEM DMA fbdev emulation drm/kmb: Use GEM DMA fbdev emulation drm/logicvc: Use GEM DMA fbdev emulation drm/meson: Use GEM DMA fbdev emulation drm/mxsfb/lcdif: Use GEM DMA fbdev emulation drm/mxsfb: Use GEM DMA fbdev emulation drm/sti: Use GEM DMA fbdev emulation drm/stm: Use GEM DMA fbdev emulation drm/sun4i: Use GEM DMA fbdev emulation drm/tidss: Use GEM DMA fbdev emulation drm/tilcdc: Use GEM DMA fbdev emulation drm/arcpgu: Use GEM DMA fbdev emulation drm/tve200: Use GEM DMA fbdev emulation drm/vc4: Use GEM DMA fbdev emulation drm/xlnx: Use GEM DMA fbdev emulation drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/arm/hdlcd_drv.c | 4 +- drivers/gpu/drm/arm/malidp_drv.c | 4 +- drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 4 +- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 4 +- drivers/gpu/drm/drm_fbdev_dma.c | 275 +++++++++++++++++++ drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 4 +- drivers/gpu/drm/imx/dcss/dcss-kms.c | 4 +- drivers/gpu/drm/imx/ipuv3/imx-drm-core.c | 4 +- drivers/gpu/drm/kmb/kmb_drv.c | 4 +- drivers/gpu/drm/logicvc/logicvc_drm.c | 4 +- drivers/gpu/drm/meson/meson_drv.c | 4 +- drivers/gpu/drm/mxsfb/lcdif_drv.c | 4 +- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 4 +- drivers/gpu/drm/sti/sti_drv.c | 4 +- drivers/gpu/drm/stm/drv.c | 4 +- drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +- drivers/gpu/drm/tidss/tidss_drv.c | 4 +- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 4 +- drivers/gpu/drm/tiny/arcpgu.c | 4 +- drivers/gpu/drm/tve200/tve200_drv.c | 4 +- drivers/gpu/drm/vc4/vc4_drv.c | 4 +- drivers/gpu/drm/xlnx/zynqmp_kms.c | 4 +- include/drm/drm_fbdev_dma.h | 15 + 24 files changed, 333 insertions(+), 42 deletions(-) create mode 100644 drivers/gpu/drm/drm_fbdev_dma.c create mode 100644 include/drm/drm_fbdev_dma.h base-commit: 734cd918122f6ec06e4c9366fb3283b29b1c7ea5 prerequisite-patch-id: 0aa359f6144c4015c140c8a6750be19099c676fb prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24 prerequisite-patch-id: 3f204510fcbf9530d6540bd8e6128cce598988b6 -- 2.39.2