[ovs-dev] [ovs-discuss] OVS Support for RT Kernel

Viresh Kumar viresh.kumar at linaro.org
Tue Aug 27 08:37:31 UTC 2013


Hi Jesse,

Thanks for your quick reply :)

On 26 August 2013 22:16, Jesse Gross <jesse at nicira.com> wrote:

> Please look at the implementation of the loop counter.

Sorry but I couldn't find anything interesting/tricky in implementation
of loop counter.. :(

struct loop_counter {
    u8 count; /* Count. */
    bool looping; /* Loop detected? */
};

It used to be tricky the last time you tried to add RT support (there
were two separate counters for process/interrupt context), but its
pretty much straight forward now..

> The current
> method will yield non-deterministic results in the presence of
> preemption.

I see one problem: We may access these per-cpu variables
concurrently from process context and bh.. And so we need
something to guarantee the serialization here.. And then probably
we don't need to do: get_cpu_var() for non-RT case..

Do we have some existing lock that can be reused here? Otherwise
I will create a new one.. spinlock would be better then a mutex as we
would be accessing this code from BH too..

> Have you also audited the other use of per-CPU variables?

Yes, I did. But couldn't find anything that would be broken with RT..
Per-cpu doesn't have a problem with RT, only the access to those
can be a issue.. And if things are serialized enough, then there
shouldn't be any issue, I hope.

And this is the only place where I saw issues with serialization of code
for RT..

Thanks for your feedback/help.

--
viresh



More information about the dev mailing list