From: Nick Hu <nickhu@andestech.com>
To: Paul Walmsley <paul.walmsley@sifive.com>
Cc: "離職Zong Zong-Xian Li(李宗憲)" <zong@andestech.com>,
"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
"Alan Quey-Liang Kao(高魁良)" <alankao@andestech.com>,
"Atish Patra" <Atish.Patra@wdc.com>,
"Greg KH" <gregkh@linuxfoundation.org>,
"Palmer Dabbelt" <palmer@sifive.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"kasan-dev@googlegroups.com" <kasan-dev@googlegroups.com>,
"Christoph Hellwig" <hch@infradead.org>,
"alexios.zavras@intel.com" <alexios.zavras@intel.com>,
"Anup Patel" <Anup.Patel@wdc.com>,
"glider@google.com" <glider@google.com>,
"green.hu@gmail.com" <green.hu@gmail.com>,
"aryabinin@virtuozzo.com" <aryabinin@virtuozzo.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"deanbo422@gmail.com" <deanbo422@gmail.com>,
"linux-riscv@lists.infradead.org"
<linux-riscv@lists.infradead.org>,
"dvyukov@google.com" <dvyukov@google.com>
Subject: Re: [PATCH 1/2] riscv: Add memmove string operation.
Date: Thu, 15 Aug 2019 11:12:25 +0800 [thread overview]
Message-ID: <20190815031225.GA5666@andestech.com> (raw)
In-Reply-To: <alpine.DEB.2.21.9999.1908141002500.18249@viisi.sifive.com>
Hi Paul,
On Wed, Aug 14, 2019 at 10:03:39AM -0700, Paul Walmsley wrote:
> Hi Nick,
>
> On Wed, 14 Aug 2019, Nick Hu wrote:
>
> > On Wed, Aug 14, 2019 at 10:22:15AM +0800, Paul Walmsley wrote:
> > > On Tue, 13 Aug 2019, Palmer Dabbelt wrote:
> > >
> > > > On Mon, 12 Aug 2019 08:04:46 PDT (-0700), Christoph Hellwig wrote:
> > > > > On Wed, Aug 07, 2019 at 03:19:14PM +0800, Nick Hu wrote:
> > > > > > There are some features which need this string operation for compilation,
> > > > > > like KASAN. So the purpose of this porting is for the features like KASAN
> > > > > > which cannot be compiled without it.
> > > > > >
> > > > > > KASAN's string operations would replace the original string operations and
> > > > > > call for the architecture defined string operations. Since we don't have
> > > > > > this in current kernel, this patch provides the implementation.
> > > > > >
> > > > > > This porting refers to the 'arch/nds32/lib/memmove.S'.
> > > > >
> > > > > This looks sensible to me, although my stringop asm is rather rusty,
> > > > > so just an ack and not a real review-by:
> > > >
> > > > FWIW, we just write this in C everywhere else and rely on the compiler to
> > > > unroll the loops. I always prefer C to assembly when possible, so I'd prefer
> > > > if we just adopt the string code from newlib. We have a RISC-V-specific
> > > > memcpy in there, but just use the generic memmove.
> > > >
> > > > Maybe the best bet here would be to adopt the newlib memcpy/memmove as generic
> > > > Linux functions? They're both in C so they should be fine, and they both look
> > > > faster than what's in lib/string.c. Then everyone would benefit and we don't
> > > > need this tricky RISC-V assembly. Also, from the look of it the newlib code
> > > > is faster because the inner loop is unrolled.
> > >
> > > There's a generic memmove implementation in the kernel already:
> > >
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/string.h#n362
> > >
> > > Nick, could you tell us more about why the generic memmove() isn't
> > > suitable?
> >
> > KASAN has its own string operations(memcpy/memmove/memset) because it needs to
> > hook some code to check memory region. It would undefined the original string
> > operations and called the string operations with the prefix '__'. But the
> > generic string operations didn't declare with the prefix. Other archs with
> > KASAN support like arm64 and xtensa all have their own string operations and
> > defined with the prefix.
>
> Thanks for the explanation. What do you think about Palmer's idea to
> define a generic C set of KASAN string operations, derived from the newlib
> code?
>
>
> - Paul
That sounds good to me. But it should be another topic. We need to investigate
it further about replacing something generic and fundamental in lib/string.c
with newlib C functions. Some blind spots may exist. So I suggest, let's
consider KASAN for now.
Nick
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Nick Hu <nickhu@andestech.com>
To: Paul Walmsley <paul.walmsley@sifive.com>
Cc: "Palmer Dabbelt" <palmer@sifive.com>,
"Christoph Hellwig" <hch@infradead.org>,
"Alan Quey-Liang Kao(高魁良)" <alankao@andestech.com>,
"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
"green.hu@gmail.com" <green.hu@gmail.com>,
"deanbo422@gmail.com" <deanbo422@gmail.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"linux-riscv@lists.infradead.org"
<linux-riscv@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"aryabinin@virtuozzo.com" <aryabinin@virtuozzo.com>,
"glider@google.com" <glider@google.com>,
"dvyukov@google.com" <dvyukov@google.com>,
"Anup Patel" <Anup.Patel@wdc.com>,
"Greg KH" <gregkh@linuxfoundation.org>,
"alexios.zavras@intel.com" <alexios.zavras@intel.com>,
"Atish Patra" <Atish.Patra@wdc.com>,
"離職Zong Zong-Xian Li(李宗憲)" <zong@andestech.com>,
"kasan-dev@googlegroups.com" <kasan-dev@googlegroups.com>
Subject: Re: [PATCH 1/2] riscv: Add memmove string operation.
Date: Thu, 15 Aug 2019 11:12:25 +0800 [thread overview]
Message-ID: <20190815031225.GA5666@andestech.com> (raw)
In-Reply-To: <alpine.DEB.2.21.9999.1908141002500.18249@viisi.sifive.com>
Hi Paul,
On Wed, Aug 14, 2019 at 10:03:39AM -0700, Paul Walmsley wrote:
> Hi Nick,
>
> On Wed, 14 Aug 2019, Nick Hu wrote:
>
> > On Wed, Aug 14, 2019 at 10:22:15AM +0800, Paul Walmsley wrote:
> > > On Tue, 13 Aug 2019, Palmer Dabbelt wrote:
> > >
> > > > On Mon, 12 Aug 2019 08:04:46 PDT (-0700), Christoph Hellwig wrote:
> > > > > On Wed, Aug 07, 2019 at 03:19:14PM +0800, Nick Hu wrote:
> > > > > > There are some features which need this string operation for compilation,
> > > > > > like KASAN. So the purpose of this porting is for the features like KASAN
> > > > > > which cannot be compiled without it.
> > > > > >
> > > > > > KASAN's string operations would replace the original string operations and
> > > > > > call for the architecture defined string operations. Since we don't have
> > > > > > this in current kernel, this patch provides the implementation.
> > > > > >
> > > > > > This porting refers to the 'arch/nds32/lib/memmove.S'.
> > > > >
> > > > > This looks sensible to me, although my stringop asm is rather rusty,
> > > > > so just an ack and not a real review-by:
> > > >
> > > > FWIW, we just write this in C everywhere else and rely on the compiler to
> > > > unroll the loops. I always prefer C to assembly when possible, so I'd prefer
> > > > if we just adopt the string code from newlib. We have a RISC-V-specific
> > > > memcpy in there, but just use the generic memmove.
> > > >
> > > > Maybe the best bet here would be to adopt the newlib memcpy/memmove as generic
> > > > Linux functions? They're both in C so they should be fine, and they both look
> > > > faster than what's in lib/string.c. Then everyone would benefit and we don't
> > > > need this tricky RISC-V assembly. Also, from the look of it the newlib code
> > > > is faster because the inner loop is unrolled.
> > >
> > > There's a generic memmove implementation in the kernel already:
> > >
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/string.h#n362
> > >
> > > Nick, could you tell us more about why the generic memmove() isn't
> > > suitable?
> >
> > KASAN has its own string operations(memcpy/memmove/memset) because it needs to
> > hook some code to check memory region. It would undefined the original string
> > operations and called the string operations with the prefix '__'. But the
> > generic string operations didn't declare with the prefix. Other archs with
> > KASAN support like arm64 and xtensa all have their own string operations and
> > defined with the prefix.
>
> Thanks for the explanation. What do you think about Palmer's idea to
> define a generic C set of KASAN string operations, derived from the newlib
> code?
>
>
> - Paul
That sounds good to me. But it should be another topic. We need to investigate
it further about replacing something generic and fundamental in lib/string.c
with newlib C functions. Some blind spots may exist. So I suggest, let's
consider KASAN for now.
Nick
next prev parent reply other threads:[~2019-08-15 3:13 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-07 7:19 [PATCH 0/2] KASAN support for RISC-V Nick Hu
2019-08-07 7:19 ` Nick Hu
2019-08-07 7:19 ` [PATCH 1/2] riscv: Add memmove string operation Nick Hu
2019-08-07 7:19 ` Nick Hu
2019-08-12 15:04 ` Christoph Hellwig
2019-08-12 15:04 ` Christoph Hellwig
2019-08-13 23:50 ` Palmer Dabbelt
2019-08-13 23:50 ` Palmer Dabbelt
2019-08-14 2:22 ` Paul Walmsley
2019-08-14 2:22 ` Paul Walmsley
2019-08-14 3:27 ` Nick Hu
2019-08-14 3:27 ` Nick Hu
2019-08-14 17:03 ` Paul Walmsley
2019-08-15 3:12 ` Nick Hu [this message]
2019-08-15 3:12 ` Nick Hu
2019-08-15 18:27 ` Paul Walmsley
2019-08-19 6:29 ` Nick Hu
2019-08-19 6:29 ` Nick Hu
2019-08-14 18:33 ` Palmer Dabbelt
2019-08-14 18:33 ` Palmer Dabbelt
2019-08-22 15:59 ` Andrey Ryabinin
2019-08-22 15:59 ` Andrey Ryabinin
2019-08-27 9:07 ` Nick Hu
2019-08-27 9:07 ` Nick Hu
2019-08-27 9:33 ` Andrey Ryabinin
2019-08-27 9:33 ` Andrey Ryabinin
2019-08-28 3:06 ` Nick Hu
2019-08-28 3:06 ` Nick Hu
2019-08-07 7:19 ` [PATCH 2/2] riscv: Add KASAN support Nick Hu
2019-08-07 7:19 ` Nick Hu
2019-08-12 15:10 ` Christoph Hellwig
2019-08-12 15:10 ` Christoph Hellwig
2019-08-14 7:44 ` Nick Hu
2019-08-14 7:44 ` Nick Hu
2019-08-22 17:08 ` Andrey Ryabinin
2019-08-22 17:08 ` Andrey Ryabinin
2019-09-03 15:08 ` Daniel Axtens
2019-09-03 15:08 ` Daniel Axtens
2019-09-04 2:24 ` Nick Hu
2019-09-04 2:24 ` Nick Hu
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=20190815031225.GA5666@andestech.com \
--to=nickhu@andestech.com \
--cc=Anup.Patel@wdc.com \
--cc=Atish.Patra@wdc.com \
--cc=alankao@andestech.com \
--cc=alexios.zavras@intel.com \
--cc=aou@eecs.berkeley.edu \
--cc=aryabinin@virtuozzo.com \
--cc=deanbo422@gmail.com \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=green.hu@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@sifive.com \
--cc=paul.walmsley@sifive.com \
--cc=tglx@linutronix.de \
--cc=zong@andestech.com \
/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.