Hi Stefan,
We tried to further to debug call to call as you mentioned . And we find out that the call for *pic( ) in *kernel.cc is reaching to the Grand parent Arm_gic :: Pic constructor.
In constructor _distr ( distr_base), _cpu ( cpu_base) are getting initialized, which is working fine. And whenever functions of _distr and _cpu objects are being called, it's got stuck. like in the initialization part *_distr.max_interrupt( ) *is not working.
The same thing is working in Genode version 13.11 but not in 14.05.
Can you suggest some thing to debug this problem ??
Regards
Chirag Garg IIT Madras , Rise Lab
Hi Chirag,
On 07/25/2014 08:47 AM, chirag garg wrote:
Hi Stefan,
We tried to further to debug call to call as you mentioned . And we find out that the call for *pic( ) in *kernel.cc is reaching to the Grand parent Arm_gic :: Pic constructor.
In constructor _distr ( distr_base), _cpu ( cpu_base) are getting initialized, which is working fine. And whenever functions of _distr and _cpu objects are being called, it's got stuck. like in the initialization part *_distr.max_interrupt( ) *is not working.
The same thing is working in Genode version 13.11 but not in 14.05.
Can you suggest some thing to debug this problem ??
ok, I assume the root cause of your problem is that the I/O memory mapped registers of the PIC are not inserted into the page-tables of the kernel/core. All I/O memory regions used by the kernel/core have to be returned by the function "Platform::_core_only_mmio_regions" normally defined within the "platform_services.cc" file of your board. At least the PIC, Timer, and UART I/O memory mapped registers need to be listed there, so that the kernel initialization code adds them to its page-tables before turning the MMU on.
If the kernel raises a pagefault during its initialization, after taking the "data_lock()" in "init_kernel_multiprocessor", it will try to take that lock again when entering the kernel code again through the exception vector. Thereby it hangs in the already locked lock. The kernel, and core aren't allowed to page-fault at all.
Regards Stefan
Regards
Chirag Garg IIT Madras , Rise Lab
Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
On Fri, Jul 25, 2014 at 2:29 PM, Stefan Kalkowski < stefan.kalkowski@...1...> wrote:
Hi Chirag,
On 07/25/2014 08:47 AM, chirag garg wrote:
Hi Stefan,
We tried to further to debug call to call as you mentioned . And we find out that the call for *pic( ) in *kernel.cc is reaching to the Grand
parent
Arm_gic :: Pic constructor.
In constructor _distr ( distr_base), _cpu ( cpu_base) are getting initialized, which is working fine. And whenever functions of _distr and _cpu objects are being called, it's got stuck. like in the initialization part *_distr.max_interrupt( ) *is not working.
The same thing is working in Genode version 13.11 but not in 14.05.
Can you suggest some thing to debug this problem ??
ok, I assume the root cause of your problem is that the I/O memory mapped registers of the PIC are not inserted into the page-tables of the kernel/core. All I/O memory regions used by the kernel/core have to be returned by the function "Platform::_core_only_mmio_regions" normally defined within the "platform_services.cc" file of your board. At least the PIC, Timer, and UART I/O memory mapped registers need to be listed there, so that the kernel initialization code adds them to its page-tables before turning the MMU on.
If the kernel raises a pagefault during its initialization, after taking the "data_lock()" in "init_kernel_multiprocessor", it will try to take that lock again when entering the kernel code again through the exception vector. Thereby it hangs in the already locked lock. The kernel, and core aren't allowed to page-fault at all.
Regards Stefan
Thanks a lot Stefan.
We are able to Initialize the kernel. Now it is giving the same error as starting one for which you recommended the debug patch.
starting Kernel...
Genode 14.05
Kernel Initialized int main( ) : --- create local services--- PF in core thread ( core ) : ip=1003cc3c fault=1008 failed to communicate with thread event
Regards, Chirag
Regards
Chirag Garg IIT Madras , Rise Lab
Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main