From: Chen Gang <chengang@emindsoft.com.cn>
To: arnd@arndb.de, Andrew Morton <akpm@linux-foundation.org>
Cc: Linux-Arch <linux-arch@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Chen Gang <gang.chen.5i5j@gmail.com>,
chenwei@emindsoft.com.cn, james.hogan@imgtec.com
Subject: Re: [PATCH] include/asm-generic/pgtable.h: Check once and return for pgprot_modify
Date: Sun, 13 Dec 2015 23:46:01 +0800 [thread overview]
Message-ID: <566D92B9.7040805@emindsoft.com.cn> (raw)
In-Reply-To: <566D3662.6080804@emindsoft.com.cn>
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 <gang.chen.5i5j@gmail.com>
> ---
> 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
prev parent reply other threads:[~2015-12-13 15:43 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-13 9:12 [PATCH] include/asm-generic/pgtable.h: Check once and return for pgprot_modify Chen Gang
2015-12-13 15:46 ` Chen Gang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=566D92B9.7040805@emindsoft.com.cn \
--to=chengang@emindsoft.com.cn \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=chenwei@emindsoft.com.cn \
--cc=gang.chen.5i5j@gmail.com \
--cc=james.hogan@imgtec.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.