linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Re: jffs2 and unaligned access
       [not found] <20080507102724.GE4326@pengutronix.de>
@ 2008-05-07 10:53 ` David Woodhouse
  2008-05-07 13:25   ` Sascha Hauer
  2008-05-07 20:42   ` Segher Boessenkool
  0 siblings, 2 replies; 5+ messages in thread
From: David Woodhouse @ 2008-05-07 10:53 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: linuxppc-dev, linux-mtd

On Wed, 2008-05-07 at 12:27 +0200, Sascha Hauer wrote:
> memcpy_from/to_io() use word aligned accesses on the io side of memory.
> The MPC5200 local plus bus where our flashes are connected does not
> allow unaligned accesses, so we have to use the io versions of memcpy.

But this region of flash is marked as suitable for execute-in-place,
otherwise the point() function wouldn't be working to give a direct
pointer to it. It sounds like we shouldn't be allowing that.

Which in turn means that perhaps we should have a property in the
corresponding node in the device-tree which indicates that it's not
suitable for direct access?

-- 
dwmw2

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: jffs2 and unaligned access
  2008-05-07 10:53 ` jffs2 and unaligned access David Woodhouse
@ 2008-05-07 13:25   ` Sascha Hauer
  2008-06-05 21:38     ` Jon Smirl
  2008-05-07 20:42   ` Segher Boessenkool
  1 sibling, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2008-05-07 13:25 UTC (permalink / raw)
  To: David Woodhouse; +Cc: linuxppc-dev, linux-mtd

On Wed, May 07, 2008 at 11:53:49AM +0100, David Woodhouse wrote:
> On Wed, 2008-05-07 at 12:27 +0200, Sascha Hauer wrote:
> > memcpy_from/to_io() use word aligned accesses on the io side of memory.
> > The MPC5200 local plus bus where our flashes are connected does not
> > allow unaligned accesses, so we have to use the io versions of memcpy.
> 
> But this region of flash is marked as suitable for execute-in-place,
> otherwise the point() function wouldn't be working to give a direct
> pointer to it. It sounds like we shouldn't be allowing that.

It actually is suitable for execute-in-place. It's the flash U-Boot
starts from. The compiler will generate a proper alignment for you.

> 
> Which in turn means that perhaps we should have a property in the
> corresponding node in the device-tree which indicates that it's not
> suitable for direct access?

So far we did not work with the device-tree flash binding but with the
physmap-flash driver, but ok, this is subject to change anyway.

I gave it a quick try to disable direct accesses. It works, but has a
1:10 performance impact on mounting a jffs2. At least it's a clean
solution.

Sascha


-- 
Pengutronix e.K. - Linux Solutions for Science and Industry
-----------------------------------------------------------
Kontakt-Informationen finden Sie im Header dieser Mail oder
auf der Webseite -> http://www.pengutronix.de/impressum/ <-

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: jffs2 and unaligned access
  2008-05-07 10:53 ` jffs2 and unaligned access David Woodhouse
  2008-05-07 13:25   ` Sascha Hauer
@ 2008-05-07 20:42   ` Segher Boessenkool
  2008-05-08 13:19     ` Detlev Zundel
  1 sibling, 1 reply; 5+ messages in thread
From: Segher Boessenkool @ 2008-05-07 20:42 UTC (permalink / raw)
  To: David Woodhouse; +Cc: linuxppc-dev, linux-mtd

>> memcpy_from/to_io() use word aligned accesses on the io side of 
>> memory.
>> The MPC5200 local plus bus where our flashes are connected does not
>> allow unaligned accesses, so we have to use the io versions of memcpy.
>
> But this region of flash is marked as suitable for execute-in-place,
> otherwise the point() function wouldn't be working to give a direct
> pointer to it. It sounds like we shouldn't be allowing that.
>
> Which in turn means that perhaps we should have a property in the
> corresponding node in the device-tree which indicates that it's not
> suitable for direct access?

This isn't usually a property of the flash device, but of the various
buses/controllers above the flash device.  The device tree should mimic
reality (and it does, it just seems the kernel doesn't use this 
information
yet?)


Segher

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: jffs2 and unaligned access
  2008-05-07 20:42   ` Segher Boessenkool
