From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerry Van Baren Date: Thu, 07 Feb 2008 13:54:21 -0500 Subject: [U-Boot-Users] [PATCH] Fix wrong memory limit calculation in memory-test In-Reply-To: References: Message-ID: <47AB53DD.3030007@ge.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Guennadi Liakhovetski wrote: > If the length of the memory address range passed to the "mtest" command is > not of the form 2^x - 1, not all address lines are tested. This bug is > inherited from the original software at > http://www.netrino.com/Embedded-Systems/How-To/Memory-Test-Suite-C. Fix > this. > > Signed-off-by: Guennadi Liakhovetski > > --- > > diff --git a/common/cmd_mem.c b/common/cmd_mem.c > index a994211..2b55e7e 100644 > --- a/common/cmd_mem.c > +++ b/common/cmd_mem.c > @@ -661,7 +661,7 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > ulong readback; > > #if defined(CFG_ALT_MEMTEST) > - vu_long addr_mask; > + vu_long len; > vu_long offset; > vu_long test_offset; > vu_long pattern; > @@ -800,24 +800,24 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > * Returns: 0 if the test succeeds, 1 if the test fails. > * The "## NOTE ##" doesn't really apply any more. Besides that, generally "start" and "end" are constrained by the system (hardware and software configuration) so "picking" them is a nebulous concept. I would simply delete the note. > * ## NOTE ## Be sure to specify start and end > - * addresses such that addr_mask has > + * addresses such that len has > * lots of bits set. For example an > * address range of 01000000 02000000 is > * bad while a range of 01000000 > * 01ffffff is perfect. > */ > - addr_mask = ((ulong)end - (ulong)start)/sizeof(vu_long); > + len = ((ulong)end - (ulong)start)/sizeof(vu_long); > pattern = (vu_long) 0xaaaaaaaa; > anti_pattern = (vu_long) 0x55555555; > > PRINTF("%s:%d: addr mask = 0x%.8lx\n", s/addr mask/len/ in the printf() string > __FUNCTION__, __LINE__, > - addr_mask); > + len); Otherwise, good! Thanks, gvb