Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp6421219ybi; Wed, 31 Jul 2019 14:09:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqxbdNWxaP2YZWXdHdKk1W6h4SYbAu5TMAjR0z6TeOUpem2Jg0WSQKW4ILkYn2Eml97YxeAq X-Received: by 2002:a62:5214:: with SMTP id g20mr49403003pfb.187.1564607369053; Wed, 31 Jul 2019 14:09:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564607369; cv=none; d=google.com; s=arc-20160816; b=ZXNexSuC1zOdlL0Q3nrNw+oYZYuOwoQDCPRoQCrwq1UA8CxdmtBTQt9Z/H11UPWpSg yF65CQKrENQMnceCugadoY7NRmbQxmCuxUb8Ika+/c0vyG0xdpMfiaHfAUTZkL1RJn9H ZhB2AR3or6JhFMggGlydCRdEQbO65GUfXEC8VBTy/R+9m4OI8g3pajemkCjzk0k3FDIi 6lt4rmP/ImgZ1Nzn41mA44KbhFpe08ha42ee4f9INqlvSNxXRqY0CUe3oPfkylxk63PI m6IggOmgoOjrOiEUQuNbFqk9Z+Y6bPhbfnroLPYrqLKifERFT4ilpqL5J1r+uJ+UDa/n j2kA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=XghSi/Mlq+LQhHeo6MTHFdwi84brLK6KqoPzuQi3DwY=; b=LDGUzw9G4SleApbC9FWbtuxMnB4YZKooaI8+hQJUeNpfONZLZM9Q08As82CwKoBVj7 h4u3F1Flb+yQ6CByLiJgR5+Mo4okzh+GyJUGN1YkFeOAgCvVlUGtvc7knhzoEvHJXY9m 7VjR9mi94JfEN0vjmWGhh3g/zNlD5Cmqe6OTQI1uWTzp5HMXC21e/LS5NXZFhi+1y1zU mZqB4WyWRvUA2Lf+31gYyK5mYY1juIZmzbWIaBdr1S9iEacaP87GfW5QMym/NXer+/g4 diadhO9tn2EBysolM6I+9EjYrr2Mhe54cu7Xpgh8+SjzNvxdw+LtK0HffJ5yz9F0dpIi qoBA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c11si31689246pga.118.2019.07.31.14.09.13; Wed, 31 Jul 2019 14:09:29 -0700 (PDT) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730643AbfGaUzn (ORCPT + 99 others); Wed, 31 Jul 2019 16:55:43 -0400 Received: from inva021.nxp.com ([92.121.34.21]:36584 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728932AbfGaUzn (ORCPT ); Wed, 31 Jul 2019 16:55:43 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id DE40B200AD1; Wed, 31 Jul 2019 22:55:41 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id D1020200065; Wed, 31 Jul 2019 22:55:41 +0200 (CEST) Received: from fsr-ub1864-103.ea.freescale.net (fsr-ub1864-103.ea.freescale.net [10.171.82.17]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 60B13205F3; Wed, 31 Jul 2019 22:55:41 +0200 (CEST) From: Daniel Baluta To: shawnguo@kernel.org, jassisinghbrar@gmail.com Cc: s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, o.rempel@pengutronix.de, Daniel Baluta Subject: [PATCH] mailbox: imx: Fix Tx doorbell shutdown path Date: Wed, 31 Jul 2019 23:55:39 +0300 Message-Id: <20190731205539.13997-1-daniel.baluta@nxp.com> X-Mailer: git-send-email 2.17.1 X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Tx doorbell is handled by txdb_tasklet and doesn't have an associated IRQ. Anyhow, imx_mu_shutdown ignores this and tries to free an IRQ that wasn't requested for Tx DB resulting in the following warning: [ 1.967644] Trying to free already-free IRQ 26 [ 1.972108] WARNING: CPU: 2 PID: 157 at kernel/irq/manage.c:1708 __free_irq+0xc0/0x358 [ 1.980024] Modules linked in: [ 1.983088] CPU: 2 PID: 157 Comm: kworker/2:1 Tainted: G [ 1.993524] Hardware name: Freescale i.MX8QXP MEK (DT) [ 1.998668] Workqueue: events deferred_probe_work_func [ 2.003812] pstate: 60000085 (nZCv daIf -PAN -UAO) [ 2.008607] pc : __free_irq+0xc0/0x358 [ 2.012364] lr : __free_irq+0xc0/0x358 [ 2.016111] sp : ffff00001179b7e0 [ 2.019422] x29: ffff00001179b7e0 x28: 0000000000000018 [ 2.024736] x27: ffff000011233000 x26: 0000000000000004 [ 2.030053] x25: 000000000000001a x24: ffff80083bec74d4 [ 2.035369] x23: 0000000000000000 x22: ffff80083bec7588 [ 2.040686] x21: ffff80083b1fe8d8 x20: ffff80083bec7400 [ 2.046003] x19: 0000000000000000 x18: ffffffffffffffff [ 2.051320] x17: 0000000000000000 x16: 0000000000000000 [ 2.056637] x15: ffff0000111296c8 x14: ffff00009179b517 [ 2.061953] x13: ffff00001179b525 x12: ffff000011142000 [ 2.067270] x11: ffff000011129f20 x10: ffff0000105da970 [ 2.072587] x9 : 00000000ffffffd0 x8 : 0000000000000194 [ 2.077903] x7 : 612065657266206f x6 : ffff0000111e7b09 [ 2.083220] x5 : 0000000000000003 x4 : 0000000000000000 [ 2.088537] x3 : 0000000000000000 x2 : 00000000ffffffff [ 2.093854] x1 : 28b70f0a2b60a500 x0 : 0000000000000000 [ 2.099173] Call trace: [ 2.101618] __free_irq+0xc0/0x358 [ 2.105021] free_irq+0x38/0x98 [ 2.108170] imx_mu_shutdown+0x90/0xb0 [ 2.111921] mbox_free_channel.part.2+0x24/0xb8 [ 2.116453] mbox_free_channel+0x18/0x28 This bug is present from the beginning of times. Cc: Oleksij Rempel Fixes: 2bb7005696e2246 ("mailbox: Add support for i.MX messaging unit") Signed-off-by: Daniel Baluta --- drivers/mailbox/imx-mailbox.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mailbox/imx-mailbox.c b/drivers/mailbox/imx-mailbox.c index 9f74dee1a58c..957c10c4e674 100644 --- a/drivers/mailbox/imx-mailbox.c +++ b/drivers/mailbox/imx-mailbox.c @@ -214,8 +214,10 @@ static void imx_mu_shutdown(struct mbox_chan *chan) struct imx_mu_priv *priv = to_imx_mu_priv(chan->mbox); struct imx_mu_con_priv *cp = chan->con_priv; - if (cp->type == IMX_MU_TYPE_TXDB) + if (cp->type == IMX_MU_TYPE_TXDB) { tasklet_kill(&cp->txdb_tasklet); + return; + } imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_TIEn(cp->idx) | IMX_MU_xCR_RIEn(cp->idx) | IMX_MU_xCR_GIEn(cp->idx)); -- 2.17.1