@ 2008-05-08 13:19     ` Detlev Zundel
  0 siblings, 0 replies; 5+ messages in thread
From: Detlev Zundel @ 2008-05-08 13:19 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: linux-mtd

Hi,

>>> memcpy_from/to_io() use word aligned accesses on the io side of
>>> memory.
>>> The MPC5200 local plus bus where our flashes are connected does not
>>> allow unaligned accesses, so we have to use the io versions of memcpy.
>>
>> But this region of flash is marked as suitable for execute-in-place,
>> otherwise the point() function wouldn't be working to give a direct
>> pointer to it. It sounds like we shouldn't be allowing that.
>>
>> Which in turn means that perhaps we should have a property in the
>> corresponding node in the device-tree which indicates that it's not
>> suitable for direct access?
>
> This isn't usually a property of the flash device, but of the various
> buses/controllers above the flash device.  

I wholeheartedly agree.  After all, its the Local+ bus playing games
here.  And fixing that for JFFS2 only ignores that other devices can
*and will* be connected on this bus.  Unaligned accesses to such devices
will also fail (likely from mtd unrelated code) - and fail silently,
taking quite a while to figure out what is going wrong where.

> The device tree should mimic reality (and it does, it just seems the
> kernel doesn't use this information yet?)

How is this exactly supposed to work?

Cheers
  Detlev

-- 
In the topologic hell the beer is packed in Klein's bottles.
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu@denx.de

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: jffs2 and unaligned access
  2008-05-07 13:25   ` Sascha Hauer
@ 2008-06-05 21:38     ` Jon Smirl
  0 siblings, 0 replies; 5+ messages in thread
From: Jon Smirl @ 2008-06-05 21:38 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: linux-mtd, David Woodhouse, linuxppc-dev

On 5/7/08, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> On Wed, May 07, 2008 at 11:53:49AM +0100, David Woodhouse wrote:
>  > On Wed, 2008-05-07 at 12:27 +0200, Sascha Hauer wrote:
>  > > memcpy_from/to_io() use word aligned accesses on the io side of memory.
>  > > The MPC5200 local plus bus where our flashes are connected does not
>  > > allow unaligned accesses, so we have to use the io versions of memcpy.
>  >
>  > But this region of flash is marked as suitable for execute-in-place,
>  > otherwise the point() function wouldn't be working to give a direct
>  > pointer to it. It sounds like we shouldn't be allowing that.
>
>
> It actually is suitable for execute-in-place. It's the flash U-Boot
>  starts from. The compiler will generate a proper alignment for you.
>
>
>  >
>  > Which in turn means that perhaps we should have a property in the
>  > corresponding node in the device-tree which indicates that it's not
>  > suitable for direct access?
>
>
> So far we did not work with the device-tree flash binding but with the
>  physmap-flash driver, but ok, this is subject to change anyway.
>
>  I gave it a quick try to disable direct accesses. It works, but has a
>  1:10 performance impact on mounting a jffs2. At least it's a clean
>  solution.

How did this get resolved? The thread died without any final solution
being proposed.


>
>
>  Sascha
>
>
>
>  --
>  Pengutronix e.K. - Linux Solutions for Science and Industry
>  -----------------------------------------------------------
>  Kontakt-Informationen finden Sie im Header dieser Mail oder
>  auf der Webseite -> http://www.pengutronix.de/impressum/ <-
>


-- 
Jon Smirl
jonsmirl@gmail.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-06-05 21:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20080507102724.GE4326@pengutronix.de>
2008-05-07 10:53 ` jffs2 and unaligned access David Woodhouse
2008-05-07 13:25   ` Sascha Hauer
2008-06-05 21:38     ` Jon Smirl
2008-05-07 20:42   ` Segher Boessenkool
2008-05-08 13:19     ` Detlev Zundel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).