| To: | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Subject: | Re: [PATCH] hwrng: Add TX4939 RNG driver |
| From: | Ralf Baechle <ralf@linux-mips.org> |
| Date: | Sun, 31 May 2009 17:18:42 +0100 |
| Cc: | Atsushi Nemoto <anemo@mba.ocn.ne.jp>, linux-mips@linux-mips.org, linux-kernel@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au> |
| In-reply-to: | <20090529162907.9cb1bba2.akpm@linux-foundation.org> |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| References: | <1243350141-883-1-git-send-email-anemo@mba.ocn.ne.jp> <20090529162907.9cb1bba2.akpm@linux-foundation.org> |
| Sender: | linux-mips-bounce@linux-mips.org |
| User-agent: | Mutt/1.5.18 (2008-05-17) |
On Fri, May 29, 2009 at 04:29:07PM -0700, Andrew Morton wrote:
> > +static u64 read_rng(void __iomem *base, unsigned int offset)
> > +{
> > + /* Caller must disable interrupts */
> > + return ____raw_readq(base + offset);
> > +}
>
> What is the reasoning behind the local_irq_disable() requirement?
>
> Because I'm wondering whether this is safe on SMP?
The problem are interrupts, not SMP. readq is reading a 64-bit register
using a 64-bit load. On a 32-bit kernel however interrupts or any
other processor exception would clobber the upper 32-bit of the processor
register so interrupts need to be disabled. The "normal" readq
functions disable interrupts as necessary on a platform. This code does
multiple read accesses so for efficiency sake it relies on the caller
handling interrupts explicitly.
Also this platform does not do SMP.
Ralf
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH v2 2/6] mips dynamic function tracer support, Wang Liming |
|---|---|
| Next by Date: | Re: [PATCH] hwrng: Add TX4939 RNG driver, Atsushi Nemoto |
| Previous by Thread: | Re: [PATCH] hwrng: Add TX4939 RNG driver, Herbert Xu |
| Next by Thread: | Re: [PATCH] hwrng: Add TX4939 RNG driver, Atsushi Nemoto |
| Indexes: | [Date] [Thread] [Top] [All Lists] |