From patchwork Thu Jun 27 23:30:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Widawsky X-Patchwork-Id: 2796211 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 9AE6D9F245 for ; Thu, 27 Jun 2013 23:40:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 74E3D20163 for ; Thu, 27 Jun 2013 23:40:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 733182015D for ; Thu, 27 Jun 2013 23:40:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 45290E5F28 for ; Thu, 27 Jun 2013 16:40:18 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from shiva.localdomain (unknown [209.20.75.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 57896E62AC for ; Thu, 27 Jun 2013 16:28:24 -0700 (PDT) Received: by shiva.localdomain (Postfix, from userid 99) id 30167886AD; Thu, 27 Jun 2013 23:28:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from lundgren.jf.intel.com (jfdmzpr02-ext.jf.intel.com [134.134.137.71]) by shiva.localdomain (Postfix) with ESMTPSA id CAD36884FB; Thu, 27 Jun 2013 23:28:22 +0000 (UTC) From: Ben Widawsky To: Intel GFX Date: Thu, 27 Jun 2013 16:30:24 -0700 Message-Id: <1372375867-1003-24-git-send-email-ben@bwidawsk.net> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1372375867-1003-1-git-send-email-ben@bwidawsk.net> References: <1372375867-1003-1-git-send-email-ben@bwidawsk.net> Cc: Ben Widawsky Subject: [Intel-gfx] [PATCH 23/66] drm/i915: Move stolen stuff to i915_gtt X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org X-Virus-Scanned: ClamAV using ClamSMTP It doesn't apply to generic VMA, so it belongs with the gtt. for file in `ls drivers/gpu/drm/i915/*.c` ; do sed -i "s/mm.stolen_base/gtt.stolen_base/" $file; done for file in `ls drivers/gpu/drm/i915/*.c` ; do sed -i "s/mm.stolen/gtt.stolen/" $file; done Signed-off-by: Ben Widawsky --- drivers/gpu/drm/i915/i915_drv.h | 8 +++----- drivers/gpu/drm/i915/i915_gem_stolen.c | 32 ++++++++++++++++---------------- drivers/gpu/drm/i915/i915_irq.c | 2 +- drivers/gpu/drm/i915/intel_pm.c | 4 ++-- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f428076..7016074 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -473,6 +473,9 @@ struct i915_address_space { */ struct i915_gtt { struct i915_address_space base; + + struct drm_mm stolen; + unsigned long stolen_base; /* limited to low memory (32-bit) */ size_t stolen_size; /* Total size of stolen memory */ unsigned long mappable_end; /* End offset that we can CPU map */ @@ -828,8 +831,6 @@ struct intel_l3_parity { }; struct i915_gem_mm { - /** Memory allocator for GTT stolen memory */ - struct drm_mm stolen; /** Memory allocator for GTT */ struct drm_mm gtt_space; /** List of all objects in gtt_space. Used to restore gtt @@ -842,9 +843,6 @@ struct i915_gem_mm { */ struct list_head unbound_list; - /** Usable portion of the GTT for GEM */ - unsigned long stolen_base; /* limited to low memory (32-bit) */ - /** PPGTT used for aliasing the PPGTT with the GTT */ struct i915_hw_ppgtt *aliasing_ppgtt; diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c index 8e02344..fd812d5 100644 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -97,10 +97,10 @@ static int i915_setup_compression(struct drm_device *dev, int size) struct drm_mm_node *compressed_fb, *uninitialized_var(compressed_llb); /* Try to over-allocate to reduce reallocations and fragmentation */ - compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen, + compressed_fb = drm_mm_search_free(&dev_priv->gtt.stolen, size <<= 1, 4096, 0); if (!compressed_fb) - compressed_fb = drm_mm_search_free(&dev_priv->mm.stolen, + compressed_fb = drm_mm_search_free(&dev_priv->gtt.stolen, size >>= 1, 4096, 0); if (compressed_fb) compressed_fb = drm_mm_get_block(compressed_fb, size, 4096); @@ -112,7 +112,7 @@ static int i915_setup_compression(struct drm_device *dev, int size) else if (IS_GM45(dev)) { I915_WRITE(DPFC_CB_BASE, compressed_fb->start); } else { - compressed_llb = drm_mm_search_free(&dev_priv->mm.stolen, + compressed_llb = drm_mm_search_free(&dev_priv->gtt.stolen, 4096, 4096, 0); if (compressed_llb) compressed_llb = drm_mm_get_block(compressed_llb, @@ -123,9 +123,9 @@ static int i915_setup_compression(struct drm_device *dev, int size) dev_priv->fbc.compressed_llb = compressed_llb; I915_WRITE(FBC_CFB_BASE, - dev_priv->mm.stolen_base + compressed_fb->start); + dev_priv->gtt.stolen_base + compressed_fb->start); I915_WRITE(FBC_LL_BASE, - dev_priv->mm.stolen_base + compressed_llb->start); + dev_priv->gtt.stolen_base + compressed_llb->start); } dev_priv->fbc.compressed_fb = compressed_fb; @@ -147,7 +147,7 @@ int i915_gem_stolen_setup_compression(struct drm_device *dev, int size) { struct drm_i915_private *dev_priv = dev->dev_private; - if (dev_priv->mm.stolen_base == 0) + if (dev_priv->gtt.stolen_base == 0) return -ENODEV; if (size < dev_priv->fbc.size) @@ -180,7 +180,7 @@ void i915_gem_cleanup_stolen(struct drm_device *dev) struct drm_i915_private *dev_priv = dev->dev_private; i915_gem_stolen_cleanup_compression(dev); - drm_mm_takedown(&dev_priv->mm.stolen); + drm_mm_takedown(&dev_priv->gtt.stolen); } int i915_gem_init_stolen(struct drm_device *dev) @@ -188,18 +188,18 @@ int i915_gem_init_stolen(struct drm_device *dev) struct drm_i915_private *dev_priv = dev->dev_private; int bios_reserved = 0; - dev_priv->mm.stolen_base = i915_stolen_to_physical(dev); - if (dev_priv->mm.stolen_base == 0) + dev_priv->gtt.stolen_base = i915_stolen_to_physical(dev); + if (dev_priv->gtt.stolen_base == 0) return 0; DRM_DEBUG_KMS("found %zd bytes of stolen memory at %08lx\n", - dev_priv->gtt.stolen_size, dev_priv->mm.stolen_base); + dev_priv->gtt.stolen_size, dev_priv->gtt.stolen_base); if (IS_VALLEYVIEW(dev)) bios_reserved = 1024*1024; /* top 1M on VLV/BYT */ /* Basic memrange allocator for stolen space */ - drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->gtt.stolen_size - + drm_mm_init(&dev_priv->gtt.stolen, 0, dev_priv->gtt.stolen_size - bios_reserved); return 0; @@ -234,7 +234,7 @@ i915_pages_create_for_stolen(struct drm_device *dev, sg->offset = offset; sg->length = size; - sg_dma_address(sg) = (dma_addr_t)dev_priv->mm.stolen_base + offset; + sg_dma_address(sg) = (dma_addr_t)dev_priv->gtt.stolen_base + offset; sg_dma_len(sg) = size; return st; @@ -300,14 +300,14 @@ i915_gem_object_create_stolen(struct drm_device *dev, u32 size) struct drm_i915_gem_object *obj; struct drm_mm_node *stolen; - if (dev_priv->mm.stolen_base == 0) + if (dev_priv->gtt.stolen_base == 0) return NULL; DRM_DEBUG_KMS("creating stolen object: size=%x\n", size); if (size == 0) return NULL; - stolen = drm_mm_search_free(&dev_priv->mm.stolen, size, 4096, 0); + stolen = drm_mm_search_free(&dev_priv->gtt.stolen, size, 4096, 0); if (stolen) stolen = drm_mm_get_block(stolen, size, 4096); if (stolen == NULL) @@ -331,7 +331,7 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_device *dev, struct drm_i915_gem_object *obj; struct drm_mm_node *stolen; - if (dev_priv->mm.stolen_base == 0) + if (dev_priv->gtt.stolen_base == 0) return NULL; DRM_DEBUG_KMS("creating preallocated stolen object: stolen_offset=%x, gtt_offset=%x, size=%x\n", @@ -344,7 +344,7 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_device *dev, if (WARN_ON(size == 0)) return NULL; - stolen = drm_mm_create_block(&dev_priv->mm.stolen, + stolen = drm_mm_create_block(&dev_priv->gtt.stolen, stolen_offset, size, false); if (stolen == NULL) { diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index fa70fd0..1e25920 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -1538,7 +1538,7 @@ i915_error_object_create_sized(struct drm_i915_private *dev_priv, } else if (src->stolen) { unsigned long offset; - offset = dev_priv->mm.stolen_base; + offset = dev_priv->gtt.stolen_base; offset += src->stolen->start; offset += i << PAGE_SHIFT; diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index d32734d..02f2dea 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -3464,7 +3464,7 @@ static void valleyview_setup_pctx(struct drm_device *dev) /* BIOS set it up already, grab the pre-alloc'd space */ int pcbr_offset; - pcbr_offset = (pcbr & (~4095)) - dev_priv->mm.stolen_base; + pcbr_offset = (pcbr & (~4095)) - dev_priv->gtt.stolen_base; pctx = i915_gem_object_create_stolen_for_preallocated(dev_priv->dev, pcbr_offset, -1, @@ -3486,7 +3486,7 @@ static void valleyview_setup_pctx(struct drm_device *dev) return; } - pctx_paddr = dev_priv->mm.stolen_base + pctx->stolen->start; + pctx_paddr = dev_priv->gtt.stolen_base + pctx->stolen->start; I915_WRITE(VLV_PCBR, pctx_paddr); out: