* [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init
[not found] <20210120111240.2509679-1-kraxel@redhat.com>
@ 2021-01-20 11:12 ` Gerd Hoffmann
2021-01-22 8:06 ` Thomas Zimmermann
2021-01-20 11:12 ` [PATCH v3 2/4] drm/qxl: unpin release objects Gerd Hoffmann
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-20 11:12 UTC (permalink / raw)
To: dri-devel
Cc: David Airlie, Daniel Vetter, open list,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Daniel Vetter,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/qxl/qxl_display.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 012bce0cdb65..38d6b596094d 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -1195,7 +1195,9 @@ int qxl_modeset_init(struct qxl_device *qdev)
int i;
int ret;
- drm_mode_config_init(&qdev->ddev);
+ ret = drmm_mode_config_init(&qdev->ddev);
+ if (ret)
+ return ret;
ret = qxl_create_monitors_object(qdev);
if (ret)
@@ -1228,5 +1230,4 @@ int qxl_modeset_init(struct qxl_device *qdev)
void qxl_modeset_fini(struct qxl_device *qdev)
{
qxl_destroy_monitors_object(qdev);
- drm_mode_config_cleanup(&qdev->ddev);
}
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 2/4] drm/qxl: unpin release objects
[not found] <20210120111240.2509679-1-kraxel@redhat.com>
2021-01-20 11:12 ` [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init Gerd Hoffmann
@ 2021-01-20 11:12 ` Gerd Hoffmann
2021-01-22 8:13 ` Thomas Zimmermann
2021-01-20 11:12 ` [PATCH v3 3/4] drm/qxl: release shadow on shutdown Gerd Hoffmann
2021-01-20 11:12 ` [PATCH v3 4/4] drm/qxl: handle shadow in primary destroy Gerd Hoffmann
3 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-20 11:12 UTC (permalink / raw)
To: dri-devel
Cc: David Airlie, open list,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Daniel Vetter,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
Balances the qxl_create_bo(..., pinned=true, ...);
call in qxl_release_bo_alloc().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_release.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
index 0fcfc952d5e9..add979cba11b 100644
--- a/drivers/gpu/drm/qxl/qxl_release.c
+++ b/drivers/gpu/drm/qxl/qxl_release.c
@@ -166,6 +166,7 @@ qxl_release_free_list(struct qxl_release *release)
entry = container_of(release->bos.next,
struct qxl_bo_list, tv.head);
bo = to_qxl_bo(entry->tv.bo);
+ bo->tbo.pin_count = 0; /* ttm_bo_unpin(&bo->tbo); */
qxl_bo_unref(&bo);
list_del(&entry->tv.head);
kfree(entry);
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 3/4] drm/qxl: release shadow on shutdown
[not found] <20210120111240.2509679-1-kraxel@redhat.com>
2021-01-20 11:12 ` [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init Gerd Hoffmann
2021-01-20 11:12 ` [PATCH v3 2/4] drm/qxl: unpin release objects Gerd Hoffmann
@ 2021-01-20 11:12 ` Gerd Hoffmann
2021-01-22 8:14 ` Thomas Zimmermann
2021-01-20 11:12 ` [PATCH v3 4/4] drm/qxl: handle shadow in primary destroy Gerd Hoffmann
3 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-20 11:12 UTC (permalink / raw)
To: dri-devel
Cc: David Airlie, open list,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Daniel Vetter,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
In case we have a shadow surface on shutdown release
it so it doesn't leak.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_display.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 38d6b596094d..60331e31861a 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -1229,5 +1229,9 @@ int qxl_modeset_init(struct qxl_device *qdev)
void qxl_modeset_fini(struct qxl_device *qdev)
{
+ if (qdev->dumb_shadow_bo) {
+ drm_gem_object_put(&qdev->dumb_shadow_bo->tbo.base);
+ qdev->dumb_shadow_bo = NULL;
+ }
qxl_destroy_monitors_object(qdev);
}
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 4/4] drm/qxl: handle shadow in primary destroy
[not found] <20210120111240.2509679-1-kraxel@redhat.com>
` (2 preceding siblings ...)
2021-01-20 11:12 ` [PATCH v3 3/4] drm/qxl: release shadow on shutdown Gerd Hoffmann
@ 2021-01-20 11:12 ` Gerd Hoffmann
3 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-20 11:12 UTC (permalink / raw)
To: dri-devel
Cc: David Airlie, open list,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Daniel Vetter,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
qxl_primary_atomic_disable must check whenever the framebuffer bo has a
shadow surface and in case it has check the shadow primary status.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_display.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 60331e31861a..f5ee8cd72b5b 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -562,6 +562,8 @@ static void qxl_primary_atomic_disable(struct drm_plane *plane,
if (old_state->fb) {
struct qxl_bo *bo = gem_to_qxl_bo(old_state->fb->obj[0]);
+ if (bo->shadow)
+ bo = bo->shadow;
if (bo->is_primary) {
qxl_io_destroy_primary(qdev);
bo->is_primary = false;
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init
2021-01-20 11:12 ` [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init Gerd Hoffmann
@ 2021-01-22 8:06 ` Thomas Zimmermann
0 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2021-01-22 8:06 UTC (permalink / raw)
To: Gerd Hoffmann, dri-devel
Cc: David Airlie, Daniel Vetter, open list,
open list:DRM DRIVER FOR QXL VIRTUAL GPU,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
[-- Attachment #1.1.1: Type: text/plain, Size: 1255 bytes --]
Am 20.01.21 um 12:12 schrieb Gerd Hoffmann:
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/qxl/qxl_display.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
> index 012bce0cdb65..38d6b596094d 100644
> --- a/drivers/gpu/drm/qxl/qxl_display.c
> +++ b/drivers/gpu/drm/qxl/qxl_display.c
> @@ -1195,7 +1195,9 @@ int qxl_modeset_init(struct qxl_device *qdev)
> int i;
> int ret;
>
> - drm_mode_config_init(&qdev->ddev);
> + ret = drmm_mode_config_init(&qdev->ddev);
> + if (ret)
> + return ret;
>
> ret = qxl_create_monitors_object(qdev);
> if (ret)
> @@ -1228,5 +1230,4 @@ int qxl_modeset_init(struct qxl_device *qdev)
> void qxl_modeset_fini(struct qxl_device *qdev)
> {
> qxl_destroy_monitors_object(qdev);
> - drm_mode_config_cleanup(&qdev->ddev);
> }
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
[-- Attachment #2: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 2/4] drm/qxl: unpin release objects
2021-01-20 11:12 ` [PATCH v3 2/4] drm/qxl: unpin release objects Gerd Hoffmann
@ 2021-01-22 8:13 ` Thomas Zimmermann
2021-01-22 13:35 ` Gerd Hoffmann
0 siblings, 1 reply; 10+ messages in thread
From: Thomas Zimmermann @ 2021-01-22 8:13 UTC (permalink / raw)
To: Gerd Hoffmann, dri-devel
Cc: David Airlie, open list:DRM DRIVER FOR QXL VIRTUAL GPU,
Dave Airlie, open list, open list:DRM DRIVER FOR QXL VIRTUAL GPU
[-- Attachment #1.1.1: Type: text/plain, Size: 1456 bytes --]
Hi
Am 20.01.21 um 12:12 schrieb Gerd Hoffmann:
> Balances the qxl_create_bo(..., pinned=true, ...);
> call in qxl_release_bo_alloc().
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> drivers/gpu/drm/qxl/qxl_release.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
> index 0fcfc952d5e9..add979cba11b 100644
> --- a/drivers/gpu/drm/qxl/qxl_release.c
> +++ b/drivers/gpu/drm/qxl/qxl_release.c
> @@ -166,6 +166,7 @@ qxl_release_free_list(struct qxl_release *release)
> entry = container_of(release->bos.next,
> struct qxl_bo_list, tv.head);
> bo = to_qxl_bo(entry->tv.bo);
> + bo->tbo.pin_count = 0; /* ttm_bo_unpin(&bo->tbo); */
This code looks like a workaround or a bug.
AFAICT the only place with pre-pinned BO is qdev->dumb_shadow_bo. Can
you remove the pinned flag entirely and handle pinning as part of
dumb_shadow_bo's code.
Otherwise maybe use
if (pin_count)
ttm_bo_unpin();
WARN_ON(pin_count); /* should always be 0 now */
with a comment similar to the commit's description.
Best regards
Thomas
> qxl_bo_unref(&bo);
> list_del(&entry->tv.head);
> kfree(entry);
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
[-- Attachment #2: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 3/4] drm/qxl: release shadow on shutdown
2021-01-20 11:12 ` [PATCH v3 3/4] drm/qxl: release shadow on shutdown Gerd Hoffmann
@ 2021-01-22 8:14 ` Thomas Zimmermann
0 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2021-01-22 8:14 UTC (permalink / raw)
To: Gerd Hoffmann, dri-devel
Cc: David Airlie, open list:DRM DRIVER FOR QXL VIRTUAL GPU,
Dave Airlie, open list, open list:DRM DRIVER FOR QXL VIRTUAL GPU
[-- Attachment #1.1.1: Type: text/plain, Size: 1098 bytes --]
Hi
Am 20.01.21 um 12:12 schrieb Gerd Hoffmann:
> In case we have a shadow surface on shutdown release
> it so it doesn't leak.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> drivers/gpu/drm/qxl/qxl_display.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
> index 38d6b596094d..60331e31861a 100644
> --- a/drivers/gpu/drm/qxl/qxl_display.c
> +++ b/drivers/gpu/drm/qxl/qxl_display.c
> @@ -1229,5 +1229,9 @@ int qxl_modeset_init(struct qxl_device *qdev)
>
> void qxl_modeset_fini(struct qxl_device *qdev)
> {
> + if (qdev->dumb_shadow_bo) {
Wrt to my comment on patch 2, this might be the place to unpin the BO.
> + drm_gem_object_put(&qdev->dumb_shadow_bo->tbo.base);
> + qdev->dumb_shadow_bo = NULL;
> + }
> qxl_destroy_monitors_object(qdev);
> }
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
[-- Attachment #2: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 2/4] drm/qxl: unpin release objects
2021-01-22 8:13 ` Thomas Zimmermann
@ 2021-01-22 13:35 ` Gerd Hoffmann
2021-01-22 13:54 ` Daniel Vetter
0 siblings, 1 reply; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-22 13:35 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: David Airlie, open list, dri-devel,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie,
open list:DRM DRIVER FOR QXL VIRTUAL GPU
On Fri, Jan 22, 2021 at 09:13:42AM +0100, Thomas Zimmermann wrote:
> Hi
>
> Am 20.01.21 um 12:12 schrieb Gerd Hoffmann:
> > Balances the qxl_create_bo(..., pinned=true, ...);
> > call in qxl_release_bo_alloc().
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > ---
> > drivers/gpu/drm/qxl/qxl_release.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
> > index 0fcfc952d5e9..add979cba11b 100644
> > --- a/drivers/gpu/drm/qxl/qxl_release.c
> > +++ b/drivers/gpu/drm/qxl/qxl_release.c
> > @@ -166,6 +166,7 @@ qxl_release_free_list(struct qxl_release *release)
> > entry = container_of(release->bos.next,
> > struct qxl_bo_list, tv.head);
> > bo = to_qxl_bo(entry->tv.bo);
> > + bo->tbo.pin_count = 0; /* ttm_bo_unpin(&bo->tbo); */
>
> This code looks like a workaround or a bug.
>
> AFAICT the only place with pre-pinned BO is qdev->dumb_shadow_bo. Can you
> remove the pinned flag entirely and handle pinning as part of
> dumb_shadow_bo's code.
No, the release objects are pinned too, and they must be
pinned (qxl commands are in there, and references are
placed in the qxl rings, so allowing them to roam is
a non-starter).
> if (pin_count)
> ttm_bo_unpin();
> WARN_ON(pin_count); /* should always be 0 now */
Well, the pin_count is 1 at this point.
No need for the if().
Just calling ttm_bo_unpin() here makes lockdep unhappy.
Not calling ttm_bo_unpin() makes ttm_bo_release() throw
a WARN() because of the pin.
Clearing pin_count (which is how ttm fixes things up
in the error path) works.
I'm open to better ideas.
take care,
Gerd
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 2/4] drm/qxl: unpin release objects
2021-01-22 13:35 ` Gerd Hoffmann
@ 2021-01-22 13:54 ` Daniel Vetter
2021-01-25 12:16 ` Gerd Hoffmann
0 siblings, 1 reply; 10+ messages in thread
From: Daniel Vetter @ 2021-01-22 13:54 UTC (permalink / raw)
To: Gerd Hoffmann
Cc: David Airlie, open list, dri-devel,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Thomas Zimmermann,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
On Fri, Jan 22, 2021 at 2:35 PM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Fri, Jan 22, 2021 at 09:13:42AM +0100, Thomas Zimmermann wrote:
> > Hi
> >
> > Am 20.01.21 um 12:12 schrieb Gerd Hoffmann:
> > > Balances the qxl_create_bo(..., pinned=true, ...);
> > > call in qxl_release_bo_alloc().
> > >
> > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > ---
> > > drivers/gpu/drm/qxl/qxl_release.c | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
> > > index 0fcfc952d5e9..add979cba11b 100644
> > > --- a/drivers/gpu/drm/qxl/qxl_release.c
> > > +++ b/drivers/gpu/drm/qxl/qxl_release.c
> > > @@ -166,6 +166,7 @@ qxl_release_free_list(struct qxl_release *release)
> > > entry = container_of(release->bos.next,
> > > struct qxl_bo_list, tv.head);
> > > bo = to_qxl_bo(entry->tv.bo);
> > > + bo->tbo.pin_count = 0; /* ttm_bo_unpin(&bo->tbo); */
> >
> > This code looks like a workaround or a bug.
> >
> > AFAICT the only place with pre-pinned BO is qdev->dumb_shadow_bo. Can you
> > remove the pinned flag entirely and handle pinning as part of
> > dumb_shadow_bo's code.
>
> No, the release objects are pinned too, and they must be
> pinned (qxl commands are in there, and references are
> placed in the qxl rings, so allowing them to roam is
> a non-starter).
>
> > if (pin_count)
> > ttm_bo_unpin();
> > WARN_ON(pin_count); /* should always be 0 now */
>
> Well, the pin_count is 1 at this point.
> No need for the if().
>
> Just calling ttm_bo_unpin() here makes lockdep unhappy.
How does that one splat? But yeah if that's a problem should be
explained in the comment. I'd then also only do a pin_count--; to make
sure you can still catch other pin leaks if you have them. Setting it
to 0 kinda defeats the warning.
-Daniel
>
> Not calling ttm_bo_unpin() makes ttm_bo_release() throw
> a WARN() because of the pin.
>
> Clearing pin_count (which is how ttm fixes things up
> in the error path) works.
>
> I'm open to better ideas.
>
> take care,
> Gerd
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 2/4] drm/qxl: unpin release objects
2021-01-22 13:54 ` Daniel Vetter
@ 2021-01-25 12:16 ` Gerd Hoffmann
0 siblings, 0 replies; 10+ messages in thread
From: Gerd Hoffmann @ 2021-01-25 12:16 UTC (permalink / raw)
To: Daniel Vetter
Cc: David Airlie, open list, dri-devel,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Thomas Zimmermann,
open list:DRM DRIVER FOR QXL VIRTUAL GPU, Dave Airlie
> > Just calling ttm_bo_unpin() here makes lockdep unhappy.
>
> How does that one splat? But yeah if that's a problem should be
> explained in the comment. I'd then also only do a pin_count--; to make
> sure you can still catch other pin leaks if you have them. Setting it
> to 0 kinda defeats the warning.
Figured the unpin is at the completely wrong place while trying to
reproduce the lockdep splat ...
take care,
Gerd
From 43befab4a935114e8620af62781666fa81288255 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 25 Jan 2021 13:10:50 +0100
Subject: [PATCH] drm/qxl: unpin release objects
Balances the qxl_create_bo(..., pinned=true, ...);
call in qxl_release_bo_alloc().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_release.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
index c52412724c26..28013fd1f8ea 100644
--- a/drivers/gpu/drm/qxl/qxl_release.c
+++ b/drivers/gpu/drm/qxl/qxl_release.c
@@ -347,6 +347,7 @@ int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size,
mutex_lock(&qdev->release_mutex);
if (qdev->current_release_bo_offset[cur_idx] + 1 >= releases_per_bo[cur_idx]) {
+ qxl_bo_unpin(qdev->current_release_bo[cur_idx]);
qxl_bo_unref(&qdev->current_release_bo[cur_idx]);
qdev->current_release_bo_offset[cur_idx] = 0;
qdev->current_release_bo[cur_idx] = NULL;
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-01-25 12:16 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20210120111240.2509679-1-kraxel@redhat.com>
2021-01-20 11:12 ` [PATCH v3 1/4] drm/qxl: use drmm_mode_config_init Gerd Hoffmann
2021-01-22 8:06 ` Thomas Zimmermann
2021-01-20 11:12 ` [PATCH v3 2/4] drm/qxl: unpin release objects Gerd Hoffmann
2021-01-22 8:13 ` Thomas Zimmermann
2021-01-22 13:35 ` Gerd Hoffmann
2021-01-22 13:54 ` Daniel Vetter
2021-01-25 12:16 ` Gerd Hoffmann
2021-01-20 11:12 ` [PATCH v3 3/4] drm/qxl: release shadow on shutdown Gerd Hoffmann
2021-01-22 8:14 ` Thomas Zimmermann
2021-01-20 11:12 ` [PATCH v3 4/4] drm/qxl: handle shadow in primary destroy Gerd Hoffmann
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).