Pick commit 62743a4145bb9c3fe090a48e10ddc0ebae85bfbf from Linux
upstream.

    crypto: caam - fix RNG init descriptor ret. code checking

    When successful, the descriptor that performs RNG initialization
    is allowed to return a status code of 7000_0000h, since last command
    in the descriptor is a JUMP HALT.

    Signed-off-by: Horia Geant? <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>

Signed-off-by: Marcin Niestroj <[email protected]>
---
 drivers/crypto/caam/ctrl.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index 4deed8a19..eafff8ef0 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -170,7 +170,7 @@ static int instantiate_rng(struct device_d *ctrldev, int 
state_handle_mask,
 {
        struct caam_drv_private *ctrlpriv = ctrldev->priv;
        struct caam_ctrl __iomem *ctrl;
-       u32 *desc, status, rdsta_val;
+       u32 *desc, status = 0, rdsta_val;
        int ret = 0, sh_idx;
 
        ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl;
@@ -200,7 +200,8 @@ static int instantiate_rng(struct device_d *ctrldev, int 
state_handle_mask,
                 * CAAM eras), then try again.
                 */
                rdsta_val = readl(&ctrl->r4tst[0].rdsta) & RDSTA_IFMASK;
-               if (status || !(rdsta_val & (1 << sh_idx)))
+               if ((status && status != JRSTA_SSRC_JUMP_HALT_CC) ||
+                   !(rdsta_val & (1 << sh_idx)))
                        ret = -EAGAIN;
                if (ret)
                        break;
-- 
2.18.0


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to