v2.6.22.1-rt5

13 messages, 6 authors, 2007-07-25 · open the first message on its own page

v2.6.22.1-rt5

From: Ingo Molnar <hidden>
Date: 2007-07-23 21:02:52

we are pleased to announce the v2.6.22.1-rt5 kernel (collected and 
assembled by Thomas), which can be downloaded from the usual place:
  
  http://redhat.com/~mingo/realtime-preempt/
  
more info about the -rt patchset can be found in the RT wiki:
   
  http://rt.wiki.kernel.org

Changes since -rt4:

 - MM fix: PCP pages locking (Peter Zijlstra)

 - yield() fix: remove stale RCU-unlock (Daniel Walker)

 - dont do check_pgt_cache() in idle (found by Daniel Walker)

 - moved 8 patches, created 6 new patches out of larger patches to 
   make the -rt queue more bisectable (Daniel Walker)

 - cleanup (Daniel Walker)

 - fix the latency tracer under paravirt

to build a 2.6.22.1-rt5 tree, the following patches should be applied:
  
  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
  http://redhat.com/~mingo/realtime-preempt/patch-2.6.22.1-rt5
  
	Ingo

Re: v2.6.22.1-rt5

From: Rui Nuno Capela <hidden>
Date: 2007-07-23 21:29:27

Ingo Molnar wrote:
we are pleased to announce the v2.6.22.1-rt5 kernel (collected and 
assembled by Thomas), which can be downloaded from the usual place:
  
  http://redhat.com/~mingo/realtime-preempt/
  
more info about the -rt patchset can be found in the RT wiki:
   
  http://rt.wiki.kernel.org

Changes since -rt4:

 - MM fix: PCP pages locking (Peter Zijlstra)

 - yield() fix: remove stale RCU-unlock (Daniel Walker)

 - dont do check_pgt_cache() in idle (found by Daniel Walker)

 - moved 8 patches, created 6 new patches out of larger patches to 
   make the -rt queue more bisectable (Daniel Walker)

 - cleanup (Daniel Walker)

 - fix the latency tracer under paravirt

to build a 2.6.22.1-rt5 tree, the following patches should be applied:
  
  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
  http://redhat.com/~mingo/realtime-preempt/patch-2.6.22.1-rt5
  
	Ingo
-
Maybe I was too quick, but `make all` on is failing here:

...
In file included from arch/i386/mm/pgtable.c:16:
include/linux/quicklist.h: In function ‘quicklist_alloc’:
include/linux/quicklist.h:50: warning: unused variable ‘q’
include/linux/quicklist.h: In function ‘__quicklist_free’:
include/linux/quicklist.h:79: error: ‘per_cpu__quicklist’ undeclared
(first use in this function)
include/linux/quicklist.h:79: error: (Each undeclared identifier is
reported only once
include/linux/quicklist.h:79: error: for each function it appears in.)
include/linux/quicklist.h:79: warning: type defaults to ‘int’ in
declaration of ‘type name’
include/linux/quicklist.h:79: error: invalid type argument of ‘unary *’
make[1]: *** [arch/i386/mm/pgtable.o] Error 1
make: *** [arch/i386/mm] Error 2
...

.config is from previous -rt4:
http://www.rncbc.org/datahub/config-2.6.22.1-rt4.0

Bye now.
-- 
rncbc aka Rui Nuno Capela
rncbc@rncbc.org

Re: v2.6.22.1-rt5

From: Daniel Walker <hidden>
Date: 2007-07-23 21:42:19

On Mon, 2007-07-23 at 22:29 +0100, Rui Nuno Capela wrote:
Ingo Molnar wrote:
quoted
we are pleased to announce the v2.6.22.1-rt5 kernel (collected and 
assembled by Thomas), which can be downloaded from the usual place:
  
  http://redhat.com/~mingo/realtime-preempt/
  
more info about the -rt patchset can be found in the RT wiki:
   
  http://rt.wiki.kernel.org

Changes since -rt4:

 - MM fix: PCP pages locking (Peter Zijlstra)

 - yield() fix: remove stale RCU-unlock (Daniel Walker)

 - dont do check_pgt_cache() in idle (found by Daniel Walker)

 - moved 8 patches, created 6 new patches out of larger patches to 
   make the -rt queue more bisectable (Daniel Walker)

 - cleanup (Daniel Walker)

 - fix the latency tracer under paravirt

