load_payload: Use 32-bit accesses to speed up decompression.
Flash prefers 32-bit sequential access. On some platforms ROM is not cached due to i.a. MTRR shortage. Moreover ROM caching is not currently enabled by default. With this patch payload decompression is sped up by theoretical factor of 4. Test on X201, with caching disabled: Before: 90:load payload 4,470,841 (24,505) 99:selfboot jump 6,073,812 (1,602,971) After: 90:load payload 4,530,979 (17,728) 99:selfboot jump 5,103,408 (572,429) Change-Id: Id17e61316dbbf73f4a837bf173f88bf26c01c62b Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/5144 Reviewed-by: Aaron Durbin <adurbin@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins)
This commit is contained in:
@@ -202,6 +202,12 @@ int cbfs_decompress(int algo, void *src, void *dst, int len)
|
||||
{
|
||||
switch (algo) {
|
||||
case CBFS_COMPRESS_NONE:
|
||||
/* Reads need to be aligned at 4 bytes to avoid
|
||||
poor flash performance. */
|
||||
while (len && ((u32)src & 3)) {
|
||||
*(u8*)dst++ = *(u8*)src++;
|
||||
len--;
|
||||
}
|
||||
memmove(dst, src, len);
|
||||
return len;
|
||||
#ifdef CBFS_CORE_WITH_LZMA
|
||||
|
||||
Reference in New Issue
Block a user