All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Huang Shijie <shijie8@gmail.com>,
	linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
	Roy Lee <roylee@paypal.com>,
	Mike Voytovich <mvoytovich@paypal.com>,
	David Woodhouse <dwmw2@infradead.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 2/4] mtd: nand: gpmi: add gpmi_move_bits function
Date: Thu, 20 Nov 2014 10:42:53 +0100	[thread overview]
Message-ID: <20141120104253.23b543d8@bbrezillon> (raw)
In-Reply-To: <20141120092209.GD3212@norris-Latitude-E6410>

On Thu, 20 Nov 2014 01:22:09 -0800
Brian Norris <computersforpeace@gmail.com> wrote:

> On Mon, Oct 20, 2014 at 10:46:15AM +0200, Boris Brezillon wrote:
> > Add a new function to move bits (not bytes) from a memory region to
> > another one.
> > This function is similar to memmove except it acts at bit level.
> > This function is needed to implement GPMI raw access functions, given the
> > fact that ECC engine does not pad ECC bits to the next byte boundary.
> > 
> > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > ---
> >  drivers/mtd/nand/gpmi-nand/gpmi-lib.c  | 129 +++++++++++++++++++++++++++++++++
> >  drivers/mtd/nand/gpmi-nand/gpmi-nand.h |   4 +
> >  2 files changed, 133 insertions(+)
> > 
> > diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > index 87e658c..5d4f140 100644
> > --- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > +++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > @@ -1353,3 +1353,132 @@ int gpmi_read_page(struct gpmi_nand_data *this,
> >  	set_dma_type(this, DMA_FOR_READ_ECC_PAGE);
> >  	return start_dma_with_bch_irq(this, desc);
> >  }
> > +
> > +void gpmi_move_bits(u8 *dst, size_t dst_bit_off,
> > +		    const u8 *src, size_t src_bit_off,
> > +		    size_t nbits)
> 
> Two things:
> 
>  1) Yikes! This function is a little hairy.

Yes I know, and if you see a much simpler algorithm to do that, I'm
really interested :-).

> 
>  2) This function really deserves a full comment header (kerneldoc?); it
>  needs to have clearly-documented high-level semantics.

I'll add a kernel doc header.

> 
> I'm not sure how to address #1, as the complexity is necessary. Did you
> run this through some unit tests, at least?

No, but I did test it with several ECC configs.
Anyway, if I develop such unit tests, do you want me to put them in the
driver code (under an #ifdef section) ?


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: boris.brezillon@free-electrons.com (Boris Brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 2/4] mtd: nand: gpmi: add gpmi_move_bits function
Date: Thu, 20 Nov 2014 10:42:53 +0100	[thread overview]
Message-ID: <20141120104253.23b543d8@bbrezillon> (raw)
In-Reply-To: <20141120092209.GD3212@norris-Latitude-E6410>

On Thu, 20 Nov 2014 01:22:09 -0800
Brian Norris <computersforpeace@gmail.com> wrote:

> On Mon, Oct 20, 2014 at 10:46:15AM +0200, Boris Brezillon wrote:
> > Add a new function to move bits (not bytes) from a memory region to
> > another one.
> > This function is similar to memmove except it acts at bit level.
> > This function is needed to implement GPMI raw access functions, given the
> > fact that ECC engine does not pad ECC bits to the next byte boundary.
> > 
> > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > ---
> >  drivers/mtd/nand/gpmi-nand/gpmi-lib.c  | 129 +++++++++++++++++++++++++++++++++
> >  drivers/mtd/nand/gpmi-nand/gpmi-nand.h |   4 +
> >  2 files changed, 133 insertions(+)
> > 
> > diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > index 87e658c..5d4f140 100644
> > --- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > +++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > @@ -1353,3 +1353,132 @@ int gpmi_read_page(struct gpmi_nand_data *this,
> >  	set_dma_type(this, DMA_FOR_READ_ECC_PAGE);
> >  	return start_dma_with_bch_irq(this, desc);
> >  }
> > +
> > +void gpmi_move_bits(u8 *dst, size_t dst_bit_off,
> > +		    const u8 *src, size_t src_bit_off,
> > +		    size_t nbits)
> 
> Two things:
> 
>  1) Yikes! This function is a little hairy.

Yes I know, and if you see a much simpler algorithm to do that, I'm
really interested :-).

> 
>  2) This function really deserves a full comment header (kerneldoc?); it
>  needs to have clearly-documented high-level semantics.

I'll add a kernel doc header.

> 
> I'm not sure how to address #1, as the complexity is necessary. Did you
> run this through some unit tests, at least?

