All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
To: Thomas Hellstrom <thellstrom@vmware.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 3/6] drm/ttm: call ttm_bo_cleanup_refs with reservation and lru lock held
Date: Wed, 28 Nov 2012 13:28:04 +0100	[thread overview]
Message-ID: <50B60354.5040206@canonical.com> (raw)
In-Reply-To: <50B5FB82.9020904@vmware.com>

Op 28-11-12 12:54, Thomas Hellstrom schreef:
>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
>> ---
>>   drivers/gpu/drm/ttm/ttm_bo.c | 112 +++++++++++++++++++++++--------------------
>>   1 file changed, 60 insertions(+), 52 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
>> index 202fc20..02b275b 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>> @@ -486,14 +486,6 @@ static void ttm_bo_cleanup_memtype_use(struct ttm_buffer_object *bo)
>>           bo->ttm = NULL;
>>       }
>>       ttm_bo_mem_put(bo, &bo->mem);
>> -
>> -    atomic_set(&bo->reserved, 0);
>> -
>> -    /*
>> -     * Make processes trying to reserve really pick it up.
>> -     */
>> -    smp_mb__after_atomic_dec();
>> -    wake_up_all(&bo->event_queue);
>>   }
>>     static void ttm_bo_cleanup_refs_or_queue(struct ttm_buffer_object *bo)
>> @@ -515,6 +507,9 @@ static void ttm_bo_cleanup_refs_or_queue(struct ttm_buffer_object *bo)
>>           put_count = ttm_bo_del_from_lru(bo);
>>             spin_unlock(&glob->lru_lock);
>> +        atomic_set(&bo->reserved, 0);
>> +        wake_up_all(&bo->event_queue);
>> +
>
> I think (although I'm not 100% sure) that if we use atomic_set() to unreserve, and it's not followed by a spin_unlock(), we need to insert
> a memory barrier, like is done above in the removed code, otherwise memory operations protected by reserve may be reordered until after reservation.
Hm yeah, looks like ttm_bo_cleanup_memtype_use probably needs a smb_mb() at the end now. The original smp_mb__after_atomic_dec was a noop,
since the wake_up_all call takes a spinlock too.

Thanks for catching it, I'll await the reply to my other email then maybe reword, fix this and resend.

~Maarten

  parent reply	other threads:[~2012-11-28 12:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-28 11:25 [PATCH 1/6] drm/ttm: change fence_lock to inner lock Maarten Lankhorst
2012-11-28 11:25 ` [PATCH 2/6] drm/radeon: allow move_notify to be called without reservation Maarten Lankhorst
2012-11-28 11:25 ` [PATCH 3/6] drm/ttm: call ttm_bo_cleanup_refs with reservation and lru lock held Maarten Lankhorst
2012-11-28 11:54   ` Thomas Hellstrom
2012-11-28 12:15     ` Maarten Lankhorst
2012-11-28 13:21       ` Thomas Hellstrom
2012-11-28 13:55         ` Maarten Lankhorst
2012-11-28 14:23           ` Thomas Hellstrom
2012-11-28 14:46             ` Maarten Lankhorst
2012-11-28 15:10               ` Thomas Hellstrom
2012-11-28 18:32                 ` Maarten Lankhorst
2012-11-28 19:21                   ` Thomas Hellstrom
2012-11-28 22:26                     ` Maarten Lankhorst
2012-11-29  9:42                       ` Thomas Hellstrom
2012-11-29 11:36                         ` [PATCH 3/6] drm/ttm: call ttm_bo_cleanup_refs with reservation and lru lock held, v3 Maarten Lankhorst
2012-11-29 20:43                           ` Thomas Hellstrom
2012-11-28 12:28     ` Maarten Lankhorst [this message]
2012-11-28 11:25 ` [PATCH 4/6] drm/ttm: cope with reserved buffers on swap list in ttm_bo_swapout, v2 Maarten Lankhorst
2012-11-28 14:27   ` Thomas Hellstrom
2012-11-28 11:25 ` [PATCH 5/6] drm/ttm: cope with reserved buffers on lru list in ttm_mem_evict_first, v2 Maarten Lankhorst
2012-11-28 11:25 ` [PATCH 6/6] drm/ttm: remove no_wait_reserve, v3 Maarten Lankhorst
2012-11-28 11:40 ` [PATCH 1/6] drm/ttm: change fence_lock to inner lock Thomas Hellstrom

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=50B60354.5040206@canonical.com \
    --to=maarten.lankhorst@canonical.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=thellstrom@vmware.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.