Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp3411648ybc; Thu, 21 Nov 2019 08:00:01 -0800 (PST) X-Google-Smtp-Source: APXvYqyvyMlUv4eQz/4k+t8FlJjWOUosbLPzY/5e+Nn7Vj/eEY9fvJpzE7PTUxStVM7OuYWx/Gld X-Received: by 2002:a7b:cb4a:: with SMTP id v10mr10433681wmj.106.1574352000915; Thu, 21 Nov 2019 08:00:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574352000; cv=none; d=google.com; s=arc-20160816; b=uxcr8XvsGBope1BE5aoB/f5iuI6lNb5gDfj1uWgfLMgW5xj2Pfi9d+XjyYzOazqHx8 aQt2sGqDedlh4hnHIxnAE00sL7Qk/3Twh7sDHsLlRoZe5eFLdX0pwLIqFVq/jo3DlNfF 41N+g6ufVVyrk3Rv226BGqBm9gA4kx1K/O2X+2zW5fDkNqnm3fiyJCaIg8ZX/WbPW9mo dT8oXpfM9nHl4/mc+y32mdGF8jE1+3sNXiSGLBhAxA/7DKmsLFRfVeGbZVt4bc9ZqV9Q XdUYxsa9aPyq0unBuGsuoGtozMQaC71vJT20gLQmtG04USP91ZPtIeal6vZRAXFLkKk7 bFhg== 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=XMM7mflcF0TUmYgZeJ4v28TsTeNk4z1yhukVV+KwzoQy6OftYjgIuoB5KsHsV7406G LTFzvJTMY2/68VnpOZ1fh7MHKVAw87AyXkbQ4/As3Emlxc/NwW+N2C3KXGrJ6zd/kkwo piH1vB/R33n+emsenDk95wHfr9fFJSx3n5+ZQyOkTRKMuF281oJLUhoHMKAKGmXSo9xu 5fJ5NLqNB9XFjCznf55CnN+lXZ7hJAIxclsuZpWYOVbHBgn4egnxPPDe0F/6HAUL5tJE wFjGEINb4SwmYylaEOYPjuC/WS6TcHrpS5/i5EgfI0Zmw3V1mRlmw0FWiRedQtKy89Er JMEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=gixz7D+y; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 h26si2185813edb.303.2019.11.21.07.59.35; Thu, 21 Nov 2019 08:00:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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=gixz7D+y; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 S1727118AbfKUP4J (ORCPT + 99 others); Thu, 21 Nov 2019 10:56:09 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:33140 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726379AbfKUP4I (ORCPT ); Thu, 21 Nov 2019 10:56:08 -0500 Received: by mail-pg1-f196.google.com with SMTP id h27so1817034pgn.0; Thu, 21 Nov 2019 07:56:08 -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=gixz7D+y5ciDRIuJcnOfgRe/FOnAKCfBgEdXbUKC5oIWt9YHHoIJ7KaBHCrT0N0WI0 vBONigW03BBPnlJouUxnF7NkwMH7TJEyAoPt5xZZ1lyb6JKts3x7LV8DK9CpgWuRQrWx u/APw6/FyKhTvOEBoAyBc6qtV20ZRykh+qYDNdwbC5Rx9u9XeT6+F5WWwspIHMuOWxwK fIBetX2e2gNyzfRZHvLnsCVGHkfF/WYlhTOLu0jOrjEXB+/Dr3DE0BvpsqQk/8Bx/kAz GW8KqYnVQQxxjVkkwnGGmlQ019hzcczhWH+URm8jKYC2yZ9MI4mTBe0JNyek+ANKRR7H mGMw== 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=L8hpwBq24MO/imKRPJfb1Pc2pAm7AAcDeD84Bv/UPmXxaMJFDbqgRR790aGEMoYDm3 XGHn91RZNB6/jzOxOV3QAaEp5eduG1DtRLv7XZeSlhLGNVdmDFYpZELa74nsp1UY8Zh2 essW4XlILmKcIBnwvRbRtJdhO4cr3l/3L17Tp3p4sDtc1GzaM90Wq8pcQKB3VX1vbeWB 6DafyyOWyYt99nwPu0VBfyBGPfzufsBtd/FVp2psBUiWMS8rHyS3WJ7nBY2M3z6fs0NP M3TGMvjHTCeisO4hrwXNdN9O3gI0QR54+U54KoNgPuAU+kiSZ6997Rd3pm0CU9dRkQsC GiBA== X-Gm-Message-State: APjAAAXG8WFFmacyt+brwI80UsgP3HHGwjYVSN3QNhFQUpPliHE9KujF 5qSfKWpnyS52cI+s1c7vcuZPxaOF X-Received: by 2002:a63:5f48:: with SMTP id t69mr9230161pgb.379.1574351766956; Thu, 21 Nov 2019 07:56:06 -0800 (PST) Received: from localhost.hsd1.wa.comcast.net ([2601:602:847f:811f:babe:8e8d:b27e:e6d7]) by smtp.gmail.com with ESMTPSA id e8sm3709212pga.17.2019.11.21.07.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2019 07:56:05 -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 v4 1/6] crypto: caam - RNG4 TRNG errata Date: Thu, 21 Nov 2019 07:55:49 -0800 Message-Id: <20191121155554.1227-2-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191121155554.1227-1-andrew.smirnov@gmail.com> References: <20191121155554.1227-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@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