We want to stop gup, which isn't the case if we use vmf_insert_page and VM_MIXEDMAP, because that does not set pte_special. The motivation here is to stop get_user_pages from working on buffer object mmaps in general. Quoting some discussion with Thomas: On Thu, Jul 22, 2021 at 08:22:43PM +0200, Thomas Zimmermann wrote: > Am 13.07.21 um 22:51 schrieb Daniel Vetter: > > We want to stop gup, which isn't the case if we use vmf_insert_page > > What is gup? get_user_pages. It pins memory wherever it is, which badly wreaks at least ttm and could also cause trouble with cma allocations. In both cases becaue we can't move/reuse these pages anymore. Now get_user_pages fails when the memory isn't considered "normal", like with VM_PFNMAP and using vm_insert_pfn. For consistency across all dma-buf I'm trying (together with Christian König) to roll this out everywhere, for fewer surprises. E.g. for 5.14 iirc we merged a patch to do the same for ttm, where it closes an actual bug (ttm gets really badly confused when there's suddenly pinned pages where it thought it can move them). cma allcoations already use VM_PFNMAP (because that's what dma_mmap is using underneath), as is anything that's using remap_pfn_range. Worst case we have to revert this patch for shmem helpers if it breaks something, but I hope that's not the case. On the ttm side we've also had some fallout that we needed to paper over with clever tricks. v2: With this shmem gem helpers now definitely need CONFIG_MMU (0day) v3: add more depends on MMU. For usb drivers this is a bit awkward, but really it's correct: To be able to provide a contig mapping of buffers to userspace on !MMU platforms we'd need to use the cma helpers for these drivers on those platforms. As-is this wont work. Also not exactly sure why vm_insert_page doesn't go boom, because that definitely wont fly in practice since the pages are non-contig to begin with. v4: Explain the entire motivation a lot more (Thomas) Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <mripard@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210812131412.2487363-2-daniel.vetter@ffwll.ch
173 lines
5.0 KiB
Plaintext
173 lines
5.0 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
config DRM_ARCPGU
|
|
tristate "ARC PGU"
|
|
depends on DRM && OF
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
Choose this option if you have an ARC PGU controller.
|
|
|
|
If M is selected the module will be called arcpgu.
|
|
|
|
config DRM_BOCHS
|
|
tristate "DRM Support for bochs dispi vga interface (qemu stdvga)"
|
|
depends on DRM && PCI && MMU
|
|
select DRM_KMS_HELPER
|
|
select DRM_VRAM_HELPER
|
|
select DRM_TTM
|
|
select DRM_TTM_HELPER
|
|
help
|
|
This is a KMS driver for qemu's stdvga output. Choose this option
|
|
for qemu.
|
|
|
|
If M is selected the module will be called bochs.
|
|
|
|
config DRM_CIRRUS_QEMU
|
|
tristate "Cirrus driver for QEMU emulated device"
|
|
depends on DRM && PCI && MMU
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_SHMEM_HELPER
|
|
help
|
|
This is a KMS driver for emulated cirrus device in qemu.
|
|
It is *NOT* intended for real cirrus devices. This requires
|
|
the modesetting userspace X.org driver.
|
|
|
|
Cirrus is obsolete, the hardware was designed in the 90ies
|
|
and can't keep up with todays needs. More background:
|
|
https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
|
|
|
|
Better alternatives are:
|
|
- stdvga (DRM_BOCHS, qemu -vga std, default in qemu 2.2+)
|
|
- qxl (DRM_QXL, qemu -vga qxl, works best with spice)
|
|
- virtio (DRM_VIRTIO_GPU), qemu -vga virtio)
|
|
|
|
config DRM_GM12U320
|
|
tristate "GM12U320 driver for USB projectors"
|
|
depends on DRM && USB && MMU
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_SHMEM_HELPER
|
|
help
|
|
This is a KMS driver for projectors which use the GM12U320 chipset
|
|
for video transfer over USB2/3, such as the Acer C120 mini projector.
|
|
|
|
config DRM_SIMPLEDRM
|
|
tristate "Simple framebuffer driver"
|
|
depends on DRM && MMU
|
|
select DRM_GEM_SHMEM_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
DRM driver for simple platform-provided framebuffers.
|
|
|
|
This driver assumes that the display hardware has been initialized
|
|
by the firmware or bootloader before the kernel boots. Scanout
|
|
buffer, size, and display format must be provided via device tree,
|
|
UEFI, VESA, etc.
|
|
|
|
On x86 BIOS or UEFI systems, you should also select SYSFB_SIMPLEFB
|
|
to use UEFI and VESA framebuffers.
|
|
|
|
config TINYDRM_HX8357D
|
|
tristate "DRM support for HX8357D display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following HX8357D panels:
|
|
* YX350HV15-T 3.5" 340x350 TFT (Adafruit 3.5")
|
|
|
|
If M is selected the module will be called hx8357d.
|
|
|
|
config TINYDRM_ILI9225
|
|
tristate "DRM support for ILI9225 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
help
|
|
DRM driver for the following Ilitek ILI9225 panels:
|
|
* No-name 2.2" color screen module
|
|
|
|
If M is selected the module will be called ili9225.
|
|
|
|
config TINYDRM_ILI9341
|
|
tristate "DRM support for ILI9341 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following Ilitek ILI9341 panels:
|
|
* YX240QV29-T 2.4" 240x320 TFT (Adafruit 2.4")
|
|
|
|
If M is selected the module will be called ili9341.
|
|
|
|
config TINYDRM_ILI9486
|
|
tristate "DRM support for ILI9486 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following Ilitek ILI9486 panels:
|
|
* PISCREEN 3.5" 320x480 TFT (Ozzmaker 3.5")
|
|
* RPILCD 3.5" 320x480 TFT (Waveshare 3.5")
|
|
|
|
If M is selected the module will be called ili9486.
|
|
|
|
config TINYDRM_MI0283QT
|
|
tristate "DRM support for MI0283QT"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the Multi-Inno MI0283QT display panel
|
|
If M is selected the module will be called mi0283qt.
|
|
|
|
config TINYDRM_REPAPER
|
|
tristate "DRM support for Pervasive Displays RePaper panels (V231)"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
help
|
|
DRM driver for the following Pervasive Displays panels:
|
|
1.44" TFT EPD Panel (E1144CS021)
|
|
1.90" TFT EPD Panel (E1190CS021)
|
|
2.00" TFT EPD Panel (E2200CS021)
|
|
2.71" TFT EPD Panel (E2271CS021)
|
|
|
|
If M is selected the module will be called repaper.
|
|
|
|
config TINYDRM_ST7586
|
|
tristate "DRM support for Sitronix ST7586 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
help
|
|
DRM driver for the following Sitronix ST7586 panels:
|
|
* LEGO MINDSTORMS EV3
|
|
|
|
If M is selected the module will be called st7586.
|
|
|
|
config TINYDRM_ST7735R
|
|
tristate "DRM support for Sitronix ST7715R/ST7735R display panels"
|
|
depends on DRM && SPI
|
|
select DRM_KMS_HELPER
|
|
select DRM_KMS_CMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for Sitronix ST7715R/ST7735R with one of the following
|
|
LCDs:
|
|
* Jianda JD-T18003-T01 1.8" 128x160 TFT
|
|
* Okaya RH128128T 1.44" 128x128 TFT
|
|
|
|
If M is selected the module will be called st7735r.
|