From nobody Fri Dec 19 15:51:41 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 91689314D05 for ; Thu, 13 Nov 2025 19:50:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763063458; cv=none; b=frGUIqqiCbsrp2F+VNgxlXVt/QRmGc9Lhe038MuQwe+4ZDr/hK9dL9hQtUaDdyoY6dcWXOk3m4kteGQQZpnbHAn68DhKYY341lSyjFe4yctvnYwrJBu0GRj4l9lfDf5HcPaTUdx34Ncyatc0ZeOMwqrRrlMU8sp+8W1lGi/+zaY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763063458; c=relaxed/simple; bh=mHTGsOfuS2W0u5p/r09WYfZ8PsBfHhEo7hbNe2CwJZQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=eKCTK4TFzZrM9pd8C9d9C8tT4dG1eQWk0r1jtjYi9Piyu0+wPUF5cvg8GRhW9C7AuEh+nScqr8Imq1XOoVT+yFcy5ma0dxSI1YQaDa1MGrDNGzMr0Uw2nPYSvYfV+lRzzJAzdu7Ay+hL8i2k7wEXT6bOAv+ik2nB6sVQedjIMzk= 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=gDNzTugK; arc=none smtp.client-ip=209.85.128.42 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="gDNzTugK" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-47728f914a4so8075015e9.1 for ; Thu, 13 Nov 2025 11:50:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763063455; x=1763668255; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8a4bxJ700KFmukmiZtpRMTY3GPxgHVm/3xQfOBxUFVg=; b=gDNzTugKdzbQFMfWN04RH9RtdpxmnUDwvm4+d5ifl49z9FYdP8IOw7GhKXfabGfAik QjZHqDO47bsV2jICjsjDxqomykWjOBW7XcltKBLid9dpaZgQgN8zIvxWp6NZ8fkF07ss yZ/IOcXzbG0USzG8oDdsV3Fvd9TlmiOe++K0QGd6w8v7ngRN7elSzDGOO8tPWUgKIe41 i5TcewAK2QKlx+EvhiPxEVBuvJj7tsTBD9ZtfnaQEwwPcM8wLVwyHeTNnuOEF1OU57Fq K8EEymjgg3O2GTP8XSJX3dvl5UTJW+XvVFObiQlcQ3Vgt1em4NaLmR09XbY3tB4OI1wm fnXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763063455; x=1763668255; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8a4bxJ700KFmukmiZtpRMTY3GPxgHVm/3xQfOBxUFVg=; b=jsB08V04VUAqqOzwqVy+a3tr+5DZACfOnz0KVYUc77bhteZq73FmJ3ieeXaKxuF0VA gDPQqtVkqkqmkJkp4kgB/I7TZlTeCh/EcJG9pKPUceMPYM8Xnw7D/5gaKUdZaElPGpco fVA5X/JZSwCAJmPOWD7cr0mgzvGx5mdoO4uUCq6OZ1N8pRyIHAcqlhcLEEVhQr5unpmd jovmM7D8kQgL/dr0YGUTMO6JN4z9Ta0ipmEyI/zf1RFOm/ewMKPFOhkGlJX5YzBQM81g Yc4d1GpklQDHMcswKg4tfVwQZ7o0k5HCXcqlrqy6Ire6a6If/nMNA1OvQdncUrW4vnX+ WuvA== X-Forwarded-Encrypted: i=1; AJvYcCXg5tCcFYaxvb14ZSOG+lP5n1nqSOvDZRBaULrbNZ+dU/f8tM/hVeGPL2IwjgjWkCgPwDcHjpWOZ/EwR0s=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+ptbepDZQ233RqkJKbdoXKWYCX14RxnlMR8a8tWwCnlWaBOAW TW1fPPkbpv+QXZz2zCSI8btQmV4SQ9Hj+Odp8YbRSIYyNIXePhBHMh40 X-Gm-Gg: ASbGnctuOyq0PkKZ6RudJWyMLZpxLRueNsvUog3MOUMVhdu/HL2SvZhzf9w0iJV+yyb EsjQ3Y1gYx2ACllWYHppX1nsW221iZeUI3IaJ5ueEhx2mOmhOLuJXx9bx1XbBg5Jlnc8XgbLqYp KT64o4WzGB3AXL/2uRI2ATq8p+cyLBJcFusG82F7mlWGS6e5czy0YfBQxQOpYtqJtm465VLa/KZ rhwspinl0pw6lhcSChJYuQ1cWubfils1bbqGku+uWR9D5gEaCF23SDY44XyWPr/4Lg9OsCQmwD8 kp7CXcAYLQwsEr0cWfvNc5i6kUmJ78oXiakbSk6azJKXq6wy4CnlxbwoXpgIgdjaeVF80ZIdRr/ IL+GSP24qn8ZgA3vGo3LXQM2aNf/yrV6o17r1b2Jv3b4pjcUueLLaYNulKp3mYekJG6zrIzp4Vr OkbVVLkY+K6T3x4GGCfHByfhYPyUunigLF8queS8H4FOpSkzK9PJzDVMpB4DLcT9uwsLA0epY= X-Google-Smtp-Source: AGHT+IFXUMVc2f+6DdqennwxxmSsHqVvHaGBur6Gx3iY2mKkyvBexU+yQ/HvOa7jmy/XDko2hy9xOQ== X-Received: by 2002:a05:600c:3b14:b0:45d:d505:a1c3 with SMTP id 5b1f17b1804b1-4778feaa621mr6292205e9.37.1763063454670; Thu, 13 Nov 2025 11:50:54 -0800 (PST) Received: from biju.lan (host86-162-200-138.range86-162.btcentralplus.com. [86.162.200.138]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47787daab3fsm124424685e9.0.2025.11.13.11.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Nov 2025 11:50:54 -0800 (PST) From: Biju X-Google-Original-From: Biju To: Vinod Koul Cc: Biju Das , Geert Uytterhoeven , Lad Prabhakar , Fabrizio Castro , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , linux-renesas-soc@vger.kernel.org, stable@kernel.org Subject: [PATCH v2] dmaengine: sh: rz-dmac: Fix rz_dmac_terminate_all() Date: Thu, 13 Nov 2025 19:50:48 +0000 Message-ID: <20251113195052.564338-1-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das After audio full duplex testing, playing the recorded file contains a few playback frames from the previous time. The rz_dmac_terminate_all() does not reset all the hardware descriptors queued previously, leading to the wrong descriptor being picked up during the next DMA transfer. Fix the above issue by resetting all the descriptor headers for a channel in rz_dmac_terminate_all() as rz_dmac_lmdesc_recycle() points to the proper descriptor header filled by the rz_dmac_prepare_descs_for_slave_sg(). Cc: stable@kernel.org Fixes: 5000d37042a6 ("dmaengine: sh: Add DMAC driver for RZ/G2L SoC") Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v1->v2: * Updated commit message * Collected Rb tag from Geert --- drivers/dma/sh/rz-dmac.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index 1f687b08d6b8..3087bbd11d59 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -557,11 +557,16 @@ rz_dmac_prep_slave_sg(struct dma_chan *chan, struct s= catterlist *sgl, static int rz_dmac_terminate_all(struct dma_chan *chan) { struct rz_dmac_chan *channel =3D to_rz_dmac_chan(chan); + struct rz_lmdesc *lmdesc =3D channel->lmdesc.base; unsigned long flags; + unsigned int i; LIST_HEAD(head); =20 rz_dmac_disable_hw(channel); spin_lock_irqsave(&channel->vc.lock, flags); + for (i =3D 0; i < DMAC_NR_LMDESC; i++) + lmdesc[i].header =3D 0; + list_splice_tail_init(&channel->ld_active, &channel->ld_free); list_splice_tail_init(&channel->ld_queue, &channel->ld_free); vchan_get_all_descriptors(&channel->vc, &head); --=20 2.43.0