From patchwork Fri Sep 29 08:36:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Nazzareno Trimarchi X-Patchwork-Id: 9977333 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 52AFF60329 for ; Fri, 29 Sep 2017 08:36:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F083205F7 for ; Fri, 29 Sep 2017 08:36:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 30B6429808; Fri, 29 Sep 2017 08:36:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BAB2F205F7 for ; Fri, 29 Sep 2017 08:36:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752123AbdI2Igx (ORCPT ); Fri, 29 Sep 2017 04:36:53 -0400 Received: from mail-wm0-f44.google.com ([74.125.82.44]:43710 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751692AbdI2Igs (ORCPT ); Fri, 29 Sep 2017 04:36:48 -0400 Received: by mail-wm0-f44.google.com with SMTP id m72so4340744wmc.0 for ; Fri, 29 Sep 2017 01:36:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=J8JD5MqnSINKs/5NQ/JFe4cjYbu0NSggEveih0608a0=; b=tupsk3skNoZzf0dTuY5+GJshkEZshh9EswjEv07p1X4uaSVlhA6/Y01AOoiQO4pp0a 4R00w3q2aVcdzOsgobJ+DFNmG+Vy9+3DjO3KF38yovCkyXxki/ZHpplW8+4CU1Ehe+7c MyiK10CvmbIdC7KVgPw1EtOBxes9ezd+P1daov6ZMnJh6xwZFKupATpSUrF2TuYdIhX0 PDGR/fxUUCe1cssl/OUQ61UcbkjISX7dyKkckTnVXQil35sw3OUhZO+yrpwXz7zlMQKK k/g5Po5/XddTXRtsMM6qWhwEEhrXwc9iTIXOj8xbBBdhP7LR5+UTSNRb02ir2AClJgSZ +2GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=J8JD5MqnSINKs/5NQ/JFe4cjYbu0NSggEveih0608a0=; b=kcrerKpSoE6wqvZTFLCRCwRsUrlMUTjFvPH84w5c9Ok5xPCODDdQxiSNvvHe7+wdNN wENiqBPUkDaVaXH6aGOD1Mz0BL4DI/HJJhrmCM17vUS9t9Ekwyjv/PLnZrQ73DPwaFtH chCNRRfldX5TAgQriXbKP5eWUpb1b0eTNYr5LiDEDxsZmYwBMmRXzrUYhsHcMSByQcrj kVRWaF9s3SQvE7T7n6qP7nknAOfQBjaCNDjG4ed+yZgadgiQWjeIFVY9Q9R004tEBgKI dpgCgAgk58tktBZtIuJ7k7dGvmbUYTPlJIcTkVs1LJnKLX0QJcSp9xdTriFaStgPsQGx PbVg== X-Gm-Message-State: AHPjjUiyWMP3hZrmFco3KG2RYh4eyVtjm7HUnBO77paUoZ2gxR3uUtf4 PtceAy1EKU0ClrS6alyak5sO5A== X-Google-Smtp-Source: AOwi7QAMxWkEf8HeKOBBfp9RgQWqOAYpesr7Ni3ezOhmx1r5NIaScxJIf66Ca8Ue+dLHJboJ2sKz5g== X-Received: by 10.28.148.67 with SMTP id w64mr2911233wmd.132.1506674207295; Fri, 29 Sep 2017 01:36:47 -0700 (PDT) Received: from panicking (host211-95-static.0-79-b.business.telecomitalia.it. [79.0.95.211]) by smtp.gmail.com with ESMTPSA id i65sm1585511wmg.42.2017.09.29.01.36.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Sep 2017 01:36:46 -0700 (PDT) Date: Fri, 29 Sep 2017 10:36:44 +0200 From: Michael Trimarchi To: Sebastian Reichel Cc: linux-pm@vger.kernel.org Subject: [RFC PATCH V2] power: supply: Use system freezable queue for power supply change event Message-ID: <20170929083642.GA20189@panicking> References: <1506583986-4527-1-git-send-email-michael@amarulasolutions.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1506583986-4527-1-git-send-email-michael@amarulasolutions.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Just before suspend we can get the situation that a user process is trying to access the sysfs attribute of power supply. During resume we can hit the situation to have an invalid access to i2c bus that is still suspended. Make more sense to freeze the workqueue too <4>[13502.656095] [] (sbs_read_word_data+0x0/0x70) from [] (sbs_set_battery_mode+0x24/0x6c) <4>[13502.656095] r6:d79b0800 r5:d7123408 r4:00000001 r3:c04194ac <4>[13502.656125] [] (sbs_set_battery_mode+0x0/0x6c) from [] (sbs_get_property+0x180/0x6e4) <4>[13502.656125] r6:0000001b r5:d7123408 r4:d79b0800 r3:c04194ac <4>[13502.656156] [] (sbs_get_property+0x0/0x6e4) from [] (power_supply_show_property+0x4c/0x1c8) <4>[13502.656186] [] (power_supply_show_property+0x0/0x1c8) from [] (power_supply_uevent+0xa8/0x1d4) <4>[13502.656186] r8:ca4b1000 r7:0000001b r6:d7123408 r5:0000000e r4:c068d3dc <4>[13502.656217] [] (power_supply_uevent+0x0/0x1d4) from [] (dev_uevent+0xc8/0x18c) <4>[13502.656247] [] (dev_uevent+0x0/0x18c) from [] (kobject_uevent_env+0x1d4/0x4c4) <4>[13502.656247] r7:d7882880 r6:00000000 r5:c069cda4 r4:00000002 <4>[13502.656278] [] (kobject_uevent_env+0x0/0x4c4) from [] (kobject_uevent+0x14/0x18) <4>[13502.656308] [] (kobject_uevent+0x0/0x18) from [] (power_supply_changed_work+0x94/0xb8) <4>[13502.656308] [] (power_supply_changed_work+0x0/0xb8) from [] (process_one_work+0x158/0x474) <4>[13502.656339] r7:c1ae9e00 r6:c1ae4880 r5:cc480000 r4:ce655e00 <4>[13502.656369] [] (process_one_work+0x0/0x474) from [] (worker_thread+0x144/0x324) <4>[13502.656369] [] (worker_thread+0x0/0x324) from [] (kthread+0x98/0xa4) <4>[13502.656400] [] (kthread+0x0/0xa4) from [] (do_exit+0x0/0x7c4) Signed-off-by: Michael Trimarchi --- Changes V1: - fix typo in the code - Add more information in the description --- drivers/power/supply/power_supply_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) - diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c index 1e0960b..aa70853 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -119,7 +119,7 @@ void power_supply_changed(struct power_supply *psy) psy->changed = true; pm_stay_awake(&psy->dev); spin_unlock_irqrestore(&psy->changed_lock, flags); - schedule_work(&psy->changed_work); + queue_work(system_freezable_wq, &psy->changed_work); } EXPORT_SYMBOL_GPL(power_supply_changed);