Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1670999ybt; Thu, 2 Jul 2020 10:52:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlyD94W67MUEJ87xjVycqCFCSkFv/61TjQR3caoCExQiHpJ9M9HvbsO1HgBgaRAiqyuUtR X-Received: by 2002:a05:6402:1d3a:: with SMTP id dh26mr17205292edb.349.1593712346714; Thu, 02 Jul 2020 10:52:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593712346; cv=none; d=google.com; s=arc-20160816; b=nMmr00Qt9q2VJpq18c3v8ofp1XQAjOM3/uYhd6qenElzchBzGdKHoNxmVAr8P30Vm5 dc0Vtlj32Ff2MW0sgpsjZh2KNKzMFt0gyUe6X5hx0lJEHVNEl7gedvtkNIz3JuA2Z8MU k1DspK/kozoGBAER68vRAD/3AWXbtuuwzhmmzH0/9oTpkUANjJf058z8C7TbVFu2rDRd xsgYWL9AWdcOcbPnw8to6+QzYTUuMQlXySzsnOFdVRuKvj5D9gM6JRk7ZFP4yxsSYReq W/fWUNbchWFFeYB7Ea5BFs5PRmSLGR/pTIREH0YqA8mdysyxL0sf7050sVntuognITfs hw9g== 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 :message-id:date:subject:cc:to:from; bh=Xf/i5oifjH8bVxBPAUlI/rPq1Jg7OwmLUO0QWoYmL8o=; b=FFDlTyHbcTvUQd1oGVVebfuh2x7mhvGVoz/Bbu/R8iPZkDoqtyuxs8Jp1XCEzTES5r +vEj8aoJlOqnbS3jnM7uH1l1J5t+oLwcEDnoD+WRVw8+J0C/4dnjHDVgTet6caApddXU Jdps06gtpYcR95ZXiSlVi6MfjfF28v6coFltt3RGFgirDoPgaQb6UTu2BYHaka6H1dHN ttlrXvl2D7UxDk4y8iKtWc32etn6Uuu2liARCbMejGO/LBdgCEW82/gWXXOLEhex/+pK nR/htXSJbfv0vdUKqFvZKP/tya4N9V5DUVtyA7TcAvTJ4tKVdWamqS4UYXSfKr9AqtRp XB4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id sd17si5969177ejb.306.2020.07.02.10.52.03; Thu, 02 Jul 2020 10:52:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727945AbgGBRtd (ORCPT + 99 others); Thu, 2 Jul 2020 13:49:33 -0400 Received: from muru.com ([72.249.23.125]:60458 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726754AbgGBRtc (ORCPT ); Thu, 2 Jul 2020 13:49:32 -0400 Received: from hillo.muru.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTP id 9DD418062; Thu, 2 Jul 2020 17:50:24 +0000 (UTC) From: Tony Lindgren To: linux-omap@vger.kernel.org Cc: "Andrew F . Davis" , Dave Gerlach , Faiz Abbas , Greg Kroah-Hartman , Grygorii Strashko , Keerthy , Nishanth Menon , Peter Ujfalusi , Roger Quadros , Suman Anna , Tero Kristo , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] bus: ti-sysc: Fix wakeirq sleeping function called from invalid context Date: Thu, 2 Jul 2020 10:49:28 -0700 Message-Id: <20200702174929.26506-1-tony@atomide.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With CONFIG_DEBUG_ATOMIC_SLEEP enabled we can see the following with wakeirqs and serial console idled: BUG: sleeping function called from invalid context at drivers/bus/ti-sysc.c:242 ... (sysc_wait_softreset) from [] (sysc_enable_module+0x48/0x274) (sysc_enable_module) from [] (sysc_runtime_resume+0x19c/0x1d8) (sysc_runtime_resume) from [] (sysc_child_runtime_resume+0x58/0x84) (sysc_child_runtime_resume) from [] (__rpm_callback+0x30/0x12c) (__rpm_callback) from [] (rpm_callback+0x20/0x80) (rpm_callback) from [] (rpm_resume+0x638/0x7fc) (rpm_resume) from [] (__pm_runtime_resume+0x60/0x9c) (__pm_runtime_resume) from [] (handle_threaded_wake_irq+0x24/0x60) (handle_threaded_wake_irq) from [] (irq_thread_fn+0x1c/0x78) (irq_thread_fn) from [] (irq_thread+0x140/0x26c) We have __pm_runtime_resume() call the sysc_runtime_resume() with spinlock held and interrupts disabled. Fixes: d46f9fbec719 ("bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit") Signed-off-by: Tony Lindgren --- drivers/bus/ti-sysc.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -236,15 +236,14 @@ static int sysc_wait_softreset(struct sysc *ddata) syss_done = ddata->cfg.syss_mask; if (syss_offset >= 0) { - error = readx_poll_timeout(sysc_read_sysstatus, ddata, rstval, - (rstval & ddata->cfg.syss_mask) == - syss_done, - 100, MAX_MODULE_SOFTRESET_WAIT); + error = readx_poll_timeout_atomic(sysc_read_sysstatus, ddata, + rstval, (rstval & ddata->cfg.syss_mask) == + syss_done, 100, MAX_MODULE_SOFTRESET_WAIT); } else if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) { - error = readx_poll_timeout(sysc_read_sysconfig, ddata, rstval, - !(rstval & sysc_mask), - 100, MAX_MODULE_SOFTRESET_WAIT); + error = readx_poll_timeout_atomic(sysc_read_sysconfig, ddata, + rstval, !(rstval & sysc_mask), + 100, MAX_MODULE_SOFTRESET_WAIT); } return error; -- 2.27.0