rpms/kernel/devel linux-2.6-kmemleak-improvements.patch, NONE, 1.1.2.2 linux-2.6-pci-cacheline-sizing.patch, NONE, 1.1.2.2 patch-2.6.31-rc1-git2.bz2.sign, NONE, 1.1.2.2 patch-2.6.31-rc1.bz2.sign, NONE, 1.1.2.2 sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch, NONE, 1.2.2.2 .cvsignore, 1.1014.2.15, 1.1014.2.16 Makefile, 1.97.6.4, 1.97.6.5 TODO, 1.54.6.7, 1.54.6.8 config-arm, 1.2.6.1, 1.2.6.2 config-debug, 1.23.6.1, 1.23.6.2 config-generic, 1.238.6.23, 1.238.6.24 config-i686-PAE, 1.1, 1.1.18.1 config-ia64-generic, 1.21.6.3, 1.21.6.4 config-nodebug, 1.31.6.2, 1.31.6.3 config-powerpc-generic, 1.33.6.6, 1.33.6.7 config-powerpc32-generic, 1.30.6.1, 1.30.6.2 config-powerpc64, 1.27.6.2, 1.27.6.3 config-s390x, 1.11.6.2, 1.11.6.3 config-sparc64-generic, 1.21.6.3, 1.21.6.4 config-x86-generic, 1.68.6.11, 1.68.6.12 config-x86_64-generic, 1.68.2.10, 1.68.2.11 drm-no-gem-on-i8xx.patch, 1.1, 1.1.6.1 drm-nouveau.patch, 1.8.6.10, 1.8.6.11 kernel.spec, 1.1294.2.33, 1.1294.2.34 linux-2.6-defaults-pci_no_msi.patch, 1.4.6.1, 1.4.6.2 linux-2.6-execshield.patch, 1.102.6.2, 1.102.6.3 linux-2.6-utrace.patch, 1.107.6.5, 1.107.6.6 linux-2.6.29-lirc.patch, 1.3.6.2, 1.3.6.3 sources, 1.976.2.16, 1.976.2.17 upstream, 1.888.2.15, 1.888.2.16 via-hwmon-temp-sensor.patch, 1.2.2.2, 1.2.2.3 xen.pvops.patch, 1.1.2.24, 1.1.2.25 xen.pvops.post.patch, 1.1.2.17, 1.1.2.18 xen.pvops.pre.patch, 1.1.2.13, 1.1.2.14 agp-set_memory_ucwb.patch, 1.1.10.2, NONE linux-2.6-cpufreq-enable-acpi-pstates-on-via.patch, 1.1.2.2, NONE via-padlock-10-enable-64bit.patch, 1.1.2.2, NONE via-padlock-20-add-x86-dependency.patch, 1.1.2.2, NONE via-padlock-30-fix-might-sleep.patch, 1.1.2.2, NONE via-padlock-40-nano-ecb.patch, 1.1.2.2, NONE via-padlock-50-nano-cbc.patch, 1.1.2.2, NONE via-rng-enable-64bit.patch, 1.1.2.2, NONE via-sdmmc.patch, 1.2.2.2, NONE

myoung myoung at fedoraproject.org
Sat Jun 27 11:06:13 UTC 2009


Author: myoung

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv13915

Modified Files:
      Tag: private-myoung-dom0-branch
	.cvsignore Makefile TODO config-arm config-debug 
	config-generic config-i686-PAE config-ia64-generic 
	config-nodebug config-powerpc-generic config-powerpc32-generic 
	config-powerpc64 config-s390x config-sparc64-generic 
	config-x86-generic config-x86_64-generic 
	drm-no-gem-on-i8xx.patch drm-nouveau.patch kernel.spec 
	linux-2.6-defaults-pci_no_msi.patch linux-2.6-execshield.patch 
	linux-2.6-utrace.patch linux-2.6.29-lirc.patch sources 
	upstream via-hwmon-temp-sensor.patch xen.pvops.patch 
	xen.pvops.post.patch xen.pvops.pre.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	linux-2.6-kmemleak-improvements.patch 
	linux-2.6-pci-cacheline-sizing.patch 
	patch-2.6.31-rc1-git2.bz2.sign patch-2.6.31-rc1.bz2.sign 
	sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch 
Removed Files:
      Tag: private-myoung-dom0-branch
	agp-set_memory_ucwb.patch 
	linux-2.6-cpufreq-enable-acpi-pstates-on-via.patch 
	via-padlock-10-enable-64bit.patch 
	via-padlock-20-add-x86-dependency.patch 
	via-padlock-30-fix-might-sleep.patch 
	via-padlock-40-nano-ecb.patch via-padlock-50-nano-cbc.patch 
	via-rng-enable-64bit.patch via-sdmmc.patch 
Log Message:
switch pvops to xen/rebase/master branch and rebase on 2.6.31-rc1-git2


linux-2.6-kmemleak-improvements.patch:

--- NEW FILE linux-2.6-kmemleak-improvements.patch ---
>From davej  Fri Jun 26 10:15:33 2009
Return-Path: Catalin.Marinas at arm.com
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
	gelk.kernelslacker.org
X-Spam-Level: 
X-Spam-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00,
	RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham version=3.2.5
Received: from mail.corp.redhat.com [10.5.5.51]
	by gelk.kernelslacker.org with IMAP (fetchmail-6.3.9)
	for <davej at localhost> (single-drop); Fri, 26 Jun 2009 10:15:33 -0400 (EDT)
Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO
 zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by
 mail04.corp.redhat.com with LMTP; Fri, 26 Jun 2009 10:13:10 -0400 (EDT)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 6C7BD9D7C6
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:10 -0400 (EDT)
Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1])
	by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id IbOtCT8gH9pG for <davej at redhat.com>;
	Fri, 26 Jun 2009 10:13:10 -0400 (EDT)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254])
	by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 2BCB39D7C3
	for <davej at mail.corp.redhat.com>; Fri, 26 Jun 2009 10:13:10 -0400 (EDT)
Received: from mx1.redhat.com (mx1.redhat.com [172.16.48.31])
	by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n5QED9jF000310
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:09 -0400
Received: from cam-admin0.cambridge.arm.com (cam-admin0.cambridge.arm.com [193.131.176.58])
	by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n5QECtVW020483
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:12:56 -0400
Received: from cam-owa1.Emea.Arm.com (cam-owa1.emea.arm.com [10.1.255.62])
	by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id n5QE9qZm009578;
	Fri, 26 Jun 2009 15:09:52 +0100 (BST)
Received: from pc1117.cambridge.arm.com ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0);
	 Fri, 26 Jun 2009 15:12:41 +0100
Subject: [PATCH 1/4] kmemleak: Enable task stacks scanning by default
To: linux-kernel at vger.kernel.org
From: Catalin Marinas <catalin.marinas at arm.com>
Cc: Dave Jones <davej at redhat.com>, Ingo Molnar <mingo at elte.hu>,
        Pekka Enberg <penberg at cs.helsinki.fi>,
        Sergey Senozhatsky <sergey.senozhatsky at mail.by>
Date: Fri, 26 Jun 2009 15:12:41 +0100
Message-ID: <20090626141241.31504.48118.stgit at pc1117.cambridge.arm.com>
In-Reply-To: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
References: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
User-Agent: StGit/0.14.3.387.geb0c.dirty
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 26 Jun 2009 14:12:41.0721 (UTC) FILETIME=[2B1E5690:01C9F668]
X-RedHat-Spam-Score: -3.954 
X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
X-Scanned-By: MIMEDefang 2.63 on 172.16.48.31
Status: RO
Content-Length: 1805
Lines: 42

This is to reduce the number of false positives reported.

Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
---
 Documentation/kmemleak.txt |    8 ++++----
 mm/kmemleak.c              |    2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Documentation/kmemleak.txt b/Documentation/kmemleak.txt
index f655308..9426e94 100644
--- a/Documentation/kmemleak.txt
+++ b/Documentation/kmemleak.txt
@@ -31,12 +31,12 @@ Memory scanning parameters can be modified at run-time by writing to the
 /sys/kernel/debug/kmemleak file. The following parameters are supported:
 
   off		- disable kmemleak (irreversible)
-  stack=on	- enable the task stacks scanning
+  stack=on	- enable the task stacks scanning (default)
   stack=off	- disable the tasks stacks scanning
-  scan=on	- start the automatic memory scanning thread
+  scan=on	- start the automatic memory scanning thread (default)
   scan=off	- stop the automatic memory scanning thread
-  scan=<secs>	- set the automatic memory scanning period in seconds (0
-		  to disable it)
+  scan=<secs>	- set the automatic memory scanning period in seconds
+		  (default 600, 0 to stop the automatic scanning)
 
 Kmemleak can also be disabled at boot-time by passing "kmemleak=off" on
 the kernel command line.
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 17096d1..a38418a 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -194,7 +194,7 @@ static unsigned long jiffies_min_age;
 /* delay between automatic memory scannings */
 static signed long jiffies_scan_wait;
 /* enables or disables the task stacks scanning */
-static int kmemleak_stack_scan;
+static int kmemleak_stack_scan = 1;
 /* mutex protecting the memory scanning */
 static DEFINE_MUTEX(scan_mutex);
 /* mutex protecting the access to the /sys/kernel/debug/kmemleak file */

>From davej  Fri Jun 26 10:15:41 2009
Return-Path: Catalin.Marinas at arm.com
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
	gelk.kernelslacker.org
X-Spam-Level: 
X-Spam-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00,
	RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham version=3.2.5
Received: from mail.corp.redhat.com [10.5.5.51]
	by gelk.kernelslacker.org with IMAP (fetchmail-6.3.9)
	for <davej at localhost> (single-drop); Fri, 26 Jun 2009 10:15:41 -0400 (EDT)
Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO
 zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by
 mail04.corp.redhat.com with LMTP; Fri, 26 Jun 2009 10:13:20 -0400 (EDT)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 5D76C9D7C6
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:20 -0400 (EDT)
Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1])
	by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id 7iR40mDJFi2U for <davej at redhat.com>;
	Fri, 26 Jun 2009 10:13:20 -0400 (EDT)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254])
	by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 1DD339D7C3
	for <davej at mail.corp.redhat.com>; Fri, 26 Jun 2009 10:13:20 -0400 (EDT)
Received: from mx1.redhat.com (mx1.redhat.com [172.16.48.31])
	by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n5QEDJ4i000372
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:19 -0400
Received: from cam-admin0.cambridge.arm.com (cam-admin0.cambridge.arm.com [193.131.176.58])
	by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n5QED4oW020562
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:05 -0400
Received: from cam-owa1.Emea.Arm.com (cam-owa1.emea.arm.com [10.1.255.62])
	by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id n5QE9vZm009583;
	Fri, 26 Jun 2009 15:09:57 +0100 (BST)
Received: from pc1117.cambridge.arm.com ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0);
	 Fri, 26 Jun 2009 15:12:47 +0100
Subject: [PATCH 2/4] kmemleak: Simplify the reports logged by the scanning
	thread
To: linux-kernel at vger.kernel.org
From: Catalin Marinas <catalin.marinas at arm.com>
Cc: Dave Jones <davej at redhat.com>, Ingo Molnar <mingo at elte.hu>,
        Pekka Enberg <penberg at cs.helsinki.fi>,
        Sergey Senozhatsky <sergey.senozhatsky at mail.by>
Date: Fri, 26 Jun 2009 15:12:46 +0100
Message-ID: <20090626141246.31504.74477.stgit at pc1117.cambridge.arm.com>
In-Reply-To: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
References: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
User-Agent: StGit/0.14.3.387.geb0c.dirty
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 26 Jun 2009 14:12:47.0425 (UTC) FILETIME=[2E84B310:01C9F668]
X-RedHat-Spam-Score: -3.955 
X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
X-Scanned-By: MIMEDefang 2.63 on 172.16.48.31
Status: RO
Content-Length: 5037
Lines: 146

Because of false positives, the memory scanning thread may print too
much information. This patch changes the scanning thread to only print
the number of newly suspected leaks. Further information can be read
from the /sys/kernel/debug/kmemleak file.

Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
---
 Documentation/kmemleak.txt |    6 ++--
 mm/kmemleak.c              |   61 ++++++++++++--------------------------------
 2 files changed, 19 insertions(+), 48 deletions(-)

diff --git a/Documentation/kmemleak.txt b/Documentation/kmemleak.txt
index 9426e94..c06f7ba 100644
--- a/Documentation/kmemleak.txt
+++ b/Documentation/kmemleak.txt
@@ -16,9 +16,9 @@ Usage
 -----
 
 CONFIG_DEBUG_KMEMLEAK in "Kernel hacking" has to be enabled. A kernel
-thread scans the memory every 10 minutes (by default) and prints any new
-unreferenced objects found. To trigger an intermediate scan and display
-all the possible memory leaks:
+thread scans the memory every 10 minutes (by default) and prints the
+number of new unreferenced objects found. To trigger an intermediate
+scan and display the details of all the possible memory leaks:
 
   # mount -t debugfs nodev /sys/kernel/debug/
   # cat /sys/kernel/debug/kmemleak
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index a38418a..4130a48 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -279,15 +279,6 @@ static int color_gray(const struct kmemleak_object *object)
 }
 
 /*
- * Objects are considered referenced if their color is gray and they have not
- * been deleted.
- */
-static int referenced_object(struct kmemleak_object *object)
-{
-	return (object->flags & OBJECT_ALLOCATED) && color_gray(object);
-}
-
-/*
  * Objects are considered unreferenced only if their color is white, they have
  * not be deleted and have a minimum age to avoid false positives caused by
  * pointers temporarily stored in CPU registers.
@@ -299,38 +290,23 @@ static int unreferenced_object(struct kmemleak_object *object)
 }
 
 /*
- * Printing of the (un)referenced objects information, either to the seq file
- * or to the kernel log. The print_referenced/print_unreferenced functions
- * must be called with the object->lock held.
+ * Printing of the unreferenced objects information to the seq file. The
+ * print_unreferenced function must be called with the object->lock held.
  */
-#define print_helper(seq, x...)	do {	\
-	struct seq_file *s = (seq);	\
-	if (s)				\
-		seq_printf(s, x);	\
-	else				\
-		pr_info(x);		\
-} while (0)
-
-static void print_referenced(struct kmemleak_object *object)
-{
-	pr_info("referenced object 0x%08lx (size %zu)\n",
-		object->pointer, object->size);
-}
-
 static void print_unreferenced(struct seq_file *seq,
 			       struct kmemleak_object *object)
 {
 	int i;
 
-	print_helper(seq, "unreferenced object 0x%08lx (size %zu):\n",
-		     object->pointer, object->size);
-	print_helper(seq, "  comm \"%s\", pid %d, jiffies %lu\n",
-		     object->comm, object->pid, object->jiffies);
-	print_helper(seq, "  backtrace:\n");
+	seq_printf(seq, "unreferenced object 0x%08lx (size %zu):\n",
+		   object->pointer, object->size);
+	seq_printf(seq, "  comm \"%s\", pid %d, jiffies %lu\n",
+		   object->comm, object->pid, object->jiffies);
+	seq_printf(seq, "  backtrace:\n");
 
 	for (i = 0; i < object->trace_len; i++) {
 		void *ptr = (void *)object->trace[i];
-		print_helper(seq, "    [<%p>] %pS\n", ptr, ptr);
+		seq_printf(seq, "    [<%p>] %pS\n", ptr, ptr);
 	}
 }
 
@@ -571,8 +547,6 @@ static void delete_object(unsigned long ptr)
 	 * cannot be freed when it is being scanned.
 	 */
 	spin_lock_irqsave(&object->lock, flags);
-	if (object->flags & OBJECT_REPORTED)
-		print_referenced(object);
 	object->flags &= ~OBJECT_ALLOCATED;
 	spin_unlock_irqrestore(&object->lock, flags);
 	put_object(object);
@@ -1073,33 +1047,30 @@ static int kmemleak_scan_thread(void *arg)
 	while (!kthread_should_stop()) {
 		struct kmemleak_object *object;
 		signed long timeout = jiffies_scan_wait;
+		int new_leaks = 0;
 
 		mutex_lock(&scan_mutex);
 
 		kmemleak_scan();
-		reported_leaks = 0;
 
 		rcu_read_lock();
 		list_for_each_entry_rcu(object, &object_list, object_list) {
 			unsigned long flags;
 
-			if (reported_leaks >= REPORTS_NR)
-				break;
 			spin_lock_irqsave(&object->lock, flags);
-			if (!(object->flags & OBJECT_REPORTED) &&
-			    unreferenced_object(object)) {
-				print_unreferenced(NULL, object);
+			if (unreferenced_object(object) &&
+			    !(object->flags & OBJECT_REPORTED)) {
 				object->flags |= OBJECT_REPORTED;
-				reported_leaks++;
-			} else if ((object->flags & OBJECT_REPORTED) &&
-				   referenced_object(object)) {
-				print_referenced(object);
-				object->flags &= ~OBJECT_REPORTED;
+				new_leaks++;
 			}
 			spin_unlock_irqrestore(&object->lock, flags);
 		}
 		rcu_read_unlock();
 
+		if (new_leaks)
+			pr_info("%d new suspected memory leaks (see "
+				"/sys/kernel/debug/kmemleak)\n", new_leaks);
+
 		mutex_unlock(&scan_mutex);
 		/* wait before the next scan */
 		while (timeout && !kthread_should_stop())

>From davej  Fri Jun 26 10:15:57 2009
Return-Path: Catalin.Marinas at arm.com
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
	gelk.kernelslacker.org
X-Spam-Level: 
X-Spam-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00,
	RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham version=3.2.5
Received: from mail.corp.redhat.com [10.5.5.51]
	by gelk.kernelslacker.org with IMAP (fetchmail-6.3.9)
	for <davej at localhost> (single-drop); Fri, 26 Jun 2009 10:15:57 -0400 (EDT)
Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO
 zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by
 mail04.corp.redhat.com with LMTP; Fri, 26 Jun 2009 10:13:29 -0400 (EDT)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 10EE24E14A
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:29 -0400 (EDT)
Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1])
	by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id OBMrB64oq7SH for <davej at redhat.com>;
	Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254])
	by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id B88184E14D
	for <davej at mail.corp.redhat.com>; Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from mx1.redhat.com (mx1.redhat.com [172.16.48.31])
	by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n5QEDR2C000447
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:27 -0400
Received: from cam-admin0.cambridge.arm.com (cam-admin0.cambridge.arm.com [193.131.176.58])
	by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n5QEDEXm020641
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:14 -0400
Received: from cam-owa1.Emea.Arm.com (cam-owa1.emea.arm.com [10.1.255.62])
	by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id n5QEA3Zm009598;
	Fri, 26 Jun 2009 15:10:03 +0100 (BST)
Received: from pc1117.cambridge.arm.com ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0);
	 Fri, 26 Jun 2009 15:12:53 +0100
Subject: [PATCH 3/4] kmemleak: Do not trigger a scan when reading the
	debug/kmemleak file
To: linux-kernel at vger.kernel.org
From: Catalin Marinas <catalin.marinas at arm.com>
Cc: Dave Jones <davej at redhat.com>, Ingo Molnar <mingo at elte.hu>,
        Pekka Enberg <penberg at cs.helsinki.fi>,
        Sergey Senozhatsky <sergey.senozhatsky at mail.by>
Date: Fri, 26 Jun 2009 15:12:52 +0100
Message-ID: <20090626141252.31504.62724.stgit at pc1117.cambridge.arm.com>
In-Reply-To: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
References: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
User-Agent: StGit/0.14.3.387.geb0c.dirty
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 26 Jun 2009 14:12:53.0143 (UTC) FILETIME=[31ED3270:01C9F668]
X-RedHat-Spam-Score: -3.955 
X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
X-Scanned-By: MIMEDefang 2.63 on 172.16.48.31
Status: RO
Content-Length: 8468
Lines: 256

Since there is a kernel thread for automatically scanning the memory, it
makes sense for the debug/kmemleak file to only show its findings. This
patch also adds support for "echo scan > debug/kmemleak" to trigger an
intermediate memory scan and eliminates the kmemleak_mutex (scan_mutex
covers all the cases now).

Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
---
 Documentation/kmemleak.txt |    9 +++-
 mm/kmemleak.c              |   90 ++++++++++++++++++++------------------------
 2 files changed, 47 insertions(+), 52 deletions(-)

diff --git a/Documentation/kmemleak.txt b/Documentation/kmemleak.txt
index c06f7ba..8906803 100644
--- a/Documentation/kmemleak.txt
+++ b/Documentation/kmemleak.txt
@@ -17,12 +17,16 @@ Usage
 
 CONFIG_DEBUG_KMEMLEAK in "Kernel hacking" has to be enabled. A kernel
 thread scans the memory every 10 minutes (by default) and prints the
-number of new unreferenced objects found. To trigger an intermediate
-scan and display the details of all the possible memory leaks:
+number of new unreferenced objects found. To display the details of all
+the possible memory leaks:
 
   # mount -t debugfs nodev /sys/kernel/debug/
   # cat /sys/kernel/debug/kmemleak
 
+To trigger an intermediate memory scan:
+
+  # echo scan > /sys/kernel/debug/kmemleak
+
 Note that the orphan objects are listed in the order they were allocated
 and one object at the beginning of the list may cause other subsequent
 objects to be reported as orphan.
@@ -37,6 +41,7 @@ Memory scanning parameters can be modified at run-time by writing to the
   scan=off	- stop the automatic memory scanning thread
   scan=<secs>	- set the automatic memory scanning period in seconds
 		  (default 600, 0 to stop the automatic scanning)
+  scan		- trigger a memory scan
 
 Kmemleak can also be disabled at boot-time by passing "kmemleak=off" on
 the kernel command line.
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 4130a48..e96e0ec 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -48,10 +48,10 @@
  *   scanned. This list is only modified during a scanning episode when the
  *   scan_mutex is held. At the end of a scan, the gray_list is always empty.
  *   Note that the kmemleak_object.use_count is incremented when an object is
- *   added to the gray_list and therefore cannot be freed
- * - kmemleak_mutex (mutex): prevents multiple users of the "kmemleak" debugfs
- *   file together with modifications to the memory scanning parameters
- *   including the scan_thread pointer
+ *   added to the gray_list and therefore cannot be freed. This mutex also
+ *   prevents multiple users of the "kmemleak" debugfs file together with
+ *   modifications to the memory scanning parameters including the scan_thread
+ *   pointer
  *
  * The kmemleak_object structures have a use_count incremented or decremented
  * using the get_object()/put_object() functions. When the use_count becomes
@@ -195,10 +195,8 @@ static unsigned long jiffies_min_age;
 static signed long jiffies_scan_wait;
 /* enables or disables the task stacks scanning */
 static int kmemleak_stack_scan = 1;
-/* mutex protecting the memory scanning */
+/* protects the memory scanning, parameters and debug/kmemleak file access */
 static DEFINE_MUTEX(scan_mutex);
-/* mutex protecting the access to the /sys/kernel/debug/kmemleak file */
-static DEFINE_MUTEX(kmemleak_mutex);
 
 /* number of leaks reported (for limitation purposes) */
 static int reported_leaks;
@@ -927,6 +925,7 @@ static void kmemleak_scan(void)
 	struct kmemleak_object *object, *tmp;
 	struct task_struct *task;
 	int i;
+	int new_leaks = 0;
 
 	/* prepare the kmemleak_object's */
 	rcu_read_lock();
@@ -1024,6 +1023,26 @@ static void kmemleak_scan(void)
 		object = tmp;
 	}
 	WARN_ON(!list_empty(&gray_list));
+
+	/*
+	 * Scanning result reporting.
+	 */
+	rcu_read_lock();
+	list_for_each_entry_rcu(object, &object_list, object_list) {
+		spin_lock_irqsave(&object->lock, flags);
+		if (unreferenced_object(object) &&
+		    !(object->flags & OBJECT_REPORTED)) {
+			object->flags |= OBJECT_REPORTED;
+			new_leaks++;
+		}
+		spin_unlock_irqrestore(&object->lock, flags);
+	}
+	rcu_read_unlock();
+
+	if (new_leaks)
+		pr_info("%d new suspected memory leaks (see "
+			"/sys/kernel/debug/kmemleak)\n", new_leaks);
+
 }
 
 /*
@@ -1045,33 +1064,12 @@ static int kmemleak_scan_thread(void *arg)
 	}
 
 	while (!kthread_should_stop()) {
-		struct kmemleak_object *object;
 		signed long timeout = jiffies_scan_wait;
-		int new_leaks = 0;
 
 		mutex_lock(&scan_mutex);
-
 		kmemleak_scan();
-
-		rcu_read_lock();
-		list_for_each_entry_rcu(object, &object_list, object_list) {
-			unsigned long flags;
-
-			spin_lock_irqsave(&object->lock, flags);
-			if (unreferenced_object(object) &&
-			    !(object->flags & OBJECT_REPORTED)) {
-				object->flags |= OBJECT_REPORTED;
-				new_leaks++;
-			}
-			spin_unlock_irqrestore(&object->lock, flags);
-		}
-		rcu_read_unlock();
-
-		if (new_leaks)
-			pr_info("%d new suspected memory leaks (see "
-				"/sys/kernel/debug/kmemleak)\n", new_leaks);
-
 		mutex_unlock(&scan_mutex);
+
 		/* wait before the next scan */
 		while (timeout && !kthread_should_stop())
 			timeout = schedule_timeout_interruptible(timeout);
