[PATCH 00/52] drm_device managed resources
Daniel Vetter
daniel.vetter at ffwll.ch
Wed Feb 19 10:20:30 UTC 2020
Hi all,
So I finally bit the bullet and started a little framework for managed
resources tied to the drm_device lifetime, instead of the lifetime of the
underlying physical device. Because I've seen one patch too many that just
totally got this wrong.
Yes it's huge, but I think this is what we minimally need to show an
actual improvement, and at least a glimpse of the road ahead.
For reading the patch series I think it'd be best to start at the very
end, which contains the documentation for the entire thing. I've assembled
that at the end since a few of the intermediate states are a bit gross,
but necessary to get there with full bisectability.
Once you know where things will go, start at the front (the two very first
patches are just trivial prep that got in the way).
There's three major phases:
- Handling the final kfree of the structure containing the drm_device
- Converting drm_dev_fini to the managed resource framework
- Converting drm_mode_config_cleanup to the managed resource framework.
The last patch's commit message also contains a bit a todo about what next
possible steps could be.
Review (primarily on the big picture at least at first) but also testing
for all the drivers I'm touching very much appreciated.
Cheers, Daniel
Daniel Vetter (52):
mm/sl[uo]b: export __kmalloc_track(_node)_caller
drm/i915: Don't clear drvdata in ->release
drm: add managed resources tied to drm_device
drm: Set final_kfree in drm_dev_alloc
drm/mipi_dbi: Use drmm_add_final_kfree in all drivers
drm/udl: Use drmm_add_final_kfree
drm/udl: Use drmm_add_final_kfree
drm/qxl: Use drmm_add_final_kfree
drm/i915: Use drmm_add_final_kfree
drm/cirrus: Use drmm_add_final_kfree
drm/v3d: Use drmm_add_final_kfree
drm/tidss: Use drmm_add_final_kfree
drm/mcde: Use drmm_add_final_kfree
drm/vgem: Use drmm_add_final_kfree
drm/vkms: Use drmm_add_final_kfree
drm/repaper: Use drmm_add_final_kfree
drm/inigenic: Use drmm_add_final_kfree
drm/gm12u320: Use drmm_add_final_kfree
drm/<drivers>: Use drmm_add_final_kfree
drm: Cleanups after drmm_add_final_kfree rollout
drm: Handle dev->unique with drmm_
drm: Use drmm_ for drm_dev_init cleanup
drm: manage drm_minor cleanup with drmm_
drm: Manage drm_gem_init with drmm_
drm: Manage drm_vblank_cleanup with drmm_
drm: Garbage collect drm_dev_fini
drm: Manage drm_mode_config_init with drmm_
drm/bochs: Remove leftover drm_atomic_helper_shutdown
drm/bochs: Drop explicit drm_mode_config_cleanup
drm/cirrus: Drop explicit drm_mode_config_cleanup call
drm/cirrus: Fully embrace devm_
drm/ingenic: Drop explicit drm_mode_config_cleanup call
drm/mcde: Drop explicit drm_mode_config_cleanup call
drm/mcde: More devm_drm_dev_init
drm/meson: Drop explicit drm_mode_config_cleanup call
drm/pl111: Drop explicit drm_mode_config_cleanup call
drm/rcar-du: Drop explicit drm_mode_config_cleanup call
drm/rockchip: Drop explicit drm_mode_config_cleanup call
drm/stm: Drop explicit drm_mode_config_cleanup call
drm/shmob: Drop explicit drm_mode_config_cleanup call
drm/mtk: Drop explicit drm_mode_config_cleanup call
drm/tidss: Drop explicit drm_mode_config_cleanup call
drm/gm12u320: More drmm_
drm/gm12u320: Use devm_drm_dev_init
drm/gm12u320: Use helpers for shutdown/suspend/resume
drm/gm12u320: Simplify upload work
drm/repaper: Drop explicit drm_mode_config_cleanup call
drm/mipi-dbi: Move drm_mode_config_init into mipi library
drm/mipi-dbi: Drop explicit drm_mode_config_cleanup call
drm/udl: Drop explicit drm_mode_config_cleanup call
drm/udl: drop drm_driver.release hook
drm: Add docs for managed resources
Documentation/gpu/drm-internals.rst | 12 +
drivers/gpu/drm/Makefile | 3 +-
.../gpu/drm/arm/display/komeda/komeda_kms.c | 2 +
drivers/gpu/drm/armada/armada_drv.c | 2 +
drivers/gpu/drm/bochs/bochs.h | 1 -
drivers/gpu/drm/bochs/bochs_drv.c | 6 +-
drivers/gpu/drm/bochs/bochs_kms.c | 15 +-
drivers/gpu/drm/cirrus/cirrus.c | 74 ++---
drivers/gpu/drm/drm_drv.c | 217 ++++++--------
drivers/gpu/drm/drm_gem.c | 21 +-
drivers/gpu/drm/drm_internal.h | 5 +-
drivers/gpu/drm/drm_managed.c | 278 ++++++++++++++++++
drivers/gpu/drm/drm_mipi_dbi.c | 24 +-
drivers/gpu/drm/drm_mode_config.c | 12 +-
drivers/gpu/drm/drm_vblank.c | 31 +-
drivers/gpu/drm/i915/i915_drv.c | 21 +-
drivers/gpu/drm/i915/i915_drv.h | 3 +
.../gpu/drm/i915/selftests/mock_gem_device.c | 20 +-
drivers/gpu/drm/ingenic/ingenic-drm.c | 17 +-
drivers/gpu/drm/mcde/mcde_drv.c | 35 +--
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 9 +-
drivers/gpu/drm/meson/meson_drv.c | 5 +-
drivers/gpu/drm/pl111/pl111_drv.c | 12 +-
drivers/gpu/drm/qxl/qxl_drv.c | 2 -
drivers/gpu/drm/qxl/qxl_kms.c | 2 +
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 1 -
drivers/gpu/drm/rcar-du/rcar_du_kms.c | 4 +-
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +-
drivers/gpu/drm/shmobile/shmob_drm_drv.c | 2 -
drivers/gpu/drm/shmobile/shmob_drm_kms.c | 6 +-
drivers/gpu/drm/stm/drv.c | 10 +-
drivers/gpu/drm/tidss/tidss_drv.c | 10 +-
drivers/gpu/drm/tidss/tidss_kms.c | 19 +-
drivers/gpu/drm/tidss/tidss_kms.h | 1 -
drivers/gpu/drm/tiny/gm12u320.c | 225 ++++++--------
drivers/gpu/drm/tiny/hx8357d.c | 5 +-
drivers/gpu/drm/tiny/ili9225.c | 5 +-
drivers/gpu/drm/tiny/ili9341.c | 5 +-
drivers/gpu/drm/tiny/ili9486.c | 5 +-
drivers/gpu/drm/tiny/mi0283qt.c | 5 +-
drivers/gpu/drm/tiny/repaper.c | 14 +-
drivers/gpu/drm/tiny/st7586.c | 5 +-
drivers/gpu/drm/tiny/st7735r.c | 5 +-
drivers/gpu/drm/udl/udl_drv.c | 14 +-
drivers/gpu/drm/udl/udl_drv.h | 2 -
drivers/gpu/drm/udl/udl_main.c | 10 -
drivers/gpu/drm/udl/udl_modeset.c | 21 +-
drivers/gpu/drm/v3d/v3d_drv.c | 38 +--
drivers/gpu/drm/vboxvideo/vbox_drv.c | 2 +
drivers/gpu/drm/vgem/vgem_drv.c | 15 +-
drivers/gpu/drm/vkms/vkms_drv.c | 19 +-
drivers/gpu/drm/xen/xen_drm_front.c | 4 +-
include/drm/drm_device.h | 12 +
include/drm/drm_drv.h | 9 +-
include/drm/drm_managed.h | 93 ++++++
include/drm/drm_mipi_dbi.h | 1 -
include/drm/drm_mode_config.h | 2 +-
include/drm/drm_print.h | 6 +
mm/slob.c | 2 +
mm/slub.c | 2 +
60 files changed, 816 insertions(+), 602 deletions(-)
create mode 100644 drivers/gpu/drm/drm_managed.c
create mode 100644 include/drm/drm_managed.h
--
2.24.1
More information about the dri-devel
mailing list