aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drv.h2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_mem.c13
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 026419fe8791..cc36866e2a9f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -509,6 +509,8 @@ struct drm_nouveau_private {
509 void __iomem *ramin; 509 void __iomem *ramin;
510 uint32_t ramin_size; 510 uint32_t ramin_size;
511 511
512 struct nouveau_bo *vga_ram;
513
512 struct workqueue_struct *wq; 514 struct workqueue_struct *wq;
513 struct work_struct irq_work; 515 struct work_struct irq_work;
514 516
diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
index be4c7781d761..186f34b01f2e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_mem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
@@ -383,6 +383,9 @@ void nouveau_mem_close(struct drm_device *dev)
383{ 383{
384 struct drm_nouveau_private *dev_priv = dev->dev_private; 384 struct drm_nouveau_private *dev_priv = dev->dev_private;
385 385
386 nouveau_bo_unpin(dev_priv->vga_ram);
387 nouveau_bo_ref(NULL, &dev_priv->vga_ram);
388
386 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM); 389 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM);
387 ttm_bo_device_release(&dev_priv->ttm.bdev); 390 ttm_bo_device_release(&dev_priv->ttm.bdev);
388 391
@@ -619,6 +622,15 @@ nouveau_mem_init(struct drm_device *dev)
619 return ret; 622 return ret;
620 } 623 }
621 624
625 ret = nouveau_bo_new(dev, NULL, 256*1024, 0, TTM_PL_FLAG_VRAM,
626 0, 0, true, true, &dev_priv->vga_ram);
627 if (ret == 0)
628 ret = nouveau_bo_pin(dev_priv->vga_ram, TTM_PL_FLAG_VRAM);
629 if (ret) {
630 NV_WARN(dev, "failed to reserve VGA memory\n");
631 nouveau_bo_ref(NULL, &dev_priv->vga_ram);
632 }
633
622 /* GART */ 634 /* GART */
623#if !defined(__powerpc__) && !defined(__ia64__) 635#if !defined(__powerpc__) && !defined(__ia64__)
624 if (drm_device_is_agp(dev) && dev->agp) { 636 if (drm_device_is_agp(dev) && dev->agp) {
@@ -650,6 +662,7 @@ nouveau_mem_init(struct drm_device *dev)
650 dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1), 662 dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1),
651 drm_get_resource_len(dev, 1), 663 drm_get_resource_len(dev, 1),
652 DRM_MTRR_WC); 664 DRM_MTRR_WC);
665
653 return 0; 666 return 0;
654} 667}
655 668