From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [linux-sunxi] Uboot error: address not aligned in v7_dcache_inval_range
Date: Sun, 27 Apr 2014 21:14:13 +0200 [thread overview]
Message-ID: <201404272114.13166.marex@denx.de> (raw)
In-Reply-To: <1398624050.19277.135.camel@hastur.hellion.org.uk>
On Sunday, April 27, 2014 at 08:40:50 PM, Ian Campbell wrote:
> On Sat, 2014-04-26 at 20:27 +0200, Marek Vasut wrote:
> > This was a sheer luck this ever worked. Looking at the entire driver, to
> > fix all your issues with DMA and caches, it would be sufficient to
> > re-align "struct dw_eth_dev" properly.
> >
> > See drivers/net/designware.h:
> > 1) struct dmamacdescr {} is already __aligned(ARCH_DMA_MINALIGN)
> >
> > => This structure, if aligned in memory to proper boundary, can be
> > flushed/
> >
> > invalidated without problems.
> >
> > 2) struct dw_eth_dev {} can be aligned to ANY 4-byte boundary
> >
> > But this structure contains two arrays of struct dmamacdescr {} ,
> > which each have their elements' lenght aligned to ARCH_DMA_MINALIGN
> >
> > Solution:
> >
> > Your patch [1/3] and reorder the structure in designware.h so that the
> > struct dmamacdescr tx_mac_descrtable[]
> > struct dmamacdescr rx_mac_descrtable[]
> > are first and anything that does not need to be aligned follows. This
> > way, the DMA descriptors will always be aligned and you need not worry
> > about the flushes. You don't even need to ROUNDUP their length, since
> > they are already fine.
>
> That sounds like a good plan. I'll take a look.
>
> > When reordering the struct dw_eth_dev {}, make sure to add a comment
> > about the alignment.
>
> Of course.
Thanks
Best regards,
Marek Vasut
next prev parent reply other threads:[~2014-04-27 19:14 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAOay_bwoK_U8aNJuu0CSMhvUAzkVHvN=VzPiK=2cB2+bcah0FA@mail.gmail.com>
2014-04-19 13:30 ` [U-Boot] [linux-sunxi] Uboot error: address not aligned in v7_dcache_inval_range Ian Campbell
2014-04-19 13:52 ` [U-Boot] [PATCH 1/3] net/designware: ensure device private data is DMA aligned Ian Campbell
2014-04-24 17:22 ` Alexey Brodkin
2014-04-26 18:27 ` Marek Vasut
2014-04-19 13:52 ` [U-Boot] [PATCH 2/3] net/designware: invalidate entire descriptor in dw_eth_send Ian Campbell
[not found] ` <jwv38h9v2cg.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi@gnu.org>
2014-04-19 14:32 ` [U-Boot] [linux-sunxi] " Ian Campbell
2014-04-24 17:41 ` [U-Boot] " Alexey Brodkin
2014-04-24 19:14 ` Ian Campbell
2014-04-25 8:48 ` Alexey Brodkin
2014-04-27 18:47 ` Ian Campbell
2014-04-28 12:05 ` Alexey Brodkin
2014-04-28 19:34 ` Ian Campbell
2014-04-25 0:58 ` Stefan Monnier
2014-04-19 13:52 ` [U-Boot] [PATCH 3/3] net/designware: align cache invalidation on rx Ian Campbell
2014-04-20 5:43 ` [U-Boot] [linux-sunxi] " Shixin Zeng
2014-04-20 5:16 ` [U-Boot] [linux-sunxi] Uboot error: address not aligned in v7_dcache_inval_range Shixin Zeng
2014-04-26 18:27 ` Marek Vasut
2014-04-27 18:40 ` Ian Campbell
2014-04-27 19:14 ` Marek Vasut [this message]
2014-04-28 19:55 ` Ian Campbell
2014-04-28 20:21 ` Marek Vasut
2014-05-01 18:43 ` Ian Campbell
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=201404272114.13166.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/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.