From 5e5a63a1a78b75128ccd31f802c2b37d8878442d Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 3 Dec 2014 18:19:58 +1000 Subject: bar/gf100-: don't fill in bar->alloc until after all vm setup done gpuobj has a condition of (bar && bar->alloc) around usage to avoid some nasty ordering issues (which, i've now been reminded to add a todo about fixing...) between bar and vm. The bar->alloc part of the condition isn't currently necessary (it used to be, another change made bar always NULL where it matters), so we got lucky. That won't be the case for much longer. Signed-off-by: Ben Skeggs --- nvkm/subdev/bar/nvc0.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'nvkm') diff --git a/nvkm/subdev/bar/nvc0.c b/nvkm/subdev/bar/nvc0.c index 05a278bab..8320ee050 100644 --- a/nvkm/subdev/bar/nvc0.c +++ b/nvkm/subdev/bar/nvc0.c @@ -153,8 +153,6 @@ nvc0_bar_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ret = nvc0_bar_init_vm(priv, &priv->bar[0], 3); if (ret) return ret; - priv->base.alloc = nouveau_bar_alloc; - priv->base.kmap = nvc0_bar_kmap; } /* BAR1 */ @@ -162,6 +160,10 @@ nvc0_bar_ctor(struct nouveau_object *parent, struct nouveau_object *engine, if (ret) return ret; + if (has_bar3) { + priv->base.alloc = nouveau_bar_alloc; + priv->base.kmap = nvc0_bar_kmap; + } priv->base.umap = nvc0_bar_umap; priv->base.unmap = nvc0_bar_unmap; priv->base.flush = nv84_bar_flush; -- cgit v1.2.1