make RAM device optional
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 longer 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. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:

committed by
Ben Skeggs

parent
c6a7b026a3
commit
eaecf0326f
@@ -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,17 @@ nv84_fence_create(struct nouveau_drm *drm)
|
||||
priv->base.context_base = fence_context_alloc(priv->base.contexts);
|
||||
priv->base.uevent = true;
|
||||
|
||||
ret = nouveau_bo_new(drm->dev, 16 * priv->base.contexts, 0,
|
||||
TTM_PL_FLAG_VRAM, 0, 0, NULL, NULL, &priv->bo);
|
||||
/* Use VRAM if there is any ; otherwise fallback to system memory */
|
||||
domain = drm->device.info.ram_size != 0 ? TTM_PL_FLAG_VRAM :
|
||||
/*
|
||||
* fences created in sysmem must be non-cached or we
|
||||
* will lose CPU/GPU coherency!
|
||||
*/
|
||||
TTM_PL_FLAG_TT | TTM_PL_FLAG_UNCACHED;
|
||||
ret = nouveau_bo_new(drm->dev, 16 * priv->base.contexts, 0, domain, 0,
|
||||
0, NULL, NULL, &priv->bo);
|
||||
if (ret == 0) {
|
||||
ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false);
|
||||
ret = nouveau_bo_pin(priv->bo, domain, false);
|
||||
if (ret == 0) {
|
||||
ret = nouveau_bo_map(priv->bo);
|
||||
if (ret)
|
||||
|
Reference in New Issue
Block a user