@@ -1084,7 +1082,7 @@ static int kmemleak_scan_thread(void *arg)
 
 /*
  * Start the automatic memory scanning thread. This function must be called
- * with the kmemleak_mutex held.
+ * with the scan_mutex held.
  */
 void start_scan_thread(void)
 {
@@ -1099,7 +1097,7 @@ void start_scan_thread(void)
 
 /*
  * Stop the automatic memory scanning thread. This function must be called
- * with the kmemleak_mutex held.
+ * with the scan_mutex held.
  */
 void stop_scan_thread(void)
 {
@@ -1119,10 +1117,8 @@ static void *kmemleak_seq_start(struct seq_file *seq, loff_t *pos)
 	struct kmemleak_object *object;
 	loff_t n = *pos;
 
-	if (!n) {
-		kmemleak_scan();
+	if (!n)
 		reported_leaks = 0;
-	}
 	if (reported_leaks >= REPORTS_NR)
 		return NULL;
 
@@ -1206,13 +1202,10 @@ static int kmemleak_open(struct inode *inode, struct file *file)
 	if (!atomic_read(&kmemleak_enabled))
 		return -EBUSY;
 
-	ret = mutex_lock_interruptible(&kmemleak_mutex);
+	ret = mutex_lock_interruptible(&scan_mutex);
 	if (ret < 0)
 		goto out;
 	if (file->f_mode & FMODE_READ) {
-		ret = mutex_lock_interruptible(&scan_mutex);
-		if (ret < 0)
-			goto kmemleak_unlock;
 		ret = seq_open(file, &kmemleak_seq_ops);
 		if (ret < 0)
 			goto scan_unlock;
@@ -1221,8 +1214,6 @@ static int kmemleak_open(struct inode *inode, struct file *file)
 
 scan_unlock:
 	mutex_unlock(&scan_mutex);
-kmemleak_unlock:
-	mutex_unlock(&kmemleak_mutex);
 out:
 	return ret;
 }
@@ -1231,11 +1222,9 @@ static int kmemleak_release(struct inode *inode, struct file *file)
 {
 	int ret = 0;
 
-	if (file->f_mode & FMODE_READ) {
+	if (file->f_mode & FMODE_READ)
 		seq_release(inode, file);
-		mutex_unlock(&scan_mutex);
-	}
-	mutex_unlock(&kmemleak_mutex);
+	mutex_unlock(&scan_mutex);
 
 	return ret;
 }
@@ -1250,6 +1239,7 @@ static int kmemleak_release(struct inode *inode, struct file *file)
  *   scan=off	- stop the automatic memory scanning thread
  *   scan=...	- set the automatic memory scanning period in seconds (0 to
  *		  disable it)
+ *   scan	- trigger a memory scan
  */
 static ssize_t kmemleak_write(struct file *file, const char __user *user_buf,
 			      size_t size, loff_t *ppos)
@@ -1287,7 +1277,9 @@ static ssize_t kmemleak_write(struct file *file, const char __user *user_buf,
 			jiffies_scan_wait = msecs_to_jiffies(secs * 1000);
 			start_scan_thread();
 		}
-	} else
+	} else if (strncmp(buf, "scan", 4) == 0)
+		kmemleak_scan();
+	else
 		return -EINVAL;
 
 	/* ignore the rest of the buffer, only one command at a time */
@@ -1312,11 +1304,9 @@ static int kmemleak_cleanup_thread(void *arg)
 {
 	struct kmemleak_object *object;
 
-	mutex_lock(&kmemleak_mutex);
+	mutex_lock(&scan_mutex);
 	stop_scan_thread();
-	mutex_unlock(&kmemleak_mutex);
 
-	mutex_lock(&scan_mutex);
 	rcu_read_lock();
 	list_for_each_entry_rcu(object, &object_list, object_list)
 		delete_object(object->pointer);
@@ -1458,9 +1448,9 @@ static int __init kmemleak_late_init(void)
 				     &kmemleak_fops);
 	if (!dentry)
 		pr_warning("Failed to create the debugfs kmemleak file\n");
-	mutex_lock(&kmemleak_mutex);
+	mutex_lock(&scan_mutex);
 	start_scan_thread();
-	mutex_unlock(&kmemleak_mutex);
+	mutex_unlock(&scan_mutex);
 
 	pr_info("Kernel memory leak detector initialized\n");
 

>From davej  Fri Jun 26 10:15:49 2009
Return-Path: Catalin.Marinas at arm.com
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
	gelk.kernelslacker.org
X-Spam-Level: 
X-Spam-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00,
	RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham version=3.2.5
Received: from mail.corp.redhat.com [10.5.5.51]
	by gelk.kernelslacker.org with IMAP (fetchmail-6.3.9)
	for <davej at localhost> (single-drop); Fri, 26 Jun 2009 10:15:49 -0400 (EDT)
Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO
 zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by
 mail04.corp.redhat.com with LMTP; Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from localhost (localhost.localdomain [127.0.0.1])
	by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id EBFBE4E14E
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1])
	by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id 2ZDWDxKMrNmg for <davej at redhat.com>;
	Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254])
	by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id B6D524E14A
	for <davej at mail.corp.redhat.com>; Fri, 26 Jun 2009 10:13:28 -0400 (EDT)
Received: from mx3.redhat.com (mx3.redhat.com [172.16.48.32])
	by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n5QEDRO6000446
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:27 -0400
Received: from cam-admin0.cambridge.arm.com (cam-admin0.cambridge.arm.com [193.131.176.58])
	by mx3.redhat.com (8.13.8/8.13.8) with ESMTP id n5QEDEhd024713
	for <davej at redhat.com>; Fri, 26 Jun 2009 10:13:14 -0400
Received: from cam-owa1.Emea.Arm.com (cam-owa1.emea.arm.com [10.1.255.62])
	by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id n5QEA9Zm009603;
	Fri, 26 Jun 2009 15:10:09 +0100 (BST)
Received: from pc1117.cambridge.arm.com ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0);
	 Fri, 26 Jun 2009 15:12:58 +0100
Subject: [PATCH 4/4] kmemleak: Slightly change the policy on newly allocated
	objects
To: linux-kernel at vger.kernel.org
From: Catalin Marinas <catalin.marinas at arm.com>
Cc: Dave Jones <davej at redhat.com>, Ingo Molnar <mingo at elte.hu>,
        Pekka Enberg <penberg at cs.helsinki.fi>,
        Sergey Senozhatsky <sergey.senozhatsky at mail.by>
Date: Fri, 26 Jun 2009 15:12:58 +0100
Message-ID: <20090626141258.31504.36983.stgit at pc1117.cambridge.arm.com>
In-Reply-To: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
References: <20090626140847.31504.79381.stgit at pc1117.cambridge.arm.com>
User-Agent: StGit/0.14.3.387.geb0c.dirty
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 26 Jun 2009 14:12:58.0862 (UTC) FILETIME=[3555D8E0:01C9F668]
X-RedHat-Spam-Score: -3.545 
X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254
X-Scanned-By: MIMEDefang 2.63 on 172.16.48.32
Status: RO
Content-Length: 1674
Lines: 45

Newly allocated objects are more likely to be reported as false
positives. Kmemleak ignores the reporting of objects younger than 5
seconds. However, this age was calculated after the memory scanning
completed which usually takes longer than 5 seconds. This patch
make the minimum object age calculation in relation to the start of the
memory scanning.

Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
---
 mm/kmemleak.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index e96e0ec..c37e8e5 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -190,7 +190,9 @@ static unsigned long max_addr;
 static unsigned long next_scan_yield;
 static struct task_struct *scan_thread;
 static unsigned long jiffies_scan_yield;
+/* used to avoid reporting of recently allocated objects */
 static unsigned long jiffies_min_age;
+static unsigned long jiffies_last_scan;
 /* delay between automatic memory scannings */
 static signed long jiffies_scan_wait;
 /* enables or disables the task stacks scanning */
