
Wolfgang Denk wd@denx.de wrote in news:20090716211129.E9241832E416@gemini.denx.de:
Maybe lzmaBuffToBuffDecompress() stores an incorrect value in unc_len?
Hi,
this is correct, the unpatched version of lib_generic/lzma/LzmaTools.c has this code in line 137:
*uncompressedSize = outProcessed;
I added the same code to the lzma465 patch and it works for me:
--- u-boot-2009.06.org/lib_generic/lzma/LzmaTools.c 2009-07-17 08:12:52.000000000 +0200 +++ u-boot-2009.06/lib_generic/lzma/LzmaTools.c 2009-07-17 08:15:37.000000000 +0200 @@ -116,6 +117,7 @@ outStream, &outProcessed, inStream + LZMA_DATA_OFFSET, &compressedSize, inStream, LZMA_PROPS_SIZE, LZMA_FINISH_ANY, &state, &g_Alloc); + *uncompressedSize = outProcessed; if (res != SZ_OK) { return res; }
Attached you will find a patch which also includes the watchdog stuff I need along with the formentioned patch. I do not know if all WATCHDOG_RESET() calls are really necessary but I have a 66 MHz CPU here which takes 12s to decompress a 550kb LZMA-compressed kernel.
Cheers, rhabarber1848
=ybegin line=128 size=3334 name=u-boot-2009.06_lzma_watchdog.diff JWxJWW\ZZcXZ`XYY€Yv€nXJWW\ZZcXZ`YY€Yv€nX4WWWJWW\ZZcXZ`XY Y€Yv€nX3\ZZcWZaW[aJZbd[\d_\XZZZZZZZZZJUZ\ZZ4UUUJWW\ZZcXZ`YY€Yv€nX3\ZZcWZaW[aJZbd[]d_XZZZZZZ ZZZJUZ\ZZ4jjJW[V`JU[VcJjj4JYTJv€nXJWWJvwkJn4J\ZZbW[[WZ`JdJsJz JdJzJJTY4J4UMJfXh4UM JfXh4UMJf¡Xh4JMJLv€nXL4J4JMJfXh4jjJW[_`V`JU[_cVcJjj4JJJs]\JJgJWh e4JJJs]\JJgJWhe4J4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJ4 JJJ¥4JJJJJmv€zJTe4jjJW[a`V`JU[b\VcJjj4JJJJJJJJRJfJxv}S4JJJJJJJ¥4JJJJJJJJJ£JgJ[e4UMJRmyxp sqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJJJJJ¥Jqo~ls~RJUJ£VJ£SJ§J¡JR£ JfJZ¢[ZZSe4JJJJJJJ§4JJJJJJJ4jjJW[b]V`JU[c\VcJjj4JJJJJJJJJJl£JgJWh RzJWJZSJUJRRzJfJZSJ iJl}€JdJZSe4JJJJJJJJJJJgJZ¢[ZZe4JJJJJJJJJ£JgJ[e4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~m rnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJJJJ4JJJJJJJJJ¥4JJJJJJJJJJJJe4jjJW][`V`JU]\bVcJjj4JJJJJJJJJJJJJ¥4JJJJJJJJJJJ JJJJs]\JJgJ[e4JJJJJJJJJJJJJJJJJgJ[e4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mrnyq|o}o ~RSe4UM4JJJJJJJJJJJJJJJ4JJJJJJJJJJJJJJJ¥4JJJJJJJJJJJJJJJJJqo~ls~\RJUJVJVJeJVJJŠgJSe4jjJW]\aV`JU]^\VcJj j4JJJJJJJJJJJ4JJJJJJJJJJJ¥4JJJJJJJJJJJJJnlJWgJxkle4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsq k~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJJJJJJJJ4JJJJJJJJJJJJJ¥4JJJJJJJJJJJJJJJxy|wkvso4jjJW]ccV[\JU^[aV[bJjj4JJJJJJJJJJJ JJgJRSJWJRSze4JJJJJJJJJJJJl£JTJgJJUJve4JJJJJJJJJJJzJUgJve4UMJ Rmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJJJJJJ4JJJJJJJJJJJJJTRSJgJRl£ST RJUJSe4JJJJJJJJJJJ¡JRUUJKgJSe4JJJJJJJJJ§4JJJJJJJJJ4JJJJJJJJJ¥4UMJRmyxpsqrk~mrnyqSJŠŠJR myxpsqk~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJJJJJJ4JJJJJJJJJJJ¥4JJJJJJJJJJJJJ zUUJgJ e4jjJW^[aV`JU^^[VcJ jj4JJJJJ§4JJJ§4JJJ¡JRzJfJJPPJJfJvSe4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mr nyq|o}o~RSe4UM4JJJxy|wkvsoe4JJJWhJgJe4JJJWhJgJe4JWxJWW\ZZcXZ`XYY€Yv€~ XJWW\ZZcXZ`YY€Yv€~X4WWWJWW\ZZcXZ`XYY€Yv€~X3\ZZcWZaW[aJZbd[\d_\XZZZZZZZZZ JUZ\ZZ4UUUJWW\ZZcXZ`YY€Yv€~X3\ZZcWZaW[aJZbd[]d]^XZZZZZZZZZJUZ\ZZ4jjJW]`V`JU]`VaJjj4J4JMJf Xh4JMJfXh4UMJf¡Xh4J4JMJmyxpsqvwk4J4jjJW[[\V[ZJU[[]V[^Jjj4J4JJJJJYTJnJTY4JJJJJz JgJ}€pe4UMJRmyxpsqrk~mrnyqSJŠŠJRmyxpsqk~mrnyqS4U3k~mrnyq|o}o~RSe4UM4JJJJJJgJv€n R4JJJJJJJJJ}VJPzV4JJJJJJJJJ}JUJvwknk~kypp}o~VJP}€V4JJJJJJJJJ}VJvwkz|yz}} soVJvwkpsxs}rkxVJPVJPkSe4UJJJJT}€JgJze4JJJJJJRJKgJ}yuSJJ¥4JJJJJJJJJJe4J JJJJ§4 =yend size=3369 crc32=ba1b8df2