Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp2154038ybc; Wed, 20 Nov 2019 09:39:41 -0800 (PST) X-Google-Smtp-Source: APXvYqxP3/8Bf5PVuYIIrWlGmJ1IrCwwyzJn4MDi5Jmz29cwCJ6cKkRQC3efNaoWSDD3A92nrb0m X-Received: by 2002:a1c:60d7:: with SMTP id u206mr4906975wmb.101.1574271581536; Wed, 20 Nov 2019 09:39:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574271581; cv=none; d=google.com; s=arc-20160816; b=RbN11bV77QU1VZscZRPbRdliSPo20vtUOlbmVY8B78yDYbgJZjf69F6xpp/dxF2r3z IKe+y7oYWGYnES6bEhwx4iO9nCpcOag8odAVhX8CmyQUQDRnq9ccVcbILEmKUPYYXxL2 iXDkhIxH4YaQLNuZRs7wQe33G47HuCBiqBr98EXwAkyT+QbF0i26XeJ/WfJsV0G49SmA 13T3IadG3rdMQup3L2XQmAiHbV0P0cUYuqWJq5RbWh6v1CwCmE/Xq1t14Xdvq3XbGroz AYnGq2UXJ3nUIJ5HGOEhe+gZqmZuEL3jyPOxd5/ntlIJ2Hj8ZUMvbsPyzTAiWHEL6bjh 7DAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5auEHawVnFdIZOUx2eKKQZZ0ecTFrj9LceutMYE+Ee4=; b=imxdTxvjuNMsgoChlO334F5gXTqiJAg4JyXXUVxi9svCHQ0j06dVC+cS52i6REqUjd 4Bgc9Mg3QMnkxisEmO3WYCnCMhRCVZOLavP5raJNqtUnr6u1y8Of2EJRUUQwkjbf3pGx tbGiCRk1iFHhSSZFoeT6nyTdZLDxBhjN9ALWrjH1/kjCx2/0AoHFtnqEVlJfoBujKOTS +rU68eqWM5wmg5NxMww5UDBc1CWDrwzyC+E8VRAe46zer6rqeyu7bmSXl1nlAuk1HlO2 wb9NmhtUyLFR5M5jwvGd7jtFUcnTw9onEtm057gpBjMXWZ2QnfpjTPcyJBnBL4QT8ck0 1rBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="poqcC4J/"; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f37si7230eda.190.2019.11.20.09.39.15; Wed, 20 Nov 2019 09:39:41 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="poqcC4J/"; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732921AbfKTQy4 (ORCPT + 99 others); Wed, 20 Nov 2019 11:54:56 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:34555 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731995AbfKTQy4 (ORCPT ); Wed, 20 Nov 2019 11:54:56 -0500 Received: by mail-pl1-f195.google.com with SMTP id h13so49026plr.1; Wed, 20 Nov 2019 08:54:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5auEHawVnFdIZOUx2eKKQZZ0ecTFrj9LceutMYE+Ee4=; b=poqcC4J/rpivSH3vU30rSgLqMY7OWmyeO12g96GrL3ytw35YI7Zj8V+m7s9on+seQx tEWhr8HjXrYaCFMJyiKLz8TAxfNBceFm3isAkU7P+OeZDuTgNm6F8puVpleB3qGXKks9 0DAvLIKZEWglZbU8Mn0X6wuBBy87AbxXaosM85Z0mB24sB943bLT/yX7JmIc9uroUmXZ EqUCiOGbi1MT73qjInbHWlGfdljiKVbqQDcwmaDqzI6uKMGURxq5N/7q7M0zFzv+LhGV yhOx/U0ho6c5wMN9tUkJ592XPOczG9y3aGcmpCcdW2V5I0/Sp+CUilvV44X6u2GdSh8p 8jEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5auEHawVnFdIZOUx2eKKQZZ0ecTFrj9LceutMYE+Ee4=; b=FRaXP2mh/0HaX21ZgaJ609w0s7y6Fdm73WKK2LWB9t8Pvl+fSjXT/VjZwwl+AQhNDc M1LoWMtlDX5hrpk9s/Jt0Yuq0n9+jQDbJZncUfKPJTfv2OUIgwjrA4BntG/HqTWi9SWe qmKPAEQDTQiK4R8X9ulTndhIHMqo5wYoLKLz97EaFUQrAHnxFC3nIP0xyTGK6MtLzJow SKARcavtG67+9yPwuAepdwZvMwV4ESsx0x1Cgl7DGAu4RR0IYfuI0MaxOvjKB+mdhkC0 iMz8flA+QCmnMMwjjUK8lk5aMwFghHylQNXDjTjSWKQrJw/PXEc6LoxQg0o5p88Oklc4 qdYw== X-Gm-Message-State: APjAAAW0wWGhAbavEzG7WOByfaJ4Z7kTXHIxQsfH3ToLQd8oL6oUkaQ7 k80IEei4jqJK3CI88WySRjtmYGmL X-Received: by 2002:a17:902:bf0c:: with SMTP id bi12mr3696587plb.98.1574268895035; Wed, 20 Nov 2019 08:54:55 -0800 (PST) Received: from localhost.hsd1.wa.comcast.net ([2601:602:847f:811f:babe:8e8d:b27e:e6d7]) by smtp.gmail.com with ESMTPSA id e11sm29841483pff.104.2019.11.20.08.54.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Nov 2019 08:54:53 -0800 (PST) From: Andrey Smirnov To: linux-crypto@vger.kernel.org Cc: Andrey Smirnov , Aymen Sghaier , Vipul Kumar , Chris Healy , Lucas Stach , =?UTF-8?q?Horia=20Geant=C4=83?= , Herbert Xu , Iuliana Prodan , linux-kernel@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v3 1/6] crypto: caam - RNG4 TRNG errata Date: Wed, 20 Nov 2019 08:53:36 -0800 Message-Id: <20191120165341.32669-2-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191120165341.32669-1-andrew.smirnov@gmail.com> References: <20191120165341.32669-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org The TRNG as used in RNG4, used in CAAM has a documentation issue. The effect is that it is possible that the entropy used to instantiate the DRBG may be old entropy, rather than newly generated entropy. There is proper programming guidance, but it is not in the documentation. Signed-off-by: Aymen Sghaier Signed-off-by: Vipul Kumar [andrew.smirnov@gmail.com ported to upstream kernel] Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Horia Geantă Cc: Herbert Xu Cc: Iuliana Prodan Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-imx@nxp.com --- drivers/crypto/caam/ctrl.c | 11 ++++++++--- drivers/crypto/caam/regs.h | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index d7c3c3805693..df4db10e9fca 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -338,8 +338,12 @@ static void kick_trng(struct platform_device *pdev, int ent_delay) ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl; r4tst = &ctrl->r4tst[0]; - /* put RNG4 into program mode */ - clrsetbits_32(&r4tst->rtmctl, 0, RTMCTL_PRGM); + /* + * Setting both RTMCTL:PRGM and RTMCTL:TRNG_ACC causes TRNG to + * properly invalidate the entropy in the entropy register and + * force re-generation. + */ + clrsetbits_32(&r4tst->rtmctl, 0, RTMCTL_PRGM | RTMCTL_ACC); /* * Performance-wise, it does not make sense to @@ -369,7 +373,8 @@ static void kick_trng(struct platform_device *pdev, int ent_delay) * select raw sampling in both entropy shifter * and statistical checker; ; put RNG4 into run mode */ - clrsetbits_32(&r4tst->rtmctl, RTMCTL_PRGM, RTMCTL_SAMP_MODE_RAW_ES_SC); + clrsetbits_32(&r4tst->rtmctl, RTMCTL_PRGM | RTMCTL_ACC, + RTMCTL_SAMP_MODE_RAW_ES_SC); } static int caam_get_era_from_hw(struct caam_ctrl __iomem *ctrl) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 05127b70527d..c191e8fd0fa7 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -487,7 +487,8 @@ struct rngtst { /* RNG4 TRNG test registers */ struct rng4tst { -#define RTMCTL_PRGM 0x00010000 /* 1 -> program mode, 0 -> run mode */ +#define RTMCTL_ACC BIT(5) /* TRNG access mode */ +#define RTMCTL_PRGM BIT(16) /* 1 -> program mode, 0 -> run mode */ #define RTMCTL_SAMP_MODE_VON_NEUMANN_ES_SC 0 /* use von Neumann data in both entropy shifter and statistical checker */ -- 2.21.0