Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4486902ybx; Mon, 4 Nov 2019 14:14:06 -0800 (PST) X-Google-Smtp-Source: APXvYqwfQm8hUcQ5apLSGWjTQXCXMtn/fKb4JxwAepMd1noKgH/9gPkb82I4zQkOiGHFyKlh+HfD X-Received: by 2002:aa7:cad0:: with SMTP id l16mr28809428edt.82.1572905646672; Mon, 04 Nov 2019 14:14:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572905646; cv=none; d=google.com; s=arc-20160816; b=Ni1Ipz9z5AHYW73UQfDMThsWHFrpOgJGjy46d2NnMyG/9Zs11dzvHQrIvw7vK9IBzX kjfSXJuzYtGy5GIrnxl0v7WMmp0Dt4s5KzVADAwFVek5vZFrxrqAidXCfVQ5JIU9Bv9p TDwFimIB08towrkpsQ5tKm2Cy6/OsX2CB0CYbjkVsaz92krpWSf5p4nV3H2fjCk9LnJD wsxDNkRSo+ONWOw6inO6wxCSXwOyqDT+8GHlo1EoAKf803TPqMZMATUZYvKck+a7PPhI BKrBlKYD8xaQj6Ri7snmkhSEKhsuH2JFbyqpeiVtdtiteQa+a5QJwztcZH7TfgEW9Q+Q xNuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=R0WGsndXPtiyWZ+JQXtzdBZNFiVzuvyE4SKXS9hgw/c=; b=IVFNnnQZJDwL1xS/5ceIm+6bMggjyo1w7+gJ3PMfFt/+Pp97oNEOadti0PNtAROUNO Z3Sze88HP66FUR60noJ0s+JlVp+uoJxNGq3e+CfRoshbFsEjmoc4bqbUzINDBJUtCPw/ OHNGPFOjZWmJKRapwgKq0LMubbteNG7VIievdfZ0XqjuLT6pdCdgjHF2+hIDeGt8ww3U eEcEqfZG2f6vt7lcOmZk+vcuwWc7JUj3uvGwXvTrzc7ZkVQt1BWlDjJajyKp52RPoEfE 8OLRvbbbZp+I1ngFpQ3cS1F/N9WtBGKd0M5anA8QNkEI2itZlFmSvn3nPjrJIqe7Kg6g eRnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=03leRyNn; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e18si11203039ejq.399.2019.11.04.14.13.43; Mon, 04 Nov 2019 14:14:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=03leRyNn; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390176AbfKDWNI (ORCPT + 99 others); Mon, 4 Nov 2019 17:13:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:43460 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389737AbfKDWKQ (ORCPT ); Mon, 4 Nov 2019 17:10:16 -0500 Received: from localhost (6.204-14-84.ripe.coltfrance.com [84.14.204.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7C96C20650; Mon, 4 Nov 2019 22:10:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572905415; bh=pn2srYfvy9VzBDlTEG8iipOq6A4GH+NorzMhe9cGsPE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=03leRyNnfV7HZYgm8cyYHAiZR9zZjQfTvVxswxmWNL9WPBNxebbq+hbN9Brssz+aH tAUTZKFAL5XALrUNm9MyXiZk/WYImyeSnBo0zgIuhUW+g1WsFS7wcD+JnPX6knR4FL sxygT0NAfhxu/KkLKZzXGb4s1sNgyRw5aG8laKkM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yegor Yefremov , Tony Lindgren , Vinod Koul Subject: [PATCH 5.3 136/163] dmaengine: cppi41: Fix cppi41_dma_prep_slave_sg() when idle Date: Mon, 4 Nov 2019 22:45:26 +0100 Message-Id: <20191104212150.203506300@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212140.046021995@linuxfoundation.org> References: <20191104212140.046021995@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tony Lindgren commit bacdcb6675e170bb2e8d3824da220e10274f42a7 upstream. Yegor Yefremov reported that musb and ftdi uart can fail for the first open of the uart unless connected using a hub. This is because the first dma call done by musb_ep_program() must wait if cppi41 is PM runtime suspended. Otherwise musb_ep_program() continues with other non-dma packets before the DMA transfer is started causing at least ftdi uarts to fail to receive data. Let's fix the issue by waking up cppi41 with PM runtime calls added to cppi41_dma_prep_slave_sg() and return NULL if still idled. This way we have musb_ep_program() continue with PIO until cppi41 is awake. Fixes: fdea2d09b997 ("dmaengine: cppi41: Add basic PM runtime support") Reported-by: Yegor Yefremov Signed-off-by: Tony Lindgren Cc: stable@vger.kernel.org # v4.9+ Link: https://lore.kernel.org/r/20191023153138.23442-1-tony@atomide.com Signed-off-by: Vinod Koul Signed-off-by: Greg Kroah-Hartman --- drivers/dma/ti/cppi41.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) --- a/drivers/dma/ti/cppi41.c +++ b/drivers/dma/ti/cppi41.c @@ -586,9 +586,22 @@ static struct dma_async_tx_descriptor *c enum dma_transfer_direction dir, unsigned long tx_flags, void *context) { struct cppi41_channel *c = to_cpp41_chan(chan); + struct dma_async_tx_descriptor *txd = NULL; + struct cppi41_dd *cdd = c->cdd; struct cppi41_desc *d; struct scatterlist *sg; unsigned int i; + int error; + + error = pm_runtime_get(cdd->ddev.dev); + if (error < 0) { + pm_runtime_put_noidle(cdd->ddev.dev); + + return NULL; + } + + if (cdd->is_suspended) + goto err_out_not_ready; d = c->desc; for_each_sg(sgl, sg, sg_len, i) { @@ -611,7 +624,13 @@ static struct dma_async_tx_descriptor *c d++; } - return &c->txd; + txd = &c->txd; + +err_out_not_ready: + pm_runtime_mark_last_busy(cdd->ddev.dev); + pm_runtime_put_autosuspend(cdd->ddev.dev); + + return txd; } static void cppi41_compute_td_desc(struct cppi41_desc *d)