From: Arnd Bergmann <arnd@arndb.de>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: Jingoo Han <jg1.han@samsung.com>,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
Brian Norris <computersforpeace@gmail.com>,
David Woodhouse <dwmw2@infradead.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/2] mtd: orion-nand: fix build error with ARMv4
Date: Wed, 14 May 2014 13:47:20 +0200 [thread overview]
Message-ID: <4645786.pJABUgPlCA@wuerfel> (raw)
In-Reply-To: <20140513205548.GC22907@obsidianresearch.com>
On Tuesday 13 May 2014 14:55:48 Jason Gunthorpe wrote:
> On Fri, May 09, 2014 at 07:09:15PM -0300, Ezequiel Garcia wrote:
> > On 09 May 03:28 PM, Jason Gunthorpe wrote:
> > >
> > > > I gave this a try in order to answer Arnd's performance
> > > > question. First of all, the patch seems wrong. I guess it's because
> > > > readsl reads 4-bytes pieces, instead of 8-bytes.
> > > >
> > > > This patch below is tested (but not completely, see below) and works:
> > >
> > > Compilers are better now, I think you can just ditch the weirdness:
> > >
> > [..]
> > >
> > > The below gives:
> > >
> > > c8: ea000002 b d8 <orion_nand_read_buf+0x84>
> > > cc: e5dc0000 ldrb r0, [ip]
> > > d0: e7c30001 strb r0, [r3, r1]
> > > d4: e2811001 add r1, r1, #1
> > > d8: e1510002 cmp r1, r2
> > >
> > > Which looks the same as the asm version to me.
> > >
> >
> > Nice! It wasn't really needed but since I have the board here:
> >
> > # time nanddump /dev/mtd5 -f /dev/null -q
> > real 0m 5.82s
> > user 0m 0.20s
> > sys 0m 5.60s
> >
> > Jason: Care to submit a proper patch?
>
> Sure, but did anyone (Arnd?) have thoughts on a better way to do this:
>
> +#ifdef CONFIG_64BIT
> + buf64[i++] = readq_relaxed(io_base);
> +#else
> + buf64[i++] = *(const volatile u64 __force *)io_base;
> +#endif
>
> IMHO, readq should exist on any platform that can issue a 64 bit bus
> transaction, and I expect many ARM's qualify.
Well, the original problem happened specifically for the case that doesn't
have a 64-bit bus transaction (building for ARMv4). If we define
readq_relaxed, it has to be an inline assembly, in order to work for
drivers that require an atomic transaction, so that would have the
same problem. We are a bit inconsistent here though: most 32-bit
architectures have no readq, parisc has one that does two 32-bit accesses,
sh relies on the compiler, and tile apparently has a native instruction.
It seems reasonable to replace the inline assembly in this driver with
a new function as a cleanup, but then how do you want to solve the case
of building a combined armv4/v5 kernel?
Arnd
next prev parent reply other threads:[~2014-05-14 11:47 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-08 14:46 [PATCH 00/22] Random ARM randconfig fixes in drivers Arnd Bergmann
[not found] ` <1399560990-1402858-1-git-send-email-arnd@arndb.de>
2014-05-08 14:56 ` [PATCH 1/2] mtd/onenand: fix build warning for dma type Arnd Bergmann
2014-05-12 23:26 ` Brian Norris
2014-05-08 14:56 ` [PATCH 2/2] mtd: orion-nand: fix build error with ARMv4 Arnd Bergmann
2014-05-09 18:45 ` Ezequiel Garcia
2014-05-09 19:29 ` Geert Uytterhoeven
2014-05-09 20:12 ` Arnd Bergmann
2014-05-09 21:28 ` Jason Gunthorpe
2014-05-09 22:09 ` Ezequiel Garcia
2014-05-09 22:24 ` Arnd Bergmann
2014-05-09 23:55 ` Ezequiel Garcia
2014-05-13 20:55 ` Jason Gunthorpe
2014-05-14 11:47 ` Arnd Bergmann [this message]
2014-05-14 12:35 ` Geert Uytterhoeven
2014-05-14 13:09 ` Arnd Bergmann
2014-05-08 16:41 ` [PATCH 00/22] Random ARM randconfig fixes in drivers Guenter Roeck
2014-05-09 11:48 ` Arnd Bergmann
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=4645786.pJABUgPlCA@wuerfel \
--to=arnd@arndb.de \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=ezequiel.garcia@free-electrons.com \
--cc=jg1.han@samsung.com \
--cc=jgunthorpe@obsidianresearch.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox