Dave Airlie wrote: > 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. > Yes, but you might end up traversing the list in the middle of a list pointer modification, which is bad.
> I'll fix it up next week and send v3, thanks again. > Dave. > /Thomas ------------------------------------------------------------------------------ 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