[ovs-dev] [ovs-discuss] OVS Support for RT Kernel
Viresh Kumar
viresh.kumar at linaro.org
Thu Aug 22 10:29:13 UTC 2013
On 7 August 2013 22:48, Jesse Gross <jesse at 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
More information about the dev
mailing list