From: Timur Tabi <timur@freescale.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel@vger.kernel.org, rdreier@cisco.com,
jirislaby@gmail.com, peterz@infradead.org, will.newton@gmail.com,
hancockrwd@gmail.com, jeremy@goop.org
Subject: Re: [PATCH v4] introduce macro spin_event_timeout()
Date: Tue, 10 Mar 2009 10:50:15 -0500 [thread overview]
Message-ID: <49B68C37.8010803@freescale.com> (raw)
In-Reply-To: <20090310153537.5fd5d84d@lxorguk.ukuu.org.uk>
Alan Cox wrote:
> NAK this - on a lot of platforms 1uS is the wrong timescale. Also we
> shouldn't be encouraging this kind of polling by making it very easy to
> write.
Well, I can agree that the time scale might be wrong on some platforms.
The original version of spin_event_timeout() used jiffies, but some
people said that a jiffy is too long of a timescale, so I changed it to
udelay.
However, I disagree about the encouragement part. Polling a register
until a status bit changes is a common task that cannot be handled any
other way. If the status bit change does not generate an interrupt, but
the wait for the change takes a few microseconds, what else are you
going to do?
The way I see it, I'm just extending the idea behind cpu_relax(). Just
doing a search for cpu_relax shows dozens, maybe hundreds, of drivers
doing stuff like this:
while((inb(ioaddr+DAYNA_CARD_STATUS)&DAYNA_TX_READY)==0)
cpu_relax();
This code doesn't even have a timeout! In fact, I'd say that at least
90% of all uses of cpu_relax() are in a while loop reading some register
without a timeout.
Ironically, in the situations where there is a timeout, the drivers use
jiffies, not a delay.
Frankly, I just don't see how spin_event_timeout() is not an improvement
over the current code that drivers use.
--
Timur Tabi
Linux kernel developer at Freescale
next prev parent reply other threads:[~2009-03-10 15:51 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-10 15:30 [PATCH v4] introduce macro spin_event_timeout() Timur Tabi
2009-03-10 15:35 ` Alan Cox
2009-03-10 15:50 ` Timur Tabi [this message]
2009-03-10 16:05 ` Will Newton
2009-03-10 16:11 ` Timur Tabi
2009-03-11 0:01 ` Benjamin Herrenschmidt
2009-03-11 0:37 ` Alan Cox
2009-03-11 16:48 ` Timur Tabi
2009-03-11 16:58 ` Alan Cox
2009-03-11 18:18 ` Timur Tabi
2009-03-11 21:58 ` Benjamin Herrenschmidt
2009-03-12 2:45 ` Grant Likely
2009-03-12 15:54 ` Timur Tabi
2009-03-12 16:01 ` Grant Likely
2009-03-12 16:19 ` Timur Tabi
2009-03-12 16:50 ` Peter Zijlstra
2009-03-12 19:05 ` Timur Tabi
2009-03-13 3:03 ` Benjamin Herrenschmidt
2009-03-13 4:51 ` Grant Likely
2009-03-10 18:41 ` Grant Likely
2009-03-10 19:04 ` Timur Tabi
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=49B68C37.8010803@freescale.com \
--to=timur@freescale.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=hancockrwd@gmail.com \
--cc=jeremy@goop.org \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rdreier@cisco.com \
--cc=will.newton@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.