Neo Freerunner PMU Status

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


-----BEGIN PGP SIGNED MESSAGE-----
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 2.6.22.5 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).
 	 */
	recalc_sigpending();
	if (signal_pending(current)) {
		spin_unlock(&current->sighand->siglock);
		write_unlock_irq(&tasklist_lock);
		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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFHrD7GOjLpvpq7dMoRAriOAJ9ewlYiuBUCM0wdYVamxbKvoCZoHACbB9aE
2LeZbRcmq+DRWGYaw11T+pM=
=2l+M
-----END PGP SIGNATURE-----




More information about the openmoko-kernel mailing list