On Sat, Jan 24, 2015 at 12:00 PM, Emil Velikov <emil.l.velikov@xxxxxxxxx> wrote: > On 23 January 2015 at 08:53, Alexandre Courbot <acourbot@xxxxxxxxxx> wrote: >> Having a RAM device does not make sense for chips like GK20A which have >> no dedicated video memory. The dummy RAM device that we used so far >> works as a temporary band-aid, but in the long-term it is desirable for >> the driver to be able to work without any kind of VRAM. >> >> This patch adds a few conditionals in places where a RAM device was >> assumed to be present and allows some more objects to be allocated from >> the TT domain, allowing Nouveau to handle GPUs for which >> pfb->ram == NULL. >> > Hi guys, > > Rather silly question so be gentle :-) > А couple an extra flags have crept in. > >> Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx> >> --- >> drm/nouveau/nouveau_display.c | 9 ++++++++- >> drm/nouveau/nouveau_ttm.c | 3 +++ >> drm/nouveau/nv84_fence.c | 7 +++++-- >> drm/nouveau/nvkm/engine/device/base.c | 9 ++++++--- >> drm/nouveau/nvkm/subdev/clk/base.c | 2 +- >> drm/nouveau/nvkm/subdev/fb/base.c | 26 ++++++++++++++++++-------- >> drm/nouveau/nvkm/subdev/ltc/gf100.c | 14 ++++++++++---- >> 7 files changed, 51 insertions(+), 19 deletions(-) >> >> diff --git a/drm/nouveau/nouveau_display.c b/drm/nouveau/nouveau_display.c >> index 860b0e2..b4f8ece 100644 >> --- a/drm/nouveau/nouveau_display.c >> +++ b/drm/nouveau/nouveau_display.c >> @@ -869,13 +869,20 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, >> struct drm_mode_create_dumb *args) >> { >> struct nouveau_bo *bo; >> + uint32_t domain; >> int ret; >> >> args->pitch = roundup(args->width * (args->bpp / 8), 256); >> args->size = args->pitch * args->height; >> args->size = roundup(args->size, PAGE_SIZE); >> >> - ret = nouveau_gem_new(dev, args->size, 0, NOUVEAU_GEM_DOMAIN_VRAM, 0, 0, &bo); >> + if (nvxx_fb(&nouveau_drm(dev)->device)->ram) >> + domain = NOUVEAU_GEM_DOMAIN_VRAM; >> + else >> + domain = NOUVEAU_GEM_DOMAIN_GART; >> + >> + ret = nouveau_gem_new(dev, args->size, 0, >> + domain | NOUVEAU_GEM_DOMAIN_MAPPABLE, 0, 0, &bo); > Taking about the extra NOUVEAU_GEM_DOMAIN_MAPPABLE. > >> diff --git a/drm/nouveau/nouveau_ttm.c b/drm/nouveau/nouveau_ttm.c >> index 273e501..a3c2e9b 100644 >> --- a/drm/nouveau/nouveau_ttm.c >> +++ b/drm/nouveau/nouveau_ttm.c >> @@ -85,6 +85,9 @@ nouveau_vram_manager_new(struct ttm_mem_type_manager *man, >> if (nvbo->tile_flags & NOUVEAU_GEM_TILE_NONCONTIG) >> size_nc = 1 << nvbo->page_shift; >> >> + if (!pfb->ram) >> + return -ENOMEM; >> + >> ret = pfb->ram->get(pfb, mem->num_pages << PAGE_SHIFT, >> mem->page_alignment << PAGE_SHIFT, size_nc, >> (nvbo->tile_flags >> 8) & 0x3ff, &node); >> diff --git a/drm/nouveau/nv84_fence.c b/drm/nouveau/nv84_fence.c >> index bf429ca..952bc48 100644 >> --- a/drm/nouveau/nv84_fence.c >> +++ b/drm/nouveau/nv84_fence.c >> @@ -215,6 +215,7 @@ nv84_fence_create(struct nouveau_drm *drm) >> { >> struct nvkm_fifo *pfifo = nvxx_fifo(&drm->device); >> struct nv84_fence_priv *priv; >> + u32 domain; >> int ret; >> >> priv = drm->fence = kzalloc(sizeof(*priv), GFP_KERNEL); >> @@ -231,10 +232,12 @@ nv84_fence_create(struct nouveau_drm *drm) >> priv->base.context_base = fence_context_alloc(priv->base.contexts); >> priv->base.uevent = true; >> >> + domain = nvxx_fb(&drm->device)->ram ? TTM_PL_FLAG_VRAM : TTM_PL_FLAG_TT; >> ret = nouveau_bo_new(drm->dev, 16 * priv->base.contexts, 0, >> - TTM_PL_FLAG_VRAM, 0, 0, NULL, NULL, &priv->bo); >> + domain | TTM_PL_FLAG_UNCACHED, > And the TTM_PL_FLAG_UNCACHED here. > > Are those intentional, I don't see any hints about them in the commit summary ? Well spotted. There are not supposed to be here, at least not with this patch. My branch has accumulated a lot of unsubmitted work and these lines got squashed by error. Thanks - I will wait a few more days for comments, then submit a v2 addressing both your and Illian's comments. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html