diff options
author | Dave Airlie <airlied@redhat.com> | 2024-02-12 13:00:53 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2024-02-12 13:02:17 +1000 |
commit | 0de62399883d5077fd13d0926f5128a7e038b40c (patch) | |
tree | 0b7873ba8cc6d1fdb664eb8fb3535c9453545b58 /drivers/gpu/drm/drm_managed.c | |
parent | f8e4806e0dfa8796b3d7076a7fe054455a59c38b (diff) | |
parent | 3ce7384048fa1793db0eae013fa377d89256b76f (diff) |
Merge tag 'drm-misc-next-2024-02-08' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for v6.9:
UAPI Changes:
Cross-subsystem Changes:
dma-buf:
- clean up docs
media:
- tc358743: fix v4l device registration
video:
- move all kernel parameters for video behind CONFIG_VIDEO
sound:
- remove <drm/drm_edid.h> include from header
Core Changes:
ci:
- add tests for msm
managed:
- add drmm_release_action() with tests
ttm:
- fix errno codes
- simply busy-placement handling
- fix page decryption
docs:
- add new external references
- clean up
Driver Changes:
amdgpu:
- clean up
bridge:
- imx: add i.MX8MP HDMI PVI plus DT bindings, add i.MX8MP HDMI TX plus DT
bindings
- samsung-dsim: add bsh-smm-s2/pro boards
- sii902x: fix probing and unregistration
- tc358767: limit pixel PLL input range
- switch to new drm_bridge_read_edid() interface
- clean up
imx:
- use devm_ functions during init
- clean up
lima:
- fix memory leak
loongson:
- fail if no VRAM present
meson:
- switch to new drm_bridge_read_edid() interface
nouveau:
- clean up
panel:
- add BOE TH101MB31IG002-28A plus DT bindings
- add EDT ETML1010G3DRA plus DT bindings
- add Novatek NT36672E LCD DSI plus DT bindings
- nt36523: support 120Hz timings, fix includes
- simple: fix display timings on RK32FN48H
- visionox-vtdr6130: fix initialization
panel-orientation-quirks:
- GPD Win Mini
vmwgfx:
- list command SVGA_3D_CMD_DEFINE_GB_SURFACE_V4 as invalid
- fix null-pointer deref in execbuf
- refactor display-mode probing
- fix fencing for creating cursor MOBs
- fix cursor-memory lifetime
- clean up
xlnx:
- fix live video input for ZynqMP DPSUB
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240208164242.GA14321@linux.fritz.box
Diffstat (limited to 'drivers/gpu/drm/drm_managed.c')
-rw-r--r-- | drivers/gpu/drm/drm_managed.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_managed.c b/drivers/gpu/drm/drm_managed.c index bcd111404b12..7646f67bda4e 100644 --- a/drivers/gpu/drm/drm_managed.c +++ b/drivers/gpu/drm/drm_managed.c @@ -177,6 +177,45 @@ int __drmm_add_action_or_reset(struct drm_device *dev, EXPORT_SYMBOL(__drmm_add_action_or_reset); /** + * drmm_release_action - release a managed action from a &drm_device + * @dev: DRM device + * @action: function which would be called when @dev is released + * @data: opaque pointer, passed to @action + * + * This function calls the @action previously added by drmm_add_action() + * immediately. + * The @action is removed from the list of cleanup actions for @dev, + * which means that it won't be called in the final drm_dev_put(). + */ +void drmm_release_action(struct drm_device *dev, + drmres_release_t action, + void *data) +{ + struct drmres *dr_match = NULL, *dr; + unsigned long flags; + + spin_lock_irqsave(&dev->managed.lock, flags); + list_for_each_entry_reverse(dr, &dev->managed.resources, node.entry) { + if (dr->node.release == action) { + if (!data || (data && *(void **)dr->data == data)) { + dr_match = dr; + del_dr(dev, dr_match); + break; + } + } + } + spin_unlock_irqrestore(&dev->managed.lock, flags); + + if (WARN_ON(!dr_match)) + return; + + action(dev, data); + + free_dr(dr_match); +} +EXPORT_SYMBOL(drmm_release_action); + +/** * drmm_kmalloc - &drm_device managed kmalloc() * @dev: DRM device * @size: size of the memory allocation |