From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752807AbbGNHSI (ORCPT ); Tue, 14 Jul 2015 03:18:08 -0400 Received: from mail-wi0-f182.google.com ([209.85.212.182]:36711 "EHLO mail-wi0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751521AbbGNHSF (ORCPT ); Tue, 14 Jul 2015 03:18:05 -0400 Date: Tue, 14 Jul 2015 09:18:01 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Krzysztof Kozlowski Cc: Sebastian Reichel , Dmitry Eremin-Solenikov , David Woodhouse , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [RFT/RFC] power_supply: bq2415x_charger: Initialize workqueue before scheduling it Message-ID: <20150714071801.GB12844@pali> References: <1436834053-2084-1-git-send-email-k.kozlowski@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1436834053-2084-1-git-send-email-k.kozlowski@samsung.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tuesday 14 July 2015 09:34:13 Krzysztof Kozlowski wrote: > The driver during probe registers a power supply notifier > (with bq2415x_notifier_call() callback) and calls it manually right > after. The notifier callback function schedules driver's workqueue > (bq->work). > > However the workqueue was initialized after these two events (after > registering power supply notifier and calling manually the callback). > > When power supply core notified the driver (executing its > bq2415x_notifier_call() callback) the scheduled workqueue could be > still uninitialized. > > Signed-off-by: Krzysztof Kozlowski > Reported-by: Pali Rohár > > --- > > I don't have the hardware, please test. Additionally I could not find > the commit which introduced the issue so I did not cc-stable. Thanks for the patch! Please wait some time (about week) and I will test it on real Nokia N900 hardware. Because bq2415x depends on isp1704 on Nokia N900 and isp1704 is not emulated by qemu, we cannot test any bq2415x changes in qemu :-( > --- > drivers/power/bq2415x_charger.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/power/bq2415x_charger.c b/drivers/power/bq2415x_charger.c > index e98dcb661cc9..527ed0f18796 100644 > --- a/drivers/power/bq2415x_charger.c > +++ b/drivers/power/bq2415x_charger.c > @@ -1601,6 +1601,7 @@ static int bq2415x_probe(struct i2c_client *client, > bq->reported_mode = BQ2415X_MODE_OFF; > bq->autotimer = 0; > bq->automode = 0; > + INIT_DELAYED_WORK(&bq->work, bq2415x_timer_work); > > if (np || ACPI_HANDLE(bq->dev)) { > ret = device_property_read_u32(bq->dev, > @@ -1677,7 +1678,6 @@ static int bq2415x_probe(struct i2c_client *client, > dev_info(bq->dev, "automode not supported\n"); > } > > - INIT_DELAYED_WORK(&bq->work, bq2415x_timer_work); > bq2415x_set_autotimer(bq, 1); > > dev_info(bq->dev, "driver registered\n"); -- Pali Rohár pali.rohar@gmail.com