Messages in this thread | | | Date | Wed, 14 Mar 2012 16:38:45 -0700 | From | Stephen Boyd <> | Subject | Re: [PATCH] firmware loader: don't cancel _nowait requests when helper is not yet available |
| |
On 03/14/12 16:34, Rafael J. Wysocki wrote: > On Thursday, March 15, 2012, Stephen Boyd wrote: >> On 03/14/12 16:13, Rafael J. Wysocki wrote: >>> On Thursday, March 15, 2012, Rafael J. Wysocki wrote: >>> >>>> Which is OK, I think. >>> Moreover, thaw_kernel_threads() is _only_ called by (a) freeze_kernel_threads() >>> on error and (b) user-space hibernate interface in kernel/power/user.c >>> (and please read the comment in there describing what it's there for, which >>> also explains why the schedule() call in there is necessary). >> Exactly. So in case (a) when the error occurs we'll have this call flow: >> >> usermodehelpers_disable() >> suspend_freeze_processes() >> freeze_processes() >> freeze_kernel_threads() >> try_to_freeze_tasks() <-- returns error >> thaw_kernel_threads() >> schedule() >> thaw_processes() >> usermodehelpers_enable() >> >> Shouldn't we schedule only after we thaw all processes (not just tasks)? >> Otherwise we may run a kernel thread before userspace is thawed? > Yes, we may, but that isn't wrong, is it? > > Only a few kernel threads are freezable, so definitely kernel threads > can run while user space is frozen. >
Yes but if someone calls request_firmware() from a kthread then they will hit the same problem where the thread runs and requests the firmware and usermodehelpers are still disabled. Currently my code is written with kthreads and that thread makes the request firmware call, so this doesn't seem far fetched (although in my case I can probably fix it). It looks like before 379e0be (PM / Freezer: Thaw only kernel threads if freezing of kernel threads fails, 2012-02-03) schedule wasn't called until userspace was thawed. It looks like that patch was about hibernation and not suspend?
-- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
| |