diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-12-10 12:07:26 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-12-16 00:36:26 -0500 |
commit | 5012f5063f41ca01240e5983c3b2cceb9aafc7a4 (patch) | |
tree | dcffc4267d8fa6ccd2ccae6689c7533851e5a2ee | |
parent | eb6d2c39dbe46ea1c4f3da4eac5728c73f109ea1 (diff) |
drm/ttm: Fix memory type manager debug information printing
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>
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index e00ed6942067..2920f9a279e1 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c | |||
@@ -71,9 +71,10 @@ static inline int ttm_mem_type_from_flags(uint32_t flags, uint32_t *mem_type) | |||
71 | return -EINVAL; | 71 | return -EINVAL; |
72 | } | 72 | } |
73 | 73 | ||
74 | static void ttm_mem_type_manager_debug(struct ttm_bo_global *glob, | 74 | static void ttm_mem_type_debug(struct ttm_bo_device *bdev, int mem_type) |
75 | struct ttm_mem_type_manager *man) | ||
76 | { | 75 | { |
76 | struct ttm_mem_type_manager *man = &bdev->man[mem_type]; | ||
77 | |||
77 | printk(KERN_ERR TTM_PFX " has_type: %d\n", man->has_type); | 78 | printk(KERN_ERR TTM_PFX " has_type: %d\n", man->has_type); |
78 | printk(KERN_ERR TTM_PFX " use_type: %d\n", man->use_type); | 79 | printk(KERN_ERR TTM_PFX " use_type: %d\n", man->use_type); |
79 | printk(KERN_ERR TTM_PFX " flags: 0x%08X\n", man->flags); | 80 | 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, | |||
85 | man->available_caching); | 86 | man->available_caching); |
86 | printk(KERN_ERR TTM_PFX " default_caching: 0x%08X\n", | 87 | printk(KERN_ERR TTM_PFX " default_caching: 0x%08X\n", |
87 | man->default_caching); | 88 | man->default_caching); |
88 | spin_lock(&glob->lru_lock); | 89 | if (mem_type != TTM_PL_SYSTEM) { |
89 | drm_mm_debug_table(&man->manager, TTM_PFX); | 90 | spin_lock(&bdev->glob->lru_lock); |
90 | spin_unlock(&glob->lru_lock); | 91 | drm_mm_debug_table(&man->manager, TTM_PFX); |
92 | spin_unlock(&bdev->glob->lru_lock); | ||
93 | } | ||
91 | } | 94 | } |
92 | 95 | ||
93 | static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo, | 96 | static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo, |
94 | struct ttm_placement *placement) | 97 | struct ttm_placement *placement) |
95 | { | 98 | { |
96 | struct ttm_bo_device *bdev = bo->bdev; | ||
97 | struct ttm_bo_global *glob = bo->glob; | ||
98 | struct ttm_mem_type_manager *man; | ||
99 | int i, ret, mem_type; | 99 | int i, ret, mem_type; |
100 | 100 | ||
101 | printk(KERN_ERR TTM_PFX "No space for %p (%lu pages, %luK, %luM)\n", | 101 | 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, | |||
106 | &mem_type); | 106 | &mem_type); |
107 | if (ret) | 107 | if (ret) |
108 | return; | 108 | return; |
109 | man = &bdev->man[mem_type]; | ||
110 | printk(KERN_ERR TTM_PFX " placement[%d]=0x%08X (%d)\n", | 109 | printk(KERN_ERR TTM_PFX " placement[%d]=0x%08X (%d)\n", |
111 | i, placement->placement[i], mem_type); | 110 | i, placement->placement[i], mem_type); |
112 | ttm_mem_type_manager_debug(glob, man); | 111 | ttm_mem_type_debug(bo->bdev, mem_type); |
113 | } | 112 | } |
114 | } | 113 | } |
115 | 114 | ||