All of lore.kernel.org
 help / color / mirror / Atom feed
* [Adeos-main] Stall bit setting in __ipipe_handle_exception
@ 2009-02-20 12:26 Jan Kiszka
  2009-02-20 12:33 ` Jan Kiszka
  2009-02-23 12:03 ` Philippe Gerum
  0 siblings, 2 replies; 5+ messages in thread
From: Jan Kiszka @ 2009-02-20 12:26 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: adeos-main

Hi Philippe,

as already indicated, I'm starting to understand the ipipe bug Roman
sees. It seems to melt down to the following path:

- exception raised over non-root domain (__rt_event_wait...)
- root domain is stalled on entry of __ipipe_handle_exception
- fault causing task is first relaxed, then scheduled away under Linux
- scheduled-in Linux task was interrupted in __ipipe_divert_exception,
  shortly before __fixup_if
- __fixup_if finds root domain stalled and propagates this to the
  register set of the interrupted context (user space task running on
  its first fpu instruction, having triggered device_not_available).
- return to user space task with irqs disable - bang!

Two ways to approach this:
1. Do we actually have to stall the root domain in
   __ipipe_handle_exception before ipipe_trap_notify? I don't see why we
   should be better off with doing this afterwards.
2. Avoid that __ipipe_divert_exception is interruptible and can pick up
   the stall flag from a different Linux task. But I don't know if there
   aren't more race windows like that.

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-02-23 12:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-20 12:26 [Adeos-main] Stall bit setting in __ipipe_handle_exception Jan Kiszka
2009-02-20 12:33 ` Jan Kiszka
2009-02-23 12:03 ` Philippe Gerum
2009-02-23 12:24   ` Jan Kiszka
2009-02-23 12:50     ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.