From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org,
melissa.srw@gmail.com, chris@chris-wilson.co.uk,
miaoqinglang@huawei.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
etnaviv@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, spice-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org,
xen-devel@lists.xenproject.org, linux-media@vger.kernel.org,
linaro-mm-sig@lists.linaro.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walle
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
etnaviv@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, spice-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org,
xen-devel@lists.xenproject.org, linux-media@vger.kernel.org,
linaro-mm-sig@lists.linaro.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org,
melissa.srw@gmail.com, chris@chris-wilson.co.uk,
miaoqinglang@huawei.com
Cc: linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
linaro-mm-sig@lists.linaro.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
xen-devel@lists.xenproject.org,
spice-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org,
melissa.srw@gmail.com, chris@chris-wilson.co.uk,
miaoqinglang@huawei.com
Cc: linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
linaro-mm-sig@lists.linaro.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
xen-devel@lists.xenproject.org,
spice-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org,
melissa.srw@gmail.com, chris@chris-wilson.co.uk,
miaoqinglang@huawei.com
Cc: linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
linaro-mm-sig@lists.linaro.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
xen-devel@lists.xenproject.org,
spice-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: maarten.lankhorst@linux.intel.com, mripard@kernel.org,
airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org,
alexander.deucher@amd.com, christian.koenig@amd.com,
kraxel@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com,
inki.dae@samsung.com, jy0922.shim@samsung.com,
sw0312.kim@samsung.com, kyungmin.park@samsung.com,
kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com,
bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com,
steven.price@arm.com, alyssa.rosenzweig@collabora.com,
hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com,
sean@poorly.run, eric@anholt.net,
oleksandr_andrushchenko@epam.com, ray.huang@amd.com,
sumit.semwal@linaro.org, emil.velikov@collabora.com,
luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org,
melissa.srw@gmail.com, chris@chris-wilson.co.uk,
miaoqinglang@huawei.com
Cc: linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org,
nouveau@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
linaro-mm-sig@lists.linaro.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
xen-devel@lists.xenproject.org,
spice-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org
Subject: [PATCH v5 00/10] Support GEM object mappings from I/O memory
Date: Tue, 20 Oct 2020 14:20:36 +0200 [thread overview]
Message-ID: <20201020122046.31167-1-tzimmermann@suse.de> (raw)
DRM's fbdev console uses regular load and store operations to update
framebuffer memory. The bochs driver on sparc64 requires the use of
I/O-specific load and store operations. We have a workaround, but need
a long-term solution to the problem.
This patchset changes GEM's vmap/vunmap interfaces to forward pointers
of type struct dma_buf_map and updates the generic fbdev emulation to
use them correctly. This enables I/O-memory operations on all framebuffers
that require and support them.
Patches #1 to #4 prepare VRAM helpers and drivers.
Next is the update of the GEM vmap functions. Patch #5 adds vmap and vunmap
that is usable with TTM-based GEM drivers, and patch #6 updates GEM's
vmap/vunmap callback to forward instances of type struct dma_buf_map. While
the patch touches many files throughout the DRM modules, the applied changes
are mostly trivial interface fixes. Several TTM-based GEM drivers now use
the new vmap code. Patch #7 updates GEM's internal vmap/vunmap functions to
forward struct dma_buf_map.
With struct dma_buf_map propagated through the layers, patches #8 to #10
convert DRM clients and generic fbdev emulation to use it. Updating the
fbdev framebuffer will select the correct functions, either for system or
I/O memory.
v5:
* rebase onto latest TTM changes (Chrsitian)
* support TTM premapped memory correctly (Christian)
* implement fb_read/fb_write internally (Sam, Daniel)
* cleanups
v4:
* provide TTM vmap/vunmap plus GEM helpers and convert drivers
over (Christian, Daniel)
* remove several empty functions
* more TODOs and documentation (Daniel)
v3:
* recreate the whole patchset on top of struct dma_buf_map
v2:
* RFC patchset
Thomas Zimmermann (10):
drm/vram-helper: Remove invariant parameters from internal kmap
function
drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap()
drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap()
drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}()
drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM
backends
drm/gem: Update internal GEM vmap/vunmap interfaces to use struct
dma_buf_map
drm/gem: Store client buffer mappings as struct dma_buf_map
dma-buf-map: Add memcpy and pointer-increment interfaces
drm/fb_helper: Support framebuffers in I/O memory
Documentation/gpu/todo.rst | 37 ++-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 36 ---
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 2 -
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 5 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
drivers/gpu/drm/ast/ast_cursor.c | 27 +--
drivers/gpu/drm/ast/ast_drv.h | 7 +-
drivers/gpu/drm/bochs/bochs_kms.c | 1 -
drivers/gpu/drm/drm_client.c | 38 +--
drivers/gpu/drm/drm_fb_helper.c | 248 ++++++++++++++++++--
drivers/gpu/drm/drm_gem.c | 29 ++-
drivers/gpu/drm/drm_gem_cma_helper.c | 27 +--
drivers/gpu/drm/drm_gem_shmem_helper.c | 48 ++--
drivers/gpu/drm/drm_gem_ttm_helper.c | 38 +++
drivers/gpu/drm/drm_gem_vram_helper.c | 117 +++++----
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_prime.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_drv.h | 3 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 1 -
drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 12 -
drivers/gpu/drm/exynos/exynos_drm_gem.h | 2 -
drivers/gpu/drm/lima/lima_gem.c | 6 +-
drivers/gpu/drm/lima/lima_sched.c | 11 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +-
drivers/gpu/drm/nouveau/Kconfig | 1 +
drivers/gpu/drm/nouveau/nouveau_bo.h | 2 -
drivers/gpu/drm/nouveau/nouveau_gem.c | 6 +-
drivers/gpu/drm/nouveau/nouveau_gem.h | 2 -
drivers/gpu/drm/nouveau/nouveau_prime.c | 20 --
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 14 +-
drivers/gpu/drm/qxl/qxl_display.c | 11 +-
drivers/gpu/drm/qxl/qxl_draw.c | 14 +-
drivers/gpu/drm/qxl/qxl_drv.h | 11 +-
drivers/gpu/drm/qxl/qxl_object.c | 31 ++-
drivers/gpu/drm/qxl/qxl_object.h | 2 +-
drivers/gpu/drm/qxl/qxl_prime.c | 12 +-
drivers/gpu/drm/radeon/radeon.h | 1 -
drivers/gpu/drm/radeon/radeon_gem.c | 7 +-
drivers/gpu/drm/radeon/radeon_prime.c | 20 --
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 22 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 4 +-
drivers/gpu/drm/tiny/cirrus.c | 10 +-
drivers/gpu/drm/tiny/gm12u320.c | 10 +-
drivers/gpu/drm/ttm/ttm_bo_util.c | 72 ++++++
drivers/gpu/drm/udl/udl_modeset.c | 8 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 7 +-
drivers/gpu/drm/vc4/vc4_drv.h | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 16 +-
drivers/gpu/drm/vkms/vkms_plane.c | 15 +-
drivers/gpu/drm/vkms/vkms_writeback.c | 22 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 18 +-
drivers/gpu/drm/xen/xen_drm_front_gem.h | 6 +-
include/drm/drm_client.h | 7 +-
include/drm/drm_gem.h | 5 +-
include/drm/drm_gem_cma_helper.h | 3 +-
include/drm/drm_gem_shmem_helper.h | 4 +-
include/drm/drm_gem_ttm_helper.h | 6 +
include/drm/drm_gem_vram_helper.h | 14 +-
include/drm/drm_mode_config.h | 12 -
include/drm/ttm/ttm_bo_api.h | 28 +++
include/linux/dma-buf-map.h | 93 +++++++-
64 files changed, 852 insertions(+), 436 deletions(-)
--
2.28.0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next reply other threads:[~2020-10-20 12:20 UTC|newest]
Thread overview: 141+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-20 12:20 Thomas Zimmermann [this message]
2020-10-20 12:20 ` [PATCH v5 00/10] Support GEM object mappings from I/O memory Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 01/10] drm/vram-helper: Remove invariant parameters from internal kmap function Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 02/10] drm/cma-helper: Remove empty drm_gem_cma_prime_vunmap() Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 03/10] drm/etnaviv: Remove empty etnaviv_gem_prime_vunmap() Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 04/10] drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}() Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 04/10] drm/exynos: Remove empty exynos_drm_gem_prime_{vmap, vunmap}() Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 04/10] drm/exynos: Remove empty exynos_drm_gem_prime_{vmap,vunmap}() Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 05/10] drm/ttm: Add vmap/vunmap to TTM and TTM GEM helpers Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 13:39 ` Christian König
2020-10-20 13:39 ` Christian König
2020-10-20 13:39 ` Christian König
2020-10-20 13:39 ` Christian König
2020-10-20 13:39 ` Christian König
2020-10-20 13:39 ` Christian König
2020-10-20 12:20 ` [PATCH v5 06/10] drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 07/10] drm/gem: Update internal GEM vmap/vunmap interfaces to use struct dma_buf_map Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` [PATCH v5 08/10] drm/gem: Store client buffer mappings as " Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 8:49 ` Daniel Vetter
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 9:18 ` Thomas Zimmermann
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-22 10:21 ` Daniel Vetter
2020-10-20 12:20 ` [PATCH v5 09/10] dma-buf-map: Add memcpy and pointer-increment interfaces Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:07 ` Linus Walleij
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 10:37 ` Thomas Zimmermann
2020-11-05 12:54 ` Daniel Vetter
2020-11-05 12:54 ` Daniel Vetter
2020-11-05 12:54 ` Daniel Vetter
2020-11-05 12:54 ` Daniel Vetter
2020-11-05 12:54 ` Daniel Vetter
2020-11-05 12:54 ` Daniel Vetter
2020-10-20 12:20 ` [PATCH v5 10/10] drm/fb_helper: Support framebuffers in I/O memory Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-20 12:20 ` Thomas Zimmermann
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:05 ` Daniel Vetter
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:37 ` Thomas Zimmermann
2020-10-22 8:51 ` Daniel Vetter
2020-10-22 8:51 ` Daniel Vetter
2020-10-22 8:51 ` Daniel Vetter
2020-10-22 8:51 ` Daniel Vetter
2020-10-22 8:51 ` Daniel Vetter
2020-10-22 8:51 ` Daniel Vetter
2020-10-24 20:38 ` Sam Ravnborg
2020-10-24 20:38 ` Sam Ravnborg
2020-10-24 20:38 ` Sam Ravnborg
2020-10-24 20:38 ` Sam Ravnborg
2020-10-24 20:38 ` Sam Ravnborg
2020-10-24 20:38 ` Sam Ravnborg
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
2020-10-26 7:50 ` Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201020122046.31167-1-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=alyssa.rosenzweig@collabora.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=apaneers@amd.com \
--cc=bskeggs@redhat.com \
--cc=chris@chris-wilson.co.uk \
--cc=christian.gmeiner@gmail.com \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.velikov@collabora.com \
--cc=eric@anholt.net \
--cc=etnaviv@lists.freedesktop.org \
--cc=hdegoede@redhat.com \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=inki.dae@samsung.com \
--cc=jy0922.shim@samsung.com \
--cc=kgene@kernel.org \
--cc=kraxel@redhat.com \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=l.stach@pengutronix.de \
--cc=lima@lists.freedesktop.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=luben.tuikov@amd.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=melissa.srw@gmail.com \
--cc=miaoqinglang@huawei.com \
--cc=mripard@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=oleksandr_andrushchenko@epam.com \
--cc=ray.huang@amd.com \
--cc=robh@kernel.org \
--cc=sam@ravnborg.org \
--cc=sean@poorly.run \
--cc=spice-devel@lists.freedesktop.org \
--cc=steven.price@arm.com \
--cc=sumit.semwal@linaro.org \
--cc=sw0312.kim@samsung.com \
--cc=tomeu.vizoso@collabora.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=xen-devel@lists.xenproject.org \
--cc=yuq825@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.