All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] [PATCH 1/3] ath9k: Fix build error on ARM
Date: Wed, 5 Feb 2014 14:21:26 +0000	[thread overview]
Message-ID: <20140205142126.GR26684@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1391608993.2538.74.camel@joe-AO722>

On Wed, Feb 05, 2014 at 06:03:13AM -0800, Joe Perches wrote:
> On Wed, 2014-02-05 at 13:39 +0000, Russell King - ARM Linux wrote:
> > On Wed, Feb 05, 2014 at 05:04:54AM -0800, Joe Perches wrote:
> > > On Wed, 2014-02-05 at 12:41 +0000, Russell King - ARM Linux wrote:
> > > > On Wed, Feb 05, 2014 at 04:32:46AM -0800, Joe Perches wrote:
> > > > > Apparently, people just convert stupidly large udelay()s
> > > > > to mdelay and not be bothered.
> > > > 
> > > > And that's the correct answer.  Having udelay(10000) rather than mdelay(10)
> > > > is a sign that they weren't paying that much attention when writing the
> > > > code.
> > > 
> > > Not really.
> []
> > > It's not so much not paying attention as not
> > > knowing ARM is broken for large udelay().
> > 
> > And now read my suggestion about how to avoid the "not knowing" problem. :)
> 
> I'd read it already.  I didn't and don't disagree.

Please explain /why/ you don't agree.

> I still think adding a #warning on large static udelay()s
> would be sensible.  Maybe adding another option like
> #define UDELAY_TOO_BIG_I_KNOW_ALREADY_DONT_BOTHER_ME
> guard to avoid seeing the #warning when there's no other
> option.

How does that help?  It's /not/ a warning situation - if you ask for
udelay(10000) on ARM, you will /not/ get a 10ms delay.  You'll instead
get something much shorter because the arithmetic will overflow.

Now, you could argue that maybe ARM's udelay() implementation should
know about this and implement a loop around the underlying udelay()
implementation to achieve it, and I might agree with you - but I
don't for one very simple reason: we /already/ have such an
implementation.  It's called mdelay():

#ifndef mdelay
#define mdelay(n) (\
        (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
        ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
#endif

So, the right answer is /not/ do duplicate this, but to /use/ the
appropriate facilities provided by the kernel.

-- 
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up.  Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Joe Perches <joe@perches.com>
Cc: Holger Schurig <holgerschurig@gmail.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	Sujith Manoharan <sujith@msujith.org>,
	ath9k-devel <ath9k-devel@lists.ath9k.org>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	John Linville <linville@tuxdriver.com>
Subject: Re: [ath9k-devel] [PATCH 1/3] ath9k: Fix build error on ARM
Date: Wed, 5 Feb 2014 14:21:26 +0000	[thread overview]
Message-ID: <20140205142126.GR26684@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1391608993.2538.74.camel@joe-AO722>

On Wed, Feb 05, 2014 at 06:03:13AM -0800, Joe Perches wrote:
> On Wed, 2014-02-05 at 13:39 +0000, Russell King - ARM Linux wrote:
> > On Wed, Feb 05, 2014 at 05:04:54AM -0800, Joe Perches wrote:
> > > On Wed, 2014-02-05 at 12:41 +0000, Russell King - ARM Linux wrote:
> > > > On Wed, Feb 05, 2014 at 04:32:46AM -0800, Joe Perches wrote:
> > > > > Apparently, people just convert stupidly large udelay()s
> > > > > to mdelay and not be bothered.
> > > > 
> > > > And that's the correct answer.  Having udelay(10000) rather than mdelay(10)
> > > > is a sign that they weren't paying that much attention when writing the
> > > > code.
> > > 
> > > Not really.
> []
> > > It's not so much not paying attention as not
> > > knowing ARM is broken for large udelay().
> > 
> > And now read my suggestion about how to avoid the "not knowing" problem. :)
> 
> I'd read it already.  I didn't and don't disagree.

Please explain /why/ you don't agree.

> I still think adding a #warning on large static udelay()s
> would be sensible.  Maybe adding another option like
> #define UDELAY_TOO_BIG_I_KNOW_ALREADY_DONT_BOTHER_ME
> guard to avoid seeing the #warning when there's no other
> option.

How does that help?  It's /not/ a warning situation - if you ask for
udelay(10000) on ARM, you will /not/ get a 10ms delay.  You'll instead
get something much shorter because the arithmetic will overflow.

Now, you could argue that maybe ARM's udelay() implementation should
know about this and implement a loop around the underlying udelay()
implementation to achieve it, and I might agree with you - but I
don't for one very simple reason: we /already/ have such an
implementation.  It's called mdelay():

