All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Hauke Mehrtens <hauke@hauke-m.de>
Cc: Richard Weinberger <richard@nod.at>,
	dwmw2@infradead.org, computersforpeace@gmail.com,
	linux-mtd@lists.infradead.org, john@phrozen.org
Subject: Re: [PATCH v2 6/8] MTD: xway: fix nand locking
Date: Sun, 19 Jun 2016 15:04:24 +0200	[thread overview]
Message-ID: <20160619150424.24207ab8@bbrezillon> (raw)
In-Reply-To: <b33bd2fb-4cf6-1acf-8022-fd76f3cf9f06@hauke-m.de>

On Sun, 19 Jun 2016 14:56:03 +0200
Hauke Mehrtens <hauke@hauke-m.de> wrote:

> On 06/19/2016 02:53 PM, Richard Weinberger wrote:
> > Am 19.06.2016 um 14:41 schrieb Boris Brezillon:  
> >> On Sat, 18 Jun 2016 21:14:10 +0200
> >> Hauke Mehrtens <hauke@hauke-m.de> wrote:
> >>  
> >>> From: John Crispin <john@phrozen.org>
> >>>
> >>> The external Bus Unit (EBU) can control different flash devices, but
> >>> these NAND flash commands have to be atomic and should not be
> >>> interrupted in between. Lock the EBU from the beginning of the command
> >>> till the end by moving the lock to the chip select.
> >>>
> >>> Signed-off-by: John Crispin <john@phrozen.org>
> >>> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> >>> ---
> >>>  drivers/mtd/nand/xway_nand.c | 20 ++++----------------
> >>>  1 file changed, 4 insertions(+), 16 deletions(-)
> >>>
> >>> diff --git a/drivers/mtd/nand/xway_nand.c b/drivers/mtd/nand/xway_nand.c
> >>> index 1511bdb..064ee41 100644
> >>> --- a/drivers/mtd/nand/xway_nand.c
> >>> +++ b/drivers/mtd/nand/xway_nand.c
> >>> @@ -94,13 +94,16 @@ static void xway_reset_chip(struct nand_chip *chip)
> >>>  
> >>>  static void xway_select_chip(struct mtd_info *mtd, int chip)
> >>>  {
> >>> +	static unsigned long csflags;  
> > 
> > Why is csflags static? AFAICT this is racy then...  
> 
> Because the lock is taken when the chip is selected and it is unlocked
> when the chip select is deactivated again. This should be part of the
> private driver struct.

static here means that you have a single instance for all callers. This
is working fine because you have a lock at the NAND core level, and you
only have a single controller, but you definitely don't want to rely on
that in the long run.

In any case, using a static variable to save irqflags sounds like a
bad idea. This should always be saved on the stack to limit the time
spent in spin_lock_irqsave()/spin_unlock_irqrestored() critical
sections.
Which bring us back to my first question: are you sure you want to
disable irqs for such a long/unbounded time?

  reply	other threads:[~2016-06-19 13:04 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-18 19:14 [PATCH v2 0/8] MTD: xway: fix driver Hauke Mehrtens
2016-06-18 19:14 ` [PATCH v2 1/8] MTD: xway: convert to normal platform driver Hauke Mehrtens
2016-06-19 11:32   ` Boris Brezillon
2016-06-19 11:58     ` Hauke Mehrtens
2016-06-18 19:14 ` [PATCH v2 2/8] MTD: xway: add some more documentation Hauke Mehrtens
2016-06-19 11:39   ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 3/8] MTD: xway: the latched command should be persistent Hauke Mehrtens
2016-06-19 11:52   ` Boris Brezillon
2016-06-19 12:04     ` Hauke Mehrtens
2016-06-19 12:09       ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 4/8] MTD: xway: remove endless loop Hauke Mehrtens
2016-06-19 12:14   ` Boris Brezillon
2016-06-19 12:32     ` Hauke Mehrtens
2016-06-19 12:57       ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 5/8] MTD: xway: add missing write_buf and read_buf to nand driver Hauke Mehrtens
2016-06-19 12:38   ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 6/8] MTD: xway: fix nand locking Hauke Mehrtens
2016-06-19 12:41   ` Boris Brezillon
2016-06-19 12:53     ` Richard Weinberger
2016-06-19 12:56       ` Hauke Mehrtens
2016-06-19 13:04         ` Boris Brezillon [this message]
2016-06-19 12:58       ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 7/8] MTD: xway: extract read and write function Hauke Mehrtens
2016-06-19 12:42   ` Boris Brezillon
2016-06-18 19:14 ` [PATCH v2 8/8] MTD: xway: use global NAND_CMD_RESET define Hauke Mehrtens
2016-06-19 13:06   ` Boris Brezillon
2016-06-19 12:50 ` [PATCH v2 0/8] MTD: xway: fix driver Boris Brezillon
2016-06-19 13:13   ` Hauke Mehrtens

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=20160619150424.24207ab8@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=hauke@hauke-m.de \
    --cc=john@phrozen.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    /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.