drm/nouveau: don't munge in drm_mm internals
Nouveau was checking drm_mm internals on teardown to see whether the memory manager was initialized. Hide these internals in a small inline helper function. Acked-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
a250b9fdc5
commit
31a5b8ce8f
|
@ -909,7 +909,7 @@ nouveau_gpuobj_channel_takedown(struct nouveau_channel *chan)
|
||||||
nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd);
|
nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd);
|
||||||
nouveau_gpuobj_ref(NULL, &chan->vm_pd);
|
nouveau_gpuobj_ref(NULL, &chan->vm_pd);
|
||||||
|
|
||||||
if (chan->ramin_heap.free_stack.next)
|
if (drm_mm_initialized(&chan->ramin_heap))
|
||||||
drm_mm_takedown(&chan->ramin_heap);
|
drm_mm_takedown(&chan->ramin_heap);
|
||||||
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ nv50_channel_del(struct nouveau_channel **pchan)
|
||||||
nouveau_gpuobj_ref(NULL, &chan->ramfc);
|
nouveau_gpuobj_ref(NULL, &chan->ramfc);
|
||||||
nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd);
|
nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd);
|
||||||
nouveau_gpuobj_ref(NULL, &chan->vm_pd);
|
nouveau_gpuobj_ref(NULL, &chan->vm_pd);
|
||||||
if (chan->ramin_heap.free_stack.next)
|
if (drm_mm_initialized(&chan->ramin_heap))
|
||||||
drm_mm_takedown(&chan->ramin_heap);
|
drm_mm_takedown(&chan->ramin_heap);
|
||||||
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
||||||
kfree(chan);
|
kfree(chan);
|
||||||
|
@ -259,7 +259,7 @@ nv50_instmem_takedown(struct drm_device *dev)
|
||||||
nouveau_gpuobj_ref(NULL, &dev_priv->bar3_vm->pgt[0].obj[0]);
|
nouveau_gpuobj_ref(NULL, &dev_priv->bar3_vm->pgt[0].obj[0]);
|
||||||
nouveau_vm_ref(NULL, &dev_priv->bar3_vm, NULL);
|
nouveau_vm_ref(NULL, &dev_priv->bar3_vm, NULL);
|
||||||
|
|
||||||
if (dev_priv->ramin_heap.free_stack.next)
|
if (drm_mm_initialized(&dev_priv->ramin_heap))
|
||||||
drm_mm_takedown(&dev_priv->ramin_heap);
|
drm_mm_takedown(&dev_priv->ramin_heap);
|
||||||
|
|
||||||
dev_priv->engine.instmem.priv = NULL;
|
dev_priv->engine.instmem.priv = NULL;
|
||||||
|
|
|
@ -67,7 +67,7 @@ nvc0_channel_del(struct nouveau_channel **pchan)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nouveau_vm_ref(NULL, &chan->vm, NULL);
|
nouveau_vm_ref(NULL, &chan->vm, NULL);
|
||||||
if (chan->ramin_heap.free_stack.next)
|
if (drm_mm_initialized(&chan->ramin_heap))
|
||||||
drm_mm_takedown(&chan->ramin_heap);
|
drm_mm_takedown(&chan->ramin_heap);
|
||||||
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
nouveau_gpuobj_ref(NULL, &chan->ramin);
|
||||||
kfree(chan);
|
kfree(chan);
|
||||||
|
|
|
@ -72,6 +72,11 @@ struct drm_mm {
|
||||||
unsigned long scan_end;
|
unsigned long scan_end;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline bool drm_mm_initialized(struct drm_mm *mm)
|
||||||
|
{
|
||||||
|
return mm->free_stack.next;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Basic range manager support (drm_mm.c)
|
* Basic range manager support (drm_mm.c)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue