Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-26 Thread Bharath Achuta Bhat
Hi Philippe,
Thank you for the suggestion. I will give it a try and let you know.

Regards
Bharath

On Wed, Aug 25, 2010 at 4:22 PM, Philippe Gerum r...@xenomai.org wrote:

 On Wed, 2010-08-25 at 12:06 +0200, Bharath Achuta Bhat wrote:
  Hi  Philippe,
  It is an mmap-ed I/O memory.

 This is a TLB miss which ends up in a heavyweight call to fill the linux
 page table entry. Try to pre-fault the I/O memory region if possible,
 reading some bytes within the same 4k page.

 
 
  Regards
  Bharath
 
  On Wed, Aug 25, 2010 at 11:53 AM, Philippe Gerum r...@xenomai.org
  wrote:
  On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
   Hello Xenomai experts,
  
  
   I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3)
  with ipipe
   version 2.7-06.
   The target is powerpc (MPC8533E).
   My application is switching to the secondary mode (I guess
  because of
   a page-fault) when ntohl() is called.
   This is a libc function and I am wondering why only this
  function
   (ntohl()) is causing a page-fault.
 
 
  What memory are you reading from / writing to in the statement
  involving
  ntohl()? Is this plain RAM, or mapped I/O memory?
 
  
  
   Here is how the application looks like
  
  
   main ()
   {
   ...
   ...
   /* Avoids memory swapping for this program */
   mlockall(MCL_CURRENT | MCL_FUTURE);
  
  
   ..
   ..
   /* signal handlers */
   .
   .
   /* create communication pipes */
   rt_pipe_create(tPipe1, .
   rt_pipe_create(tPipe2,...
  
  
   /* create RT tasks */
   rt_task_create(tTask1,.
   rt_task_create(tTask2,..
   ...
   ..
  
  
   /* start the RT tasks */
   rt_task_start(tTask1,.
   ..
   ..
  
  
   /* turn the current thread into RT function */
   ret = rt_task_shadow(NULL, RT main function, 1, T_SUSP);
  
  
   
   
  
  
   }
  
  
   One of the rt tasks created calls ntohl() and switches to
  secondary
   mode.
   Is there a way to avoid it ?
  
  
   --
   Thanks and regards
   Bharath
  
 
   ___
   Xenomai-help mailing list
   Xenomai-help@gna.org
   https://mail.gna.org/listinfo/xenomai-help
 
  --
  Philippe.
 
 
 
 
 
  --
  Thanks and regards
  Bharath
 

 --
 Philippe.





-- 
Thanks and regards
Bharath
___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help


Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-25 Thread Gilles Chanteperdrix
Bharath Achuta Bhat wrote:
 Hello Xenomai experts,
 
 I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3) with ipipe
 version 2.7-06.
 The target is powerpc (MPC8533E).
 My application is switching to the secondary mode (I guess because of a
 page-fault) when ntohl() is called.
 This is a libc function and I am wondering why only this function (ntohl())
 is causing a page-fault.

Before anything, could you try xenomai 2.5.3 ?

-- 
Gilles.

___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help


Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-25 Thread Philippe Gerum
On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
 Hello Xenomai experts,
 
 
 I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3) with ipipe
 version 2.7-06.
 The target is powerpc (MPC8533E).
 My application is switching to the secondary mode (I guess because of
 a page-fault) when ntohl() is called.
 This is a libc function and I am wondering why only this function
 (ntohl()) is causing a page-fault.

What memory are you reading from / writing to in the statement involving
ntohl()? Is this plain RAM, or mapped I/O memory?

 
 
 Here is how the application looks like
 
 
 main ()
 {
 ...
 ...
 /* Avoids memory swapping for this program */
 mlockall(MCL_CURRENT | MCL_FUTURE);
 
 
 ..
 ..
 /* signal handlers */
 .
 .
 /* create communication pipes */
 rt_pipe_create(tPipe1, .
 rt_pipe_create(tPipe2,...
 
 
 /* create RT tasks */
 rt_task_create(tTask1,.
 rt_task_create(tTask2,..
 ...
 ..
 
 
 /* start the RT tasks */
 rt_task_start(tTask1,.
 ..
 ..
 
 
 /* turn the current thread into RT function */
 ret = rt_task_shadow(NULL, RT main function, 1, T_SUSP);
 
 
 
 
 
 
 }
 
 
 One of the rt tasks created calls ntohl() and switches to secondary
 mode.
 Is there a way to avoid it ? 
 
 
 -- 
 Thanks and regards
 Bharath
 
 ___
 Xenomai-help mailing list
 Xenomai-help@gna.org
 https://mail.gna.org/listinfo/xenomai-help

-- 
Philippe.



___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help


Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-25 Thread Gilles Chanteperdrix
Philippe Gerum wrote:
 On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
 Hello Xenomai experts,


 I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3) with ipipe
 version 2.7-06.
 The target is powerpc (MPC8533E).
 My application is switching to the secondary mode (I guess because of
 a page-fault) when ntohl() is called.
 This is a libc function and I am wondering why only this function
 (ntohl()) is causing a page-fault.
 
 What memory are you reading from / writing to in the statement involving
 ntohl()? Is this plain RAM, or mapped I/O memory?

And if it is plain RAM, is it correctly aligned?

-- 
Gilles.

___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help


Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-25 Thread Bharath Achuta Bhat
Hi  Philippe,
It is an mmap-ed I/O memory.

Regards
Bharath

On Wed, Aug 25, 2010 at 11:53 AM, Philippe Gerum r...@xenomai.org wrote:

 On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
  Hello Xenomai experts,
 
 
  I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3) with ipipe
  version 2.7-06.
  The target is powerpc (MPC8533E).
  My application is switching to the secondary mode (I guess because of
  a page-fault) when ntohl() is called.
  This is a libc function and I am wondering why only this function
  (ntohl()) is causing a page-fault.

 What memory are you reading from / writing to in the statement involving
 ntohl()? Is this plain RAM, or mapped I/O memory?

 
 
  Here is how the application looks like
 
 
  main ()
  {
  ...
  ...
  /* Avoids memory swapping for this program */
  mlockall(MCL_CURRENT | MCL_FUTURE);
 
 
  ..
  ..
  /* signal handlers */
  .
  .
  /* create communication pipes */
  rt_pipe_create(tPipe1, .
  rt_pipe_create(tPipe2,...
 
 
  /* create RT tasks */
  rt_task_create(tTask1,.
  rt_task_create(tTask2,..
  ...
  ..
 
 
  /* start the RT tasks */
  rt_task_start(tTask1,.
  ..
  ..
 
 
  /* turn the current thread into RT function */
  ret = rt_task_shadow(NULL, RT main function, 1, T_SUSP);
 
 
  
  
 
 
  }
 
 
  One of the rt tasks created calls ntohl() and switches to secondary
  mode.
  Is there a way to avoid it ?
 
 
  --
  Thanks and regards
  Bharath
 
  ___
  Xenomai-help mailing list
  Xenomai-help@gna.org
  https://mail.gna.org/listinfo/xenomai-help

 --
 Philippe.





-- 
Thanks and regards
Bharath
___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help


Re: [Xenomai-help] Page-fault, switch to secondary mode

2010-08-25 Thread Philippe Gerum
On Wed, 2010-08-25 at 12:06 +0200, Bharath Achuta Bhat wrote:
 Hi  Philippe,
 It is an mmap-ed I/O memory.

This is a TLB miss which ends up in a heavyweight call to fill the linux
page table entry. Try to pre-fault the I/O memory region if possible,
reading some bytes within the same 4k page.

 
 
 Regards
 Bharath
 
 On Wed, Aug 25, 2010 at 11:53 AM, Philippe Gerum r...@xenomai.org
 wrote:
 On Wed, 2010-08-25 at 11:12 +0200, Bharath Achuta Bhat wrote:
  Hello Xenomai experts,
 
 
  I am running a xenomai-2.5.1 patched kernel (v 2.6.30.3)
 with ipipe
  version 2.7-06.
  The target is powerpc (MPC8533E).
  My application is switching to the secondary mode (I guess
 because of
  a page-fault) when ntohl() is called.
  This is a libc function and I am wondering why only this
 function
  (ntohl()) is causing a page-fault.
 
 
 What memory are you reading from / writing to in the statement
 involving
 ntohl()? Is this plain RAM, or mapped I/O memory?
 
 
 
  Here is how the application looks like
 
 
  main ()
  {
  ...
  ...
  /* Avoids memory swapping for this program */
  mlockall(MCL_CURRENT | MCL_FUTURE);
 
 
  ..
  ..
  /* signal handlers */
  .
  .
  /* create communication pipes */
  rt_pipe_create(tPipe1, .
  rt_pipe_create(tPipe2,...
 
 
  /* create RT tasks */
  rt_task_create(tTask1,.
  rt_task_create(tTask2,..
  ...
  ..
 
 
  /* start the RT tasks */
  rt_task_start(tTask1,.
  ..
  ..
 
 
  /* turn the current thread into RT function */
  ret = rt_task_shadow(NULL, RT main function, 1, T_SUSP);
 
 
  
  
 
 
  }
 
 
  One of the rt tasks created calls ntohl() and switches to
 secondary
  mode.
  Is there a way to avoid it ?
 
 
  --
  Thanks and regards
  Bharath
 
 
  ___
  Xenomai-help mailing list
  Xenomai-help@gna.org
  https://mail.gna.org/listinfo/xenomai-help
 
 --
 Philippe.
 
 
 
 
 
 -- 
 Thanks and regards
 Bharath
 

-- 
Philippe.



___
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help