From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755703AbZDUIpp (ORCPT ); Tue, 21 Apr 2009 04:45:45 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755086AbZDUIpZ (ORCPT ); Tue, 21 Apr 2009 04:45:25 -0400 Received: from gir.skynet.ie ([193.1.99.77]:53954 "EHLO gir.skynet.ie" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755444AbZDUIpX (ORCPT ); Tue, 21 Apr 2009 04:45:23 -0400 Date: Tue, 21 Apr 2009 09:45:19 +0100 From: Mel Gorman To: Pekka Enberg Cc: Linux Memory Management List , KOSAKI Motohiro , Christoph Lameter , Nick Piggin , Linux Kernel Mailing List , Lin Ming , Zhang Yanmin , Peter Zijlstra , Andrew Morton Subject: Re: [PATCH 12/25] Remove a branch by assuming __GFP_HIGH == ALLOC_HIGH Message-ID: <20090421084519.GE12713@csn.ul.ie> References: <1240266011-11140-1-git-send-email-mel@csn.ul.ie> <1240266011-11140-13-git-send-email-mel@csn.ul.ie> <1240299982.771.48.camel@penberg-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1240299982.771.48.camel@penberg-laptop> User-Agent: Mutt/1.5.17+20080114 (2008-01-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 21, 2009 at 10:46:22AM +0300, Pekka Enberg wrote: > On Mon, 2009-04-20 at 23:19 +0100, Mel Gorman wrote: > > Allocations that specify __GFP_HIGH get the ALLOC_HIGH flag. If these > > flags are equal to each other, we can eliminate a branch. > > > > [akpm@linux-foundation.org: Suggested the hack] > > Yikes! > > > Signed-off-by: Mel Gorman > > --- > > mm/page_alloc.c | 4 ++-- > > 1 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index 51e1ded..b13fc29 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -1639,8 +1639,8 @@ gfp_to_alloc_flags(gfp_t gfp_mask) > > * policy or is asking for __GFP_HIGH memory. GFP_ATOMIC requests will > > * set both ALLOC_HARDER (!wait) and ALLOC_HIGH (__GFP_HIGH). > > */ > > - if (gfp_mask & __GFP_HIGH) > > - alloc_flags |= ALLOC_HIGH; > > + VM_BUG_ON(__GFP_HIGH != ALLOC_HIGH); > > + alloc_flags |= (gfp_mask & __GFP_HIGH); > > Shouldn't you then also change ALLOC_HIGH to use __GFP_HIGH or at least > add a comment somewhere? > That might break in weird ways if __GFP_HIGH changes in value then. I can add a comment though /* * __GFP_HIGH is assumed to be the same as ALLOC_HIGH to save a branch. * Check for DEBUG_VM that the assumption is still correct. It cannot be * checked at compile-time due to casting */ ? > > > > if (!wait) { > > alloc_flags |= ALLOC_HARDER; > -- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab