From patchwork Wed Mar 9 12:27:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sughosh Ganu X-Patchwork-Id: 549708 Delivered-To: patch@linaro.org Received: by 2002:a05:7000:6713:0:0:0:0 with SMTP id u19csp3515159mag; Wed, 9 Mar 2022 04:30:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJwxqZ99BcN8yrmRfwaSIJT8YJ+T9T3LxD5x9LWLencteNMI5H+mNhTDeWNUwN/suGEEMlNt X-Received: by 2002:a17:906:730c:b0:6d6:f8f2:fb92 with SMTP id di12-20020a170906730c00b006d6f8f2fb92mr16733347ejc.370.1646829018361; Wed, 09 Mar 2022 04:30:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646829018; cv=none; d=google.com; s=arc-20160816; b=QIII1PJnKZWehE6EZ+D65xlIzdKh5AQ2Zxlx9H4XuDyYM7SJnc3v3NUAScLIXIXmHj ouDAd9SNdn1iCNB2OTbKO8+Gq3OEaWDJ0DWztVMui1ltKWtknHwi8Dxobj354yDv/SRB S2WjLXEz5A8c231nAZP7KysCORdW9i96WrsSbz1iYgKYtP6a/c8lQyLqjdcBfz/zVUnt Tp6RqcsWMxayIUURU7X5jy3LwcfzI8cahpvt6yhJlISlsELuCn826NYt5ltOtKvRpFM5 Nlv545HVSRhz2VaRyEu9o/qN/u/DupMq6Olpjt9o8M8I2rXy/iBrNIqbPZr4hKQjKM6b vEnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=GitXyBjD3n22bqrzvlIXKPJmbpfzIq2KpSix2rcOu2E=; b=JGVQ+MeAXFQr9/VqCcCwHPVrPzEx6tVMplnVlAJNTpqYRpZLILx3Wo4T+zgqvB0jAA xpVkyRxOre21cjFqLEDTGLfvr1wYkykospjnmmQ2ccS3LKPd7Gxf9rCxGXIIn+Kwbwi6 JZIDIKykKL5u2afw9QF4aDUYvHTq6zjB+7VDgI4v2ieRh93/U1uHGfyNy5zhjYsDGIxQ e9hi0PmDJeULhmsxARhF49vi3LTUnAbERPTiBwEYfmXMGoAvTBzBje+bOYMaiykZS243 FO4koF1oDOmYv7kcOJjoThC8yyafgcLEB/MkEEsgx76O1sYVvJ4WyMEIliAyGRWGf3Tc Exug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id z20-20020a170906271400b006d1d1a22fc2si1058165ejc.8.2022.03.09.04.30.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Mar 2022 04:30:18 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D491A839C5; Wed, 9 Mar 2022 13:30:05 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 6721B839A6; Wed, 9 Mar 2022 13:29:07 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_SOFTFAIL,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id 62B3E8398B for ; Wed, 9 Mar 2022 13:28:47 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=sughosh.ganu@linaro.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8857F1688; Wed, 9 Mar 2022 04:28:46 -0800 (PST) Received: from a076522.blr.arm.com (a076522.blr.arm.com [10.162.16.44]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BD01F3FA4D; Wed, 9 Mar 2022 04:28:44 -0800 (PST) From: Sughosh Ganu To: u-boot@lists.denx.de Cc: Ilias Apalodimas , Simon Glass , Heinrich Schuchardt , Sughosh Ganu Subject: [PATCH v4 6/8] cmd: rng: Add support for selecting RNG device Date: Wed, 9 Mar 2022 17:57:58 +0530 Message-Id: <20220309122800.3940001-7-sughosh.ganu@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220309122800.3940001-1-sughosh.ganu@linaro.org> References: <20220309122800.3940001-1-sughosh.ganu@linaro.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean The 'rng' u-boot command is used for printing a select number of random bytes on the console. Currently, the RNG device from which the random bytes are read is fixed. However, a platform can have multiple RNG devices, one example being qemu, which has a virtio RNG device and the RNG pseudo device through the TPM chip. Extend the 'rng' command so that the user can provide the RNG device number from which the random bytes are to be read. This will be the device index under the RNG uclass. Signed-off-by: Sughosh Ganu Tested-by: Heinrich Schuchardt Reviewed-by: Ilias Apalodimas --- Changes since V3: None cmd/rng.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/cmd/rng.c b/cmd/rng.c index 1ad5a096c0..bb89cfa784 100644 --- a/cmd/rng.c +++ b/cmd/rng.c @@ -13,19 +13,34 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - size_t n = 0x40; + size_t n; struct udevice *dev; void *buf; + int devnum; int ret = CMD_RET_SUCCESS; - if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { + switch (argc) { + case 1: + devnum = 0; + n = 0x40; + break; + case 2: + devnum = hextoul(argv[1], NULL); + n = 0x40; + break; + case 3: + devnum = hextoul(argv[1], NULL); + n = hextoul(argv[2], NULL); + break; + default: + return CMD_RET_USAGE; + } + + if (uclass_get_device(UCLASS_RNG, devnum, &dev) || !dev) { printf("No RNG device\n"); return CMD_RET_FAILURE; } - if (argc >= 2) - n = hextoul(argv[1], NULL); - buf = malloc(n); if (!buf) { printf("Out of memory\n"); @@ -46,12 +61,12 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #ifdef CONFIG_SYS_LONGHELP static char rng_help_text[] = - "[n]\n" - " - print n random bytes\n"; + "[dev [n]]\n" + " - print n random bytes read from dev\n"; #endif U_BOOT_CMD( - rng, 2, 0, do_rng, + rng, 3, 0, do_rng, "print bytes from the hardware random number generator", rng_help_text );