From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752259AbbLMPnq (ORCPT ); Sun, 13 Dec 2015 10:43:46 -0500 Received: from out21.biz.mail.alibaba.com ([205.204.114.132]:33657 "EHLO out21.biz.mail.alibaba.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751924AbbLMPno (ORCPT ); Sun, 13 Dec 2015 10:43:44 -0500 X-Greylist: delayed 23791 seconds by postgrey-1.27 at vger.kernel.org; Sun, 13 Dec 2015 10:43:43 EST X-Alimail-AntiSpam: AC=CONTINUE;BC=0.0749561|-1;FP=0|0|0|0|0|-1|-1|-1;HT=e02c03285;MF=chengang@emindsoft.com.cn;NM=1;PH=DS;RN=7;RT=7;SR=0;TI=SMTPD_----4LJ.CO2_1450021384; Message-ID: <566D92B9.7040805@emindsoft.com.cn> Date: Sun, 13 Dec 2015 23:46:01 +0800 From: Chen Gang User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: arnd@arndb.de, Andrew Morton CC: Linux-Arch , "linux-kernel@vger.kernel.org" , Chen Gang , chenwei@emindsoft.com.cn, james.hogan@imgtec.com Subject: Re: [PATCH] include/asm-generic/pgtable.h: Check once and return for pgprot_modify References: <566D3662.6080804@emindsoft.com.cn> In-Reply-To: <566D3662.6080804@emindsoft.com.cn> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Oh, after check again, it looks my original comments are not precise: they check oldprot, but set newprot. After check pgprot_noncached, pgprot_writecombine, and pgprot_device again, for me, if still in order: 1st noncached, 2nd writecombine, 3rd device, we can still treate them exclusive with each other: - For pgprot_device, Only amd64 redefine it, which is exclusive with the others (or the precisely same as one of the others). - For pgprot_writecombine, except metag and x86, all the other archs are exclusive with (or same as) pgprot_noncached. for metag arch, pgprot_writecombine is the part of pgprot_noncached. for x86 arch, it has its own pgprot_modify. Thanks. On 12/13/15 17:12, Chen Gang wrote: > > pgprot_val() likes an empty operation, and all three checking statements > are related with oldprot, so only check once is enough, the reason is: > > - if both "oldprot == pgprot_noncached(oldprot)" and "oldprot == > pgprot_writecombine(oldprot)" are satisfied. > > - So "pgprot_noncached(oldprot) == pgprot_writecombine(oldprot)", too. > > - So as the result, it is still equal to check once (for pgprot_device > can get the same result). > > Then can return directly. > > Signed-off-by: Chen Gang > --- > include/asm-generic/pgtable.h | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h > index 069536a..cd9e7c4 100644 > --- a/include/asm-generic/pgtable.h > +++ b/include/asm-generic/pgtable.h > @@ -306,11 +306,11 @@ static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b) > static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) > { > if (pgprot_val(oldprot) == pgprot_val(pgprot_noncached(oldprot))) > - newprot = pgprot_noncached(newprot); > + return pgprot_noncached(newprot); > if (pgprot_val(oldprot) == pgprot_val(pgprot_writecombine(oldprot))) > - newprot = pgprot_writecombine(newprot); > + return pgprot_writecombine(newprot); > if (pgprot_val(oldprot) == pgprot_val(pgprot_device(oldprot))) > - newprot = pgprot_device(newprot); > + return pgprot_device(newprot); > return newprot; > } > #endif > -- Chen Gang (陈刚) Open, share, and attitude like air, water, and life which God blessed