[LEDE-DEV] [PATCH] ramips: fix AR670W partition alignment

John Crispin john at phrozen.org
Sun Feb 5 05:58:16 PST 2017



On 05/02/2017 14:26, Mathias Kresin wrote:
> 05.02.2017 10:15, John Crispin:
>>
>>
>> On 05/02/2017 09:59, Claudio Leite wrote:
>>> mtdsplit_lzma requires that the rootfs be aligned to a block boundary.
>>> Pad the kernel partition to make this so.
>>>
>>> Signed-off-by: Claudio Leite <leitec at gmail.com>
>>> ---
>>>  target/linux/ramips/image/rt288x.mk | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/target/linux/ramips/image/rt288x.mk
>>> b/target/linux/ramips/image/rt288x.mk
>>> index 4a0d6d4..86a5063 100644
>>> --- a/target/linux/ramips/image/rt288x.mk
>>> +++ b/target/linux/ramips/image/rt288x.mk
>>> @@ -14,7 +14,7 @@ define Device/ar670w
>>>    BLOCKSIZE := 64k
>>>    DEVICE_TITLE := Airlink AR670W
>>>    IMAGE_SIZE := $(ralink_default_fw_size_4M)
>>> -  KERNEL := $(KERNEL_DTB)
>>> +  KERNEL := $(KERNEL_DTB) | pad-to $$(BLOCKSIZE)
>>>    IMAGES += factory.bin
>>>    IMAGE/factory.bin := $$(sysupgrade_bin) | check-size
>>> $$$$(IMAGE_SIZE) | \
>>>      wrg-header wrgn16a_airlink_ar670w
>>>
>>
>> Hi
>>
>> although technically correct, the lzma splitter needs to be fixed to not
>> have this requirement, instead of adding these patches for all boards.
>> there is no need for any padding beyond 4byte padding.
> 
> I'm in doubt that the lzma splitter can be fixed.
> 
> The dependency to align the rootfs isn't specific to the lzma splitter.
> mtd_find_rootfs_from() in mtdsplit.c uses the erase block size as step
> size.
> 
> For the other splitter an not erase block size aligned rootfs works only
> because the headers provide informations about the kernel size and we
> can pass the kernel size as offset to mtd_find_rootfs_from() to prevent
> stepping over the mtd.
> 
> But the lzma header doesn't provide any informations about
> kernel/compressed size. Only the uncompressed size is stored in the
> header. According to the LZMA SDK, the LZMA decoder simply stops
> decompressing as soon as the amount of decompressed data matches the
> value stored in the header.
> 
> The only fix I can think of, would be to change the step size in
> mtd_find_rootfs_from() to 1 byte. But that would introduce a huge
> performance penalty.
> 
> Hopefully I missed the obvious solution for the problem.
> 
> Mathias
> 

would need to look but its been like that since ever. ramips and lantiq
required a 4byte alignment. if this changed then its a regression that
we need to fix

	John

> _______________________________________________
> Lede-dev mailing list
> Lede-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev



More information about the Lede-dev mailing list