From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DF9242EEA9 for ; Mon, 27 Jul 2026 20:41:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785184898; cv=none; b=kOUgliGHwuMmFrsDx5C1IwnnhcQL6RAEgw+V1wedfeduBkhF2pe2srFBKSoVYF5qC4saFEXMFtt0kn/3QpCFffmo6JCCvWahdhTyH40nKRGnvfL/uosx12h/eHkVQoHCuXWBvpqCUVnEZp6tALx5LosLhAoLoMwP7fJPFptEcSg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785184898; c=relaxed/simple; bh=mkvTWGl/7jnQBsumfGNrGUMVRJfBwZ0IzD784XaiKNE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TWkLREHBP98xAJhUfOjc5WmGZgTdckWU+GXFRyh4OYPnlt7nF+ChX7Tkis7RNgoz/v3MR2Yu7ZxpBiMlO64yQVJo8UuGD1x73VV8sg5qjEvilEj+sKawhEPM5gDFhBfAenzFKpYxyohqUI2wFjn9+KhtSmxgA55bo6EE4Xo5iN4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=g2B5t0E8; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g2B5t0E8" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-84a652535dcso1927087b3a.3 for ; Mon, 27 Jul 2026 13:41:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785184896; x=1785789696; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZE8TVS27+6a892mUCRUCaEb8DNYyLcGJV97gPBVei3g=; b=g2B5t0E8E7Lmsr8ORtfpUCKVLJKzT39egs3iA/HkVOsieH/EzyrSNI39oV/tXJLl4d QWXSnJ+g2tRnAY1/DQMCWMaP1GitPikXuujGcBJpdrMYTTEtn7UZPsH+gs+bAtB9aPdD 2fpefjhumawJQc2v+nMCw67kDbKgWbiEjxWwJ0T5lPcl0IbVrFD0aMc1sM3jgxvoDv09 oRuV28/CStzTqI13SVe2QZJPBLh7p0kSHj6hUqnQOXHZvc2ixi7nLFCv3uTJWRdUxA9S H7jZatHKESsmwYc9tLewaiF5Lktb4N7VpJfXc1+60t1ngRUUDEhMxK4xt3wn26nBiokn F3ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785184896; x=1785789696; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ZE8TVS27+6a892mUCRUCaEb8DNYyLcGJV97gPBVei3g=; b=MxlMdK9yJHBA4emVoQiKSF5W0dAcoCN4Y81vFAQHoCefFgiq+9+zMTqYr7d7p66rEu MMrC1db5lJbL1y9nX61dOpmVZwOYxi7B92XVWq7VqzsfLs4lpp72m2HR8KLa5A4asy6c nQwNhzc/y9kSQGOm8lJda7rZEH0BwpvoNqwEdePhNkZpGybHVni0PdzkBWe5aVl3qosU UyzOijjuStl+sOG4gJBFdQU0UGsPNy8XBDKkh3hS6JM5G14y002hDIUhbEtDZsjoy89o oVo4tzRdDxXTN306vAZ7X5jU3x5pkDmK6yS9oAD44XfydauDvwzxJYYyuV+F/tyvtMLH n2pA== X-Forwarded-Encrypted: i=1; AHgh+Rrlh3JB3LWDotuLir85z+gDhQcr3sgDIfjW/eyTJkKzCpz734xRWFZzlkF9YufAv0rv4OlwKEQrVZDsBAw=@vger.kernel.org X-Gm-Message-State: AOJu0YzoTiPT5TFoh0cUFp3ZY1KJzlG8Y0QlFBrp2yCX/DY1+6AMcYWp kc4uRyQ694KyjllN7LiAMHvp/knUOutUrNKG0MgtIS73J85gs+WK0PQW X-Gm-Gg: AR+sD10sc31+01mIC+63WiXe4CiG/F5LwwPSmGXb4F12JLnaI7Mq4aoZuks2OhbYrYO MNh9ZXvnrcW80Z6GleIpnM2xdCZ9e32ST78Enq7X1utH0x0DtLTyJodZ2QDGvmY9GnygDGF19bi cydsKx6H40ofiIzhTNwiTzRUfphYZ64QbJ5rUyKkJucr3mLVCwy9Mg+w+2VD6/IqM49LotNqxnP ogHTDKSlMUOTZCCisSDmoesQ8EKK2Uh8IhIa19wl4GK88CP1VmYaNag+oNredxRNMAADsTQ6wW0 tfQPlJW5NcTmSRKWpZg91jSHaJ6A6qOqbf8K601A8mT7gzUAlDM84xKNIIN+Kpnm3UMQzHwctDO XMax0fhZqn23OgQSWZjuY4afhtOo18prPMR8FTh1HcgwSGAr6QknII+zVlK3BnzIOms97vID8yW HP6Atp X-Received: by 2002:a05:6a00:1f05:b0:846:c7f4:74d with SMTP id d2e1a72fcca58-84e5955b5b4mr7126826b3a.41.1785184896473; Mon, 27 Jul 2026 13:41:36 -0700 (PDT) Received: from cryptic.lan ([2001:569:7fab:e200:3789:64f9:8855:c0af]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84e533d1351sm3583338b3a.39.2026.07.27.13.41.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2026 13:41:35 -0700 (PDT) From: Allen Pais To: Vinod Koul , Frank Li Cc: Allen Pais , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Arnd Bergmann , Kees Cook , Dmitry Baryshkov , Miaoqian Lin , Icenowy Zheng , Jyothi Kumar Seerapu , linux-arm-msm@vger.kernel.org Subject: [PATCH v2 63/64] dmaengine: qcom-gpi: defer callbacks via vchan Date: Mon, 27 Jul 2026 13:39:25 -0700 Message-ID: <2685692fbcc37b41bdef7b88e37ffc7ca359986e.1785183549.git.allen.lkml@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: <20260108080332.2341725-1-allen.lkml@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Complete descriptors through virt-dma instead of invoking callbacks directly from event processing. This preserves the transfer result for the shared vchan BH, which invokes the callback and frees the descriptor; drain that BH before releasing channel resources. Signed-off-by: Allen Pais --- drivers/dma/qcom/gpi.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/dma/qcom/gpi.c b/drivers/dma/qcom/gpi.c index a5055a6273af..4cf68cf8eb2e 100644 --- a/drivers/dma/qcom/gpi.c +++ b/drivers/dma/qcom/gpi.c @@ -981,8 +981,12 @@ static void gpi_process_imed_data_event(struct gchan *gchan, result.result = DMA_TRANS_NOERROR; result.residue = gpi_desc->len - imed_event->length; - dma_cookie_complete(&vd->tx); - dmaengine_desc_get_callback_invoke(&vd->tx, &result); + spin_lock_irqsave(&gchan->vc.lock, flags); + list_del(&vd->node); + vd->tx_result = result; + vchan_cookie_complete(vd); + spin_unlock_irqrestore(&gchan->vc.lock, flags); + return; gpi_free_desc: spin_lock_irqsave(&gchan->vc.lock, flags); @@ -1060,8 +1064,12 @@ static void gpi_process_xfer_compl_event(struct gchan *gchan, result.residue = gpi_desc->len - compl_event->length; dev_dbg(gpii->gpi_dev->dev, "Residue %d\n", result.residue); - dma_cookie_complete(&vd->tx); - dmaengine_desc_get_callback_invoke(&vd->tx, &result); + spin_lock_irqsave(&gchan->vc.lock, flags); + list_del(&vd->node); + vd->tx_result = result; + vchan_cookie_complete(vd); + spin_unlock_irqrestore(&gchan->vc.lock, flags); + return; gpi_free_desc: spin_lock_irqsave(&gchan->vc.lock, flags); @@ -2009,6 +2017,7 @@ static void gpi_free_chan_resources(struct dma_chan *chan) /* free all allocated memory */ gpi_free_ring(&gchan->ch_ring, gpii); + dma_chan_kill_bh(&gchan->vc.chan); vchan_free_chan_resources(&gchan->vc); kfree(gchan->config); -- 2.43.0