Thread (14 messages) 14 messages, 7 authors, 2010-07-11

RE: [PATCH] arch/powerpc/lib/copy_32.S: Use alternate memcpy for MPC512x and MPC52xx

From: Steve Deiters <hidden>
Date: 2010-07-08 14:38:42

-----Original Message-----
From: glikely@secretlab.ca [mailto:glikely@secretlab.ca] On=20
Behalf Of Grant Likely
Sent: Thursday, July 08, 2010 12:38 AM
To: Benjamin Herrenschmidt
Cc: Steve Deiters; linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] arch/powerpc/lib/copy_32.S: Use=20
alternate memcpy for MPC512x and MPC52xx
=20
On Wed, Jul 7, 2010 at 11:10 PM, Benjamin Herrenschmidt=20
[off-list ref] wrote:
quoted
On Tue, 2010-06-29 at 11:04 -0500, Steve Deiters wrote:
quoted
These processors will corrupt data if accessing the local bus with=20
unaligned addresses. This version fixes the typical case=20
of copying=20
quoted
quoted
from Flash on the local bus by keeping the source address always=20
aligned.
Shouldn't this be solved by using memcpy_to/fromio ?
=20
Maybe.  plain memcpy() access to anything localbus-attached=20
on the mpc5xxx is the wrong thing to do.  memcpy_to/fromio=20
might do the right thing; but the caller must understand the=20
limitations of the localplus bus.  The byte-wise alignment=20
that memcpy_to/fromio() does may not work (depending on=20
configuration).
=20
Steve, what code is doing a memcpy from flash?
=20
g.
This was done in the JFFS2 code, in fs/jffs2/scan.c.  At least in one
function, in jffs2_scan_dirent_node it was using memcpy on a localbus
mapped structure.  I was getting JFFS2 filesystem corruption because of
this.  In fact I first tried changing this to memcpy_fromio and it fixed
that particular problem.  I was concerned though that other places I was
not aware of might be using memcpy from the localbus in a similar manner
so I decided to just tweak the memcpy routine.

Just out of curiousity, what configuration might cause a byte-wise
alignment not to work?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help