All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brendan Simon <brendan.simon@ctam.com.au>
To: mtd@infradead.org
Subject: Re: Flash chip locking
Date: Thu, 29 Jun 2000 08:49:57 -0500	[thread overview]
Message-ID: <395B5405.7030604@ctam.com.au> (raw)
In-Reply-To: 20586.962191497@cygnus.co.uk

David Woodhouse wrote:
> 
> brendan.simon@ctam.com.au said:
> 
> 
> > Or to avoid ugly "goto" statements.
> >   spin_lock_bh();
> >   while (!ready)
> >   {
> >       spin_unlock()
> >       udelay(a_little_while);
> >       spin_lock_bh();
> >   }

Maybe this is a better so that the spin_lock_bh() call is not repeated.
   while(1)
   {
       spin_lock_bh();
       if (ready)
       {
           break;
       }
       spin_unlock();
       udelay(some_period);
   }

> Personally, I prefer the goto version. I think it's clearer. We're 
> releasing the lock and going back to exactly the state we were in at the 
> 'retry:' label. It doesn't really matter though. 
You are right.  At the end of the day I guess it doesn't really matter.
I just think that using labels and gotos is not a scalable technique, so 
I try to avoid them.

Thanks for the explanations below.  It is much clearer now.  I am still 
green when it comes to linux internals.  Hopefully that will change in 
the next 6 months when I have to write drivers and apps for a powerpc 
embedded product with DOC and some custom hardware.

Thanks,
Brendan Simon.

> > You are implying that 128us is a large amount of time to wait.  Maybe
> > with todays processors it is, I don't really know if it is or isn't
> > for  the average processor speed. 
> 
> It's a long time to disable interrupts or bottom halves. If we didn't have 
> to disable bottom halves, I wouldn't worry about it.
> 
> 
> > Does the udelay() imply that the scheduler  can switch to another process? 
> 
> No. We'd use schedule_timeout() to allow the scheduler to switch.
> 
> > If so, I would have thought that the  scheduling process would take a lot
> > longer that 128us, but I could be  wrong !!! 
> 
> I agree - that's why I used udelay() which is a busy-wait rather than 
> scheduling. 
> 
> > If no scheduling is performed  then then there would be no difference to
> > the naive "foreach" loop that you mention.
> 
> The difference is that in the latter version we are allowing interrupts
> while we're doing the delay, while in the former they're disabled. There 
> are in fact _two_ major differences between the two - the presence of the 
> delay, and the place at which we actually wait for the chip to be ready.
> 
> The delay is just an optimisation - there's no a lot of point in beating on 
> the chip's READY line until there's at least a chance that it'll be done, 
> whether we're busy-waiting with IRQs disabled or not.
> 
> The important bit is that we let the interrupts run while we're waiting for 
> the chip.




To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

  reply	other threads:[~2000-06-28 22:47 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-06-28 10:36 Flash chip locking David Woodhouse
2000-06-28 20:05 ` Philipp Rumpf
2000-06-29  2:11 ` Brendan Simon
2000-06-28 11:16   ` Kira Brown
2000-06-28 11:24   ` David Woodhouse
2000-06-29 13:49     ` Brendan Simon [this message]
2000-06-28 15:12   ` Richard Gooch
2000-10-13  0:16 ` Alice Hennessy
2000-10-13  0:14   ` David Woodhouse
2000-11-04 19:26   ` David Woodhouse

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=395B5405.7030604@ctam.com.au \
    --to=brendan.simon@ctam.com.au \
    --cc=mtd@infradead.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.