From patchwork Mon Jan 21 22:10:34 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Widawsky X-Patchwork-Id: 2014721 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id 6904E3FDD2 for ; Mon, 21 Jan 2013 22:14:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5A777E5C33 for ; Mon, 21 Jan 2013 14:14:06 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from shiva.chad-versace.us (209-20-75-48.static.cloud-ips.com [209.20.75.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 76E9BE6609 for ; Mon, 21 Jan 2013 14:11:09 -0800 (PST) Received: by shiva.chad-versace.us (Postfix, from userid 1005) id 0606188121; Mon, 21 Jan 2013 22:13:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on shiva.chad-versace.us X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=unavailable version=3.3.2 Received: from lundgren.nims.intel.com (jfdmzpr06-ext.jf.intel.com [134.134.137.75]) by shiva.chad-versace.us (Postfix) with ESMTPSA id 4C2448845B; Mon, 21 Jan 2013 22:13:38 +0000 (UTC) From: Ben Widawsky To: intel-gfx@lists.freedesktop.org Date: Mon, 21 Jan 2013 14:10:34 -0800 Message-Id: <1358806236-1143-4-git-send-email-ben@bwidawsk.net> X-Mailer: git-send-email 1.8.1.1 In-Reply-To: <1358806236-1143-1-git-send-email-ben@bwidawsk.net> References: <1358806236-1143-1-git-send-email-ben@bwidawsk.net> Cc: Ben Widawsky Subject: [Intel-gfx] [PATCH 3/5] drm/i915: Extract gtt stolen calculations 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 Signed-off-by: Ben Widawsky --- drivers/gpu/drm/i915/i915_drv.h | 3 +++ drivers/gpu/drm/i915/i915_gem_gtt.c | 20 +++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 4c0e670..d462875 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -369,6 +369,9 @@ struct i915_gtt_operations { int (*gmch_probe)(struct i915_gtt *gtt, size_t *gtt_total, size_t *stolen); void (*gmch_remove)(struct i915_gtt *gtt); + + /* GEN6+ helpers */ + size_t (*get_stolen_size)(u16 gmch_ctl); }; /* The Graphics Translation Table is the way in which GEN hardware translates a diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index d383add..2f2b1ba 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -707,11 +707,7 @@ static int gen6_gmch_probe(struct i915_gtt *gtt, pci_read_config_word(dev->pdev, SNB_GMCH_CTRL, &snb_gmch_ctl); gtt_size = gen6_get_total_gtt_size(snb_gmch_ctl); - if (IS_GEN7(dev)) - *stolen = gen7_get_stolen_size(snb_gmch_ctl); - else - *stolen = gen6_get_stolen_size(snb_gmch_ctl); - + *stolen = gtt->gtt_ops->get_stolen_size(snb_gmch_ctl); *gtt_total = (gtt_size / sizeof(gtt_pte_t)) << PAGE_SHIFT; /* For GEN6+ the PTEs for the ggtt live at 2MB + BAR0 */ @@ -740,6 +736,13 @@ void gen6_gmch_remove(struct i915_gtt *gtt) static const struct i915_gtt_operations gen6_gtt_ops = { .gmch_probe = gen6_gmch_probe, .gmch_remove = gen6_gmch_remove, + .get_stolen_size = gen6_get_stolen_size, +}; + +static const struct i915_gtt_operations gen7_gtt_ops = { + .gmch_probe = gen6_gmch_probe, + .gmch_remove = gen6_gmch_remove, + .get_stolen_size = gen7_get_stolen_size, }; static int i915_gmch_probe(struct i915_gtt *gtt, @@ -792,9 +795,12 @@ int i915_gem_gtt_init(struct drm_device *dev) if (INTEL_INFO(dev)->gen <= 5) gtt->gtt_ops = &legacy_gtt_ops; - else + else if(IS_GEN6(dev)) gtt->gtt_ops = &gen6_gtt_ops; - + else if(IS_GEN7(dev)) + gtt->gtt_ops = &gen7_gtt_ops; + else + BUG(); ret = gtt->gtt_ops->gmch_probe(gtt, &dev_priv->gtt.total, &dev_priv->gtt.stolen_size); if (ret)