From: Saravana Kannan <skannan@codeaurora.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
Todd Poynor <toddpoynor@google.com>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Stephen Boyd <sboyd@codeaurora.org>
Subject: Re: [PATCH v2] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend
Date: Mon, 14 Jul 2014 12:08:24 -0700 [thread overview]
Message-ID: <53C42AA8.8010107@codeaurora.org> (raw)
In-Reply-To: <CAKohpon9en_VnSx+CVydPsWBHtArvmazn0hrodrRJt9jgOa0-g@mail.gmail.com>
On 07/13/2014 11:09 PM, Viresh Kumar wrote:
> On 12 July 2014 08:14, Saravana Kannan <skannan@codeaurora.org> wrote:
>
>>>> I'm just always adding the real nodes to the first CPU in a cluster
>>>> independent of which CPU gets added first. Makes it easier to know which
>>>> ones to symlink. See comment next to policy->cpu for full context.
>>>
>>>
>>> Yeah, and that is the order in which CPUs will boot and cpufreq_add_dev()
>>> will be called. So, isn't policy->cpu the right CPU always?
>>
>>
>> No, the "first" cpu in a cluster doesn't need to be the first one to be
>> added. An example is 2x2 cluster system where the system is booted with max
>> cpus = 2 and then cpu3 could be onlined first by userspace.
>
> Because we are getting rid of much of the complexity now, I do not want
> policy->cpu to keep changing. Just fix it up to the cpu for which the policy
> gets created first. That's it. No more changes required. It doesn't matter at
> userspace which cpu owns it as symlinks would anyway duplicate it under
> every cpu.
I think you missed one my of comments in the email. I agree with what
you are saying here. I'll just do it as a separate patch to keep this
one simpler. I don't want to touch all the governors and other potential
uses of policy->cpu in this patch.
>> Yeah, it is pretty convolution. But pretty much anywhere in the gov code
>> where policy->cpu is used could cause this. The specific crash I hit was in
>> this code:
>>
>> static void od_dbs_timer(struct work_struct *work)
>> {
>> struct od_cpu_dbs_info_s *dbs_info =
>> container_of(work, struct od_cpu_dbs_info_s,
>> cdbs.work.work);
>> unsigned int cpu = dbs_info->cdbs.cur_policy->cpu;
>>
>> ======= CPU is policy->cpu here.
>>
>> struct od_cpu_dbs_info_s *core_dbs_info = &per_cpu(od_cpu_dbs_info,
>> cpu);
>>
>> ======= Picks the per CPU struct of an offline CPU
>>
>> <snip>
>>
>> mutex_lock(&core_dbs_info->cdbs.timer_mutex);
>>
>> ======= Dies trying to lock a destroyed mutex
>
> I am still not getting it. Why would we get into this if policy->cpu is fixed
> once at boot ?
>
Yeah, it definitely crashes if policy->cpu if an offline cpu. Because
the mutex would be uninitialized if it's stopped after boot or it would
never have been initialized (depending on how you fix policy->cpu at boot).
Look at this snippet on the actual tree and it should be pretty evident.
-Saravana
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: skannan@codeaurora.org (Saravana Kannan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend
Date: Mon, 14 Jul 2014 12:08:24 -0700 [thread overview]
Message-ID: <53C42AA8.8010107@codeaurora.org> (raw)
In-Reply-To: <CAKohpon9en_VnSx+CVydPsWBHtArvmazn0hrodrRJt9jgOa0-g@mail.gmail.com>
On 07/13/2014 11:09 PM, Viresh Kumar wrote:
> On 12 July 2014 08:14, Saravana Kannan <skannan@codeaurora.org> wrote:
>
>>>> I'm just always adding the real nodes to the first CPU in a cluster
>>>> independent of which CPU gets added first. Makes it easier to know which
>>>> ones to symlink. See comment next to policy->cpu for full context.
>>>
>>>
>>> Yeah, and that is the order in which CPUs will boot and cpufreq_add_dev()
>>> will be called. So, isn't policy->cpu the right CPU always?
>>
>>
>> No, the "first" cpu in a cluster doesn't need to be the first one to be
>> added. An example is 2x2 cluster system where the system is booted with max
>> cpus = 2 and then cpu3 could be onlined first by userspace.
>
> Because we are getting rid of much of the complexity now, I do not want
> policy->cpu to keep changing. Just fix it up to the cpu for which the policy
> gets created first. That's it. No more changes required. It doesn't matter at
> userspace which cpu owns it as symlinks would anyway duplicate it under
> every cpu.
I think you missed one my of comments in the email. I agree with what
you are saying here. I'll just do it as a separate patch to keep this
one simpler. I don't want to touch all the governors and other potential
uses of policy->cpu in this patch.
>> Yeah, it is pretty convolution. But pretty much anywhere in the gov code
>> where policy->cpu is used could cause this. The specific crash I hit was in
>> this code:
>>
>> static void od_dbs_timer(struct work_struct *work)
>> {
>> struct od_cpu_dbs_info_s *dbs_info =
>> container_of(work, struct od_cpu_dbs_info_s,
>> cdbs.work.work);
>> unsigned int cpu = dbs_info->cdbs.cur_policy->cpu;
>>
>> ======= CPU is policy->cpu here.
>>
>> struct od_cpu_dbs_info_s *core_dbs_info = &per_cpu(od_cpu_dbs_info,
>> cpu);
>>
>> ======= Picks the per CPU struct of an offline CPU
>>
>> <snip>
>>
>> mutex_lock(&core_dbs_info->cdbs.timer_mutex);
>>
>> ======= Dies trying to lock a destroyed mutex
>
> I am still not getting it. Why would we get into this if policy->cpu is fixed
> once at boot ?
>
Yeah, it definitely crashes if policy->cpu if an offline cpu. Because
the mutex would be uninitialized if it's stopped after boot or it would
never have been initialized (depending on how you fix policy->cpu at boot).
Look at this snippet on the actual tree and it should be pretty evident.
-Saravana
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2014-07-14 19:08 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-10 2:37 [PATCH] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend Saravana Kannan
2014-07-10 2:37 ` Saravana Kannan
2014-07-11 4:18 ` [PATCH v2] " Saravana Kannan
2014-07-11 4:18 ` Saravana Kannan
2014-07-11 6:19 ` Viresh Kumar
2014-07-11 6:19 ` Viresh Kumar
2014-07-11 9:59 ` skannan
2014-07-11 9:59 ` skannan at codeaurora.org
2014-07-11 10:07 ` skannan
2014-07-11 10:07 ` skannan
2014-07-11 10:07 ` skannan at codeaurora.org
2014-07-11 10:52 ` Viresh Kumar
2014-07-11 10:52 ` Viresh Kumar
2014-07-12 2:44 ` Saravana Kannan
2014-07-12 2:44 ` Saravana Kannan
2014-07-14 6:09 ` Viresh Kumar
2014-07-14 6:09 ` Viresh Kumar
2014-07-14 19:08 ` Saravana Kannan [this message]
2014-07-14 19:08 ` Saravana Kannan
2014-07-15 4:35 ` Viresh Kumar
2014-07-15 4:35 ` Viresh Kumar
2014-07-15 5:36 ` Saravana Kannan
2014-07-15 5:36 ` Saravana Kannan
2014-07-15 5:52 ` Viresh Kumar
2014-07-15 5:52 ` Viresh Kumar
2014-07-15 6:58 ` Srivatsa S. Bhat
2014-07-15 6:58 ` Srivatsa S. Bhat
2014-07-15 6:58 ` Srivatsa S. Bhat
2014-07-15 17:35 ` skannan
2014-07-15 17:35 ` skannan at codeaurora.org
2014-07-16 7:44 ` Srivatsa S. Bhat
2014-07-16 7:44 ` Srivatsa S. Bhat
2014-07-16 5:44 ` Viresh Kumar
2014-07-16 5:44 ` Viresh Kumar
2014-07-16 7:49 ` Srivatsa S. Bhat
2014-07-16 7:49 ` Srivatsa S. Bhat
2014-07-12 3:06 ` Saravana Kannan
2014-07-12 3:06 ` Saravana Kannan
2014-07-14 6:13 ` Viresh Kumar
2014-07-14 6:13 ` Viresh Kumar
2014-07-14 19:10 ` Saravana Kannan
2014-07-14 19:10 ` Saravana Kannan
2014-07-11 7:43 ` Srivatsa S. Bhat
2014-07-11 7:43 ` Srivatsa S. Bhat
2014-07-11 10:02 ` skannan
2014-07-11 10:02 ` skannan at codeaurora.org
2014-07-15 22:47 ` [PATCH v3 0/2] Simplify hotplug/suspend handling Saravana Kannan
2014-07-15 22:47 ` Saravana Kannan
2014-07-15 22:47 ` [PATCH v3 1/2] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend Saravana Kannan
2014-07-15 22:47 ` Saravana Kannan
2014-07-16 0:28 ` Saravana Kannan
2014-07-16 0:28 ` Saravana Kannan
2014-07-16 8:30 ` Viresh Kumar
2014-07-16 8:30 ` Viresh Kumar
2014-07-16 19:19 ` Saravana Kannan
2014-07-16 19:19 ` Saravana Kannan
2014-07-16 19:19 ` Saravana Kannan
2014-07-16 8:24 ` Viresh Kumar
2014-07-16 8:24 ` Viresh Kumar
2014-07-16 11:16 ` Srivatsa S. Bhat
2014-07-16 11:16 ` Srivatsa S. Bhat
2014-07-16 13:13 ` Viresh Kumar
2014-07-16 13:13 ` Viresh Kumar
2014-07-16 18:04 ` Srivatsa S. Bhat
2014-07-16 18:04 ` Srivatsa S. Bhat
2014-07-16 19:56 ` Saravana Kannan
2014-07-16 19:56 ` Saravana Kannan
2014-07-17 5:51 ` Viresh Kumar
2014-07-17 5:51 ` Viresh Kumar
2014-07-16 19:56 ` Saravana Kannan
2014-07-16 19:56 ` Saravana Kannan
2014-07-17 5:35 ` Viresh Kumar
2014-07-17 5:35 ` Viresh Kumar
2014-07-18 3:25 ` Saravana Kannan
2014-07-18 3:25 ` Saravana Kannan
2014-07-18 4:19 ` Viresh Kumar
2014-07-18 4:19 ` Viresh Kumar
2014-07-16 20:25 ` Saravana Kannan
2014-07-16 20:25 ` Saravana Kannan
2014-07-16 21:45 ` Saravana Kannan
2014-07-16 21:45 ` Saravana Kannan
2014-07-17 6:24 ` Viresh Kumar
2014-07-17 6:24 ` Viresh Kumar
2014-07-16 14:29 ` Dirk Brandewie
2014-07-16 14:29 ` Dirk Brandewie
2014-07-16 15:28 ` Viresh Kumar
2014-07-16 15:28 ` Viresh Kumar
2014-07-16 19:42 ` Saravana Kannan
2014-07-16 19:42 ` Saravana Kannan
2014-07-15 22:47 ` [PATCH v3 2/2] cpufreq: Simplify and fix mutual exclusion with hotplug Saravana Kannan
2014-07-15 22:47 ` Saravana Kannan
2014-07-16 8:48 ` Viresh Kumar
2014-07-16 8:48 ` Viresh Kumar
2014-07-16 19:34 ` Saravana Kannan
2014-07-16 19:34 ` Saravana Kannan
2014-07-25 1:07 ` [PATCH v4 0/5] Simplify hotplug/suspend handling Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-07-25 1:07 ` [PATCH v4 1/5] cpufreq: Don't wait for CPU to going offline to restart governor Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-07-31 20:47 ` Saravana Kannan
2014-07-31 20:47 ` Saravana Kannan
2014-07-25 1:07 ` [PATCH v4 2/5] cpufreq: Keep track of which CPU owns the kobj/sysfs nodes separately Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-08-07 9:02 ` Viresh Kumar
2014-08-07 9:02 ` Viresh Kumar
2014-07-25 1:07 ` [PATCH v4 3/5] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-07-31 21:56 ` Rafael J. Wysocki
2014-07-31 21:56 ` Rafael J. Wysocki
2014-07-31 22:15 ` Saravana Kannan
2014-07-31 22:15 ` Saravana Kannan
2014-07-31 23:48 ` Saravana Kannan
2014-07-31 23:48 ` Saravana Kannan
2014-07-31 23:48 ` Saravana Kannan
2014-08-07 10:51 ` Viresh Kumar
2014-08-07 10:51 ` Viresh Kumar
2014-08-12 9:17 ` Viresh Kumar
2014-08-12 9:17 ` Viresh Kumar
2014-08-07 10:48 ` Viresh Kumar
2014-08-07 10:48 ` Viresh Kumar
2014-08-11 22:13 ` Saravana Kannan
2014-08-11 22:13 ` Saravana Kannan
2014-08-12 8:51 ` Viresh Kumar
2014-08-12 8:51 ` Viresh Kumar
2014-07-25 1:07 ` [PATCH v4 4/5] cpufreq: Properly handle physical CPU hot-add/hot-remove Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-08-07 11:02 ` Viresh Kumar
2014-08-07 11:02 ` Viresh Kumar
2014-08-11 22:15 ` Saravana Kannan
2014-08-11 22:15 ` Saravana Kannan
2014-07-25 1:07 ` [PATCH v4 5/5] cpufreq: Delete dead code related to policy save/restore Saravana Kannan
2014-07-25 1:07 ` Saravana Kannan
2014-08-07 11:06 ` Viresh Kumar
2014-08-07 11:06 ` Viresh Kumar
2014-07-29 5:52 ` [PATCH v4 0/5] Simplify hotplug/suspend handling skannan
2014-07-29 5:52 ` skannan
2014-07-29 5:52 ` skannan at codeaurora.org
2014-07-30 0:29 ` Rafael J. Wysocki
2014-07-30 0:29 ` Rafael J. Wysocki
2014-07-31 20:25 ` Saravana Kannan
2014-07-31 20:25 ` Saravana Kannan
2014-08-07 6:04 ` skannan
2014-08-07 6:04 ` skannan at codeaurora.org
2014-10-16 8:53 ` Viresh Kumar
2014-10-16 8:53 ` Viresh Kumar
2014-10-23 21:41 ` Saravana Kannan
2014-10-23 21:41 ` Saravana Kannan
2014-07-16 22:02 ` [PATCH] cpufreq: Don't destroy/realloc policy/sysfs on hotplug/suspend Rafael J. Wysocki
2014-07-16 22:02 ` Rafael J. Wysocki
2014-07-16 22:35 ` Saravana Kannan
2014-07-16 22:35 ` Saravana Kannan
2014-07-24 3:02 ` Saravana Kannan
2014-07-24 3:02 ` Saravana Kannan
2014-07-24 5:04 ` Viresh Kumar
2014-07-24 5:04 ` Viresh Kumar
2014-07-24 9:12 ` skannan
2014-07-24 9:12 ` skannan at codeaurora.org
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53C42AA8.8010107@codeaurora.org \
--to=skannan@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=sboyd@codeaurora.org \
--cc=toddpoynor@google.com \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.