hello world roottask fails to run

"bahadir balban" <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <[email protected]>
Hi,

I have an almost-booting hello world system using NICTA:Pistachio
hello-project--devel--1.1--patch-1 on an ARM system. The problem is
that Sigma0 runs but L4_Receive() (for page faults) never returns.
Because of that, the hello roottask's pages are never mapped upon a
page fault. The kernel does send a pagefault ipc for the roottask when
the first page is accessed, but the ipc is never concluded because
neither sigma0 nor the roottask is in "waiting" state, which seems to
be a requirement for the ipc to occur. The output is down below, but
note the following:

>From SYS_IPC():
dest not ready (roottask, is_wt=0)
dest not ready (sigma0, is_wt=0)

where is_wt=0 means "Not in waiting state". Also find_next_thread()
dequeues these processes from the runqueue because they're not
runnable but in POLLING state. From then on they never get their
states "runnable" or "waiting" and it's always the idle thread
running. Have you come across this problem or can guess why the ipc
does not occur with success? How should the polling state normally
change to either running or waiting?

Many thanks,
Bahadir


...
Switching to idle thread (CPU 0)
system has 64 interrupts
Initializing root servers
root-servers: utcb_area: cff00100 (64KB), kip_area: ff000000 (0KB)
Creating sigma0 (handle_pagefault: idle: kernel pagefault in space
f0018000 @ e00300a0, ip=f000ec38,
 type=0
00180001)
Created sigma 0 with success.
Set sigma0 pc to 530000
Set sigma0 sp to 0
creating root server (handle_pagefault: idle: kernel pagefault in
space f0018000 @ e00310a0, ip=f000
ec38, type=0
00188001)
Set roottask pc to 540000
Set roottask sp to 0
idle thread started on CPU 0
find_next_thread: Chosen to run: sigma0
schedule: Current: idle, Found: sigma0
switch_to: Switching to: sigma0
handle_pagefault: sigma0: user execute pagefault at 00530000, ip=00530000
handle_pagefault: Establishing a mapping in sigma0's space.
handle_pagefault: sigma0: user execute pagefault at 005314ac, ip=005314ac
handle_pagefault: Establishing a mapping in sigma0's space.
handle_pagefault: sigma0: user read pagefault at 0053bb74, ip=005314b0
handle_pagefault: Establishing a mapping in sigma0's space.
handle_pagefault: sigma0: user read pagefault at 005338bc, ip=005318f8
handle_pagefault: Establishing a mapping in sigma0's space.
handle_pagefault: sigma0: user execute pagefault at 00532af8, ip=00532af8
handle_pagefault: Establishing a mapping in sigma0's space.
This is sigma0 printing...
Sigma0 pagefault server has started...
sigma0_server: Only talking to tid: 0x8001 (roottask?)
L4_Receiving()...
SYS_IPC: current: sigma0, to_tid: roottask, from_tid: roottask, tag:
0xffb0c005 (label=0xffb0, SRap,
 u=5, t=0)
send phase curr=sigma0, to=roottask
dest not ready (roottask, is_wt=0)
find_next_thread: Dequeuing sigma0 in state: POLLING
find_next_thread: Chosen to run: roottask
switch_to: Switching to: roottask
handle_pagefault: roottask: user execute pagefault at 00540000, ip=00540000
handle_pagefault: Sending pagefault ipc.
SYS_IPC: current: roottask, to_tid: sigma0, from_tid: sigma0, tag:
0xffe1c002 (label=0xffe1, SRap, u
=2, t=0)
send phase curr=roottask, to=sigma0
dest not ready (sigma0, is_wt=0)
find_next_thread: Dequeuing roottask in state: POLLING
switch_to: Switching to: idle
schedule: Current: idle, Found: idle
schedule: Current: idle, Found: idle
schedule: Current: idle, Found: idle
schedule: Current: idle, Found: idle
...
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.