[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Fri, 11 Nov 2016 11:07:13 +0100
From: Petr Mladek <pmladek@...e.com>
To: Jacob Pan <jacob.jun.pan@...ux.intel.com>
Cc: Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Zhang Rui <rui.zhang@...el.com>,
Thomas Gleixner <tglx@...utronix.de>,
Eduardo Valentin <edubezval@...il.com>,
Tejun Heo <tj@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/3] thermal/intel_powerclamp: Convert to CPU hotplug
state
On Fri 2016-11-11 10:33:30, Petr Mladek wrote:
> Then I tried to revert the conversion to the kthread worker
> API (2nd patch from this patchset), see below. And it still
> hangs during the suspend inside
>
> powerclamp_cpu_predown()
> kthread_stop(*percpu_thread);
>
>
> Note that both kthread_flush_worker() and kthread_stop()
> waits until the kthread gets scheduled and do some job.
> Also note that the kthread is bound to the given CPU.
>
> My guess is that the kthread cannot be scheduled at this stage.
> I wonder if the CPU is already partially down or that tasks
> are freezed so that "normal" tasks are not scheduled at
> this point. I am still trying to understand the code
> related to suspend, cpu hotplug, and scheduler.
And yes, the problem seems to be that the kthread is freezed
so that it could not run. The suspend works when I disable:
clamp_thread()
// set_freezable();
// try_to_freeze();
In fact, we should not need these calls. They are needed only
when we want to stop the kthread on exact location so that
it does not produce I/O that would block/break suspend.
But this is not the case of intel_powerclamp.
I am going to do some more tests and will send a fix. It should
be enough to remove the KTW_FREEZABLE flag from the
kthread_create_worker_on_cpu() call.
Best Regards,
Petr
Powered by blists - more mailing lists