#ifndef mdelay
#define mdelay(n) (\
        (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
        ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
#endif

So, the right answer is /not/ do duplicate this, but to /use/ the
appropriate facilities provided by the kernel.

-- 
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up.  Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".

WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [ath9k-devel] [PATCH 1/3] ath9k: Fix build error on ARM
Date: Wed, 5 Feb 2014 14:21:26 +0000	[thread overview]
Message-ID: <20140205142126.GR26684@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1391608993.2538.74.camel@joe-AO722>

On Wed, Feb 05, 2014 at 06:03:13AM -0800, Joe Perches wrote:
> On Wed, 2014-02-05 at 13:39 +0000, Russell King - ARM Linux wrote:
> > On Wed, Feb 05, 2014 at 05:04:54AM -0800, Joe Perches wrote:
> > > On Wed, 2014-02-05 at 12:41 +0000, Russell King - ARM Linux wrote:
> > > > On Wed, Feb 05, 2014 at 04:32:46AM -0800, Joe Perches wrote:
> > > > > Apparently, people just convert stupidly large udelay()s
> > > > > to mdelay and not be bothered.
> > > > 
> > > > And that's the correct answer.  Having udelay(10000) rather than mdelay(10)
> > > > is a sign that they weren't paying that much attention when writing the
> > > > code.
> > > 
> > > Not really.
> []
> > > It's not so much not paying attention as not
> > > knowing ARM is broken for large udelay().
> > 
> > And now read my suggestion about how to avoid the "not knowing" problem. :)
> 
> I'd read it already.  I didn't and don't disagree.

Please explain /why/ you don't agree.

> I still think adding a #warning on large static udelay()s
> would be sensible.  Maybe adding another option like
> #define UDELAY_TOO_BIG_I_KNOW_ALREADY_DONT_BOTHER_ME
> guard to avoid seeing the #warning when there's no other
> option.

How does that help?  It's /not/ a warning situation - if you ask for
udelay(10000) on ARM, you will /not/ get a 10ms delay.  You'll instead
get something much shorter because the arithmetic will overflow.

Now, you could argue that maybe ARM's udelay() implementation should
know about this and implement a loop around the underlying udelay()
implementation to achieve it, and I might agree with you - but I
don't for one very simple reason: we /already/ have such an
implementation.  It's called mdelay():

#ifndef mdelay
#define mdelay(n) (\
        (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
        ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
#endif

So, the right answer is /not/ do duplicate this, but to /use/ the
appropriate facilities provided by the kernel.

-- 
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up.  Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".

  reply	other threads:[~2014-02-05 14:21 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-04  3:07 [ath9k-devel] [PATCH 0/3] ath9k patches Sujith Manoharan
2014-02-04  3:07 ` Sujith Manoharan
2014-02-04  3:07 ` [ath9k-devel] [PATCH 1/3] ath9k: Fix build error on ARM Sujith Manoharan
2014-02-04  3:07   ` Sujith Manoharan
2014-02-04  3:34   ` [ath9k-devel] " Joe Perches
2014-02-04  3:34     ` Joe Perches
2014-02-04  3:40     ` [ath9k-devel] " Sujith Manoharan
2014-02-04  3:40       ` Sujith Manoharan
2014-02-04  7:03       ` [ath9k-devel] " Holger Schurig
2014-02-04  7:03         ` Holger Schurig
2014-02-04 12:59         ` [ath9k-devel] [PATCH] checkpatch: Add test for long udelay Joe Perches
2014-02-04 12:59           ` Joe Perches
2014-02-04 12:59           ` Joe Perches
2014-02-04 16:36         ` [ath9k-devel] [PATCH 1/3] ath9k: Fix build error on ARM Joe Perches
2014-02-04 16:36           ` Joe Perches
2014-02-04 16:36           ` Joe Perches
2014-02-04 18:40           ` Arnd Bergmann
2014-02-04 18:40             ` Arnd Bergmann
2014-02-04 18:40             ` Arnd Bergmann
2014-02-04 19:43             ` Joe Perches
2014-02-04 19:43               ` Joe Perches
2014-02-04 19:43               ` Joe Perches
2014-02-05 11:50           ` Russell King - ARM Linux
2014-02-05 11:50             ` Russell King - ARM Linux
2014-02-05 11:50             ` Russell King - ARM Linux
2014-02-05 12:32             ` Joe Perches
2014-02-05 12:32               ` Joe Perches
2014-02-05 12:32               ` Joe Perches
2014-02-05 12:41               ` Russell King - ARM Linux
2014-02-05 12:41                 ` Russell King - ARM Linux
2014-02-05 12:41                 ` Russell King - ARM Linux
2014-02-05 13:04                 ` Joe Perches
2014-02-05 13:04                   ` Joe Perches
2014-02-05 13:04                   ` Joe Perches
2014-02-05 13:39                   ` Russell King - ARM Linux
2014-02-05 13:39                     ` Russell King - ARM Linux
2014-02-05 13:39                     ` Russell King - ARM Linux
2014-02-05 14:03                     ` Joe Perches
2014-02-05 14:03                       ` Joe Perches
2014-02-05 14:03                       ` Joe Perches
2014-02-05 14:21                       ` Russell King - ARM Linux [this message]
2014-02-05 14:21                         ` Russell King - ARM Linux
2014-02-05 14:21                         ` Russell King - ARM Linux
2014-02-05 15:05                         ` Joe Perches
2014-02-05 15:05                           ` Joe Perches
2014-02-05 15:05                           ` Joe Perches
2014-02-04  3:07 ` [ath9k-devel] [PATCH 2/3] ath9k: Do not support PowerSave by default Sujith Manoharan
2014-02-04  3:07   ` Sujith Manoharan
2014-02-04  3:07 ` [ath9k-devel] [PATCH 3/3] ath9k: Fix TX power calculation Sujith Manoharan
2014-02-04  3:07   ` Sujith Manoharan

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=20140205142126.GR26684@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=ath9k-devel@lists.ath9k.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.