Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp6209037ybv; Tue, 18 Feb 2020 12:04:18 -0800 (PST) X-Google-Smtp-Source: APXvYqw8X7sZ1mjNDIEHPcE1eHmYkWOwn+bCNXs8206+U3I7RNxqXzmi0uqLUV4mjHmfv2KSVoAW X-Received: by 2002:a9d:2184:: with SMTP id s4mr16023372otb.121.1582056258219; Tue, 18 Feb 2020 12:04:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582056258; cv=none; d=google.com; s=arc-20160816; b=p8YieXCjPVfd1WIQ1JS3wrtPlBzOZhMxaUa+uM52zh5SZ3QJAErqlc4RjyUrC2SXW8 bUopZ8DtSI/msOftk+kJMAKYkCbEVLjN3dUmQCHIwAZoIjI8Ny46zn/lt2TJpoAqzZlo HPzrSqrOBk6WRMxJHPwwMfYL96FYmbhrmOu7uenhsP3KknlkfJd2WGHr/15VkPTCg0jV 8jjU4Yw/+UHNWyac1TBneTQi7DGKujuMqMmos3IhP4DSMsAA1D9BnM6mdl1Z29qoI26d dKIYpGgZqsWQtFmCUggh+lGN+u7o4FoeajaOqosnNR1h+azoA9JUKtY35oHN5MCPZ6ha t3Lg== 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=R10LCQlAPGwIYAYjLUTAFPfR/gPmt4PxkACZRpUNbOY=; b=yQGBWs3fH7WE79xAV8c7icai17jGPjvJcBMadJ3gFZTBhP315KPgg3WEQdmg5lKvNc MpqYAz8vkGwJO/bYu7a6YjtDN0/NuOZFN6PUjWKWfjfQxVW/vgP5c3dJYUchu+8vkNa8 WYd7MmD97ErlXENxfCuEFTFrxDQYYWAyUV+DITLUzeEmjtWi88/JBRuKTySars40nX1f 2qu8UIWKTLWuwRO/qPa3Z/ZBRFUIV0OiV1SE9sVNVYA++qlJglGMFjCAHFfbsBmX9gQJ hR88+A6DGDDS7D2rP6nyKZ1iXnzaWldd40qx8ukcAO7KpIYwAR1chYkbPLt5eEguh7Nb dXaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=slZ3ZMw9; 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 j1si2371850otr.207.2020.02.18.12.04.05; Tue, 18 Feb 2020 12:04:18 -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=slZ3ZMw9; 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 S1729037AbgBRUC6 (ORCPT + 99 others); Tue, 18 Feb 2020 15:02:58 -0500 Received: from mail.kernel.org ([198.145.29.99]:43790 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729022AbgBRUCz (ORCPT ); Tue, 18 Feb 2020 15:02:55 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 064622465D; Tue, 18 Feb 2020 20:02:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582056174; bh=KDjerKczOZHWwPnuBGNxgXOG0D9QiJQCmyfpxvInpYo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=slZ3ZMw9v1Jk6xiSWLtxnif7JIaplbfYjavSBqyegC0ENRNBDq77lRDQO/Yw54b86 cBvRe5Mw1Jv3jaTDDUlT64BHL9kEvECeFwlVrZ9+YEi2u1bak5Pn9gIPBaJaij1Ig6 FjmccVlSWsOsPPyAwd2Y8FF+yGCJczr2Jt4w42/s= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Douglas Anderson , Brian Masney , Lina Iyer , Maulik Shah , Bjorn Andersson , Stephen Boyd , Linus Walleij Subject: [PATCH 5.5 62/80] spmi: pmic-arb: Set lockdep class for hierarchical irq domains Date: Tue, 18 Feb 2020 20:55:23 +0100 Message-Id: <20200218190437.999815919@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200218190432.043414522@linuxfoundation.org> References: <20200218190432.043414522@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: Stephen Boyd commit 2d5a2f913b658a7ae984773a63318ed4daadf4af upstream. I see the following lockdep splat in the qcom pinctrl driver when attempting to suspend the device. WARNING: possible recursive locking detected 5.4.11 #3 Tainted: G W -------------------------------------------- cat/3074 is trying to acquire lock: ffffff81f49804c0 (&irq_desc_lock_class){-.-.}, at: __irq_get_desc_lock+0x64/0x94 but task is already holding lock: ffffff81f1cc10c0 (&irq_desc_lock_class){-.-.}, at: __irq_get_desc_lock+0x64/0x94 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&irq_desc_lock_class); lock(&irq_desc_lock_class); *** DEADLOCK *** May be due to missing lock nesting notation 6 locks held by cat/3074: #0: ffffff81f01d9420 (sb_writers#7){.+.+}, at: vfs_write+0xd0/0x1a4 #1: ffffff81bd7d2080 (&of->mutex){+.+.}, at: kernfs_fop_write+0x12c/0x1fc #2: ffffff81f4c322f0 (kn->count#337){.+.+}, at: kernfs_fop_write+0x134/0x1fc #3: ffffffe411a41d60 (system_transition_mutex){+.+.}, at: pm_suspend+0x108/0x348 #4: ffffff81f1c5e970 (&dev->mutex){....}, at: __device_suspend+0x168/0x41c #5: ffffff81f1cc10c0 (&irq_desc_lock_class){-.-.}, at: __irq_get_desc_lock+0x64/0x94 stack backtrace: CPU: 5 PID: 3074 Comm: cat Tainted: G W 5.4.11 #3 Hardware name: Google Cheza (rev3+) (DT) Call trace: dump_backtrace+0x0/0x174 show_stack+0x20/0x2c dump_stack+0xc8/0x124 __lock_acquire+0x460/0x2388 lock_acquire+0x1cc/0x210 _raw_spin_lock_irqsave+0x64/0x80 __irq_get_desc_lock+0x64/0x94 irq_set_irq_wake+0x40/0x144 qpnpint_irq_set_wake+0x28/0x34 set_irq_wake_real+0x40/0x5c irq_set_irq_wake+0x70/0x144 pm8941_pwrkey_suspend+0x34/0x44 platform_pm_suspend+0x34/0x60 dpm_run_callback+0x64/0xcc __device_suspend+0x310/0x41c dpm_suspend+0xf8/0x298 dpm_suspend_start+0x84/0xb4 suspend_devices_and_enter+0xbc/0x620 pm_suspend+0x210/0x348 state_store+0xb0/0x108 kobj_attr_store+0x14/0x24 sysfs_kf_write+0x4c/0x64 kernfs_fop_write+0x15c/0x1fc __vfs_write+0x54/0x18c vfs_write+0xe4/0x1a4 ksys_write+0x7c/0xe4 __arm64_sys_write+0x20/0x2c el0_svc_common+0xa8/0x160 el0_svc_handler+0x7c/0x98 el0_svc+0x8/0xc Set a lockdep class when we map the irq so that irq_set_wake() doesn't warn about a lockdep bug that doesn't exist. Fixes: 12a9eeaebba3 ("spmi: pmic-arb: convert to v2 irq interfaces to support hierarchical IRQ chips") Cc: Douglas Anderson Cc: Brian Masney Cc: Lina Iyer Cc: Maulik Shah Cc: Bjorn Andersson Signed-off-by: Stephen Boyd Link: https://lore.kernel.org/r/20200121183748.68662-1-swboyd@chromium.org Signed-off-by: Linus Walleij Signed-off-by: Greg Kroah-Hartman --- drivers/spmi/spmi-pmic-arb.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/spmi/spmi-pmic-arb.c +++ b/drivers/spmi/spmi-pmic-arb.c @@ -731,6 +731,7 @@ static int qpnpint_irq_domain_translate( return 0; } +static struct lock_class_key qpnpint_irq_lock_class, qpnpint_irq_request_class; static void qpnpint_irq_domain_map(struct spmi_pmic_arb *pmic_arb, struct irq_domain *domain, unsigned int virq, @@ -746,6 +747,9 @@ static void qpnpint_irq_domain_map(struc else handler = handle_level_irq; + + irq_set_lockdep_class(virq, &qpnpint_irq_lock_class, + &qpnpint_irq_request_class); irq_domain_set_info(domain, virq, hwirq, &pmic_arb_irqchip, pmic_arb, handler, NULL, NULL); }