Received: by 10.192.165.148 with SMTP id m20csp186506imm; Fri, 4 May 2018 08:41:03 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqCHTzsBvUSl+BYG7GKUF2mhex/t3S7uK7J0mfN9C1AT+3kWwk70aTLJa/Xh50sa3yt0gor X-Received: by 2002:a65:635a:: with SMTP id p26-v6mr22669149pgv.163.1525448463909; Fri, 04 May 2018 08:41:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525448463; cv=none; d=google.com; s=arc-20160816; b=QW2tFNFaKTAbX3/16YpuvYZy2KlFqVO4iCieznY68gfbFpCeGUWHIoyhX8kEFiRCgr ZK+FJl4I4ux1s9LLkXkzmQTh1w7v7+TdOzY3SUF3k7v0JhEUvGi7yLxIAaLgpeK2jpHj XXbeTjqBOTOmClAOJGbKNJi4S6q45J7a3rfEhTvdAodxpnqx8HlxTNFcuL1yTOkh1Tga satQrtC/mfUyxqHtqdVDMdfN/kXxlzhNWiFJBPdC+7jOCcST0LlM23LAePVf2u7OeCTy vu55GRPme5EKAwHiysES8fiuassxU8RPOJ1xNl9+Zmy946umSwG3EDhuFcZ9kRwOTahm C2ZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=iHc8C3JEP856In5rGj+Fu4ggWN/BkvW+3fOPyImtUf0=; b=0hnInsj1Sbk1Er9VRj/CKayQW1oXYOz3t8TOqrx2D1OSQ5woDATfr9AX/YrUg/Z5O5 6y1KGrEuSNp9PUUQgMKSYEjs+I/CyMK8O9ueUUy9mX8/q0Rg65Yxa7g86iG52hTlIUf+ oXwhp1Y6SjGGxwXWYIoj0JByzGJKeS5OAMqn3srZlvfunyztQtKgbd0egeuR4x72cEJ0 eDvgthQP+fkvLFFfVz7UKj39npeSaVPMOewTCUBTfbXGP4htnj1oOlioTkpt3XSAODGy 5lZGvDfccBVJnVwBv/HSEbuJM6ro4448Iog80dzGqWgVxxZuyqc4SiV9OuTvEUF7JI2i 86Pw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=fHZ7xDPP; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e24si10901678pff.30.2018.05.04.08.40.50; Fri, 04 May 2018 08:41:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=fHZ7xDPP; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751493AbeEDPkS (ORCPT + 99 others); Fri, 4 May 2018 11:40:18 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:37926 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751262AbeEDPkR (ORCPT ); Fri, 4 May 2018 11:40:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=iHc8C3JEP856In5rGj+Fu4ggWN/BkvW+3fOPyImtUf0=; b=fHZ7xDPPIJOhuVepNl5H42VS6 AOHoRl9GIKn/CsXmv7DlBdv9aBKsodju9590c1ETukhg0BVyS1HCSgDRcbluugxSIgwlbo2VRIDGy 1JcV7rihpjn6Q1o2t3+309Fez7JztSiQVr5u4KKo1gwtJkcU1O2XnIK0HgrqbGrG8Vx52ZVCe6+pn 9OSvZqAz0uU3+P9LLEA3Y4GVGwBSrxVQZ+GrdAjINUSDLKGJK3WsXY34eK+o+/SxSWIwTEgXrf/eU iTyyVDbf45BXZR2vnJJH6dAJVV5R/poykJiFf1Gmw5/iuI09POKszGUGnD94/IdmkitMuswWAY2yf +5Pwkz7iw==; Received: from willy by bombadil.infradead.org with local (Exim 4.90_1 #2 (Red Hat Linux)) id 1fEcoX-0002uK-9k; Fri, 04 May 2018 15:40:05 +0000 Date: Fri, 4 May 2018 08:40:04 -0700 From: Matthew Wilcox To: Michal Hocko Cc: Huaisheng Ye , akpm@linux-foundation.org, linux-mm@kvack.org, vbabka@suse.cz, mgorman@techsingularity.net, pasha.tatashin@oracle.com, alexander.levin@verizon.com, hannes@cmpxchg.org, penguin-kernel@I-love.SAKURA.ne.jp, colyli@suse.de, chengnt@lenovo.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/3] include/linux/gfp.h: use unsigned int in gfp_zone Message-ID: <20180504154004.GB29829@bombadil.infradead.org> References: <1525416729-108201-1-git-send-email-yehs1@lenovo.com> <1525416729-108201-3-git-send-email-yehs1@lenovo.com> <20180504133533.GR4535@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180504133533.GR4535@dhcp22.suse.cz> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 04, 2018 at 03:35:33PM +0200, Michal Hocko wrote: > On Fri 04-05-18 14:52:08, Huaisheng Ye wrote: > > Suggest using unsigned int instead of int for bit within gfp_zone. > > @@ -401,7 +401,7 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) > > static inline enum zone_type gfp_zone(gfp_t flags) > > { > > enum zone_type z; > > - int bit = (__force int) (flags & GFP_ZONEMASK); > > + unsigned int bit = (__force unsigned int) (flags & GFP_ZONEMASK); > > > > z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) & > > ((1 << GFP_ZONES_SHIFT) - 1); That reminds me. I wanted to talk about getting rid of GFP_ZONE_TABLE. Instead, we should encode the zone number in the bottom three bits of the gfp mask, while preserving the rules that ZONE_NORMAL gets encoded as zero (so GFP_KERNEL | GFP_HIGHMEM continues to work) and also leaving __GFP_MOVABLE in bit 3 so that it can continue to be used as a flag. So I was thinking ... -#define ___GFP_DMA 0x01u -#define ___GFP_HIGHMEM 0x02u -#define ___GFP_DMA32 0x04u +#define ___GFP_ZONE_MASK 0x07u #define __GFP_DMA ((__force gfp_t)OPT_ZONE_DMA ^ ZONE_NORMAL) #define __GFP_HIGHMEM ((__force gfp_t)OPT_ZONE_HIGHMEM ^ ZONE_NORMAL) #define __GFP_DMA32 ((__force gfp_t)OPT_ZONE_DMA32 ^ ZONE_NORMAL) #define __GFP_MOVABLE ((__force gfp_t)ZONE_MOVABLE ^ ZONE_NORMAL | \ ___GFP_MOVABLE) #define GFP_ZONEMASK ((__force gfp_t)___GFP_ZONE_MASK | ___GFP_MOVABLE) Then we can delete GFP_ZONE_TABLE and GFP_ZONE_BAD. gfp_zone simply becomes: static inline enum zone_type gfp_zone(gfp_t flags) { return ((__force int)flags & ___GFP_ZONE_MASK) ^ ZONE_NORMAL; } Huaisheng Ye, would you have time to investigate this idea?