No, but I did test it with several ECC configs.
Anyway, if I develop such unit tests, do you want me to put them in the
driver code (under an #ifdef section) ?


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
	linux-mtd@lists.infradead.org, Huang Shijie <shijie8@gmail.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Mike Voytovich <mvoytovich@paypal.com>,
	Roy Lee <roylee@paypal.com>
Subject: Re: [PATCH v4 2/4] mtd: nand: gpmi: add gpmi_move_bits function
Date: Thu, 20 Nov 2014 10:42:53 +0100	[thread overview]
Message-ID: <20141120104253.23b543d8@bbrezillon> (raw)
In-Reply-To: <20141120092209.GD3212@norris-Latitude-E6410>

On Thu, 20 Nov 2014 01:22:09 -0800
Brian Norris <computersforpeace@gmail.com> wrote:

> On Mon, Oct 20, 2014 at 10:46:15AM +0200, Boris Brezillon wrote:
> > Add a new function to move bits (not bytes) from a memory region to
> > another one.
> > This function is similar to memmove except it acts at bit level.
> > This function is needed to implement GPMI raw access functions, given the
> > fact that ECC engine does not pad ECC bits to the next byte boundary.
> > 
> > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > ---
> >  drivers/mtd/nand/gpmi-nand/gpmi-lib.c  | 129 +++++++++++++++++++++++++++++++++
> >  drivers/mtd/nand/gpmi-nand/gpmi-nand.h |   4 +
> >  2 files changed, 133 insertions(+)
> > 
> > diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > index 87e658c..5d4f140 100644
> > --- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > +++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
> > @@ -1353,3 +1353,132 @@ int gpmi_read_page(struct gpmi_nand_data *this,
> >  	set_dma_type(this, DMA_FOR_READ_ECC_PAGE);
> >  	return start_dma_with_bch_irq(this, desc);
> >  }
> > +
> > +void gpmi_move_bits(u8 *dst, size_t dst_bit_off,
> > +		    const u8 *src, size_t src_bit_off,
> > +		    size_t nbits)
> 
> Two things:
> 
>  1) Yikes! This function is a little hairy.

Yes I know, and if you see a much simpler algorithm to do that, I'm
really interested :-).

> 
>  2) This function really deserves a full comment header (kerneldoc?); it
>  needs to have clearly-documented high-level semantics.

I'll add a kernel doc header.

> 
> I'm not sure how to address #1, as the complexity is necessary. Did you
> run this through some unit tests, at least?

No, but I did test it with several ECC configs.
Anyway, if I develop such unit tests, do you want me to put them in the
driver code (under an #ifdef section) ?


-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2014-11-20  9:42 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-20  8:46 [PATCH v4 0/4] mtd: nand: gpmi: add proper raw access support Boris Brezillon
2014-10-20  8:46 ` Boris Brezillon
2014-10-20  8:46 ` Boris Brezillon
2014-10-20  8:46 ` [PATCH v4 1/4] mtd: nand: provide detailed description for raw read/write page methods Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-10-25  3:55   ` Huang Shijie
2014-10-25  3:55     ` Huang Shijie
2014-10-25  3:55     ` Huang Shijie
2014-11-05 11:40     ` Brian Norris
2014-11-05 11:40       ` Brian Norris
2014-11-05 11:40       ` Brian Norris
2014-11-20  8:06   ` Brian Norris
2014-11-20  8:06     ` Brian Norris
2014-11-20  8:06     ` Brian Norris
2014-11-21  1:13     ` Huang Shijie
2014-11-21  1:13       ` Huang Shijie
2014-11-21  1:13       ` Huang Shijie
2014-10-20  8:46 ` [PATCH v4 2/4] mtd: nand: gpmi: add gpmi_move_bits function Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-11-20  9:22   ` Brian Norris
2014-11-20  9:22     ` Brian Norris
2014-11-20  9:22     ` Brian Norris
2014-11-20  9:42     ` Boris Brezillon [this message]
2014-11-20  9:42       ` Boris Brezillon
2014-11-20  9:42       ` Boris Brezillon
2014-11-20 18:14       ` Brian Norris
2014-11-20 18:14         ` Brian Norris
2014-11-20 18:14         ` Brian Norris
2014-10-20  8:46 ` [PATCH v4 3/4] mtd: nand: gpmi: add proper raw access support Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-11-20  9:08   ` Brian Norris
2014-11-20  9:08     ` Brian Norris
2014-11-20  9:08     ` Brian Norris
2014-11-20  9:35     ` Boris Brezillon
2014-11-20  9:35       ` Boris Brezillon
2014-11-20  9:35       ` Boris Brezillon
2014-10-20  8:46 ` [PATCH v4 4/4] mtd: nand: gpmi: add raw oob access functions Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-10-20  8:46   ` Boris Brezillon
2014-11-20  9:23 ` [PATCH v4 0/4] mtd: nand: gpmi: add proper raw access support Brian Norris
2014-11-20  9:23   ` Brian Norris
2014-11-20  9:23   ` Brian Norris
2014-11-21  1:19   ` Huang Shijie
2014-11-21  1:19     ` Huang Shijie
2014-11-21  1:19     ` Huang Shijie

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=20141120104253.23b543d8@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mvoytovich@paypal.com \
    --cc=roylee@paypal.com \
    --cc=shijie8@gmail.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.