drm/ttm: Fix memory type manager debug information printing
authorJerome Glisse <jglisse@redhat.com>
Thu, 10 Dec 2009 17:07:26 +0000 (18:07 +0100)
committerDave Airlie <airlied@redhat.com>
Wed, 16 Dec 2009 05:36:26 +0000 (15:36 +1000)
System memory type doesn't have a drm_mm manager associated to
it. This patch avoid trying to call drm_mm_debug on unitialized
drm_mm when printing debug info on the system memory manager.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ttm/ttm_bo.c

index e00ed6942067c3f872dfd6f63699ad2d8feec0d0..2920f9a279e141aa9fd1ccc38cc0bfcb586c5f59 100644 (file)
@@ -71,9 +71,10 @@ static inline int ttm_mem_type_from_flags(uint32_t flags, uint32_t *mem_type)
        return -EINVAL;
 }
 
-static void ttm_mem_type_manager_debug(struct ttm_bo_global *glob,
-                                       struct ttm_mem_type_manager *man)
+static void ttm_mem_type_debug(struct ttm_bo_device *bdev, int mem_type)
 {
+       struct ttm_mem_type_manager *man = &bdev->man[mem_type];
+
        printk(KERN_ERR TTM_PFX "    has_type: %d\n", man->has_type);
        printk(KERN_ERR TTM_PFX "    use_type: %d\n", man->use_type);
        printk(KERN_ERR TTM_PFX "    flags: 0x%08X\n", man->flags);
@@ -85,17 +86,16 @@ static void ttm_mem_type_manager_debug(struct ttm_bo_global *glob,
                man->available_caching);
        printk(KERN_ERR TTM_PFX "    default_caching: 0x%08X\n",
                man->default_caching);
-       spin_lock(&glob->lru_lock);
-       drm_mm_debug_table(&man->manager, TTM_PFX);
-       spin_unlock(&glob->lru_lock);
+       if (mem_type != TTM_PL_SYSTEM) {
+               spin_lock(&bdev->glob->lru_lock);
+               drm_mm_debug_table(&man->manager, TTM_PFX);
+               spin_unlock(&bdev->glob->lru_lock);
+       }
 }
 
 static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
                                        struct ttm_placement *placement)
 {
-       struct ttm_bo_device *bdev = bo->bdev;
-       struct ttm_bo_global *glob = bo->glob;
-       struct ttm_mem_type_manager *man;
        int i, ret, mem_type;
 
        printk(KERN_ERR TTM_PFX "No space for %p (%lu pages, %luK, %luM)\n",
@@ -106,10 +106,9 @@ static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo,
                                                &mem_type);
                if (ret)
                        return;
-               man = &bdev->man[mem_type];
                printk(KERN_ERR TTM_PFX "  placement[%d]=0x%08X (%d)\n",
                        i, placement->placement[i], mem_type);
-               ttm_mem_type_manager_debug(glob, man);
+               ttm_mem_type_debug(bo->bdev, mem_type);
        }
 }