[PATCH 01/11] drm/nouveau: don't munge in drm_mm internals
Ben Skeggs
bskeggs at redhat.com
Sun Feb 20 14:13:27 PST 2011
On Fri, 2011-02-18 at 17:59 +0100, Daniel Vetter wrote:
> 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.
>
> Cc: Ben Skeggs <bskeggs at redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Acked-by: Ben Skeggs <bskeggs at redhat.com>
> ---
> drivers/gpu/drm/nouveau/nouveau_object.c | 2 +-
> drivers/gpu/drm/nouveau/nv50_instmem.c | 4 ++--
> drivers/gpu/drm/nouveau/nvc0_instmem.c | 2 +-
> include/drm/drm_mm.h | 5 +++++
> 4 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_object.c b/drivers/gpu/drm/nouveau/nouveau_object.c
> index 30b6544..03adfe4 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_object.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_object.c
> @@ -909,7 +909,7 @@ nouveau_gpuobj_channel_takedown(struct nouveau_channel *chan)
> nouveau_vm_ref(NULL, &chan->vm, 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);
> nouveau_gpuobj_ref(NULL, &chan->ramin);
> }
> diff --git a/drivers/gpu/drm/nouveau/nv50_instmem.c b/drivers/gpu/drm/nouveau/nv50_instmem.c
> index ea00418..300285a 100644
> --- a/drivers/gpu/drm/nouveau/nv50_instmem.c
> +++ b/drivers/gpu/drm/nouveau/nv50_instmem.c
> @@ -56,7 +56,7 @@ nv50_channel_del(struct nouveau_channel **pchan)
> nouveau_gpuobj_ref(NULL, &chan->ramfc);
> nouveau_vm_ref(NULL, &chan->vm, 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);
> nouveau_gpuobj_ref(NULL, &chan->ramin);
> 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_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);
>
> dev_priv->engine.instmem.priv = NULL;
> diff --git a/drivers/gpu/drm/nouveau/nvc0_instmem.c b/drivers/gpu/drm/nouveau/nvc0_instmem.c
> index c090917..82357d2 100644
> --- a/drivers/gpu/drm/nouveau/nvc0_instmem.c
> +++ b/drivers/gpu/drm/nouveau/nvc0_instmem.c
> @@ -67,7 +67,7 @@ nvc0_channel_del(struct nouveau_channel **pchan)
> return;
>
> 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);
> nouveau_gpuobj_ref(NULL, &chan->ramin);
> kfree(chan);
> diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
> index e391777..0d79146 100644
> --- a/include/drm/drm_mm.h
> +++ b/include/drm/drm_mm.h
> @@ -72,6 +72,11 @@ struct drm_mm {
> 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)
> */
More information about the dri-devel
mailing list