From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Lior Amsalem <alior@marvell.com>,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Jason Cooper <jason@lakedaemon.net>,
Tawfik Bayouk <tawfik@marvell.com>,
Daniel Mack <zonque@gmail.com>,
Huang Shijie <b32955@freescale.com>,
linux-mtd@lists.infradead.org,
Gregory Clement <gregory.clement@free-electrons.com>,
Willy Tarreau <w@1wt.eu>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 12/28] mtd: nand: pxa3xx: Use a completion to signal device ready
Date: Tue, 5 Nov 2013 21:46:42 -0300 [thread overview]
Message-ID: <20131106004641.GG11759@localhost> (raw)
In-Reply-To: <20131106002759.GF11759@localhost>
On Tue, Nov 05, 2013 at 09:27:59PM -0300, Ezequiel Garcia wrote:
> >
> > I believe your handling of this 'is_ready' bit is a little unwise, as
> > you are actually creating extra concurrency that is unneeded. I'll
> > summarize what you're doing with this 'is_ready' field:
> >
> > cmdfunc() -> sets info->is_ready=0 for appropriate commands
> > -> kicks off the hardware
> >
> > The following two sequences may then occur concurrently:
> >
> > (1) pxa3xx_nand_irq -> ready interrupt occurs
> > -> set info->is_ready=1
> > -> signal 'dev_ready' completion
> >
> > (2) waitfunc -> check info->is_ready, if it is 0...
> > |_ ... wait for the dev_ready completion
> >
> > Instead of setting info->is_ready=1 under (1), you could set it in (2),
So, after some more careful thought and some testings, it seems you're
correct. Setting is_read in waitfunc() results in a non-racy solution and
the atomic_t can go away.
I'll take a look at the other remaining issues and see about preparing
a v4, so we can try to converge quick enough for v3.14.
Thanks!
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: ezequiel.garcia@free-electrons.com (Ezequiel Garcia)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 12/28] mtd: nand: pxa3xx: Use a completion to signal device ready
Date: Tue, 5 Nov 2013 21:46:42 -0300 [thread overview]
Message-ID: <20131106004641.GG11759@localhost> (raw)
In-Reply-To: <20131106002759.GF11759@localhost>
On Tue, Nov 05, 2013 at 09:27:59PM -0300, Ezequiel Garcia wrote:
> >
> > I believe your handling of this 'is_ready' bit is a little unwise, as
> > you are actually creating extra concurrency that is unneeded. I'll
> > summarize what you're doing with this 'is_ready' field:
> >
> > cmdfunc() -> sets info->is_ready=0 for appropriate commands
> > -> kicks off the hardware
> >
> > The following two sequences may then occur concurrently:
> >
> > (1) pxa3xx_nand_irq -> ready interrupt occurs
> > -> set info->is_ready=1
> > -> signal 'dev_ready' completion
> >
> > (2) waitfunc -> check info->is_ready, if it is 0...
> > |_ ... wait for the dev_ready completion
> >
> > Instead of setting info->is_ready=1 under (1), you could set it in (2),
So, after some more careful thought and some testings, it seems you're
correct. Setting is_read in waitfunc() results in a non-racy solution and
the atomic_t can go away.
I'll take a look at the other remaining issues and see about preparing
a v4, so we can try to converge quick enough for v3.14.
Thanks!
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
next prev parent reply other threads:[~2013-11-06 0:46 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-05 12:55 [PATCH v3 00/28] Armada 370/XP NAND support Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 01/28] clk: mvebu: Add Core Divider clock Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 02/28] ARM: mvebu: Add Core Divider clock device-tree binding Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 03/28] ARM: mvebu: Add a 2 GHz fixed-clock Armada 370/XP Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 04/28] ARM: mvebu: Add the core-divider clock to " Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 05/28] mtd: nand: pxa3xx: Make config menu show supported platforms Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 06/28] mtd: nand: pxa3xx: Prevent sub-page writes Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 07/28] mtd: nand: pxa3xx: Early variant detection Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 08/28] mtd: nand: pxa3xx: Use chip->cmdfunc instead of the internal Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 09/28] mtd: nand: pxa3xx: Split FIFO size from to-be-read FIFO count Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 10/28] mtd: nand: pxa3xx: Replace host->page_size by mtd->writesize Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 11/28] mtd: nand: pxa3xx: Add a nice comment to pxa3xx_set_datasize() Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 12/28] mtd: nand: pxa3xx: Use a completion to signal device ready Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 19:51 ` Brian Norris
2013-11-05 19:51 ` Brian Norris
2013-11-06 0:28 ` Ezequiel Garcia
2013-11-06 0:28 ` Ezequiel Garcia
2013-11-06 0:46 ` Ezequiel Garcia [this message]
2013-11-06 0:46 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 13/28] mtd: nand: pxa3xx: Add bad block handling Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 18:23 ` Brian Norris
2013-11-05 18:23 ` Brian Norris
2013-11-05 23:40 ` Ezequiel Garcia
2013-11-05 23:40 ` Ezequiel Garcia
2013-11-06 1:36 ` Brian Norris
2013-11-06 1:36 ` Brian Norris
2013-11-05 12:55 ` [PATCH v3 14/28] mtd: nand: pxa3xx: Add driver-specific ECC BCH support Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 18:31 ` Brian Norris
2013-11-05 18:31 ` Brian Norris
2013-11-05 23:24 ` Ezequiel Garcia
2013-11-05 23:24 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 15/28] mtd: nand: pxa3xx: Clear cmd buffer #3 (NDCB3) on command start Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 16/28] mtd: nand: pxa3xx: Add helper function to set page address Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 17/28] mtd: nand: pxa3xx: Remove READ0 switch/case falltrough Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 18/28] mtd: nand: pxa3xx: Split prepare_command_pool() in two stages Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 18:32 ` Brian Norris
2013-11-05 18:32 ` Brian Norris
2013-11-05 12:55 ` [PATCH v3 19/28] mtd: nand: pxa3xx: Move the data buffer clean to prepare_start_command() Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 20/28] mtd: nand: pxa3xx: Fix SEQIN column address set Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 21/28] mtd: nand: pxa3xx: Add a read/write buffers markers Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 22/28] mtd: nand: pxa3xx: Introduce multiple page I/O support Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 19:04 ` Brian Norris
2013-11-05 19:04 ` Brian Norris
2013-11-06 1:13 ` Ezequiel Garcia
2013-11-06 1:13 ` Ezequiel Garcia
2013-11-06 2:20 ` Brian Norris
2013-11-06 2:20 ` Brian Norris
2013-11-06 2:27 ` Brian Norris
2013-11-06 2:27 ` Brian Norris
2013-11-06 3:35 ` Ezequiel Garcia
2013-11-06 3:35 ` Ezequiel Garcia
2013-11-06 11:32 ` Ezequiel Garcia
2013-11-06 11:32 ` Ezequiel Garcia
2013-11-18 18:10 ` Brian Norris
2013-11-18 18:10 ` Brian Norris
2013-11-18 18:33 ` Ezequiel Garcia
2013-11-18 18:33 ` Ezequiel Garcia
2013-11-18 18:50 ` Brian Norris
2013-11-18 18:50 ` Brian Norris
2013-12-04 21:41 ` Brian Norris
2013-12-04 21:41 ` Brian Norris
2013-12-19 7:31 ` GPMI-NAND ECC DT binding (was: Re: [PATCH v3 22/28] mtd: nand: pxa3xx: Introduce multiple page I/O support) Brian Norris
2013-12-19 7:31 ` Brian Norris
2013-12-19 7:39 ` Huang Shijie
2013-12-19 7:39 ` Huang Shijie
2013-11-05 19:08 ` [PATCH v3 22/28] mtd: nand: pxa3xx: Introduce multiple page I/O support Brian Norris
2013-11-05 19:08 ` Brian Norris
2013-11-05 12:55 ` [PATCH v3 23/28] mtd: nand: pxa3xx: Add multiple chunk write support Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 24/28] mtd: nand: pxa3xx: Add ECC BCH correctable errors detection Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 25/28] ARM: mvebu: Add support for NAND controller in Armada 370/XP Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 13:29 ` Jason Cooper
2013-11-05 13:29 ` Jason Cooper
2013-11-05 13:51 ` Ezequiel Garcia
2013-11-05 13:51 ` Ezequiel Garcia
2013-11-05 15:15 ` Jason Cooper
2013-11-05 15:15 ` Jason Cooper
2013-11-05 15:37 ` Ezequiel Garcia
2013-11-05 15:37 ` Ezequiel Garcia
2013-11-06 8:24 ` Thomas Petazzoni
2013-11-06 8:24 ` Thomas Petazzoni
2013-11-06 11:42 ` Jason Cooper
2013-11-06 11:42 ` Jason Cooper
2013-11-06 12:56 ` Thomas Petazzoni
2013-11-06 12:56 ` Thomas Petazzoni
2013-11-06 17:21 ` Jason Cooper
2013-11-06 17:21 ` Jason Cooper
2013-11-05 12:55 ` [PATCH v3 26/28] ARM: mvebu: Enable NAND controller in Armada XP GP board Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 27/28] ARM: mvebu: Enable NAND controller in Armada 370 Mirabox Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
2013-11-05 12:55 ` [PATCH v3 28/28] mtd: nand: pxa3xx: Add documentation about the controller Ezequiel Garcia
2013-11-05 12:55 ` Ezequiel Garcia
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=20131106004641.GG11759@localhost \
--to=ezequiel.garcia@free-electrons.com \
--cc=alior@marvell.com \
--cc=b32955@freescale.com \
--cc=computersforpeace@gmail.com \
--cc=gregory.clement@free-electrons.com \
--cc=jason@lakedaemon.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=tawfik@marvell.com \
--cc=thomas.petazzoni@free-electrons.com \
--cc=w@1wt.eu \
--cc=zonque@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.