Chris Wilson
077675c1e8
drm: Convert prime dma-buf <-> handle to rbtree
...
Currently we use a linear walk to lookup a handle and return a dma-buf,
and vice versa. A long overdue TODO task is to convert that to a
hashtable. Since the initial implementation of dma-buf/prime, we now
have resizeable hashtables we can use (and now a future task is to RCU
enable the lookup!). However, this patch opts to use an rbtree instead
to provide O(lgN) lookups (and insertion, deletion). rbtrees were chosen
over using the RCU backed resizable hashtable to firstly avoid the
reallocations (rbtrees can be embedded entirely within the parent
struct) and to favour simpler code with predictable worst case
behaviour. In simple testing, the difference between using the constant
lookup and insertion of the rhashtable and the rbtree was less than 10%
of the wall time (igt/benchmarks/prime_lookup) - both are dramatic
improvements over the existing linear lists.
v2: Favour rbtree over rhashtable
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94631
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20160926204414.23222-1-chris@chris-wilson.co.uk
2016-10-04 08:23:07 +02:00
..
bridge
drm/bridge: analogix_dp: add the PSR function support
2016-08-23 11:44:33 -04:00
i2c
drm/i2c: tda998x: Register ASoC hdmi-codec and add audio DT binding
2016-09-07 13:10:10 +01:00
ttm
drm/ttm: remove cpu_address member from ttm_tt
2016-09-16 15:53:05 -04:00
ati_pcigart.h
drm_agpsupport.h
drm: Give drm_agp_clear drm_legacy_ prefix
2016-04-27 08:41:34 +02:00
drm_atomic.h
drm: Extract drm_plane.[hc]
2016-09-22 00:01:56 -07:00
drm_atomic_helper.h
drm/fence: allow fence waiting to be interrupted by userspace
2016-09-12 16:59:15 -04:00
drm_auth.h
drm: document drm_auth.c
2016-06-21 22:10:55 +02:00
drm_blend.h
drm: Fix plane type uabi breakage
2016-09-22 23:52:12 -07:00
drm_bridge.h
drm: Extract drm_bridge.h
2016-09-19 15:04:15 +02:00
drm_cache.h
drm: Loongson-3 doesn't fully support wc memory
2016-04-22 10:24:11 +10:00
drm_color_mgmt.h
drm/doc: Document color space handling
2016-09-22 00:04:03 -07:00
drm_connector.h
drm: Extract drm_bridge.h
2016-09-19 15:04:15 +02:00
drm_crtc.h
drm: Extract drm_color_mgmt.[hc]
2016-09-22 00:04:02 -07:00
drm_crtc_helper.h
drm/kms-helpers: Extract drm_modeset_helper.[hc]
2016-08-16 16:10:19 +02:00
drm_displayid.h
drm/edid: add displayid detailed 1 timings to the modelist. (v1.1)
2016-05-23 11:35:31 +10:00
drm_dp_dual_mode_helper.h
drm: Add helper for DP++ adaptors
2016-05-23 11:10:46 +03:00
drm_dp_helper.h
drm: Add DP branch device info on debugfs
2016-09-15 14:51:07 +03:00
drm_dp_mst_helper.h
drm/dp-mst: Missing kernel doc
2016-07-19 10:31:53 +02:00
drm_edid.h
drm: Move all decl for drm_edid.c to drm_edid.h
2016-09-19 15:04:32 +02:00
drm_encoder.h
drm: Move a few macros away from drm_crtc.h
2016-09-19 15:03:46 +02:00
drm_encoder_slave.h
drm: Constify drm_encoder_slave_funcs
2015-12-15 13:41:17 +01:00
drm_fb_cma_helper.h
drm/fb_cma_helper: add suspend helper
2016-06-18 18:33:54 -07:00
drm_fb_helper.h
drm/fb-helper: Fix sparse warnings
2016-09-19 16:45:15 +02:00
drm_fixed.h
drm: Add drm_fixp_from_fraction and drm_fixp2int_ceil
2016-02-05 15:23:48 +10:00
drm_flip_work.h
drm_fourcc.h
drm: move drm_mode_legacy_fb_format to drm_fourcc.c
2016-08-29 15:37:28 +02:00
drm_framebuffer.h
drm: Move a few macros away from drm_crtc.h
2016-09-19 15:03:46 +02:00
drm_gem.h
drm/doc: Fix more kerneldoc/sphinx warnings
2016-08-16 16:09:58 +02:00
drm_gem_cma_helper.h
drm_global.h
drm_hashtab.h
drm_irq.h
drm: Extract&Document drm_irq.h
2016-07-19 10:29:47 +02:00
drm_legacy.h
drm: document drm_auth.c
2016-06-21 22:10:55 +02:00
drm_mem_util.h
drm,i915: Introduce drm_malloc_gfp()
2016-04-11 17:13:10 +01:00
drm_mipi_dsi.h
drm/dsi: Implement DCS set/get display brightness
2016-08-24 13:34:00 +02:00
drm_mm.h
drm: Track drm_mm nodes with an interval tree
2016-08-08 10:05:16 +02:00
drm_mode_object.h
drm: Extract drm_bridge.h
2016-09-19 15:04:15 +02:00
drm_modes.h
drm: Extract drm_bridge.h
2016-09-19 15:04:15 +02:00
drm_modeset_helper.h
drm/kms-helpers: Extract drm_modeset_helper.[hc]
2016-08-16 16:10:19 +02:00
drm_modeset_helper_vtables.h
drm/atomic-helper: Add atomic_disable CRTC helper callback
2016-08-29 10:21:52 +02:00
drm_modeset_lock.h
drm: Implement drm_modeset_lock_all_ctx()
2015-12-02 23:10:59 +01:00
drm_of.h
drm: add drm_of_encoder_active_endpoint helpers
2016-02-10 14:19:21 +01:00
drm_os_linux.h
drm_panel.h
drm/panel: Flesh out kerneldoc
2016-05-06 16:04:48 +02:00
drm_pciids.h
drm_plane.h
drm: Fix plane type uabi breakage
2016-09-22 23:52:12 -07:00
drm_plane_helper.h
drm/kms-helpers: Extract drm_modeset_helper.[hc]
2016-08-16 16:10:19 +02:00
drm_property.h
drm: Move a few macros away from drm_crtc.h
2016-09-19 15:03:46 +02:00
drm_rect.h
drm_simple_kms_helper.h
drm: simple_kms_helper: add support for bridges
2016-08-29 09:15:37 +05:30
drm_sysfs.h
drm_vma_manager.h
drm: use drm_file to tag vm-bos
2016-09-19 11:22:08 +02:00
drmP.h
drm: Convert prime dma-buf <-> handle to rbtree
2016-10-04 08:23:07 +02:00
gma_drm.h
i915_component.h
drm/i915: Add get_eld audio component
2015-12-10 13:39:27 +01:00
i915_drm.h
drm: avoid "possible bad bitmask?" warning
2016-08-09 22:18:26 +02:00
i915_pciids.h
drm/i915: Remove .is_mobile field from platform struct
2016-09-07 16:07:07 -07:00
intel-gtt.h
drm/i915: Add support for mapping an object page by page
2016-06-13 10:03:54 +01:00