All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: Benjamin ZORES <benjamin.zores@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] [PowerPC] Registers Corruption at Context Switch
Date: Wed, 18 Jun 2008 17:44:45 +0200	[thread overview]
Message-ID: <48592D6D.2010104@domain.hid> (raw)
In-Reply-To: <4859299A.2010802@domain.hid>

Benjamin ZORES wrote:
> Hi,
> 
> I'm facing a problem with the PowerPC version of Xenomai/Adeos that I 
> have difficulties
> to identify the exact source.
> 
> I'm running a Xenomai RT kernel thread that use to crash sometimes due 
> to potential register corruption.
> Problem occurs after a context switch and, in some cases, if the task 
> gets interrupted and reschedule,
> its registers values are not the same as they used to be before context 
> switch.
> 
> The code is a bit complex and so, makes use of register that is 
> generally rarely used (GPR r26 to be accurate).
> Driver is compiled with -02 and compiling with -O0 (so disabling 
> optimizations and so, not using r26) works fine
> but is not what I'm looking for.
> 
> Can someone tell me where exactly in Adeos/Xenomai is context switching 
> actually performed and where are the registers save/restore functions ? 
> I've seen there is specific code for FPU registers handling but can't 
> find the equivalent for GPR.
> 
> FYI, I'm running on PowerPC 603e core with Linux 2.6.23, Adeos 2.0-09 
> (latest) and Xenomai 2.3.4 (latest).
> I've seen there are adeos updates (but for updated kernels) but is there 
> some ChangeLog of Adeos changes ?
> Maybe this is a known bug that has been fixed in updated Adeos release ?
> 
> Thx to anyone who can help me on this,
> 

See arch/powerpc/switch_32.S, rthal_switch_threads(), for the part that does the
actual stack switching.

Note that this code is obfuscated by the fact that we have to handle so-called
"hybrid" switching, between Xenomai kernel threads (which do not rely on a
task_struct), and Linux tasks (Xenomai userland, Linux kthreads, or regular
userland Linux). Fortunately, what is saved on the stack in any case is easy to
find out.


> Ben
> 
> 
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
> 


-- 
Philippe.


  reply	other threads:[~2008-06-18 15:44 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-18 15:28 [Xenomai-core] [PowerPC] Registers Corruption at Context Switch Benjamin ZORES
2008-06-18 15:44 ` Philippe Gerum [this message]
2008-06-18 16:05   ` Benjamin ZORES
2008-06-20 14:42     ` Philippe Gerum
2008-06-19  8:46   ` Benjamin ZORES
2008-06-20 14:38     ` Philippe Gerum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48592D6D.2010104@domain.hid \
    --to=rpm@xenomai.org \
    --cc=benjamin.zores@domain.hid \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.