From: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Grant Likely <grant.likely@secretlab.ca>,
Michal Simek <monstr@monstr.eu>, Arnd Bergmann <arnd@arndb.de>,
Vineet Gupta <Vineet.Gupta1@synopsys.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Geert Uytterhoeven <geert@linux-m68k.org>,
<dahinds@users.sourceforge.net>
Subject: Re: [PATCH] drivers/block/xsysace - replace in(out)_8/in(out)_be16/in(out)_le16 with generic iowrite(read)8/16(be)
Date: Thu, 7 Feb 2013 16:09:24 +0400 [thread overview]
Message-ID: <51139974.2040601@synopsys.com> (raw)
In-Reply-To: <1360186550.2650.4.camel@pasglop>
On 02/07/2013 01:35 AM, Benjamin Herrenschmidt wrote:
> On Wed, 2013-02-06 at 10:14 +0000, Grant Likely wrote:
>>
>> Huh? That makes no sense. This device out in the wild with both big
>> and little endian bus attachments. You can argue all day that one of
>> them is wrong, but it doesn't matter. It exists, is used, and must be
>> supported.
>
> No. That's where you are VERY wrong. We don't have to support crap and
> arguably shouldn't if that can give an incentive to vendors to fix their
> stuff. If you don't believe me, ask Linus :-)
>
>> In fact, the driver already knows about this and figures
>> out at runtime how the device is wired up to the bus. This is not the
>> problem.
>
> Except that this is very gross, especially when you observe that in the
> busted "big endian" case, it has to byteswap the bloody data port.
>
> So you end up having to do that gross hack with separate accessors for
> registers vs. data and not able to use the _rep variants, which also
> means that on platforms like ppc, you end up with a memory barrier on
> every access (or more), which is going to slow things down enormously.
BTW I've just realized that in case if there's no bridge between CPU and
CF-controller or if this bridge is "transparent" (does no swapping
neither bytes nor bits) our data accessors here should be changed.
Isn't it strange in "ace_datain_le16" use "ioread16be" or the one it was
here initially "in_be16"?
With BE ones I'd say similar changes should be done.
So finally I see them implemented this way:
===============
/* BE part */
static void ace_datain_be16(struct ace_device *ace)
{
int i = ACE_FIFO_SIZE / 2;
u16 *dst = ace->data_ptr;
while (i--)
*dst++ = ioread16be(ace->baseaddr + 0x40);
ace->data_ptr = dst;
}
static void ace_dataout_be16(struct ace_device *ace)
{
int i = ACE_FIFO_SIZE / 2;
u16 *src = ace->data_ptr;
while (i--)
iowrite16be(*src++, ace->baseaddr + 0x40);
ace->data_ptr = src;
}
/* LE part*/
static void ace_datain_le16(struct ace_device *ace)
{
int i = ACE_FIFO_SIZE / 2;
u16 *dst = ace->data_ptr;
while (i--)
*dst++ = ioread16(ace->baseaddr + 0x40);
ace->data_ptr = dst;
}
static void ace_dataout_le16(struct ace_device *ace)
{
int i = ACE_FIFO_SIZE / 2;
u16 *src = ace->data_ptr;
while (i--)
iowrite16(*src++, ace->baseaddr + 0x40);
ace->data_ptr = src;
}
===============
Correct me if I'm wrong here.
And at least these accessors for LE got xsysace perfectly working on our
FPGA platform (little-endian ARC700 on Xilinx ml-509 with our own
BVCI-to-MPU bridge that does no swapping).
I have to confess that I didn't properly tested initial patch on real HW
- it was only sort of cosmetic clean-up.
-Alexey
>> BTW, that document describes only one of the systemace bus
>> attachments. There is a different on used on Microblaze little-endian,
>> and some boards have the SystemACE directly wired to the SoC external
>> bus (no adapter IP).
>>
>> The only problem that I see is that the ARM and Microblaze
>> ioread16be/iowrite16be helpers are missing barriers which smells like
>> a bug and should be fixed.
>>
>> Michal, have you tested Alexey's patch? If it works for you then I'm
>> comfortable with acking it. It looks correct to me.
>
> No, the real problem is that the "big endian" wiring is totally busted
> and the HW guys who came with it must be taught a lesson. Not supporting
> that crap might be one way to do it.
>
> Ben.
>
>
next prev parent reply other threads:[~2013-02-07 12:09 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-29 16:02 [PATCH] drivers/block/xsysace - replace in(out)_8/in(out)_be16/in(out)_le16 with generic iowrite(read)8/16(be) Alexey Brodkin
2013-01-29 16:27 ` Arnd Bergmann
2013-01-30 11:03 ` Alexey Brodkin
2013-01-30 11:13 ` Michal Simek
2013-01-30 12:10 ` Vineet Gupta
2013-01-30 12:31 ` Michal Simek
2013-01-30 14:36 ` Arnd Bergmann
2013-02-04 9:26 ` Michal Simek
2013-02-04 17:24 ` Arnd Bergmann
2013-02-05 2:29 ` Benjamin Herrenschmidt
2013-02-05 10:54 ` Michal Simek
2013-02-05 12:09 ` Vineet Gupta
2013-02-05 12:29 ` Benjamin Herrenschmidt
2013-02-05 12:19 ` Benjamin Herrenschmidt
2013-02-05 12:38 ` Michal Simek
2013-02-05 14:03 ` Alexey Brodkin
2013-02-05 15:12 ` Arnd Bergmann
2013-02-05 21:01 ` Benjamin Herrenschmidt
2013-02-06 10:03 ` Grant Likely
2013-02-06 16:20 ` Arnd Bergmann
2013-02-06 16:21 ` Michal Simek
2013-02-07 0:34 ` Arnd Bergmann
2013-02-06 17:40 ` Michal Simek
2013-02-06 19:51 ` Geert Uytterhoeven
2013-02-07 7:23 ` Michal Simek
2013-02-07 7:38 ` Geert Uytterhoeven
2013-02-07 8:01 ` Michal Simek
2013-02-07 8:20 ` Geert Uytterhoeven
2013-02-07 8:33 ` Arnd Bergmann
2013-02-07 14:19 ` Michal Simek
2013-02-07 23:12 ` Arnd Bergmann
2013-02-11 10:38 ` Michal Simek
2013-02-11 15:26 ` Arnd Bergmann
2013-02-11 15:36 ` Michal Simek
2013-02-11 15:43 ` Arnd Bergmann
2013-02-11 15:57 ` Michal Simek
2013-02-11 16:08 ` Arnd Bergmann
2013-02-12 0:29 ` Benjamin Herrenschmidt
2013-02-12 11:29 ` Arnd Bergmann
2013-02-12 10:11 ` Michal Simek
2013-02-12 11:26 ` Arnd Bergmann
2013-02-12 12:14 ` Michal Simek
2013-02-12 13:55 ` Arnd Bergmann
2013-02-12 12:30 ` Benjamin Herrenschmidt
2013-02-12 0:25 ` Benjamin Herrenschmidt
2013-02-12 10:03 ` Michal Simek
2013-02-05 21:00 ` Benjamin Herrenschmidt
2013-02-05 21:25 ` Alexey Brodkin
2013-02-05 23:07 ` Benjamin Herrenschmidt
2013-02-06 10:14 ` Grant Likely
2013-02-06 16:27 ` Arnd Bergmann
2013-02-06 21:35 ` Benjamin Herrenschmidt
2013-02-07 12:09 ` Alexey Brodkin [this message]
2013-02-07 12:20 ` Benjamin Herrenschmidt
2013-02-07 12:23 ` Benjamin Herrenschmidt
2013-02-07 14:31 ` Michal Simek
2013-02-07 14:35 ` Alexey Brodkin
2013-02-07 14:39 ` Grant Likely
2013-02-07 14:51 ` Grant Likely
2013-02-07 15:12 ` Alexey Brodkin
2013-02-07 15:23 ` Grant Likely
2013-02-07 15:28 ` Alexey Brodkin
2013-02-07 16:44 ` Grant Likely
2013-02-07 16:56 ` Alexey Brodkin
2013-02-07 17:16 ` Grant Likely
2013-02-07 17:22 ` Alexey Brodkin
2013-02-08 7:45 ` Grant Likely
2013-02-07 21:18 ` Benjamin Herrenschmidt
2013-02-07 21:15 ` Benjamin Herrenschmidt
2013-02-07 23:05 ` Arnd Bergmann
2013-02-08 6:19 ` Geert Uytterhoeven
2013-02-08 7:14 ` Grant Likely
2013-02-07 21:09 ` Benjamin Herrenschmidt
2013-02-12 17:02 ` Michal Simek
2013-02-12 17:25 ` Arnd Bergmann
2013-03-21 17:01 ` Alexey Brodkin
2013-06-19 8:56 ` xsysace driver support on arches other than PPC/Microblaze Alexey Brodkin
2013-06-19 9:09 ` Alexey Brodkin
2013-06-19 12:13 ` Andy Shevchenko
2013-06-19 12:56 ` Alexey Brodkin
2013-06-19 14:51 ` Arnd Bergmann
2013-02-07 21:06 ` [PATCH] drivers/block/xsysace - replace in(out)_8/in(out)_be16/in(out)_le16 with generic iowrite(read)8/16(be) Benjamin Herrenschmidt
2013-02-05 23:03 ` Arnd Bergmann
2013-02-06 8:59 ` Geert Uytterhoeven
2013-02-06 16:18 ` Arnd Bergmann
2013-02-05 10:45 ` Michal Simek
-- strict thread matches above, loose matches on Subject: below --
2013-06-21 14:02 Alexey Brodkin
2013-06-21 14:23 ` Arnd Bergmann
2013-06-21 18:35 ` Alexey Brodkin
2013-06-21 18:40 ` 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=51139974.2040601@synopsys.com \
--to=alexey.brodkin@synopsys.com \
--cc=Vineet.Gupta1@synopsys.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=dahinds@users.sourceforge.net \
--cc=geert@linux-m68k.org \
--cc=grant.likely@secretlab.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=monstr@monstr.eu \
/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.