Re: [linux-pm] [2.6.30-rc1-git2 regressions] Hibernation broken and (minor but annoying) audio problem

Linus Torvalds
2009-04-10T19:21:43Z

On Fri, 10 Apr 2009, Rafael J. Wysocki wrote:
>
> I've just verified that the resume-after-hibernation issue goes away after
> reverting commit 9710794383ee5008d67f1a6613a4717bf6de47bc
> (async: remove the temporary (2.6.29) "async is off by default" code) , so it
> is async-related.

Arjan? Clearly all the necessary fixes weren't found..

There _is_ a module loading problem wrt initmem - I think you found that
and we added a hack for it for the ACPI battery driver. I wonder if we're
hitting a similar issue now with module discovery: modules that use
"async_schedule()" to do their discovery asynchronously are now not
necessarily fully "done" when the module is loaded.

And so, anything that expected the devices to be available after module
load (like they used to) would be screwed.

IOW, maybe something like the totally untested patch appended here (that
should also allow us to make the ACPI battery code to go back to using
__init).

As usual, I'm not using modules, so what do I know.

> The audio issue still remains after the revert, so it is really different.

Ok, probably something from Takashi..

Linus

---
kernel/module.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index 05f014e..e797812 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2388,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
blocking_notifier_call_chain(&module_notify_list,
MODULE_STATE_LIVE, mod);

+ /* We need to finish all async code before the module init sequence is done */
+ async_synchronize_full();
+
mutex_lock(&module_mutex);
/* Drop initial reference. */
module_put(mod);