public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/4] armv7: cache: remove flush on un-aligned invalidate
Date: Wed, 10 Aug 2011 08:29:41 +0200	[thread overview]
Message-ID: <4E422555.8030804@aribaud.net> (raw)
In-Reply-To: <CAF6FioU1i7ymWytPwHFB2x0AC9gg248VXV_HP0SDdH1j4QNACQ@mail.gmail.com>

Hi Anton,

Le 09/08/2011 18:39, Anton Staaf a ?crit :
> I'm not sure what the larger context of this change is, but it seems
> like a bad idea to me.  There are a lot of locations in U-Boot that
> will end up causing an unaligned invalidate (ext2 and dos file system
> code in particular).  And this change will cause those unaligned
> invalidates to possibly throw away stores to adjacent variables.  If
> you are going to make this change you should at least assert instead
> of just printing a warning.  And there should be a concerted effort to
> clean up the buffer management in U-Boot so that invalidates will
> never be unaligned.  This is also a departure from the cache
> management implementations in the Linux kernel, not that U-Boot has to
> do exactly what they do, but I feel they have the correct
> implementation, from the perspective of ensuring that all stores
> actually make it to main memory.

There's been a lot of discussion, both in July and August, about this 
and the the conclusion is that unaligned invalidates (and flushes) 
cannot reliably be done within the size and speed constraints of an 
embedded bootloader, and there are no 100% clean solutions without 
alignment, because with unaligned buffers, one might invalidate a cache 
line containing also deferred writes, or flush a line onto a buffer 
currently undergoing DMA. Linux can afford to spend more space and time 
than U-Boot to solving those issues. OTOH, aligning buffers is a 
relatively trivial change in the calling code that allows for much 
simpler and more efficient cache management.

The current cache patches on ARM are precisely the start of the effort 
to align buffers that you suggest, by warning the developer about 
unaligned invalidates/flushes through the console, and turning any side 
effect to an "inside-effect", so to speak: for instance the recent cache 
invalidate patch on arm926ejs prevents unaligned invalidates from 
affecting any other data than the (badly) invalidated buffer itself.

You have a point though that maybe a warning is not enough and that 
unalignments warrant an assert instead. OTOH, that might mean *a lot* of 
boards will completely cease working in this case, even for live 
debugging the issue with basic U-Boot commands (which many developers do 
I am sure).

Comments on this warning/assert point?

Amicalement,
-- 
Albert.

  reply	other threads:[~2011-08-10  6:29 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-01 11:18 [U-Boot] [PATCH v 0/3] arm: changes in cache handling Aneesh V
2011-08-01 11:18 ` [U-Boot] [PATCH v 1/3] arm: do not force d-cache enable on all boards Aneesh V
2011-08-01 16:33   ` Jason Liu
2011-08-01 16:46     ` Jason Liu
2011-08-01 19:45       ` Wolfgang Denk
2011-08-01 19:53     ` Albert ARIBAUD
2011-08-02 14:35       ` Jason Liu
2011-08-02 15:58         ` Albert ARIBAUD
2011-08-05 15:07   ` Aneesh V
2011-08-07  6:20     ` Albert ARIBAUD
2011-08-09 11:10   ` [U-Boot] [PATCH 0/4] arm: changes in cache handling Aneesh V
2011-08-09 11:25     ` Aneesh V
2011-08-09 11:10   ` [U-Boot] [PATCH 1/4] arm: do not force d-cache enable on all boards Aneesh V
2011-08-09 11:10   ` [U-Boot] [PATCH 2/4] omap: enable caches at system start-up Aneesh V
2011-08-09 11:10   ` [U-Boot] [PATCH 3/4] armv7: stronger barrier for cache-maintenance operations Aneesh V
2011-08-09 11:10   ` [U-Boot] [PATCH 4/4] armv7: cache: remove flush on un-aligned invalidate Aneesh V
2011-08-09 16:39     ` Anton Staaf
2011-08-10  6:29       ` Albert ARIBAUD [this message]
2011-08-10  6:48       ` Aneesh V
2011-08-10 18:11         ` Anton Staaf
2011-08-11  6:29           ` Aneesh V
2011-08-09 11:34   ` [U-Boot] [PATCH v2 0/4] arm: changes in cache handling Aneesh V
2011-08-09 11:34   ` [U-Boot] [PATCH v2 1/4] arm: do not force d-cache enable on all boards Aneesh V
2011-08-09 14:41     ` [U-Boot] d-cache enable Lukasz Majewski
2011-08-12 10:59       ` Aneesh V
2011-08-12 11:41         ` Lukasz Majewski
2011-08-12 12:16           ` Aneesh V
2011-08-12 12:21           ` Albert ARIBAUD
2011-08-12 12:32             ` Reinhard Meyer
2011-08-12 12:36               ` Albert ARIBAUD
2011-08-12 13:08             ` Lukasz Majewski
2011-08-12 13:19               ` Albert ARIBAUD
2011-08-09 11:34   ` [U-Boot] [PATCH v2 2/4] omap: enable caches at system start-up Aneesh V
2011-08-09 11:34   ` [U-Boot] [PATCH v2 3/4] armv7: stronger barrier for cache-maintenance operations Aneesh V
2011-08-09 11:34   ` [U-Boot] [PATCH v2 4/4] armv7: cache: remove flush on un-aligned invalidate Aneesh V
2011-08-11 14:35   ` [U-Boot] [PATCH v3 0/4] arm: changes in cache handling Aneesh V
2011-08-13 10:09     ` Albert ARIBAUD
2011-08-15  7:40       ` V, Aneesh
2011-08-11 14:35   ` [U-Boot] [PATCH v3 1/4] arm: do not force d-cache enable on all boards Aneesh V
2011-08-14 11:09     ` Simon Guinot
2011-08-15  7:34       ` V, Aneesh
2011-08-16 14:33     ` [U-Boot] [PATCH v4 " Aneesh V
2011-08-11 14:35   ` [U-Boot] [PATCH v3 2/4] omap: enable caches at system start-up Aneesh V
2011-08-11 14:35   ` [U-Boot] [PATCH v3 3/4] armv7: stronger barrier for cache-maintenance operations Aneesh V
2011-08-11 14:35   ` [U-Boot] [PATCH v3 4/4] armv7: cache: remove flush on un-aligned invalidate Aneesh V
2011-08-01 11:18 ` [U-Boot] [PATCH v 2/3] omap: enable caches at system start-up Aneesh V
2011-08-01 11:18 ` [U-Boot] [PATCH v 3/3] armv7: stronger barrier for cache-maintenance operations Aneesh V
2011-08-05 10:29 ` [U-Boot] [PATCH v 0/3] arm: changes in cache handling Aneesh V

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=4E422555.8030804@aribaud.net \
    --to=albert.u.boot@aribaud.net \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox