image: improve UBI image sizing on NAND devices
authorTony Ambardar <itugrok@yahoo.com>
Sat, 11 Nov 2023 12:46:14 +0000 (04:46 -0800)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 26 Nov 2023 17:37:20 +0000 (18:37 +0100)
commitfc16df9fdd596d1a3f5c3be897dc0cf69c84c469
tree58345a15e8f516b44c0baf2fa46ba641693e4bb9
parentcd5e0134b6bd2e34ad237d985da99c5307816c93
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>
include/image-commands.mk
include/image.mk