[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