[PATCH v2] image-board: fix wrong implementation ram disk address setup from cmdline

Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com --- V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar... --- boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/boot/image-board.c b/boot/image-board.c index bf8817165c..87a8f07432 100644 --- a/boot/image-board.c +++ b/boot/image-board.c @@ -334,7 +334,7 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (select) { ulong default_addr; - bool done = true; + bool done = false;
if (CONFIG_IS_ENABLED(FIT)) { /* @@ -352,13 +352,13 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, &fit_uname_config)) { debug("* ramdisk: config '%s' from image at 0x%08lx\n", fit_uname_config, rd_addr); + done = true; } else if (fit_parse_subimage(select, default_addr, &rd_addr, &fit_uname_ramdisk)) { debug("* ramdisk: subimage '%s' from image at 0x%08lx\n", fit_uname_ramdisk, rd_addr); - } else { - done = false; + done = true; } } if (!done) {

On Wed, 24 Nov 2021 at 20:09, Artem Lapkin email2tema@gmail.com wrote:
Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com
V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar...
boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
Fixes: f33a2c1bd0f ("image: Remove #ifdefs from select_ramdisk()") Reviewed-by: Simon Glass sjg@chromium.org

On Thu, Nov 25, 2021 at 11:08:59AM +0800, Artem Lapkin wrote:
Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com Reviewed-by: Simon Glass sjg@chromium.org
V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar...
boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/boot/image-board.c b/boot/image-board.c index bf8817165c..87a8f07432 100644 --- a/boot/image-board.c +++ b/boot/image-board.c @@ -334,7 +334,7 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (select) { ulong default_addr;
bool done = true;
bool done = false;
if (CONFIG_IS_ENABLED(FIT)) { /*
@@ -352,13 +352,13 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, &fit_uname_config)) { debug("* ramdisk: config '%s' from image at 0x%08lx\n", fit_uname_config, rd_addr);
done = true; } else if (fit_parse_subimage(select, default_addr, &rd_addr, &fit_uname_ramdisk)) { debug("* ramdisk: subimage '%s' from image at 0x%08lx\n", fit_uname_ramdisk, rd_addr);
} else {
done = false;
} if (!done) {done = true; }
I think we still need this? Can you please confirm and if so rebase to master again, sorry, thanks!

On Tue, Jan 18, 2022 at 3:47 AM Tom Rini trini@konsulko.com wrote:
On Thu, Nov 25, 2021 at 11:08:59AM +0800, Artem Lapkin wrote:
Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com Reviewed-by: Simon Glass sjg@chromium.org
V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar...
boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/boot/image-board.c b/boot/image-board.c index bf8817165c..87a8f07432 100644 --- a/boot/image-board.c +++ b/boot/image-board.c @@ -334,7 +334,7 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (select) { ulong default_addr;
bool done = true;
bool done = false; if (CONFIG_IS_ENABLED(FIT)) { /*
@@ -352,13 +352,13 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, &fit_uname_config)) { debug("* ramdisk: config '%s' from image at 0x%08lx\n", fit_uname_config, rd_addr);
done = true; } else if (fit_parse_subimage(select, default_addr, &rd_addr, &fit_uname_ramdisk)) { debug("* ramdisk: subimage '%s' from image at 0x%08lx\n", fit_uname_ramdisk, rd_addr);
} else {
done = false;
done = true; } } if (!done) {
I think we still need this? Can you please confirm and if so rebase to master again, sorry, thanks!
i need to check master and test it again - i'll replay soon tnx
-- Tom

On Tue, Jan 18, 2022 at 3:47 AM Tom Rini trini@konsulko.com wrote:
On Thu, Nov 25, 2021 at 11:08:59AM +0800, Artem Lapkin wrote:
Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com Reviewed-by: Simon Glass sjg@chromium.org
V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar...
boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/boot/image-board.c b/boot/image-board.c index bf8817165c..87a8f07432 100644 --- a/boot/image-board.c +++ b/boot/image-board.c @@ -334,7 +334,7 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (select) { ulong default_addr;
bool done = true;
bool done = false; if (CONFIG_IS_ENABLED(FIT)) { /*
@@ -352,13 +352,13 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, &fit_uname_config)) { debug("* ramdisk: config '%s' from image at 0x%08lx\n", fit_uname_config, rd_addr);
done = true; } else if (fit_parse_subimage(select, default_addr, &rd_addr, &fit_uname_ramdisk)) { debug("* ramdisk: subimage '%s' from image at 0x%08lx\n", fit_uname_ramdisk, rd_addr);
} else {
done = false;
done = true; } } if (!done) {
I think we still need this? Can you please confirm and if so rebase to master again, sorry, thanks!
i have check master which have new commit 621158d106fe53fbb2d786d9d19dff44ad1baf91
no need for this state !!
Author: Tom Rini trini@konsulko.com Date: Mon Dec 20 09:36:32 2021 -0500
Revert "image: Remove #ifdefs from select_ramdisk()"
This reverts commit f33a2c1bd0fb371511a485cac1f182ba50db51be.
This causes a crash on some platforms as seen here: https://lore.kernel.org/r/f153017b-c41a-0d32-67b9-f288e695f900@baylibre.com/
Reported-by: Neil Armstrong narmstrong@baylibre.com Signed-off-by: Tom Rini trini@konsulko.com
PS: about crash problem maybe its same reason may be need try apply my patch and no need reverts commit f33a2c1bd0fb371511a485cac1f182ba50db51be.
-- Tom

Hi,
On 23/01/2022 04:32, Art Nikpal wrote:
On Tue, Jan 18, 2022 at 3:47 AM Tom Rini trini@konsulko.com wrote:
On Thu, Nov 25, 2021 at 11:08:59AM +0800, Artem Lapkin wrote:
Problem
Wrong implementation logic: ramdisk cmdline image address always ignored! Next block { rd_addr = hextoul(select, NULL) } unusable for raw initrd.
We have unbootable raw initrd images because, select_ramdisk for raw initrd images ignore submited select addr and setup rd_datap value to 0
Signed-off-by: Artem Lapkin art@khadas.com Reviewed-by: Simon Glass sjg@chromium.org
V2 changes _ rebase to master _ from https://patchwork.ozlabs.org/project/uboot/patch/20211016051915.4157293-1-ar...
boot/image-board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/boot/image-board.c b/boot/image-board.c index bf8817165c..87a8f07432 100644 --- a/boot/image-board.c +++ b/boot/image-board.c @@ -334,7 +334,7 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (select) { ulong default_addr;
bool done = true;
bool done = false; if (CONFIG_IS_ENABLED(FIT)) { /*
@@ -352,13 +352,13 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, &fit_uname_config)) { debug("* ramdisk: config '%s' from image at 0x%08lx\n", fit_uname_config, rd_addr);
done = true; } else if (fit_parse_subimage(select, default_addr, &rd_addr, &fit_uname_ramdisk)) { debug("* ramdisk: subimage '%s' from image at 0x%08lx\n", fit_uname_ramdisk, rd_addr);
} else {
done = false;
done = true; } } if (!done) {
I think we still need this? Can you please confirm and if so rebase to master again, sorry, thanks!
i have check master which have new commit 621158d106fe53fbb2d786d9d19dff44ad1baf91
no need for this state !!
Author: Tom Rini trini@konsulko.com Date: Mon Dec 20 09:36:32 2021 -0500
Revert "image: Remove #ifdefs from select_ramdisk()" This reverts commit f33a2c1bd0fb371511a485cac1f182ba50db51be. This causes a crash on some platforms as seen here: https://lore.kernel.org/r/f153017b-c41a-0d32-67b9-f288e695f900@baylibre.com/ Reported-by: Neil Armstrong <narmstrong@baylibre.com> Signed-off-by: Tom Rini <trini@konsulko.com>
PS: about crash problem maybe its same reason may be need try apply my patch and no need reverts commit f33a2c1bd0fb371511a485cac1f182ba50db51be.
Indeed, I missed this fix completely... anyway having a functional release was the most important at that time.
Re-sending "image: Remove #ifdefs from select_ramdisk()" with this fix squashed would be the time now.
Neil
-- Tom
participants (5)
-
Art Nikpal
-
Artem Lapkin
-
Neil Armstrong
-
Simon Glass
-
Tom Rini