Hi!

I am currently trying to port IPIPE to a new architecture and have the 
following symptoms with my 
first testcase:

- I am using a 2.6.23 Kernel and mainly looked at blackfin and i386 when 
porting.
- I create a domain with priority IPIPE_ROOT_PRIO+100 in a kernel module
- The domain entry does only: for(;;) ipipe_suspend_domain();
- After registering the domain I get the message "I-pipe: Domain Module 
Testdomain registered." and 
after that the system hangs.

I traced the problem a bit and found out that

- ipipe_suspend_domain() always returns to the test domain with the highest 
priority.
- Within ipipe_suspend_domain() the function __ipipe_sync_stage() gets called 
for the root domain 
and calls __ipipe_run_isr for
  irq 1 (Linux Timer Tick)
  irq 2 (network - the whole thing runs from NFS)
  irq 32 (there are 32 hardware interrupts, the last one is irq 31, this must 
be a virtual irq)

I think the problem is that the IRQ threads do not get scheduled and so cannot 
handle the 
Interrupts, although they have been "kicked" by __ipipe_run_isr.

It would be very kind if you could help me with the following questions:

- Are some of my assumptions/ideas above completely wrong?
- Which part of the code should schedule the IRQ threads? (__ipipe_run_isr only 
"kicks" them afaik)
- Where should ipipe_suspend_domain() hand control over to another domain (i.e. 
schedule in the 
other domain because the higher priority domain has suspended itself)?
- Should I handle the Linux System timer differently from the other interrupts 
so that it is not 
subject to IRQ threading?

Best Regards,

Peter

-- 

Peter Schüller
Theobroma Systems Design und Consulting GmbH
Gutheil-Schoder-Gasse 17, A-1230 Vienna, Austria
Phone: +43 (1) 2369893-403, Fax: +43 (1) 2369893-9-403
http://www.theobroma-systems.com


_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to