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 96F143A8734; Fri, 10 Apr 2026 13:07:50 +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=1775826470; cv=none; b=hcUPg2KWX0kbNnrow60qG6q8dEUigZbqCCpGGvSH9SKFON9eg7XcEE7XPJ6se7LCpCKasoXhwWX51vIbDfKIwaRdk+gQsxlEv7EO1ohSEWr60Jbb0qZ+XOFvPOIiSvMtL5bjFyQQnV0bmDOvsrtD68ra4YR0eoe5VZfa3FqJLuM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775826470; c=relaxed/simple; bh=ix/egd9ifwo7e/St7dPwr06De/VvvRAKulv1v4opdYo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bzAjgjYADINmnb4o0cCY49I6b4sFKY+5NcEEA2kcqwuUG9S3+lxrhE5l8IPTZ/mZcSA5GEO0V9w1UEo/+gp/8OyZjJcA2jL7zrzMb+7OoFk3siYwZAXb+3FVInZIzk3PkHc8kkasXEtKMx3cSTIoYBzU2/YdenVbHea4rnyGTF4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LBJxIBFw; 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="LBJxIBFw" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6BDFCC2BCFF; Fri, 10 Apr 2026 13:07:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775826470; bh=ix/egd9ifwo7e/St7dPwr06De/VvvRAKulv1v4opdYo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=LBJxIBFwuVGlyPRAN5+DCgSkH+nVNWFopP9JCG/yihA9ahGSpvJDhZOmgJXH4D9jB b1qkxIzC/m7OLAsaLYMTPo/nRivIKV/tFM9UO9tWMexLDLo5q4XxsClAyb1mU8eQKW 8qJahjU9L+5vvNEDRCQvbIuVMs5L2bz97lpljjnKKZ6E7mry9OQMrIa+g2JlGlXWmJ Jw/4mKU6onWulzXFQ22HcZSZfQKYqUNi4I2lMww32vA4RFCV2qtWAytwimzrARWmmn m9EpCZPnFQ8HyoNT5zO+txTXKGOg9wGlWvcevEVPdj/Elu2BJXrpRRM3Yexx7wzmOt 69k4dTsL/CHBA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6155CF4485E; Fri, 10 Apr 2026 13:07:50 +0000 (UTC) From: Nathan Lynch via B4 Relay Date: Fri, 10 Apr 2026 08:07:24 -0500 Subject: [PATCH 14/23] dmaengine: sdxi: Attach descriptor ring state to contexts Precedence: bulk X-Mailing-List: dmaengine@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260410-sdxi-base-v1-14-1d184cb5c60a@amd.com> References: <20260410-sdxi-base-v1-0-1d184cb5c60a@amd.com> In-Reply-To: <20260410-sdxi-base-v1-0-1d184cb5c60a@amd.com> To: Vinod Koul Cc: Wei Huang , Mario Limonciello , Bjorn Helgaas , Jonathan Cameron , Stephen Bates , PradeepVineshReddy.Kodamati@amd.com, John.Kariuki@amd.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, Nathan Lynch X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775826467; l=2539; i=nathan.lynch@amd.com; s=20260410; h=from:subject:message-id; bh=osQr3BYuGP2fBkWl8ruQ505ci52JISit3XTQLri9FVw=; b=1EooEzzSz67Nn6PR20Q6rrCyRCAf3qi2P0cVNLda1cXwdfMEQU79c4wdjgA7Tz6eVMZAsqlR0 4p8Xayjz17YBZrdP0wIg80eMQbmbgoBm+njik+C99Q3ypwk52Oq350F X-Developer-Key: i=nathan.lynch@amd.com; a=ed25519; pk=PK4ozhq+/z9/2Jl5rgDmvHa9raVomv79qM8p1RAFpEw= X-Endpoint-Received: by B4 Relay for nathan.lynch@amd.com/20260410 with auth_id=728 X-Original-From: Nathan Lynch Reply-To: nathan.lynch@amd.com From: Nathan Lynch Attach an instance of struct sdxi_ring_state to each context upon allocation. Each ring state has the same lifetime has its context and is freed upon context release. Co-developed-by: Wei Huang Signed-off-by: Wei Huang Signed-off-by: Nathan Lynch --- drivers/dma/sdxi/context.c | 13 +++++++++++++ drivers/dma/sdxi/context.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/drivers/dma/sdxi/context.c b/drivers/dma/sdxi/context.c index 7cae140c0a20..792b5032203b 100644 --- a/drivers/dma/sdxi/context.c +++ b/drivers/dma/sdxi/context.c @@ -24,6 +24,7 @@ #include "context.h" #include "hw.h" +#include "ring.h" #include "sdxi.h" #define DEFAULT_DESC_RING_ENTRIES 1024 @@ -60,6 +61,7 @@ static void sdxi_free_cxt(struct sdxi_cxt *cxt) dma_free_coherent(sdxi_to_dev(sdxi), sq->ring_size, sq->desc_ring, sq->ring_dma); kfree(cxt->sq); + kfree(cxt->ring_state); kfree(cxt); } @@ -77,6 +79,10 @@ static struct sdxi_cxt *sdxi_alloc_cxt(struct sdxi_dev *sdxi) cxt->sdxi = sdxi; + cxt->ring_state = kzalloc_obj(*cxt->ring_state, GFP_KERNEL); + if (!cxt->ring_state) + return NULL; + cxt->sq = kzalloc_obj(*cxt->sq, GFP_KERNEL); if (!cxt->sq) return NULL; @@ -373,6 +379,8 @@ int sdxi_admin_cxt_init(struct sdxi_dev *sdxi) sq->cxt_sts->state = FIELD_PREP(SDXI_CXT_STS_STATE, CXTV_RUN); cxt->id = SDXI_ADMIN_CXT_ID; cxt->db = sdxi->dbs + cxt->id * sdxi->db_stride; + sdxi_ring_state_init(cxt->ring_state, &sq->cxt_sts->read_index, + sq->write_index, sq->ring_entries, sq->desc_ring); err = sdxi_publish_cxt(cxt); if (err) @@ -389,10 +397,15 @@ int sdxi_admin_cxt_init(struct sdxi_dev *sdxi) */ struct sdxi_cxt *sdxi_cxt_new(struct sdxi_dev *sdxi) { + struct sdxi_sq *sq; + struct sdxi_cxt *cxt __free(sdxi_cxt) = sdxi_alloc_cxt(sdxi); if (!cxt) return NULL; + sq = cxt->sq; + sdxi_ring_state_init(cxt->ring_state, &sq->cxt_sts->read_index, + sq->write_index, sq->ring_entries, sq->desc_ring); if (register_cxt(sdxi, cxt)) return NULL; diff --git a/drivers/dma/sdxi/context.h b/drivers/dma/sdxi/context.h index 5cd78e883c8d..9779b9aa4f86 100644 --- a/drivers/dma/sdxi/context.h +++ b/drivers/dma/sdxi/context.h @@ -54,6 +54,8 @@ struct sdxi_cxt { dma_addr_t akey_table_dma; struct sdxi_sq *sq; + + struct sdxi_ring_state *ring_state; }; int sdxi_admin_cxt_init(struct sdxi_dev *sdxi); -- 2.53.0