From: Quentin Schulz <[email protected]> This reverts commit 1076feb8a3f96e2def81485f852e9c1a451cedf4.
The args support for the sysreset uclass contains a logic bug. The first sysreset device implementing the request_arg callback will consume the args, not support the specified arg and thus return -EPROTONOSUPPORT which will stop the iteration over all sysreset devices. This is an issue if one has multiple sysreset devices and each with support for different (valid) args. If a sysreset device implements a -dummy argument and another -foo and one calls reset -dummy on the U-Boot CLI, it'll depend on which sysreset device will be attempted first. If it is the one implementing -foo, it'll return it doesn't support the argument with -EPROTONOSUPPORT in which case the device implementing -dummy will never be attempted and instead we'll do a cold reset which is very likely not what's expected. Signed-off-by: Quentin Schulz <[email protected]> --- cmd/boot.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmd/boot.c b/cmd/boot.c index 29cdf4a9a81a..d80f9d8c05dd 100644 --- a/cmd/boot.c +++ b/cmd/boot.c @@ -60,11 +60,8 @@ U_BOOT_CMD( reset, 2, 0, do_reset, "Perform RESET of the CPU", "- cold boot without level specifier\n" -#if IS_ENABLED(CONFIG_SYSRESET_CMD_RESET_ARGS) -// All options handled by sysreset drivers via their sysreset_ops.request_arg callback #ifdef CONFIG_SYSRESET_QCOM_PSCI "reset -edl - Boot to Emergency DownLoad mode\n" -#endif #endif "reset -w - warm reset if implemented" ); -- 2.55.0

