From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH] drm/i915: Skip Stolen Memory first page. Date: Wed, 30 Jul 2014 20:57:04 -0700 Message-ID: <20140731035703.GA1284@bwidawsk.net> References: <1406742466-25128-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id B1AAD6E4AA for ; Wed, 30 Jul 2014 20:57:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1406742466-25128-1-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Wed, Jul 30, 2014 at 10:47:46AM -0700, Rodrigo Vivi wrote: > WA to skip the first page of stolen memory due to sporadic HW write on *CS Idle > > Signed-off-by: Rodrigo Vivi > --- > drivers/gpu/drm/i915/i915_gem_stolen.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c > index 21c025a..3acefb3 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -290,6 +290,7 @@ int i915_gem_init_stolen(struct drm_device *dev) > { > struct drm_i915_private *dev_priv = dev->dev_private; > int bios_reserved = 0; > + int initial_reserved = 0; > > #ifdef CONFIG_INTEL_IOMMU > if (intel_iommu_gfx_mapped && INTEL_INFO(dev)->gen < 8) { > @@ -314,9 +315,13 @@ int i915_gem_init_stolen(struct drm_device *dev) > if (WARN_ON(bios_reserved > dev_priv->gtt.stolen_size)) > return 0; > > + /* WaSkipStolenMemoryFirstPage */ > + if (INTEL_INFO(dev)->gen >= 8) > + initial_reserved = 4096; > + > /* Basic memrange allocator for stolen space */ > - drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->gtt.stolen_size - > - bios_reserved); > + drm_mm_init(&dev_priv->mm.stolen, initial_reserved, > + dev_priv->gtt.stolen_size - bios_reserved); > > return 0; > } Actually, you need to fix the size in the initialization: drm_mm_init(stolen, 4096, dev_priv->gtt.stolen_size - bios_reserved - 4096); Also, I think we have a bug here today, you need to dev_priv->gtt.stolen_size -= ... Or else we don't have the correct assertion in i915_pages_create_for_stolen(). I didn't look carefully if it's safe to currently do it, but it does seem wrong to me as it is. With the first fix (I didn't verify that's the real workaround name), Reviewed-by: Ben Widawsky -- Ben Widawsky, Intel Open Source Technology Center