Dave Airlie
c62098c991
Merge tag 'drm-misc-fixes-2020-04-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
...
A few resources-related fixes for qxl, some doc build warnings and ioctl
fixes for dma-buf, an off-by-one fix in edid, and a return code fix in
DP-MST
Signed-off-by: Dave Airlie <airlied@redhat.com >
From: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/20200430153201.wx6of2b2gsoip7bk@gilmour.lan
2020-05-01 10:42:09 +10:00
Gurchetan Singh
45c5d2a4f3
drm/virtio: only destroy created contexts
...
This can happen if userspace doesn't issue any 3D ioctls before
closing the DRM fd.
Fixes: 72b48ae800
("drm/virtio: enqueue virtio_gpu_create_context after the first 3D ioctl")
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200408232938.55816-1-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-04-28 11:22:23 +02:00
Stephen Rothwell
5038a56790
drm/virtio: fix up for include file changes
...
virtgpu_kms now uses VIRTIO_RING_F_INDIRECT_DESC, so it must
include virtio_ring.h directly.
Fixes: 5edbb56082
("drm/virtio: fix ring free check")
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au >
Link: https://lore.kernel.org/r/20200407130542.0e3b5d9d@canb.auug.org.au
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2020-04-17 06:05:29 -04:00
Michael S. Tsirkin
6bbc2b6303
virtgpu: pull in uaccess.h
...
In preparation to virtio header changes, include uaccess.h directly as
this file is using copy to/from user.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2020-04-17 06:05:29 -04:00
Jiri Slaby
b513b0d456
drm/virtio: fix OOB in virtio_gpu_object_create
...
After commit f651c8b055
("drm/virtio: factor out the sg_table from
virtio_gpu_object"), virtio_gpu_create_object allocates too small space
to fit everything in. It is because it allocates struct
virtio_gpu_object, but should allocate a newly added struct
virtio_gpu_object_shmem which has 2 more members.
So fix that by using correct type in virtio_gpu_create_object.
Signed-off-by: Jiri Slaby <jslaby@suse.cz >
Link: http://patchwork.freedesktop.org/patch/msgid/20200319100421.16267-1-jslaby@suse.cz
Fixes: f651c8b055
("drm/virtio: factor out the sg_table from virtio_gpu_object")
Cc: Gurchetan Singh <gurchetansingh@chromium.org >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
(cherry picked from commit 0666a8d7f6
)
2020-04-06 15:10:37 +02:00
Gurchetan Singh
c76d4ab764
drm/virtio: make virtio_gpu_object_attach void
...
It always returns zero.
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200401223039.2860-4-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-04-03 12:01:37 +02:00
Gurchetan Singh
6457a0df4d
drm/virtio: delete notify in virtio_gpu_object_create
...
For 3D buffers, virtio_gpu_gem_object_open notifies.
We can have the same behavior for dumb buffer.
v2: virtio_gpu_gem_object_open always notifies
v3: avoid boolean variable
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200401223039.2860-3-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-04-03 12:01:37 +02:00
Gurchetan Singh
6eefb4bb93
drm/virtio: delete notify after virtio_gpu_cmd_context_create
...
The first 3D ioctl will take care of notification.
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200401223039.2860-2-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-04-03 12:01:37 +02:00
Gurchetan Singh
d60138530a
drm/virtio: random virtgpu_drv.h cleanups
...
- Static-ify virtio_gpu_gem_create
- Delete unused prototypes
- Point to current implementation files
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200401223039.2860-1-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-04-03 12:01:36 +02:00
Thomas Zimmermann
35b9df3cde
drm/virtgpu: Use simple encoder
...
The virtgpu driver uses an empty implementation for its encoder. Replace
the code with the generic simple encoder.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20200305155950.2705-20-tzimmermann@suse.de
2020-04-02 14:16:46 +02:00
Jiri Slaby
0666a8d7f6
drm/virtio: fix OOB in virtio_gpu_object_create
...
After commit f651c8b055
("drm/virtio: factor out the sg_table from
virtio_gpu_object"), virtio_gpu_create_object allocates too small space
to fit everything in. It is because it allocates struct
virtio_gpu_object, but should allocate a newly added struct
virtio_gpu_object_shmem which has 2 more members.
So fix that by using correct type in virtio_gpu_create_object.
Signed-off-by: Jiri Slaby <jslaby@suse.cz >
Link: http://patchwork.freedesktop.org/patch/msgid/20200319100421.16267-1-jslaby@suse.cz
Fixes: f651c8b055
("drm/virtio: factor out the sg_table from virtio_gpu_object")
Cc: Gurchetan Singh <gurchetansingh@chromium.org >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-03-19 12:00:24 +01:00
Wambui Karuga
7ce84471e3
drm: convert .debugfs_init() hook to return void.
...
As a result of commit 987d65d013
(drm: debugfs: make
drm_debugfs_create_files() never fail) and changes to various debugfs
functions in drm/core and across various drivers, there is no need for
the drm_driver.debugfs_init() hook to have a return value. Therefore,
declare it as void.
This also includes refactoring all users of the .debugfs_init() hook to
return void across the subsystem.
v2: include changes to the hook and drivers that use it in one patch to
prevent driver breakage and enable individual successful compilation of
this change.
References: https://lists.freedesktop.org/archives/dri-devel/2020-February/257183.html
Signed-off-by: Wambui Karuga <wambui.karugax@gmail.com >
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20200310133121.27913-18-wambui.karugax@gmail.com
2020-03-18 17:53:28 +01:00
Dave Airlie
9e12da086e
Merge tag 'drm-misc-next-2020-03-09' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
...
drm-misc-next for 5.7:
UAPI Changes:
Cross-subsystem Changes:
Core Changes:
Driver Changes:
- fb-helper: Remove drm_fb_helper_{add,add_all,remove}_one_connector
- fbdev: some cleanups and dead-code removal
- Conversions to simple-encoder
- zero-length array removal
- Panel: panel-dpi support in panel-simple, Novatek NT35510, Elida
KD35T133,
Signed-off-by: Dave Airlie <airlied@redhat.com >
From: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/20200309135439.dicfnbo4ikj4tkz7@gilmour
2020-03-12 12:42:56 +10:00
Dave Airlie
d3bd37f587
Merge v5.6-rc5 into drm-next
...
Requested my mripard for some misc patches that need this as a base.
Signed-off-by: Dave Airlie <airlied@redhat.com >
2020-03-11 07:27:21 +10:00
Gurchetan Singh
bc1a4130fc
drm/virtio: add case for shmem objects in virtio_gpu_cleanup_object(..)
...
This function can be reused for hostmem objects.
v2: move virtio_gpu_is_shmem() check to virtio_gpu_cleanup_object()
v3: use-after free fix
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200305013212.130640-2-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-03-09 10:44:34 +01:00
Gurchetan Singh
f651c8b055
drm/virtio: factor out the sg_table from virtio_gpu_object
...
A resource will be a shmem based resource or a (planned)
vram based resource, so it makes sense to factor out common fields
(resource handle, dumb).
v2: move mapped field to shmem object
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200305013212.130640-1-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-03-09 10:44:34 +01:00
Gerd Hoffmann
6be7e07335
drm/virtio: fix mmap page attributes
...
virtio-gpu uses cached mappings, set
drm_gem_shmem_object.map_cached accordingly.
Cc: stable@vger.kernel.org
Fixes: c66df701e7
("drm/virtio: switch from ttm to gem shmem helpers")
Reported-by: Gurchetan Singh <gurchetansingh@chromium.org >
Reported-by: Guillaume Gardet <Guillaume.Gardet@arm.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Tested-by: Guillaume Gardet <Guillaume.Gardet@arm.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200226154752.24328-3-kraxel@redhat.com
2020-02-27 13:54:39 +01:00
Gurchetan Singh
18b39fb975
drm/virtio: add virtio_gpu_is_shmem helper
...
The plan is use have both shmem and virtual "vram" running
side-by-side in virtio-gpu. It looks like we'll eventually use
struct drm_gem_object as a base class, and we'll need to convert
to shmem and vram objects on the fly. As a first step, add a
virtio_gpu_is_shmem helper. Thanks to kraxel for suggesting this
approach on Gitlab.
Suggested-by: Gerd Hoffman <kraxel@redhat.com >
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200227002601.745-3-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-27 11:31:34 +01:00
Gurchetan Singh
068a8fea37
drm/virtio: make mmap callback consistent with callbacks
...
This is a very, very minor cleanup.
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200227002601.745-2-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-27 11:31:34 +01:00
Gurchetan Singh
72b48ae800
drm/virtio: enqueue virtio_gpu_create_context after the first 3D ioctl
...
For old userspace, initialization will still be implicit.
For backwards compatibility, enqueue virtio_gpu_cmd_context_create after
the first 3D ioctl.
v3: staticify virtio_gpu_create_context
remove notify to batch vm-exit
v6: Remove nested 3D checks (emil.velikov):
- unify 3D check in resource create
v7: Remove check when getting capabilities
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Emil Velikov <emil.velikov@collabora.com >
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200225000800.2966-4-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-25 09:48:42 +01:00
Gurchetan Singh
d2a983b220
drm/virtio: track whether or not a context has been initiated
...
Use an boolean variable to track whether a context has been
initiated.
v5: Fix possible race and sleep via mutex (olv)
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Emil Velikov <emil.velikov@collabora.com >
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200225000800.2966-3-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-25 09:48:42 +01:00
Gurchetan Singh
40cadedd20
drm/virtio: factor out context create hypercall
...
We currently create an OpenGL context when opening the DRM fd
if 3D is available.
We may need other context types (VK,..) in the future, and the plan
is to have explicit initialization for that.
For explicit initialization to work, we need to factor out
virtio_gpu_create_context from driver initialization.
v2: Move context handle initialization too (olv)
v6: Remove redundant 3D check (emil.velikov)
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Emil Velikov <emil.velikov@collabora.com >
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200225000800.2966-2-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-25 09:48:41 +01:00
Gurchetan Singh
30349f8f64
drm/virtio: use consistent names for drm_files
...
Minor cleanup, change:
- file_priv--> file,
- drm_file --> file.
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Emil Velikov <emil.velikov@collabora.com >
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200225000800.2966-1-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-25 09:48:41 +01:00
John Bates
fbb30168c7
drm/virtio: fix resource id creation race
...
The previous code was not thread safe and caused
undefined behavior from spurious duplicate resource IDs.
In this patch, an atomic_t is used instead. We no longer
see any duplicate IDs in tests with this change.
Fixes: 16065fcdd1
("drm/virtio: do NOT reuse resource ids")
Signed-off-by: John Bates <jbates@chromium.org >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200220225319.45621-1-jbates@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-24 15:45:34 +01:00
Gerd Hoffmann
97452907ec
drm/virtio: move remaining virtio_gpu_notify calls
...
Move all remaining virtio_gpu_notify() calls from virtio_gpu_cmd_*
to the callers, for consistency reasons.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-7-kraxel@redhat.com
2020-02-17 14:50:50 +01:00
Gerd Hoffmann
234489ea55
drm/virtio: batch display query
...
Move virtio_gpu_notify() to higher-level functions for
virtio_gpu_cmd_get_display_info() and virtio_gpu_cmd_get_edids().
virtio_gpu_config_changed_work_func() and virtio_gpu_init() will
batch commands and notify only once per update
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-6-kraxel@redhat.com
2020-02-17 14:50:49 +01:00
Gerd Hoffmann
2e819a119d
drm/virtio: batch resource creation
...
Move virtio_gpu_notify() to higher-level functions for
virtio_gpu_cmd_create_resource(), virtio_gpu_cmd_resource_create_3d()
and virtio_gpu_cmd_resource_attach_backing().
virtio_gpu_object_create() will batch commands and notify only once when
creating a resource.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-5-kraxel@redhat.com
2020-02-17 14:50:49 +01:00
Gerd Hoffmann
790bcd7914
drm/virtio: batch plane updates (pageflip)
...
Move virtio_gpu_notify() to higher-level functions for
virtio_gpu_cmd_resource_flush(), virtio_gpu_cmd_set_scanout() and
virtio_gpu_cmd_transfer_to_host_{2d,3d}().
virtio_gpu_primary_plane_update() will notify only once for a series
of commands (restores plane update command batching).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-4-kraxel@redhat.com
2020-02-17 14:50:49 +01:00
Gerd Hoffmann
fcdd19b85c
drm/virtio: notify before waiting
...
Before we are going to wait for virtqueue entries becoming available
call virtio_gpu_notify() to make sure the host has seen everything
we've submitted.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-3-kraxel@redhat.com
2020-02-17 14:50:49 +01:00
Gerd Hoffmann
cca41da100
drm/virtio: rework notification for better batching
...
Drop the virtio_gpu_{disable,enable}_notify(). Add a new
virtio_gpu_notify() call instead, which must be called whenever
the driver wants make sure the host is notified needed.
Drop automatic notification from command submission. Add
virtio_gpu_notify() calls after each command query instead.
This allows more fine-grained control over host notification
and can move around the notify calls in subsequent patches to
batch command submissions. With this in place it is also
possible to make notification optional for userspace ioctls.
Page flip batching goes away (temporarely).
v3:
- move batching to separate patches.
v2:
- rebase to latest drm-misc-next.
- use "if (!atomic_read())".
- add review & test tags.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214125535.26349-2-kraxel@redhat.com
2020-02-17 14:50:48 +01:00
Gerd Hoffmann
2c77ae22ff
drm/virtio: fix error check
...
The >= compare op must happen in cpu byte order, doing it in
little endian fails on big endian machines like s390.
Reported-by: Sebastian Mitterle <smitterl@redhat.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Cornelia Huck <cohuck@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200214080100.1273-1-kraxel@redhat.com
2020-02-14 10:24:47 +01:00
Gerd Hoffmann
5cfd31c5b3
drm/virtio: fix virtio_gpu_cursor_plane_update().
...
Add missing virtio_gpu_array_lock_resv() call.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200211135047.22261-3-kraxel@redhat.com
2020-02-13 11:11:59 +01:00
Gerd Hoffmann
d822ccae8e
drm/virtio: fix virtio_gpu_execbuffer_ioctl locking
...
Lockdep says we can't call vmemdup() while having objects reserved
because it needs the mmap semaphore. So reorder the calls reserve
the objects later.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200211135047.22261-2-kraxel@redhat.com
2020-02-13 11:11:59 +01:00
Gerd Hoffmann
b1df3a2b24
drm/virtio: add drm_driver.release callback.
...
Split virtio_gpu_deinit(), move the drm shutdown and release to
virtio_gpu_release(). Drop vqs_ready variable, instead use
drm_dev_{enter,exit,unplug} to avoid touching hardware after
device removal. Tidy up here and there.
v4: add changelog.
v3: use drm_dev_*().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20200211135805.24436-1-kraxel@redhat.com
2020-02-12 10:24:08 +01:00
Gerd Hoffmann
2f2aa13724
drm/virtio: move virtio_gpu_mem_entry initialization to new function
...
Introduce new virtio_gpu_object_shmem_init() helper function which will
create the virtio_gpu_mem_entry array, containing the backing storage
information for the host. For the most path this just moves code from
virtio_gpu_object_attach().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200207074638.26386-5-kraxel@redhat.com
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
2020-02-10 12:54:33 +01:00
Gerd Hoffmann
2fe4ca9d0e
drm/virtio: move mapping teardown to virtio_gpu_cleanup_object()
...
Stop sending DETACH_BACKING commands, that will happening anyway when
releasing resources via UNREF. Handle guest-side cleanup in
virtio_gpu_cleanup_object(), called when the host finished processing
the UNREF command.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200207074638.26386-4-kraxel@redhat.com
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
2020-02-10 12:54:33 +01:00
Gerd Hoffmann
1ed5f698ad
drm/virtio: resource teardown tweaks
...
Add new virtio_gpu_cleanup_object() helper function for object cleanup.
Wire up callback function for resource unref, do cleanup from callback
when we know the host stopped using the resource.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200207074638.26386-3-kraxel@redhat.com
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
2020-02-10 12:54:33 +01:00
Gerd Hoffmann
8235eab012
drm/virtio: simplify virtio_gpu_alloc_cmd
...
Just call virtio_gpu_alloc_cmd_resp with some fixed args
instead of duplicating most of the function body.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200207074638.26386-2-kraxel@redhat.com
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
2020-02-10 12:54:32 +01:00
Gerd Hoffmann
5edbb56082
drm/virtio: fix ring free check
...
If the virtio device supports indirect ring descriptors we need only one
ring entry for the whole command. Take that into account when checking
whenever the virtqueue has enough free entries for our command.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200207064653.14403-1-kraxel@redhat.com
2020-02-07 09:33:55 +01:00
Chia-I Wu
96b5d1bee2
drm/virtio: move virtqueue_notify into virtio_gpu_queue_ctrl_sgs
...
It becomes clear that virtio_gpu_queue_fenced_ctrl_buffer should be
responsible for setting up sgs and virtio_gpu_queue_ctrl_sgs should
be responsible for queuing sgs.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-11-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:18 +01:00
Chia-I Wu
c900b2a45c
drm/virtio: move the check for vqs_ready earlier
...
When vqs_ready is false, vq should be considered invalid and we
should not check vq->num_free. After this change, a fenced command
queued before the vqs are ready will have fence id 0 and will be
considered done.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-9-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:18 +01:00
Chia-I Wu
6ebe8661eb
drm/virtio: move locking into virtio_gpu_queue_ctrl_sgs
...
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-8-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:18 +01:00
Chia-I Wu
db2e20726c
drm/virtio: set up virtqueue sgs before locking
...
sgs setup does not need to be in the critical section.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-7-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:18 +01:00
Chia-I Wu
4d8d486910
drm/virtio: unlock object array on errors
...
We don't propagate erros to the callers. We have to unlock object
arrays on errors.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-6-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:18 +01:00
Chia-I Wu
e19d341174
drm/virtio: no need to pass virtio_gpu_ctrl_hdr
...
We can get it from vbuf.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-5-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:17 +01:00
Chia-I Wu
145cbefce0
drm/virtio: add virtio_gpu_vbuf_ctrl_hdr
...
It is a helper to return the virtio_gpu_ctrl_hdr in a vbuf.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-4-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:58:08 +01:00
Chia-I Wu
1425a4ce49
drm/virtio: remove incorrect ENOSPC check
...
The handling of virtqueue_add_sgs ENOSPC error is incorrect because
it can result in out-of-order virtqueue_add_sgs and break fences.
We never get ENOSPC anyway because the caller waits until there is
enough space (the other caller that did not wait was removed in
commit 32d6c2c5b5
("drm/virtio: Rewrite virtio_gpu_queue_ctrl_buffer
using fenced version.")). Remove the incorrect and unnecessary error
path.
This also adds a WARN_ON(ret) until we properly handle errors.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Cc: David Riley <davidriley@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-3-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:55:08 +01:00
Chia-I Wu
58547d7d5c
drm/virtio: fix a wait_event condition
...
outcnt may be greater than 1 since commit e1218b8c0c
("drm/virtio:
Use vmalloc for command buffer allocations.").
Fixes: e1218b8c0c
("drm/virtio: Use vmalloc for command buffer allocations.")
Signed-off-by: Chia-I Wu <olvaffe@gmail.com >
Cc: David Riley <davidriley@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205181955.202485-2-olvaffe@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2020-02-06 11:55:08 +01:00
Gerd Hoffmann
e46e31cf53
drm/virtio: ratelimit error logging
...
Avoid flooding the log in case we screw up badly.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Chia-I Wu <olvaffe@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205102552.21409-1-kraxel@redhat.com
2020-02-06 11:55:08 +01:00
Gerd Hoffmann
fda1572114
drm/virtio: fix vblank handling
...
virtio has its own commit fail function. Add the
drm_atomic_helper_fake_vblank() call there.
Fixes: 2a735ad3d2
("drm/virtio: Remove sending of vblank event")
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: http://patchwork.freedesktop.org/patch/msgid/20200205065312.15790-1-kraxel@redhat.com
2020-02-05 11:47:47 +01:00