1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/qxl
Dave Airlie ebdf565169 drm/ttm: add multihop infrastrucutre (v3)
Currently drivers get called to move a buffer, but if they have to
move it temporarily through another space (SYSTEM->VRAM via TT)
then they can end up with a lot of ttm->driver->ttm call stacks,
if the temprorary space moves requires eviction.

Instead of letting the driver do all the placement/space for the
temporary, allow it to report back (-EMULTIHOP) and a placement (hop)
to the move code, which will then do the temporary move, and the
correct placement move afterwards.

This removes a lot of code from drivers, at the expense of
adding some midlayering. I've some further ideas on how to turn
it inside out, but I think this is a good solution to the call
stack problems.

v2: separate out the driver patches, add WARN for getting
MULTHOP in paths we shouldn't (Daniel)
v3: use memset (Christian)

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: hristian König <christian.koenig@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201109005432.861936-2-airlied@gmail.com
2020-11-11 11:11:03 +10:00
..
Kconfig drm/qxl: Fix randbuild error 2019-10-17 14:31:50 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
qxl_cmd.c qxl/ttm: drop the unusued no wait flag to reserve function 2020-08-06 12:16:29 +10:00
qxl_debugfs.c drm/qxl: switch over to the new pin interface 2020-09-24 16:16:50 +02:00
qxl_dev.h PCI: Move PCI_VENDOR_ID_REDHAT definition to pci_ids.h 2020-07-09 17:00:47 -05:00
qxl_display.c drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_draw.c drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_drv.c drm/qxl: don't take vga ports on rev5+ 2020-08-17 09:36:36 +02:00
qxl_drv.h drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_dumb.c drm/qxl: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:34 +01:00
qxl_gem.c drm/qxl: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:34 +01:00
qxl_image.c drm/qxl: lost qxl_bo_kunmap_atomic_page in qxl_image_init_helper() 2020-04-29 13:21:34 +02:00
qxl_ioctl.c drm: remove unneeded break 2020-11-08 18:59:00 +01:00
qxl_irq.c drm/qxl: Don't use drm_device->dev_private 2020-04-28 20:04:01 +02:00
qxl_kms.c drm/qxl: replace idr_init() by idr_init_base() 2020-11-06 08:50:31 +01:00
qxl_object.c drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_object.h drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_prime.c drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
qxl_release.c drm/qxl: switch over to the new pin interface 2020-09-24 16:16:50 +02:00
qxl_ttm.c drm/ttm: add multihop infrastrucutre (v3) 2020-11-11 11:11:03 +10:00