linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
Cc: rjw@rjwysocki.net, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH -next 1/2] cpufreq: powernv: Move smp_call_function_any() out of irq safe block
Date: Tue, 3 May 2016 17:19:31 +0530	[thread overview]
Message-ID: <20160503114931.GA3083@vireshk-i7> (raw)
In-Reply-To: <1462268448-19954-2-git-send-email-akshay.adiga@linux.vnet.ibm.com>

On 03-05-16, 15:10, Akshay Adiga wrote:
> Fixing a WARN_ON caused by smp_call_function_any() when irq is disabled,
> because of changes made in the patch
> ('cpufreq: powernv: Ramp-down global pstate slower than local-pstate')
> https://patchwork.ozlabs.org/patch/612058/
> 
>  WARNING: CPU: 0 PID: 4 at kernel/smp.c:291
> smp_call_function_single+0x170/0x180
> 
>  Call Trace:
>  [c0000007f648f9f0] [c0000007f648fa90] 0xc0000007f648fa90 (unreliable)
>  [c0000007f648fa30] [c0000000001430e0] smp_call_function_any+0x170/0x1c0
>  [c0000007f648fa90] [c0000000007b4b00]
> powernv_cpufreq_target_index+0xe0/0x250
>  [c0000007f648fb00] [c0000000007ac9dc]
> __cpufreq_driver_target+0x20c/0x3d0
>  [c0000007f648fbc0] [c0000000007b1b4c] od_dbs_timer+0xcc/0x260
>  [c0000007f648fc10] [c0000000007b3024] dbs_work_handler+0x54/0xa0
>  [c0000007f648fc50] [c0000000000c49a8] process_one_work+0x1d8/0x590
>  [c0000007f648fce0] [c0000000000c4e08] worker_thread+0xa8/0x660
>  [c0000007f648fd80] [c0000000000cca88] kthread+0x108/0x130
>  [c0000007f648fe30] [c0000000000095e8] ret_from_kernel_thread+0x5c/0x74
> 
> Moving smp_call_function_any() out of the critical section and changing
> irq safe spinlocks to normal spinlocks.
> 
> Reported-by: Abdul Haleem <abdhalee@linux.vnet.linux.com>
> Signed-off-by: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
> ---
> Patch is based on Rafael's linux-next
>  drivers/cpufreq/powernv-cpufreq.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/cpufreq/powernv-cpufreq.c b/drivers/cpufreq/powernv-cpufreq.c
> index 144c732..1f0e20c 100644
> --- a/drivers/cpufreq/powernv-cpufreq.c
> +++ b/drivers/cpufreq/powernv-cpufreq.c
> @@ -581,9 +581,10 @@ void gpstate_timer_handler(unsigned long data)
>  	gpstates->last_gpstate = freq_data.gpstate_id;
>  	gpstates->last_lpstate = freq_data.pstate_id;
>  
> +	spin_unlock(&gpstates->gpstate_lock);
> +
>  	/* Timer may get migrated to a different cpu on cpu hot unplug */
>  	smp_call_function_any(policy->cpus, set_pstate, &freq_data, 1);
> -	spin_unlock(&gpstates->gpstate_lock);
>  }
>  
>  /*
> @@ -596,7 +597,6 @@ static int powernv_cpufreq_target_index(struct cpufreq_policy *policy,
>  {
>  	struct powernv_smp_call_data freq_data;
>  	unsigned int cur_msec, gpstate_id;
> -	unsigned long flags;
>  	struct global_pstate_info *gpstates = policy->driver_data;
>  
>  	if (unlikely(rebooting) && new_index != get_nominal_index())
> @@ -607,7 +607,7 @@ static int powernv_cpufreq_target_index(struct cpufreq_policy *policy,
>  
>  	cur_msec = jiffies_to_msecs(get_jiffies_64());
>  
> -	spin_lock_irqsave(&gpstates->gpstate_lock, flags);
> +	spin_lock(&gpstates->gpstate_lock);

You don't necessarily have to write 'what you are doing' in the commit log, but
tell us why you are doing that.

Please explain, why is this changed and why will things continue to work
without this.

-- 
viresh

  reply	other threads:[~2016-05-03 11:49 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-03  9:40 [PATCH -next 0/2] cpufreq: powernv: Fixes for Global pstate management Akshay Adiga
2016-05-03  9:40 ` [PATCH -next 1/2] cpufreq: powernv: Move smp_call_function_any() out of irq safe block Akshay Adiga
2016-05-03 11:49   ` Viresh Kumar [this message]
2016-05-03 13:18     ` Akshay Adiga
2016-05-03  9:40 ` [PATCH -next 2/2] cpufreq: powernv: del_timer_sync when global and local pstate are equal Akshay Adiga

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=20160503114931.GA3083@vireshk-i7 \
    --to=viresh.kumar@linaro.org \
    --cc=akshay.adiga@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=rjw@rjwysocki.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).