Neo Freerunner PMU Status

Andy Green andy at
Fri Feb 8 12:36:38 CET 2008

Hash: SHA1

Somebody in the thread at some point said:

>>  1) I cannot mount the rootfs if no battery is in (insane but totally
>> repeatable) - this is the failure to fork the GC --> unable to parse the
>> FS.  I will start looking at that code today to come at it from that
>> end.  How the GC fork action becomes a "battery inserted" detector I
>> will be very interested to discover -- if I can.
> Googling around I see this GTA01 user has the same error in his
> dmesg in a nonfatal form:

The failure comes from a signal waiting for the new process too early,
detected from this code in kernel/fork.c copy_process():

	 * Process group and session signals need to be delivered to just the
	 * parent before the fork or both the parent and the child after the
	 * fork. Restart if a signal comes in before we add the new process to
	 * it's process group.
	 * A fatal signal pending means that current will exit, so the new
	 * thread can't slip out of an OOM kill (or normal SIGKILL).
	if (signal_pending(current)) {
		retval = -ERESTARTNOINTR;  <========= 513
		goto bad_fork_free_pid;

Ha -- looks like the PCF50633 "LOWBAT" interrupt service tries always to
do kill_proc(1, SIGPWR, 1); when LOWBAT really means *NO*BAT -- it kills
the garbage collection fork stone dead when it tries to start instead
and finds that signal waiting there.  I guess the GTA01 PMU driver did
the same...

- -Andy
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora -


More information about the openmoko-kernel mailing list