Re: [PATCH] kgdb: could not write to the last of valid memory withkgdb.
From: Jason Wessel
Date: Tue Sep 09 2008 - 09:14:36 EST
Atsuo Igarashi wrote:
> Hi,
>
> I'm using i.MX31 ARM11 board which has 104Mbyte valid memory. When
> I'd invoked a print command to write the last of valid memory from
> gdb, there was no response from kgdb.
> It seems that the following line causes this problem.
>
> kernel/kgdb.c: write_mem_msg()
> ...
> 491 flush_icache_range(addr, addr + length + 1);
>
> If the last byte of valid memory is specified, the last cache line
> and the next cache line will be flushed by the ARM11 V6's function
> from flush_icache_range(). I'm not sure why the 2nd parameter has
> +1, I assume this +1 is unnecessary for ARM11 V6's cache. I send a
> patch to remove this +1, does anyone know necessity for other
> architectures?
I had to go digging through the archives to find out where the "+1"
came from, as it pre-dates my involvement with kgdb. It turns out
this actually appeared in the initial version of the 'X' 'M' gdb
serial packet write.
You can see historical first version if you scroll to line 973 at:
http://kgdb.cvs.sourceforge.net/kgdb/kgdb-2/core-lite.patch?annotate=1.40
That means we have carried this for 3 years, 10 months with no one
noticing it. :-)
The flush_icache_range() is a "start" to "end" address so there should
be no need for the +1, as it is already computed by adding the length.
I will queue this patch for some testing and pushing into the
mainline.
Thanks,
Jason.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/