From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756078AbcBBTki (ORCPT ); Tue, 2 Feb 2016 14:40:38 -0500 Received: from mail-lf0-f65.google.com ([209.85.215.65]:34228 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932580AbcBBTkd (ORCPT ); Tue, 2 Feb 2016 14:40:33 -0500 MIME-Version: 1.0 In-Reply-To: <20160202170144.GL3947@e106622-lin> References: <5a012e56b8404e2d07e172b6699ce02f5c5b5f26.1454410226.git.viresh.kumar@linaro.org> <20160202154717.GI3947@e106622-lin> <20160202170144.GL3947@e106622-lin> Date: Tue, 2 Feb 2016 20:40:31 +0100 X-Google-Sender-Auth: RPQscKukEjHmJpeT_BrBAQYZKKs Message-ID: Subject: Re: [PATCH 2/5] cpufreq: governor: Create separate sysfs-ops From: "Rafael J. Wysocki" To: Juri Lelli Cc: "Rafael J. Wysocki" , Viresh Kumar , Rafael Wysocki , Lists linaro-kernel , "linux-pm@vger.kernel.org" , Saravana Kannan , Peter Zijlstra , Michael Turquette , Steve Muckle , Vincent Guittot , Morten Rasmussen , dietmar.eggemann@arm.com, Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 2, 2016 at 6:01 PM, Juri Lelli wrote: > Hi Rafael, > > On 02/02/16 17:35, Rafael J. Wysocki wrote: >> On Tue, Feb 2, 2016 at 4:47 PM, Juri Lelli wrote: >> > Hi Viresh, >> > >> > On 02/02/16 16:27, Viresh Kumar wrote: >> >> Until now, governors (ondemand/conservative) were using the >> >> 'global-attr' or 'freq-attr', depending on the sysfs location where we >> >> want to create governor's directory. >> >> >> >> The problem is that, in case of 'freq-attr', we are forced to use >> >> show()/store() present in cpufreq.c, which always take policy->rwsem. >> >> >> >> And because of that we were facing some ABBA lockups during governor >> >> callback event CPUFREQ_GOV_POLICY_EXIT. And so we were dropping the >> >> rwsem right before calling governor callback for CPUFREQ_GOV_POLICY_EXIT >> >> event. >> >> >> >> That caused further problems and it never worked perfectly. >> >> >> >> This patch attempts to fix that by creating separate sysfs-ops for >> >> cpufreq governors. >> >> >> >> Because things got much simplified now, we don't need separate >> >> show/store callbacks for governor-for-system and governor-per-policy >> >> cases. >> >> >> >> Signed-off-by: Viresh Kumar >> > >> > This patch cleans things up a lot, that's good. >> > >> > One thing I'm still concerned about, though: don't we need some locking >> > in place for some of the store operations on governors attributes? Are >> > store_{ignore_nice_load, sampling_down_fact, etc} safe without locking? >> >> That would require some investigation I suppose. >> >> > It seems that we can call them from different cpus concurrently. >> >> Yes, we can. >> >> One quick-and-dirty way of dealing with that might be to introduce a >> "sysfs lock" into struct dbs_data and hold that around the invocation >> of gattr->store() in the sysfs_ops's ->store callback. >> > > There is value in trying to solve this issue by using some of the > existing locks, IMHO. Some value - maybe. I'm not sure how much of it, though. Finer-grained locking is generally easier to follow, because the locks tend to be used for specific purposes only. > Can't we actually try to use the policy->rwsem (or one of the core > locks) + wait_for_completion approach as we do in cpufreq core? No. Too many things depend on that lock already and some of them work by accident rather than by design. Thanks, Rafael