Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752051Ab0GABYq (ORCPT ); Wed, 30 Jun 2010 21:24:46 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:33517 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751429Ab0GABYp convert rfc822-to-8bit (ORCPT ); Wed, 30 Jun 2010 21:24:45 -0400 MIME-Version: 1.0 In-Reply-To: References: <1264605932-8540-1-git-send-email-chris@chris-wilson.co.uk> <89k77n$ms73l9@fmsmga001.fm.intel.com> <89khjo$fr177d@orsmga002.jf.intel.com> Date: Wed, 30 Jun 2010 18:24:04 -0700 Message-ID: Subject: Re: [Intel-gfx] [PATCH] drm/i915: Selectively enable self-reclaim From: Linus Torvalds To: Chris Wilson Cc: Dave Airlie , earny@net4u.de, Roman Jarosz , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, jcnengel@googlemail.com, "A. Boulan" , Hugh Dickins , Pekka Enberg , A Rojas , KOSAKI Motohiro , rientjes@google.com, michael@reinelt.co.at, stable@kernel.org, Vefa Bicakci Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2348 Lines: 56 On Wed, Jun 30, 2010 at 4:07 PM, Linus Torvalds wrote: > > That commit changes the page cache allocation to use > > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mapping_gfp_mask (mapping) | > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__GFP_COLD | > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?gfpmask); > > if I read it right. And the default mapping_gfp_mask() is > GFP_HIGHUSER_MOVABLE, so I think you get all of > (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | __GFP_HIGHMEM) > set by default. .. and then I left out the one flag I _meant_ to have there, namely __GFP_MOVABLE. > The old code didn't just play games with ~__GFP_NORETRY and change > that at runtime (which was buggy - no locking, no protection, no > nothing), it also initialized the gfp mask. And that code also got > removed: In fact, I don't really see why we should use that mapping_gfp_mask() at all, since all allocations should be going through that i915_gem_object_get_pages() function anyway. So why not just change that function to ignore the default gfp mask for the mapping, and just use the mask that the o915 driver wants? Btw, why did it want to mark the pages reclaimable? Anyway, what I'm suggesting somebody who sees this test is just something like the patch below (whitespace-damage - I'm cutting and pasting, it's a trivial one-liner). Does this change any behavior? Vefa? Linus --- diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 9ded3da..ec8ed6b 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2239,7 +2239,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj, mapping = inode->i_mapping; for (i = 0; i < page_count; i++) { page = read_cache_page_gfp(mapping, i, - mapping_gfp_mask (mapping) | + GFP_HIGHMEM | __GFP_COLD | gfpmask); if (IS_ERR(page)) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/