to build a 2.6.22.1-rt5 tree, the following patches should be applied:
  
  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
  http://redhat.com/~mingo/realtime-preempt/patch-2.6.22.1-rt5
  
	Ingo
-
Maybe I was too quick, but `make all` on is failing here:

...
In file included from arch/i386/mm/pgtable.c:16:
include/linux/quicklist.h: In function ‘quicklist_alloc’:
include/linux/quicklist.h:50: warning: unused variable ‘q’
include/linux/quicklist.h: In function ‘__quicklist_free’:
include/linux/quicklist.h:79: error: ‘per_cpu__quicklist’ undeclared
(first use in this function)
include/linux/quicklist.h:79: error: (Each undeclared identifier is
reported only once
include/linux/quicklist.h:79: error: for each function it appears in.)
include/linux/quicklist.h:79: warning: type defaults to ‘int’ in
declaration of ‘type name’
include/linux/quicklist.h:79: error: invalid type argument of ‘unary *’
make[1]: *** [arch/i386/mm/pgtable.o] Error 1
make: *** [arch/i386/mm] Error 2
Yeah, the quicklist patch wasn't fully tested .. The delta patch below
is what I had to change to get it working ..

Signed-Off-By: Daniel Walker <redacted>

diff -u linux-2.6/include/linux/quicklist.h linux-2.6.22.1/include/linux/quicklist.h
--- linux-2.6/include/linux/quicklist.h
+++ linux-2.6.22.1/include/linux/quicklist.h
@@ -47,7 +47,6 @@
 
 static inline void *quicklist_alloc(int nr, gfp_t flags, void (*ctor)(void *))
 {
-	struct quicklist *q;
 	void **p = NULL;
 	int cpu;
 
@@ -66,6 +65,7 @@
 static inline void __quicklist_free(int nr, void (*dtor)(void *), void *p,
 	struct page *page)
 {
+	int cpu;
 	struct quicklist *q;
 	int nid = page_to_nid(page);
 
@@ -76,11 +76,11 @@
 		return;
 	}
 
-	q = &get_cpu_var(quicklist)[nr];
+	q = &get_cpu_var_locked(quicklist, &cpu)[nr];
 	*(void **)p = q->page;
 	q->page = p;
 	q->nr_pages++;
-	put_cpu_var(quicklist);
+	put_cpu_var_locked(quicklist, cpu);
 }
 
 static inline void quicklist_free(int nr, void (*dtor)(void *), void *pp)
diff -u linux-2.6/mm/quicklist.c linux-2.6.22.1/mm/quicklist.c
--- linux-2.6/mm/quicklist.c
+++ linux-2.6.22.1/mm/quicklist.c
@@ -80,7 +80,7 @@
 	struct quicklist *ql, *q;
 
 	for_each_online_cpu(cpu) {
-		ql = per_cpu(quicklist, cpu);
+		ql = per_cpu_var_locked(quicklist, cpu);
 		for (q = ql; q < ql + CONFIG_NR_QUICK; q++)
 			count += q->nr_pages;
 	}

Re: v2.6.22.1-rt5

From: Thomas Gleixner <hidden>
Date: 2007-07-23 22:05:30

On Mon, 2007-07-23 at 14:30 -0700, Daniel Walker wrote:
Yeah, the quicklist patch wasn't fully tested .. The delta patch below
is what I had to change to get it working ..
My bad. I pushed the wrong queue to Ingo.

-ENOTENOUGHSLEEP

This is the delta. We'll do a -rt6 tomorrow morning.

	tglx

Index: linux-2.6.22/arch/i386/kernel/hpet.c
===================================================================
--- linux-2.6.22.orig/arch/i386/kernel/hpet.c	2007-07-24 00:02:12.000000000 +0200
+++ linux-2.6.22/arch/i386/kernel/hpet.c	2007-07-24 00:05:05.000000000 +0200
@@ -9,7 +9,6 @@
 #include <linux/pm.h>
 
 #include <asm/fixmap.h>
-#include <asm/i8253.h>
 #include <asm/hpet.h>
 #include <asm/i8253.h>
 #include <asm/io.h>
Index: linux-2.6.22/arch/i386/kernel/process.c
===================================================================
--- linux-2.6.22.orig/arch/i386/kernel/process.c	2007-07-24 00:02:10.000000000 +0200
+++ linux-2.6.22/arch/i386/kernel/process.c	2007-07-24 00:05:08.000000000 +0200
@@ -189,7 +189,6 @@ void cpu_idle(void)
 
 			tick_nohz_stop_sched_tick();
 
-			check_pgt_cache();
 			rmb();
 			idle = pm_idle;
 
Index: linux-2.6.22/include/asm-generic/bug.h
===================================================================
--- linux-2.6.22.orig/include/asm-generic/bug.h	2007-07-24 00:02:11.000000000 +0200
+++ linux-2.6.22/include/asm-generic/bug.h	2007-07-24 00:05:07.000000000 +0200
@@ -92,16 +92,4 @@ struct bug_entry {
 # define WARN_ON_NONRT(condition)	WARN_ON(condition)
 #endif
 
-#ifdef CONFIG_PREEMPT_RT
-# define BUG_ON_RT(c)			BUG_ON(c)
-# define BUG_ON_NONRT(c)		do { } while (0)
-# define WARN_ON_RT(condition)		WARN_ON(condition)
-# define WARN_ON_NONRT(condition)	do { } while (0)
-#else
-# define BUG_ON_RT(c)			do { } while (0)
-# define BUG_ON_NONRT(c)		BUG_ON(c)
-# define WARN_ON_RT(condition)		do { } while (0)
-# define WARN_ON_NONRT(condition)	WARN_ON(condition)
-#endif
-
 #endif
Index: linux-2.6.22/kernel/sched.c
===================================================================
--- linux-2.6.22.orig/kernel/sched.c	2007-07-24 00:02:12.000000000 +0200
+++ linux-2.6.22/kernel/sched.c	2007-07-24 00:05:36.000000000 +0200
@@ -4924,7 +4924,6 @@ asmlinkage long sys_sched_yield(void)
 	 * no need to preempt or enable interrupts:
 	 */
 	spin_unlock_no_resched(&rq->lock);
-	rcu_read_unlock();
 
 	__schedule();
 
Index: linux-2.6.22/kernel/softirq.c
===================================================================
--- linux-2.6.22.orig/kernel/softirq.c	2007-07-24 00:02:11.000000000 +0200
+++ linux-2.6.22/kernel/softirq.c	2007-07-24 00:05:08.000000000 +0200
@@ -102,7 +102,6 @@ static void wakeup_softirqd(int softirq)
 
 	if (unlikely(!tsk))
 		return;
-#if 1
 #if defined(CONFIG_PREEMPT_SOFTIRQS) && defined(CONFIG_PREEMPT_HARDIRQS)
 	/*
 	 * Optimization: if we are in a hardirq thread context, and
@@ -117,7 +116,6 @@ static void wakeup_softirqd(int softirq)
 			(tsk->normal_prio == current->normal_prio))
 		return;
 #endif
-#endif
 	/*
 	 * Wake up the softirq task:
 	 */
Index: linux-2.6.22/include/linux/quicklist.h
===================================================================
--- linux-2.6.22.orig/include/linux/quicklist.h	2007-07-24 00:02:00.000000000 +0200
+++ linux-2.6.22/include/linux/quicklist.h	2007-07-24 00:05:08.000000000 +0200
@@ -18,7 +18,7 @@ struct quicklist {
 	int nr_pages;
 };
 
-DECLARE_PER_CPU(struct quicklist, quicklist)[CONFIG_NR_QUICK];
+DECLARE_PER_CPU_LOCKED(struct quicklist, quicklist)[CONFIG_NR_QUICK];
 
 /*
  * The two key functions quicklist_alloc and quicklist_free are inline so
@@ -30,19 +30,30 @@ DECLARE_PER_CPU(struct quicklist, quickl
  * The fast patch in quicklist_alloc touched only a per cpu cacheline and
  * the first cacheline of the page itself. There is minmal overhead involved.
  */
-static inline void *quicklist_alloc(int nr, gfp_t flags, void (*ctor)(void *))
+static inline void *__quicklist_alloc(int cpu, int nr, gfp_t flags, void (*ctor)(void *))
 {
 	struct quicklist *q;
 	void **p = NULL;
 
-	q =&get_cpu_var(quicklist)[nr];
+	q = &__get_cpu_var_locked(quicklist, cpu)[nr];
 	p = q->page;
 	if (likely(p)) {
 		q->page = p[0];
 		p[0] = NULL;
 		q->nr_pages--;
 	}
-	put_cpu_var(quicklist);
+	return p;
+}
+
+static inline void *quicklist_alloc(int nr, gfp_t flags, void (*ctor)(void *))
+{
+	struct quicklist *q;
+	void **p = NULL;
+	int cpu;
+
+	(void)get_cpu_var_locked(quicklist, &cpu)[nr];
+	p = __quicklist_alloc(cpu, nr, flags, ctor);
+	put_cpu_var_locked(quicklist, cpu);
 	if (likely(p))
 		return p;
 
Index: linux-2.6.22/mm/quicklist.c
===================================================================
--- linux-2.6.22.orig/mm/quicklist.c	2007-07-24 00:02:00.000000000 +0200
+++ linux-2.6.22/mm/quicklist.c	2007-07-24 00:05:08.000000000 +0200
@@ -19,7 +19,7 @@
 #include <linux/module.h>
 #include <linux/quicklist.h>
 
-DEFINE_PER_CPU(struct quicklist, quicklist)[CONFIG_NR_QUICK];
+DEFINE_PER_CPU_LOCKED(struct quicklist, quicklist)[CONFIG_NR_QUICK];
 
 #define FRACTION_OF_NODE_MEM	16
 
@@ -51,8 +51,9 @@ void quicklist_trim(int nr, void (*dtor)
 {
 	long pages_to_free;
 	struct quicklist *q;
+	int cpu;
 
-	q = &get_cpu_var(quicklist)[nr];
+	q = &get_cpu_var_locked(quicklist, &cpu)[nr];
 	if (q->nr_pages > min_pages) {
 		pages_to_free = min_pages_to_free(q, min_pages, max_free);
 
@@ -61,7 +62,7 @@ void quicklist_trim(int nr, void (*dtor)
 			 * We pass a gfp_t of 0 to quicklist_alloc here
 			 * because we will never call into the page allocator.
 			 */
-			void *p = quicklist_alloc(nr, 0, NULL);
+			void *p = __quicklist_alloc(cpu, nr, 0, NULL);
 
 			if (dtor)
 				dtor(p);
@@ -69,7 +70,7 @@ void quicklist_trim(int nr, void (*dtor)
 			pages_to_free--;
 		}
 	}
-	put_cpu_var(quicklist);
+	put_cpu_var_locked(quicklist, cpu);
 }
 
 unsigned long quicklist_total_size(void)

Re: v2.6.22.1-rt5

From: Thomas Gleixner <hidden>
Date: 2007-07-23 22:11:40

On Tue, 2007-07-24 at 00:05 +0200, Thomas Gleixner wrote:
On Mon, 2007-07-23 at 14:30 -0700, Daniel Walker wrote:
quoted
Yeah, the quicklist patch wasn't fully tested .. The delta patch below
is what I had to change to get it working ..
My bad. I pushed the wrong queue to Ingo.

-ENOTENOUGHSLEEP

This is the delta. We'll do a -rt6 tomorrow morning.
-EWAYNOTENOUGHSLEEP

I sent out the wrong delta. /me goes to sleep and fixes tomorrow.

	tglx

Re: v2.6.22.1-rt5

From: Ingo Molnar <hidden>
Date: 2007-07-24 07:40:24

* Rui Nuno Capela [off-list ref] wrote:
Maybe I was too quick, but `make all` on is failing here:
does -rt6 work better?

	Ingo

Re: v2.6.22.1-rt5

From: Fernando Lopez-Lezcano <hidden>
Date: 2007-07-24 19:34:50

On Tue, 2007-07-24 at 09:39 +0200, Ingo Molnar wrote:
* Rui Nuno Capela [off-list ref] wrote:
quoted
Maybe I was too quick, but `make all` on is failing here:
does -rt6 work better?
Hmmm, -rt6 seems to be gone... was about to download it and it
dissapeared. 

-- Fernando

Re: v2.6.22.1-rt5

From: Fernando Lopez-Lezcano <hidden>
Date: 2007-07-24 19:35:38

On Tue, 2007-07-24 at 12:34 -0700, Fernando Lopez-Lezcano wrote:
On Tue, 2007-07-24 at 09:39 +0200, Ingo Molnar wrote:
quoted
* Rui Nuno Capela [off-list ref] wrote:
quoted
Maybe I was too quick, but `make all` on is failing here:
does -rt6 work better?
Hmmm, -rt6 seems to be gone... was about to download it and it
dissapeared. 
Never mind, I see it migrated back to the main page. 
-- Fernando

Re: v2.6.22.1-rt5

From: Ingo Molnar <hidden>
Date: 2007-07-24 20:06:47

* Fernando Lopez-Lezcano [off-list ref] wrote:
On Tue, 2007-07-24 at 12:34 -0700, Fernando Lopez-Lezcano wrote:
quoted
On Tue, 2007-07-24 at 09:39 +0200, Ingo Molnar wrote:
quoted
* Rui Nuno Capela [off-list ref] wrote:
quoted
Maybe I was too quick, but `make all` on is failing here:
does -rt6 work better?
Hmmm, -rt6 seems to be gone... was about to download it and it
dissapeared. 
Never mind, I see it migrated back to the main page. 
apparently you caught that 3 seconds window where the .23-rc1-rt1 
release script moved old patches into the older/ directory :-)

	Ingo

Re: v2.6.22.1-rt5

From: Fernando Lopez-Lezcano <hidden>
Date: 2007-07-24 20:23:55

On Tue, 2007-07-24 at 22:05 +0200, Ingo Molnar wrote:
* Fernando Lopez-Lezcano [off-list ref] wrote:
quoted
On Tue, 2007-07-24 at 12:34 -0700, Fernando Lopez-Lezcano wrote:
quoted
On Tue, 2007-07-24 at 09:39 +0200, Ingo Molnar wrote:
quoted
* Rui Nuno Capela [off-list ref] wrote:
quoted
Maybe I was too quick, but `make all` on is failing here:
does -rt6 work better?
Hmmm, -rt6 seems to be gone... was about to download it and it
dissapeared. 
Never mind, I see it migrated back to the main page. 
apparently you caught that 3 seconds window where the .23-rc1-rt1 
release script moved old patches into the older/ directory :-)
Yup, good timing... :-) Hard to do again...
(BTW, will you keep 2.6.22.x patches going for a while?)
-- Fernando

Re: v2.6.22.1-rt5

From: Ingo Molnar <hidden>
Date: 2007-07-24 20:35:05

* Fernando Lopez-Lezcano [off-list ref] wrote:
quoted
apparently you caught that 3 seconds window where the .23-rc1-rt1 
release script moved old patches into the older/ directory :-)
Yup, good timing... :-) Hard to do again...
(BTW, will you keep 2.6.22.x patches going for a while?)
yeah, that's the plan: to keep .22-rt updated until .23 is released. 
(Thomas agrees with that approach too)

	Ingo

Re: v2.6.22.1-rt5

From: Fernando Lopez-Lezcano <hidden>
Date: 2007-07-24 20:40:21

On Tue, 2007-07-24 at 22:34 +0200, Ingo Molnar wrote:
* Fernando Lopez-Lezcano [off-list ref] wrote:
quoted
quoted
apparently you caught that 3 seconds window where the .23-rc1-rt1 
release script moved old patches into the older/ directory :-)
Yup, good timing... :-) Hard to do again...
(BTW, will you keep 2.6.22.x patches going for a while?)
yeah, that's the plan: to keep .22-rt updated until .23 is released. 
(Thomas agrees with that approach too)
Thank you thank you to all involved! That's very good news...
-- Fernando

Re: v2.6.22.1-rt5

From: Alessio Igor Bogani <hidden>
Date: 2007-07-25 07:35:15

Hi,

On Tue, 2007-07-24 at 22:34 +0200, Ingo Molnar wrote:
quoted
* Fernando Lopez-Lezcano [off-list ref] wrote:
[...] 
quoted
(BTW, will you keep 2.6.22.x patches going for a while?)
yeah, that's the plan: to keep .22-rt updated until .23 is released. 
(Thomas agrees with that approach too)
When .23 will be released could you explain changes for every following
-rt release in more detailed fashion, please? For whom is interested to
keep .22 updated also when .23 is released.

Thanks.

Ciao,
Alessio
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help