Browse Source
This adds a test case to demonstrate some issue seen when applying overlays using 'fdtoverlay'. It fails with FDT_ERR_NOSPACE: - with long target path - symbols in order to use these nodes in possible subsequent overlay. This is seen with this patch, by running: $ make check # Reports a failed test $ ./fdtoverlay -i tests/overlay_base.test.dtb -o out.dtb \ tests/overlay_overlay_long_path.fdoverlay.test.dtb Failed to apply tests/overlay_overlay_long_path.fdoverlay.test.dtb (-3) This overlay fails to apply, because dtb size is close to modulo 1024 bytes chunk: utilfdt_read() -> utilfdt_read_err() -> bufsize = 1024. As there is not much extra space in the blob to resolve symbols (long target path), it fails with FDT_ERR_NOSPACE. In fdtoverlay, size is : /* grow the blob to worst case */ blob_len = fdt_totalsize(blob) + total_len; I can see assumption is made that result should be lower than: - base fdt size + overlay size. Is there a simple way to find to know what the final size is? I'm not sure what the correct fix might be, for such (worst) case? Similar issue is also seen in u-boot/common/image-fit.c that implements similar approach (e.g. base fdt size + overlay size). Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com> Message-Id: <1538553302-1353-1-git-send-email-fabrice.gasnier@st.com> [dwg: To avoid breaking bisection, I committed this after a fix, so the "failed" description is no longer accurate] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
Fabrice Gasnier
6 years ago
committed by
David Gibson
3 changed files with 44 additions and 0 deletions
@ -0,0 +1,32 @@ |
|||||||
|
/dts-v1/; |
||||||
|
/plugin/; |
||||||
|
|
||||||
|
&subtest_with_long_path { |
||||||
|
lpath_0: test-0 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_1: test-1 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_2: test-2 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_3: test-3 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_4: test-4 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_5: test-5 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
|
||||||
|
lpath_6: test-6 { |
||||||
|
prop = "lpath"; |
||||||
|
}; |
||||||
|
}; |
Loading…
Reference in new issue