From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jerome Glisse <jglisse@redhat.com>,
DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH] drm/ttm: fix fence locking in ttm_buffer_object_transfer, 2nd try
Date: Mon, 14 Jan 2013 11:09:59 +0100 [thread overview]
Message-ID: <50F3D977.9090003@canonical.com> (raw)
In-Reply-To: <1358157814-5762-1-git-send-email-daniel.vetter@ffwll.ch>
Op 14-01-13 11:03, Daniel Vetter schreef:
> This fixes up
>
> commit e8e89622ed361c46bf90ba4828e685a8b603f7e5
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date: Tue Dec 18 22:25:11 2012 +0100
>
> drm/ttm: fix fence locking in ttm_buffer_object_transfer
>
> which leaves behind a might_sleep in atomic context, since the
> fence_lock spinlock is held over a kmalloc(GFP_KERNEL) call. The fix
> is to revert the above commit and only take the lock where we need it,
> around the call to ->sync_obj_ref.
>
> Reported-by: Dave Airlie <airlied@gmail.com>
> Cc: Jerome Glisse <jglisse@redhat.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/ttm/ttm_bo_util.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index d73d6e3..d4bb792 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -441,7 +441,9 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
> fbo->vm_node = NULL;
> atomic_set(&fbo->cpu_writers, 0);
>
> + spin_unlock(&bdev->fence_lock);
> fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj);
> + spin_lock(&bdev->fence_lock);
> kref_init(&fbo->list_kref);
> kref_init(&fbo->kref);
> fbo->destroy = &ttm_transfered_destroy;
Methinks you messed up spin_lock and spin_unlock here.
> @@ -654,13 +656,11 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
> */
>
> set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags);
> -
> - /* ttm_buffer_object_transfer accesses bo->sync_obj */
> - ret = ttm_buffer_object_transfer(bo, &ghost_obj);
> spin_unlock(&bdev->fence_lock);
> if (tmp_obj)
> driver->sync_obj_unref(&tmp_obj);
>
> + ret = ttm_buffer_object_transfer(bo, &ghost_obj);
> if (ret)
> return ret;
>
~Maarten
next prev parent reply other threads:[~2013-01-14 10:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-14 10:03 [PATCH] drm/ttm: fix fence locking in ttm_buffer_object_transfer, 2nd try Daniel Vetter
2013-01-14 10:09 ` Maarten Lankhorst [this message]
2013-01-14 14:08 ` Daniel Vetter
2013-01-14 15:09 ` Maarten Lankhorst
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=50F3D977.9090003@canonical.com \
--to=maarten.lankhorst@canonical.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jglisse@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.