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@xxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> Acked-by: Ben Skeggs <bskeggs@xxxxxxxxxx> > --- > 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) > */ _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel