diff options
| author | Tony Ambardar <itugrok@yahoo.com> | 2023-11-11 04:46:14 -0800 |
|---|---|---|
| committer | Hauke Mehrtens <hauke@hauke-m.de> | 2023-11-26 18:37:20 +0100 |
| commit | fc16df9fdd596d1a3f5c3be897dc0cf69c84c469 (patch) | |
| tree | 58345a15e8f516b44c0baf2fa46ba641693e4bb9 /include/image.mk | |
| parent | cd5e0134b6bd2e34ad237d985da99c5307816c93 (diff) | |
| download | upstream-fc16df9fdd596d1a3f5c3be897dc0cf69c84c469.tar.gz upstream-fc16df9fdd596d1a3f5c3be897dc0cf69c84c469.tar.bz2 upstream-fc16df9fdd596d1a3f5c3be897dc0cf69c84c469.zip | |
image: improve UBI image sizing on NAND devices
Many NAND devices use a build recipe with "append-ubi | check-size" to
ensure factory images don't exceed the target flash partition size.
However, UBI reserves space for bad block handling and other operational
overhead, and thus 'check-size' can overestimate the space available by
several MB. In practice, this means a failed check is definitely a failure,
while a passing check is only probably a pass.
Improve the situation by teaching 'Build/append-ubi' to check image sizes
while accounting for UBI reserved blocks. Add new device variable NAND_SIZE
and use with existing IMAGE_SIZE to derate the available space. Each UBI
device reserves 20 PEBs per 1024 PEBs of the entire NAND device for bad
blocks, plus an additional 4 PEBs overhead.
Many devices can transparently enable this check by setting NAND_SIZE based
on their flash storage, and may then remove any unneeded 'check-size'.
Link: http://www.linux-mtd.infradead.org/doc/ubi.html#L_overhead
Suggested-by: Shiji Yang <yangshiji66@qq.com>
Suggested-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Diffstat (limited to 'include/image.mk')
| -rw-r--r-- | include/image.mk | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/image.mk b/include/image.mk index ef52337deea..096ccb5f185 100644 --- a/include/image.mk +++ b/include/image.mk @@ -397,6 +397,7 @@ define Device/Init DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2) FACTORY_IMG_NAME := IMAGE_SIZE := + NAND_SIZE := KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX) KERNEL_SUFFIX := -kernel.bin KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX) @@ -457,7 +458,7 @@ DEFAULT_DEVICE_VARS := \ DEVICE_DTS_DIR DEVICE_DTS_OVERLAY DEVICE_DTS_LOADADDR \ DEVICE_FDT_NUM DEVICE_IMG_PREFIX SOC BOARD_NAME UIMAGE_MAGIC UIMAGE_NAME \ UIMAGE_TIME SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \ - UBOOT_PATH IMAGE_SIZE \ + UBOOT_PATH IMAGE_SIZE NAND_SIZE \ FACTORY_IMG_NAME FACTORY_SIZE \ DEVICE_PACKAGES DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \ DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \ |
