On Wed, Feb 11, 2015 at 4:40 PM, Ilia Mirkin <[email protected]> wrote: > > On Wed, Feb 11, 2015 at 2:21 AM, Alexandre Courbot <[email protected]> wrote: > > @@ -150,7 +151,10 @@ gf100_ltc_init_tag_ram(struct nvkm_fb *pfb, struct > > nvkm_ltc_priv *priv) > > int ret; > > > > /* tags for 1/4 of VRAM should be enough (8192/4 per GiB of VRAM) */ > > - priv->num_tags = (pfb->ram->size >> 17) / 4; > > + if (pfb->ram) > > + priv->num_tags = (pfb->ram->size >> 17) / 4; > > + else > > + priv->num_tags = (1 << 17); > > if (priv->num_tags > (1 << 17)) > > priv->num_tags = 1 << 17; /* we have 17 bits in PTE */ > > priv->num_tags = (priv->num_tags + 63) & ~63; /* round up to 64 */ > > @@ -170,8 +174,11 @@ gf100_ltc_init_tag_ram(struct nvkm_fb *pfb, struct > > nvkm_ltc_priv *priv) > > tag_size += tag_align; > > tag_size = (tag_size + 0xfff) >> 12; /* round up */ > > > > - ret = nvkm_mm_tail(&pfb->vram, 1, 1, tag_size, tag_size, 1, > > - &priv->tag_ram); > > + if (pfb->ram) > > + ret = nvkm_mm_tail(&pfb->vram, 1, 1, tag_size, tag_size, 1, > > + &priv->tag_ram); > > + else > > + ret = -1; > > if (ret) { > > priv->num_tags = 0; > > } else { > > Seems like you could just avoid a lot of this and just start the > function out with > > if (!pfb->ram) { > priv->num_tags = 0; (is that even necessary? the object is > probably kzalloc'd) > ret = nouveau_mm_init(&priv->tags, 0, 0, 1); > return ret; > } > > That's essentially what happens, no? Perhaps you could go a step > further and teach the base code about uninitialized tags mm, but that > may not be worth it.
You're absolutely correct - had I tried to understand the code instead of workaround my way around it, I would have figured that out. Actually the intention should be to keep some space for tags even when VRAM is not present, so my code was not even correct in that respect. We can keep it like this for the time being though, until I figure out how this works for GK20A. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
