* [PATCH v4 0/5] arch-meson: introduce efusedump command
@ 2023-01-10 10:56 Alexey Romanov
2023-01-10 10:56 ` [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature Alexey Romanov
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw)
To: narmstrong, trini, sjg, mkorpershoek
Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov
Keeping the commands code in an arch/ is not correct. This patchset
moves the meson smc commands from arch/arm/mach-meson to cmd/meson
folder and also adds a new 'efusedump' command with which user can
print efuse memory.
Alexey Romanov (5):
asm/arch-meson: add missing meson_sm_write_efuse signature
arm/mach-meson: move smc commands in cmd/meson
doc/usage: cmd: documentation for meson/sm command
cmd/arm: meson: sm: introduce efusedump command
doc/usage: cmd: sm: documentation efusedump cmd
MAINTAINERS | 1 +
arch/arm/include/asm/arch-meson/sm.h | 28 ++++
arch/arm/mach-meson/sm.c | 144 --------------------
cmd/Kconfig | 7 +
cmd/Makefile | 3 +
cmd/meson/Makefile | 5 +
cmd/meson/sm.c | 190 +++++++++++++++++++++++++++
doc/usage/cmd/sm.rst | 48 +++++++
doc/usage/index.rst | 1 +
9 files changed, 283 insertions(+), 144 deletions(-)
create mode 100644 cmd/meson/Makefile
create mode 100644 cmd/meson/sm.c
create mode 100644 doc/usage/cmd/sm.rst
--
2.25.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov @ 2023-01-10 10:56 ` Alexey Romanov 2023-01-10 13:40 ` Mattijs Korpershoek 2023-01-10 10:56 ` [PATCH v4 2/5] arm/mach-meson: move smc commands in cmd/meson Alexey Romanov ` (4 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw) To: narmstrong, trini, sjg, mkorpershoek Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong This function can be used by other modules. Also add comments. Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> --- arch/arm/include/asm/arch-meson/sm.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/arch/arm/include/asm/arch-meson/sm.h b/arch/arm/include/asm/arch-meson/sm.h index f3ae46a6d6b..53b75176493 100644 --- a/arch/arm/include/asm/arch-meson/sm.h +++ b/arch/arm/include/asm/arch-meson/sm.h @@ -6,10 +6,35 @@ #ifndef __MESON_SM_H__ #define __MESON_SM_H__ +/** + * meson_sm_read_efuse - read efuse memory into buffer + * + * @offset: offset from the start efuse memory + * @buffer: pointer to buffer + * @size: number of bytes to read + * @return: number of bytes read + */ ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size); +/** + * meson_sm_write_efuse - write into efuse memory from buffer + * + * @offset: offset from the start efuse memory + * @buffer: pointer to buffer + * @size: number of bytes to write + * @return: number of bytes written + */ +ssize_t meson_sm_write_efuse(uintptr_t offset, void *buffer, size_t size); + #define SM_SERIAL_SIZE 12 +/** + * meson_sm_get_serial - read chip unique id into buffer + * + * @buffer: pointer to buffer + * @size: buffer size. + * @return: zero on success or -errno on failure + */ int meson_sm_get_serial(void *buffer, size_t size); enum { @@ -28,6 +53,9 @@ enum { REBOOT_REASON_WATCHDOG_REBOOT = 13, }; +/** + * meson_sm_get_reboot_reason - get reboot reason + */ int meson_sm_get_reboot_reason(void); #endif /* __MESON_SM_H__ */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature 2023-01-10 10:56 ` [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature Alexey Romanov @ 2023-01-10 13:40 ` Mattijs Korpershoek 0 siblings, 0 replies; 10+ messages in thread From: Mattijs Korpershoek @ 2023-01-10 13:40 UTC (permalink / raw) To: Alexey Romanov, narmstrong, trini, sjg Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong On Tue, Jan 10, 2023 at 13:56, Alexey Romanov <avromanov@sberdevices.ru> wrote: > This function can be used by other modules. Also add comments. > > Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> > --- > arch/arm/include/asm/arch-meson/sm.h | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/arch/arm/include/asm/arch-meson/sm.h b/arch/arm/include/asm/arch-meson/sm.h > index f3ae46a6d6b..53b75176493 100644 > --- a/arch/arm/include/asm/arch-meson/sm.h > +++ b/arch/arm/include/asm/arch-meson/sm.h > @@ -6,10 +6,35 @@ > #ifndef __MESON_SM_H__ > #define __MESON_SM_H__ > > +/** > + * meson_sm_read_efuse - read efuse memory into buffer > + * > + * @offset: offset from the start efuse memory > + * @buffer: pointer to buffer > + * @size: number of bytes to read > + * @return: number of bytes read > + */ > ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size); > > +/** > + * meson_sm_write_efuse - write into efuse memory from buffer > + * > + * @offset: offset from the start efuse memory > + * @buffer: pointer to buffer > + * @size: number of bytes to write > + * @return: number of bytes written > + */ > +ssize_t meson_sm_write_efuse(uintptr_t offset, void *buffer, size_t size); > + > #define SM_SERIAL_SIZE 12 > > +/** > + * meson_sm_get_serial - read chip unique id into buffer > + * > + * @buffer: pointer to buffer > + * @size: buffer size. > + * @return: zero on success or -errno on failure > + */ > int meson_sm_get_serial(void *buffer, size_t size); > > enum { > @@ -28,6 +53,9 @@ enum { > REBOOT_REASON_WATCHDOG_REBOOT = 13, > }; > > +/** > + * meson_sm_get_reboot_reason - get reboot reason > + */ > int meson_sm_get_reboot_reason(void); > > #endif /* __MESON_SM_H__ */ > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 2/5] arm/mach-meson: move smc commands in cmd/meson 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature Alexey Romanov @ 2023-01-10 10:56 ` Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command Alexey Romanov ` (3 subsequent siblings) 5 siblings, 0 replies; 10+ messages in thread From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw) To: narmstrong, trini, sjg, mkorpershoek Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong It is incorrect to keep commands in the arch/ folder. Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> --- MAINTAINERS | 1 + arch/arm/mach-meson/sm.c | 144 ------------------------------------ cmd/Kconfig | 7 ++ cmd/Makefile | 3 + cmd/meson/Makefile | 5 ++ cmd/meson/sm.c | 156 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 172 insertions(+), 144 deletions(-) create mode 100644 cmd/meson/Makefile create mode 100644 cmd/meson/sm.c diff --git a/MAINTAINERS b/MAINTAINERS index 7f27ff4c20f..7a5460d4922 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -149,6 +149,7 @@ L: u-boot-amlogic@groups.io T: git https://source.denx.de/u-boot/custodians/u-boot-amlogic.git F: arch/arm/mach-meson/ F: arch/arm/include/asm/arch-meson/ +F: cmd/meson/ F: drivers/clk/meson/ F: drivers/serial/serial_meson.c F: drivers/reset/reset-meson.c diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c index d6eb910689f..f2ca7e76932 100644 --- a/arch/arm/mach-meson/sm.c +++ b/arch/arm/mach-meson/sm.c @@ -6,8 +6,6 @@ */ #include <common.h> -#include <command.h> -#include <env.h> #include <log.h> #include <asm/arch/sm.h> #include <asm/cache.h> @@ -139,145 +137,3 @@ int meson_sm_get_reboot_reason(void) /* The SMC call is not used, we directly use AO_SEC_SD_CFG15 */ return FIELD_GET(REBOOT_REASON_MASK, reason); } - -static int do_sm_serial(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - ulong address; - int ret; - - if (argc < 2) - return CMD_RET_USAGE; - - address = simple_strtoul(argv[1], NULL, 0); - - ret = meson_sm_get_serial((void *)address, SM_CHIP_ID_SIZE); - if (ret) - return CMD_RET_FAILURE; - - return CMD_RET_SUCCESS; -} - -#define MAX_REBOOT_REASONS 14 - -static const char *reboot_reasons[MAX_REBOOT_REASONS] = { - [REBOOT_REASON_COLD] = "cold_boot", - [REBOOT_REASON_NORMAL] = "normal", - [REBOOT_REASON_RECOVERY] = "recovery", - [REBOOT_REASON_UPDATE] = "update", - [REBOOT_REASON_FASTBOOT] = "fastboot", - [REBOOT_REASON_SUSPEND_OFF] = "suspend_off", - [REBOOT_REASON_HIBERNATE] = "hibernate", - [REBOOT_REASON_BOOTLOADER] = "bootloader", - [REBOOT_REASON_SHUTDOWN_REBOOT] = "shutdown_reboot", - [REBOOT_REASON_RPMBP] = "rpmbp", - [REBOOT_REASON_CRASH_DUMP] = "crash_dump", - [REBOOT_REASON_KERNEL_PANIC] = "kernel_panic", - [REBOOT_REASON_WATCHDOG_REBOOT] = "watchdog_reboot", -}; - -static int do_sm_reboot_reason(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - const char *reason_str; - char *destarg = NULL; - int reason; - - if (argc > 1) - destarg = argv[1]; - - reason = meson_sm_get_reboot_reason(); - if (reason < 0) - return CMD_RET_FAILURE; - - if (reason >= MAX_REBOOT_REASONS || - !reboot_reasons[reason]) - reason_str = "unknown"; - else - reason_str = reboot_reasons[reason]; - - if (destarg) - env_set(destarg, reason_str); - else - printf("reboot reason: %s (%x)\n", reason_str, reason); - - return CMD_RET_SUCCESS; -} - -static int do_efuse_read(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - ulong address, offset, size; - int ret; - - if (argc < 4) - return CMD_RET_USAGE; - - offset = simple_strtoul(argv[1], NULL, 0); - size = simple_strtoul(argv[2], NULL, 0); - - address = simple_strtoul(argv[3], NULL, 0); - - ret = meson_sm_read_efuse(offset, (void *)address, size); - if (ret != size) - return CMD_RET_FAILURE; - - return CMD_RET_SUCCESS; -} - -static int do_efuse_write(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - ulong address, offset, size; - int ret; - - if (argc < 4) - return CMD_RET_USAGE; - - offset = simple_strtoul(argv[1], NULL, 0); - size = simple_strtoul(argv[2], NULL, 0); - - address = simple_strtoul(argv[3], NULL, 0); - - ret = meson_sm_write_efuse(offset, (void *)address, size); - if (ret != size) - return CMD_RET_FAILURE; - - return CMD_RET_SUCCESS; -} - -static struct cmd_tbl cmd_sm_sub[] = { - U_BOOT_CMD_MKENT(serial, 2, 1, do_sm_serial, "", ""), - U_BOOT_CMD_MKENT(reboot_reason, 1, 1, do_sm_reboot_reason, "", ""), - U_BOOT_CMD_MKENT(efuseread, 4, 1, do_efuse_read, "", ""), - U_BOOT_CMD_MKENT(efusewrite, 4, 0, do_efuse_write, "", ""), -}; - -static int do_sm(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - struct cmd_tbl *c; - - if (argc < 2) - return CMD_RET_USAGE; - - /* Strip off leading 'sm' command argument */ - argc--; - argv++; - - c = find_cmd_tbl(argv[0], &cmd_sm_sub[0], ARRAY_SIZE(cmd_sm_sub)); - - if (c) - return c->cmd(cmdtp, flag, argc, argv); - else - return CMD_RET_USAGE; -} - -U_BOOT_CMD( - sm, 5, 0, do_sm, - "Secure Monitor Control", - "serial <address> - read chip unique id to memory address\n" - "sm reboot_reason [name] - get reboot reason and store to to environment\n" - "sm efuseread <offset> <size> <address> - read efuse to memory address\n" - "sm efusewrite <offset> <size> <address> - write into efuse from memory address" -); diff --git a/cmd/Kconfig b/cmd/Kconfig index 09193b61b95..07833f958e7 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -2565,4 +2565,11 @@ config MMC_SPEED_MODE_SET and is indicated using the index from enum bus_mode in include/mmc.h. A speed mode can be set only if it has already been enabled in the device tree. + +config CMD_MESON + bool "Amlogic Meson commands" + depends on ARCH_MESON + default y + help + Enable useful commands for the Meson Soc family developed by Amlogic Inc. endmenu diff --git a/cmd/Makefile b/cmd/Makefile index 5e43a1e022e..146c5ebb227 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -210,6 +210,9 @@ obj-$(CONFIG_RISCV) += riscv/ obj-$(CONFIG_SANDBOX) += sandbox/ obj-$(CONFIG_X86) += x86/ +# Meson +obj-$(CONFIG_CMD_MESON) += meson/ + obj-$(CONFIG_ARCH_MVEBU) += mvebu/ endif # !CONFIG_SPL_BUILD diff --git a/cmd/meson/Makefile b/cmd/meson/Makefile new file mode 100644 index 00000000000..ee26c175cfe --- /dev/null +++ b/cmd/meson/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (c) 2022, SberDevices. All rights reserved. + +obj-y += sm.o diff --git a/cmd/meson/sm.c b/cmd/meson/sm.c new file mode 100644 index 00000000000..c2b57707258 --- /dev/null +++ b/cmd/meson/sm.c @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2016 Beniamino Galvani + * + * Author: Beniamino Galvani <b.galvani@gmail.com> + * Author: Vyacheslav Bocharov <adeep@lexina.in> + * Author: Neil Armstrong <narmstrong@baylibre.com> + */ + +#include <command.h> +#include <common.h> +#include <env.h> +#include <asm/arch/sm.h> +#include <stdlib.h> + +static int do_sm_serial(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + ulong address; + int ret; + + if (argc < 2) + return CMD_RET_USAGE; + + address = simple_strtoul(argv[1], NULL, 0); + + ret = meson_sm_get_serial((void *)address, SM_SERIAL_SIZE); + if (ret) + return CMD_RET_FAILURE; + + return CMD_RET_SUCCESS; +} + +#define MAX_REBOOT_REASONS 14 + +static const char *reboot_reasons[MAX_REBOOT_REASONS] = { + [REBOOT_REASON_COLD] = "cold_boot", + [REBOOT_REASON_NORMAL] = "normal", + [REBOOT_REASON_RECOVERY] = "recovery", + [REBOOT_REASON_UPDATE] = "update", + [REBOOT_REASON_FASTBOOT] = "fastboot", + [REBOOT_REASON_SUSPEND_OFF] = "suspend_off", + [REBOOT_REASON_HIBERNATE] = "hibernate", + [REBOOT_REASON_BOOTLOADER] = "bootloader", + [REBOOT_REASON_SHUTDOWN_REBOOT] = "shutdown_reboot", + [REBOOT_REASON_RPMBP] = "rpmbp", + [REBOOT_REASON_CRASH_DUMP] = "crash_dump", + [REBOOT_REASON_KERNEL_PANIC] = "kernel_panic", + [REBOOT_REASON_WATCHDOG_REBOOT] = "watchdog_reboot", +}; + +static int do_sm_reboot_reason(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + const char *reason_str; + char *destarg = NULL; + int reason; + + if (argc > 1) + destarg = argv[1]; + + reason = meson_sm_get_reboot_reason(); + if (reason < 0) + return CMD_RET_FAILURE; + + if (reason >= MAX_REBOOT_REASONS || + !reboot_reasons[reason]) + reason_str = "unknown"; + else + reason_str = reboot_reasons[reason]; + + if (destarg) + env_set(destarg, reason_str); + else + printf("reboot reason: %s (%x)\n", reason_str, reason); + + return CMD_RET_SUCCESS; +} + +static int do_efuse_read(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + ulong address, offset, size; + int ret; + + if (argc < 4) + return CMD_RET_USAGE; + + offset = simple_strtoul(argv[1], NULL, 0); + size = simple_strtoul(argv[2], NULL, 0); + + address = simple_strtoul(argv[3], NULL, 0); + + ret = meson_sm_read_efuse(offset, (void *)address, size); + if (ret != size) + return CMD_RET_FAILURE; + + return CMD_RET_SUCCESS; +} + +static int do_efuse_write(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + ulong address, offset, size; + int ret; + + if (argc < 4) + return CMD_RET_USAGE; + + offset = simple_strtoul(argv[1], NULL, 0); + size = simple_strtoul(argv[2], NULL, 0); + + address = simple_strtoul(argv[3], NULL, 0); + + ret = meson_sm_write_efuse(offset, (void *)address, size); + if (ret != size) + return CMD_RET_FAILURE; + + return CMD_RET_SUCCESS; +} + +static struct cmd_tbl cmd_sm_sub[] = { + U_BOOT_CMD_MKENT(serial, 2, 1, do_sm_serial, "", ""), + U_BOOT_CMD_MKENT(reboot_reason, 1, 1, do_sm_reboot_reason, "", ""), + U_BOOT_CMD_MKENT(efuseread, 4, 1, do_efuse_read, "", ""), + U_BOOT_CMD_MKENT(efusewrite, 4, 0, do_efuse_write, "", ""), +}; + +static int do_sm(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + struct cmd_tbl *c; + + if (argc < 2) + return CMD_RET_USAGE; + + /* Strip off leading 'sm' command argument */ + argc--; + argv++; + + c = find_cmd_tbl(argv[0], &cmd_sm_sub[0], ARRAY_SIZE(cmd_sm_sub)); + + if (c) + return c->cmd(cmdtp, flag, argc, argv); + else + return CMD_RET_USAGE; +} + +U_BOOT_CMD( + sm, 5, 0, do_sm, + "Secure Monitor Control", + "serial <address> - read chip unique id to memory address\n" + "sm reboot_reason [name] - get reboot reason and store to environment\n" + "sm efuseread <offset> <size> <address> - read efuse to memory address\n" + "sm efusewrite <offset> <size> <address> - write into efuse from memory address" +); -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 2/5] arm/mach-meson: move smc commands in cmd/meson Alexey Romanov @ 2023-01-10 10:56 ` Alexey Romanov 2023-01-10 13:42 ` Mattijs Korpershoek 2023-01-10 10:56 ` [PATCH v4 4/5] cmd/arm: meson: sm: introduce efusedump command Alexey Romanov ` (2 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw) To: narmstrong, trini, sjg, mkorpershoek Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov Added docs for Meson Security Monitor command. Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> --- doc/usage/cmd/sm.rst | 44 ++++++++++++++++++++++++++++++++++++++++++++ doc/usage/index.rst | 1 + 2 files changed, 45 insertions(+) create mode 100644 doc/usage/cmd/sm.rst diff --git a/doc/usage/cmd/sm.rst b/doc/usage/cmd/sm.rst new file mode 100644 index 00000000000..c41227f4b3b --- /dev/null +++ b/doc/usage/cmd/sm.rst @@ -0,0 +1,44 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +sm command +========== + +Synopis +------- + +:: + + sm serial <address> + sm reboot_reason [name] + sm efuseread <offset> <size> <address> + sm efusewrite <offset> <size> <address> + sm efusedump <offset> <size> + +Description +----------- + +The sm command is used to request services from the secure monitor. User +can call secure monitor to request special TEE function, for example chip +serial number info, reboot reason, etc. + +sm serial + Retrieve chip unique serial number from sm and write it to memory on + appropriate address. + +sm reboot_reason + Print reboot reason to the console, if parameter [name] isn't specified. + If parameter specified, set reboot reason string to environment variable + with this name. + +sm efuseread + Read <size> bytes starting from <offset> from efuse memory bank and write + result to the address <address>. + +sm efusewrite + Write into efuse memory bank, starting from <offset>, the <size> bytes + of data, located at address <address>. + +Configuration +------------- + +To use the sm command you must specify CONFIG_CMD_MESON=y diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 770418434ad..e34b98dae24 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -61,6 +61,7 @@ Shell commands cmd/true cmd/ums cmd/wdt + cmd/sm Booting OS ---------- -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command 2023-01-10 10:56 ` [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command Alexey Romanov @ 2023-01-10 13:42 ` Mattijs Korpershoek 0 siblings, 0 replies; 10+ messages in thread From: Mattijs Korpershoek @ 2023-01-10 13:42 UTC (permalink / raw) To: Alexey Romanov, narmstrong, trini, sjg Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov On Tue, Jan 10, 2023 at 13:56, Alexey Romanov <avromanov@sberdevices.ru> wrote: > Added docs for Meson Security Monitor command. > > Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> > --- > doc/usage/cmd/sm.rst | 44 ++++++++++++++++++++++++++++++++++++++++++++ > doc/usage/index.rst | 1 + > 2 files changed, 45 insertions(+) > create mode 100644 doc/usage/cmd/sm.rst > > diff --git a/doc/usage/cmd/sm.rst b/doc/usage/cmd/sm.rst > new file mode 100644 > index 00000000000..c41227f4b3b > --- /dev/null > +++ b/doc/usage/cmd/sm.rst > @@ -0,0 +1,44 @@ > +.. SPDX-License-Identifier: GPL-2.0+: > + > +sm command > +========== > + > +Synopis > +------- > + > +:: > + > + sm serial <address> > + sm reboot_reason [name] > + sm efuseread <offset> <size> <address> > + sm efusewrite <offset> <size> <address> > + sm efusedump <offset> <size> > + > +Description > +----------- > + > +The sm command is used to request services from the secure monitor. User > +can call secure monitor to request special TEE function, for example chip > +serial number info, reboot reason, etc. > + > +sm serial > + Retrieve chip unique serial number from sm and write it to memory on > + appropriate address. > + > +sm reboot_reason > + Print reboot reason to the console, if parameter [name] isn't specified. > + If parameter specified, set reboot reason string to environment variable > + with this name. > + > +sm efuseread > + Read <size> bytes starting from <offset> from efuse memory bank and write > + result to the address <address>. > + > +sm efusewrite > + Write into efuse memory bank, starting from <offset>, the <size> bytes > + of data, located at address <address>. > + > +Configuration > +------------- > + > +To use the sm command you must specify CONFIG_CMD_MESON=y > diff --git a/doc/usage/index.rst b/doc/usage/index.rst > index 770418434ad..e34b98dae24 100644 > --- a/doc/usage/index.rst > +++ b/doc/usage/index.rst > @@ -61,6 +61,7 @@ Shell commands > cmd/true > cmd/ums > cmd/wdt > + cmd/sm > > Booting OS > ---------- > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 4/5] cmd/arm: meson: sm: introduce efusedump command 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov ` (2 preceding siblings ...) 2023-01-10 10:56 ` [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command Alexey Romanov @ 2023-01-10 10:56 ` Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd Alexey Romanov 2023-01-10 14:27 ` [PATCH v4 0/5] arch-meson: introduce efusedump command Neil Armstrong 5 siblings, 0 replies; 10+ messages in thread From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw) To: narmstrong, trini, sjg, mkorpershoek Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong Using this command user can print efuse memory: $ sm efusedump 0 10 00000000: ff 00 31 00 00 ff 66 00 00 00 ..1...f... Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> --- cmd/meson/sm.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/cmd/meson/sm.c b/cmd/meson/sm.c index c2b57707258..d5eb1d6c084 100644 --- a/cmd/meson/sm.c +++ b/cmd/meson/sm.c @@ -5,6 +5,7 @@ * Author: Beniamino Galvani <b.galvani@gmail.com> * Author: Vyacheslav Bocharov <adeep@lexina.in> * Author: Neil Armstrong <narmstrong@baylibre.com> + * Author: Alexey Romanov <avromanov@sberdevices.ru> */ #include <command.h> @@ -119,11 +120,43 @@ static int do_efuse_write(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_SUCCESS; } +static int do_efuse_dump(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + ulong offset, size; + u8 *buffer; + int ret; + + if (argc != 3) + return CMD_RET_USAGE; + + offset = simple_strtoul(argv[1], NULL, 0); + size = simple_strtoul(argv[2], NULL, 0); + buffer = malloc(size); + if (!buffer) { + pr_err("Failed to allocate %lu bytes\n", size); + return CMD_RET_FAILURE; + } + + ret = meson_sm_read_efuse(offset, (void *)buffer, size); + if (ret != size) { + ret = CMD_RET_FAILURE; + goto free_buffer; + } + + print_buffer(0, buffer, 1, size, 0); + +free_buffer: + free(buffer); + return ret; +} + static struct cmd_tbl cmd_sm_sub[] = { U_BOOT_CMD_MKENT(serial, 2, 1, do_sm_serial, "", ""), U_BOOT_CMD_MKENT(reboot_reason, 1, 1, do_sm_reboot_reason, "", ""), U_BOOT_CMD_MKENT(efuseread, 4, 1, do_efuse_read, "", ""), U_BOOT_CMD_MKENT(efusewrite, 4, 0, do_efuse_write, "", ""), + U_BOOT_CMD_MKENT(efusedump, 3, 1, do_efuse_dump, "", ""), }; static int do_sm(struct cmd_tbl *cmdtp, int flag, int argc, @@ -152,5 +185,6 @@ U_BOOT_CMD( "serial <address> - read chip unique id to memory address\n" "sm reboot_reason [name] - get reboot reason and store to environment\n" "sm efuseread <offset> <size> <address> - read efuse to memory address\n" - "sm efusewrite <offset> <size> <address> - write into efuse from memory address" + "sm efusewrite <offset> <size> <address> - write into efuse from memory address\n" + "sm efusedump <offset> <size> - dump efuse data range to console" ); -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov ` (3 preceding siblings ...) 2023-01-10 10:56 ` [PATCH v4 4/5] cmd/arm: meson: sm: introduce efusedump command Alexey Romanov @ 2023-01-10 10:56 ` Alexey Romanov 2023-01-10 13:42 ` Mattijs Korpershoek 2023-01-10 14:27 ` [PATCH v4 0/5] arch-meson: introduce efusedump command Neil Armstrong 5 siblings, 1 reply; 10+ messages in thread From: Alexey Romanov @ 2023-01-10 10:56 UTC (permalink / raw) To: narmstrong, trini, sjg, mkorpershoek Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong Added docs about sm efusedump command, that reads bytes from efuse memory bank and print them to the console. Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> --- doc/usage/cmd/sm.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/usage/cmd/sm.rst b/doc/usage/cmd/sm.rst index c41227f4b3b..f6524a1c2e3 100644 --- a/doc/usage/cmd/sm.rst +++ b/doc/usage/cmd/sm.rst @@ -38,6 +38,10 @@ sm efusewrite Write into efuse memory bank, starting from <offset>, the <size> bytes of data, located at address <address>. +sm efusedump + Read <size> bytes starting from <offset> from efuse memory bank and print + them to the console. + Configuration ------------- -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd 2023-01-10 10:56 ` [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd Alexey Romanov @ 2023-01-10 13:42 ` Mattijs Korpershoek 0 siblings, 0 replies; 10+ messages in thread From: Mattijs Korpershoek @ 2023-01-10 13:42 UTC (permalink / raw) To: Alexey Romanov, narmstrong, trini, sjg Cc: u-boot-amlogic, u-boot, kernel, Alexey Romanov, Neil Armstrong On Tue, Jan 10, 2023 at 13:56, Alexey Romanov <avromanov@sberdevices.ru> wrote: > Added docs about sm efusedump command, that reads bytes > from efuse memory bank and print them to the console. > > Signed-off-by: Alexey Romanov <avromanov@sberdevices.ru> > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> > --- > doc/usage/cmd/sm.rst | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/doc/usage/cmd/sm.rst b/doc/usage/cmd/sm.rst > index c41227f4b3b..f6524a1c2e3 100644 > --- a/doc/usage/cmd/sm.rst > +++ b/doc/usage/cmd/sm.rst > @@ -38,6 +38,10 @@ sm efusewrite > Write into efuse memory bank, starting from <offset>, the <size> bytes > of data, located at address <address>. > > +sm efusedump > + Read <size> bytes starting from <offset> from efuse memory bank and print > + them to the console. > + > Configuration > ------------- > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 0/5] arch-meson: introduce efusedump command 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov ` (4 preceding siblings ...) 2023-01-10 10:56 ` [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd Alexey Romanov @ 2023-01-10 14:27 ` Neil Armstrong 5 siblings, 0 replies; 10+ messages in thread From: Neil Armstrong @ 2023-01-10 14:27 UTC (permalink / raw) To: trini, sjg, mkorpershoek, Neil Armstrong, Alexey Romanov Cc: u-boot-amlogic, u-boot, kernel Hi, On Tue, 10 Jan 2023 13:56:45 +0300, Alexey Romanov wrote: > Keeping the commands code in an arch/ is not correct. This patchset > moves the meson smc commands from arch/arm/mach-meson to cmd/meson > folder and also adds a new 'efusedump' command with which user can > print efuse memory. > > Alexey Romanov (5): > asm/arch-meson: add missing meson_sm_write_efuse signature > arm/mach-meson: move smc commands in cmd/meson > doc/usage: cmd: documentation for meson/sm command > cmd/arm: meson: sm: introduce efusedump command > doc/usage: cmd: sm: documentation efusedump cmd > > [...] Thanks, Applied to https://source.denx.de/u-boot/custodians/u-boot-amlogic (u-boot-amlogic-test) [1/5] asm/arch-meson: add missing meson_sm_write_efuse signature https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/12d782734927818b9d2f197e3905410632b01fcc [2/5] arm/mach-meson: move smc commands in cmd/meson https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/311106a1c6eebdc5d0284faae30bf9087227a6c1 [3/5] doc/usage: cmd: documentation for meson/sm command https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/23435cfb3a2b672d7006d2d7e04276bd39fbb1a5 [4/5] cmd/arm: meson: sm: introduce efusedump command https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/38e29404b8630ff7e761c37d6d9fd927135a7810 [5/5] doc/usage: cmd: sm: documentation efusedump cmd https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/12e561f63a16e29b89a9138a929719427736da27 -- Neil ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-01-10 14:28 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-10 10:56 [PATCH v4 0/5] arch-meson: introduce efusedump command Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 1/5] asm/arch-meson: add missing meson_sm_write_efuse signature Alexey Romanov 2023-01-10 13:40 ` Mattijs Korpershoek 2023-01-10 10:56 ` [PATCH v4 2/5] arm/mach-meson: move smc commands in cmd/meson Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 3/5] doc/usage: cmd: documentation for meson/sm command Alexey Romanov 2023-01-10 13:42 ` Mattijs Korpershoek 2023-01-10 10:56 ` [PATCH v4 4/5] cmd/arm: meson: sm: introduce efusedump command Alexey Romanov 2023-01-10 10:56 ` [PATCH v4 5/5] doc/usage: cmd: sm: documentation efusedump cmd Alexey Romanov 2023-01-10 13:42 ` Mattijs Korpershoek 2023-01-10 14:27 ` [PATCH v4 0/5] arch-meson: introduce efusedump command Neil Armstrong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox