[PATCH] PREEMPT_RT_FULL Build error fix

Subsystems: exec & binfmt api, elf, memory management - core, scheduler, the rest

STALE5480d

3 messages, 2 authors, 2011-09-06 · open the first message on its own page

[PATCH] PREEMPT_RT_FULL Build error fix

From: John Kacur <jkacur@redhat.com>
Date: 2011-08-26 12:07:44

Problem:
make O=/bld/3.0.3-rt11/ kernel/fork.o
/home/jkacur/jk-2.6/kernel/fork.c:91: error: section of ‘name’ conflicts with previous declaration

__cacheline_aligned is already part of the definition of DEFINE_RWLOCK
for -rt

However it is not always used for the tasklist_lock in non-rt, so it can't
simply be added to the definition of DEFINE_RWLOCK in non-rt, so I modified
the definition in fork.c

Signed-off-by: John Kacur
---
 kernel/fork.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/kernel/fork.c b/kernel/fork.c
index aa5fe26..0d264ec 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -87,7 +87,11 @@ int max_threads;		/* tunable limit on nr_threads */
 
 DEFINE_PER_CPU(unsigned long, process_counts) = 0;
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 __cacheline_aligned DEFINE_RWLOCK(tasklist_lock);  /* outer */
+#else
+DEFINE_RWLOCK(tasklist_lock);  /* outer */
+#endif
 
 #ifdef CONFIG_PROVE_RCU
 int lockdep_tasklist_lock_is_held(void)
-- 
1.7.2.3

Re: [PATCH] PREEMPT_RT_FULL Build error fix

From: Thomas Gleixner <hidden>
Date: 2011-09-01 19:14:47

On Fri, 26 Aug 2011, John Kacur wrote:
Problem:
make O=/bld/3.0.3-rt11/ kernel/fork.o
/home/jkacur/jk-2.6/kernel/fork.c:91: error: section of ‘name’ conflicts with previous declaration

__cacheline_aligned is already part of the definition of DEFINE_RWLOCK
for -rt

However it is not always used for the tasklist_lock in non-rt, so it can't
simply be added to the definition of DEFINE_RWLOCK in non-rt, so I modified
the definition in fork.c
-ENOPARSE

The real question is whether RWLOCKS should be cacheline aligned in
general or the RT addon is just overkill. Slapping an ifdef around
does not answer that.

Thanks,

	tglx

Re: [PATCH] PREEMPT_RT_FULL Build error fix

From: John Kacur <jkacur@redhat.com>
Date: 2011-09-06 09:25:50

On Thu, Sep 1, 2011 at 9:14 PM, Thomas Gleixner [off-list ref] wrote:
On Fri, 26 Aug 2011, John Kacur wrote:
quoted
Problem:
make O=/bld/3.0.3-rt11/ kernel/fork.o
/home/jkacur/jk-2.6/kernel/fork.c:91: error: section of ‘name’ conflicts with previous declaration

__cacheline_aligned is already part of the definition of DEFINE_RWLOCK
for -rt

However it is not always used for the tasklist_lock in non-rt, so it can't
simply be added to the definition of DEFINE_RWLOCK in non-rt, so I modified
the definition in fork.c
-ENOPARSE

The real question is whether RWLOCKS should be cacheline aligned in
general or the RT addon is just overkill. Slapping an ifdef around
does not answer that.
Right, this was just a "put out a build-break fire" for now patch and
not a good long term patch. I noticed that of all the mainline
DEFINE_RWLOCKs that only the tasklist_lock is cache aligned. I'm
wondering if there is a reason for that, or just more of a historical
accident.

Regarding cache aligning the rwlocks in -rt, I also can't find the
historical reason for it, do you remember if it was for latency
performance, or did we have a atomicity issue on some architectures
when we didn't cache align it?

Thanks
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help