From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 6/9] CACHE: nand read/write: Test if start address is aligned
Date: Mon, 25 Jun 2012 11:58:10 -0500 [thread overview]
Message-ID: <4FE898A2.9060801@freescale.com> (raw)
In-Reply-To: <1340583477-14018-7-git-send-email-marex@denx.de>
On 06/24/2012 07:17 PM, Marek Vasut wrote:
> This prevents the scenario where data cache is on and the
> device uses DMA to deploy data. In that case, it might not
> be possible to flush/invalidate data to RAM properly. The
> other option is to use bounce buffer,
Or get cache coherent hardware. :-)
> but that involves a lot of copying and therefore degrades performance
> rapidly. Therefore disallow this possibility of unaligned load
> address altogether if data cache is on.
How about use the bounce buffer only if the address is misaligned? The
corrective action a user has to take is the same as with this patch,
except for an additional option of living with the slight performance
penalty. How often does this actually happen? How much does it
actually slow things down compared to the speed of the NAND chip?
I'm hesitant to break something -- even if it's odd (literally in this
case) -- that currently works on most hardware, just because one or two
drivers can't handle it. It feels kind of like changing the read() and
write() system calls to require cacheline alignment. :-P
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Scott Wood <scottwood@freescale.com>
> ---
> common/cmd_nand.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/common/cmd_nand.c b/common/cmd_nand.c
> index a91ccf4..122a91c 100644
> --- a/common/cmd_nand.c
> +++ b/common/cmd_nand.c
> @@ -609,6 +609,8 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
> goto usage;
>
> addr = (ulong)simple_strtoul(argv[2], NULL, 16);
> + if (!cacheline_aligned(addr))
> + return 1;
There's no way you can just return like this without printing an error
that lets the user know that the operation wasn't performed, and why.
-Scott
next prev parent reply other threads:[~2012-06-25 16:58 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-25 0:17 [U-Boot] [PATCH 0/9] CACHE: Finishing touches Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 1/9] COMMON: Add __stringify() function Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 2/9] CACHE: Add cache_aligned() macro Marek Vasut
2012-06-25 21:12 ` Scott Wood
2012-06-25 23:30 ` Marek Vasut
2012-07-07 3:00 ` Aneesh V
2012-06-25 0:17 ` [U-Boot] [PATCH 3/9] CACHE: ext2load: Test if start address is aligned Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 4/9] CACHE: fatload: " Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 5/9] CACHE: mmc read/write: " Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 6/9] CACHE: nand " Marek Vasut
2012-06-25 16:58 ` Scott Wood [this message]
2012-06-25 18:43 ` Tom Rini
2012-06-25 20:08 ` Scott Wood
2012-06-25 20:48 ` Tom Rini
2012-06-25 21:17 ` Scott Wood
2012-06-25 21:22 ` Tom Rini
2012-06-25 23:42 ` Marek Vasut
2012-06-26 0:37 ` Scott Wood
2012-06-26 1:16 ` Marek Vasut
2012-06-26 19:38 ` Scott Wood
2012-06-25 23:38 ` Marek Vasut
2012-06-25 23:37 ` Marek Vasut
2012-06-25 23:57 ` Scott Wood
2012-06-26 1:33 ` Marek Vasut
2012-06-26 19:25 ` Scott Wood
2012-06-26 20:39 ` Marek Vasut
2012-07-07 3:05 ` Aneesh V
2012-06-25 0:17 ` [U-Boot] [PATCH 7/9] CACHE: net: " Marek Vasut
2012-06-25 18:05 ` Joe Hershberger
2012-06-25 23:16 ` Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 8/9] CACHE: net: asix: Fix asix driver to work with data cache on Marek Vasut
2012-06-25 18:07 ` Joe Hershberger
2012-06-25 23:16 ` Marek Vasut
2012-07-06 23:09 ` Marek Vasut
2012-07-06 23:16 ` Marek Vasut
2012-06-25 0:17 ` [U-Boot] [PATCH 9/9] M28EVK: Enable instruction and data cache Marek Vasut
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=4FE898A2.9060801@freescale.com \
--to=scottwood@freescale.com \
--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