Hi all,
you have a race condition in oklinux/contrib/arch/l4/kernel/sys_genode.c resp. oklx_genode.patch lines 1894..1905
#ifdef CONFIG_FB_GENODE + if(genode_input_initialized()) + { + /* Put the input events into our framebuffer driver */ + num = genode_input_flush(); + for(i=0;i<num;i++) { + genode_input_event(i, genode_fb_mouse_event, genode_fb_key_event); + } + } +#endif //CONFIG_FB_GENODE + + genode_lock(timer_main_kernel_lock);
which shows up under heavy load (freezing Xfbdev, raising some BUG()s or a pagefault in update_stats_wait_end).
Moving the input polling into the critical section solved the problem here:
+ genode_lock(timer_main_kernel_lock); + #ifdef CONFIG_FB_GENODE + if(genode_input_initialized()) + { + /* Put the input events into our framebuffer driver */ + num = genode_input_flush(); + for(i=0;i<num;i++) { + genode_input_event(i, genode_fb_mouse_event, genode_fb_key_event); + } + } +#endif //CONFIG_FB_GENODE
Cheers
Sven -- Sven Fülster
Hello Sven,
thank you very much for your bug report and proposed solution, I will soon investigate and integrate it in our next release.
regards Stefan
On Wednesday, 17. February 2010 10:03:20 Sven Fülster wrote:
Hi all,
you have a race condition in oklinux/contrib/arch/l4/kernel/sys_genode.c resp. oklx_genode.patch lines 1894..1905
#ifdef CONFIG_FB_GENODE
if(genode_input_initialized())
{
/* Put the input events into our framebuffer driver */
num = genode_input_flush();
for(i=0;i<num;i++) {
genode_input_event(i, genode_fb_mouse_event,
genode_fb_key_event);
}
}
+#endif //CONFIG_FB_GENODE
genode_lock(timer_main_kernel_lock);
which shows up under heavy load (freezing Xfbdev, raising some BUG()s or a pagefault in update_stats_wait_end).
Moving the input polling into the critical section solved the problem here:
genode_lock(timer_main_kernel_lock);
#ifdef CONFIG_FB_GENODE
if(genode_input_initialized())
{
/* Put the input events into our framebuffer driver */
num = genode_input_flush();
for(i=0;i<num;i++) {
genode_input_event(i, genode_fb_mouse_event,
genode_fb_key_event);
}
}
+#endif //CONFIG_FB_GENODE
Cheers
Sven
Sven Fülster
--- SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main