@@ -284,7 +286,8 @@ static int color_gray(const struct kmemleak_object *object)
 static int unreferenced_object(struct kmemleak_object *object)
 {
 	return (object->flags & OBJECT_ALLOCATED) && color_white(object) &&
-		time_is_before_eq_jiffies(object->jiffies + jiffies_min_age);
+		time_before_eq(object->jiffies + jiffies_min_age,
+			       jiffies_last_scan);
 }
 
 /*
@@ -927,6 +930,8 @@ static void kmemleak_scan(void)
 	int i;
 	int new_leaks = 0;
 
+	jiffies_last_scan = jiffies;
+
 	/* prepare the kmemleak_object's */
 	rcu_read_lock();
 	list_for_each_entry_rcu(object, &object_list, object_list) {


linux-2.6-pci-cacheline-sizing.patch:

--- NEW FILE linux-2.6-pci-cacheline-sizing.patch ---
PCI: Use generic cacheline sizing instead of per-vendor tests.

Instead of the pci code needing to have code to determine the
cacheline size of each processor, use the data the cpu identification
code should have already determined during early boot.

I chose not to delete the existing code for the time being.
Instead I added some additional debug statements to be sure that it's
doing the right thing, and compares it against what the old code would
have done.  After this has been proven to be right in a release,
we can delete the paranoid checks, and all the old vendor checking code.

Signed-off-by: Dave Jones <davej at redhat.com>

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 2202b62..f371fe8 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -432,6 +432,22 @@ int __init pcibios_init(void)
 	else if (c->x86 > 6 && c->x86_vendor == X86_VENDOR_INTEL)
 		pci_cache_line_size = 128 >> 2;	/* P4 */
 
+	if (c->x86_clflush_size != (pci_cache_line_size <<2))
+		printk(KERN_DEBUG "PCI: old code would have set cacheline "
+			"size to %d bytes, but clflush_size = %d\n",
+			pci_cache_line_size << 2,
+			c->x86_clflush_size);
+
+	/* Once we know this logic works, all the above code can be deleted. */
+	if (c->x86_clflush_size > 0) {
+		pci_cache_line_size = c->x86_clflush_size >> 2;
+		printk(KERN_DEBUG "PCI: pci_cache_line_size set to %d bytes\n",
+			pci_cache_line_size >> 2);
+	} else {
+		pci_cache_line_size = 32 >> 2;
+		printk(KERN_DEBUG "PCI: Unknown cacheline size. Setting to 32 bytes\n");
+	}
+
 	pcibios_resource_survey();
 
 	if (pci_bf_sort >= pci_force_bf)


--- NEW FILE patch-2.6.31-rc1-git2.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBKRLj3yGugalF9Dw4RAiZ9AJwI4C2da7sIzLK9Rexh5zdr8hI4LQCfQl7U
nIR1f6ZW5YbH/w6/zMf+GYk=
=9J4z
-----END PGP SIGNATURE-----


--- NEW FILE patch-2.6.31-rc1.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBKQsFZyGugalF9Dw4RAhPBAJ44EnZZ5h2XmQl1CwyM2zeVD9mBLACfXBs6
edCHeBMEYSWggL90m0sF9gc=
=CmLq
-----END PGP SIGNATURE-----

sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch:

--- NEW FILE sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch ---
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 4d07542..5ba2c37 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -38,6 +38,8 @@
 #define SCHED_BATCH		3
 /* SCHED_ISO: reserved but not implemented yet */
 #define SCHED_IDLE		5
+/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
+#define SCHED_RESET_ON_FORK     0x40000000
 
 #ifdef __KERNEL__
 
@@ -1208,6 +1210,10 @@ struct task_struct {
 	unsigned did_exec:1;
 	unsigned in_execve:1;	/* Tell the LSMs that the process is doing an
 				 * execve */
+
+	/* Revert to default priority/policy when forking */
+	unsigned sched_reset_on_fork:1;
+
 	pid_t pid;
 	pid_t tgid;
 
diff --git a/kernel/sched.c b/kernel/sched.c
index 7c9098d..168b268 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2614,9 +2614,32 @@ void sched_fork(struct task_struct *p, int clone_flags)
 	set_task_cpu(p, cpu);
 
 	/*
-	 * Make sure we do not leak PI boosting priority to the child:
+	 * Make sure we do not leak PI boosting priority to the child.
 	 */
 	p->prio = current->normal_prio;
+
+	/*
+	 * Revert to default priority/policy on fork if requested.
+	 */
+	if (unlikely(p->sched_reset_on_fork)) {
+		if (p->policy == SCHED_FIFO || p->policy == SCHED_RR)
+			p->policy = SCHED_NORMAL;
+
+		if (p->normal_prio < DEFAULT_PRIO)
+			p->prio = DEFAULT_PRIO;
+
+		if (PRIO_TO_NICE(p->static_prio) < 0) {
+			p->static_prio = NICE_TO_PRIO(0);
+			set_load_weight(p);
+		}
+
+		/*
+		 * We don't need the reset flag anymore after the fork. It has
+		 * fulfilled its duty:
+		 */
+		p->sched_reset_on_fork = 0;
+	}
+
 	if (!rt_prio(p->prio))
 		p->sched_class = &fair_sched_class;
 
@@ -6100,17 +6123,25 @@ static int __sched_setscheduler(struct task_struct *p, int policy,
 	unsigned long flags;
 	const struct sched_class *prev_class = p->sched_class;
 	struct rq *rq;
+	int reset_on_fork;
 
 	/* may grab non-irq protected spin_locks */
 	BUG_ON(in_interrupt());
 recheck:
 	/* double check policy once rq lock held */
-	if (policy < 0)
+	if (policy < 0) {
+		reset_on_fork = p->sched_reset_on_fork;
 		policy = oldpolicy = p->policy;
-	else if (policy != SCHED_FIFO && policy != SCHED_RR &&
-			policy != SCHED_NORMAL && policy != SCHED_BATCH &&
-			policy != SCHED_IDLE)
-		return -EINVAL;
+	} else {
+		reset_on_fork = !!(policy & SCHED_RESET_ON_FORK);
+		policy &= ~SCHED_RESET_ON_FORK;
+
+		if (policy != SCHED_FIFO && policy != SCHED_RR &&
+				policy != SCHED_NORMAL && policy != SCHED_BATCH &&
+				policy != SCHED_IDLE)
+			return -EINVAL;
+	}
+
 	/*
 	 * Valid priorities for SCHED_FIFO and SCHED_RR are
 	 * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL,
@@ -6154,6 +6185,10 @@ recheck:
 		/* can't change other user's priorities */
 		if (!check_same_owner(p))
 			return -EPERM;
+
+		/* Normal users shall not reset the sched_reset_on_fork flag */
+		if (p->sched_reset_on_fork && !reset_on_fork)
+			return -EPERM;
 	}
 
 	if (user) {
@@ -6197,6 +6232,8 @@ recheck:
 	if (running)
 		p->sched_class->put_prev_task(rq, p);
 
+	p->sched_reset_on_fork = reset_on_fork;
+
 	oldprio = p->prio;
 	__setscheduler(rq, p, policy, param->sched_priority);
 
@@ -6313,14 +6350,15 @@ SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
 	if (p) {
 		retval = security_task_getscheduler(p);
 		if (!retval)
-			retval = p->policy;
+			retval = p->policy
+				| (p->sched_reset_on_fork ? SCHED_RESET_ON_FORK : 0);
 	}
 	read_unlock(&tasklist_lock);
 	return retval;
 }
 
 /**
- * sys_sched_getscheduler - get the RT priority of a thread
+ * sys_sched_getparam - get the RT priority of a thread
  * @pid: the pid in question.
  * @param: structure containing the RT priority.
  */


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.1014.2.15
retrieving revision 1.1014.2.16
diff -u -p -r1.1014.2.15 -r1.1014.2.16
--- .cvsignore	13 Jun 2009 21:22:32 -0000	1.1014.2.15
+++ .cvsignore	27 Jun 2009 11:05:09 -0000	1.1014.2.16
@@ -5,3 +5,6 @@ kernel-2.6.*.config
 temp-*
 kernel-2.6.30
 linux-2.6.30.tar.bz2
+patch-2.6.30-git22.bz2
+patch-2.6.31-rc1.bz2
+patch-2.6.31-rc1-git2.bz2


Index: Makefile
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Makefile,v
retrieving revision 1.97.6.4
retrieving revision 1.97.6.5
diff -u -p -r1.97.6.4 -r1.97.6.5
--- Makefile	24 Apr 2009 22:27:03 -0000	1.97.6.4
+++ Makefile	27 Jun 2009 11:05:09 -0000	1.97.6.5
@@ -72,6 +72,7 @@ debug:
 	@perl -pi -e 's/# CONFIG_B43LEGACY_DEBUG is not set/CONFIG_B43LEGACY_DEBUG=y/' config-generic
 	@perl -pi -e 's/# CONFIG_MMIOTRACE is not set/CONFIG_MMIOTRACE=y/' config-nodebug
 	@perl -pi -e 's/CONFIG_STRIP_ASM_SYMS=y/# CONFIG_STRIP_ASM_SYMS is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_DEBUG_KMEMLEAK=y/# CONFIG_DEBUG_KMEMLEAK is not set/' config-nodebug
 
 	@# just in case we're going from extremedebug -> debug
 	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
@@ -118,6 +119,7 @@ release:
 	@perl -pi -e 's/CONFIG_B43LEGACY_DEBUG=y/# CONFIG_B43LEGACY_DEBUG is not set/' config-generic
 	@perl -pi -e 's/CONFIG_MMIOTRACE=y/# CONFIG_MMIOTRACE is not set/' config-nodebug
 	@perl -pi -e 's/# CONFIG_STRIP_ASM_SYMS is not set/CONFIG_STRIP_ASM_SYMS=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_DEBUG_KMEMLEAK is not set/CONFIG_DEBUG_KMEMLEAK=y/' config-nodebug
 
 	@perl -pi -e 's/CONFIG_NR_CPUS=512/CONFIG_NR_CPUS=64/' config-x86_64-generic
 
@@ -130,7 +132,7 @@ rhel:
 
 reconfig:
 	@rm -f kernel-*-config
-	@VERSION="2.6.29" make -f Makefile.config configs
+	@VERSION="2.6.30" make -f Makefile.config configs
 	@scripts/reconfig.sh
 
 force-tag: $(SPECFILE) $(COMMON_DIR)/branches


Index: TODO
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/TODO,v
retrieving revision 1.54.6.7
retrieving revision 1.54.6.8
diff -u -p -r1.54.6.7 -r1.54.6.8
--- TODO	4 Jun 2009 19:34:57 -0000	1.54.6.7
+++ TODO	27 Jun 2009 11:05:09 -0000	1.54.6.8
@@ -78,3 +78,6 @@
 	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=126403
 	http://lkml.org/lkml/2006/8/2/208
 
+* linux-2.6-kmemleak-improvements.patch
+	will go upstream for .31
+


Index: config-arm
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-arm,v
retrieving revision 1.2.6.1
retrieving revision 1.2.6.2
diff -u -p -r1.2.6.1 -r1.2.6.2
--- config-arm	24 Apr 2009 22:27:04 -0000	1.2.6.1
+++ config-arm	27 Jun 2009 11:05:09 -0000	1.2.6.2
@@ -38,6 +38,8 @@ CONFIG_ARM_THUMB=y
 CONFIG_AEABI=y
 CONFIG_OABI_COMPAT=y
 
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+
 CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
 
 CONFIG_NO_HZ=y
@@ -95,3 +97,5 @@ CONFIG_RTC_DRV_PL031=m
 # CONFIG_DEBUG_LL is not set
 
 CONFIG_ARM_UNWIND=y
+
+CONFIG_RCU_FANOUT=32


Index: config-debug
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-debug,v
retrieving revision 1.23.6.1
retrieving revision 1.23.6.2
diff -u -p -r1.23.6.1 -r1.23.6.2
--- config-debug	14 Apr 2009 22:09:07 -0000	1.23.6.1
+++ config-debug	27 Jun 2009 11:05:09 -0000	1.23.6.2
@@ -50,3 +50,7 @@ CONFIG_DEBUG_NOTIFIERS=y
 CONFIG_DMA_API_DEBUG=y
 
 CONFIG_MMIOTRACE=y
+
+CONFIG_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK_TEST is not set
+


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.238.6.23
retrieving revision 1.238.6.24
diff -u -p -r1.238.6.23 -r1.238.6.24
--- config-generic	13 Jun 2009 21:22:33 -0000	1.238.6.23
+++ config-generic	27 Jun 2009 11:05:09 -0000	1.238.6.24
@@ -87,6 +87,8 @@ CONFIG_PCIEPORTBUS=y
 CONFIG_PCIEAER=y
 CONFIG_PCIEASPM=y
 # CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEAER_INJECT=m
 CONFIG_HOTPLUG_PCI_PCIE=y
 CONFIG_HOTPLUG_PCI_FAKE=m
 CONFIG_PCI_LEGACY=y
@@ -124,6 +126,11 @@ CONFIG_MMC_SDRICOH_CS=m
 CONFIG_MMC_TIFM_SD=m
 CONFIG_MMC_WBSD=m
 CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_CB710=m
+
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
 
 CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_MTHCA=m
@@ -362,6 +369,7 @@ CONFIG_LSF=y
 CONFIG_BLK_DEV_DELKIN=m
 # CONFIG_BLK_DEV_IT8213 is not set
 # CONFIG_BLK_DEV_TC86C001 is not set
+CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_INTEGRITY=y
 
@@ -519,6 +527,7 @@ CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
 CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
 CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT2SAS_LOGGING=y
@@ -528,6 +537,9 @@ CONFIG_SCSI_OSD_ULD=m
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
 
+CONFIG_SCSI_BNX2_ISCSI=m
+
+
 CONFIG_ATA=y
 CONFIG_ATA_SFF=y
 CONFIG_ATA_PIIX=y
@@ -625,7 +637,7 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_DC395x=m
 # CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_QLA_FC=m
 CONFIG_SCSI_QLA_ISCSI=m
@@ -671,6 +683,9 @@ CONFIG_DM_MULTIPATH_RDAC=m
 CONFIG_DM_SNAPSHOT=y
 CONFIG_DM_UEVENT=y
 CONFIG_DM_ZERO=y
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
 
 #
 # Fusion MPT device support
@@ -690,6 +705,7 @@ CONFIG_FUSION_LOGGING=y
 CONFIG_FIREWIRE=m
 CONFIG_FIREWIRE_OHCI=m
 CONFIG_FIREWIRE_SBP2=m
+CONFIG_FIREWIRE_NET=m
 CONFIG_FIREWIRE_OHCI_DEBUG=y
 # CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
 
@@ -864,6 +880,7 @@ CONFIG_NETFILTER_XT_MATCH_TIME=m
 CONFIG_NETFILTER_XT_MATCH_U32=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
 
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_BRIDGE_NETFILTER=y
@@ -1149,7 +1166,7 @@ CONFIG_ATM_NICSTAR=m
 # CONFIG_ATM_SOLOS is not set
 
 CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
+CONFIG_RFKILL_INPUT=y
 
 #
 # Ethernet (10 or 100Mbit)
@@ -1191,6 +1208,7 @@ CONFIG_DNET=m
 #
 CONFIG_NET_TULIP=y
 CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
 CONFIG_TULIP=m
 # CONFIG_TULIP_NAPI is not set
 # CONFIG_TULIP_MWI is not set
@@ -1216,6 +1234,7 @@ CONFIG_ADAPTEC_STARFIRE_NAPI=y
 CONFIG_B44=m
 CONFIG_B44_PCI=y
 CONFIG_BNX2=m
+CONFIG_CNIC=m
 CONFIG_QLA3XXX=m
 CONFIG_ATL1=m
 CONFIG_ATL1C=m
@@ -1253,6 +1272,7 @@ CONFIG_DE620=m
 CONFIG_CASSINI=m
 # CONFIG_FEC_8XX is not set
 CONFIG_ETHOC=m
+# CONFIG_KS8842 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -1346,6 +1366,7 @@ CONFIG_WLAN_80211=y
 CONFIG_WIRELESS=y
 CONFIG_CFG80211=m
 # CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_CFG80211_DEBUGFS=y
 CONFIG_NL80211=y
 # CONFIG_WIRELESS_OLD_REGULATORY is not set
 CONFIG_WIRELESS_EXT=y
@@ -1366,6 +1387,7 @@ CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
 CONFIG_MAC80211_DEBUGFS=y
 # CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_DEFAULT_PS=y
 
 CONFIG_WIMAX=y
 CONFIG_WIMAX_DEBUG_LEVEL=8
@@ -1430,6 +1452,8 @@ CONFIG_IWL3945_RFKILL=y
 CONFIG_IWL3945_DEBUG=y
 CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
 CONFIG_IWL3945_LEDS=y
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
 CONFIG_MAC80211_HWSIM=m
 CONFIG_NORTEL_HERMES=m
 CONFIG_P54_COMMON=m
@@ -1458,6 +1482,7 @@ CONFIG_RT61PCI_RFKILL=y
 CONFIG_RT61PCI_LEDS=y
 CONFIG_RT2500USB=m
 CONFIG_RT2500USB_LEDS=y
+CONFIG_RT2800USB=m
 CONFIG_RT73USB=m
 CONFIG_RT73USB_LEDS=y
 CONFIG_RTL8180=m
@@ -1514,6 +1539,12 @@ CONFIG_CAN=m
 CONFIG_CAN_RAW=m
 CONFIG_CAN_BCM=m
 CONFIG_CAN_VCAN=m
+CONFIG_CAN_DEV=m
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_SJA1000=m
+CONFIG_CAN_SJA1000_PLATFORM=m
+CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_KVASER_PCI=m
 CONFIG_NETROM=m
 CONFIG_ROSE=m
 CONFIG_MKISS=m
@@ -1781,6 +1812,7 @@ CONFIG_KEYBOARD_ATKBD=y
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LM8323 is not set
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=y
 # CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -1789,6 +1821,7 @@ CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_VSXXXAA=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
 CONFIG_INPUT_JOYSTICK=y
 CONFIG_JOYSTICK_ANALOG=m
 CONFIG_JOYSTICK_A3D=m
@@ -1837,6 +1870,8 @@ CONFIG_TOUCHSCREEN_UCB1400=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
 # CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_W90X900=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_PCSPKR=m
 CONFIG_INPUT_UINPUT=m
@@ -1952,6 +1987,7 @@ CONFIG_I2C_ALGOPCA=m
 CONFIG_EEPROM_AT24=m
 CONFIG_EEPROM_LEGACY=m
 CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_MAX6875=m
 
 CONFIG_I2C_NFORCE2=m
 # CONFIG_I2C_OCORES is not set
@@ -1974,6 +2010,7 @@ CONFIG_I2C_TINY_USB=m
 # CONFIG_I2C_VIA is not set
 # CONFIG_I2C_VIAPRO is not set
 CONFIG_I2C_VOODOO3=m
+# CONFIG_I2C_DESIGNWARE is not set
 
 #
 # I2C Hardware Sensors Chip support
@@ -2046,6 +2083,7 @@ CONFIG_SENSORS_SMSC47M1=m
 CONFIG_SENSORS_SMSC47M192=m
 CONFIG_SENSORS_SMSC47B397=m
 CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TSL2550=m
 CONFIG_SENSORS_VIA686A=m
 CONFIG_SENSORS_VIA_CPUTEMP=m
@@ -2166,6 +2204,7 @@ CONFIG_RTC_DRV_V3020=m
 CONFIG_RTC_DRV_STK17TA8=m
 # CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_BQ4802=m
@@ -2222,6 +2261,7 @@ CONFIG_HANGCHECK_TIMER=m
 #
 # Multimedia devices
 #
+CONFIG_MEDIA_SUPPORT=m
 CONFIG_VIDEO_DEV=m
 # CONFIG_VIDEO_ADV_DEBUG is not set
 CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
@@ -2580,10 +2620,14 @@ CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_FM801=m
 CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_CTXFI=m
+CONFIG_SND_LX6464ES=m
 CONFIG_SND_HDA_INTEL=y
 CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_JACK=y
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_CA0110=y
 CONFIG_SND_HDA_CODEC_ANALOG=y
 CONFIG_SND_HDA_CODEC_SIGMATEL=y
 CONFIG_SND_HDA_CODEC_VIA=y
@@ -2681,6 +2725,8 @@ CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_UHCI_HCD=y
 # CONFIG_USB_SL811_CS is not set
 # CONFIG_USB_R8A66597_HCD is not set
+CONFIG_USB_XHCI_HCD=m
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 
 #
 # USB Device Class drivers
@@ -2726,14 +2772,15 @@ CONFIG_HID_FF=y
 CONFIG_HID_PID=y
 # CONFIG_HID_COMPAT is not set
 CONFIG_LOGITECH_FF=y
-CONFIG_GREENASIA_FF=m
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_PANTHERLORD_FF=y
 CONFIG_THRUSTMASTER_FF=y
 CONFIG_ZEROPLUS_FF=y
 CONFIG_USB_HIDDEV=y
 CONFIG_USB_IDMOUSE=m
-CONFIG_DRAGONRISE_FF=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_GREENASIA_FF=y
+CONFIG_SMARTJOYPLUS_FF=y
 
 #
 # USB Imaging devices
@@ -2817,6 +2864,7 @@ CONFIG_USB_NET_RNDIS_HOST=m
 CONFIG_USB_NET_CDC_SUBSET=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_INT51X1=m
 
 #
 # USB Host-to-Host Cables
@@ -2982,6 +3030,7 @@ CONFIG_SSB_DRIVER_PCICORE=y
 # CONFIG_MFD_PCF50633 is not set
 CONFIG_PCF50633_ADC=m
 CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
 CONFIG_INPUT_PCF50633_PMU=m
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 CONFIG_CHARGER_PCF50633=m
@@ -3127,6 +3176,7 @@ CONFIG_UFS_FS=m
 CONFIG_9P_FS=m
 CONFIG_FUSE_FS=m
 CONFIG_OMFS_FS=m
+CONFIG_CUSE=m
 
 #
 # Network File Systems
@@ -3136,6 +3186,7 @@ CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
 CONFIG_NFS_DIRECTIO=y
 CONFIG_NFSD=m
 CONFIG_NFSD_V3=y
@@ -3697,6 +3748,8 @@ CONFIG_DYNAMIC_FTRACE=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 # CONFIG_TRACE_BRANCH_PROFILING is not set
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_RING_BUFFER_BENCHMARK=m
 
 CONFIG_KPROBES=y
 
@@ -3721,6 +3774,7 @@ CONFIG_APM_POWER=m
 # CONFIG_BATTERY_DS2760 is not set
 CONFIG_BATTERY_PMU=m
 CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
 # CONFIG_PDA_POWER is not set
 
 CONFIG_AUXDISPLAY=y
@@ -3853,6 +3907,9 @@ CONFIG_REGULATOR_BQ24022=m
 CONFIG_REGULATOR_WM8350=m
 CONFIG_REGULATOR_WM8400=m
 CONFIG_REGULATOR_DA903X=m
+CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+CONFIG_REGULATOR_MAX1586=m
+CONFIG_REGULATOR_LP3971=m
 
 CONFIG_WM8350_POWER=m
 
@@ -3951,12 +4008,31 @@ CONFIG_SLOW_WORK=y
 
 CONFIG_STRIP_ASM_SYMS=y
 
+# CONFIG_RCU_FANOUT_EXACT is not set
+
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+
+CONFIG_FSNOTIFY=y
+
+CONFIG_IEEE802154=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+
+# CONFIG_GCOV_KERNEL is not set
+
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+
+# CONFIG_USB_SERIAL_QUATECH2 is not set
+# CONFIG_VT6655 is not set
+# CONFIG_USB_CPC is not set
+# CONFIG_RDC_17F3101X is not set
+# CONFIG_FB_UDL is not set
+
 #
 # added for xen pvops patch
 #
-CONFIG_PERF_COUNTERS=y
 CONFIG_XEN_DOM0=y
-CONFIG_XEN_DEV_EVTCHN=m
 CONFIG_ALLOW_WARNINGS=y
 CONFIG_XEN_BACKEND=y
 CONFIG_XEN_BLKDEV_BACKEND=y
@@ -3965,11 +4041,7 @@ CONFIG_RD_GZIP=y
 # CONFIG_RD_BZIP2 is not set
 # CONFIG_RD_LZMA is not set
 CONFIG_XEN_GNTDEV=y
-CONFIG_XEN_SYS_HYPERVISOR=y
 # CONFIG_ENABLE_EVENT_TRACING is not set
-# CONFIG_FUNCTION_PROFILER is not set
-CONFIG_CLASSIC_RCU=y
 CONFIG_XEN_PCI_PASSTHROUGH=y
 # CONFIG_XEN_PCI_PASSTHROUGH_DEBUG is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_X86_DS_SELFTEST is not set


Index: config-i686-PAE
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-i686-PAE,v
retrieving revision 1.1
retrieving revision 1.1.18.1
diff -u -p -r1.1 -r1.1.18.1
--- config-i686-PAE	12 Jul 2007 19:15:37 -0000	1.1
+++ config-i686-PAE	27 Jun 2009 11:05:10 -0000	1.1.18.1
@@ -3,3 +3,5 @@ CONFIG_M686=y
 # CONFIG_HIGHMEM4G is not set
 CONFIG_HIGHMEM64G=y
 
+CONFIG_XEN_DEV_EVTCHN=m
+CONFIG_XEN_SYS_HYPERVISOR=y


Index: config-ia64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-ia64-generic,v
retrieving revision 1.21.6.3
retrieving revision 1.21.6.4
diff -u -p -r1.21.6.3 -r1.21.6.4
--- config-ia64-generic	24 Apr 2009 22:27:04 -0000	1.21.6.3
+++ config-ia64-generic	27 Jun 2009 11:05:10 -0000	1.21.6.4
@@ -208,3 +208,5 @@ CONFIG_PARAVIRT_GUEST=y
 CONFIG_PARAVIRT=y
 
 CONFIG_DMAR_DEFAULT_ON=y
+
+CONFIG_RCU_FANOUT=64


Index: config-nodebug
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-nodebug,v
retrieving revision 1.31.6.2
retrieving revision 1.31.6.3
diff -u -p -r1.31.6.2 -r1.31.6.3
--- config-nodebug	24 Apr 2009 22:27:04 -0000	1.31.6.2
+++ config-nodebug	27 Jun 2009 11:05:10 -0000	1.31.6.3
@@ -49,3 +49,7 @@ CONFIG_DEBUG_NOTIFIERS=y
 CONFIG_DMA_API_DEBUG=y
 
 CONFIG_MMIOTRACE=y
+
+CONFIG_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK_TEST is not set
+


Index: config-powerpc-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc-generic,v
retrieving revision 1.33.6.6
retrieving revision 1.33.6.7
diff -u -p -r1.33.6.6 -r1.33.6.7
--- config-powerpc-generic	4 Jun 2009 19:34:57 -0000	1.33.6.6
+++ config-powerpc-generic	27 Jun 2009 11:05:10 -0000	1.33.6.7
@@ -320,3 +320,13 @@ CONFIG_DTL=y
 CONFIG_MMC_SDHCI_OF=m
 
 # CONFIG_CONSISTENT_SIZE_BOOL is not set
+
+CONFIG_CAN_SJA1000_OF_PLATFORM=m
+
+CONFIG_PPC_EMULATED_STATS=y
+
+CONFIG_SWIOTLB=y
+
+# CONFIG_RDS is not set
+
+CONFIG_PPC_DISABLE_WERROR=y


Index: config-powerpc32-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc32-generic,v
retrieving revision 1.30.6.1
retrieving revision 1.30.6.2
diff -u -p -r1.30.6.1 -r1.30.6.2
--- config-powerpc32-generic	12 Mar 2009 20:38:55 -0000	1.30.6.1
+++ config-powerpc32-generic	27 Jun 2009 11:05:10 -0000	1.30.6.2
@@ -167,6 +167,7 @@ CONFIG_MPC837x_MDS=y
 CONFIG_MPC837x_RDB=y
 CONFIG_SBC834x=y
 CONFIG_ASP834x=y
+CONFIG_KMETER1=y
 CONFIG_MPC8641_HPCN=y
 CONFIG_SBC8641D=y
 CONFIG_MPC8610_HPCD=y
@@ -183,3 +184,6 @@ CONFIG_MTD_NAND_FSL_UPM=m
 
 CONFIG_USB_GPIO_VBUS=m
 
+CONFIG_RCU_FANOUT=32
+
+CONFIG_PERF_COUNTERS=y


Index: config-powerpc64
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc64,v
retrieving revision 1.27.6.2
retrieving revision 1.27.6.3
diff -u -p -r1.27.6.2 -r1.27.6.3
--- config-powerpc64	24 Apr 2009 22:27:04 -0000	1.27.6.2
+++ config-powerpc64	27 Jun 2009 11:05:10 -0000	1.27.6.3
@@ -157,6 +157,7 @@ CONFIG_SPARSEMEM_VMEMMAP=y
 CONFIG_SPU_TRACE=m
 CONFIG_MTD_NAND_PASEMI=m
 CONFIG_EDAC_CELL=m
+CONFIG_EDAC_CPC925=m
 CONFIG_FRAME_WARN=2048
 
 CONFIG_PHYP_DUMP=y
@@ -180,3 +181,7 @@ CONFIG_RTC_DRV_PS3=y
 
 CONFIG_CRASH_DUMP=y
 CONFIG_RELOCATABLE=y
+
+CONFIG_RCU_FANOUT=64
+
+CONFIG_PERF_COUNTERS=y


Index: config-s390x
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-s390x,v
retrieving revision 1.11.6.2
retrieving revision 1.11.6.3
diff -u -p -r1.11.6.2 -r1.11.6.3
--- config-s390x	24 Apr 2009 22:27:04 -0000	1.11.6.2
+++ config-s390x	27 Jun 2009 11:05:10 -0000	1.11.6.3
@@ -218,3 +218,13 @@ CONFIG_CHSC_SCH=m
 # CONFIG_MISDN_HFCMULTI is not set
 
 CONFIG_HVC_IUCV=y
+
+CONFIG_RCU_FANOUT=64
+
+CONFIG_SECCOMP=y
+
+CONFIG_PM=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION="/dev/jokes"
+
+CONFIG_PERF_COUNTERS=y


Index: config-sparc64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-sparc64-generic,v
retrieving revision 1.21.6.3
retrieving revision 1.21.6.4
diff -u -p -r1.21.6.3 -r1.21.6.4
--- config-sparc64-generic	24 Apr 2009 22:27:04 -0000	1.21.6.3
+++ config-sparc64-generic	27 Jun 2009 11:05:10 -0000	1.21.6.4
@@ -197,3 +197,5 @@ CONFIG_US3_MC=y
 CONFIG_SENSORS_ULTRA45=m
 CONFIG_LEDS_SUNFIRE=m
 CONFIG_TADPOLE_TS102_UCTRL=m
+
+CONFIG_RCU_FANOUT=64


Index: config-x86-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86-generic,v
retrieving revision 1.68.6.11
retrieving revision 1.68.6.12
diff -u -p -r1.68.6.11 -r1.68.6.12
--- config-x86-generic	13 Jun 2009 21:22:33 -0000	1.68.6.11
+++ config-x86-generic	27 Jun 2009 11:05:10 -0000	1.68.6.12
@@ -88,7 +88,7 @@ CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
 
 CONFIG_DMAR=y
-CONFIG_DMAR_GFX_WA=y
+# CONFIG_DMAR_GFX_WA is not set
 CONFIG_DMAR_FLOPPY_WA=y
 # CONFIG_DMAR_DEFAULT_ON is not set
 
@@ -461,3 +461,15 @@ CONFIG_POWER_TRACER=y
 CONFIG_HW_BRANCH_TRACER=y
 
 # CONFIG_SPARSE_IRQ is not set
+
+CONFIG_RCU_FANOUT=32
+
+# CONFIG_IOMMU_STRESS is not set
+
+CONFIG_PERF_COUNTERS=y
+
+# CONFIG_X86_OLD_MCE is not set
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+# CONFIG_X86_ANCIENT_MCE is not set
+# CONFIG_X86_MCE_INJECT is not set


Index: config-x86_64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86_64-generic,v
retrieving revision 1.68.2.10
retrieving revision 1.68.2.11
diff -u -p -r1.68.2.10 -r1.68.2.11
--- config-x86_64-generic	13 Jun 2009 21:22:33 -0000	1.68.2.10
+++ config-x86_64-generic	27 Jun 2009 11:05:10 -0000	1.68.2.11
@@ -207,6 +207,8 @@ CONFIG_EDAC_I82975X=m
 CONFIG_EDAC_R82600=m
 CONFIG_EDAC_AMD8131=m
 CONFIG_EDAC_AMD8111=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 
 CONFIG_SCHED_MC=y
 
@@ -300,6 +302,8 @@ CONFIG_XEN_BLKDEV_FRONTEND=m
 CONFIG_XEN_NETDEV_FRONTEND=m
 CONFIG_XENFS=m
 CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_DEV_EVTCHN=m
+CONFIG_XEN_SYS_HYPERVISOR=y
 
 CONFIG_DMADEVICES=y
 CONFIG_INTEL_IOATDMA=m
@@ -365,3 +369,11 @@ CONFIG_HW_BRANCH_TRACER=y
 CONFIG_X86_X2APIC=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_NUMA_MIGRATE_IRQ_DESC=y
+
+CONFIG_RCU_FANOUT=64
+
+# CONFIG_IOMMU_STRESS is not set
+
+CONFIG_PERF_COUNTERS=y
+
+# CONFIG_X86_MCE_INJECT is not set

drm-no-gem-on-i8xx.patch:

Index: drm-no-gem-on-i8xx.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-no-gem-on-i8xx.patch,v
retrieving revision 1.1
retrieving revision 1.1.6.1
diff -u -p -r1.1 -r1.1.6.1
--- drm-no-gem-on-i8xx.patch	9 Feb 2009 04:45:32 -0000	1.1
+++ drm-no-gem-on-i8xx.patch	27 Jun 2009 11:05:10 -0000	1.1.6.1
@@ -3,16 +3,16 @@ index cc0adb4..9303063 100644
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
 @@ -1108,8 +1108,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
- 	/* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
- 	dev_priv->has_gem = 0;
- #else
+ 			 "performance may suffer.\n");
+ 	}
+ 
 -	/* enable GEM by default */
 -	dev_priv->has_gem = 1;
 +	/* enable GEM by default, except on I8xx */
 +	dev_priv->has_gem = !IS_I8XX(dev) ? 1 : 0;
- #endif
  
- 	i915_gem_load(dev);
+ 	dev->driver->get_vblank_counter = i915_get_vblank_counter;
+ 	dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
 index a70bf77..84664fe 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h

drm-nouveau.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.8.6.10 -r 1.8.6.11 drm-nouveau.patch
Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-nouveau.patch,v
retrieving revision 1.8.6.10
retrieving revision 1.8.6.11
diff -u -p -r1.8.6.10 -r1.8.6.11
--- drm-nouveau.patch	24 Apr 2009 22:27:08 -0000	1.8.6.10
+++ drm-nouveau.patch	27 Jun 2009 11:05:10 -0000	1.8.6.11
@@ -1,8 +1,8 @@
 diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index a74980b..36582ff 100644
+index 39b393d..3339338 100644
 --- a/drivers/gpu/drm/Kconfig
 +++ b/drivers/gpu/drm/Kconfig
-@@ -133,3 +133,18 @@ config DRM_SAVAGE
+@@ -143,3 +143,22 @@ config DRM_SAVAGE
  	help
  	  Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
  	  chipset. If M is selected the module will be called savage.
@@ -10,6 +10,10 @@ index a74980b..36582ff 100644
 +config DRM_NOUVEAU
 +	tristate "Nouveau (nVidia) cards"
 +	depends on DRM
++	select DRM_TTM
++	select FB_CFB_FILLRECT
++	select FB_CFB_COPYAREA
++	select FB_CFB_IMAGEBLIT
 +	help
 +	  Choose this option for open-source nVidia support.
 +
@@ -22,17 +26,16 @@ index a74980b..36582ff 100644
 +	userspaces with this enabled will cause pain.
 +
 diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
-index d6788df..97aa0c8 100644
+index fe23f29..4c6a38d 100644
 --- a/drivers/gpu/drm/Makefile
 +++ b/drivers/gpu/drm/Makefile
-@@ -27,4 +27,5 @@ obj-$(CONFIG_DRM_I915)  += i915/
+@@ -27,3 +27,4 @@ obj-$(CONFIG_DRM_I915)  += i915/
  obj-$(CONFIG_DRM_SIS)   += sis/
  obj-$(CONFIG_DRM_SAVAGE)+= savage/
  obj-$(CONFIG_DRM_VIA)	+=via/
 +obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
- 
 diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
-index 4d2161f..ac503e2 100644
+index 6246e3f..436e2fe 100644
 --- a/drivers/gpu/drm/drm_bufs.c
 +++ b/drivers/gpu/drm/drm_bufs.c
 @@ -51,38 +51,24 @@ resource_size_t drm_get_resource_len(struct drm_device *dev, unsigned int resour
@@ -80,7 +83,7 @@ index 4d2161f..ac503e2 100644
  
  static int drm_map_handle(struct drm_device *dev, struct drm_hash_item *hash,
  			  unsigned long user_token, int hashed_handle, int shm)
-@@ -349,7 +335,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
+@@ -357,7 +343,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
  	/* We do it here so that dev->struct_mutex protects the increment */
  	user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle :
  		map->offset;
@@ -89,157 +92,12 @@ index 4d2161f..ac503e2 100644
  			     (map->type == _DRM_SHM));
  	if (ret) {
  		if (map->type == _DRM_REGISTERS)
-diff --git a/drivers/gpu/drm/drm_fence.c b/drivers/gpu/drm/drm_fence.c
-index f1c386c..fd62fd9 100644
---- a/drivers/gpu/drm/drm_fence.c
-+++ b/drivers/gpu/drm/drm_fence.c
-@@ -369,7 +369,7 @@ int drm_fence_object_wait(struct drm_fence_object *fence,
- 	struct drm_fence_manager *fm = &dev->fm;
- 	struct drm_fence_class_manager *fc = &fm->fence_class[fence->fence_class];
- 	int ret = 0;
--	unsigned long _end = 3 * DRM_HZ;
-+	unsigned long _end = jiffies + 3 * DRM_HZ;
- 
- 	if (mask & ~fence->type) {
- 		DRM_ERROR("Wait trying to extend fence type"
-diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
-index c1173d8..2e4e667 100644
---- a/drivers/gpu/drm/drm_gem.c
-+++ b/drivers/gpu/drm/drm_gem.c
-@@ -280,48 +280,58 @@ drm_gem_close_ioctl(struct drm_device *dev, void *data,
-  * is freed, the name goes away.
-  */
- int
--drm_gem_flink_ioctl(struct drm_device *dev, void *data,
--		    struct drm_file *file_priv)
-+drm_gem_object_name(struct drm_device *dev, struct drm_gem_object *obj,
-+		    uint64_t *name)
- {
--	struct drm_gem_flink *args = data;
--	struct drm_gem_object *obj;
- 	int ret;
- 
--	if (!(dev->driver->driver_features & DRIVER_GEM))
--		return -ENODEV;
--
--	obj = drm_gem_object_lookup(dev, file_priv, args->handle);
--	if (obj == NULL)
--		return -EBADF;
--
- again:
--	if (idr_pre_get(&dev->object_name_idr, GFP_KERNEL) == 0) {
--		ret = -ENOMEM;
--		goto err;
--	}
-+	if (idr_pre_get(&dev->object_name_idr, GFP_KERNEL) == 0)
-+		return -ENOMEM;
- 
- 	spin_lock(&dev->object_name_lock);
- 	if (!obj->name) {
- 		ret = idr_get_new_above(&dev->object_name_idr, obj, 1,
- 					&obj->name);
--		args->name = (uint64_t) obj->name;
-+		*name = (uint64_t) obj->name;
- 		spin_unlock(&dev->object_name_lock);
- 
- 		if (ret == -EAGAIN)
- 			goto again;
- 
- 		if (ret != 0)
--			goto err;
-+			return ret;
- 
- 		/* Allocate a reference for the name table.  */
- 		drm_gem_object_reference(obj);
- 	} else {
--		args->name = (uint64_t) obj->name;
-+		*name = (uint64_t) obj->name;
- 		spin_unlock(&dev->object_name_lock);
--		ret = 0;
- 	}
- 
--err:
-+	return 0;
-+}
-+EXPORT_SYMBOL(drm_gem_object_name);
-+
-+int
-+drm_gem_flink_ioctl(struct drm_device *dev, void *data,
-+		    struct drm_file *file_priv)
-+{
-+	struct drm_gem_flink *args = data;
-+	struct drm_gem_object *obj;
-+	uint64_t name;
-+	int ret;
-+
-+	if (!(dev->driver->driver_features & DRIVER_GEM))
-+		return -ENODEV;
-+
-+	obj = drm_gem_object_lookup(dev, file_priv, args->handle);
-+	if (obj == NULL)
-+		return -EBADF;
-+
-+	ret = drm_gem_object_name(dev, obj, &name);
-+	args->name = name;
-+
- 	mutex_lock(&dev->struct_mutex);
- 	drm_gem_object_unreference(obj);
- 	mutex_unlock(&dev->struct_mutex);
-diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
-index 5d45cbf..e3b0a76 100644
---- a/drivers/gpu/drm/drm_stub.c
-+++ b/drivers/gpu/drm/drm_stub.c
-@@ -406,14 +406,14 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
- 	if (dev->driver->load) {
- 		ret = dev->driver->load(dev, ent->driver_data);
- 		if (ret)
--			goto err_g3;
-+			goto err_g4;
- 	}
- 
-         /* setup the grouping for the legacy output */
- 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
- 		ret = drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group);
- 		if (ret)
--			goto err_g3;
-+			goto err_g4;
- 	}
- 
- 	list_add_tail(&dev->driver_item, &driver->device_list);
-@@ -424,8 +424,11 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
- 
- 	return 0;
- 
--err_g3:
-+err_g4:
- 	drm_put_minor(&dev->primary);
-+err_g3:
-+	if (drm_core_check_feature(dev, DRIVER_MODESET))
-+		drm_put_minor(&dev->control);
- err_g2:
- 	pci_disable_device(pdev);
- err_g1:
-@@ -507,11 +510,11 @@ void drm_put_dev(struct drm_device *dev)
- 		dev->agp = NULL;
- 	}
- 
--	drm_ht_remove(&dev->map_hash);
--	drm_ctxbitmap_cleanup(dev);
[...35245 lines suppressed...]
++#define NV_PGRAPH_CTX_CONTROL_NV04	0x00400170
++#define NV_PGRAPH_ABS_UCLIP_XMIN	0x0040053C
++#define NV_PGRAPH_ABS_UCLIP_YMIN	0x00400540
++#define NV_PGRAPH_ABS_UCLIP_XMAX	0x00400544
++#define NV_PGRAPH_ABS_UCLIP_YMAX	0x00400548
++#define NV_PGRAPH_BETA_AND		0x00400608
++#define NV_PGRAPH_LIMIT_VIOL_PIX	0x00400610
++#define NV_PGRAPH_BOFFSET0		0x00400640
++#define NV_PGRAPH_BOFFSET1		0x00400644
++#define NV_PGRAPH_BOFFSET2		0x00400648
++#define NV_PGRAPH_BLIMIT0		0x00400684
++#define NV_PGRAPH_BLIMIT1		0x00400688
++#define NV_PGRAPH_BLIMIT2		0x0040068c
++#define NV_PGRAPH_STATUS		0x00400700
++#define NV_PGRAPH_SURFACE		0x00400710
++#define NV_PGRAPH_STATE			0x00400714
++#define NV_PGRAPH_FIFO			0x00400720
++#define NV_PGRAPH_PATTERN_SHAPE		0x00400810
++#define NV_PGRAPH_TILE			0x00400b00
++
++#define NV_PVIDEO_INTR_EN		0x00008140
++#define NV_PVIDEO_BUFFER		0x00008700
++#define NV_PVIDEO_STOP			0x00008704
++#define NV_PVIDEO_UVPLANE_BASE(buff)	(0x00008800+(buff)*4)
++#define NV_PVIDEO_UVPLANE_LIMIT(buff)	(0x00008808+(buff)*4)
++#define NV_PVIDEO_UVPLANE_OFFSET_BUFF(buff)	(0x00008820+(buff)*4)
++#define NV_PVIDEO_BASE(buff)		(0x00008900+(buff)*4)
++#define NV_PVIDEO_LIMIT(buff)		(0x00008908+(buff)*4)
++#define NV_PVIDEO_LUMINANCE(buff)	(0x00008910+(buff)*4)
++#define NV_PVIDEO_CHROMINANCE(buff)	(0x00008918+(buff)*4)
++#define NV_PVIDEO_OFFSET_BUFF(buff)	(0x00008920+(buff)*4)
++#define NV_PVIDEO_SIZE_IN(buff)		(0x00008928+(buff)*4)
++#define NV_PVIDEO_POINT_IN(buff)	(0x00008930+(buff)*4)
++#define NV_PVIDEO_DS_DX(buff)		(0x00008938+(buff)*4)
++#define NV_PVIDEO_DT_DY(buff)		(0x00008940+(buff)*4)
++#define NV_PVIDEO_POINT_OUT(buff)	(0x00008948+(buff)*4)
++#define NV_PVIDEO_SIZE_OUT(buff)	(0x00008950+(buff)*4)
++#define NV_PVIDEO_FORMAT(buff)		(0x00008958+(buff)*4)
++#	define NV_PVIDEO_FORMAT_PLANAR			(1 << 0)
++#	define NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8	(1 << 16)
++#	define NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY	(1 << 20)
++#	define NV_PVIDEO_FORMAT_MATRIX_ITURBT709	(1 << 24)
++#define NV_PVIDEO_COLOR_KEY		0x00008B00
++
++/* NV04 overlay defines from VIDIX & Haiku */
++#define NV_PVIDEO_INTR_EN_0		0x00680140
++#define NV_PVIDEO_STEP_SIZE		0x00680200
++#define NV_PVIDEO_CONTROL_Y		0x00680204
++#define NV_PVIDEO_CONTROL_X		0x00680208
++#define NV_PVIDEO_BUFF0_START_ADDRESS	0x0068020c
++#define NV_PVIDEO_BUFF0_PITCH_LENGTH	0x00680214
++#define NV_PVIDEO_BUFF0_OFFSET		0x0068021c
++#define NV_PVIDEO_BUFF1_START_ADDRESS	0x00680210
++#define NV_PVIDEO_BUFF1_PITCH_LENGTH	0x00680218
++#define NV_PVIDEO_BUFF1_OFFSET		0x00680220
++#define NV_PVIDEO_OE_STATE		0x00680224
++#define NV_PVIDEO_SU_STATE		0x00680228
++#define NV_PVIDEO_RM_STATE		0x0068022c
++#define NV_PVIDEO_WINDOW_START		0x00680230
++#define NV_PVIDEO_WINDOW_SIZE		0x00680234
++#define NV_PVIDEO_FIFO_THRES_SIZE	0x00680238
++#define NV_PVIDEO_FIFO_BURST_LENGTH	0x0068023c
++#define NV_PVIDEO_KEY			0x00680240
++#define NV_PVIDEO_OVERLAY		0x00680244
++#define NV_PVIDEO_RED_CSC_OFFSET	0x00680280
++#define NV_PVIDEO_GREEN_CSC_OFFSET	0x00680284
++#define NV_PVIDEO_BLUE_CSC_OFFSET	0x00680288
++#define NV_PVIDEO_CSC_ADJUST		0x0068028c
++
++#endif
+diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
+index c1c407f..cbdfbd2 100644
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -90,6 +90,7 @@ int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo, bool interruptible)
+ 	}
+ 	return 0;
+ }
++EXPORT_SYMBOL(ttm_bo_wait_unreserved);
+ 
+ static void ttm_bo_add_to_lru(struct ttm_buffer_object *bo)
+ {
+@@ -811,6 +812,7 @@ int ttm_bo_wait_cpu(struct ttm_buffer_object *bo, bool no_wait)
+ 
+ 	return ret;
+ }
++EXPORT_SYMBOL(ttm_bo_wait_cpu);
+ 
+ int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
+ 		       uint32_t proposed_placement,
+@@ -1593,12 +1595,14 @@ int ttm_bo_synccpu_write_grab(struct ttm_buffer_object *bo, bool no_wait)
+ 	ttm_bo_unreserve(bo);
+ 	return ret;
+ }
++EXPORT_SYMBOL(ttm_bo_synccpu_write_grab);
+ 
+ void ttm_bo_synccpu_write_release(struct ttm_buffer_object *bo)
+ {
+ 	if (atomic_dec_and_test(&bo->cpu_writers))
+ 		wake_up_all(&bo->event_queue);
+ }
++EXPORT_SYMBOL(ttm_bo_synccpu_write_release);
+ 
+ /**
+  * A buffer object shrink method that tries to swap out the first
 diff --git a/include/drm/Kbuild b/include/drm/Kbuild
 index b940fdf..cfa6af4 100644
 --- a/include/drm/Kbuild
@@ -42929,10 +52405,10 @@ index b940fdf..cfa6af4 100644
  unifdef-y += via_drm.h
 +unifdef-y += nouveau_drm.h
 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index b61b0c6..5b7ce2d 100644
+index 45b67d9..46e72e9 100644
 --- a/include/drm/drmP.h
 +++ b/include/drm/drmP.h
-@@ -1267,6 +1267,8 @@ extern void drm_idlelock_release(struct drm_lock_data *lock_data);
+@@ -1216,6 +1216,8 @@ extern void drm_idlelock_release(struct drm_lock_data *lock_data);
  extern int drm_i_have_hw_lock(struct drm_device *dev, struct drm_file *file_priv);
  
  				/* Buffer management support (drm_bufs.h) */
@@ -42943,10 +52419,10 @@ index b61b0c6..5b7ce2d 100644
  extern int drm_addmap(struct drm_device *dev, resource_size_t offset,
 diff --git a/include/drm/nouveau_drm.h b/include/drm/nouveau_drm.h
 new file mode 100644
-index 0000000..4147f35
+index 0000000..dc6a194
 --- /dev/null
 +++ b/include/drm/nouveau_drm.h
-@@ -0,0 +1,299 @@
+@@ -0,0 +1,298 @@
 +/*
 + * Copyright 2005 Stephane Marchesin.
 + * All Rights Reserved.
@@ -42974,7 +52450,7 @@ index 0000000..4147f35
 +#ifndef __NOUVEAU_DRM_H__
 +#define __NOUVEAU_DRM_H__
 +
-+#define NOUVEAU_DRM_HEADER_PATCHLEVEL 12
++#define NOUVEAU_DRM_HEADER_PATCHLEVEL 14
 +
 +struct drm_nouveau_channel_alloc {
 +	uint32_t     fb_ctxdma_handle;
@@ -43102,17 +52578,22 @@ index 0000000..4147f35
 +#define NOUVEAU_GEM_DOMAIN_CPU       (1 << 0)
 +#define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1)
 +#define NOUVEAU_GEM_DOMAIN_GART      (1 << 2)
-+#define NOUVEAU_GEM_DOMAIN_NOMAP     (1 << 3)
-+#define NOUVEAU_GEM_DOMAIN_TILE      (1 << 30)
-+#define NOUVEAU_GEM_DOMAIN_TILE_ZETA (1 << 31)
++#define NOUVEAU_GEM_DOMAIN_MAPPABLE  (1 << 3)
 +
-+struct drm_nouveau_gem_new {
++struct drm_nouveau_gem_info {
++	uint32_t handle;
++	uint32_t domain;
 +	uint64_t size;
++	uint64_t offset;
++	uint64_t map_handle;
++	uint32_t tile_mode;
++	uint32_t tile_flags;
++};
++
++struct drm_nouveau_gem_new {
++	struct drm_nouveau_gem_info info;
 +	uint32_t channel_hint;
 +	uint32_t align;
-+	uint32_t handle;
-+	uint32_t domain;
-+	uint32_t offset;
 +};
 +
 +struct drm_nouveau_gem_pushbuf_bo {
@@ -43172,12 +52653,6 @@ index 0000000..4147f35
 +	uint32_t handle;
 +};
 +
-+struct drm_nouveau_gem_mmap {
-+	uint32_t handle;
-+	uint32_t pad;
-+	uint64_t vaddr;
-+};
-+
 +struct drm_nouveau_gem_cpu_prep {
 +	uint32_t handle;
 +};
@@ -43240,9 +52715,9 @@ index 0000000..4147f35
 +#define DRM_NOUVEAU_GEM_PUSHBUF_CALL   0x42
 +#define DRM_NOUVEAU_GEM_PIN            0x43
 +#define DRM_NOUVEAU_GEM_UNPIN          0x44
-+#define DRM_NOUVEAU_GEM_MMAP           0x45
-+#define DRM_NOUVEAU_GEM_CPU_PREP       0x46
-+#define DRM_NOUVEAU_GEM_CPU_FINI       0x47
-+#define DRM_NOUVEAU_GEM_TILE           0x48
++#define DRM_NOUVEAU_GEM_CPU_PREP       0x45
++#define DRM_NOUVEAU_GEM_CPU_FINI       0x46
++#define DRM_NOUVEAU_GEM_TILE           0x47
++#define DRM_NOUVEAU_GEM_INFO           0x48
 +
 +#endif /* __NOUVEAU_DRM_H__ */


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.33
retrieving revision 1.1294.2.34
diff -u -p -r1.1294.2.33 -r1.1294.2.34
--- kernel.spec	13 Jun 2009 21:22:33 -0000	1.1294.2.33
+++ kernel.spec	27 Jun 2009 11:05:14 -0000	1.1294.2.34
@@ -3,7 +3,7 @@ Summary: The Linux kernel
 # For a stable, released kernel, released_kernel should be 1. For rawhide
 # and/or a kernel built from an rc or git snapshot, released_kernel should
 # be 0.
-%define released_kernel 1
+%define released_kernel 0
 
 # Versions of various parts
 
@@ -57,9 +57,9 @@ Summary: The Linux kernel
 # The next upstream release sublevel (base_sublevel+1)
 %define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
 # The rc snapshot level
-%define rcrev 8
+%define rcrev 1
 # The git snapshot level
-%define gitrev 6
+%define gitrev 2
 # Set rpm version accordingly
 %define rpmversion 2.6.%{upstream_sublevel}
 %endif
@@ -88,6 +88,8 @@ Summary: The Linux kernel
 %define with_headers   %{?_without_headers:   0} %{?!_without_headers:   1}
 # kernel-firmware
 %define with_firmware  %{?_with_firmware:  1} %{?!_with_firmware:  0}
+# tools/perf
+%define with_perf      %{?_without_perf:      0} %{?!_without_perf:      1}
 # kernel-debuginfo
 %define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1}
 # kernel-bootwrapper (for creating zImages from kernel + initrd)
@@ -378,6 +380,7 @@ Summary: The Linux kernel
 %define with_pae 0
 %define with_kdump 0
 %define with_debuginfo 0
+%define with_perf 0
 %define _enable_debug_packages 0
 %endif
 
@@ -438,7 +441,7 @@ Summary: The Linux kernel
 Provides: kernel = %{rpmversion}-%{pkg_release}\
 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{pkg_release}%{?1:.%{1}}\
 Provides: kernel-drm = 4.3.0\
-Provides: kernel-drm-nouveau = 12\
+Provides: kernel-drm-nouveau = 14\
 Provides: kernel-modeset = 1\
 Provides: kernel-uname-r = %{KVERREL}%{?1:.%{1}}\
 Requires(pre): %{kernel_prereq}\
@@ -484,6 +487,9 @@ BuildRequires: xmlto
 %if %{with_sparse}
 BuildRequires: sparse >= 0.4.1
 %endif
+%if %{with_perf}
+BuildRequires: elfutils-libelf-devel zlib-devel
+%endif
 BuildConflicts: rhbuildsys(DiskFree) < 500Mb
 
 %define fancy_debuginfo 0
@@ -591,6 +597,8 @@ Patch20: linux-2.6-hotfixes.patch
 Patch21: linux-2.6-tracehook.patch
 Patch22: linux-2.6-utrace.patch
 
+Patch30: sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch
+
 Patch41: linux-2.6-sysrq-c.patch
 
 Patch141: linux-2.6-ps3-storage-alias.patch
@@ -635,11 +643,12 @@ Patch681: linux-2.6-mac80211-age-scan-re
 
 Patch800: linux-2.6-crash-driver.patch
 
+Patch900: linux-2.6-pci-cacheline-sizing.patch
+
 Patch1000: linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch
 
 Patch1515: linux-2.6.29-lirc.patch
 
-Patch1700: agp-set_memory_ucwb.patch
 # nouveau + drm fixes
 Patch1811: drm-next.patch
 Patch1812: drm-modesetting-radeon.patch
@@ -668,23 +677,19 @@ Patch2903: linux-2.6-revert-dvb-net-kabi
 # fs fixes
 Patch3000: linux-2.6-btrfs-experimental-branch.patch
 
+Patch4000: linux-2.6-kmemleak-improvements.patch
+
 #snmp fixes
 Patch10000: linux-2.6-missing-rfc2465-stats.patch
 
 # VIA Nano / VX8xx updates
-Patch11000: linux-2.6-cpufreq-enable-acpi-pstates-on-via.patch
 Patch11010: via-hwmon-temp-sensor.patch
-Patch11020: via-padlock-10-enable-64bit.patch
-Patch11030: via-padlock-20-add-x86-dependency.patch
-Patch11040: via-padlock-30-fix-might-sleep.patch
-Patch11050: via-padlock-40-nano-ecb.patch
-Patch11060: via-padlock-50-nano-cbc.patch
-Patch11070: via-rng-enable-64bit.patch
-Patch11080: via-sdmmc.patch
-
-Patch9997: xen.pvops.pre.patch
-Patch9998: xen.pvops.patch
-Patch9999: xen.pvops.post.patch
+
+# patches headed upstream
+
+Patch19997: xen.pvops.pre.patch
+Patch19998: xen.pvops.patch
+Patch19999: xen.pvops.post.patch
 %endif
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1089,22 +1094,16 @@ ApplyPatch linux-2.6-hotfixes.patch
 ApplyPatch linux-2.6-tracehook.patch
 ApplyPatch linux-2.6-utrace.patch
 
+ApplyPatch sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch
+
 # enable sysrq-c on all kernels, not only kexec
-ApplyPatch linux-2.6-sysrq-c.patch
+#ApplyPatch linux-2.6-sysrq-c.patch
 
-ApplyPatch linux-2.6-missing-rfc2465-stats.patch
+#ApplyPatch linux-2.6-missing-rfc2465-stats.patch
 
 # Architecture patches
 # x86(-64)
-ApplyPatch linux-2.6-cpufreq-enable-acpi-pstates-on-via.patch
 ApplyPatch via-hwmon-temp-sensor.patch
-ApplyPatch via-padlock-10-enable-64bit.patch
-ApplyPatch via-padlock-20-add-x86-dependency.patch
-ApplyPatch via-padlock-30-fix-might-sleep.patch
-ApplyPatch via-padlock-40-nano-ecb.patch
-ApplyPatch via-padlock-50-nano-cbc.patch
-ApplyPatch via-rng-enable-64bit.patch
-ApplyPatch via-sdmmc.patch
 
 #
 # PowerPC
@@ -1143,6 +1142,8 @@ ApplyPatch linux-2.6-execshield.patch
 # btrfs
 #ApplyPatch linux-2.6-btrfs-experimental-branch.patch
 
+ApplyPatch linux-2.6-kmemleak-improvements.patch
+
 # USB
 
 # ACPI
@@ -1154,7 +1155,7 @@ ApplyPatch linux-2.6-debug-sizeof-struct
 #ApplyPatch linux-2.6-debug-nmi-timeout.patch
 #ApplyPatch linux-2.6-debug-taint-vm.patch
 ApplyPatch linux-2.6-debug-spinlock-taint.patch
-ApplyPatch linux-2.6-debug-vm-would-have-oomkilled.patch
+#ApplyPatch linux-2.6-debug-vm-would-have-oomkilled.patch
 ApplyPatch linux-2.6-debug-always-inline-kzalloc.patch
 
 #
@@ -1183,7 +1184,7 @@ ApplyPatch hda_intel-prealloc-4mb-dmabuf
 ApplyPatch linux-2.6-input-kill-stupid-messages.patch
 
 # Get away from having to poll Toshibas
-ApplyPatch linux-2.6-input-fix-toshiba-hotkeys.patch
+#ApplyPatch linux-2.6-input-fix-toshiba-hotkeys.patch
 
 # Allow to use 480600 baud on 16C950 UARTs
 ApplyPatch linux-2.6-serial-460800.patch
@@ -1214,19 +1215,21 @@ ApplyPatch linux-2.6-ata-quirk.patch
 # /dev/crash driver.
 ApplyPatch linux-2.6-crash-driver.patch
 
+# Determine cacheline sizes in a generic manner.
+ApplyPatch linux-2.6-pci-cacheline-sizing.patch
+
 # neigh: fix state transition INCOMPLETE->FAILED via Netlink request
-ApplyPatch linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch
+#ApplyPatch linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch
 
 # http://www.lirc.org/
-ApplyPatch linux-2.6.29-lirc.patch
+#ApplyPatch linux-2.6.29-lirc.patch
 
 ApplyPatch linux-2.6-e1000-ich9.patch
 
-ApplyPatch agp-set_memory_ucwb.patch
 # Nouveau DRM + drm fixes
 #ApplyPatch drm-next.patch
 #ApplyPatch drm-modesetting-radeon.patch
-#ApplyPatch drm-nouveau.patch
+ApplyPatch drm-nouveau.patch
 # pm broken on my thinkpad t60p - airlied
 #ApplyPatch drm-radeon-pm.patch
 ApplyPatch drm-no-gem-on-i8xx.patch
@@ -1246,6 +1249,8 @@ ApplyPatch linux-2.6-silence-acpi-blackl
 #ApplyPatch linux-2.6-v4l-dvb-experimental.patch
 #ApplyPatch linux-2.6-revert-dvb-net-kabi-change.patch
 
+# temporary fixes, headed upstream
+
 ApplyPatch xen.pvops.pre.patch
 ApplyPatch xen.pvops.patch
 ApplyPatch xen.pvops.post.patch
@@ -1358,6 +1363,17 @@ BuildKernel() {
     make -s ARCH=$Arch V=1 %{?_smp_mflags} $MakeTarget %{?sparse_mflags}
     make -s ARCH=$Arch V=1 %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
 
+%if %{with_perf}
+    pushd tools/perf
+# make sure the scripts are executable... won't be in tarball until 2.6.31 :/
+    chmod +x util/generate-cmdlist.sh util/PERF-VERSION-GEN
+    make -s V=1 %{?_smp_mflags} perf
+#later#    make -s V=1 %{?_smp_mflags} doc
+    mkdir -p $RPM_BUILD_ROOT/usr/libexec/
+    install -m 755 perf $RPM_BUILD_ROOT/usr/libexec/perf-$KernelVer
+    popd
+%endif
+
     # Start installing the results
 %if %{with_debuginfo}
     mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/boot
@@ -1780,6 +1796,9 @@ fi
 %defattr(-,root,root)\
 /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\
 /boot/System.map-%{KVERREL}%{?2:.%{2}}\
+%if %{with_perf}\
+/usr/libexec/perf-%{KVERREL}%{?2:.%{2}}\
+%endif\
 #/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\
 /boot/config-%{KVERREL}%{?2:.%{2}}\
 %dir /lib/modules/%{KVERREL}%{?2:.%{2}}\
@@ -1834,6 +1853,242 @@ fi
 # and build.
 
 %changelog
+* Sat Jun 27 2009 Michael Young <m.a.young at durham.ac.uk>
+- switch pvops to xen/rebase/master branch
+- rebase pvops on 2.6.31-rc1-git2
+
+* Sat Jun 27 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31-0.33.rc1.git2
+- drm-nouveau.patch: fix conflicts from 2.6.31-rc1-git2
+
+* Fri Jun 26 2009 Dave Jones <davej at redhat.com> 2.6.31-0.31.rc1.git2
+- Further improvements to kmemleak
+
+* Fri Jun 26 2009 Dave Jones <davej at redhat.com> 2.6.31-0.30.rc1.git2
+- 2.6.31-rc1-git2
+
+* Fri Jun 26 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: latest upstream + reenable
+
+* Thu Jun 25 2009 Dave Jones <davej at redhat.com> 2.6.31-0.29.rc1
+- Make kmemleak scan process stacks by default.
+  Should reduce false positives (which does also increase false negatives,
+  but that's at least less noisy)
+
+* Wed Jun 24 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.28.rc1
+- 2.6.31-rc1
+- linux-2.6-utrace.patch: rebase on kernel/Makefile changes
+- config changes:
+ - generic:
+  - CONFIG_DM_LOG_USERSPACE=m
+  - CONFIG_DM_MULTIPATH_QL=m
+  - CONFIG_DM_MULTIPATH_ST=m
+  - CONFIG_BATTERY_MAX17040=m
+  - CONFIG_I2C_DESIGNWARE is off (depends on clk.h)
+
+* Wed Jun 24 2009 Kyle McMartin <kyle at redhat.com>
+- Move perf to /usr/libexec/perf-$KernelVer.
+
+* Wed Jun 24 2009 Kyle McMartin <kyle at redhat.com>
+- config changes:
+ - generic:
+  - CONFIG_SCSI_DEBUG=m (was off, requested by davidz)
+
+* Wed Jun 24 2009 Dave Jones <davej at redhat.com> 2.6.31-0.22.rc0.git22
+- 2.6.30-git22
+
+* Tue Jun 23 2009 Dave Jones <davej at redhat.com> 2.6.31-0.22.rc0.git20
+- 2.6.30-git20
+
+* Mon Jun 22 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.24.rc0.git18
+- Enable tools/perf, installed as /bin/perf-$KernelVer. Docs and a /bin/perf
+  wrapper come next if this builds ok.
+
+* Mon Jun 22 2009 Kyle McMartin <kyle at redhat.com>
+- sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch: pull in
+  two fixes from Mike Galbraith from tip.git
+
+* Sun Jun 21 2009 Dave Jones <davej at redhat.com> 2.6.31-0.21.rc0.git18
+- Add patch to possibly fix the pktlen problem on via-velocity.
+
+* Sun Jun 21 2009 Dave Jones <davej at redhat.com> 2.6.31-0.20.rc0.git18
+- 2.6.30-git18
+  VIA crypto & mmc patches now upstream.
+
+* Sun Jun 21 2009 Dave Jones <davej at redhat.com>
+- Determine cacheline sizes in a generic manner.
+
+* Sun Jun 21 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31-0.18.rc0.git17
+- 2.6.30-git17
+- Config changes:
+  - powerpc32-generic
+      CONFIG_PERF_COUNTERS=y
+  - generic
+      CONFIG_KEYBOARD_LM8323 is not set
+      CONFIG_MOUSE_SYNAPTICS_I2C=m
+      CONFIG_TOUCHSCREEN_EETI=m
+      CONFIG_TOUCHSCREEN_W90X900=m
+- Dropped agp-set_memory_ucwb.patch, all fixed upstream now.
+
+* Sat Jun 20 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.0.17.rc0.git15
+- config changes:
+ - ppc generic:
+  - CONFIG_PPC_DISABLE_WERROR=y (switched... chrp fails otherwise, stack
+    frame size.)
+
+* Sat Jun 20 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.0.16.rc0.git15
+- 2.6.30-git15
+- config changes:
+ - generic:
+  - CONFIG_LBDAF=y
+ - staging:
+  - CONFIG_USB_SERIAL_QUATECH2 is not set
+  - CONFIG_VT6655 is not set
+  - CONFIG_USB_CPC is not set
+  - CONFIG_RDC_17F3101X is not set
+  - CONFIG_FB_UDL is not set
+ - ppc32:
+  - CONFIG_KMETER1=y
+ - ppc generic:
+  - CONFIG_PPC_DISABLE_WERROR is not set
+- lirc disabled due to i2c detach_client removal.
+
+* Sat Jun 20 2009 Kyle McMartin <kyle at redhat.com>
+- sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch: add,
+  queued in tip/sched/core (ca94c442535a44d508c99a77e54f21a59f4fc462)
+
+* Fri Jun 19 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.0.15.rc0.git14
+- Fix up ptrace, hopefully. Builds on x86_64 at least.
+
+* Fri Jun 19 2009 Chuck Ebbert <cebbert at redhat.com>
+- linux-2.6-tip.git-203abd67b75f7714ce98ab0cdbd6cfd7ad79dec4.patch
+  Fixes oops on boot with qemu (#507007)
+
+* Fri Jun 19 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.13.rc0.git14
+- 2.6.30-git14
+
+* Fri Jun 19 2009 Chuck Ebbert <cebbert at redhat.com>
+- Fix up the via-sdmmc and via-hwmon-temp-sensor patches.
+- Drop VIA Padlock patches merged upstream:
+    via-rng-enable-64bit.patch
+    via-padlock-10-enable-64bit.patch
+    via-padlock-20-add-x86-dependency.patch
+
+* Thu Jun 18 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.11.rc0.git13
+- 2.6.30-git13
+- config changes:
+ - arm:
+  - CONFIG_UACCESS_WITH_MEMCPY is not set
+ - i686-PAE:
+  - CONFIG_XEN_DEV_EVTCHN=m
+  - CONFIG_XEN_SYS_HYPERVISOR=y
+ - ia64:
+  - CONFIG_RCU_FANOUT=64
+ - nodebug:
+  - CONFIG_DEBUG_KMEMLEAK is not set
+  - CONFIG_DEBUG_KMEMLEAK_TEST=m
+ - powerpc:
+  - CONFIG_CAN_SJA1000_OF_PLATFORM=m
+  - CONFIG_PPC_EMULATED_STATS=y
+  - CONFIG_SWIOTLB=y
+  - CONFIG_RDS is not set (broken on ppc32)
+ - powerpc32:
+  - CONFIG_RCU_FANOUT=32
+ - powerpc64:
+  - CONFIG_RCU_FANOUT=64
+  - CONFIG_PERF_COUNTERS=y
+ - s390x:
+  - CONFIG_RCU_FANOUT=64
+  - CONFIG_SECCOMP=y
+  - CONFIG_PM=y
+  - CONFIG_HIBERNATION=y
+  - CONFIG_PM_STD_PARTITION="/dev/jokes"
+ - sparc64:
+  - CONFIG_RCU_FANOUT=64
+ - x86:
+  - CONFIG_RCU_FANOUT=32
+  - CONFIG_IOMMU_STRESS is not set
+  - CONFIG_PERF_COUNTERS=y
+  - CONFIG_X86_OLD_MCE is not set
+  - CONFIG_X86_MCE_INTEL=y
+  - CONFIG_X86_MCE_AMD=y
+  - CONFIG_X86_ANCIENT_MCE is not set
+  - CONFIG_X86_MCE_INJECT is not set
+ - x86_64:
+  - CONFIG_EDAC_AMD64=m
+  - CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
+  - CONFIG_XEN_DEV_EVTCHN=m
+  - CONFIG_XEN_SYS_HYPERVISOR=y
+  - CONFIG_RCU_FANOUT=64
+  - CONFIG_IOMMU_STRESS is not set
+  - CONFIG_PERF_COUNTERS=y
+  - CONFIG_X86_MCE_INJECT is not set
+ - generic:
+  - CONFIG_RCU_FANOUT=32
+  - CONFIG_MMC_SDHCI_PLTFM=m
+  - CONFIG_MMC_CB710=m
+  - CONFIG_CB710_CORE=m
+  - CONFIG_CB710_DEBUG is not set
+  - CONFIG_SCSI_MVSAS_DEBUG is not set
+  - CONFIG_SCSI_BNX2_ISCSI=m
+  - CONFIG_NETFILTER_XT_MATCH_OSF=m
+  - CONFIG_RFKILL_INPUT=y (used to be =m, which was invalid)
+  - CONFIG_DE2104X_DSL=0
+  - CONFIG_KS8842 is not set
+  - CONFIG_CFG80211_DEBUGFS=y
+  - CONFIG_MAC80211_DEFAULT_PS=y
+  - CONFIG_IWM=m
+  - CONFIG_IWM_DEBUG is not set
+  - CONFIG_RT2800USB=m
+  - CONFIG_CAN_DEV=m
+  - CONFIG_CAN_CALC_BITTIMING=y
+  - CONFIG_CAN_SJA1000=m
+  - CONFIG_CAN_SJA1000_PLATFORM=m
+  - CONFIG_CAN_EMS_PCI=m
+  - CONFIG_CAN_KVASER_PCI=m
+  - CONFIG_EEPROM_MAX6875=m
+  - CONFIG_SENSORS_TMP401=m
+  - CONFIG_MEDIA_SUPPORT=m
+  - CONFIG_SND_CTXFI=m
+  - CONFIG_SND_LX6464ES=m
+  - CONFIG_SND_HDA_CODEC_CA0110=y
+  - CONFIG_USB_XHCI_HCD=m
+  - CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+  - CONFIG_DRAGONRISE_FF=y (used to be =m)
+  - CONFIG_GREENASIA_FF=y (used to be =m)
+  - CONFIG_SMARTJOYPLUS_FF=y (used to be =m)
+  - CONFIG_USB_NET_INT51X1=m
+  - CONFIG_CUSE=m
+  - CONFIG_FUNCTION_PROFILER=y
+  - CONFIG_RING_BUFFER_BENCHMARK=m
+  - CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+  - CONFIG_REGULATOR_MAX1586=m
+  - CONFIG_REGULATOR_LP3971=m
+  - CONFIG_RCU_FANOUT_EXACT is not set
+  - CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+  - CONFIG_FSNOTIFY=y
+  - CONFIG_IEEE802154=m
+  - CONFIG_IEEE802154_DRIVERS=m
+  - CONFIG_IEEE802154_FAKEHARD=m
+  - CONFIG_CNIC=m
+
+* Wed Jun 17 2009 Jarod Wilson <jarod at redhat.com>
+- New lirc_imon hotness, update 2:
+  * support dual-interface devices with a single lirc device
+  * directional pad functions as an input device mouse
+  * touchscreen devices finally properly supported
+  * support for using MCE/RC-6 protocol remotes
+  * fix oops in RF remote association code (F10 bug #475496)
+  * fix re-enabling case/panel buttons and/or knobs
+- Add some misc additional lirc_mceusb2 transceiver IDs
+- Add missing unregister_chrdev_region() call to lirc_dev exit
+- Add it8720 support to lirc_it87
+
+* Tue Jun 16 2009 Chuck Ebbert <cebbert at redhat.com>
+- Update via-sdmmc driver
+
+* Mon Jun 15 2009 Jarod Wilson <jarod at redhat.com>
+- Update lirc patches w/new imon hotness
+
 * Sat Jun 13 2009 Michael Young <m.a.young at durham.ac.uk>
 - update pvops to 2.6.30
 

linux-2.6-defaults-pci_no_msi.patch:

Index: linux-2.6-defaults-pci_no_msi.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-defaults-pci_no_msi.patch,v
retrieving revision 1.4.6.1
retrieving revision 1.4.6.2
diff -u -p -r1.4.6.1 -r1.4.6.2
--- linux-2.6-defaults-pci_no_msi.patch	24 Apr 2009 22:27:10 -0000	1.4.6.1
+++ linux-2.6-defaults-pci_no_msi.patch	27 Jun 2009 11:05:15 -0000	1.4.6.2
@@ -1,9 +1,9 @@
---- linux-2.6.29.noarch/Documentation/kernel-parameters.txt~	2009-04-20 13:36:09.000000000 -0400
-+++ linux-2.6.29.noarch/Documentation/kernel-parameters.txt	2009-04-20 13:36:33.000000000 -0400
-@@ -1723,6 +1723,9 @@ and is between 256 and 4096 characters. 
- 				root domains (aka PCI segments, in ACPI-speak).
- 		nommconf	[X86] Disable use of MMCONFIG for PCI
- 				Configuration
+--- linux-2.6.30.noarch/Documentation/kernel-parameters.txt~	2009-06-24 14:25:04.000000000 -0400
++++ linux-2.6.30.noarch/Documentation/kernel-parameters.txt	2009-06-24 14:25:32.000000000 -0400
+@@ -1811,6 +1811,9 @@ and is between 256 and 4096 characters. 
+ 		check_enable_amd_mmconf [X86] check for and enable
+ 				properly configured MMIO access to PCI
+ 				config space on AMD family 10h CPU
 +		msi		[MSI] If the PCI_MSI kernel config parameter is
 +				enabled, this kernel boot option can be used to
 +				enable the use of MSI interrupts system-wide.

linux-2.6-execshield.patch:

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-execshield.patch,v
retrieving revision 1.102.6.2
retrieving revision 1.102.6.3
diff -u -p -r1.102.6.2 -r1.102.6.3
--- linux-2.6-execshield.patch	24 Apr 2009 22:27:10 -0000	1.102.6.2
+++ linux-2.6-execshield.patch	27 Jun 2009 11:05:15 -0000	1.102.6.3
@@ -1,5 +1,5 @@
 diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
-index 5623c50..353a24e 100644
+index c45f415..3a6dbad 100644
 --- a/arch/x86/include/asm/desc.h
 +++ b/arch/x86/include/asm/desc.h
 @@ -6,6 +6,7 @@
@@ -20,7 +20,7 @@ index 5623c50..353a24e 100644
  
  #define write_ldt_entry(dt, entry, desc)	\
  	native_write_ldt_entry(dt, entry, desc)
-@@ -380,6 +384,27 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
+@@ -380,4 +384,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
  	_set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
  }
  
@@ -45,9 +45,7 @@ index 5623c50..353a24e 100644
 +extern void arch_flush_exec_range(struct mm_struct *mm);
 +#endif /* CONFIG_X86_32 */
 +
- #else
- /*
-  * GET_DESC_BASE reads the descriptor base of the specified segment.
+ #endif /* _ASM_X86_DESC_H */
 diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
 index 80a1dee..8314c66 100644
 --- a/arch/x86/include/asm/mmu.h
@@ -73,10 +71,10 @@ index 80a1dee..8314c66 100644
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
-index 7727aa8..5d6083c 100644
+index 4fb37c8..d5cc31c 100644
 --- a/arch/x86/include/asm/paravirt.h
 +++ b/arch/x86/include/asm/paravirt.h
-@@ -138,6 +138,9 @@ struct pv_cpu_ops {
+@@ -139,6 +139,9 @@ struct pv_cpu_ops {
  	void (*store_gdt)(struct desc_ptr *);
  	void (*store_idt)(struct desc_ptr *);
  	void (*set_ldt)(const void *desc, unsigned entries);
@@ -86,7 +84,7 @@ index 7727aa8..5d6083c 100644
  	unsigned long (*store_tr)(void);
  	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
  #ifdef CONFIG_X86_64
-@@ -953,6 +956,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
+@@ -955,6 +958,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
  {
  	PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
  }
@@ -100,10 +98,10 @@ index 7727aa8..5d6083c 100644
  {
  	PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index 34c5237..4fc080f 100644
+index c776826..fb6b579 100644
 --- a/arch/x86/include/asm/processor.h
 +++ b/arch/x86/include/asm/processor.h
-@@ -159,6 +159,9 @@ static inline int hlt_works(int cpu)
+@@ -160,6 +160,9 @@ static inline int hlt_works(int cpu)
  
  #define cache_line_size()	(boot_cpu_data.x86_cache_alignment)
  
@@ -114,10 +112,10 @@ index 34c5237..4fc080f 100644
  
  extern struct pt_regs *idle_regs(struct pt_regs *);
 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index c4f6678..0a680c0 100644
+index 3ffdcfa..62cba96 100644
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
-@@ -789,6 +789,20 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
+@@ -804,6 +804,20 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
  	/* Filter out anything that depends on CPUID levels we don't have */
  	filter_cpuid_features(c, true);
  
@@ -139,7 +137,7 @@ index c4f6678..0a680c0 100644
  	if (!c->x86_model_id[0]) {
  		const char *p;
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index 8e45f44..13c0535 100644
+index 70ec9b9..d956b8c 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
 @@ -369,6 +369,9 @@ struct pv_cpu_ops pv_cpu_ops = {
@@ -153,10 +151,10 @@ index 8e45f44..13c0535 100644
  	.load_idt = native_load_idt,
  	.store_gdt = native_store_gdt,
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 76f8f84..4118f17 100644
+index 59f4524..068e286 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
-@@ -301,7 +301,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -299,7 +299,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
  void
  start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
  {
@@ -167,7 +165,7 @@ index 76f8f84..4118f17 100644
  	regs->fs		= 0;
  	set_fs(USER_DS);
  	regs->ds		= __USER_DS;
-@@ -310,6 +313,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
+@@ -308,6 +311,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
  	regs->cs		= __USER_CS;
  	regs->ip		= new_ip;
  	regs->sp		= new_sp;
@@ -179,7 +177,7 @@ index 76f8f84..4118f17 100644
  	/*
  	 * Free the old FP and other extended state
  	 */
-@@ -356,7 +364,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -354,7 +362,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
  	__unlazy_fpu(prev_p);
@@ -189,11 +187,10 @@ index 76f8f84..4118f17 100644
  
  	/* we're going to use this soon, after a few expensive things */
  	if (next_p->fpu_counter > 5)
-@@ -509,3 +518,41 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
- 	unsigned long range_end = mm->brk + 0x02000000;
- 	return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
+@@ -495,3 +504,40 @@ unsigned long get_wchan(struct task_struct *p)
+ 	return 0;
  }
-+
+ 
 +static void modify_cs(struct mm_struct *mm, unsigned long limit)
 +{
 +	mm->context.exec_limit = limit;
@@ -232,7 +229,7 @@ index 76f8f84..4118f17 100644
 +	set_user_cs(&mm->context.user_cs, 0);
 +}
 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index a1d2883..453b616 100644
+index 07d60c8..41e9129 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
 @@ -118,6 +118,76 @@ die_if_kernel(const char *str, struct pt_regs *regs, long err)
@@ -342,7 +339,7 @@ index a1d2883..453b616 100644
  	tsk->thread.error_code = error_code;
  	tsk->thread.trap_no = 13;
  
-@@ -888,19 +981,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
+@@ -885,19 +978,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
  }
  
  #ifdef CONFIG_X86_32
@@ -390,55 +387,81 @@ index a1d2883..453b616 100644
  #endif
  
 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
-index fd3da1d..ac54294 100644
+index 34c1bfb..32c3d8d 100644
 --- a/arch/x86/mm/init.c
 +++ b/arch/x86/mm/init.c
-@@ -163,7 +163,11 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
+@@ -228,6 +228,12 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
  	set_nx();
  	if (nx_enabled)
  		printk(KERN_INFO "NX (Execute Disable) protection: active\n");
++#ifdef CONFIG_X86_32
 +	else
- #endif
 +	if (exec_shield)
 +		printk(KERN_INFO "Using x86 segment limits to approximate "
 +			"NX protection\n");
++#endif
  
  	/* Enable PSE if available */
  	if (cpu_has_pse)
 diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
-index 749559e..ad9943c 100644
+index 949708d..c1373b6 100644
 --- a/arch/x86/mm/init_32.c
 +++ b/arch/x86/mm/init_32.c
-@@ -602,7 +602,7 @@ static int disable_nx __initdata;
-  * Control non executable mappings.
-  *
-  * on      Enable
-- * off     Disable
+@@ -587,6 +587,54 @@ void zap_low_mappings(void)
+ pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
+ EXPORT_SYMBOL_GPL(__supported_pte_mask);
+ 
++#ifdef CONFIG_X86_PAE
++
++static int disable_nx __initdata;
++
++/*
++ * noexec = on|off
++ *
++ * Control non executable mappings.
++ *
++ * on      Enable
 + * off     Disable (disables exec-shield too)
-  */
- static int __init noexec_setup(char *str)
- {
-@@ -611,14 +611,12 @@ static int __init noexec_setup(char *str)
- 			__supported_pte_mask |= _PAGE_NX;
- 			disable_nx = 0;
- 		}
--	} else {
--		if (!strcmp(str, "off")) {
--			disable_nx = 1;
--			__supported_pte_mask &= ~_PAGE_NX;
--		} else {
--			return -EINVAL;
--		}
--	}
++ */
++static int __init noexec_setup(char *str)
++{
++	if (!str || !strcmp(str, "on")) {
++		if (cpu_has_nx) {
++			__supported_pte_mask |= _PAGE_NX;
++			disable_nx = 0;
++		}
 +	} else if (!strcmp(str, "off")) {
 +		disable_nx = 1;
 +		__supported_pte_mask &= ~_PAGE_NX;
 +		exec_shield = 0;
 +	} else
 +		return -EINVAL;
++
++	return 0;
++}
++early_param("noexec", noexec_setup);
++
++void __init set_nx(void)
++{
++	unsigned int v[4], l, h;
++
++	if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) {
++		cpuid(0x80000001, &v[0], &v[1], &v[2], &v[3]);
++
++		if ((v[3] & (1 << 20)) && !disable_nx) {
++			rdmsr(MSR_EFER, l, h);
++			l |= EFER_NX;
++			wrmsr(MSR_EFER, l, h);
++			nx_enabled = 1;
++			__supported_pte_mask |= _PAGE_NX;
++		}
++	}
++}
++#endif
++
+ /* user-defined highmem size */
+ static unsigned int highmem_pages = -1;
  
- 	return 0;
- }
 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
 index 1658296..72056cf 100644
 --- a/arch/x86/mm/mmap.c
@@ -487,7 +510,7 @@ index 821e970..ea5a4c3 100644
  	 * orig_rax contains the negated interrupt vector.
  	 * Use that to determine where the sender put the data.
 diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
-index 1241f11..3f2c44c 100644
+index 58bc00f..1fdafb5 100644
 --- a/arch/x86/vdso/vdso32-setup.c
 +++ b/arch/x86/vdso/vdso32-setup.c
 @@ -331,7 +331,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
@@ -500,10 +523,10 @@ index 1241f11..3f2c44c 100644
  			ret = addr;
  			goto up_fail;
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 82cd39a..702e3a0 100644
+index 0a1700a..37b8744 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
-@@ -282,6 +282,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
+@@ -321,6 +321,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
  	xen_mc_issue(PARAVIRT_LAZY_CPU);
  }
  
@@ -527,8 +550,8 @@ index 82cd39a..702e3a0 100644
 +
  static void xen_load_gdt(const struct desc_ptr *dtr)
  {
- 	unsigned long *frames;
-@@ -792,6 +810,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+ 	unsigned long va = dtr->address;
+@@ -886,6 +904,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  
  	.load_tr_desc = paravirt_nop,
  	.set_ldt = xen_set_ldt,
@@ -599,10 +622,10 @@ index 40381df..f856fab 100644
  			 * load_elf_interp() returns relocation
  			 * adjustment
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index bff1f0d..88c5efa 100644
+index ad613ed..08f08d0 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1138,7 +1138,13 @@ extern int install_special_mapping(struct mm_struct *mm,
+@@ -1135,7 +1135,13 @@ extern int install_special_mapping(struct mm_struct *mm,
  				   unsigned long addr, unsigned long len,
  				   unsigned long flags, struct page **pages);
  
@@ -649,12 +672,12 @@ index 40fc7e6..68c2549 100644
  /*
   * GPG2 wants 64kB of mlocked memory, to make sure pass phrases
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index b94f354..aed6221 100644
+index 4896fdf..3513e03 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -99,6 +99,9 @@ struct bio;
- struct bts_tracer;
- struct fs_struct;
+@@ -101,6 +101,9 @@ struct fs_struct;
+ struct bts_context;
+ struct perf_counter_context;
  
 +extern int exec_shield;
 +extern int print_fatal_signals;
@@ -662,7 +685,7 @@ index b94f354..aed6221 100644
  /*
   * List of flags we want to share for kernel threads,
   * if only because they are not used by them anyway.
-@@ -351,6 +354,10 @@ extern int sysctl_max_map_count;
+@@ -359,6 +362,10 @@ extern int sysctl_max_map_count;
  extern unsigned long
  arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
  		       unsigned long, unsigned long);
@@ -674,10 +697,10 @@ index b94f354..aed6221 100644
  arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
  			  unsigned long len, unsigned long pgoff,
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 82350f8..d89dd29 100644
+index ce664f9..1905e22 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -86,6 +86,26 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
+@@ -87,6 +87,26 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
  #ifndef CONFIG_MMU
  extern int sysctl_nr_trim_pages;
  #endif
@@ -704,7 +727,7 @@ index 82350f8..d89dd29 100644
  #ifdef CONFIG_RCU_TORTURE_TEST
  extern int rcutorture_runnable;
  #endif /* #ifdef CONFIG_RCU_TORTURE_TEST */
-@@ -377,6 +397,14 @@ static struct ctl_table kern_table[] = {
+@@ -382,6 +402,14 @@ static struct ctl_table kern_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -720,18 +743,18 @@ index 82350f8..d89dd29 100644
  		.procname	= "core_uses_pid",
  		.data		= &core_uses_pid,
 diff --git a/mm/mmap.c b/mm/mmap.c
-index 4a38411..12ca810 100644
+index 34579b2..260bb3c 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
-@@ -28,6 +28,7 @@
- #include <linux/mempolicy.h>
+@@ -29,6 +29,7 @@
  #include <linux/rmap.h>
  #include <linux/mmu_notifier.h>
+ #include <linux/perf_counter.h>
 +#include <linux/random.h>
  
  #include <asm/uaccess.h>
  #include <asm/cacheflush.h>
-@@ -44,6 +45,18 @@
+@@ -45,6 +46,18 @@
  #define arch_rebalance_pgtables(addr, len)		(addr)
  #endif
  
@@ -787,7 +810,7 @@ index 4a38411..12ca810 100644
  	if (addr & ~PAGE_MASK)
  		return addr;
  
-@@ -1440,13 +1460,17 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1442,13 +1462,17 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
  }
  
  unsigned long
@@ -808,7 +831,7 @@ index 4a38411..12ca810 100644
  	if (file && file->f_op && file->f_op->get_unmapped_area)
  		get_area = file->f_op->get_unmapped_area;
  	addr = get_area(file, addr, len, pgoff, flags);
-@@ -1460,8 +1484,76 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
+@@ -1462,8 +1486,76 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
  
  	return arch_rebalance_pgtables(addr, len);
  }
@@ -886,7 +909,7 @@ index 4a38411..12ca810 100644
  
  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
  struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
-@@ -1536,6 +1628,14 @@ out:
+@@ -1538,6 +1630,14 @@ out:
  	return prev ? prev->vm_next : vma;
  }
  
@@ -901,7 +924,7 @@ index 4a38411..12ca810 100644
  /*
   * Verify that the stack growth is acceptable and
   * update accounting. This is shared with both the
-@@ -1552,7 +1652,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1554,7 +1654,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
  		return -ENOMEM;
  
  	/* Stack limit test */
@@ -910,7 +933,7 @@ index 4a38411..12ca810 100644
  		return -ENOMEM;
  
  	/* mlock limit tests */
-@@ -1862,10 +1962,14 @@ int split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1864,10 +1964,14 @@ int split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
  
@@ -927,7 +950,7 @@ index 4a38411..12ca810 100644
  		vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
  	return 0;
-@@ -2114,6 +2218,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2116,6 +2220,7 @@ void exit_mmap(struct mm_struct *mm)
  	vm_unacct_memory(nr_accounted);
  	free_pgtables(tlb, vma, FIRST_USER_ADDRESS, 0);
  	tlb_finish_mmu(tlb, 0, end);
@@ -936,11 +959,11 @@ index 4a38411..12ca810 100644
  	/*
  	 * Walk the list again, actually closing and freeing it,
 diff --git a/mm/mprotect.c b/mm/mprotect.c
-index 258197b..9af91a3 100644
+index d80311b..032423d 100644
 --- a/mm/mprotect.c
 +++ b/mm/mprotect.c
-@@ -25,9 +25,14 @@
- #include <linux/migrate.h>
+@@ -26,9 +26,14 @@
+ #include <linux/perf_counter.h>
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
 +#include <asm/pgalloc.h>
@@ -954,7 +977,7 @@ index 258197b..9af91a3 100644
  #ifndef pgprot_modify
  static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
  {
-@@ -138,7 +143,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
+@@ -139,7 +144,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
  	struct mm_struct *mm = vma->vm_mm;
  	unsigned long oldflags = vma->vm_flags;
  	long nrpages = (end - start) >> PAGE_SHIFT;
@@ -963,7 +986,7 @@ index 258197b..9af91a3 100644
  	pgoff_t pgoff;
  	int error;
  	int dirty_accountable = 0;
-@@ -203,6 +208,9 @@ success:
+@@ -204,6 +209,9 @@ success:
  		dirty_accountable = 1;
  	}
  

linux-2.6-utrace.patch:

Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.107.6.5
retrieving revision 1.107.6.6
diff -u -p -r1.107.6.5 -r1.107.6.6
--- linux-2.6-utrace.patch	13 Jun 2009 21:22:33 -0000	1.107.6.5
+++ linux-2.6-utrace.patch	27 Jun 2009 11:05:15 -0000	1.107.6.6
@@ -1,46 +1,5 @@
-utrace core
-
-This adds the utrace facility, a new modular interface in the kernel for
-implementing user thread tracing and debugging.  This fits on top of the
-tracehook_* layer, so the new code is well-isolated.
-
-The new interface is in <linux/utrace.h> and the DocBook utrace book
-describes it.  It allows for multiple separate tracing engines to work in
-parallel without interfering with each other.  Higher-level tracing
-facilities can be implemented as loadable kernel modules using this layer.
-
-The new facility is made optional under CONFIG_UTRACE.
-When this is not enabled, no new code is added.
-It can only be enabled on machines that have all the
-prerequisites and select CONFIG_HAVE_ARCH_TRACEHOOK.
-
-In this initial version, utrace and ptrace do not play together at all.
-If ptrace is attached to a thread, the attach calls in the utrace kernel
-API return -EBUSY.  If utrace is attached to a thread, the PTRACE_ATTACH
-or PTRACE_TRACEME request will return EBUSY to userland.  The old ptrace
-code is otherwise unchanged and nothing using ptrace should be affected
-by this patch as long as utrace is not used at the same time.  In the
-future we can clean up the ptrace implementation and rework it to use
-the utrace API.
-
-Signed-off-by: Roland McGrath <roland at redhat.com>
----
- Documentation/DocBook/Makefile    |    2 +-
- Documentation/DocBook/utrace.tmpl |  590 ++++++++++
- fs/proc/array.c                   |    3 +
- include/linux/init_task.h         |    1 +
- include/linux/sched.h             |    6 +
- include/linux/tracehook.h         |   61 +-
- include/linux/utrace.h            |  692 +++++++++++
- include/linux/utrace_struct.h     |   58 +
- init/Kconfig                      |    9 +
- kernel/Makefile                   |    1 +
- kernel/ptrace.c                   |   18 +-
- kernel/utrace.c                   | 2357 +++++++++++++++++++++++++++++++++++++
- 12 files changed, 3795 insertions(+), 3 deletions(-)
-
 diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
-index b1eb661..02851f6 100644  
+index 9632444..bf4b9e8 100644
 --- a/Documentation/DocBook/Makefile
 +++ b/Documentation/DocBook/Makefile
 @@ -9,7 +9,7 @@
@@ -54,7 +13,7 @@ index b1eb661..02851f6 100644  
  	    mac80211.xml debugobjects.xml sh.xml regulator.xml \
 diff --git a/Documentation/DocBook/utrace.tmpl b/Documentation/DocBook/utrace.tmpl
 new file mode 100644
-index ...6cc58a1 100644  
+index 0000000..6cc58a1
 --- /dev/null
 +++ b/Documentation/DocBook/utrace.tmpl
 @@ -0,0 +1,590 @@
@@ -649,7 +608,7 @@ index ...6cc58a1 100644  
 +
 +</book>
 diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 725a650..e299a63 100644  
+index 725a650..e299a63 100644
 --- a/fs/proc/array.c
 +++ b/fs/proc/array.c
 @@ -82,6 +82,7 @@
@@ -660,7 +619,7 @@ index 725a650..e299a63 100644  
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-@@ -188,6 +189,8 @@ static inline void task_state(struct seq
+@@ -188,6 +189,8 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
  		cred->uid, cred->euid, cred->suid, cred->fsuid,
  		cred->gid, cred->egid, cred->sgid, cred->fsgid);
  
@@ -670,19 +629,19 @@ index 725a650..e299a63 100644  
  	if (p->files)
  		fdt = files_fdtable(p->files);
 diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index d87247d..0d0b55d 100644  
+index 5368fbd..aecd24e 100644
 --- a/include/linux/init_task.h
 +++ b/include/linux/init_task.h
-@@ -170,6 +170,7 @@ extern struct cred init_cred;
+@@ -167,6 +167,7 @@ extern struct cred init_cred;
  		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\
  	},								\
  	.dirties = INIT_PROP_LOCAL_SINGLE(dirties),			\
 +	INIT_UTRACE(tsk)						\
  	INIT_IDS							\
+ 	INIT_PERF_COUNTERS(tsk)						\
  	INIT_TRACE_IRQFLAGS						\
- 	INIT_LOCKDEP							\
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index b4c38bc..30db106 100644  
+index 4d07542..2060aa1 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
 @@ -59,6 +59,7 @@ struct sched_param {
@@ -693,7 +652,7 @@ index b4c38bc..30db106 100644  
  
  #include <asm/system.h>
  #include <asm/page.h>
-@@ -1291,6 +1292,11 @@ struct task_struct {
+@@ -1313,6 +1314,11 @@ struct task_struct {
  #endif
  	seccomp_t seccomp;
  
@@ -706,7 +665,7 @@ index b4c38bc..30db106 100644  
     	u32 parent_exec_id;
     	u32 self_exec_id;
 diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
-index 4ec4821..a7de30f 100644  
+index 7c2bfd9..a91d9a4 100644
 --- a/include/linux/tracehook.h
 +++ b/include/linux/tracehook.h
 @@ -49,6 +49,7 @@
@@ -726,7 +685,7 @@ index 4ec4821..a7de30f 100644  
  	return (task_ptrace(task) & PT_PTRACED) != 0;
  }
  
-@@ -111,6 +114,9 @@ static inline void ptrace_report_syscall
+@@ -111,6 +114,9 @@ static inline void ptrace_report_syscall(struct pt_regs *regs)
  static inline __must_check int tracehook_report_syscall_entry(
  	struct pt_regs *regs)
  {
@@ -736,7 +695,7 @@ index 4ec4821..a7de30f 100644  
  	ptrace_report_syscall(regs);
  	return 0;
  }
-@@ -134,6 +140,8 @@ static inline __must_check int tracehook
+@@ -134,6 +140,8 @@ static inline __must_check int tracehook_report_syscall_entry(
   */
  static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
  {
@@ -745,7 +704,7 @@ index 4ec4821..a7de30f 100644  
  	ptrace_report_syscall(regs);
  }
  
-@@ -194,6 +202,8 @@ static inline void tracehook_report_exec
+@@ -194,6 +202,8 @@ static inline void tracehook_report_exec(struct linux_binfmt *fmt,
  					 struct linux_binprm *bprm,
  					 struct pt_regs *regs)
  {
@@ -754,7 +713,7 @@ index 4ec4821..a7de30f 100644  
  	if (!ptrace_event(PT_TRACE_EXEC, PTRACE_EVENT_EXEC, 0) &&
  	    unlikely(task_ptrace(current) & PT_PTRACED))
  		send_sig(SIGTRAP, current, 0);
-@@ -211,6 +221,8 @@ static inline void tracehook_report_exec
+@@ -211,6 +221,8 @@ static inline void tracehook_report_exec(struct linux_binfmt *fmt,
   */
  static inline void tracehook_report_exit(long *exit_code)
  {
@@ -763,7 +722,7 @@ index 4ec4821..a7de30f 100644  
  	ptrace_event(PT_TRACE_EXIT, PTRACE_EVENT_EXIT, *exit_code);
  }
  
-@@ -254,6 +266,7 @@ static inline int tracehook_prepare_clon
+@@ -254,6 +266,7 @@ static inline int tracehook_prepare_clone(unsigned clone_flags)
  static inline void tracehook_finish_clone(struct task_struct *child,
  					  unsigned long clone_flags, int trace)
  {
@@ -771,7 +730,7 @@ index 4ec4821..a7de30f 100644  
  	ptrace_init_task(child, (clone_flags & CLONE_PTRACE) || trace);
  }
  
-@@ -280,6 +293,8 @@ static inline void tracehook_report_clon
+@@ -278,6 +291,8 @@ static inline void tracehook_report_clone(struct pt_regs *regs,
  					  unsigned long clone_flags,
  					  pid_t pid, struct task_struct *child)
  {
@@ -780,7 +739,7 @@ index 4ec4821..a7de30f 100644  
  	if (unlikely(task_ptrace(child))) {
  		/*
  		 * It doesn't matter who attached/attaching to this
-@@ -311,6 +326,9 @@ static inline void tracehook_report_clon
+@@ -310,6 +325,9 @@ static inline void tracehook_report_clone_complete(int trace,
  						   pid_t pid,
  						   struct task_struct *child)
  {
@@ -790,7 +749,7 @@ index 4ec4821..a7de30f 100644  
  	if (unlikely(trace))
  		ptrace_event(0, trace, pid);
  }
-@@ -345,6 +363,7 @@ static inline void tracehook_report_vfor
+@@ -344,6 +362,7 @@ static inline void tracehook_report_vfork_done(struct task_struct *child,
   */
  static inline void tracehook_prepare_release_task(struct task_struct *task)
  {
@@ -798,7 +757,7 @@ index 4ec4821..a7de30f 100644  
  }
  
  /**
-@@ -359,6 +378,7 @@ static inline void tracehook_prepare_rel
+@@ -358,6 +377,7 @@ static inline void tracehook_prepare_release_task(struct task_struct *task)
  static inline void tracehook_finish_release_task(struct task_struct *task)
  {
  	ptrace_release_task(task);
@@ -806,7 +765,7 @@ index 4ec4821..a7de30f 100644  
  }
  
  /**
-@@ -380,6 +400,8 @@ static inline void tracehook_signal_hand
+@@ -379,6 +399,8 @@ static inline void tracehook_signal_handler(int sig, siginfo_t *info,
  					    const struct k_sigaction *ka,
  					    struct pt_regs *regs, int stepping)
  {
@@ -815,7 +774,7 @@ index 4ec4821..a7de30f 100644  
  	if (stepping)
  		ptrace_notify(SIGTRAP);
  }
-@@ -397,6 +419,8 @@ static inline void tracehook_signal_hand
+@@ -396,6 +418,8 @@ static inline void tracehook_signal_handler(int sig, siginfo_t *info,
  static inline int tracehook_consider_ignored_signal(struct task_struct *task,
  						    int sig)
  {
@@ -824,7 +783,7 @@ index 4ec4821..a7de30f 100644  
  	return (task_ptrace(task) & PT_PTRACED) != 0;
  }
  
-@@ -416,6 +440,9 @@ static inline int tracehook_consider_ign
+@@ -415,6 +439,9 @@ static inline int tracehook_consider_ignored_signal(struct task_struct *task,
  static inline int tracehook_consider_fatal_signal(struct task_struct *task,
  						  int sig)
  {
@@ -834,7 +793,7 @@ index 4ec4821..a7de30f 100644  
  	return (task_ptrace(task) & PT_PTRACED) != 0;
  }
  
-@@ -430,6 +457,8 @@ static inline int tracehook_consider_fat
+@@ -429,6 +456,8 @@ static inline int tracehook_consider_fatal_signal(struct task_struct *task,
   */
  static inline int tracehook_force_sigpending(void)
  {
@@ -843,7 +802,7 @@ index 4ec4821..a7de30f 100644  
  	return 0;
  }
  
-@@ -459,6 +488,8 @@ static inline int tracehook_get_signal(s
+@@ -458,6 +487,8 @@ static inline int tracehook_get_signal(struct task_struct *task,
  				       siginfo_t *info,
  				       struct k_sigaction *return_ka)
  {
@@ -852,7 +811,7 @@ index 4ec4821..a7de30f 100644  
  	return 0;
  }
  
-@@ -486,6 +517,8 @@ static inline int tracehook_get_signal(s
+@@ -485,6 +516,8 @@ static inline int tracehook_get_signal(struct task_struct *task,
   */
  static inline int tracehook_notify_jctl(int notify, int why)
  {
@@ -861,7 +820,7 @@ index 4ec4821..a7de30f 100644  
  	return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
  }
  
-@@ -509,6 +542,8 @@ static inline int tracehook_notify_jctl(
+@@ -508,6 +541,8 @@ static inline int tracehook_notify_jctl(int notify, int why)
  static inline int tracehook_notify_death(struct task_struct *task,
  					 void **death_cookie, int group_dead)
  {
@@ -870,7 +829,7 @@ index 4ec4821..a7de30f 100644  
  	if (task_detached(task))
  		return task->ptrace ? SIGCHLD : DEATH_REAP;
  
-@@ -545,6 +580,20 @@ static inline void tracehook_report_deat
+@@ -544,6 +579,20 @@ static inline void tracehook_report_death(struct task_struct *task,
  					  int signal, void *death_cookie,
  					  int group_dead)
  {
@@ -891,7 +850,7 @@ index 4ec4821..a7de30f 100644  
  }
  
  #ifdef TIF_NOTIFY_RESUME
-@@ -574,10 +623,20 @@ static inline void set_notify_resume(str
+@@ -573,10 +622,20 @@ static inline void set_notify_resume(struct task_struct *task)
   * asynchronously, this will be called again before we return to
   * user mode.
   *
@@ -915,7 +874,7 @@ index 4ec4821..a7de30f 100644  
  
 diff --git a/include/linux/utrace.h b/include/linux/utrace.h
 new file mode 100644
-index ...f877ec6 100644  
+index 0000000..f877ec6
 --- /dev/null
 +++ b/include/linux/utrace.h
 @@ -0,0 +1,692 @@
@@ -1613,7 +1572,7 @@ index ...f877ec6 100644  
 +#endif	/* linux/utrace.h */
 diff --git a/include/linux/utrace_struct.h b/include/linux/utrace_struct.h
 new file mode 100644
-index ...aba7e09 100644  
+index 0000000..aba7e09
 --- /dev/null
 +++ b/include/linux/utrace_struct.h
 @@ -0,0 +1,58 @@
@@ -1676,10 +1635,10 @@ index ...aba7e09 100644  
 +
 +#endif	/* linux/utrace_struct.h */
 diff --git a/init/Kconfig b/init/Kconfig
-index 7be4d38..a6987df 100644  
+index 1ce05a4..f720929 100644
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1149,6 +1149,15 @@ config STOP_MACHINE
+@@ -1191,6 +1191,15 @@ config STOP_MACHINE
  	help
  	  Need stop_machine() primitive.
  
@@ -1696,19 +1655,19 @@ index 7be4d38..a6987df 100644  
  
  config PREEMPT_NOTIFIERS
 diff --git a/kernel/Makefile b/kernel/Makefile
-index 4242366..a79634e 100644  
+index 780c8dc..cd16d49 100644
 --- a/kernel/Makefile
 +++ b/kernel/Makefile
-@@ -68,6 +68,7 @@ obj-$(CONFIG_IKCONFIG) += configs.o
+@@ -69,6 +69,7 @@ obj-$(CONFIG_IKCONFIG) += configs.o
  obj-$(CONFIG_RESOURCE_COUNTERS) += res_counter.o
  obj-$(CONFIG_STOP_MACHINE) += stop_machine.o
  obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o
 +obj-$(CONFIG_UTRACE) += utrace.o
- obj-$(CONFIG_AUDIT) += audit.o auditfilter.o
+ obj-$(CONFIG_AUDIT) += audit.o auditfilter.o audit_watch.o
  obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
- obj-$(CONFIG_AUDIT_TREE) += audit_tree.o
+ obj-$(CONFIG_GCOV_KERNEL) += gcov/
 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
-index 0692ab5..1d33e9c 100644  
+index 61c78b2..935eeee 100644
 --- a/kernel/ptrace.c
 +++ b/kernel/ptrace.c
 @@ -16,6 +16,7 @@
@@ -1719,7 +1678,7 @@ index 0692ab5..1d33e9c 100644  
  #include <linux/security.h>
  #include <linux/signal.h>
  #include <linux/audit.h>
-@@ -174,6 +175,14 @@ bool ptrace_may_access(struct task_struc
+@@ -164,6 +165,14 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
  	return !err;
  }
  
@@ -1734,32 +1693,53 @@ index 0692ab5..1d33e9c 100644  
  int ptrace_attach(struct task_struct *task)
  {
  	int retval;
-@@ -212,6 +221,11 @@ repeat:
- 		goto repeat;
- 	}
+@@ -186,6 +195,13 @@ int ptrace_attach(struct task_struct *task)
+ 		goto out;
  
+ 	task_lock(task);
++
 +	if (exclude_ptrace(task)) {
 +		retval = -EBUSY;
-+		goto bad;
++		task_unlock(task);
++		goto unlock_creds;
 +	}
 +
- 	if (!task->mm)
- 		goto bad;
- 	/* the same process cannot be attached many times */
-@@ -588,7 +602,9 @@ int ptrace_traceme(void)
- 	 */
- repeat:
- 	task_lock(current);
--	if (!(current->ptrace & PT_PTRACED)) {
+ 	retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH);
+ 	task_unlock(task);
+ 	if (retval)
+@@ -226,7 +242,9 @@ int ptrace_traceme(void)
+ 
+ 	write_lock_irq(&tasklist_lock);
+ 	/* Are we already being traced? */
+-	if (!current->ptrace) {
 +	if (exclude_ptrace(current)) {
 +		ret = -EBUSY;
-+	} else if (!(current->ptrace & PT_PTRACED)) {
++	} else if (!current->ptrace) {
+ 		ret = security_ptrace_traceme(current->parent);
  		/*
- 		 * See ptrace_attach() comments about the locking here.
- 		 */
+ 		 * Check PF_EXITING to ensure ->real_parent has not passed
+@@ -577,7 +595,17 @@ int ptrace_request(struct task_struct *child, long request,
+ 	return ret;
+ }
+ 
+-static struct task_struct *ptrace_get_task_struct(pid_t pid)
++/**
++ * ptrace_get_task_struct  --  grab a task struct reference for ptrace
++ * @pid:       process id to grab a task_struct reference of
++ *
++ * This function is a helper for ptrace implementations.  It checks
++ * permissions and then grabs a task struct for use of the actual
++ * ptrace implementation.
++ *
++ * Returns the task_struct for @pid or an ERR_PTR() on failure.
++ */
++struct task_struct *ptrace_get_task_struct(pid_t pid)
+ {
+ 	struct task_struct *child;
+ 
 diff --git a/kernel/utrace.c b/kernel/utrace.c
 new file mode 100644
-index ...74b5fc5 100644  
+index 0000000..74b5fc5
 --- /dev/null
 +++ b/kernel/utrace.c
 @@ -0,0 +1,2357 @@

linux-2.6.29-lirc.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.3.6.2 -r 1.3.6.3 linux-2.6.29-lirc.patch
Index: linux-2.6.29-lirc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6.29-lirc.patch,v
retrieving revision 1.3.6.2
retrieving revision 1.3.6.3
diff -u -p -r1.3.6.2 -r1.3.6.3
--- linux-2.6.29-lirc.patch	12 Mar 2009 20:38:59 -0000	1.3.6.2
+++ linux-2.6.29-lirc.patch	27 Jun 2009 11:05:15 -0000	1.3.6.3
@@ -8,29 +8,29 @@ Signed-off-by: Jarod Wilson <jarod at redha
  MAINTAINERS                           |    9 +
  drivers/input/Kconfig                 |    2 +
  drivers/input/Makefile                |    2 +
- drivers/input/lirc/Kconfig            |  118 +++
+ drivers/input/lirc/Kconfig            |  118 ++
  drivers/input/lirc/Makefile           |   21 +
- drivers/input/lirc/lirc.h             |  100 +++
- drivers/input/lirc/lirc_bt829.c       |  383 +++++++++
- drivers/input/lirc/lirc_dev.c         |  848 +++++++++++++++++++
- drivers/input/lirc/lirc_dev.h         |  180 ++++
- drivers/input/lirc/lirc_i2c.c         |  649 ++++++++++++++
- drivers/input/lirc/lirc_igorplugusb.c |  556 ++++++++++++
- drivers/input/lirc/lirc_imon.c        | 1487 +++++++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_it87.c        |  984 ++++++++++++++++++++++
- drivers/input/lirc/lirc_it87.h        |  116 +++
- drivers/input/lirc/lirc_ite8709.c     |  539 ++++++++++++
- drivers/input/lirc/lirc_mceusb.c      |  749 +++++++++++++++++
- drivers/input/lirc/lirc_mceusb2.c     | 1098 ++++++++++++++++++++++++
- drivers/input/lirc/lirc_parallel.c    |  709 ++++++++++++++++
+ drivers/input/lirc/lirc.h             |  100 ++
+ drivers/input/lirc/lirc_bt829.c       |  383 ++++++
+ drivers/input/lirc/lirc_dev.c         |  849 ++++++++++++++
+ drivers/input/lirc/lirc_dev.h         |  184 +++
+ drivers/input/lirc/lirc_i2c.c         |  649 +++++++++++
+ drivers/input/lirc/lirc_igorplugusb.c |  556 +++++++++
+ drivers/input/lirc/lirc_imon.c        | 2043 +++++++++++++++++++++++++++++++++
+ drivers/input/lirc/lirc_it87.c        |  986 ++++++++++++++++
+ drivers/input/lirc/lirc_it87.h        |  116 ++
+ drivers/input/lirc/lirc_ite8709.c     |  539 +++++++++
+ drivers/input/lirc/lirc_mceusb.c      |  749 ++++++++++++
+ drivers/input/lirc/lirc_mceusb2.c     | 1103 ++++++++++++++++++
+ drivers/input/lirc/lirc_parallel.c    |  709 ++++++++++++
  drivers/input/lirc/lirc_parallel.h    |   26 +
- drivers/input/lirc/lirc_sasem.c       |  931 +++++++++++++++++++++
- drivers/input/lirc/lirc_serial.c      | 1321 +++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_sir.c         | 1294 ++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_streamzap.c   |  777 +++++++++++++++++
- drivers/input/lirc/lirc_ttusbir.c     |  398 +++++++++
- drivers/input/lirc/lirc_zilog.c       | 1382 ++++++++++++++++++++++++++++++
- 25 files changed, 14679 insertions(+), 0 deletions(-)
+ drivers/input/lirc/lirc_sasem.c       |  931 +++++++++++++++
+ drivers/input/lirc/lirc_serial.c      | 1316 +++++++++++++++++++++
+ drivers/input/lirc/lirc_sir.c         | 1294 +++++++++++++++++++++
+ drivers/input/lirc/lirc_streamzap.c   |  777 +++++++++++++
+ drivers/input/lirc/lirc_ttusbir.c     |  397 +++++++
+ drivers/input/lirc/lirc_zilog.c       | 1384 ++++++++++++++++++++++
+ 25 files changed, 15243 insertions(+), 0 deletions(-)
 
 diff --git a/MAINTAINERS b/MAINTAINERS
 index 59fd2d1..ad1b16c 100644
@@ -723,10 +723,10 @@ index 0000000..0485884
 +MODULE_PARM_DESC(debug, "Debug enabled or not");
 diff --git a/drivers/input/lirc/lirc_dev.c b/drivers/input/lirc/lirc_dev.c
 new file mode 100644
-index 0000000..6829268
+index 0000000..8848d8e
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_dev.c
-@@ -0,0 +1,848 @@
+@@ -0,0 +1,849 @@
 +/*
 + * LIRC base driver
 + *
@@ -979,8 +979,8 @@ index 0000000..6829268
 +		err = -EBADRQC;
 +		goto out;
 +	} else if (!d->rbuf) {
-+		if (!(d->fops && d->fops->read && d->fops->poll)
-+		    || (!d->fops->ioctl)) {
++		if (!(d->fops && d->fops->read && d->fops->poll &&
++		      d->fops->ioctl)) {
 +			printk(KERN_ERR "lirc_dev: lirc_register_driver: "
 +			       "neither read, poll nor ioctl can be NULL!\n");
 +			err = -EBADRQC;
@@ -1182,8 +1182,6 @@ index 0000000..6829268
 +		goto error;
 +	}
 +
-+	lirc_buffer_clear(ir->buf);
-+
 +	if (ir->d.owner != NULL && try_module_get(ir->d.owner)) {
 +		++ir->open;
 +		retval = ir->d.set_use_inc(ir->d.data);
@@ -1191,6 +1189,8 @@ index 0000000..6829268
 +		if (retval) {
 +			module_put(ir->d.owner);
 +			--ir->open;
++		} else {
++			lirc_buffer_clear(ir->buf);
 +		}
 +		if (ir->task)
 +			wake_up_process(ir->task);
@@ -1563,6 +1563,7 @@ index 0000000..6829268
 +static void __exit lirc_dev_exit(void)
 +{
 +	class_destroy(lirc_class);
++	unregister_chrdev_region(lirc_base_dev, MAX_IRCTL_DEVICES);
 +	dprintk("lirc_dev: module unloaded\n");
 +}
 +
@@ -1577,10 +1578,10 @@ index 0000000..6829268
 +MODULE_PARM_DESC(debug, "Enable debugging messages");
 diff --git a/drivers/input/lirc/lirc_dev.h b/drivers/input/lirc/lirc_dev.h
 new file mode 100644
-index 0000000..41d0d04
+index 0000000..69828a8
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_dev.h
-@@ -0,0 +1,180 @@
+@@ -0,0 +1,184 @@
 +/*
 + * LIRC base driver
 + *
@@ -1722,6 +1723,10 @@ index 0000000..41d0d04
 + * fops:
 + * file_operations for drivers which don't fit the current driver model.
 + *
++ * Some ioctl's can be directly handled by lirc_dev if the driver's
++ * ioctl function is NULL or if it returns -ENOIOCTLCMD (see also
++ * lirc_serial.c).
++ *
 + * owner:
 + * the module owning this struct
 + *
@@ -2980,12 +2985,12 @@ index 0000000..ff49bdd
 +
 diff --git a/drivers/input/lirc/lirc_imon.c b/drivers/input/lirc/lirc_imon.c
 new file mode 100644
-index 0000000..05cb293
+index 0000000..bcd8d42
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_imon.c
-@@ -0,0 +1,1487 @@
+@@ -0,0 +1,2043 @@
 +/*
-+ *   lirc_imon.c:  LIRC/VFD/LCD driver for Ahanix/Soundgraph iMON IR/VFD/LCD
++ *   lirc_imon.c:  LIRC/VFD/LCD driver for SoundGraph iMON IR/VFD/LCD
 + *		   including the iMON PAD model
 + *
 + *   Copyright(C) 2004  Venky Raju(dev at venky.ws)
@@ -3012,16 +3017,18 @@ index 0000000..05cb293
 +#include <linux/slab.h>
 +#include <linux/uaccess.h>
 +#include <linux/usb.h>
++#include <linux/usb/input.h>
 +#include <linux/time.h>
++#include <linux/timer.h>
 +
 +#include "lirc.h"
 +#include "lirc_dev.h"
 +
 +
 +#define MOD_AUTHOR	"Venky Raju <dev at venky.ws>"
-+#define MOD_DESC	"Driver for Soundgraph iMON MultiMedia IR/Display"
++#define MOD_DESC	"Driver for SoundGraph iMON MultiMedia IR/Display"
 +#define MOD_NAME	"lirc_imon"
-+#define MOD_VERSION	"0.5"
++#define MOD_VERSION	"0.6"
 +
 +#define DISPLAY_MINOR_BASE	144
 +#define DEVICE_NAME	"lcd%d"
@@ -3031,20 +3038,27 @@ index 0000000..05cb293
 +
 +#define BIT_DURATION	250	/* each bit received is 250us */
 +
++#define dprintk(fmt, args...)						\
++	do {								\
++		if (debug)						\
++			printk(KERN_INFO MOD_NAME ": " fmt, ## args);	\
++	} while (0)
++
 +/*** P R O T O T Y P E S ***/
 +
 +/* USB Callback prototypes */
 +static int imon_probe(struct usb_interface *interface,
 +		      const struct usb_device_id *id);
 +static void imon_disconnect(struct usb_interface *interface);
-+static void usb_rx_callback(struct urb *urb);
++static void usb_rx_callback_intf0(struct urb *urb);
++static void usb_rx_callback_intf1(struct urb *urb);
 +static void usb_tx_callback(struct urb *urb);
 +
 +/* suspend/resume support */
 +static int imon_resume(struct usb_interface *intf);
 +static int imon_suspend(struct usb_interface *intf, pm_message_t message);
 +
-+/* display file_operations function prototypes */
++/* Display file_operations function prototypes */
 +static int display_open(struct inode *inode, struct file *file);
 +static int display_close(struct inode *inode, struct file *file);
 +
[...1745 lines suppressed...]
-+				if (urb_type == PHILUSB_OUTBOUND) {
++				if (urb_type == MCEUSB_OUTBOUND) {
 +					/* outbound data */
 +					usb_fill_int_urb(async_urb, ir->usbdev,
 +						usb_sndintpipe(ir->usbdev,
@@ -7494,7 +8062,7 @@ index 0000000..4c24b79
 +
 +	/* Transmit the command to the mce device */
 +	request_packet_async(ir, ir->usb_ep_out, cmdbuf,
-+			     cmdcount, PHILUSB_OUTBOUND);
++			     cmdcount, MCEUSB_OUTBOUND);
 +
 +	/*
 +	 * The lircd gap calculation expects the write function to
@@ -7537,7 +8105,7 @@ index 0000000..4c24b79
 +				"carrier modulation\n", ir->devnum);
 +			request_packet_async(ir, ir->usb_ep_out,
 +					     cmdbuf, sizeof(cmdbuf),
-+					     PHILUSB_OUTBOUND);
++					     MCEUSB_OUTBOUND);
 +			return carrier;
 +		}
 +
@@ -7554,7 +8122,7 @@ index 0000000..4c24b79
 +				/* Transmit new carrier to mce device */
 +				request_packet_async(ir, ir->usb_ep_out,
 +						     cmdbuf, sizeof(cmdbuf),
-+						     PHILUSB_OUTBOUND);
++						     MCEUSB_OUTBOUND);
 +				return carrier;
 +			}
 +		}
@@ -7871,17 +8439,17 @@ index 0000000..4c24b79
 +		 * its possible we really should wait for a return
 +		 * for each of these...
 +		 */
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
 +		request_packet_async(ir, ep_out, pin_init1, sizeof(pin_init1),
-+				     PHILUSB_OUTBOUND);
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
++				     MCEUSB_OUTBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
 +		request_packet_async(ir, ep_out, pin_init2, sizeof(pin_init2),
-+				     PHILUSB_OUTBOUND);
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
++				     MCEUSB_OUTBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
 +		request_packet_async(ir, ep_out, pin_init3, sizeof(pin_init3),
-+				     PHILUSB_OUTBOUND);
++				     MCEUSB_OUTBOUND);
 +		/* if we don't issue the correct number of receives
-+		 * (PHILUSB_INBOUND) for each outbound, then the first few ir
++		 * (MCEUSB_INBOUND) for each outbound, then the first few ir
 +		 * pulses will be interpreted by the usb_async_callback routine
 +		 * - we should ensure we have the right amount OR less - as the
 +		 * mceusb_dev_recv routine will handle the control packets OK -
@@ -7890,13 +8458,13 @@ index 0000000..4c24b79
 +		 */
 +		request_packet_async(ir, ep_in, NULL, maxp, 0);
 +	} else {
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
 +		request_packet_async(ir, ep_out, init1,
-+				     sizeof(init1), PHILUSB_OUTBOUND);
-+		request_packet_async(ir, ep_in, NULL, maxp, PHILUSB_INBOUND);
++				     sizeof(init1), MCEUSB_OUTBOUND);
++		request_packet_async(ir, ep_in, NULL, maxp, MCEUSB_INBOUND);
 +		request_packet_async(ir, ep_out, init2,
-+				     sizeof(init2), PHILUSB_OUTBOUND);
++				     sizeof(init2), MCEUSB_OUTBOUND);
 +		request_packet_async(ir, ep_in, NULL, maxp, 0);
 +	}
 +
@@ -9673,10 +10241,10 @@ index 0000000..270f8ff
 +module_exit(sasem_exit);
 diff --git a/drivers/input/lirc/lirc_serial.c b/drivers/input/lirc/lirc_serial.c
 new file mode 100644
-index 0000000..01cc8b7
+index 0000000..1b79ced
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_serial.c
-@@ -0,0 +1,1321 @@
+@@ -0,0 +1,1316 @@
 +/*
 + * lirc_serial.c
 + *
@@ -10433,11 +11001,8 @@ index 0000000..01cc8b7
 +
 +static int hardware_init_port(void)
 +{
-+	unsigned long flags;
 +	u8 scratch, scratch2, scratch3;
 +
-+	spin_lock_irqsave(&hardware[type].lock, flags);
-+
 +	/*
 +	 * This is a simple port existence test, borrowed from the autoconfig
 +	 * function in drivers/serial/8250.c
@@ -10518,8 +11083,6 @@ index 0000000..01cc8b7
 +		break;
 +	}
 +
-+	spin_unlock_irqrestore(&hardware[type].lock, flags);
-+
 +	return 0;
 +}
 +
@@ -10588,6 +11151,11 @@ index 0000000..01cc8b7
 +	int result;
 +	unsigned long flags;
 +
++	/* Init read buffer. */
++	result = lirc_buffer_init(&rbuf, sizeof(int), RBUF_LEN);
++	if (result < 0)
++		return -ENOMEM;
++
 +	/* initialize timestamp */
 +	do_gettimeofday(&lasttv);
 +
@@ -10837,11 +11405,6 @@ index 0000000..01cc8b7
 +{
 +	int result;
 +
-+	/* Init read buffer. */
-+	result = lirc_buffer_init(&rbuf, sizeof(int), RBUF_LEN);
-+	if (result < 0)
-+		return -ENOMEM;
-+
 +	result = platform_driver_register(&lirc_serial_driver);
 +	if (result) {
 +		printk("lirc register returned %d\n", result);
@@ -13083,10 +13646,10 @@ index 0000000..d1ce354
 +MODULE_PARM_DESC(debug, "Enable debugging messages");
 diff --git a/drivers/input/lirc/lirc_ttusbir.c b/drivers/input/lirc/lirc_ttusbir.c
 new file mode 100644
-index 0000000..4d18084
+index 0000000..2955bad
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_ttusbir.c
-@@ -0,0 +1,398 @@
+@@ -0,0 +1,397 @@
 +/*
 + * lirc_ttusbir.c
 + *
@@ -13396,7 +13959,6 @@ index 0000000..4d18084
 +	ttusbir->driver.rbuf = &ttusbir->rbuf;
 +	ttusbir->driver.set_use_inc = set_use_inc;
 +	ttusbir->driver.set_use_dec = set_use_dec;
-+	ttusbir->driver.fops = NULL;
 +	ttusbir->driver.dev = &intf->dev;
 +	ttusbir->driver.owner = THIS_MODULE;
 +	ttusbir->driver.features = LIRC_CAN_REC_MODE2;
@@ -13487,10 +14049,10 @@ index 0000000..4d18084
 +module_exit(ttusbir_exit_module);
 diff --git a/drivers/input/lirc/lirc_zilog.c b/drivers/input/lirc/lirc_zilog.c
 new file mode 100644
-index 0000000..38fddec
+index 0000000..049c3da
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_zilog.c
-@@ -0,0 +1,1382 @@
+@@ -0,0 +1,1384 @@
 +/*
 + * i2c IR lirc driver for devices with zilog IR processors
 + *
@@ -14670,10 +15232,10 @@ index 0000000..38fddec
 +		/* try to fire up polling thread */
 +		ir->t_notify = &tn;
 +		ir->task = kthread_run(lirc_thread, ir, "lirc_zilog");
-+		ret = PTR_ERR(ir->task);
-+		if (ret <= 0) {
++		if (IS_ERR(ir->task)) {
++			ret = PTR_ERR(ir->task);
 +			zilog_error("lirc_register_driver: cannot run "
-+				    "poll thread\n");
++				    "poll thread %d\n", ret);
 +			goto err;
 +		}
 +		wait_for_completion(&tn);
@@ -14794,6 +15356,9 @@ index 0000000..38fddec
 +	memset(&c, 0, sizeof(c));
 +
 +	if (adap->id == I2C_HW_B_BT848 ||
++#ifdef I2C_HW_B_HDPVR
++	    adap->id == I2C_HW_B_HDPVR ||
++#endif
 +	    adap->id == I2C_HW_B_CX2341X) {
 +		int have_rx = 0, have_tx = 0;
 +
@@ -14839,7 +15404,6 @@ index 0000000..38fddec
 +static int __init zilog_init(void)
 +{
 +	mutex_init(&tx_data_lock);
-+	request_module("ivtv");
 +	request_module("firmware_class");
 +	i2c_add_driver(&driver);
 +	return 0;


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.976.2.16
retrieving revision 1.976.2.17
diff -u -p -r1.976.2.16 -r1.976.2.17
--- sources	13 Jun 2009 21:22:34 -0000	1.976.2.16
+++ sources	27 Jun 2009 11:05:16 -0000	1.976.2.17
@@ -1 +1,3 @@
 7a80058a6382e5108cdb5554d1609615  linux-2.6.30.tar.bz2
+33d2d730beb66aa82349df8b6096fd91  patch-2.6.31-rc1.bz2
+59ac384a81001592f0365149d7cff9fa  patch-2.6.31-rc1-git2.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.888.2.15
retrieving revision 1.888.2.16
diff -u -p -r1.888.2.15 -r1.888.2.16
--- upstream	13 Jun 2009 21:22:34 -0000	1.888.2.15
+++ upstream	27 Jun 2009 11:05:16 -0000	1.888.2.16
@@ -1 +1,3 @@
 linux-2.6.30.tar.bz2
+patch-2.6.31-rc1.bz2
+patch-2.6.31-rc1-git2.bz2

via-hwmon-temp-sensor.patch:

Index: via-hwmon-temp-sensor.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/via-hwmon-temp-sensor.patch,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -p -r1.2.2.2 -r1.2.2.3
--- via-hwmon-temp-sensor.patch	13 Jun 2009 21:22:34 -0000	1.2.2.2
+++ via-hwmon-temp-sensor.patch	27 Jun 2009 11:05:16 -0000	1.2.2.3
@@ -8,7 +8,7 @@ Now at patch ../patches/2-linux-2.6-via.
 +++ work-2.6.29.4/drivers/hwmon/Kconfig
 @@ -720,6 +720,14 @@ config SENSORS_THMC50
  	  This driver can also be built as a module.  If so, the module
- 	  will be called thmc50.
+ 	  will be called tmp401.
  
 +config SENSORS_VIA_CPUTEMP
 +	tristate "VIA CPU temperature sensor"
@@ -24,9 +24,9 @@ Now at patch ../patches/2-linux-2.6-via.
 --- work-2.6.29.4.orig/drivers/hwmon/Makefile
 +++ work-2.6.29.4/drivers/hwmon/Makefile
 @@ -75,6 +75,7 @@ obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc4
- obj-$(CONFIG_SENSORS_SMSC47M1)	+= smsc47m1.o
  obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
  obj-$(CONFIG_SENSORS_THMC50)	+= thmc50.o
+ obj-$(CONFIG_SENSORS_TMP401)	+= tmp401.o
 +obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
  obj-$(CONFIG_SENSORS_VIA686A)	+= via686a.o
  obj-$(CONFIG_SENSORS_VT1211)	+= vt1211.o

xen.pvops.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.1.2.24 -r 1.1.2.25 xen.pvops.patch
Index: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.24
retrieving revision 1.1.2.25
diff -u -p -r1.1.2.24 -r1.1.2.25
--- xen.pvops.patch	4 Jun 2009 21:33:56 -0000	1.1.2.24
+++ xen.pvops.patch	27 Jun 2009 11:05:17 -0000	1.1.2.25
@@ -1,83075 +1,6672 @@
-diff --git a/Documentation/ABI/testing/sysfs-devices-cache_disable b/Documentation/ABI/testing/sysfs-devices-cache_disable
-new file mode 100644
-index 0000000..175bb4f
---- /dev/null
-+++ b/Documentation/ABI/testing/sysfs-devices-cache_disable
-@@ -0,0 +1,18 @@
-+What:      /sys/devices/system/cpu/cpu*/cache/index*/cache_disable_X
-+Date:      August 2008
-+KernelVersion:	2.6.27
-+Contact:	mark.langsdorf at amd.com
-+Description:	These files exist in every cpu's cache index directories.
-+		There are currently 2 cache_disable_# files in each
-+		directory.  Reading from these files on a supported
-+		processor will return that cache disable index value
-+		for that processor and node.  Writing to one of these
-+		files will cause the specificed cache index to be disabled.
-+
-+		Currently, only AMD Family 10h Processors support cache index
-+		disable, and only for their L3 caches.  See the BIOS and
-+		Kernel Developer's Guide at
-+		http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116-Public-GH-BKDG_3.20_2-4-09.pdf
-+		for formatting information and other details on the
-+		cache index disable.
-+Users:    joachim.deguara at amd.com
-diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
-index b1eb661..9632444 100644
---- a/Documentation/DocBook/Makefile
-+++ b/Documentation/DocBook/Makefile
-@@ -13,7 +13,8 @@ DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
- 	    gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
- 	    genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
- 	    mac80211.xml debugobjects.xml sh.xml regulator.xml \
--	    alsa-driver-api.xml writing-an-alsa-driver.xml
-+	    alsa-driver-api.xml writing-an-alsa-driver.xml \
-+	    tracepoint.xml
- 
- ###
- # The build process is as follows (targets):
-diff --git a/Documentation/DocBook/tracepoint.tmpl b/Documentation/DocBook/tracepoint.tmpl
-new file mode 100644
-index 0000000..b0756d0
---- /dev/null
-+++ b/Documentation/DocBook/tracepoint.tmpl
-@@ -0,0 +1,89 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-+	"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
-+
-+<book id="Tracepoints">
-+ <bookinfo>
-+  <title>The Linux Kernel Tracepoint API</title>
-+
-+  <authorgroup>
-+   <author>
-+    <firstname>Jason</firstname>
-+    <surname>Baron</surname>
-+    <affiliation>
-+     <address>
-+      <email>jbaron at redhat.com</email>
-+     </address>
-+    </affiliation>
-+   </author>
-+  </authorgroup>
-+
-+  <legalnotice>
-+   <para>
-+     This documentation is free software; you can redistribute
-+     it and/or modify it under the terms of the GNU General Public
-+     License as published by the Free Software Foundation; either
-+     version 2 of the License, or (at your option) any later
-+     version.
-+   </para>
-+
-+   <para>
-+     This program is distributed in the hope that it will be
-+     useful, but WITHOUT ANY WARRANTY; without even the implied
-+     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-+     See the GNU General Public License for more details.
-+   </para>
-+
-+   <para>
-+     You should have received a copy of the GNU General Public
-+     License along with this program; if not, write to the Free
-+     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+     MA 02111-1307 USA
-+   </para>
-+
-+   <para>
-+     For more details see the file COPYING in the source
-+     distribution of Linux.
-+   </para>
-+  </legalnotice>
-+ </bookinfo>
-+
-+ <toc></toc>
-+  <chapter id="intro">
-+   <title>Introduction</title>
-+   <para>
-+     Tracepoints are static probe points that are located in strategic points
-+     throughout the kernel. 'Probes' register/unregister with tracepoints
-+     via a callback mechanism. The 'probes' are strictly typed functions that
-+     are passed a unique set of parameters defined by each tracepoint.
-+   </para>
-+
-+   <para>
-+     From this simple callback mechanism, 'probes' can be used to profile, debug,
-+     and understand kernel behavior. There are a number of tools that provide a
-+     framework for using 'probes'. These tools include Systemtap, ftrace, and
-+     LTTng.
-+   </para>
-+
-+   <para>
-+     Tracepoints are defined in a number of header files via various macros. Thus,
-+     the purpose of this document is to provide a clear accounting of the available
-+     tracepoints. The intention is to understand not only what tracepoints are
-+     available but also to understand where future tracepoints might be added.
-+   </para>
-+
-+   <para>
-+     The API presented has functions of the form:
-+     <function>trace_tracepointname(function parameters)</function>. These are the
-+     tracepoints callbacks that are found throughout the code. Registering and
-+     unregistering probes with these callback sites is covered in the
-+     <filename>Documentation/trace/*</filename> directory.
-+   </para>
-+  </chapter>
-+
-+  <chapter id="irq">
-+   <title>IRQ</title>
-+!Iinclude/trace/events/irq.h
-+  </chapter>
-+
-+</book>
-diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt
-index 0688482..02cced1 100644
---- a/Documentation/RCU/trace.txt
-+++ b/Documentation/RCU/trace.txt
-@@ -192,23 +192,24 @@ rcu/rcuhier (which displays the struct rcu_node hierarchy).
- The output of "cat rcu/rcudata" looks as follows:
- 
- rcu:
--  0 c=4011 g=4012 pq=1 pqc=4011 qp=0 rpfq=1 rp=3c2a dt=23301/73 dn=2 df=1882 of=0 ri=2126 ql=2 b=10
--  1 c=4011 g=4012 pq=1 pqc=4011 qp=0 rpfq=3 rp=39a6 dt=78073/1 dn=2 df=1402 of=0 ri=1875 ql=46 b=10
--  2 c=4010 g=4010 pq=1 pqc=4010 qp=0 rpfq=-5 rp=1d12 dt=16646/0 dn=2 df=3140 of=0 ri=2080 ql=0 b=10
--  3 c=4012 g=4013 pq=1 pqc=4012 qp=1 rpfq=3 rp=2b50 dt=21159/1 dn=2 df=2230 of=0 ri=1923 ql=72 b=10
--  4 c=4012 g=4013 pq=1 pqc=4012 qp=1 rpfq=3 rp=1644 dt=5783/1 dn=2 df=3348 of=0 ri=2805 ql=7 b=10
--  5 c=4012 g=4013 pq=0 pqc=4011 qp=1 rpfq=3 rp=1aac dt=5879/1 dn=2 df=3140 of=0 ri=2066 ql=10 b=10
--  6 c=4012 g=4013 pq=1 pqc=4012 qp=1 rpfq=3 rp=ed8 dt=5847/1 dn=2 df=3797 of=0 ri=1266 ql=10 b=10
--  7 c=4012 g=4013 pq=1 pqc=4012 qp=1 rpfq=3 rp=1fa2 dt=6199/1 dn=2 df=2795 of=0 ri=2162 ql=28 b=10
-+rcu:
-+  0 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=10951/1 dn=0 df=1101 of=0 ri=36 ql=0 b=10
-+  1 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=16117/1 dn=0 df=1015 of=0 ri=0 ql=0 b=10
-+  2 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=1445/1 dn=0 df=1839 of=0 ri=0 ql=0 b=10
-+  3 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=6681/1 dn=0 df=1545 of=0 ri=0 ql=0 b=10
-+  4 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=1003/1 dn=0 df=1992 of=0 ri=0 ql=0 b=10
-+  5 c=17829 g=17830 pq=1 pqc=17829 qp=1 dt=3887/1 dn=0 df=3331 of=0 ri=4 ql=2 b=10
-+  6 c=17829 g=17829 pq=1 pqc=17829 qp=0 dt=859/1 dn=0 df=3224 of=0 ri=0 ql=0 b=10
-+  7 c=17829 g=17830 pq=0 pqc=17829 qp=1 dt=3761/1 dn=0 df=1818 of=0 ri=0 ql=2 b=10
- rcu_bh:
--  0 c=-268 g=-268 pq=1 pqc=-268 qp=0 rpfq=-145 rp=21d6 dt=23301/73 dn=2 df=0 of=0 ri=0 ql=0 b=10
--  1 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-170 rp=20ce dt=78073/1 dn=2 df=26 of=0 ri=5 ql=0 b=10
--  2 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-83 rp=fbd dt=16646/0 dn=2 df=28 of=0 ri=4 ql=0 b=10
--  3 c=-268 g=-268 pq=1 pqc=-268 qp=0 rpfq=-105 rp=178c dt=21159/1 dn=2 df=28 of=0 ri=2 ql=0 b=10
--  4 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-30 rp=b54 dt=5783/1 dn=2 df=32 of=0 ri=0 ql=0 b=10
--  5 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-29 rp=df5 dt=5879/1 dn=2 df=30 of=0 ri=3 ql=0 b=10
--  6 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-28 rp=788 dt=5847/1 dn=2 df=32 of=0 ri=0 ql=0 b=10
--  7 c=-268 g=-268 pq=1 pqc=-268 qp=1 rpfq=-53 rp=1098 dt=6199/1 dn=2 df=30 of=0 ri=3 ql=0 b=10
-+  0 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=10951/1 dn=0 df=0 of=0 ri=0 ql=0 b=10
-+  1 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=16117/1 dn=0 df=13 of=0 ri=0 ql=0 b=10
-+  2 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=1445/1 dn=0 df=15 of=0 ri=0 ql=0 b=10
-+  3 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=6681/1 dn=0 df=9 of=0 ri=0 ql=0 b=10
-+  4 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=1003/1 dn=0 df=15 of=0 ri=0 ql=0 b=10
-+  5 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=3887/1 dn=0 df=15 of=0 ri=0 ql=0 b=10
-+  6 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=859/1 dn=0 df=15 of=0 ri=0 ql=0 b=10
-+  7 c=-275 g=-275 pq=1 pqc=-275 qp=0 dt=3761/1 dn=0 df=15 of=0 ri=0 ql=0 b=10
- 
- The first section lists the rcu_data structures for rcu, the second for
- rcu_bh.  Each section has one line per CPU, or eight for this 8-CPU system.
-@@ -253,12 +254,6 @@ o	"pqc" indicates which grace period the last-observed quiescent
- o	"qp" indicates that RCU still expects a quiescent state from
- 	this CPU.
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index d1430ef..c402675 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -1884,6 +1884,10 @@ config PCI_OLPC
+ 	def_bool y
+ 	depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
  
--o	"rpfq" is the number of rcu_pending() calls on this CPU required
--	to induce this CPU to invoke force_quiescent_state().
[...88297 lines suppressed...]
--			struct ima_queue_entry, later);
-+	qe = list_entry_rcu(qe->later.next,
-+			    struct ima_queue_entry, later);
- 	rcu_read_unlock();
- 	(*pos)++;
- 
-diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
-index 7f09fb8..aa441c9 100644
---- a/security/keys/keyctl.c
-+++ b/security/keys/keyctl.c
-@@ -896,7 +896,7 @@ long keyctl_instantiate_key(key_serial_t id,
- {
- 	const struct cred *cred = current_cred();
- 	struct request_key_auth *rka;
--	struct key *instkey, *dest_keyring;
-+	struct key *instkey, *uninitialized_var(dest_keyring);
- 	void *payload;
- 	long ret;
- 	bool vm = false;
-@@ -974,7 +974,7 @@ long keyctl_negate_key(key_serial_t id, unsigned timeout, key_serial_t ringid)
- {
- 	const struct cred *cred = current_cred();
- 	struct request_key_auth *rka;
--	struct key *instkey, *dest_keyring;
-+	struct key *instkey, *uninitialized_var(dest_keyring);
- 	long ret;
- 
- 	kenter("%d,%u,%d", id, timeout, ringid);
-diff --git a/security/selinux/netnode.c b/security/selinux/netnode.c
-index 7100072..a307122 100644
---- a/security/selinux/netnode.c
-+++ b/security/selinux/netnode.c
-@@ -140,6 +140,7 @@ static struct sel_netnode *sel_netnode_find(const void *addr, u16 family)
- 		break;
- 	default:
- 		BUG();
-+		return NULL;
- 	}
- 
- 	list_for_each_entry_rcu(node, &sel_netnode_hash[idx].list, list)
-diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
-index e03a7e1..11d2cb1 100644
---- a/security/smack/smackfs.c
-+++ b/security/smack/smackfs.c
-@@ -734,8 +734,8 @@ static void smk_netlbladdr_insert(struct smk_netlbladdr *new)
- 		return;
- 	}
- 
--	m = list_entry(rcu_dereference(smk_netlbladdr_list.next),
--			 struct smk_netlbladdr, list);
-+	m = list_entry_rcu(smk_netlbladdr_list.next,
-+			   struct smk_netlbladdr, list);
- 
- 	/* the comparison '>' is a bit hacky, but works */
- 	if (new->smk_mask.s_addr > m->smk_mask.s_addr) {
-@@ -748,8 +748,8 @@ static void smk_netlbladdr_insert(struct smk_netlbladdr *new)
- 			list_add_rcu(&new->list, &m->list);
- 			return;
- 		}
--		m_next = list_entry(rcu_dereference(m->list.next),
--				 struct smk_netlbladdr, list);
-+		m_next = list_entry_rcu(m->list.next,
-+					struct smk_netlbladdr, list);
- 		if (new->smk_mask.s_addr > m_next->smk_mask.s_addr) {
- 			list_add_rcu(&new->list, &m->list);
- 			return;
-diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig
-index 84714a6..491e0d7 100644
---- a/sound/drivers/Kconfig
-+++ b/sound/drivers/Kconfig
-@@ -91,6 +91,8 @@ config SND_VIRMIDI
- 
- config SND_MTPAV
- 	tristate "MOTU MidiTimePiece AV multiport MIDI"
-+	# sometimes crashes
-+	depends on 0
- 	select SND_RAWMIDI
- 	help
- 	  To use a MOTU MidiTimePiece AV multiport MIDI adapter
-diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
-index 3cd57ee..5a26c84 100644
---- a/sound/isa/sb/sb8.c
-+++ b/sound/isa/sb/sb8.c
-@@ -101,7 +101,7 @@ static int __devinit snd_sb8_probe(struct device *pdev, unsigned int dev)
- 	struct snd_card *card;
- 	struct snd_sb8 *acard;
- 	struct snd_opl3 *opl3;
--	int err;
-+	int uninitialized_var(err);
- 
- 	err = snd_card_create(index[dev], id[dev], THIS_MODULE,
- 			      sizeof(struct snd_sb8), &card);
-diff --git a/sound/oss/ad1848.c b/sound/oss/ad1848.c
-index d12bd98..42f126a 100644
---- a/sound/oss/ad1848.c
-+++ b/sound/oss/ad1848.c
-@@ -2879,7 +2879,7 @@ static struct isapnp_device_id id_table[] __devinitdata = {
- 	{0}
- };
- 
--MODULE_DEVICE_TABLE(isapnp, id_table);
-+MODULE_STATIC_DEVICE_TABLE(isapnp, id_table);
- 
- static struct pnp_dev *activate_dev(char *devname, char *resname, struct pnp_dev *dev)
- {
-diff --git a/sound/pci/pcxhr/pcxhr.c b/sound/pci/pcxhr/pcxhr.c
-index 833e9c7..649f6c7 100644
---- a/sound/pci/pcxhr/pcxhr.c
-+++ b/sound/pci/pcxhr/pcxhr.c
-@@ -224,7 +224,7 @@ static int pcxhr_pll_freq_register(unsigned int freq, unsigned int* pllreg,
- static int pcxhr_get_clock_reg(struct pcxhr_mgr *mgr, unsigned int rate,
- 			       unsigned int *reg, unsigned int *freq)
- {
--	unsigned int val, realfreq, pllreg;
-+	unsigned int val, realfreq, uninitialized_var(pllreg);
- 	struct pcxhr_rmh rmh;
- 	int err;
- 
-@@ -298,7 +298,9 @@ static int pcxhr_sub_set_clock(struct pcxhr_mgr *mgr,
- 			       unsigned int rate,
- 			       int *changed)
- {
--	unsigned int val, realfreq, speed;
-+	unsigned int uninitialized_var(val),
-+		     uninitialized_var(realfreq),
-+		     speed;
- 	struct pcxhr_rmh rmh;
- 	int err;
- 
-@@ -681,7 +683,7 @@ static void pcxhr_trigger_tasklet(unsigned long arg)
- {
- 	unsigned long flags;
- 	int i, j, err;
--	struct pcxhr_pipe *pipe;
-+	struct pcxhr_pipe *uninitialized_var(pipe);
- 	struct snd_pcxhr *chip;
- 	struct pcxhr_mgr *mgr = (struct pcxhr_mgr*)(arg);
- 	int capture_mask = 0;
-diff --git a/sound/pci/pcxhr/pcxhr_mixer.c b/sound/pci/pcxhr/pcxhr_mixer.c
-index fec0493..8042a34 100644
---- a/sound/pci/pcxhr/pcxhr_mixer.c
-+++ b/sound/pci/pcxhr/pcxhr_mixer.c
-@@ -940,7 +940,7 @@ static int pcxhr_iec958_get(struct snd_kcontrol *kcontrol,
- 			    struct snd_ctl_elem_value *ucontrol)
- {
- 	struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol);
--	unsigned char aes_bits;
-+	unsigned char uninitialized_var(aes_bits);
- 	int i, err;
- 
- 	mutex_lock(&chip->mgr->mixer_mutex);
-@@ -1268,3 +1268,4 @@ int pcxhr_create_mixer(struct pcxhr_mgr *mgr)
- 
- 	return 0;
- }
-+
-diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
-index 1ef58c5..d15108a 100644
---- a/sound/pci/via82xx.c
-+++ b/sound/pci/via82xx.c
-@@ -2431,7 +2431,7 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci,
- 				       const struct pci_device_id *pci_id)
- {
- 	struct snd_card *card;
--	struct via82xx *chip;
-+	struct via82xx *uninitialized_var(chip);
- 	int chip_type = 0, card_type;
- 	unsigned int i;
- 	int err;
-diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c
-index 0d54e35..66d0d2d 100644
---- a/sound/pci/via82xx_modem.c
-+++ b/sound/pci/via82xx_modem.c
-@@ -1165,7 +1165,7 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci,
- 				       const struct pci_device_id *pci_id)
- {
- 	struct snd_card *card;
--	struct via82xx_modem *chip;
-+	struct via82xx_modem *uninitialized_var(chip);
- 	int chip_type = 0, card_type;
- 	unsigned int i;
- 	int err;
-diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c
-index fc9136c..532b902 100644
---- a/sound/pci/vx222/vx222.c
-+++ b/sound/pci/vx222/vx222.c
-@@ -194,7 +194,7 @@ static int __devinit snd_vx222_probe(struct pci_dev *pci,
- 	static int dev;
- 	struct snd_card *card;
- 	struct snd_vx_hardware *hw;
--	struct snd_vx222 *vx;
-+	struct snd_vx222 *uninitialized_var(vx);
- 	int err;
+-	io_tlb_overflow_buffer = alloc_bootmem_low(io_tlb_overflow);
++	io_tlb_overflow_buffer = swiotlb_alloc_boot(io_tlb_overflow,
++						    io_tlb_overflow >> IO_TLB_SHIFT);
+ 	if (!io_tlb_overflow_buffer)
+ 		panic("Cannot allocate SWIOTLB overflow buffer!\n");
  
- 	if (dev >= SNDRV_CARDS)

xen.pvops.post.patch:

Index: xen.pvops.post.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.post.patch,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -p -r1.1.2.17 -r1.1.2.18
--- xen.pvops.post.patch	4 Jun 2009 20:31:19 -0000	1.1.2.17
+++ xen.pvops.post.patch	27 Jun 2009 11:05:24 -0000	1.1.2.18
@@ -1,42 +1,6 @@
 Reapply and merge in Fedora changes
-remove localversion-tip file to avoid -tip being added to the kernel name
 Test some patches to get STACKPROTECTOR working
 
---- a/arch/x86/mm/init.c	2009-04-23 20:13:34.000000000 +0100
-+++ b/arch/x86/mm/init.c	2009-04-24 20:27:42.000000000 +0100
-@@ -163,6 +163,10 @@
- 	set_nx();
- 	if (nx_enabled)
- 		printk(KERN_INFO "NX (Execute Disable) protection: active\n");
-+	else
-+	if (exec_shield)
-+		printk(KERN_INFO "Using x86 segment limits to approximate "
-+			"NX protection\n");
- 
- 	/* Enable PSE if available */
- 	if (cpu_has_pse)
---- a/include/linux/sched.h	2009-04-23 20:13:50.000000000 +0100
-+++ b/include/linux/sched.h	2009-04-24 20:27:42.000000000 +0100
-@@ -99,6 +99,9 @@
- struct fs_struct;
- struct bts_context;
- 
-+extern int exec_shield;
-+extern int print_fatal_signals;
-+
- /*
-  * List of flags we want to share for kernel threads,
-  * if only because they are not used by them anyway.
---- a/mm/mmap.c	2009-04-23 20:13:53.000000000 +0100
-+++ b/mm/mmap.c	2009-04-24 20:27:42.000000000 +0100
-@@ -28,6 +28,7 @@
- #include <linux/rmap.h>
- #include <linux/mmu_notifier.h>
- #include <linux/perf_counter.h>
-+#include <linux/random.h>
- 
- #include <asm/uaccess.h>
- #include <asm/cacheflush.h>
 --- a/drivers/pci/pci.h	2009-02-25 20:16:13.000000000 +0000
 +++ b/drivers/pci/pci.h	2009-02-25 20:40:21.000000000 +0000
 @@ -111,8 +111,10 @@
@@ -50,16 +14,6 @@ Test some patches to get STACKPROTECTOR 
  static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
  #endif
  
---- a/include/linux/init_task.h	2009-04-23 20:13:50.000000000 +0100
-+++ b/include/linux/init_task.h	2009-04-24 20:47:17.000000000 +0100
-@@ -170,6 +170,7 @@
- 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\
- 	},								\
- 	.dirties = INIT_PROP_LOCAL_SINGLE(dirties),			\
-+	INIT_UTRACE(tsk)						\
- 	INIT_IDS							\
- 	INIT_PERF_COUNTERS(tsk)						\
- 	INIT_TRACE_IRQFLAGS						\
 diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
 index 7727aa8..5d6083c 100644
 --- a/arch/x86/include/asm/paravirt_types.h
@@ -75,64 +29,45 @@ index 7727aa8..5d6083c 100644
  	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
  #ifdef CONFIG_X86_64
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 76f8f84..4118f17 100644
+index 59f4524..068e286 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
-@@ -356,6 +364,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -354,6 +362,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  	preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
- 
+
  	__unlazy_fpu(prev_p);
 +	if (next_p->mm)
 +		load_user_cs_desc(cpu, next_p->mm);
- 
+
  	/* we're going to use this soon, after a few expensive things */
  	if (preload_fpu)
-@@ -509,3 +518,41 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
- 	return 0;
+diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
+index 2202b62..f371fe8 100644
+--- a/arch/x86/pci/common.c
++++ b/arch/x86/pci/common.c
+@@ -432,6 +432,22 @@ int __init pcibios_init(void)
+ 		pci_cache_line_size = 64 >> 2;  /* K7 & K8 */
+ 	else if (c->x86 > 6 && c->x86_vendor == X86_VENDOR_INTEL)
+ 		pci_cache_line_size = 128 >> 2;	/* P4 */
++
++	if (c->x86_clflush_size != (pci_cache_line_size <<2))
++		printk(KERN_DEBUG "PCI: old code would have set cacheline "
++			"size to %d bytes, but clflush_size = %d\n",
++			pci_cache_line_size << 2,
++			c->x86_clflush_size);
++
++	/* Once we know this logic works, all the above code can be deleted. */
++	if (c->x86_clflush_size > 0) {
++		pci_cache_line_size = c->x86_clflush_size >> 2;
++		printk(KERN_DEBUG "PCI: pci_cache_line_size set to %d bytes\n",
++			pci_cache_line_size >> 2);
++	} else {
++		pci_cache_line_size = 32 >> 2;
++		printk(KERN_DEBUG "PCI: Unknown cacheline size. Setting to 32 bytes\n");
++	}
  }
  
-+
-+static void modify_cs(struct mm_struct *mm, unsigned long limit)
-+{
-+	mm->context.exec_limit = limit;
-+	set_user_cs(&mm->context.user_cs, limit);
-+	if (mm == current->mm) {
-+		int cpu;
-+
-+		cpu = get_cpu();
-+		load_user_cs_desc(cpu, mm);
-+		put_cpu();
-+	}
-+}
-+
-+void arch_add_exec_range(struct mm_struct *mm, unsigned long limit)
-+{
-+	if (limit > mm->context.exec_limit)
-+		modify_cs(mm, limit);
-+}
-+
-+void arch_remove_exec_range(struct mm_struct *mm, unsigned long old_end)
-+{
-+	struct vm_area_struct *vma;
-+	unsigned long limit = PAGE_SIZE;
-+
-+	if (old_end == mm->context.exec_limit) {
-+		for (vma = mm->mmap; vma; vma = vma->vm_next)
-+			if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
-+				limit = vma->vm_end;
-+		modify_cs(mm, limit);
-+	}
-+}
-+
-+void arch_flush_exec_range(struct mm_struct *mm)
-+{
-+	mm->context.exec_limit = 0;
-+	set_user_cs(&mm->context.user_cs, 0);
-+}
---- a/localversion-tip	2009-02-17 19:49:34.000000000 +0000
-+++ /dev/null	2009-02-17 18:08:14.005240123 +0000
-@@ -1 +0,0 @@
---tip
+ int __init pcibios_init(void)
 --- linux-2.6.29.x86_64/arch/x86/xen/Makefile.orig	2009-04-24 22:54:26.000000000 +0100
 +++ linux-2.6.29.x86_64/arch/x86/xen/Makefile	2009-04-26 16:46:57.000000000 +0100
 @@ -4,6 +4,10 @@

xen.pvops.pre.patch:

Index: xen.pvops.pre.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.pre.patch,v
retrieving revision 1.1.2.13
retrieving revision 1.1.2.14
diff -u -p -r1.1.2.13 -r1.1.2.14
--- xen.pvops.pre.patch	4 Jun 2009 19:35:03 -0000	1.1.2.13
+++ xen.pvops.pre.patch	27 Jun 2009 11:05:24 -0000	1.1.2.14
@@ -1,77 +1,9 @@
 temporarily revert various Fedora changes so that the pvops patch applies cleanly
 Affected patches;
-more linux-2.6-execshield.patch - arch/x86/mm/init.c arch/x86/mm/init_32.c include/linux/sched.h mm/mmap.c arch/x86/include/asm/paravirt.h arch/x86/kernel/process_32.c
 linux-2.6-defaults-pci_no_msi.patch - drivers/pci/pci.h
-linux-2.6-utrace.patch - include/linux/init_task.h
+linux-2.6-execshield.patch - arch/x86/include/asm/paravirt.h arch/x86/kernel/process_32.c
+linux-2.6-pci-cacheline-sizing.patch - arch/x86/pci/common.c
 
---- a/arch/x86/mm/init.c	2009-04-24 20:27:42.000000000 +0100
-+++ b/arch/x86/mm/init.c	2009-04-23 20:13:34.000000000 +0100
-@@ -163,11 +163,7 @@
- 	set_nx();
- 	if (nx_enabled)
- 		printk(KERN_INFO "NX (Execute Disable) protection: active\n");
--	else
- #endif
--	if (exec_shield)
--		printk(KERN_INFO "Using x86 segment limits to approximate "
--			"NX protection\n");
- 
- 	/* Enable PSE if available */
- 	if (cpu_has_pse)
---- a/arch/x86/mm/init_32.c	2009-04-24 20:27:42.000000000 +0100
-+++ b/arch/x86/mm/init_32.c	2009-04-23 20:13:34.000000000 +0100
-@@ -602,7 +602,7 @@
-  * Control non executable mappings.
-  *
-  * on      Enable
-- * off     Disable (disables exec-shield too)
-+ * off     Disable
-  */
- static int __init noexec_setup(char *str)
- {
-@@ -611,12 +611,14 @@
- 			__supported_pte_mask |= _PAGE_NX;
- 			disable_nx = 0;
- 		}
--	} else if (!strcmp(str, "off")) {
--		disable_nx = 1;
--		__supported_pte_mask &= ~_PAGE_NX;
--		exec_shield = 0;
--	} else
--		return -EINVAL;
-+	} else {
-+		if (!strcmp(str, "off")) {
-+			disable_nx = 1;
-+			__supported_pte_mask &= ~_PAGE_NX;
-+		} else {
-+			return -EINVAL;
-+		}
-+	}
- 
- 	return 0;
- }
---- a/include/linux/sched.h	2009-04-24 20:27:42.000000000 +0100
-+++ b/include/linux/sched.h	2009-04-23 20:13:50.000000000 +0100
-@@ -99,9 +99,6 @@
- struct bts_tracer;
- struct fs_struct;
- 
--extern int exec_shield;
--extern int print_fatal_signals;
--
- /*
-  * List of flags we want to share for kernel threads,
-  * if only because they are not used by them anyway.
---- a/mm/mmap.c	2009-04-24 20:27:42.000000000 +0100
-+++ b/mm/mmap.c	2009-04-23 20:13:53.000000000 +0100
-@@ -28,7 +28,6 @@
- #include <linux/mempolicy.h>
- #include <linux/rmap.h>
- #include <linux/mmu_notifier.h>
--#include <linux/random.h>
- 
- #include <asm/uaccess.h>
- #include <asm/cacheflush.h>
 --- a/drivers/pci/pci.h	2009-04-24 20:46:50.000000000 +0100
 +++ b/drivers/pci/pci.h	2009-04-23 20:13:43.000000000 +0100
 @@ -112,11 +112,9 @@
@@ -86,16 +18,6 @@ linux-2.6-utrace.patch - include/linux/i
  static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
  #endif
 
---- a/include/linux/init_task.h	2009-04-24 20:47:17.000000000 +0100
-+++ b/include/linux/init_task.h	2009-04-23 20:13:50.000000000 +0100
-@@ -170,7 +170,6 @@
- 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\
- 	},								\
- 	.dirties = INIT_PROP_LOCAL_SINGLE(dirties),			\
--	INIT_UTRACE(tsk)						\
- 	INIT_IDS							\
- 	INIT_TRACE_IRQFLAGS						\
- 	INIT_LOCKDEP							\
 diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
 index 7727aa8..5d6083c 100644
 --- a/arch/x86/include/asm/paravirt.h
@@ -111,10 +33,10 @@ index 7727aa8..5d6083c 100644
  	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
  #ifdef CONFIG_X86_64
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 76f8f84..4118f17 100644
+index 59f4524..068e286 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
-@@ -364,8 +356,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -354,8 +362,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
  	__unlazy_fpu(prev_p);
@@ -124,45 +46,30 @@ index 76f8f84..4118f17 100644
  
  	/* we're going to use this soon, after a few expensive things */
  	if (next_p->fpu_counter > 5)
-@@ -518,41 +509,3 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
- 	unsigned long range_end = mm->brk + 0x02000000;
- 	return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
- }
--
--static void modify_cs(struct mm_struct *mm, unsigned long limit)
--{
--	mm->context.exec_limit = limit;
--	set_user_cs(&mm->context.user_cs, limit);
--	if (mm == current->mm) {
--		int cpu;
--
--		cpu = get_cpu();
--		load_user_cs_desc(cpu, mm);
--		put_cpu();
--	}
--}
--
--void arch_add_exec_range(struct mm_struct *mm, unsigned long limit)
--{
--	if (limit > mm->context.exec_limit)
--		modify_cs(mm, limit);
--}
--
--void arch_remove_exec_range(struct mm_struct *mm, unsigned long old_end)
--{
--	struct vm_area_struct *vma;
--	unsigned long limit = PAGE_SIZE;
--
--	if (old_end == mm->context.exec_limit) {
--		for (vma = mm->mmap; vma; vma = vma->vm_next)
--			if ((vma->vm_flags & VM_EXEC) && (vma->vm_end > limit))
--				limit = vma->vm_end;
--		modify_cs(mm, limit);
+diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
+index 2202b62..f371fe8 100644
+--- a/arch/x86/pci/common.c
++++ b/arch/x86/pci/common.c
+@@ -432,22 +432,6 @@ int __init pcibios_init(void)
+ 	else if (c->x86 > 6 && c->x86_vendor == X86_VENDOR_INTEL)
+ 		pci_cache_line_size = 128 >> 2;	/* P4 */
+ 
+-	if (c->x86_clflush_size != (pci_cache_line_size <<2))
+-		printk(KERN_DEBUG "PCI: old code would have set cacheline "
+-			"size to %d bytes, but clflush_size = %d\n",
+-			pci_cache_line_size << 2,
+-			c->x86_clflush_size);
+-
+-	/* Once we know this logic works, all the above code can be deleted. */
+-	if (c->x86_clflush_size > 0) {
+-		pci_cache_line_size = c->x86_clflush_size >> 2;
+-		printk(KERN_DEBUG "PCI: pci_cache_line_size set to %d bytes\n",
+-			pci_cache_line_size >> 2);
+-	} else {
+-		pci_cache_line_size = 32 >> 2;
+-		printk(KERN_DEBUG "PCI: Unknown cacheline size. Setting to 32 bytes\n");
 -	}
--}
 -
--void arch_flush_exec_range(struct mm_struct *mm)
--{
--	mm->context.exec_limit = 0;
--	set_user_cs(&mm->context.user_cs, 0);
--}
+ 	pcibios_resource_survey();
+ 
+ 	if (pci_bf_sort >= pci_force_bf)


--- agp-set_memory_ucwb.patch DELETED ---


--- linux-2.6-cpufreq-enable-acpi-pstates-on-via.patch DELETED ---


--- via-padlock-10-enable-64bit.patch DELETED ---


--- via-padlock-20-add-x86-dependency.patch DELETED ---


--- via-padlock-30-fix-might-sleep.patch DELETED ---


--- via-padlock-40-nano-ecb.patch DELETED ---


--- via-padlock-50-nano-cbc.patch DELETED ---


--- via-rng-enable-64bit.patch DELETED ---


--- via-sdmmc.patch DELETED ---




More information about the fedora-extras-commits mailing list