Hi NormanI've been testing the USB driver in the RaspberryPI assigning priorities to each processes, but continue losing events. I have also tried changing the top value of cnt, but still the same result. I will continue doing some independent tests of the driver, mouse, keyboard and network independently.
If you have any other suggestions?
Best regards
Hi Reinier,I have checked the kernel warning about USB's irq, using base_hw and base_foc, and have noted (per 8000 need_trigger_sof calls): (base_hw) - kicked 5, filtered aproximatelly 7600 and triggered aproximatelly 250 IRQs (base_foc) - kicked 3, filtered aproximatelly 7700 and triggered aproximatelly 140 IRQs There is a big difference in the triggered and filtered irqs. Any idea or suggestion??SOF interrupts are filtered unless the USB driver explicitly calls 'schedule_sof_interrupt' and thereby propagates the next frame-to-deliver via the GUID scratch register to the kernel. If, for some reason, the USB driver is not scheduled timely enough, it might miss the scheduling of a frame. This can happen if the USB driver runs concurrently with another program that consumes a lot of CPU time. In such a scenario, the scheduling of the USB driver depends on the scheduler of the kernel. Since Fiasco.OC has a different scheduler than base-hw, the effect ultimately depends on the kernel. One way to work around it is to run the USB driver at a high priority. I.e., by assigning a priority of "-1" to all components except for the USB and timer drivers. For an example of how to use priorities in Genode, please have a look at the gems/run/wm.run script. Look out for the 'prio_levels' and 'priority' attributes. Note that this is just a guess. If the effect also occurs when not running a CPU hungry program besides the USB driver, the guess is most likely wrong.I don't understand the use of cnt variable (need_trigger_sof). Why use 160 as counter top??This mechanism ensures that an interrupt is delivered every now and then - even if the USB driver has not scheduled a frame. There are 8000 IRQs coming in per second. With the value of 160, an interrupt is forwarded to the USB driver every 20 milliseconds, which appeared to me as a low-enough rate to have a negligible effect on the system's performance.I'm waiting fix this problem to upload the patch to GitHub. I have tested the USB driver using two versions of Fiasco.OC, the default Fiasco.OC version (https://github.com/ssumpf/foc.git) and a more recently version (https://github.com/skalk/foc.git), but have the same problem. Furthermore I have tested succesfully the support of Genode with Fiasco.OC as microkernel for RaspberryPI using the autopilot tests: (util_mmio,ldso,timer,lwip,rm_fault,rom_blk,tar_rom,noux,libc_ffat,libc_vfs,timed_semaphore,signal,sub_rm,python,thread_join,failsafe,noux_tool_chain_auto, seoul-auto,resource_request,xml_generator,blk_cache,rump_ext2,thread,pthread, netperf_lwip, netperf_lwip_usb30, netperf_lwip_bridge, netperf_lxip, netperf_lxip_usb30, netperf_lxip_bridge) Now I'm trying to test l4linux and other more complex examples.
-- Lic. Reinier Millo Sánchez Centro de Estudios de Informática Universidad Central "Marta Abreu" de Las Villas Carretera a Camajuaní Km 5 1/2 Santa Clara, Villa Clara, Cuba CP 54830 "antes de discutir ... respira; antes de hablar ... escucha; antes de escribir ... piensa; antes de herir ... siente; antes de rendirte ... intenta; antes de morir ... vive"
<<attachment: rmillo.vcf>>
------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main