From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF5EC30EF89; Mon, 12 Jan 2026 05:37:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768196220; cv=none; b=WHQxAg4HXHNTSl2We9MsICImwqeq3bvv3FbQlUzShI6/g4r/G63VoARfD6tEn+Y7/lEbcsvwLqnB2J28Q2mzJDIIVrIlpkNg+D1V+jRl6GJGARytWUQi7keK35+VpeCu0V3Hhom6ZTGll44dvVOURdGTrBfkvyHRkHR6cua5qA8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768196220; c=relaxed/simple; bh=hHanQwA3+eHDfox43LEzfReiBmZSAi2n4ffgk+tAZy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KVvLq5vApKjxcaXfg4w0/nzicRmbRaUIJvmy81on6BLiNvm6aRmzIJMizprNxkRnLFSG7L/pf8IQBCFJ+9JuXt0t0ZZ7oMG89/xoCxgScFr9rCvJNUt4b9fWXmWmXK+qP4nsW+pTRTpehpBL8RKmJ4YzDQD7z/QR2T3qEdIZJFQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BLk2glDf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BLk2glDf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 544E7C116D0; Mon, 12 Jan 2026 05:36:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768196220; bh=hHanQwA3+eHDfox43LEzfReiBmZSAi2n4ffgk+tAZy4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BLk2glDf8gTpSuqzLntojwJVx+6ZgEr3wIa5clNTHEl+8ryOldCo73GcJBJaYqftu VhRlH0lxS5MXo+KekXD3gXG1EZCwn5ADoyfER1Ntv5BaO182akG6nUsGoWZSU0T3jQ KmBgeQ4QBrlgNNi978KjEI4VT6d9mGCxDZgPWUgJI19cHsNhDFQDNWSc98BZAuwuNw r7/Rxj7DS9L0UBhD9f9ys+334GrtpldyVUgHLWyHVWsFfvs31ZwLEC66R5LXZI648j BZhUqTpw6FWIs/IEAEk2i/RD/2ZWJ3U2HT+uJi3n39bjYysye04ZwsFio1tj1Vb6Ab lRimsgOJKSjjg== From: "Mario Limonciello (AMD)" To: Tom Lendacky , Herbert Xu , Shyam Sundar S K , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Rijo Thomas Cc: John Allen , "David S . Miller" , Hans de Goede , linux-crypto@vger.kernel.org (open list:AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER), platform-driver-x86@vger.kernel.org (open list:AMD PMF DRIVER), Lars Francke , Yijun Shen , Devaraj Rangasamy , "Mario Limonciello (AMD)" , Yijun Shen Subject: [PATCH v5 4/5] crypto: ccp - Factor out ring destroy handling to a helper Date: Sun, 11 Jan 2026 23:36:09 -0600 Message-ID: <20260112053610.2566943-5-superm1@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260112053610.2566943-1-superm1@kernel.org> References: <20260112053610.2566943-1-superm1@kernel.org> Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The ring destroy command needs to be used in multiple places. Split out the code to a helper. Tested-by: Yijun Shen Signed-off-by: Mario Limonciello (AMD) --- drivers/crypto/ccp/tee-dev.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/ccp/tee-dev.c b/drivers/crypto/ccp/tee-dev.c index 11c4b05e2f3a2..ef1430f86ad62 100644 --- a/drivers/crypto/ccp/tee-dev.c +++ b/drivers/crypto/ccp/tee-dev.c @@ -86,6 +86,29 @@ static inline void tee_free_cmd_buffer(struct tee_init_ring_cmd *cmd) kfree(cmd); } +static bool tee_send_destroy_cmd(struct psp_tee_device *tee) +{ + unsigned int reg; + int ret; + + ret = psp_mailbox_command(tee->psp, PSP_CMD_TEE_RING_DESTROY, NULL, + TEE_DEFAULT_CMD_TIMEOUT, ®); + if (ret) { + dev_err(tee->dev, "tee: ring destroy command timed out, disabling TEE support\n"); + psp_dead = true; + return false; + } + + if (FIELD_GET(PSP_CMDRESP_STS, reg)) { + dev_err(tee->dev, "tee: ring destroy command failed (%#010lx)\n", + FIELD_GET(PSP_CMDRESP_STS, reg)); + psp_dead = true; + return false; + } + + return true; +} + static int tee_init_ring(struct psp_tee_device *tee) { int ring_size = MAX_RING_BUFFER_ENTRIES * sizeof(struct tee_ring_cmd); @@ -137,24 +160,13 @@ static int tee_init_ring(struct psp_tee_device *tee) static void tee_destroy_ring(struct psp_tee_device *tee) { - unsigned int reg; - int ret; - if (!tee->rb_mgr.ring_start) return; if (psp_dead) goto free_ring; - ret = psp_mailbox_command(tee->psp, PSP_CMD_TEE_RING_DESTROY, NULL, - TEE_DEFAULT_CMD_TIMEOUT, ®); - if (ret) { - dev_err(tee->dev, "tee: ring destroy command timed out, disabling TEE support\n"); - psp_dead = true; - } else if (FIELD_GET(PSP_CMDRESP_STS, reg)) { - dev_err(tee->dev, "tee: ring destroy command failed (%#010lx)\n", - FIELD_GET(PSP_CMDRESP_STS, reg)); - } + tee_send_destroy_cmd(tee); free_ring: tee_free_ring(tee); -- 2.43.0