diff mbox series

[U-Boot] arm: K3: sysfw-loader: Do not require full printf() for version info

Message ID 20190805184623.19244-1-dannenberg@ti.com
State Accepted
Commit 0805fe151d8c47cfbcfddf71c0891ed4f3c10b56
Delegated to: Tom Rini
Headers show
Series [U-Boot] arm: K3: sysfw-loader: Do not require full printf() for version info | expand

Commit Message

Andreas Dannenberg Aug. 5, 2019, 6:46 p.m. UTC
A previous commit...

commit 2a51e16bd57a ("configs: Make USE_TINY_PRINTF depend on SPL||TPL and be default")

...causes the System Firmware version string during SPL boot to no longer
getting printed to the console as expected. To fix this issue rework the
handling of that string to only use basic printf() syntax rather than
for example disabling CONFIG_USE_TINY_PRINTF on affected devices, this
way maintaining most of the memory size benefit the initial patch brings
when it comes to SPL.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
---
 arch/arm/mach-k3/sysfw-loader.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

Comments

Tom Rini Aug. 5, 2019, 7:04 p.m. UTC | #1
On Mon, Aug 05, 2019 at 01:46:23PM -0500, Andreas Dannenberg wrote:

> A previous commit...
> 
> commit 2a51e16bd57a ("configs: Make USE_TINY_PRINTF depend on SPL||TPL and be default")
> 
> ...causes the System Firmware version string during SPL boot to no longer
> getting printed to the console as expected. To fix this issue rework the
> handling of that string to only use basic printf() syntax rather than
> for example disabling CONFIG_USE_TINY_PRINTF on affected devices, this
> way maintaining most of the memory size benefit the initial patch brings
> when it comes to SPL.
> 
> Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>

Oooh, sorry about that.

Fixes: 2a51e16bd57a ("configs: Make USE_TINY_PRINTF depend on SPL||TPL and be default")
Reviewed-by: Tom Rini <trini@konsulko.com>
Tom Rini Aug. 13, 2019, 4:52 p.m. UTC | #2
On Mon, Aug 05, 2019 at 01:46:23PM -0500, Andreas Dannenberg wrote:

> A previous commit...
> 
> commit 2a51e16bd57a ("configs: Make USE_TINY_PRINTF depend on SPL||TPL and be default")
> 
> ...causes the System Firmware version string during SPL boot to no longer
> getting printed to the console as expected. To fix this issue rework the
> handling of that string to only use basic printf() syntax rather than
> for example disabling CONFIG_USE_TINY_PRINTF on affected devices, this
> way maintaining most of the memory size benefit the initial patch brings
> when it comes to SPL.
> 
> Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/arch/arm/mach-k3/sysfw-loader.c b/arch/arm/mach-k3/sysfw-loader.c
index 2ede82004a..7a482bdc8a 100644
--- a/arch/arm/mach-k3/sysfw-loader.c
+++ b/arch/arm/mach-k3/sysfw-loader.c
@@ -251,10 +251,21 @@  void k3_sysfw_loader(void (*config_pm_done_callback)(void))
 	if (config_pm_done_callback)
 		config_pm_done_callback();
 
-	/* Output System Firmware version info */
-	printf("SYSFW ABI: %d.%d (firmware rev 0x%04x '%.*s')\n",
+	/*
+	 * Output System Firmware version info. Note that since the
+	 * 'firmware_description' field is not guaranteed to be zero-
+	 * terminated we manually add a \0 terminator if needed. Further
+	 * note that we intentionally no longer rely on the extended
+	 * printf() formatter '%.*s' to not having to require a more
+	 * full-featured printf() implementation.
+	 */
+	char fw_desc[sizeof(ti_sci->version.firmware_description) + 1];
+
+	strncpy(fw_desc, ti_sci->version.firmware_description,
+		sizeof(ti_sci->version.firmware_description));
+	fw_desc[sizeof(fw_desc) - 1] = '\0';
+
+	printf("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n",
 	       ti_sci->version.abi_major, ti_sci->version.abi_minor,
-	       ti_sci->version.firmware_revision,
-	       sizeof(ti_sci->version.firmware_description),
-	       ti_sci->version.firmware_description);
+	       ti_sci->version.firmware_revision, fw_desc);
 }