On 7 August 2013 22:48, Jesse Gross <je...@nicira.com> wrote: > It's not a particularly good starting point because all it was make it > compile on these kernels. It didn't actually make anything > preemptable.
I am back after some study of RT Kernel.. :) So, I had a look at OVS out-of-kernel module to get RT support in for it. I found these files where there can be some issues on RT kernel: - datapath/datapath.c - datapath/vport.c - datapath/linux/compat/workqueue.c Mostly the calls they are using that doesn't fit well with RT are: - spin_lock_irq{save}() - local_bh_disable() - spin_lock_bh() If I have understood requirements of a RT kernel well, then this is what I concluded out of it.. 1- spin_lock_irq{save}() These are simply converted to spin_lock() in RT and so access to critical sections is guaranteed to be serialized.. And so nothing is required to be fixed for it.. 2- local_bh_disable() This is how it is implemented: +void local_bh_disable(void) +{ + migrate_disable(); + current->softirq_nestcnt++; +} +EXPORT_SYMBOL(local_bh_disable); And here is the problem: Code currently using local_bh_disable() isn't guaranteed to be serialized and we better use spin_lock_bh() for them.. 3- spin_lock_bh() It guarantees code to be serialized and hence shouldn't be a problem.. What do you guys say? Anything else required to make OVS RT compatible? -- viresh _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss