diff options
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_mem.c | 13 |
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 | ||