[PATCH 2/2] t2

Chris Wilson chris at chris-wilson.co.uk
Sat Aug 18 12:51:31 UTC 2018


---
 drivers/gpu/drm/i915/i915_drv.h        | 1 +
 drivers/gpu/drm/i915/i915_gem_stolen.c | 4 ++++
 drivers/gpu/drm/i915/intel_overlay.c   | 8 ++------
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e5b9d3c77139..04759bfab9fc 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1621,6 +1621,7 @@ struct drm_i915_private {
 	 */
 	resource_size_t stolen_usable_size;	/* Total size minus reserved ranges */
 
+	void __iomem *stolen;
 	void __iomem *regs;
 
 	struct intel_uncore uncore;
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index 53440bf87650..3e02ace27230 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -175,6 +175,7 @@ void i915_gem_cleanup_stolen(struct drm_device *dev)
 		return;
 
 	drm_mm_takedown(&dev_priv->mm.stolen);
+	iounmap(dev_priv->stolen);
 }
 
 static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv,
@@ -478,6 +479,9 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
 	dev_priv->stolen_usable_size =
 		resource_size(&dev_priv->dsm) - reserved_total;
 
+	dev_priv->stolen = ioremap_nocache(dev_priv->dsm.start,
+					   resource_size(&dev_priv->dsm));
+
 	/* Basic memrange allocator for stolen space. */
 	drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->stolen_usable_size);
 
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
index bdc6b695cf07..823d9ab38abb 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -1348,16 +1348,12 @@ static int get_physical_registers(struct intel_overlay *overlay)
 	/* Old enough that we can relibably access stolen directly */
 	obj = i915_gem_object_create_stolen(overlay->i915, PAGE_SIZE);
 	if (obj) {
-		unsigned long addr;
-
 		err = i915_gem_object_pin_pages(obj);
 		if (err)
 			goto err_put_bo;
 
-		addr = sg_dma_address(obj->mm.pages->sgl);
-		overlay->flip_addr = addr;
-		overlay->regs =
-		       	(struct overlay_registers __iomem *)phys_to_virt(addr);
+		overlay->flip_addr = sg_dma_address(obj->mm.pages->sgl);
+		overlay->regs = overlay->i915->stolen + obj->stolen->start;
 		overlay->reg_bo = obj;
 		return 0;
 	}
-- 
2.18.0



More information about the Intel-gfx-trybot mailing list