Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

crypto: ccp - Factor out ring destroy handling to a helper

The ring destroy command needs to be used in multiple places. Split
out the code to a helper.

Tested-by: Yijun Shen <Yijun.Shen@Dell.com>
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Link: https://patch.msgid.link/20260116041132.153674-5-superm1@kernel.org
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

authored by

Mario Limonciello (AMD) and committed by
Ilpo Järvinen
d95f87a6 0ba20350

+24 -12
+24 -12
drivers/crypto/ccp/tee-dev.c
··· 86 86 kfree(cmd); 87 87 } 88 88 89 + static bool tee_send_destroy_cmd(struct psp_tee_device *tee) 90 + { 91 + unsigned int reg; 92 + int ret; 93 + 94 + ret = psp_mailbox_command(tee->psp, PSP_CMD_TEE_RING_DESTROY, NULL, 95 + TEE_DEFAULT_CMD_TIMEOUT, &reg); 96 + if (ret) { 97 + dev_err(tee->dev, "tee: ring destroy command timed out, disabling TEE support\n"); 98 + psp_dead = true; 99 + return false; 100 + } 101 + 102 + if (FIELD_GET(PSP_CMDRESP_STS, reg)) { 103 + dev_err(tee->dev, "tee: ring destroy command failed (%#010lx)\n", 104 + FIELD_GET(PSP_CMDRESP_STS, reg)); 105 + psp_dead = true; 106 + return false; 107 + } 108 + 109 + return true; 110 + } 111 + 89 112 static int tee_init_ring(struct psp_tee_device *tee) 90 113 { 91 114 int ring_size = MAX_RING_BUFFER_ENTRIES * sizeof(struct tee_ring_cmd); ··· 160 137 161 138 static void tee_destroy_ring(struct psp_tee_device *tee) 162 139 { 163 - unsigned int reg; 164 - int ret; 165 - 166 140 if (!tee->rb_mgr.ring_start) 167 141 return; 168 142 169 143 if (psp_dead) 170 144 goto free_ring; 171 145 172 - ret = psp_mailbox_command(tee->psp, PSP_CMD_TEE_RING_DESTROY, NULL, 173 - TEE_DEFAULT_CMD_TIMEOUT, &reg); 174 - if (ret) { 175 - dev_err(tee->dev, "tee: ring destroy command timed out, disabling TEE support\n"); 176 - psp_dead = true; 177 - } else if (FIELD_GET(PSP_CMDRESP_STS, reg)) { 178 - dev_err(tee->dev, "tee: ring destroy command failed (%#010lx)\n", 179 - FIELD_GET(PSP_CMDRESP_STS, reg)); 180 - } 146 + tee_send_destroy_cmd(tee); 181 147 182 148 free_ring: 183 149 tee_free_ring(tee);