Maarten Lankhorst
2d705c0b36
drm/atomic: Use new iterator macros in drm_atomic_helper_wait_for_flip_done
...
for_each_obj_in_state is about to be removed, so use the correct new
iterator macro.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Jani Nikula <jani.nikula@linux.intel.com >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: David Airlie <airlied@linux.ie >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-5-maarten.lankhorst@linux.intel.com
[mlankhorst: Based on danvet's feedback, only apply first hunk and rename crtc_state variable to unused]
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:46:37 +02:00
Maarten Lankhorst
dfb8bb3bd4
drm/atomic: Use the new helpers in drm_atomic_helper_disable_all()
...
for_each_obj_in_state will be removed, so don't use it here.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Jani Nikula <jani.nikula@linux.intel.com >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: David Airlie <airlied@linux.ie >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-4-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:59 +02:00
Maarten Lankhorst
0c3eb12324
drm/atomic: Use the correct iterator macro in atomic_remove_fb
...
for_each_obj_in_state will be removed, so use the new state here.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Jani Nikula <jani.nikula@linux.intel.com >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: David Airlie <airlied@linux.ie >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-3-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:58 +02:00
Maarten Lankhorst
765831dc27
drm/simple-kms-helper: Fix the check for the mismatch between plane and CRTC enabled.
...
You can enable the CRTC and without adding the plane to the state and
it will succeed. This should be prevented in the crtc check instead of
the plane check, because the plane check may never run for atomic
enable, but the crtc check always will.
This is based on a similar check in vmwgfx.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Jani Nikula <jani.nikula@linux.intel.com >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: David Airlie <airlied@linux.ie >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-2-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:51 +02:00
Alexandru Moise
371c2279aa
drm: inhibit drm drivers register to uninitialized drm core
...
If the DRM core fails to init for whatever reason, ensure that
no driver ever calls drm_dev_register().
This is best done at drm_dev_init() as it covers drivers that call
drm_dev_alloc() as well as drivers that prefer to embed struct
drm_device into their own device struct and call drm_dev_init()
themselves.
In my case I had so many dynamic device majors used that the major
number for DRM (226) was stolen, causing DRM core init to fail after
failing to register a chrdev, and ultimately calling debugfs_remove()
on drm_debugfs_root in drm_core_exit().
After drm core failed to init, VGEM was still calling drm_dev_register(),
ultimately leading to drm_debugfs_init(), with drm_debugfs_root passed
as the root for the new debugfs dir at debugfs_create_dir().
This led to a kernel panic once we were either derefencing root->d_inode
while it was NULL or calling root->d_inode->i_op->lookup() while it was
NULL in debugfs at inode_lock() or lookup_*().
Signed-off-by: Alexandru Moise <00moses.alexander00@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170708214352.GA27205@gmail.com
2017-07-11 12:03:11 +02:00
Inki Dae
f74c527591
drm/bridge: ti-tfp410: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-12-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:46 +05:30
Inki Dae
dc01732eee
drm/bridge: tc358767: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-11-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:37 +05:30
Inki Dae
b678682e84
drm/bridge: synopsys: dw-hdmi: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-10-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:32 +05:30
Inki Dae
d341a640db
drm/bridge: sii902x: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-9-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:29 +05:30
Inki Dae
d0ceb3ec4a
drm/bridge: ps8622: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-8-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:27 +05:30
Inki Dae
3a45d25dcf
drm/bridge: panel: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-7-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:24 +05:30
Inki Dae
830dcb4451
drm/bridge: nxp-ptn3460: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-6-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:19 +05:30
Inki Dae
47e3427854
drm/bridge: vga-dac: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-5-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:15 +05:30
Inki Dae
dd2adf743b
drm/bridge: analogix-anx78xx: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-4-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:06 +05:30
Inki Dae
9a120848d5
drm/bridge: adv7511: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-3-git-send-email-inki.dae@samsung.com
2017-07-06 14:15:55 +05:30
Peter Rosin
08c992c55d
drm/fb-helper: remove drm_fb_helper_save_lut_atomic
...
drm_fb_helper_save_lut_atomic is redundant since the .gamma_store is
now always kept up to date by drm_fb_helper_setcmap.
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-4-git-send-email-peda@axentia.se
2017-07-06 10:36:22 +02:00
Peter Rosin
a3562a0e47
drm/fb-helper: keep the .gamma_store updated in drm_fb_helper_setcmap
...
I think the gamma_store can end up invalid on error. But the way I read
it, that can happen in drm_mode_gamma_set_ioctl as well, so why should
this pesky legacy fbdev stuff be any better?
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-3-git-send-email-peda@axentia.se
2017-07-06 10:36:17 +02:00
Peter Rosin
b8e2b0199c
drm/fb-helper: factor out pseudo-palette
...
The pseudo-palette has nothing to do with the crtc, so move it
out of the crtc loop and update the palette once, then break out
early.
Signed-off-by: Peter Rosin <peda@axenita.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-2-git-send-email-peda@axentia.se
2017-07-06 10:36:11 +02:00
Daniel Vetter
6b7dc6e9f8
drm/fb-helper: Split dpms handling into legacy and atomic paths
...
Like with panning and modesetting, and like with those, stick with
simple drm_modeset_locking_all for the legacy path, and the full
atomic dance for atomic drivers.
This means a bit more boilerplate since setting up the atomic state
machinery is rather verbose, but then this is shared code for 30+
drivers or so, so meh.
After this patch there's only the LUT/cmap path which is still using
drm_modeset_lock_all for an atomic driver. But Peter is already
locking into reworking that, so I'll leave that code as-is for now.
v2: Squash in patches from Maarten to unify all the various atomic
paths into just one atomic update function for fbdev overall. On top
do one s/restore_fbdev_mode/restore_fbdev_mode_atomic/ so that we have
all-atomic callchains after the first check.
Cc: Peter Rosin <peda@axentia.se >
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-10-daniel.vetter@ffwll.ch
2017-07-06 10:02:12 +02:00
Daniel Vetter
e13a058310
drm/fb-helper: Stop using mode_config.mutex for internals
...
Those are now all protected using fb_helper->lock.
v2: We still need to hold mode_config.mutex right around calling
connector->fill_modes.
v3: I forgot to hold mode_config.mutex while looking at
connector->status and the mode list. Also, we need to patch up the
i915 ->initial_config callback to grab the locks it needs to inspect
the modeset state recovered from the fw.
v4: Don't reorder the probe too much (Ville).
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170705045629.31265-1-daniel.vetter@ffwll.ch
2017-07-06 10:02:01 +02:00
Daniel Vetter
1d0c641091
drm/fb-helper: Push locking into restore_fbdev_mode_atomic|legacy
...
Same game as with the panning function, use drm_modeset_lock_all for
legacy paths, and a proper acquire ctx w/w mutex dance for atomic.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-8-daniel.vetter@ffwll.ch
2017-07-06 10:01:47 +02:00
Daniel Vetter
5c2e3448d1
drm/fb-helper: Push locking into pan_display_atomic|legacy
...
For the legacy path we'll keep drm_modeset_lock_all, for the atomic
one we drop the use of the magic implicit context and wire it up
properly.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-7-daniel.vetter@ffwll.ch
2017-07-06 10:01:35 +02:00
Daniel Vetter
235d3e4fa1
drm/fb-helper: Drop locking from the vsync wait ioctl code
...
Like with the drm-native vblank wait ioctl we can entirely rely on the
spinlocks in drm_vblank.c, no need at all to take expensive mutexes.
The only reason we had to take mode_config.mutex was to protect the
fbdev helper's data-structures, but that's now done by
fb_helper->lock.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-6-daniel.vetter@ffwll.ch
2017-07-06 10:01:19 +02:00
Daniel Vetter
bdac4a052a
drm/fb-helper: Push locking in fb_is_bound
...
That function only needs to take the individual crtc locks, not all
the kms locks. Push down the locking and then minimize it.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-5-daniel.vetter@ffwll.ch
2017-07-06 10:00:55 +02:00
Thierry Reding
e9827d8ea2
drm/fb-helper: Add top-level lock
...
Introduce a new top-level lock for the FB helper code. This will allow
better locking granularity and avoid the need to abuse modeset locking
for this purpose instead.
This patch just adds the new lock everywhere we currently grab
mode_config->mutex (explicitly, or through drm_modeset_lock_all).
Follow-up patches will push the kms locking down into only the places
that need it.
v2:
- use lockdep_assert_held
- use drm_fb_helper_for_each_connector where possible
- use the new top-level lock consistently, i.e. in all the places
we're currently acquiring mode_config.mutex.
- small polish to the kerneldoc
Tested-by: John Stultz <john.stultz@linaro.org >
Signed-off-by: Thierry Reding <treding@nvidia.com > (v1)
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-4-daniel.vetter@ffwll.ch
2017-07-06 10:00:42 +02:00
Daniel Vetter
666b7cdc69
drm/i915: Drop FBDEV #ifdev in mst code
...
Since
commit a03fdcb186
Author: Archit Taneja <architt@codeaurora.org >
Date: Wed Aug 5 12:28:57 2015 +0530
drm: Add top level Kconfig option for DRM fbdev emulation
this is properly handled using dummy functions. This essentially
undoes
commit 7296c849bf
Author: Chris Wilson <chris@chris-wilson.co.uk >
Date: Tue Jul 22 20:10:28 2014 +1000
drm/i915: fix build without fbde
v2: We also need to drop the #ifdef from headers. Seems like a small
price to pay for slightly cleaner code.
Cc: Chris Wilson <chris@chris-wilson.co.uk >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-3-daniel.vetter@ffwll.ch
2017-07-06 10:00:33 +02:00
Thierry Reding
af2405af07
drm/fb-helper: Push down modeset lock into FB helpers
...
Move the modeset locking from drivers into FB helpers.
v2: Also handle intel_connector_add_to_fbdev.
v3: Prevent race in intel_dp_mst with ->detect (Maarten)
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Alex Deucher <alexander.deucher@amd.com >
Cc: Christian König <christian.koenig@amd.com >
Tested-by: John Stultz <john.stultz@linaro.org >
Signed-off-by: Thierry Reding <treding@nvidia.com > (v1)
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-2-daniel.vetter@ffwll.ch
2017-07-06 10:00:22 +02:00
Chris Wilson
e6090cc9be
drm: Remove pending_read_domains and pending_write_domain
...
The last user of these (i915.ko) no longer does. We can slim down the
core GEM object by removing the unused 8 bytes.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170705154900.28697-1-chris@chris-wilson.co.uk
2017-07-05 22:18:07 +02:00
Daniel Vetter
8c3a8181a4
drm/atomic-helper: Realign function parameters
...
Too jarring.
Fixes: f869a6ecf2 ("drm/atomic: Add target_vblank support in atomic helpers (v2)")
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com >
Cc: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Harry Wentland <harry.wentland@amd.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170627145936.18983-14-daniel.vetter@ffwll.ch
2017-07-04 17:16:00 +02:00
Maarten Lankhorst
7114d2e22f
drm/fb-helper: Remove drm_mode_config_fb.
...
Remove drm_mode_config_fb, I don't see the point of it.
To make it clear that it's ok to use plane->fb directly,
move up drm_drv_uses_atomic_modeset so the code is skipped for atomic
drivers that require plane_state->fb.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170703115106.18783-1-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-04 09:49:15 +02:00
Mark Cave-Ayland
931e8c661a
drm/bochs: switch fb_ops over to use drm_fb_helper_cfb helpers
...
The current drm_fb_helper_sys helpers referenced in fb_ops assume that the
video memory is in system RAM. This is not the case for sparc which uses direct
physical memory accesses for IO memory and causes the bochs_drm module to panic
immediately upon startup as it tries to initialise the framebuffer.
Switching fb_ops over to use the drm_fb_helper_cfb helpers ensures that the
correct accesses are used on sparc, fixing the panic and allowing the
bochs_drm module to function under qemu-system-sparc64.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Link: http://patchwork.freedesktop.org/patch/msgid/1499032363-8290-1-git-send-email-mark.cave-ayland@ilande.co.uk
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
9e2033a6bb
drm: qxl: constify ttm_place structures.
...
ttm_place are not supposed to change at runtime. All functions
working with ttm_place provided by <drm/ttm/ttm_placement.h> work
with const ttm_place. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
3485 184 264 3933 f5d drivers/gpu/drm/qxl/qxl_ttm.o
File size After adding 'const':
text data bss dec hex filename
3501 152 264 3917 f4d drivers/gpu/drm/qxl/qxl_ttm.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/a4f21d3bd2497129f084b8055ecf27f0d3ff1bba.1499013516.git.arvind.yadav.cs@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
05ccf211ef
drm: ttm: virtio-gpu: dma-buf: Constify ttm_place structures.
...
ttm_place are not supposed to change at runtime. All functions
working with ttm_place provided by <drm/ttm/ttm_placement.h> work
with const ttm_place. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
2315 184 0 2499 9c3 drivers/gpu/drm/virtio/virtgpu_ttm.o
File size After adding 'const':
text data bss dec hex filename
2347 152 0 2499 9c3 drivers/gpu/drm/virtio/virtgpu_ttm.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/25a189402a516a0142d9a4412da0a597c660a96a.1498981093.git.arvind.yadav.cs@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
7b4e1eaa9d
drm/udl: dma-buf: Constify dma_buf_ops structures.
...
dma_buf_ops are not supposed to change at runtime. All functions
working with dma_buf_ops provided by <linux/dma-buf.h> work with
const dma_buf_ops. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
2002 112 0 2114 842 drivers/gpu/drm/udl/udl_dmabuf.o
File size After adding 'const':
text data bss dec hex filename
2114 0 0 2114 842 drivers/gpu/drm/udl/udl_dmabuf.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/cb4dfac90e85e2270779331f8cb10b635042bad7.1498912415.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:47 +02:00
Arvind Yadav
8a63ca58f8
drm: armada: Constify drm_prop_enum_list structures.
...
drm_prop_enum_lists are not supposed to change at runtime. All functions
working with drm_prop_enum_list provided by <drm/drm_property.h> work
with
const drm_prop_enum_list. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
3594 176 0 3770 eba drivers/gpu/drm/armada/armada_overlay.o
File size After adding 'const':
text data bss dec hex filename
3722 48 0 3770 eba drivers/gpu/drm/armada/armada_overlay.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/dbeb176765bda8eaa9efdaa2dcd14c7bbae39cfa.1498905467.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:43 +02:00
Arvind Yadav
aaaf2f1299
drm: armada: constify drm_prop_enum_list structures.
...
drm_prop_enum_lists are not supposed to change at runtime. All functions
working with drm_prop_enum_list provided by <drm/drm_property.h> work
with
const drm_prop_enum_list. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
9629 744 0 10373 2885 drivers/gpu/drm/armada/armada_crtc.o
File size After adding 'const':
text data bss dec hex filename
9757 616 0 10373 2885 drivers/gpu/drm/armada/armada_crtc.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/d2344c4dc40238cfe48fa6d917767df0f053150a.1498902844.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:38 +02:00
Gustavo Padovan
fef9df8b59
drm/atomic: initial support for asynchronous plane update
...
In some cases, like cursor updates, it is interesting to update the
plane in an asynchronous fashion to avoid big delays. The current queued
update could be still waiting for a fence to signal and thus block any
subsequent update until its scan out. In cases like this if we update the
cursor synchronously through the atomic API it will cause significant
delays that would even be noticed by the final user.
This patch creates a fast path to jump ahead the current queued state and
do single planes updates without going through all atomic steps in
drm_atomic_helper_commit(). We take this path for legacy cursor updates.
For now only single plane updates are supported, but we plan to support
multiple planes updates and async PageFlips through this interface as well
in the near future.
v6: - move check code to drm_atomic_helper.c (Daniel Vetter)
v5:
- improve comments (Eric Anholt)
v4:
- fix state->crtc NULL check (Archit Taneja)
v3:
- fix iteration on the wrong crtc state
- put back code to forbid updates if there is a queued update for
the same plane (Ville Syrjälä)
- move size checks back to drivers (Ville Syrjälä)
- move ASYNC_UPDATE flag addition to its own patch (Ville Syrjälä)
v2:
- allow updates even if there is a queued update for the same
plane.
- fixes on the documentation (Emil Velikov)
- unconditionally call ->atomic_async_update (Emil Velikov)
- check for ->atomic_async_update earlier (Daniel Vetter)
- make ->atomic_async_check() the last step (Daniel Vetter)
- add ASYNC_UPDATE flag (Eric Anholt)
- update state in core after ->atomic_async_update (Eric Anholt)
- update docs (Eric Anholt)
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Rob Clark <robdclark@gmail.com >
Cc: Eric Anholt <eric@anholt.net >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org > (v5)
Acked-by: Eric Anholt <eric@anholt.net > (v5)
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170630180322.29007-2-gustavo@padovan.org
2017-07-03 10:04:44 +02:00
Daniel Vetter
d48cb5f541
drm/atomic: Drop helper include from drm_atomic.c
...
Core code should never have to look at helper stuff, to make sure that
all helper code is 100% optional and can be overriden.
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170630073921.2345-1-daniel.vetter@ffwll.ch
2017-06-30 15:35:20 +02:00
Laurent Pinchart
64581714b5
drm: Convert atomic drivers from CRTC .disable() to .atomic_disable()
...
The CRTC .disable() helper operation is deprecated for atomic drivers,
the new .atomic_disable() helper operation being preferred. Convert all
atomic drivers to .atomic_disable() to avoid cargo-cult use of
.disable() in new drivers.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com > # for sun4i
Acked-by: Philipp Zabel <p.zabel@pengutronix.de > # for mediatek
Acked-by: Alexey Brodkin <abrodkin@synopsys.com > # for arcpgu
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com > # for atmel-hlcdc
Tested-by: Philippe Cornu <philippe.cornu@st.com > # for stm
Acked-by: Philippe Cornu <philippe.cornu@st.com > # for stm
Acked-by: Vincent Abriou <vincent.abriou@st.com > # for sti
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com > # for vmwgfx
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170630093646.7928-3-laurent.pinchart+renesas@ideasonboard.com
2017-06-30 14:53:15 +02:00
Laurent Pinchart
0b20a0f8c3
drm: Add old state pointer to CRTC .enable() helper function
...
The old state is useful for drivers that need to perform operations at
enable time that depend on the transition between the old and new
states.
While at it, rename the operation to .atomic_enable() to be consistent
with .atomic_disable(), as the .enable() operation is used by atomic
helpers only.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com > # for sun4i
Acked-by: Philipp Zabel <p.zabel@pengutronix.de > # for imx-drm and mediatek
Acked-by: Alexey Brodkin <abrodkin@synopsys.com > # for arcpgu
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com > # for atmel-hlcdc
Acked-by: Liviu Dudau <Liviu.Dudau@arm.com > # for hdlcd and mali-dp
Acked-by: Stefan Agner <stefan@agner.ch > # for fsl-dcu
Tested-by: Philippe Cornu <philippe.cornu@st.com > # for stm
Acked-by: Philippe Cornu <philippe.cornu@st.com > # for stm
Acked-by: Vincent Abriou <vincent.abriou@st.com > # for sti
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com > # for vmwgfx
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170630093646.7928-2-laurent.pinchart+renesas@ideasonboard.com
2017-06-30 14:53:14 +02:00
Chris Wilson
f1e8c67123
dma-buf/sw-sync: Use an rbtree to sort fences in the timeline
...
Reduce the list iteration when incrementing the timeline by storing the
fences in increasing order.
v2: Prevent spinlock recursion on free during create
v3: Fixup rebase conflict inside comments that escaped the compiler.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629211253.22766-1-chris@chris-wilson.co.uk
2017-06-29 18:54:07 -03:00
Chris Wilson
d3862e44da
dma-buf/sw-sync: Fix locking around sync_timeline lists
...
The sync_pt were not adding themselves atomically to the timeline lists,
corruption imminent. Only a single list is required to track the
unsignaled sync_pt, so reduce it and rename the lock more appropriately
along with using idiomatic names to distinguish a list from links along
it.
v2: Prevent spinlock recursion on free during create (next patch) and
fixup crossref in kerneldoc
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629210532.5617-1-chris@chris-wilson.co.uk
2017-06-29 18:53:47 -03:00
Chris Wilson
3b52ce44e7
dma-buf/sw-sync: sync_pt is private and of fixed size
...
Since sync_pt is only allocated from a single location and is no longer
the base class for fences (that is struct dma_fence) it no longer needs
a generic unsized allocator.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629125930.821-5-chris@chris-wilson.co.uk
2017-06-29 18:52:34 -03:00
Chris Wilson
a6aa8fca4d
dma-buf/sw-sync: Reduce irqsave/irqrestore from known context
...
If we know the context under which we are called, then we can use the
simpler form of spin_lock_irq (saving the save/restore).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629125930.821-4-chris@chris-wilson.co.uk
2017-06-29 18:52:19 -03:00
Chris Wilson
8f66d3aa17
dma-buf/sw-sync: Prevent user overflow on timeline advance
...
The timeline is u32, which limits any single advance to INT_MAX so that
we can detect all fences that need signaling.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629125930.821-3-chris@chris-wilson.co.uk
2017-06-29 18:52:05 -03:00
Chris Wilson
61894b0271
dma-buf/sw-sync: Fix the is-signaled test to handle u32 wraparound
...
Use the canonical __dma_fence_is_later() to compare the fence seqno
against the timeline seqno to check if the fence is signaled.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629125930.821-2-chris@chris-wilson.co.uk
2017-06-29 18:51:49 -03:00
Chris Wilson
8111477663
dma-buf/dma-fence: Extract __dma_fence_is_later()
...
Often we have the task of comparing two seqno known to be on the same
context, so provide a common __dma_fence_is_later().
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Sumit Semwal <sumit.semwal@linaro.org >
Cc: Sean Paul <seanpaul@chromium.org >
Cc: Gustavo Padovan <gustavo@padovan.org >
Reviewed-by: Sean Paul <seanpaul@chromium.org >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170629125930.821-1-chris@chris-wilson.co.uk
2017-06-29 18:51:07 -03:00
Dan Carpenter
faa8b0b753
drm/gma500: remove an unneeded NULL check
...
"connector" is the list iterator and it can't be NULL. It causes a
static checker warning because we dereference the iterator to get the
next item in the list. Let's remove this check.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170628124100.3pw2gyitsfopaib5@mwanda
2017-06-28 19:17:38 +02:00
Laurent Pinchart
4177b51e19
drm: vmwgfx: Replace CRTC .commit() helper operation with .enable()
...
The CRTC helper .commit() operation is legacy code, the atomic helpers
prefer the .enable() operation. Replace the .commit() helper operation
with .enable() in the driver.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170627211621.27767-6-laurent.pinchart+renesas@ideasonboard.com
2017-06-28 12:51:13 +02:00
Laurent Pinchart
4e004f644b
drm: vmwgfx: Remove unneeded CRTC .prepare() helper operation
...
The CRTC .prepare() helper operation is part of the legacy helpers and
is deprecated in favour of the .disable() helper operation. As the
vmwgfx driver provides a .disable() helper operation, and as the
.prepare() helper operation implementation is empty, we can remove it.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170627211621.27767-5-laurent.pinchart+renesas@ideasonboard.com
2017-06-28 12:51:13 +02:00