Message ID | 20160829151036.30210-1-clemens.gruber@pqgruber.com |
---|---|
State | Accepted |
Commit | d025021e981fc2c06e95a3512f81f799f45d1f9c |
Delegated to: | Tom Rini |
Headers | show |
Thanks Clemens, On 08/29/2016 08:10 AM, Clemens Gruber wrote: > When using gzwrite to eMMC on an i.MX6Q board, the following warning > occurs repeatedly: > CACHE: Misaligned operation at range [4fd63318, 4fe63318] > > This patch cache-aligns the memory allocation for the gzwrite writebuf, > therefore avoiding the misaligned dcache flush and the warning from > check_cache_range. > > Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> > --- > lib/gunzip.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/gunzip.c b/lib/gunzip.c > index bc746d6..832b306 100644 > --- a/lib/gunzip.c > +++ b/lib/gunzip.c > @@ -11,6 +11,7 @@ > #include <console.h> > #include <image.h> > #include <malloc.h> > +#include <memalign.h> > #include <u-boot/zlib.h> > #include <div64.h> > > @@ -193,7 +194,7 @@ int gzwrite(unsigned char *src, int len, > > s.next_in = src + i; > s.avail_in = payload_size+8; > - writebuf = (unsigned char *)malloc(szwritebuf); > + writebuf = (unsigned char *)malloc_cache_aligned(szwritebuf); > > /* decompress until deflate stream ends or end of file */ > do { > Reviewed-by: Eric Nelson <eric@nelint.com>
On 2016-08-29 08:10, Clemens Gruber wrote: > When using gzwrite to eMMC on an i.MX6Q board, the following warning > occurs repeatedly: > CACHE: Misaligned operation at range [4fd63318, 4fe63318] > > This patch cache-aligns the memory allocation for the gzwrite writebuf, > therefore avoiding the misaligned dcache flush and the warning from > check_cache_range. > > Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> > --- > lib/gunzip.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/gunzip.c b/lib/gunzip.c > index bc746d6..832b306 100644 > --- a/lib/gunzip.c > +++ b/lib/gunzip.c > @@ -11,6 +11,7 @@ > #include <console.h> > #include <image.h> > #include <malloc.h> > +#include <memalign.h> > #include <u-boot/zlib.h> > #include <div64.h> > > @@ -193,7 +194,7 @@ int gzwrite(unsigned char *src, int len, > > s.next_in = src + i; > s.avail_in = payload_size+8; > - writebuf = (unsigned char *)malloc(szwritebuf); > + writebuf = (unsigned char *)malloc_cache_aligned(szwritebuf); > > /* decompress until deflate stream ends or end of file */ > do { I wondered about the length of the buffer, but szwritebuf is forced to be a multiple of the device block size, which is typically quite a bit bigger than a cache line, so I think we are fine there. Reviewed-by: Stefan Agner <stefan.agner@toradex.com> -- Stefan
On Mon, Aug 29, 2016 at 05:10:36PM +0200, Clemens Gruber wrote: > When using gzwrite to eMMC on an i.MX6Q board, the following warning > occurs repeatedly: > CACHE: Misaligned operation at range [4fd63318, 4fe63318] > > This patch cache-aligns the memory allocation for the gzwrite writebuf, > therefore avoiding the misaligned dcache flush and the warning from > check_cache_range. > > Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> > --- > lib/gunzip.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/gunzip.c b/lib/gunzip.c > index bc746d6..832b306 100644 > --- a/lib/gunzip.c > +++ b/lib/gunzip.c > @@ -11,6 +11,7 @@ > #include <console.h> > #include <image.h> > #include <malloc.h> > +#include <memalign.h> > #include <u-boot/zlib.h> > #include <div64.h> > > @@ -193,7 +194,7 @@ int gzwrite(unsigned char *src, int len, > > s.next_in = src + i; > s.avail_in = payload_size+8; > - writebuf = (unsigned char *)malloc(szwritebuf); > + writebuf = (unsigned char *)malloc_cache_aligned(szwritebuf); > > /* decompress until deflate stream ends or end of file */ > do { > -- > 2.9.3 > Hi, are there any blockers for this patch to get merged? Thanks, Clemens
+Tom On 3 October 2016 at 11:53, Clemens Gruber <clemens.gruber@pqgruber.com> wrote: > > On Mon, Aug 29, 2016 at 05:10:36PM +0200, Clemens Gruber wrote: > > When using gzwrite to eMMC on an i.MX6Q board, the following warning > > occurs repeatedly: > > CACHE: Misaligned operation at range [4fd63318, 4fe63318] > > > > This patch cache-aligns the memory allocation for the gzwrite writebuf, > > therefore avoiding the misaligned dcache flush and the warning from > > check_cache_range. > > > > Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> > > --- > > lib/gunzip.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > [...] > > > Hi, > > are there any blockers for this patch to get merged? > > Thanks, > Clemens
On Mon, Aug 29, 2016 at 05:10:36PM +0200, Clemens Gruber wrote: > When using gzwrite to eMMC on an i.MX6Q board, the following warning > occurs repeatedly: > CACHE: Misaligned operation at range [4fd63318, 4fe63318] > > This patch cache-aligns the memory allocation for the gzwrite writebuf, > therefore avoiding the misaligned dcache flush and the warning from > check_cache_range. > > Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> > Reviewed-by: Eric Nelson <eric@nelint.com> > Reviewed-by: Stefan Agner <stefan.agner@toradex.com> Applied to u-boot/master, thanks!
diff --git a/lib/gunzip.c b/lib/gunzip.c index bc746d6..832b306 100644 --- a/lib/gunzip.c +++ b/lib/gunzip.c @@ -11,6 +11,7 @@ #include <console.h> #include <image.h> #include <malloc.h> +#include <memalign.h> #include <u-boot/zlib.h> #include <div64.h> @@ -193,7 +194,7 @@ int gzwrite(unsigned char *src, int len, s.next_in = src + i; s.avail_in = payload_size+8; - writebuf = (unsigned char *)malloc(szwritebuf); + writebuf = (unsigned char *)malloc_cache_aligned(szwritebuf); /* decompress until deflate stream ends or end of file */ do {
When using gzwrite to eMMC on an i.MX6Q board, the following warning occurs repeatedly: CACHE: Misaligned operation at range [4fd63318, 4fe63318] This patch cache-aligns the memory allocation for the gzwrite writebuf, therefore avoiding the misaligned dcache flush and the warning from check_cache_range. Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com> --- lib/gunzip.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)