From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
To: "David Airlie" <airlied@linux.ie>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Gurchetan Singh" <gurchetansingh@chromium.org>,
"Chia-I Wu" <olvaffe@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Emil Velikov" <emil.l.velikov@gmail.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"Thomas Hellström" <thomas_os@shipmail.org>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Dmitry Osipenko <digetx@gmail.com>,
kernel@collabora.com
Subject: [PATCH v7 6/9] drm/virtio: Simplify error handling of virtio_gpu_object_create()
Date: Thu, 30 Jun 2022 23:07:23 +0300 [thread overview]
Message-ID: <20220630200726.1884320-7-dmitry.osipenko@collabora.com> (raw)
In-Reply-To: <20220630200726.1884320-1-dmitry.osipenko@collabora.com>
Change the order of SHMEM initialization and reservation locking
to make code cleaner and to prepare for transitioning of the common
GEM SHMEM code to use the GEM's reservation lock instead of the
shmem.page_lock.
There is no need to lock reservation during allocation of the SHMEM pages
because the lock is needed only to avoid racing with the async host-side
allocation. Hence we can safely move the SHMEM initialization out of the
reservation lock.
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
---
drivers/gpu/drm/virtio/virtgpu_object.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
index 75a159df0af6..62b4d075cfac 100644
--- a/drivers/gpu/drm/virtio/virtgpu_object.c
+++ b/drivers/gpu/drm/virtio/virtgpu_object.c
@@ -235,6 +235,10 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
bo->dumb = params->dumb;
+ ret = virtio_gpu_object_shmem_init(vgdev, bo, &ents, &nents);
+ if (ret != 0)
+ goto err_put_id;
+
if (fence) {
ret = -ENOMEM;
objs = virtio_gpu_array_alloc(1);
@@ -247,15 +251,6 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
goto err_put_objs;
}
- ret = virtio_gpu_object_shmem_init(vgdev, bo, &ents, &nents);
- if (ret != 0) {
- if (fence)
- virtio_gpu_array_unlock_resv(objs);
- virtio_gpu_array_put_free(objs);
- virtio_gpu_free_object(&shmem_obj->base);
- return ret;
- }
-
if (params->blob) {
if (params->blob_mem == VIRTGPU_BLOB_MEM_GUEST)
bo->guest_blob = true;
--
2.36.1
next prev parent reply other threads:[~2022-06-30 20:08 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-30 20:07 [PATCH v7 0/9] VirtIO-GPU driver fixes and improvements Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 1/9] drm/virtio: Correct drm_gem_shmem_get_sg_table() error handling Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 2/9] drm/virtio: Check whether transferred 2D BO is shmem Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 3/9] drm/virtio: Unlock reservations on virtio_gpu_object_shmem_init() error Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 4/9] drm/virtio: Unlock reservations on dma_resv_reserve_fences() error Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 5/9] drm/virtio: Use appropriate atomic state in virtio_gpu_plane_cleanup_fb() Dmitry Osipenko
2022-06-30 20:07 ` Dmitry Osipenko [this message]
2022-06-30 20:07 ` [PATCH v7 7/9] drm/virtio: Improve DMA API usage for shmem BOs Dmitry Osipenko
2022-07-05 13:53 ` Gerd Hoffmann
2022-07-05 14:27 ` Dmitry Osipenko
2022-07-05 15:45 ` Gerd Hoffmann
2022-07-05 16:03 ` Emil Velikov
2022-07-05 17:02 ` Dmitry Osipenko
2022-07-05 20:56 ` Emil Velikov
2022-07-06 10:30 ` Laszlo Ersek
2022-07-05 21:39 ` Rob Clark
2022-07-05 23:08 ` Dmitry Osipenko
2022-07-06 7:13 ` Gerd Hoffmann
2022-07-06 7:22 ` Dmitry Osipenko
2022-07-19 10:31 ` Gerd Hoffmann
2022-07-19 11:30 ` Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 8/9] drm/virtio: Use dev_is_pci() Dmitry Osipenko
2022-06-30 20:07 ` [PATCH v7 9/9] drm/virtio: Return proper error codes instead of -1 Dmitry Osipenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220630200726.1884320-7-dmitry.osipenko@collabora.com \
--to=dmitry.osipenko@collabora.com \
--cc=airlied@linux.ie \
--cc=daniel@ffwll.ch \
--cc=digetx@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=gurchetansingh@chromium.org \
--cc=kernel@collabora.com \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=olvaffe@gmail.com \
--cc=robin.murphy@arm.com \
--cc=thomas_os@shipmail.org \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).