From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] nios2: convert cache flush to use dm cpu data
Date: Fri, 9 Oct 2015 16:42:01 +0200 [thread overview]
Message-ID: <201510091642.02061.marex@denx.de> (raw)
In-Reply-To: <5617741A.6090704@wytron.com.tw>
On Friday, October 09, 2015 at 10:00:26 AM, Thomas Chou wrote:
> Hi Marek,
>
> On 10/09/2015 10:49 AM, Ley Foon Tan wrote:
> >> Is this an attempt at poor-mans' rounding ? I think you want to implment
> >> something like arch/arm/cpu/arm926ejs/cache.c check_cache_range() and
> >> NOT do any rounding here. The reason for that is that if you do
> >> rounding, you might accidentally corrupt a piece of memory which was
> >> just delivered via DMA before you did the flush.
> >
> > The code above is to convert the address to dcache line size.
> > arch/arm/cpu/arm926ejs/cache.c check_cache_range() will skip the cache
> > flushing if it is unaligned to cache line size. I'm not sure how
> > frequent U-boot access to non-aligned cache line size.
>
> Thanks a lot for your looking into this, Ley Foon.
>
> I think we take cache flushing in a different way to arm926ejs.
>
> In nios2 driver programming, we would request all the DMA buffers be
> aligned to cache line. This is necessary to avoid the cache racing issue
> as you mention above.
This is what ARM does as well.
> In nios2, we don't skip the flushing when the inputs are not aligned
> like that of arm926ejs. We always flush all cache lines in the range,
> even if a single byte to flush is in request. So the inputs are rounded
> to get the lower and upper cache lines range inside the cache flush
> functions. The caller need not be aware of the detail.
This is incorrect and all the places which produce these unaligned cache
operations must be fixed.
> In the copy_exception_trampoline() patch, both dcache and icache must be
> flushed at the exception target address. Though the flush range is only
> 12 bytes, which won't be aligned.
>
> Thank you for your review.
>
> Best regards,
> Thomas
Best regards,
Marek Vasut
next prev parent reply other threads:[~2015-10-09 14:42 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-06 8:20 [U-Boot] [PATCH] nios2: convert cache flush to use dm cpu data Thomas Chou
2015-10-08 21:39 ` Marek Vasut
2015-10-09 2:49 ` Ley Foon Tan
2015-10-09 8:00 ` Thomas Chou
2015-10-09 14:42 ` Marek Vasut [this message]
2015-10-10 5:55 ` Thomas Chou
2015-10-10 6:32 ` Thomas Chou
2015-10-10 18:18 ` Marek Vasut
2015-10-11 0:38 ` Thomas Chou
2015-10-11 12:15 ` Marek Vasut
2015-10-12 0:34 ` Thomas Chou
2015-10-12 10:30 ` Marek Vasut
2015-10-12 13:12 ` Thomas Chou
2015-10-12 13:29 ` Marek Vasut
2015-10-12 13:49 ` Wolfgang Denk
2015-10-13 1:04 ` Thomas Chou
2015-10-16 23:03 ` Marek Vasut
2015-10-17 3:22 ` Thomas Chou
2015-10-17 11:44 ` Marek Vasut
2015-10-10 18:12 ` Marek Vasut
2015-10-09 14:40 ` Marek Vasut
2015-10-09 12:58 ` [U-Boot] [PATCH v2] " Thomas Chou
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=201510091642.02061.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.