diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2013-09-19 19:48:39 +0530 |
---|---|---|
committer | Gary S. Robertson <gary.robertson@linaro.org> | 2013-10-24 09:37:02 -0500 |
commit | 5946d4b5ea5a009c712036a6ebcd540f40dd2cc4 (patch) | |
tree | c3addf79843084704692ca86ad7ed765e911460b /AUTHORS | |
parent | 04cf4fc0d4a70bf75ac646f18c654cf019e96ef4 (diff) |
I found these files where there can be some issues on RT kernel:
- datapath/datapath.c
- datapath/vport.c
- datapath/linux/compat/workqueue.c
Important calls here are (that doesn't fit well with RT are):
- spin_lock_irq{save}()
- spin_lock_bh()
- local_bh_disable()
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- spin_lock_bh()
It guarantees code to be serialized and hence shouldn't be a problem..
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 so that is required to be fixed.
A simple solution would be to add a spin_lock_bh() for this case which will make
it work (efficiently) for both RT and non-RT cases.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'AUTHORS')
0 files changed, 0 insertions, 0 deletions