2009/8/21 Thomas Hellström <tho...@shipmail.org>:
> Dave Airlie wrote:
>>
>> From: Dave Airlie <airl...@linux.ie>
>>
>> This adds code to the drm_mm to talk to debugfs, and adds
>> support to radeon to add the VRAM and GTT mm lists to debugfs.
>>
>> changes since v1:
>> don't bother with free list just add used/free to main list
>> add totals in pages
>>
>> Signed-off-by: Dave Airlie <airl...@redhat.com>
>> ---
>>  drivers/gpu/drm/drm_mm.c            |   25 ++++++++++++++++++++++
>>  drivers/gpu/drm/radeon/radeon_ttm.c |   39
>> +++++++++++++++++++++++++++++++++++
>>  include/drm/drm_mm.h                |    4 +++
>>  3 files changed, 68 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
>> index 3e47869..a454e55 100644
>> --- a/drivers/gpu/drm/drm_mm.c
>> +++ b/drivers/gpu/drm/drm_mm.c
>> @@ -44,6 +44,7 @@
>>  #include "drmP.h"
>>  #include "drm_mm.h"
>>  #include <linux/slab.h>
>> +#include <linux/seq_file.h>
>>   #define MM_UNUSED_TARGET 4
>>  @@ -370,3 +371,27 @@ void drm_mm_takedown(struct drm_mm * mm)
>>        BUG_ON(mm->num_unused != 0);
>>  }
>>  EXPORT_SYMBOL(drm_mm_takedown);
>> +
>> +#if defined(CONFIG_DEBUG_FS)
>> +int drm_mm_dump_table(struct seq_file *m, void *data)
>> +{
>> +       struct drm_info_node *node = (struct drm_info_node *)m->private;
>> +       struct drm_mm *mm = (struct drm_mm *)node->info_ent->data;
>> +       struct drm_mm_node *entry;
>> +       int total_used = 0, total_free = 0, total = 0;
>> +       spin_lock(&mm->unused_lock);
>>
>
> This is not correct. The mm::unused_lock is there only to protect the list
> of cached drm_mm_node allocations that we
> use instead of kmalloc() when atomic.
>
> Instead the lock the user uses to protect the mm:s must be taken. In the TTM
> case IIRC its the bo_glob::lru_lock.
>
> Is it safe to use seq_printf() from within a spinlocked region?
>

Good point, this was one of those quick hacks to have a look at fragmentation
so I sorta guessed at the lock,

I'd probably be best not locking anything, but I'll try and add a
driver layer before
drm_mm to do the correct locking, though as its debugging info even inconsistent
is better than none.

I'll fix it up next week and send v3, thanks again.
Dave.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to