Hi, I am running Linux on my embedded board that is crunched on RAM. When the task #0 (kswapd) tries to do a kernel_thread() to start the init task (task #1) I am facing a strange problem. It calls alloc_pages() in which it checks if it is low on memory; if so it sets its policy flag to SCHED_YIELD so that it can call kswapd task to free some memory. Since there is no other task to return, it returns immediately and in do_fork() copies its policy flag SCHED_YIELD to init task policy with the result that task#1 has its policy set to SCHED_YIELD. Now the kernel cannot run init task and hence sits in a tight loop. My questions are: (i) Has linux kernel been tested on a low memory board where this problem could have occurred? (ii) When a parent task has its policy set to SCHED_YIELD and it does a do_fork() why does the child inherit this policy? It is like the parent is giving birth to a dead baby; shouldn't do_fork() check for parent's policy before doing a blind copy. Any help would be appreciated. Thanks Koo -- If you were to die tonight, where would you spend eternity? -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ IRC Channel: irc.openprojects.net / #kernelnewbies Web Page: http://www.kernelnewbies.org/