From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964797AbbLHG7O (ORCPT ); Tue, 8 Dec 2015 01:59:14 -0500 Received: from mail-pa0-f50.google.com ([209.85.220.50]:32952 "EHLO mail-pa0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933027AbbLHG7M (ORCPT ); Tue, 8 Dec 2015 01:59:12 -0500 Date: Tue, 8 Dec 2015 12:29:05 +0530 From: Viresh Kumar To: "Rafael J. Wysocki" Cc: linux-pm@vger.kernel.org, linaro-kernel@lists.linaro.org, ashwin.chaugule@linaro.org, "Rafael J. Wysocki" , LKML Subject: Re: [PATCH][experimantal] cpufreq: governor: Use an atomic variable for synchronization Message-ID: <20151208065905.GA3294@ubuntu> References: <3999637.u4UiK7zxOR@vostro.rjw.lan> <2389125.q3qMOpRs8O@vostro.rjw.lan> <4910771.IIQSzHPqps@vostro.rjw.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4910771.IIQSzHPqps@vostro.rjw.lan> 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 08-12-15, 01:39, Rafael J. Wysocki wrote: > @@ -269,9 +259,6 @@ static void dbs_timer_handler(unsigned l > { > struct cpu_dbs_info *cdbs = (struct cpu_dbs_info *)data; > struct cpu_common_dbs_info *shared = cdbs->shared; > - unsigned long flags; > - > - spin_lock_irqsave(&shared->timer_lock, flags); > > /* > * Timer handler isn't allowed to queue work at the moment, because: > @@ -279,12 +266,10 @@ static void dbs_timer_handler(unsigned l > * - We are stopping the governor > * - Or we are updating the sampling rate of ondemand governor > */ > - if (!shared->skip_work) { > - shared->skip_work++; > + if (atomic_inc_return(&shared->skip_work) > 1) > + atomic_dec(&shared->skip_work); > + else > queue_work(system_wq, &shared->work); > - } As explained in the other email, this is wrong.. -- viresh