Commit 99b8517037f212a3cf4bf75ed99fa877fe4e6d9d
1 parent
3e0cfaa05d
Exists in
smarc_8mq_lf_v2020.04
and in
22 other branches
ARM: uniphier: use Image.gz instead Image for booting ARM64 Linux
The ARM64 Linux raw image now amounts to 15MB and it is getting bigger and bigger. Using Image.gz saves about 8MB. The cost of unzip is smaller than what we get by saving the kernel loading from non-volatile devices. The ARM32 Linux still uses zImage, a self-decompressor image, so it should not be affected. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Showing 1 changed file with 22 additions and 14 deletions Side-by-side Diff
include/configs/uniphier.h
... | ... | @@ -15,6 +15,10 @@ |
15 | 15 | |
16 | 16 | #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10 |
17 | 17 | |
18 | +#ifdef CONFIG_ARM64 | |
19 | +#define CONFIG_CMD_UNZIP | |
20 | +#endif | |
21 | + | |
18 | 22 | /*----------------------------------------------------------------------- |
19 | 23 | * MMU and Cache Setting |
20 | 24 | *----------------------------------------------------------------------*/ |
21 | 25 | |
22 | 26 | |
23 | 27 | |
24 | 28 | |
25 | 29 | |
26 | 30 | |
27 | 31 | |
28 | 32 | |
29 | 33 | |
30 | 34 | |
31 | 35 | |
... | ... | @@ -166,46 +170,50 @@ |
166 | 170 | "__nfsboot=run tftpboot\0" |
167 | 171 | #else |
168 | 172 | #ifdef CONFIG_ARM64 |
169 | -#define CONFIG_BOOTFILE "Image" | |
173 | +#define CONFIG_BOOTFILE "Image.gz" | |
170 | 174 | #define LINUXBOOT_CMD "booti" |
175 | +#define KERNEL_ADDR_LOAD "kernel_addr_load=0x84200000\0" | |
171 | 176 | #define KERNEL_ADDR_R "kernel_addr_r=0x80080000\0" |
172 | -#define KERNEL_SIZE "kernel_size=0x00c00000\0" | |
173 | -#define RAMDISK_ADDR "ramdisk_addr=0x00e00000\0" | |
174 | 177 | #else |
175 | 178 | #define CONFIG_BOOTFILE "zImage" |
176 | 179 | #define LINUXBOOT_CMD "bootz" |
180 | +#define KERNEL_ADDR_LOAD "kernel_addr_load=0x80208000\0" | |
177 | 181 | #define KERNEL_ADDR_R "kernel_addr_r=0x80208000\0" |
178 | -#define KERNEL_SIZE "kernel_size=0x00800000\0" | |
179 | -#define RAMDISK_ADDR "ramdisk_addr=0x00a00000\0" | |
180 | 182 | #endif |
181 | 183 | #define LINUXBOOT_ENV_SETTINGS \ |
182 | 184 | "fdt_addr=0x00100000\0" \ |
183 | 185 | "fdt_addr_r=0x84100000\0" \ |
184 | 186 | "fdt_size=0x00008000\0" \ |
185 | 187 | "kernel_addr=0x00200000\0" \ |
188 | + KERNEL_ADDR_LOAD \ | |
186 | 189 | KERNEL_ADDR_R \ |
187 | - KERNEL_SIZE \ | |
188 | - RAMDISK_ADDR \ | |
190 | + "kernel_size=0x00800000\0" \ | |
191 | + "ramdisk_addr=0x00a00000\0" \ | |
189 | 192 | "ramdisk_addr_r=0x84a00000\0" \ |
190 | 193 | "ramdisk_size=0x00600000\0" \ |
191 | 194 | "ramdisk_file=rootfs.cpio.uboot\0" \ |
192 | - "boot_common=setexpr bootm_low $kernel_addr_r '&' fe000000 &&" \ | |
195 | + "boot_common=setexpr bootm_low $kernel_addr_r '&' fe000000 && " \ | |
196 | + "if test $kernel_addr_load = $kernel_addr_r; then " \ | |
197 | + "true; " \ | |
198 | + "else " \ | |
199 | + "unzip $kernel_addr_load $kernel_addr_r; " \ | |
200 | + "fi && " \ | |
193 | 201 | LINUXBOOT_CMD " $kernel_addr_r $ramdisk_addr_r $fdt_addr_r\0" \ |
194 | - "norboot=setexpr kernel_addr $nor_base + $kernel_addr &&" \ | |
195 | - "setexpr kernel_size $kernel_size / 4 &&" \ | |
196 | - "cp $kernel_addr $kernel_addr_r $kernel_size &&" \ | |
202 | + "norboot=setexpr kernel_addr_nor $nor_base + $kernel_addr && " \ | |
203 | + "setexpr kernel_size_div4 $kernel_size / 4 && " \ | |
204 | + "cp $kernel_addr_nor $kernel_addr_load $kernel_size_div4 && " \ | |
197 | 205 | "setexpr ramdisk_addr_r $nor_base + $ramdisk_addr &&" \ |
198 | 206 | "setexpr fdt_addr_r $nor_base + $fdt_addr &&" \ |
199 | 207 | "run boot_common\0" \ |
200 | - "nandboot=nand read $kernel_addr_r $kernel_addr $kernel_size &&" \ | |
208 | + "nandboot=nand read $kernel_addr_load $kernel_addr $kernel_size && " \ | |
201 | 209 | "nand read $ramdisk_addr_r $ramdisk_addr $ramdisk_size &&" \ |
202 | 210 | "nand read $fdt_addr_r $fdt_addr $fdt_size &&" \ |
203 | 211 | "run boot_common\0" \ |
204 | - "tftpboot=tftpboot $kernel_addr_r $bootfile &&" \ | |
212 | + "tftpboot=tftpboot $kernel_addr_load $bootfile && " \ | |
205 | 213 | "tftpboot $ramdisk_addr_r $ramdisk_file &&" \ |
206 | 214 | "tftpboot $fdt_addr_r $fdt_file &&" \ |
207 | 215 | "run boot_common\0" \ |
208 | - "__nfsboot=tftpboot $kernel_addr_r $bootfile &&" \ | |
216 | + "__nfsboot=tftpboot $kernel_addr_load $bootfile && " \ | |
209 | 217 | "tftpboot $fdt_addr_r $fdt_file &&" \ |
210 | 218 | "setenv ramdisk_addr_r - &&" \ |
211 | 219 | "run boot_common\0" |