rpms/kernel/devel linux-2.6-nfsd4-proots.patch, NONE, 1.1.2.2 linux-2.6.31-lirc.patch, NONE, 1.2.2.2 lirc_streamzap-buffer-rework.patch, NONE, 1.1.2.2 patch-2.6.31-rc2-git2.bz2.sign, NONE, 1.1.2.2 patch-2.6.31-rc2.bz2.sign, NONE, 1.1.2.2 .cvsignore, 1.1014.2.18, 1.1014.2.19 config-generic, 1.238.6.27, 1.238.6.28 config-x86-generic, 1.68.6.12, 1.68.6.13 config-x86_64-generic, 1.68.2.11, 1.68.2.12 kernel.spec, 1.1294.2.38, 1.1294.2.39 linux-2.6-debug-always-inline-kzalloc.patch, 1.1, 1.1.16.1 linux-2.6-debug-nmi-timeout.patch, 1.4, 1.4.16.1 linux-2.6-debug-sizeof-structs.patch, 1.6, 1.6.16.1 linux-2.6-debug-spinlock-taint.patch, 1.10, 1.10.16.1 linux-2.6-debug-taint-vm.patch, 1.23, 1.23.6.1 linux-2.6-debug-vm-would-have-oomkilled.patch, 1.2, 1.2.6.1 sources, 1.976.2.19, 1.976.2.20 upstream, 1.888.2.18, 1.888.2.19 xen.pvops.patch, 1.1.2.26, 1.1.2.27 drm-no-gem-on-i8xx.patch, 1.1.6.1, NONE linux-2.6-btrfs-experimental-branch.patch, 1.1.2.3, NONE linux-2.6-ext4-prealloc-fixes.patch, 1.1.2.2, NONE linux-2.6-missing-rfc2465-stats.patch, 1.1.2.2, NONE linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch, 1.1.2.2, NONE linux-2.6.29-lirc.patch, 1.3.6.3, NONE patch-2.6.31-rc1-git9.bz2.sign, 1.1.2.2, NONE patch-2.6.31-rc1.bz2.sign, 1.1.2.2, NONE

myoung myoung at fedoraproject.org
Thu Jul 9 22:53:18 UTC 2009


Author: myoung

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

Modified Files:
      Tag: private-myoung-dom0-branch
	.cvsignore config-generic config-x86-generic 
	config-x86_64-generic kernel.spec 
	linux-2.6-debug-always-inline-kzalloc.patch 
	linux-2.6-debug-nmi-timeout.patch 
	linux-2.6-debug-sizeof-structs.patch 
	linux-2.6-debug-spinlock-taint.patch 
	linux-2.6-debug-taint-vm.patch 
	linux-2.6-debug-vm-would-have-oomkilled.patch sources upstream 
	xen.pvops.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	linux-2.6-nfsd4-proots.patch linux-2.6.31-lirc.patch 
	lirc_streamzap-buffer-rework.patch 
	patch-2.6.31-rc2-git2.bz2.sign patch-2.6.31-rc2.bz2.sign 
Removed Files:
      Tag: private-myoung-dom0-branch
	drm-no-gem-on-i8xx.patch 
	linux-2.6-btrfs-experimental-branch.patch 
	linux-2.6-ext4-prealloc-fixes.patch 
	linux-2.6-missing-rfc2465-stats.patch 
	linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch 
	linux-2.6.29-lirc.patch patch-2.6.31-rc1-git9.bz2.sign 
	patch-2.6.31-rc1.bz2.sign 
Log Message:
update pvops and see if CONFIG_KERNEL_LZMA=y is compatible with xen


linux-2.6-nfsd4-proots.patch:

--- NEW FILE linux-2.6-nfsd4-proots.patch ---
diff -up linux-2.6.30.noarch/fs/nfsd/export.c.save linux-2.6.30.noarch/fs/nfsd/export.c
--- linux-2.6.30.noarch/fs/nfsd/export.c.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/fs/nfsd/export.c	2009-07-02 11:35:44.000000000 -0400
@@ -104,6 +104,7 @@ static int expkey_parse(struct cache_det
 	if (mesg[mlen-1] != '\n')
 		return -EINVAL;
 	mesg[mlen-1] = 0;
+	dprintk("expkey_parse: '%s'\n", mesg);
 
 	buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
 	err = -ENOMEM;
@@ -181,6 +182,8 @@ static int expkey_parse(struct cache_det
 	if (dom)
 		auth_domain_put(dom);
 	kfree(buf);
+	if (err)
+		dprintk("expkey_parse: err %d\n", err);
 	return err;
 }
 
@@ -351,7 +354,10 @@ static void svc_export_request(struct ca
 		(*bpp)[0] = '\n';
 		return;
 	}
+
 	qword_add(bpp, blen, pth);
+	dprintk("svc_export_request: pth %s\n", pth);
+
 	(*bpp)[-1] = '\n';
 }
 
@@ -500,6 +506,7 @@ static int svc_export_parse(struct cache
 	if (mesg[mlen-1] != '\n')
 		return -EINVAL;
 	mesg[mlen-1] = 0;
+	dprintk("svc_export_parse: '%s'\n", mesg);
 
 	buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
 	if (!buf)
@@ -619,6 +626,8 @@ out1:
 	auth_domain_put(dom);
 out:
 	kfree(buf);
+	if (err)
+		dprintk("svc_export_parse: err %d\n", err);
 	return err;
 }
 
@@ -1413,6 +1422,7 @@ static struct flags {
 	{ NFSEXP_CROSSMOUNT, {"crossmnt", ""}},
 	{ NFSEXP_NOSUBTREECHECK, {"no_subtree_check", ""}},
 	{ NFSEXP_NOAUTHNLM, {"insecure_locks", ""}},
+	{ NFSEXP_V4ROOT, {"v4root", ""}},
 #ifdef MSNFS
 	{ NFSEXP_MSNFS, {"msnfs", ""}},
 #endif
@@ -1493,7 +1503,7 @@ static int e_show(struct seq_file *m, vo
 	struct svc_export *exp = container_of(cp, struct svc_export, h);
 
 	if (p == SEQ_START_TOKEN) {
-		seq_puts(m, "# Version 1.1\n");
+		seq_puts(m, "# Version 1.2\n");
 		seq_puts(m, "# Path Client(Flags) # IPs\n");
 		return 0;
 	}
diff -up linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c.save linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c
--- linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/fs/nfsd/nfs4xdr.c	2009-07-02 11:35:31.000000000 -0400
@@ -2176,28 +2176,62 @@ static inline int attributes_need_mount(
 	return 0;
 }
 
-static __be32
-nfsd4_encode_dirent_fattr(struct nfsd4_readdir *cd,
-		const char *name, int namlen, __be32 *p, int *buflen)
+struct dentry *
+nfsd_check_export(struct nfsd4_readdir *cd, const char *name, int namlen)
 {
 	struct svc_export *exp = cd->rd_fhp->fh_export;
 	struct dentry *dentry;
-	__be32 nfserr;
-	int ignore_crossmnt = 0;
+	int err;
 
 	dentry = lookup_one_len(name, cd->rd_fhp->fh_dentry, namlen);
 	if (IS_ERR(dentry))
-		return nfserrno(PTR_ERR(dentry));
+		return dentry;
 	if (!dentry->d_inode) {
-		/*
-		 * nfsd_buffered_readdir drops the i_mutex between
-		 * readdir and calling this callback, leaving a window
-		 * where this directory entry could have gone away.
-		 */
 		dput(dentry);
-		return nfserr_noent;
+		return ERR_PTR(-ENOENT);
+	}
+	
+	/*
+	 * Check to see if this dentry is part 
+	 * of the psuedo root
+	 */
+	if ((exp->ex_flags & NFSEXP_V4ROOT) == 0)
+		return dentry;
+
+	/*
+	 * Only exported directories are visable
+	 * on psuedo exports
+	 */
+	if (!S_ISDIR(dentry->d_inode->i_mode)) {
+		dput(dentry);
+		return ERR_PTR(-ENOENT);
 	}
 
+	/*
+	 * Make the upcall to see if this directory
+	 * is exported.
+	 */
+	exp_get(exp);
+	err = nfsd_export_lookup(cd->rd_rqstp, dentry, exp);
+	if (err) {
+		exp_put(exp);
+		dput(dentry);
+		return ERR_PTR(err);
+	}
+	exp_put(exp);
+
+	return dentry;
+}
+
+static __be32
+nfsd4_encode_dirent_fattr(struct nfsd4_readdir *cd,
+		struct dentry *dentry, __be32 *p, int *buflen)
+{
+	struct svc_export *exp = cd->rd_fhp->fh_export;
+	__be32 nfserr;
+	int ignore_crossmnt = 0;
+	int err, v4root = (exp->ex_flags & NFSEXP_V4ROOT);
+
 	exp_get(exp);
 	/*
 	 * In the case of a mountpoint, the client may be asking for
@@ -2208,18 +2242,29 @@ nfsd4_encode_dirent_fattr(struct nfsd4_r
 	 */
 	if (d_mountpoint(dentry) && !attributes_need_mount(cd->rd_bmval))
 		ignore_crossmnt = 1;
-	else if (d_mountpoint(dentry)) {
-		int err;
-
+	else if (d_mountpoint(dentry) || v4root) {
+		/*
+		 * Make sure the dentry is viewable on the psuedo export
+		 */
+		v4root = (dentry->d_inode && v4root);
+		if (v4root) {
+			err = nfsd_export_lookup(cd->rd_rqstp, dentry, exp);
+			if (err) {
+				nfserr = nfserrno(err);
+				goto out_put;
+			}
+		}
 		/*
 		 * Why the heck aren't we just using nfsd_lookup??
 		 * Different "."/".." handling?  Something else?
 		 * At least, add a comment here to explain....
 		 */
-		err = nfsd_cross_mnt(cd->rd_rqstp, &dentry, &exp);
-		if (err) {
-			nfserr = nfserrno(err);
-			goto out_put;
+		if (d_mountpoint(dentry) || v4root) {
+			err = nfsd_cross_mnt(cd->rd_rqstp, &dentry, &exp);
+			if (err) {
+				nfserr = nfserrno(err);
+				goto out_put;
+			}
 		}
 		nfserr = check_nfsd_access(exp, cd->rd_rqstp);
 		if (nfserr)
@@ -2258,6 +2303,7 @@ nfsd4_encode_dirent(void *ccdv, const ch
 	struct readdir_cd *ccd = ccdv;
 	struct nfsd4_readdir *cd = container_of(ccd, struct nfsd4_readdir, common);
 	int buflen;
+	struct dentry *dentry;
 	__be32 *p = cd->buffer;
 	__be32 *cookiep;
 	__be32 nfserr = nfserr_toosmall;
@@ -2268,19 +2314,40 @@ nfsd4_encode_dirent(void *ccdv, const ch
 		return 0;
 	}
 
+	/*
+	 * Do the lookup and make sure the dentry is 
+	 * visible on the exported directory
+	 */
+	dentry = nfsd_check_export(cd, name, namlen);
+	if (IS_ERR(dentry)) {
+		if (PTR_ERR(dentry) == -ENOENT) {
+			cd->common.err = nfs_ok;
+			return 0;
+		}
+		cd->common.err = nfserrno(PTR_ERR(dentry));
+		return -EINVAL;
+	}
+ 
 	if (cd->offset)
 		xdr_encode_hyper(cd->offset, (u64) offset);
 
 	buflen = cd->buflen - 4 - XDR_QUADLEN(namlen);
-	if (buflen < 0)
+	if (buflen < 0) {
+		dput(dentry);
 		goto fail;
+	}
 
 	*p++ = xdr_one;                             /* mark entry present */
 	cookiep = p;
 	p = xdr_encode_hyper(p, NFS_OFFSET_MAX);    /* offset of next entry */
 	p = xdr_encode_array(p, name, namlen);      /* name length & name */
 
-	nfserr = nfsd4_encode_dirent_fattr(cd, name, namlen, p, &buflen);
+	/*
+	 * Note: the dput() on the dentry is done in 
+	 * nfsd4_encode_dirent_fattr() since the dentry can
+	 * change when crossing a mount point.
+	 */
+	nfserr = nfsd4_encode_dirent_fattr(cd, dentry, p, &buflen);
 	switch (nfserr) {
 	case nfs_ok:
 		p += buflen;
diff -up linux-2.6.30.noarch/fs/nfsd/nfsfh.c.save linux-2.6.30.noarch/fs/nfsd/nfsfh.c
--- linux-2.6.30.noarch/fs/nfsd/nfsfh.c.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/fs/nfsd/nfsfh.c	2009-07-02 11:35:48.000000000 -0400
@@ -109,6 +109,34 @@ static __be32 nfsd_setuser_and_check_por
 	return nfserrno(nfsd_setuser(rqstp, exp));
 }
 
+static inline __be32 check_pseudo_root(struct svc_rqst *rqstp,
+	struct dentry *dentry, struct svc_export *exp)
+{
+	int error;
+
+	/*
+	 * Only interested in pseudo roots
+	 */
+	if (!(exp->ex_flags & NFSEXP_V4ROOT))
+		return nfs_ok;
+
+	/*
+	 * Only directories should be on the pseudo root
+	 */
+	if (unlikely(!S_ISDIR(dentry->d_inode->i_mode)))
+		return nfserr_stale;
+	/*
+	 * Check non-root directories to make sure
+	 * they are truly exported
+	 */
+	if (unlikely(dentry->d_name.len > 1)) {
+		error = nfsd_export_lookup(rqstp, dentry, exp);
+		return nfserrno(error);
+	}
+
+	return nfs_ok;
+}
+
 /*
  * Use the given filehandle to look up the corresponding export and
  * dentry.  On success, the results are used to set fh_export and
@@ -315,6 +343,14 @@ fh_verify(struct svc_rqst *rqstp, struct
 		error = nfsd_setuser_and_check_port(rqstp, exp);
 		if (error)
 			goto out;
+
+		/*
+		 * Do some spoof checking if we are on the pseudo root
+		 */
+		error = check_pseudo_root(rqstp, dentry, exp);
+		if (error)
+			goto out;
+
 	}
 
 	error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type);
diff -up linux-2.6.30.noarch/fs/nfsd/vfs.c.save linux-2.6.30.noarch/fs/nfsd/vfs.c
--- linux-2.6.30.noarch/fs/nfsd/vfs.c.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/fs/nfsd/vfs.c	2009-07-02 11:35:39.000000000 -0400
@@ -89,6 +89,12 @@ struct raparm_hbucket {
 #define RAPARM_HASH_MASK	(RAPARM_HASH_SIZE-1)
 static struct raparm_hbucket	raparm_hash[RAPARM_HASH_SIZE];
 
+static inline int
+nfsd_v4client(struct svc_rqst *rq)
+{
+    return((rq->rq_prog == NFS_PROGRAM) && (rq->rq_vers == 4));
+}
+
 /* 
  * Called from nfsd_lookup and encode_dirent. Check if we have crossed 
  * a mount point.
@@ -115,7 +121,8 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, s
 		path_put(&path);
 		goto out;
 	}
-	if ((exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
+	if (nfsd_v4client(rqstp) || 
+		(exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
 		/* successfully crossed mount point */
 		/*
 		 * This is subtle: path.dentry is *not* on path.mnt
@@ -134,6 +141,55 @@ out:
 	return err;
 }
 
+/*
+ * Lookup the export the dentry is on. To be
+ * viewable on an pseudo export, the dentry
+ * has to be an exported directory. 
+ */
+int
+nfsd_export_lookup(struct svc_rqst *rqstp, struct dentry *dentry,
+	struct svc_export *exp)
+{
+	struct svc_export *exp2 = NULL;
+	struct path path;
+	int err = 0;
+
+	if ((exp->ex_flags & NFSEXP_V4ROOT) == 0)
+		return 0;
+
+	/*
+	 * Make sure the export is the parent of the dentry
+	 */
+	if (dentry->d_parent != exp->ex_path.dentry)
+		return 0;
+
+	/*
+	 * Only directories are seen on psuedo exports
+	 */
+	if (!S_ISDIR(dentry->d_inode->i_mode))
+		return -ENOENT;
+
+	/*
+	 * Make the upcall 
+	 */
+	path.mnt = mntget(exp->ex_path.mnt);
+	path.dentry = dget(dentry);
+	while (d_mountpoint(path.dentry) && follow_down(&path));
+
+	exp2 = rqst_exp_get_by_name(rqstp, &path);
+	if (IS_ERR(exp2))
+		err = PTR_ERR(exp2);
+	else  {
+		/*
+		 * The export exist so allow the access
+		 */
+		exp_put(exp2);
+	}
+
+	dput(path.dentry);
+	mntput(path.mnt);
+	return err;
+}
 __be32
 nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
 		   const char *name, unsigned int len,
@@ -143,7 +199,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
 	struct dentry		*dparent;
 	struct dentry		*dentry;
 	__be32			err;
-	int			host_err;
+	int			host_err, v4root;
 
 	dprintk("nfsd: nfsd_lookup(fh %s, %.*s)\n", SVCFH_fmt(fhp), len,name);
 
@@ -155,6 +211,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
 	dparent = fhp->fh_dentry;
 	exp  = fhp->fh_export;
 	exp_get(exp);
+	v4root = (exp->ex_flags & NFSEXP_V4ROOT);
 
 	/* Lookup the name, but don't follow links */
 	if (isdotent(name, len)) {
@@ -199,9 +256,21 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
 		if (IS_ERR(dentry))
 			goto out_nfserr;
 		/*
+		 * The export is a pseudo one, make sure the
+		 * dentry is accessible 
+		 */
+		v4root = (dentry->d_inode && v4root);
+		if (v4root) {
+			host_err = nfsd_export_lookup(rqstp, dentry, exp);
+			if (host_err) {
+				dput(dentry);
+				goto out_nfserr;
+			}
+		}
+		/*
 		 * check if we have crossed a mount point ...
 		 */
-		if (d_mountpoint(dentry)) {
+		if (d_mountpoint(dentry) || v4root) {
 			if ((host_err = nfsd_cross_mnt(rqstp, &dentry, &exp))) {
 				dput(dentry);
 				goto out_nfserr;
diff -up linux-2.6.30.noarch/include/linux/nfsd/export.h.save linux-2.6.30.noarch/include/linux/nfsd/export.h
--- linux-2.6.30.noarch/include/linux/nfsd/export.h.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/include/linux/nfsd/export.h	2009-07-02 11:35:22.000000000 -0400
@@ -39,7 +39,8 @@
 #define NFSEXP_FSID		0x2000
 #define	NFSEXP_CROSSMOUNT	0x4000
 #define	NFSEXP_NOACL		0x8000	/* reserved for possible ACL related use */
-#define NFSEXP_ALLFLAGS		0xFE3F
+#define	NFSEXP_V4ROOT		0x10000
+#define NFSEXP_ALLFLAGS		0x1FE3F
 
 /* The flags that may vary depending on security flavor: */
 #define NFSEXP_SECINFO_FLAGS	(NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
diff -up linux-2.6.30.noarch/include/linux/nfsd/nfsd.h.save linux-2.6.30.noarch/include/linux/nfsd/nfsd.h
--- linux-2.6.30.noarch/include/linux/nfsd/nfsd.h.save	2009-07-02 11:34:38.000000000 -0400
+++ linux-2.6.30.noarch/include/linux/nfsd/nfsd.h	2009-07-02 11:35:27.000000000 -0400
@@ -76,6 +76,8 @@ int		nfsd_racache_init(int);
 void		nfsd_racache_shutdown(void);
 int		nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp,
 		                struct svc_export **expp);
+int		nfsd_export_lookup(struct svc_rqst *rqstp, struct dentry *dpp,
+		                struct svc_export *exp);
 __be32		nfsd_lookup(struct svc_rqst *, struct svc_fh *,
 				const char *, unsigned int, struct svc_fh *);
 __be32		 nfsd_lookup_dentry(struct svc_rqst *, struct svc_fh *,

linux-2.6.31-lirc.patch:

--- NEW FILE linux-2.6.31-lirc.patch ---
Linux Infrared Remote Control drivers -- http://www.lirc.org

Last updated: Tuesday, July 7, 2009

>From http://git.wilsonet.com/linux-2.6-lirc.git/

Signed-off-by: Jarod Wilson <jarod at redhat.com>

---
 MAINTAINERS                           |    9 +
 drivers/input/Kconfig                 |    2 +
 drivers/input/Makefile                |    2 +
 drivers/input/lirc/Kconfig            |  112 ++
 drivers/input/lirc/Makefile           |   20 +
 drivers/input/lirc/lirc.h             |  100 ++
 drivers/input/lirc/lirc_bt829.c       |  383 ++++++
 drivers/input/lirc/lirc_dev.c         |  851 ++++++++++++++
 drivers/input/lirc/lirc_dev.h         |  184 +++
 drivers/input/lirc/lirc_i2c.c         |  537 +++++++++
 drivers/input/lirc/lirc_igorplugusb.c |  556 +++++++++
 drivers/input/lirc/lirc_imon.c        | 2062 +++++++++++++++++++++++++++++++++
 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      | 1223 +++++++++++++++++++
 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      | 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       | 1374 ++++++++++++++++++++++
 24 files changed, 14506 insertions(+), 0 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 381190c..fc79bdf 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3632,6 +3632,15 @@ W:	http://www.pasemi.com/
 L:	linuxppc-dev at ozlabs.org
 S:	Supported
 
+LINUX INFRARED REMOTE CONTROL DRIVERS (LIRC)
+P:	Jarod Wilson
+M:	jarod at redhat.com
+P:	Christoph Bartelmus
+M:	lirc at bartelmus.de
+W:	http://www.lirc.org/
+L:	lirc-list at lists.sourceforge.net
+S:	Maintained
+
 LINUX SECURITY MODULE (LSM) FRAMEWORK
 P:	Chris Wright
 M:	chrisw at sous-sol.org
diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
index cd50c00..442f94f 100644
--- a/drivers/input/Kconfig
+++ b/drivers/input/Kconfig
@@ -170,6 +170,8 @@ source "drivers/input/tablet/Kconfig"
 
 source "drivers/input/touchscreen/Kconfig"
 
+source "drivers/input/lirc/Kconfig"
+
 source "drivers/input/misc/Kconfig"
 
 endif
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
index 4c9c745..99e2b5e 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
@@ -25,3 +25,5 @@ obj-$(CONFIG_INPUT_MISC)	+= misc/
 obj-$(CONFIG_INPUT_APMPOWER)	+= apm-power.o
 
 obj-$(CONFIG_XEN_KBDDEV_FRONTEND)	+= xen-kbdfront.o
+
+obj-$(CONFIG_INPUT_LIRC)       += lirc/
diff --git a/drivers/input/lirc/Kconfig b/drivers/input/lirc/Kconfig
new file mode 100644
index 0000000..6ef8622
--- /dev/null
+++ b/drivers/input/lirc/Kconfig
@@ -0,0 +1,112 @@
+#
+# LIRC driver(s) configuration
+#
+menuconfig INPUT_LIRC
+	bool "Linux Infrared Remote Control IR receiver/transmitter drivers"
+	help
+	  Say Y here, and all supported Linux Infrared Remote Control IR and
+	  RF receiver and transmitter drivers will be displayed. When paired
+	  with a remote control and the lirc daemon, the receiver drivers
+	  allow control of your Linux system via remote control.
+
+if INPUT_LIRC
+
+config LIRC_DEV
+	tristate "LIRC device loadable module support"
+	help
+	  LIRC device loadable module support, required for most LIRC drivers
+
+config LIRC_BT829
+        tristate "BT829 based hardware"
+	depends on LIRC_DEV
+	help
+	  Driver for the IR interface on BT829-based hardware
+
+config LIRC_I2C
+	tristate "I2C Based IR Receivers"
+	depends on LIRC_DEV
+	help
+	  Driver for I2C-based IR receivers, such as those commonly
+	  found onboard Hauppauge PVR-150/250/350 video capture cards
+
+config LIRC_IGORPLUGUSB
+	tristate "Igor Cesko's USB IR Receiver"
+	depends on LIRC_DEV && USB
+	help
+	  Driver for Igor Cesko's USB IR Receiver
+
+config LIRC_IMON
+	tristate "Soundgraph IMON Receiver"
+	depends on LIRC_DEV
+	help
+	  Driver for the Soundgraph IMON IR Receiver
+
+config LIRC_IT87
+	tristate "ITE IT87XX CIR Port Receiver"
+	depends on LIRC_DEV
+	help
+	  Driver for the ITE IT87xx IR Receiver
+
+config LIRC_ITE8709
+	tristate "ITE8709 CIR Port Receiver"
+	depends on LIRC_DEV && PNP
+	help
+	  Driver for the ITE8709 IR Receiver
+
+config LIRC_MCEUSB
+	tristate "Windows Media Center Ed. USB IR Transceiver"
+	depends on LIRC_DEV && USB
+	help
+	  Driver for Windows Media Center Ed. USB IR Transceivers
+
+config LIRC_PARALLEL
+	tristate "Homebrew Parallel Port Receiver"
+	depends on LIRC_DEV && !SMP
+	help
+	  Driver for Homebrew Parallel Port Receivers
+
+config LIRC_SASEM
+	tristate "Sasem USB IR Remote"
+	depends on LIRC_DEV
+	help
+	  Driver for the Sasem OnAir Remocon-V or Dign HV5 HTPC IR/VFD Module
+
+config LIRC_SERIAL
+	tristate "Homebrew Serial Port Receiver"
+	depends on LIRC_DEV
+	help
+	  Driver for Homebrew Serial Port Receivers
+
+config LIRC_SERIAL_TRANSMITTER
+	bool "Serial Port Transmitter"
+	default y
+	depends on LIRC_SERIAL
+	help
+	  Serial Port Transmitter support
+
+config LIRC_SIR
+	tristate "Built-in SIR IrDA port"
+	depends on LIRC_DEV
+	help
+	  Driver for the SIR IrDA port
+
+config LIRC_STREAMZAP
+	tristate "Streamzap PC Receiver"
+	depends on LIRC_DEV
+	help
+	  Driver for the Streamzap PC Receiver
+
+config LIRC_TTUSBIR
+	tristate "Technotrend USB IR Receiver"
+	depends on LIRC_DEV && USB
+	help
+	  Driver for the Technotrend USB IR Receiver
+
+config LIRC_ZILOG
+	tristate "Zilog/Hauppauge IR Transmitter"
+	depends on LIRC_DEV
+	help
+	  Driver for the Zilog/Hauppauge IR Transmitter, found on
+	  PVR-150/500, HVR-1200/1250/1700/1800, HD-PVR and other cards
+
+endif
diff --git a/drivers/input/lirc/Makefile b/drivers/input/lirc/Makefile
new file mode 100644
index 0000000..7b1386e
[...14298 lines suppressed...]
+		ir->task = kthread_run(lirc_thread, ir, "lirc_zilog");
+		if (IS_ERR(ir->task)) {
+			ret = PTR_ERR(ir->task);
+			zilog_error("lirc_register_driver: cannot run "
+				    "poll thread %d\n", ret);
+			goto err;
+		}
+		wait_for_completion(&tn);
+		ir->t_notify = NULL;
+	}
+
+	/* initialise TX device */
+	memcpy(&ir->c_tx, &client_template, sizeof(struct i2c_client));
+	if (have_tx) {
+		/* I2C attach to device */
+		ir->c_tx.addr = 0x70;
+		strncpy(ir->c_tx.name, "Zilog/Hauppauge TX", I2C_NAME_SIZE);
+		ret = i2c_attach(&ir->c_tx, ir);
+		if (ret != 0)
+			goto err;
+	}
+
+	/* set lirc_dev stuff */
+	ir->l.code_length = 13;
+	ir->l.rbuf	  = &ir->buf;
+	ir->l.fops	= &lirc_fops;
+	ir->l.data	= ir;
+	ir->l.minor       = minor;
+	ir->l.sample_rate = 0;
+
+	/* register with lirc */
+	ir->l.minor = lirc_register_driver(&ir->l);
+	if (ir->l.minor < 0 || ir->l.minor >= MAX_IRCTL_DEVICES) {
+		zilog_error("ir_attach: \"minor\" must be between 0 and %d "
+			    "(%d)!\n", MAX_IRCTL_DEVICES-1, ir->l.minor);
+		ret = -EBADRQC;
+		goto err;
+	}
+
+	/* store this for getting back in open() later on */
+	ir_devices[ir->l.minor] = ir;
+
+	/*
+	 * if we have the tx device, load the 'firmware'.  We do this
+	 * after registering with lirc as otherwise hotplug seems to take
+	 * 10s to create the lirc device.
+	 */
+	if (have_tx) {
+		/* Special TX init */
+		ret = tx_init(ir);
+		if (ret != 0)
+			goto err;
+	}
+	return 0;
+
+err:
+	/* undo everything, hopefully... */
+	if (ir->c_rx.addr)
+		ir_remove(&ir->c_rx);
+	if (ir->c_tx.addr)
+		ir_remove(&ir->c_tx);
+	return ret;
+}
+
+static int ir_remove(struct i2c_client *client)
+{
+	struct IR *ir = i2c_get_clientdata(client);
+	mutex_lock(&ir->lock);
+
+	if (client == &ir->c_rx) {
+		DECLARE_COMPLETION(tn);
+		DECLARE_COMPLETION(tn2);
+
+		/* end up polling thread */
+		if (ir->task && !IS_ERR(ir->task)) {
+			ir->t_notify = &tn;
+			ir->t_notify2 = &tn2;
+			ir->shutdown = 1;
+			wake_up_process(ir->task);
+			complete(&tn2);
+			wait_for_completion(&tn);
+			ir->t_notify = NULL;
+			ir->t_notify2 = NULL;
+		}
+
+	} else {
+		mutex_unlock(&ir->lock);
+		zilog_error("%s: detached from something we didn't "
+			    "attach to\n", __func__);
+		return -ENODEV;
+	}
+
+	--ir->devs;
+	if (ir->devs < 0) {
+		mutex_unlock(&ir->lock);
+		zilog_error("%s: invalid device count\n", __func__);
+		return -ENODEV;
+	} else if (ir->devs == 0) {
+		/* unregister lirc driver */
+		if (ir->l.minor >= 0 && ir->l.minor < MAX_IRCTL_DEVICES) {
+			lirc_unregister_driver(ir->l.minor);
+			ir_devices[ir->l.minor] = NULL;
+		}
+
+		/* free memory */
+		lirc_buffer_free(&ir->buf);
+		mutex_unlock(&ir->lock);
+		kfree(ir);
+		return 0;
+	}
+	mutex_unlock(&ir->lock);
+	return 0;
+}
+
+static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+	struct i2c_adapter *adap = client->adapter;
+	char buf;
+
+	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;
+
+		/*
+		 * The external IR receiver is at i2c address 0x71.
+		 * The IR transmitter is at 0x70.
+		 */
+		client->addr = 0x70;
+
+		if (!disable_rx) {
+			if (i2c_master_recv(client, &buf, 1) == 1)
+				have_rx = 1;
+			dprintk("probe 0x70 @ %s: %s\n",
+				adap->name,
+				have_rx ? "yes" : "no");
+		}
+
+		if (!disable_tx) {
+			client->addr = 0x71;
+			if (i2c_master_recv(client, &buf, 1) == 1)
+				have_tx = 1;
+			dprintk("probe 0x71 @ %s: %s\n",
+				adap->name,
+				have_tx ? "yes" : "no");
+		}
+
+		if (have_rx || have_tx)
+			return ir_attach(adap, have_rx, have_tx);
+		else
+			zilog_error("%s: no devices found\n", adap->name);
+	}
+
+	return 0;
+}
+
+static int ir_command(struct i2c_client *client, unsigned int cmd, void *arg)
+{
+	/* nothing */
+	return 0;
+}
+
+static int __init zilog_init(void)
+{
+	mutex_init(&tx_data_lock);
+	request_module("firmware_class");
+	i2c_add_driver(&driver);
+	return 0;
+}
+
+static void __exit zilog_exit(void)
+{
+	i2c_del_driver(&driver);
+	/* if loaded */
+	fw_unload();
+}
+
+module_init(zilog_init);
+module_exit(zilog_exit);
+
+MODULE_DESCRIPTION("Zilog/Hauppauge infrared transmitter driver (i2c stack)");
+MODULE_AUTHOR("Gerd Knorr, Michal Kochanowicz, Christoph Bartelmus, "
+	      "Ulrich Mueller, Stefan Jahn, Jerome Brock, Mark Weaver");
+MODULE_LICENSE("GPL");
+/* for compat with old name, which isn't all that accurate anymore */
+MODULE_ALIAS("lirc_pvr150");
+
+module_param(minor, int, 0444);
+MODULE_PARM_DESC(minor, "Preferred minor device number");
+
+module_param(debug, bool, 0644);
+MODULE_PARM_DESC(debug, "Enable debugging messages");
+
+module_param(disable_rx, bool, 0644);
+MODULE_PARM_DESC(disable_rx, "Disable the IR receiver device");
+
+module_param(disable_tx, bool, 0644);
+MODULE_PARM_DESC(disable_tx, "Disable the IR transmitter device");

lirc_streamzap-buffer-rework.patch:

--- NEW FILE lirc_streamzap-buffer-rework.patch ---
Rework the lirc_streamzap buffers a bit, see if we can't get it behaving
better when the receiver is pulled... (rhbz#508952)

---
 drivers/input/lirc/lirc_streamzap.c |  207 +++++++++++++++++++----------------
 1 files changed, 112 insertions(+), 95 deletions(-)

diff --git a/drivers/input/lirc/lirc_streamzap.c b/drivers/input/lirc/lirc_streamzap.c
index d1ce354..a5f3140 100644
--- a/drivers/input/lirc/lirc_streamzap.c
+++ b/drivers/input/lirc/lirc_streamzap.c
@@ -73,7 +73,7 @@ MODULE_DEVICE_TABLE(usb, streamzap_table);
 #define STREAMZAP_RESOLUTION 256
 
 /* number of samples buffered */
-#define STREAMZAP_BUFFER_SIZE 128
+#define STREAMZAP_BUF_LEN 128
 
 enum StreamzapDecoderState {
 	PulseSpace,
@@ -121,9 +121,8 @@ struct usb_streamzap {
 	struct urb		*urb_in;
 
 	/* lirc */
-	struct lirc_driver	driver;
-	struct lirc_buffer	delay_buf;
-	struct lirc_buffer	lirc_buf;
+	struct lirc_driver	*driver;
+	struct lirc_buffer	*delay_buf;
 
 	/* timer used to support delay buffering */
 	struct timer_list	delay_timer;
@@ -199,18 +198,18 @@ static void delay_timeout(unsigned long arg)
 
 	spin_lock_irqsave(&sz->timer_lock, flags);
 
-	if (!lirc_buffer_empty(&sz->delay_buf) &&
-	    !lirc_buffer_full(&sz->lirc_buf)) {
-		lirc_buffer_read(&sz->delay_buf, (unsigned char *) &data);
-		lirc_buffer_write(&sz->lirc_buf, (unsigned char *) &data);
+	if (!lirc_buffer_empty(sz->delay_buf) &&
+	    !lirc_buffer_full(sz->driver->rbuf)) {
+		lirc_buffer_read(sz->delay_buf, (unsigned char *) &data);
+		lirc_buffer_write(sz->driver->rbuf, (unsigned char *) &data);
 	}
-	if (!lirc_buffer_empty(&sz->delay_buf)) {
-		while (lirc_buffer_available(&sz->delay_buf) <
-		      STREAMZAP_BUFFER_SIZE/2 &&
-		      !lirc_buffer_full(&sz->lirc_buf)) {
-			lirc_buffer_read(&sz->delay_buf,
+	if (!lirc_buffer_empty(sz->delay_buf)) {
+		while (lirc_buffer_available(sz->delay_buf) <
+		       STREAMZAP_BUF_LEN / 2 &&
+		       !lirc_buffer_full(sz->driver->rbuf)) {
+			lirc_buffer_read(sz->delay_buf,
 					   (unsigned char *) &data);
-			lirc_buffer_write(&sz->lirc_buf,
+			lirc_buffer_write(sz->driver->rbuf,
 					    (unsigned char *) &data);
 		}
 		if (sz->timer_running) {
@@ -221,8 +220,8 @@ static void delay_timeout(unsigned long arg)
 		sz->timer_running = 0;
 	}
 
-	if (!lirc_buffer_empty(&sz->lirc_buf))
-		wake_up(&sz->lirc_buf.wait_poll);
+	if (!lirc_buffer_empty(sz->driver->rbuf))
+		wake_up(&sz->driver->rbuf->wait_poll);
 
 	spin_unlock_irqrestore(&sz->timer_lock, flags);
 }
@@ -232,18 +231,18 @@ static void flush_delay_buffer(struct usb_streamzap *sz)
 	int data;
 	int empty = 1;
 
-	while (!lirc_buffer_empty(&sz->delay_buf)) {
+	while (!lirc_buffer_empty(sz->delay_buf)) {
 		empty = 0;
-		lirc_buffer_read(&sz->delay_buf, (unsigned char *) &data);
-		if (!lirc_buffer_full(&sz->lirc_buf)) {
-			lirc_buffer_write(&sz->lirc_buf,
+		lirc_buffer_read(sz->delay_buf, (unsigned char *) &data);
+		if (!lirc_buffer_full(sz->driver->rbuf)) {
+			lirc_buffer_write(sz->driver->rbuf,
 					    (unsigned char *) &data);
 		} else {
-			dprintk("buffer overflow", sz->driver.minor);
+			dprintk("buffer overflow", sz->driver->minor);
 		}
 	}
 	if (!empty)
-		wake_up(&sz->lirc_buf.wait_poll);
+		wake_up(&sz->driver->rbuf->wait_poll);
 }
 
 static void push(struct usb_streamzap *sz, unsigned char *data)
@@ -251,20 +250,20 @@ static void push(struct usb_streamzap *sz, unsigned char *data)
 	unsigned long flags;
 
 	spin_lock_irqsave(&sz->timer_lock, flags);
-	if (lirc_buffer_full(&sz->delay_buf)) {
+	if (lirc_buffer_full(sz->delay_buf)) {
 		int read_data;
 
-		lirc_buffer_read(&sz->delay_buf,
+		lirc_buffer_read(sz->delay_buf,
 				   (unsigned char *) &read_data);
-		if (!lirc_buffer_full(&sz->lirc_buf)) {
-			lirc_buffer_write(&sz->lirc_buf,
+		if (!lirc_buffer_full(sz->driver->rbuf)) {
+			lirc_buffer_write(sz->driver->rbuf,
 					    (unsigned char *) &read_data);
 		} else {
-			dprintk("buffer overflow", sz->driver.minor);
+			dprintk("buffer overflow", sz->driver->minor);
 		}
 	}
 
-	lirc_buffer_write(&sz->delay_buf, data);
+	lirc_buffer_write(sz->delay_buf, data);
 
 	if (!sz->timer_running) {
 		sz->delay_timer.expires = jiffies + HZ/10;
@@ -296,7 +295,7 @@ static void push_full_pulse(struct usb_streamzap *sz,
 					sz->signal_last.tv_usec);
 			tmp -= sz->sum;
 		}
-		dprintk("ls %u", sz->driver.minor, tmp);
+		dprintk("ls %u", sz->driver->minor, tmp);
 		push(sz, (char *)&tmp);
 
 		sz->idle = 0;
@@ -308,7 +307,7 @@ static void push_full_pulse(struct usb_streamzap *sz,
 	sz->sum += pulse;
 	pulse |= PULSE_BIT;
 
-	dprintk("p %u", sz->driver.minor, pulse & PULSE_MASK);
+	dprintk("p %u", sz->driver->minor, pulse & PULSE_MASK);
 	push(sz, (char *)&pulse);
 }
 
@@ -326,7 +325,7 @@ static void push_full_space(struct usb_streamzap *sz,
 	space = ((int) value)*STREAMZAP_RESOLUTION;
 	space += STREAMZAP_RESOLUTION/2;
 	sz->sum += space;
-	dprintk("s %u", sz->driver.minor, space);
+	dprintk("s %u", sz->driver->minor, space);
 	push(sz, (char *)&space);
 }
 
@@ -368,10 +367,10 @@ static void usb_streamzap_irq(struct urb *urb)
 		break;
 	}
 
-	dprintk("received %d", sz->driver.minor, urb->actual_length);
+	dprintk("received %d", sz->driver->minor, urb->actual_length);
 	if (!sz->flush) {
 		for (i = 0; i < urb->actual_length; i++) {
-			dprintk("%d: %x", sz->driver.minor,
+			dprintk("%d: %x", sz->driver->minor,
 				i, (unsigned char) sz->buf_in[i]);
 			switch (sz->decoder_state) {
 			case PulseSpace:
@@ -443,14 +442,18 @@ static int streamzap_probe(struct usb_interface *interface,
 {
 	struct usb_device *udev = interface_to_usbdev(interface);
 	struct usb_host_interface *iface_host;
-	int retval = -ENOMEM;
-	struct usb_streamzap *sz = NULL;
+	struct usb_streamzap *sz;
+	struct lirc_driver *driver;
+	struct lirc_buffer *lirc_buf;
+	struct lirc_buffer *delay_buf;
 	char buf[63], name[128] = "";
+	int retval = -ENOMEM;
+	int minor = 0;
 
 	/* Allocate space for device driver specific data */
 	sz = kzalloc(sizeof(struct usb_streamzap), GFP_KERNEL);
 	if (sz == NULL)
-		goto error;
+		return -ENOMEM;
 
 	sz->udev = udev;
 	sz->interface = interface;
@@ -462,7 +465,7 @@ static int streamzap_probe(struct usb_interface *interface,
 		err("%s: Unexpected desc.bNumEndpoints (%d)", __func__,
 		    iface_host->desc.bNumEndpoints);
 		retval = -ENODEV;
-		goto error;
+		goto free_sz;
 	}
 
 	sz->endpoint = &(iface_host->endpoint[0].desc);
@@ -471,7 +474,7 @@ static int streamzap_probe(struct usb_interface *interface,
 		err("%s: endpoint doesn't match input device 02%02x",
 		    __func__, sz->endpoint->bEndpointAddress);
 		retval = -ENODEV;
-		goto error;
+		goto free_sz;
 	}
 
 	if ((sz->endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
@@ -479,13 +482,13 @@ static int streamzap_probe(struct usb_interface *interface,
 		err("%s: endpoint attributes don't match xfer 02%02x",
 		    __func__, sz->endpoint->bmAttributes);
 		retval = -ENODEV;
-		goto error;
+		goto free_sz;
 	}
 
 	if (sz->endpoint->wMaxPacketSize == 0) {
 		err("%s: endpoint message size==0? ", __func__);
 		retval = -ENODEV;
-		goto error;
+		goto free_sz;
 	}
 
 	/* Allocate the USB buffer and IRQ URB */
@@ -494,36 +497,43 @@ static int streamzap_probe(struct usb_interface *interface,
 	sz->buf_in = usb_buffer_alloc(sz->udev, sz->buf_in_len,
 				      GFP_ATOMIC, &sz->dma_in);
 	if (sz->buf_in == NULL)
-		goto error;
+		goto free_sz;
 
 	sz->urb_in = usb_alloc_urb(0, GFP_KERNEL);
 	if (sz->urb_in == NULL)
-		goto error;
+		goto free_sz;
 
 	/* Connect this device to the LIRC sub-system */
-
-	if (lirc_buffer_init(&sz->lirc_buf, sizeof(int),
-			     STREAMZAP_BUFFER_SIZE))
-		goto error;
-
-	if (lirc_buffer_init(&sz->delay_buf, sizeof(int),
-			     STREAMZAP_BUFFER_SIZE)) {
-		lirc_buffer_free(&sz->lirc_buf);
-		goto error;
-	}
-
-	strcpy(sz->driver.name, DRIVER_NAME);
-	sz->driver.minor = -1;
-	sz->driver.sample_rate = 0;
-	sz->driver.code_length = sizeof(int) * 8;
-	sz->driver.features = LIRC_CAN_REC_MODE2 | LIRC_CAN_GET_REC_RESOLUTION;
-	sz->driver.data = sz;
-	sz->driver.rbuf = &sz->lirc_buf;
-	sz->driver.set_use_inc = &streamzap_use_inc;
-	sz->driver.set_use_dec = &streamzap_use_dec;
-	sz->driver.fops = &streamzap_fops;
-	sz->driver.dev = &interface->dev;
-	sz->driver.owner = THIS_MODULE;
+	driver = kzalloc(sizeof(struct lirc_driver), GFP_KERNEL);
+	if (!driver)
+		goto free_sz;
+
+	lirc_buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL);
+	if (!lirc_buf)
+		goto free_driver;
+	if (lirc_buffer_init(lirc_buf, sizeof(int), STREAMZAP_BUF_LEN))
+		goto kfree_lirc_buf;
+
+	delay_buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL);
+	if (!delay_buf)
+		goto free_lirc_buf;
+	if (lirc_buffer_init(delay_buf, sizeof(int), STREAMZAP_BUF_LEN))
+		goto kfree_delay_buf;
+
+	sz->driver = driver;
+	strcpy(sz->driver->name, DRIVER_NAME);
+	sz->driver->minor = -1;
+	sz->driver->sample_rate = 0;
+	sz->driver->code_length = sizeof(int) * 8;
+	sz->driver->features = LIRC_CAN_REC_MODE2 | LIRC_CAN_GET_REC_RESOLUTION;
+	sz->driver->data = sz;
+	sz->driver->rbuf = lirc_buf;
+	sz->delay_buf = delay_buf;
+	sz->driver->set_use_inc = &streamzap_use_inc;
+	sz->driver->set_use_dec = &streamzap_use_dec;
+	sz->driver->fops = &streamzap_fops;
+	sz->driver->dev = &interface->dev;
+	sz->driver->owner = THIS_MODULE;
 
 	sz->idle = 1;
 	sz->decoder_state = PulseSpace;
@@ -556,28 +566,32 @@ static int streamzap_probe(struct usb_interface *interface,
 		snprintf(name + strlen(name), sizeof(name) - strlen(name),
 			 " %s", buf);
 
-	printk(KERN_INFO DRIVER_NAME "[%d]: %s on usb%d:%d attached\n",
-	       sz->driver.minor, name,
-	       udev->bus->busnum, sz->udev->devnum);
+	minor = lirc_register_driver(driver);
 
-	usb_set_intfdata(interface, sz);
+	if (minor < 0)
+		goto free_delay_buf;
 
-	if (lirc_register_driver(&sz->driver) < 0) {
-		lirc_buffer_free(&sz->delay_buf);
-		lirc_buffer_free(&sz->lirc_buf);
-		goto error;
-	}
+	sz->driver->minor = minor;
 
-	return 0;
+	usb_set_intfdata(interface, sz);
 
-error:
+	printk(KERN_INFO DRIVER_NAME "[%d]: %s on usb%d:%d attached\n",
+	       sz->driver->minor, name,
+	       udev->bus->busnum, sz->udev->devnum);
 
-	/*
-	 * Premise is that a 'goto error' can be invoked from inside the
-	 * probe function and all necessary cleanup actions will be taken
-	 * including freeing any necessary memory blocks
-	 */
+	return 0;
 
+free_delay_buf:
+	lirc_buffer_free(sz->delay_buf);
+kfree_delay_buf:
+	kfree(delay_buf);
+free_lirc_buf:
+	lirc_buffer_free(sz->driver->rbuf);
+kfree_lirc_buf:
+	kfree(lirc_buf);
+free_driver:
+	kfree(driver);
+free_sz:
 	if (retval == -ENOMEM)
 		err("Out of memory");
 
@@ -598,10 +612,10 @@ static int streamzap_use_inc(void *data)
 		dprintk("%s called with no context", -1, __func__);
 		return -EINVAL;
 	}
-	dprintk("set use inc", sz->driver.minor);
+	dprintk("set use inc", sz->driver->minor);
 
-	lirc_buffer_clear(&sz->lirc_buf);
-	lirc_buffer_clear(&sz->delay_buf);
+	lirc_buffer_clear(sz->driver->rbuf);
+	lirc_buffer_clear(sz->delay_buf);
 
 	sz->flush_timer.expires = jiffies + HZ;
 	sz->flush = 1;
@@ -610,7 +624,7 @@ static int streamzap_use_inc(void *data)
 	sz->urb_in->dev = sz->udev;
 	if (usb_submit_urb(sz->urb_in, GFP_ATOMIC)) {
 		dprintk("open result = -EIO error submitting urb",
-			sz->driver.minor);
+			sz->driver->minor);
 		return -EIO;
 	}
 	sz->in_use++;
@@ -626,7 +640,7 @@ static void streamzap_use_dec(void *data)
 		dprintk("%s called with no context", -1, __func__);
 		return;
 	}
-	dprintk("set use dec", sz->driver.minor);
+	dprintk("set use dec", sz->driver->minor);
 
 	if (sz->flush) {
 		sz->flush = 0;
@@ -677,13 +691,13 @@ static void streamzap_disconnect(struct usb_interface *interface)
 
 	/* unregister from the LIRC sub-system */
 
-	errnum = lirc_unregister_driver(sz->driver.minor);
+	errnum = lirc_unregister_driver(sz->driver->minor);
 	if (errnum != 0)
 		dprintk("error in lirc_unregister: (returned %d)",
-			sz->driver.minor, errnum);
+			sz->driver->minor, errnum);
 
-	lirc_buffer_free(&sz->delay_buf);
-	lirc_buffer_free(&sz->lirc_buf);
+	lirc_buffer_free(sz->delay_buf);
+	lirc_buffer_free(sz->driver->rbuf);
 
 	/* unregister from the USB sub-system */
 
@@ -691,7 +705,10 @@ static void streamzap_disconnect(struct usb_interface *interface)
 
 	usb_buffer_free(sz->udev, sz->buf_in_len, sz->buf_in, sz->dma_in);
 
-	minor = sz->driver.minor;
+	minor = sz->driver->minor;
+	kfree(sz->driver->rbuf);
+	kfree(sz->driver);
+	kfree(sz->delay_buf);
 	kfree(sz);
 
 	printk(KERN_INFO DRIVER_NAME "[%d]: disconnected\n", minor);
@@ -701,7 +718,7 @@ static int streamzap_suspend(struct usb_interface *intf, pm_message_t message)
 {
 	struct usb_streamzap *sz = usb_get_intfdata(intf);
 
-	printk(KERN_INFO DRIVER_NAME "[%d]: suspend\n", sz->driver.minor);
+	printk(KERN_INFO DRIVER_NAME "[%d]: suspend\n", sz->driver->minor);
 	if (sz->in_use) {
 		if (sz->flush) {
 			sz->flush = 0;
@@ -719,8 +736,8 @@ static int streamzap_resume(struct usb_interface *intf)
 {
 	struct usb_streamzap *sz = usb_get_intfdata(intf);
 
-	lirc_buffer_clear(&sz->lirc_buf);
-	lirc_buffer_clear(&sz->delay_buf);
+	lirc_buffer_clear(sz->driver->rbuf);
+	lirc_buffer_clear(sz->delay_buf);
 
 	if (sz->in_use) {
 		sz->flush_timer.expires = jiffies + HZ;
@@ -730,7 +747,7 @@ static int streamzap_resume(struct usb_interface *intf)
 		sz->urb_in->dev = sz->udev;
 		if (usb_submit_urb(sz->urb_in, GFP_ATOMIC)) {
 			dprintk("open result = -EIO error submitting urb",
-				sz->driver.minor);
+				sz->driver->minor);
 			return -EIO;
 		}
 	}


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

iD8DBQBKUzkByGugalF9Dw4RAhMUAJsFTFG/34PWU7+VxOLQsnziUcGnGgCgkfdS
wfsc9Jpeko6on7CJM0AXYeo=
=tXBf
-----END PGP SIGNATURE-----


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

iD8DBQBKT6oJyGugalF9Dw4RAhW7AJ9tjkuhQjP7FpuuGM4af9CeAgqBnACgjeMK
EibqVGTKHPjKEH93EpwzAVc=
=X1d9
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.1014.2.18
retrieving revision 1.1014.2.19
diff -u -p -r1.1014.2.18 -r1.1014.2.19
--- .cvsignore	3 Jul 2009 18:54:45 -0000	1.1014.2.18
+++ .cvsignore	9 Jul 2009 22:52:59 -0000	1.1014.2.19
@@ -5,5 +5,5 @@ kernel-2.6.*.config
 temp-*
 kernel-2.6.30
 linux-2.6.30.tar.bz2
-patch-2.6.31-rc1.bz2
-patch-2.6.31-rc1-git9.bz2
+patch-2.6.31-rc2.bz2
+patch-2.6.31-rc2-git2.bz2


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.238.6.27
retrieving revision 1.238.6.28
diff -u -p -r1.238.6.27 -r1.238.6.28
--- config-generic	3 Jul 2009 18:54:45 -0000	1.238.6.27
+++ config-generic	9 Jul 2009 22:53:00 -0000	1.238.6.28
@@ -3804,7 +3804,6 @@ CONFIG_LIRC_IMON=m
 CONFIG_LIRC_IT87=m
 CONFIG_LIRC_ITE8709=m
 CONFIG_LIRC_MCEUSB=m
-CONFIG_LIRC_MCEUSB2=m
 CONFIG_LIRC_ZILOG=m
 CONFIG_LIRC_PARALLEL=m
 CONFIG_LIRC_SERIAL=m


Index: config-x86-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86-generic,v
retrieving revision 1.68.6.12
retrieving revision 1.68.6.13
diff -u -p -r1.68.6.12 -r1.68.6.13
--- config-x86-generic	27 Jun 2009 11:05:10 -0000	1.68.6.12
+++ config-x86-generic	9 Jul 2009 22:53:00 -0000	1.68.6.13
@@ -1,5 +1,6 @@
 CONFIG_UID16=y
 # CONFIG_64BIT is not set
+CONFIG_KERNEL_LZMA=y
 
 #
 # Processor type and features
@@ -88,7 +89,7 @@ CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
 
 CONFIG_DMAR=y
-# CONFIG_DMAR_GFX_WA is not set
+CONFIG_DMAR_BROKEN_GFX_WA=y
 CONFIG_DMAR_FLOPPY_WA=y
 # CONFIG_DMAR_DEFAULT_ON 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.11
retrieving revision 1.68.2.12
diff -u -p -r1.68.2.11 -r1.68.2.12
--- config-x86_64-generic	27 Jun 2009 11:05:10 -0000	1.68.2.11
+++ config-x86_64-generic	9 Jul 2009 22:53:00 -0000	1.68.2.12
@@ -1,5 +1,7 @@
 CONFIG_64BIT=y
 CONFIG_UID16=y
+CONFIG_KERNEL_LZMA=y
+
 # CONFIG_MK8 is not set
 # CONFIG_MPSC is not set
 CONFIG_GENERIC_CPU=y
@@ -32,7 +34,7 @@ CONFIG_EDD=m
 CONFIG_PCI_BIOS=y
 CONFIG_PCI_MMCONFIG=y
 CONFIG_DMAR=y
-# CONFIG_DMAR_GFX_WA is not set
+CONFIG_DMAR_BROKEN_GFX_WA=y
 CONFIG_DMAR_FLOPPY_WA=y
 # CONFIG_DMAR_DEFAULT_ON is not set
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.38
retrieving revision 1.1294.2.39
diff -u -p -r1.1294.2.38 -r1.1294.2.39
--- kernel.spec	3 Jul 2009 18:54:45 -0000	1.1294.2.38
+++ kernel.spec	9 Jul 2009 22:53:00 -0000	1.1294.2.39
@@ -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 1
+%define rcrev 2
 # The git snapshot level
-%define gitrev 9
+%define gitrev 2
 # Set rpm version accordingly
 %define rpmversion 2.6.%{upstream_sublevel}
 %endif
@@ -89,6 +89,8 @@ Summary: The Linux kernel
 # kernel-firmware
 %define with_firmware  %{?_with_firmware:  1} %{?!_with_firmware:  0}
 # tools/perf
+%define with_perftool  %{?_without_perftool:  0} %{?!_without_perftool:  1}
+# perf noarch subpkg
 %define with_perf      %{?_without_perf:      0} %{?!_without_perf:      1}
 # kernel-debuginfo
 %define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1}
@@ -245,6 +247,7 @@ Summary: The Linux kernel
 # only package docs noarch
 %ifnarch noarch
 %define with_doc 0
+%define with_perf 0
 %endif
 
 # no need to build headers again for these arches,
@@ -380,7 +383,7 @@ Summary: The Linux kernel
 %define with_pae 0
 %define with_kdump 0
 %define with_debuginfo 0
-%define with_perf 0
+%define with_perftool 0
 %define _enable_debug_packages 0
 %endif
 
@@ -487,7 +490,7 @@ BuildRequires: xmlto
 %if %{with_sparse}
 BuildRequires: sparse >= 0.4.1
 %endif
-%if %{with_perf}
+%if %{with_perftool}
 BuildRequires: elfutils-libelf-devel zlib-devel
 %endif
 BuildConflicts: rhbuildsys(DiskFree) < 500Mb
@@ -610,8 +613,6 @@ Patch150: linux-2.6.29-sparc-IOC_TYPECHE
 
 Patch160: linux-2.6-execshield.patch
 
-Patch200: linux-2.6-ext4-prealloc-fixes.patch
-
 Patch250: linux-2.6-debug-sizeof-structs.patch
 Patch260: linux-2.6-debug-nmi-timeout.patch
 Patch270: linux-2.6-debug-taint-vm.patch
@@ -645,16 +646,14 @@ 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
+Patch1515: linux-2.6.31-lirc.patch
+Patch1516: lirc_streamzap-buffer-rework.patch
 
 # nouveau + drm fixes
 Patch1811: drm-next.patch
 Patch1812: drm-modesetting-radeon.patch
 Patch1813: drm-radeon-pm.patch
 Patch1814: drm-nouveau.patch
-Patch1816: drm-no-gem-on-i8xx.patch
 Patch1818: drm-i915-resume-force-mode.patch
 Patch1819: drm-intel-big-hammer.patch
 
@@ -675,10 +674,9 @@ Patch2901: linux-2.6-v4l-dvb-experimenta
 Patch2903: linux-2.6-revert-dvb-net-kabi-change.patch
 
 # fs fixes
-Patch3000: linux-2.6-btrfs-experimental-branch.patch
 
-#snmp fixes
-Patch10000: linux-2.6-missing-rfc2465-stats.patch
+# NFSv4
+Patch3050: linux-2.6-nfsd4-proots.patch
 
 # VIA Nano / VX8xx updates
 Patch11010: via-hwmon-temp-sensor.patch
@@ -751,6 +749,13 @@ Group: Development/Debug
 This package is required by %{name}-debuginfo subpackages.
 It provides the kernel source files common to all builds.
 
+%package -n perf
+Summary: Performance monitoring for the Linux kernel
+Group: Development/System
+License: GPLv2
+%description -n perf
+This package provides the supporting documentation for the perf tool
+shipped in each kernel image subpackage.
 
 #
 # This macro creates a kernel-<subpackage>-debuginfo package.
@@ -1097,8 +1102,6 @@ ApplyPatch sched-introduce-SCHED_RESET_O
 # enable sysrq-c on all kernels, not only kexec
 #ApplyPatch linux-2.6-sysrq-c.patch
 
-#ApplyPatch linux-2.6-missing-rfc2465-stats.patch
-
 # Architecture patches
 # x86(-64)
 ApplyPatch via-hwmon-temp-sensor.patch
@@ -1133,12 +1136,13 @@ ApplyPatch linux-2.6-execshield.patch
 #
 
 # ext4
-#ApplyPatch linux-2.6-ext4-prealloc-fixes.patch
 
 # xfs
 
 # btrfs
-#ApplyPatch linux-2.6-btrfs-experimental-branch.patch
+
+# NFSv4
+ApplyPatch linux-2.6-nfsd4-proots.patch
 
 # USB
 
@@ -1148,10 +1152,10 @@ ApplyPatch linux-2.6-acpi-video-dos.patc
 
 # Various low-impact patches to aid debugging.
 ApplyPatch linux-2.6-debug-sizeof-structs.patch
-#ApplyPatch linux-2.6-debug-nmi-timeout.patch
-#ApplyPatch linux-2.6-debug-taint-vm.patch
+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
 
 #
@@ -1214,11 +1218,10 @@ 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
-
 # http://www.lirc.org/
-#ApplyPatch linux-2.6.29-lirc.patch
+ApplyPatch linux-2.6.31-lirc.patch
+# should be a short-lived patch, hopefully fixing bz#508952 w/o breaking anything else...
+ApplyPatch lirc_streamzap-buffer-rework.patch
 
 ApplyPatch linux-2.6-e1000-ich9.patch
 
@@ -1228,7 +1231,6 @@ ApplyPatch linux-2.6-e1000-ich9.patch
 ApplyPatch drm-nouveau.patch
 # pm broken on my thinkpad t60p - airlied
 #ApplyPatch drm-radeon-pm.patch
-ApplyPatch drm-no-gem-on-i8xx.patch
 ApplyPatch drm-i915-resume-force-mode.patch
 ApplyPatch drm-intel-big-hammer.patch
 
@@ -1357,7 +1359,7 @@ 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}
+%if %{with_perftool}
     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
@@ -1568,6 +1570,7 @@ chmod -R a=rX Documentation
 find Documentation -type d | xargs chmod u+w
 %endif
 
+
 ###
 ### Special hacks for debuginfo subpackages.
 ###
@@ -1612,6 +1615,17 @@ xargs -0 --no-run-if-empty %{__install} 
 ls $man9dir | grep -q '' || > $man9dir/BROKEN
 %endif
 
+%if %{with_perf}
+# perf docs and shell wrapper.
+mkdir -p $RPM_BUILD_ROOT/usr/sbin
+cat <<EOF >>$RPM_BUILD_ROOT/usr/sbin/perf
+#!/bin/bash
+exec /usr/libexec/perf-`uname -r`
+EOF
+chmod 755 $RPM_BUILD_ROOT/usr/sbin/perf
+mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/perf
+%endif
+
 %if %{with_headers}
 # Install kernel headers
 make ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install
@@ -1775,6 +1789,13 @@ fi
 %{_datadir}/man/man9/*
 %endif
 
+%if %{with_perf}
+%files -n perf
+%defattr(-,root,root)
+%{_datadir}/doc/perf
+/usr/sbin/perf
+%endif
+
 # This is %{image_install_path} on an arch where that includes ELF files,
 # or empty otherwise.
 %define elf_image_install_path %{?kernel_image_elf:%{image_install_path}}
@@ -1790,7 +1811,7 @@ fi
 %defattr(-,root,root)\
 /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?2:.%{2}}\
 /boot/System.map-%{KVERREL}%{?2:.%{2}}\
-%if %{with_perf}\
+%if %{with_perftool}\
 /usr/libexec/perf-%{KVERREL}%{?2:.%{2}}\
 %endif\
 #/boot/symvers-%{KVERREL}%{?2:.%{2}}.gz\
@@ -1847,6 +1868,55 @@ fi
 # and build.
 
 %changelog
+* Thu Jul 09 2009 Michael Young <m.a.young at durham.ac.uk>
+- update pvops and see if CONFIG_KERNEL_LZMA=y is compatible with xen
+
+* Wed Jul 08 2009 Dave Jones <davej at redhat.com>
+- Enable a bunch of debugging options that were missed somehow.
+
+* Wed Jul 08 2009 Kyle McMartin <kyle at redhat.com>
+- Bump NR_CPUS on x86_64 to 512.
+
+* Wed Jul 08 2009 Adam Jackson <ajax at redhat.com>
+- drm-no-gem-on-i8xx.patch: Drop, intel 2D driver requires GEM now. This
+  should be entertaining.
+
+* Wed Jul 08 2009 Kyle McMartin <kyle at redhat.com>
+- First cut of /usr/sbin/perf wrapper script and 'perf'
+  subpackage.
+
+* Wed Jul 08 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.54.rc2.git2
+- Rebase and re-apply all the Fedora-specific linux-2.6-debug-*
+  patches.
+- Cull a bunch of upstreamed patches from the spec.
+
+* Wed Jul 08 2009 Steve Dickson <steved at redhat.com>
+- Added NFSD v4 dynamic pseudo root patch which allows
+  NFS v3 exports to be mounted by v4 clients.
+
+* Tue Jul 07 2009 Jarod Wilson <jarod at redhat.com>
+- See if we can't make lirc_streamzap behave better... (#508952)
+
+* Tue Jul 07 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31-0.47.rc2.git2
+- 2.6.31-rc2-git2
+
+* Tue Jul 07 2009 Jarod Wilson <jarod at redhat.com>
+- Make lirc_i2c actually work with 2.6.31 i2c
+
+* Mon Jul 06 2009 Chuck Ebbert <cebbert at redhat.com>
+- Use LZMA for kernel compression on X86.
+
+* Mon Jul 06 2009 Jarod Wilson <jarod at redhat.com>
+- Hack up lirc_i2c and lirc_zilog to compile with 2.6.31 i2c
+  changes. The drivers might not actually be functional now, but
+  at least they compile again. Will fix later, if need be...
+
+* Sat Jul 04 2009 Dave Jones <davej at redhat.com> 2.6.31-0.42.rc2
+- 2.6.31-rc2
+
+* Sat Jul 04 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.31-rc1-git11
+
 * Fri Jul 03 2009 Hans de Goede <hdegoede at redhat.com>
 - Disable v4l1 ov511 and quickcam_messenger drivers (obsoleted by
   v4l2 gspca subdrivers)

linux-2.6-debug-always-inline-kzalloc.patch:

Index: linux-2.6-debug-always-inline-kzalloc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-always-inline-kzalloc.patch,v
retrieving revision 1.1
retrieving revision 1.1.16.1
diff -u -p -r1.1 -r1.1.16.1
--- linux-2.6-debug-always-inline-kzalloc.patch	1 Sep 2008 17:39:18 -0000	1.1
+++ linux-2.6-debug-always-inline-kzalloc.patch	9 Jul 2009 22:53:00 -0000	1.1.16.1
@@ -1,6 +1,17 @@
---- linux-2.6.26.noarch/include/linux/slab.h~	2008-09-01 00:33:55.000000000 -0400
-+++ linux-2.6.26.noarch/include/linux/slab.h	2008-09-01 00:34:19.000000000 -0400
-@@ -272,7 +272,7 @@ static inline void *kmem_cache_zalloc(st
+From 76ec0e2e6d6edf81abc0331d5e7873ef7b2f6019 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:06:01 -0400
+Subject: [PATCH 6/6] fedora: linux-2.6-debug-always-inline-kzalloc.patch
+
+---
+ include/linux/slab.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/include/linux/slab.h b/include/linux/slab.h
+index 2da8372..d4ef74f 100644
+--- a/include/linux/slab.h
++++ b/include/linux/slab.h
+@@ -310,7 +310,7 @@ static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
   * @size: how many bytes of memory are required.
   * @flags: the type of memory to allocate (see kmalloc).
   */
@@ -9,3 +20,6 @@
  {
  	return kmalloc(size, flags | __GFP_ZERO);
  }
+-- 
+1.6.2.5
+

linux-2.6-debug-nmi-timeout.patch:

Index: linux-2.6-debug-nmi-timeout.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-nmi-timeout.patch,v
retrieving revision 1.4
retrieving revision 1.4.16.1
diff -u -p -r1.4 -r1.4.16.1
--- linux-2.6-debug-nmi-timeout.patch	15 Jul 2008 13:51:23 -0000	1.4
+++ linux-2.6-debug-nmi-timeout.patch	9 Jul 2009 22:53:01 -0000	1.4.16.1
@@ -1,6 +1,18 @@
---- linux-2.6.26.noarch/arch/x86/kernel/nmi.c~	2008-07-14 20:31:14.000000000 -0400
-+++ linux-2.6.26.noarch/arch/x86/kernel/nmi.c	2008-07-14 20:31:38.000000000 -0400
-@@ -416,7 +416,7 @@ nmi_watchdog_tick(struct pt_regs *regs, 
+From 899dd25ae272c73407c1477ec223982d0b57a668 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:03:06 -0400
+Subject: [PATCH 2/6] fedora: linux-2.6-debug-nmi-timeout.patch
+
+---
+ arch/x86/kernel/apic/nmi.c |    2 +-
+ lib/Kconfig.debug          |    8 ++++++++
+ 2 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git a/arch/x86/kernel/apic/nmi.c b/arch/x86/kernel/apic/nmi.c
+index b3025b4..e82a450 100644
+--- a/arch/x86/kernel/apic/nmi.c
++++ b/arch/x86/kernel/apic/nmi.c
+@@ -436,7 +436,7 @@ nmi_watchdog_tick(struct pt_regs *regs, unsigned reason)
  		 * wait a few IRQs (5 seconds) before doing the oops ...
  		 */
  		local_inc(&__get_cpu_var(alert_counter));
@@ -9,9 +21,11 @@
  			/*
  			 * die_nmi will return ONLY if NOTIFY_STOP happens..
  			 */
---- linux-2.6.21.noarch/lib/Kconfig.debug~	2007-07-06 17:05:46.000000000 -0400
-+++ linux-2.6.21.noarch/lib/Kconfig.debug	2007-07-06 17:06:07.000000000 -0400
-@@ -126,6 +126,14 @@ config SCHEDSTATS
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 12327b2..2790b4f 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -245,6 +245,14 @@ config SCHEDSTATS
  	  application, you can say N to avoid the very slight overhead
  	  this adds.
  
@@ -26,3 +40,6 @@
  config TIMER_STATS
  	bool "Collect kernel timers statistics"
  	depends on DEBUG_KERNEL && PROC_FS
+-- 
+1.6.2.5
+

linux-2.6-debug-sizeof-structs.patch:

Index: linux-2.6-debug-sizeof-structs.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-sizeof-structs.patch,v
retrieving revision 1.6
retrieving revision 1.6.16.1
diff -u -p -r1.6 -r1.6.16.1
--- linux-2.6-debug-sizeof-structs.patch	12 Feb 2008 06:18:04 -0000	1.6
+++ linux-2.6-debug-sizeof-structs.patch	9 Jul 2009 22:53:01 -0000	1.6.16.1
@@ -1,6 +1,17 @@
---- linux-2.6/init/main.c~	2006-07-11 02:35:10.000000000 -0400
-+++ linux-2.6/init/main.c	2006-07-11 02:49:01.000000000 -0400
-@@ -350,6 +350,10 @@ static void __init setup_per_cpu_areas(v
+From 3def38bec43d38391d0c9e910dee10317b2ef250 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:01:42 -0400
+Subject: [PATCH 1/6] fedora: linux-2.6-debug-sizeof-structs.patch
+
+---
+ init/main.c |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/init/main.c b/init/main.c
+index 2c5ade7..1c25f08 100644
+--- a/init/main.c
++++ b/init/main.c
+@@ -397,6 +397,10 @@ static void __init setup_per_cpu_areas(void)
  }
  #endif /* CONFIG_HAVE_SETUP_PER_CPU_AREA */
  
@@ -11,9 +22,7 @@
  /* Called by boot processor to activate the rest. */
  static void __init smp_init(void)
  {
---- linux-2.6.20.noarch/init/main.c~	2007-02-14 11:47:41.000000000 -0500
-+++ linux-2.6.20.noarch/init/main.c	2007-02-14 11:48:39.000000000 -0500
-@@ -403,6 +403,15 @@ static void __init smp_init(void)
+@@ -419,6 +423,15 @@ static void __init smp_init(void)
  	/* Any cleanup work */
  	printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
  	smp_cpus_done(setup_max_cpus);
@@ -29,3 +38,6 @@
  }
  
  #endif
+-- 
+1.6.2.5
+

linux-2.6-debug-spinlock-taint.patch:

Index: linux-2.6-debug-spinlock-taint.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-spinlock-taint.patch,v
retrieving revision 1.10
retrieving revision 1.10.16.1
diff -u -p -r1.10 -r1.10.16.1
--- linux-2.6-debug-spinlock-taint.patch	14 Dec 2007 03:42:44 -0000	1.10
+++ linux-2.6-debug-spinlock-taint.patch	9 Jul 2009 22:53:01 -0000	1.10.16.1
@@ -1,3 +1,12 @@
+From 49b12b731b75e2ee406c5b33b89e1baa3fa6b336 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:05:32 -0400
+Subject: [PATCH 4/6] fedora: linux-2.6-debug-spinlock-taint.patch
+
+---
+ lib/spinlock_debug.c |   20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
 diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
 index 9c4b025..b7a010a 100644
 --- a/lib/spinlock_debug.c
@@ -62,4 +71,6 @@ index 9c4b025..b7a010a 100644
  			dump_stack();
  		}
  	}
+-- 
+1.6.2.5
 

linux-2.6-debug-taint-vm.patch:

Index: linux-2.6-debug-taint-vm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-taint-vm.patch,v
retrieving revision 1.23
retrieving revision 1.23.6.1
diff -u -p -r1.23 -r1.23.6.1
--- linux-2.6-debug-taint-vm.patch	15 Jan 2009 07:38:39 -0000	1.23
+++ linux-2.6-debug-taint-vm.patch	9 Jul 2009 22:53:01 -0000	1.23.6.1
@@ -1,31 +1,42 @@
+From b04c57d9dc889462951312be2ac81ff6c702e954 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:05:09 -0400
+Subject: [PATCH 3/6] fedora: linux-2.6-debug-taint-vm.patch
+
+---
+ kernel/panic.c  |    4 +++-
+ mm/page_alloc.c |    5 +++--
+ mm/slab.c       |    8 ++++----
+ mm/slub.c       |    2 +-
+ 4 files changed, 11 insertions(+), 8 deletions(-)
+
 diff --git a/kernel/panic.c b/kernel/panic.c
-index 2a2ff36..361d852 100644
+index 984b3ec..6d1c3be 100644
 --- a/kernel/panic.c
 +++ b/kernel/panic.c
-@@ -194,6 +194,7 @@ const char *print_tainted(void)
- 		snprintf(buf, sizeof(buf), "Not tainted");
- 	return(buf);
+@@ -199,6 +199,7 @@ const char *print_tainted(void)
+ 
+ 	return buf;
  }
 +EXPORT_SYMBOL(print_tainted);
  
  int test_taint(unsigned flag)
  {
-@@ -334,8 +335,8 @@ void warn_slowpath(const char *file, int line, const char *fmt, ...)
- 	sprint_symbol(function, caller);
+@@ -350,7 +351,8 @@ static void warn_slowpath_common(const char *file, int line, void *caller, struc
+ 	const char *board;
  
  	printk(KERN_WARNING "------------[ cut here ]------------\n");
--	printk(KERN_WARNING "WARNING: at %s:%d %s()\n", file,
--		line, function);
-+	printk(KERN_WARNING "WARNING: at %s:%d %s() (%s)\n", file,
-+		line, function, print_tainted());
+-	printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller);
++	printk(KERN_WARNING "WARNING: at %s:%d %pS() (%s)\n",
++		file, line, caller, print_tainted());
  	board = dmi_get_system_info(DMI_PRODUCT_NAME);
  	if (board)
  		printk(KERN_WARNING "Hardware name: %s\n", board);
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 5675b30..ae3e7ff 100644
+index e0f2cdf..21dcbc4 100644
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -250,9 +250,10 @@ static void bad_page(struct page *page)
+@@ -257,9 +257,10 @@ static void bad_page(struct page *page)
  	printk(KERN_ALERT "BUG: Bad page state in process %s  pfn:%05lx\n",
  		current->comm, page_to_pfn(page));
  	printk(KERN_ALERT
@@ -39,10 +50,10 @@ index 5675b30..ae3e7ff 100644
  	dump_stack();
  out:
 diff --git a/mm/slab.c b/mm/slab.c
-index ddc41f3..bf54397 100644
+index e74a16e..7bc287e 100644
 --- a/mm/slab.c
 +++ b/mm/slab.c
-@@ -1858,8 +1858,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
+@@ -1803,8 +1803,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
  			/* Print header */
  			if (lines == 0) {
  				printk(KERN_ERR
@@ -53,7 +64,7 @@ index ddc41f3..bf54397 100644
  				print_objinfo(cachep, objp, 0);
  			}
  			/* Hexdump the affected line */
-@@ -2930,8 +2930,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
+@@ -2902,8 +2902,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
  	if (entries != cachep->num - slabp->inuse) {
  bad:
  		printk(KERN_ERR "slab: Internal list corruption detected in "
@@ -65,10 +76,10 @@ index ddc41f3..bf54397 100644
  		     i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t);
  		     i++) {
 diff --git a/mm/slub.c b/mm/slub.c
-index 6392ae5..4f6acce 100644
+index 819f056..8eff0f4 100644
 --- a/mm/slub.c
 +++ b/mm/slub.c
-@@ -435,7 +435,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
+@@ -433,7 +433,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
  	va_end(args);
  	printk(KERN_ERR "========================================"
  			"=====================================\n");
@@ -77,3 +88,6 @@ index 6392ae5..4f6acce 100644
  	printk(KERN_ERR "----------------------------------------"
  			"-------------------------------------\n\n");
  }
+-- 
+1.6.2.5
+

linux-2.6-debug-vm-would-have-oomkilled.patch:

Index: linux-2.6-debug-vm-would-have-oomkilled.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-vm-would-have-oomkilled.patch,v
retrieving revision 1.2
retrieving revision 1.2.6.1
diff -u -p -r1.2 -r1.2.6.1
--- linux-2.6-debug-vm-would-have-oomkilled.patch	7 Jan 2009 15:12:40 -0000	1.2
+++ linux-2.6-debug-vm-would-have-oomkilled.patch	9 Jul 2009 22:53:01 -0000	1.2.6.1
@@ -1,8 +1,18 @@
+From a0e012e118c2b0eba399e213a7989fd2b880f8b7 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle at phobos.i.jkkm.org>
+Date: Wed, 8 Jul 2009 13:05:46 -0400
+Subject: [PATCH 5/6] fedora: linux-2.6-debug-vm-would-have-oomkilled.patch
+
+---
+ kernel/sysctl.c |    9 +++++++++
+ mm/oom_kill.c   |   14 ++++++++++++++
+ 2 files changed, 23 insertions(+), 0 deletions(-)
+
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index b2a2d68..3b132ee 100644
+index 98e0232..0cfe3ab 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -67,6 +67,7 @@ extern int sysctl_overcommit_ratio;
+@@ -73,6 +73,7 @@ extern int sysctl_overcommit_ratio;
  extern int sysctl_panic_on_oom;
  extern int sysctl_oom_kill_allocating_task;
  extern int sysctl_oom_dump_tasks;
@@ -10,7 +20,7 @@ index b2a2d68..3b132ee 100644
  extern int max_threads;
  extern int core_uses_pid;
  extern int suid_dumpable;
-@@ -861,6 +862,14 @@ static struct ctl_table vm_table[] = {
+@@ -1031,6 +1032,14 @@ static struct ctl_table vm_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -26,7 +36,7 @@ index b2a2d68..3b132ee 100644
  		.procname	= "overcommit_ratio",
  		.data		= &sysctl_overcommit_ratio,
 diff --git a/mm/oom_kill.c b/mm/oom_kill.c
-index f255eda..3335a94 100644
+index 175a67a..4ab4bdb 100644
 --- a/mm/oom_kill.c
 +++ b/mm/oom_kill.c
 @@ -31,6 +31,7 @@
@@ -37,9 +47,9 @@ index f255eda..3335a94 100644
  static DEFINE_SPINLOCK(zone_scan_lock);
  /* #define DEBUG */
  
-@@ -321,6 +322,12 @@ static void __oom_kill_task(struct task_struct *p, int verbose)
+@@ -328,6 +329,12 @@ static void __oom_kill_task(struct task_struct *p, int verbose)
+ 	if (!p->mm)
  		return;
- 	}
  
 +	if (sysctl_would_have_oomkilled == 1) {
 +		printk(KERN_ERR "Would have killed process %d (%s). But continuing instead.\n",
@@ -50,10 +60,11 @@ index f255eda..3335a94 100644
  	if (verbose)
  		printk(KERN_ERR "Killed process %d (%s)\n",
  				task_pid_nr(p), p->comm);
-@@ -363,6 +370,12 @@ static int oom_kill_task(struct task_struct *p)
- 			return 1;
- 	} while_each_thread(g, q);
- 
+@@ -355,6 +362,13 @@ static int oom_kill_task(struct task_struct *p)
+ 		return 1;
+ 	}
+ 	task_unlock(p);
++
 +	if (sysctl_would_have_oomkilled == 1) {
 +		printk(KERN_ERR "Would have killed process %d (%s). But continuing instead.\n",
 +				task_pid_nr(p), p->comm);
@@ -63,3 +74,6 @@ index f255eda..3335a94 100644
  	__oom_kill_task(p, 1);
  
  	/*
+-- 
+1.6.2.5
+


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.976.2.19
retrieving revision 1.976.2.20
diff -u -p -r1.976.2.19 -r1.976.2.20
--- sources	3 Jul 2009 18:54:45 -0000	1.976.2.19
+++ sources	9 Jul 2009 22:53:02 -0000	1.976.2.20
@@ -1,3 +1,3 @@
 7a80058a6382e5108cdb5554d1609615  linux-2.6.30.tar.bz2
-33d2d730beb66aa82349df8b6096fd91  patch-2.6.31-rc1.bz2
-e5fd406d8910e1dd1f756400488d5921  patch-2.6.31-rc1-git9.bz2
+a785e5e8d16d646c7a7c876359b3dab3  patch-2.6.31-rc2.bz2
+3ce980fca192d93cdc0d09237aad318d  patch-2.6.31-rc2-git2.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.888.2.18
retrieving revision 1.888.2.19
diff -u -p -r1.888.2.18 -r1.888.2.19
--- upstream	3 Jul 2009 18:54:46 -0000	1.888.2.18
+++ upstream	9 Jul 2009 22:53:03 -0000	1.888.2.19
@@ -1,3 +1,4 @@
 linux-2.6.30.tar.bz2
-patch-2.6.31-rc1.bz2
-patch-2.6.31-rc1-git9.bz2
+patch-2.6.31-rc2.bz2
+patch-2.6.31-rc2-git2.bz2
+

xen.pvops.patch:

Index: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.26
retrieving revision 1.1.2.27
diff -u -p -r1.1.2.26 -r1.1.2.27
--- xen.pvops.patch	30 Jun 2009 18:06:05 -0000	1.1.2.26
+++ xen.pvops.patch	9 Jul 2009 22:53:03 -0000	1.1.2.27
@@ -1,5 +1,5 @@
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index d1430ef..c402675 100644
+index 738bdc6..a619154 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
 @@ -1884,6 +1884,10 @@ config PCI_OLPC
@@ -1613,7 +1613,7 @@ index 0000000..b9bb5e8
 +
 +#endif	/* _ASM_X86_PARAVIRT_TYPES_H */
 diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
-index 927958d..7e2efe2 100644
+index 1ff685c..70458d6 100644
 --- a/arch/x86/include/asm/pci.h
 +++ b/arch/x86/include/asm/pci.h
 @@ -21,6 +21,7 @@ struct pci_sysdata {
@@ -2017,7 +2017,7 @@ index 6b8ca3a..d47c54f 100644
  
  	set_fixmap_nocache(FIX_APIC_BASE, address);
 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index 4d0216f..fa8d5a1 100644
+index 8fd1efb..e6e7500 100644
 --- a/arch/x86/kernel/apic/io_apic.c
 +++ b/arch/x86/kernel/apic/io_apic.c
 @@ -63,8 +63,10 @@
@@ -2076,7 +2076,7 @@ index 4d0216f..fa8d5a1 100644
  
  	if (sis_apic_bug)
  		writel(reg, &io_apic->index);
-@@ -3857,6 +3878,11 @@ void __init probe_nr_irqs_gsi(void)
+@@ -3852,6 +3873,11 @@ void __init probe_nr_irqs_gsi(void)
  	printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
  }
  
@@ -2088,7 +2088,7 @@ index 4d0216f..fa8d5a1 100644
  #ifdef CONFIG_SPARSE_IRQ
  int __init arch_probe_nr_irqs(void)
  {
-@@ -4150,6 +4176,11 @@ void __init ioapic_init_mappings(void)
+@@ -4145,6 +4171,11 @@ void __init ioapic_init_mappings(void)
  	struct resource *ioapic_res;
  	int i;
  
@@ -2469,7 +2469,7 @@ index 70ec9b9..cef3d70 100644
  
  	.start_context_switch = paravirt_nop,
 diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
-index 4763047..e72610a 100644
+index 1a041bc..ee5162e 100644
 --- a/arch/x86/kernel/pci-dma.c
 +++ b/arch/x86/kernel/pci-dma.c
 @@ -10,6 +10,7 @@
@@ -3172,7 +3172,7 @@ index 0000000..496f07d
 +#endif
 +}
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 0a1700a..9b98567 100644
+index 0a1700a..78970be 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -64,6 +64,11 @@ DEFINE_PER_CPU(struct vcpu_info, xen_vcpu_info);
@@ -3187,7 +3187,7 @@ index 0a1700a..9b98567 100644
  struct start_info *xen_start_info;
  EXPORT_SYMBOL_GPL(xen_start_info);
  
-@@ -166,9 +171,11 @@ static void __init xen_banner(void)
+@@ -166,13 +171,16 @@ static void __init xen_banner(void)
  
  	printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
  	       pv_info.name);
@@ -3201,15 +3201,41 @@ index 0a1700a..9b98567 100644
  }
  
  static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
-@@ -207,6 +214,7 @@ static __init void xen_init_cpuid_mask(void)
+ static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
++static __read_mostly unsigned int cpuid_leaf81_edx_mask = ~0;
+ 
+ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
+ 		      unsigned int *cx, unsigned int *dx)
+@@ -184,9 +192,15 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
+ 	 * Mask out inconvenient features, to try and disable as many
+ 	 * unsupported kernel subsystems as possible.
+ 	 */
+-	if (*ax == 1) {
++	switch (*ax) {
++	case 0x1:
+ 		maskecx = cpuid_leaf1_ecx_mask;
+ 		maskedx = cpuid_leaf1_edx_mask;
++		break;
++
++	case 0x80000001:
++		maskedx = cpuid_leaf81_edx_mask;
++		break;
+ 	}
+ 
+ 	asm(XEN_EMULATE_PREFIX "cpuid"
+@@ -207,8 +221,11 @@ static __init void xen_init_cpuid_mask(void)
  	cpuid_leaf1_edx_mask =
  		~((1 << X86_FEATURE_MCE)  |  /* disable MCE */
  		  (1 << X86_FEATURE_MCA)  |  /* disable MCA */
 +		  (1 << X86_FEATURE_PAT)  |  /* disable PAT */
  		  (1 << X86_FEATURE_ACC));   /* thermal monitoring */
  
++	cpuid_leaf81_edx_mask = ~(1 << (X86_FEATURE_GBPAGES % 32));
++
  	if (!xen_initial_domain())
-@@ -597,6 +605,18 @@ static void xen_set_iopl_mask(unsigned mask)
+ 		cpuid_leaf1_edx_mask &=
+ 			~((1 << X86_FEATURE_APIC) |  /* disable local APIC */
+@@ -597,6 +614,18 @@ static void xen_set_iopl_mask(unsigned mask)
  	HYPERVISOR_physdev_op(PHYSDEVOP_set_iopl, &set_iopl);
  }
  
@@ -3228,7 +3254,7 @@ index 0a1700a..9b98567 100644
  static void xen_io_delay(void)
  {
  }
-@@ -906,6 +926,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+@@ -906,6 +935,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  	.load_sp0 = xen_load_sp0,
  
  	.set_iopl_mask = xen_set_iopl_mask,
@@ -3236,7 +3262,7 @@ index 0a1700a..9b98567 100644
  	.io_delay = xen_io_delay,
  
  	/* Xen takes care of %gs when switching to usermode for us */
-@@ -978,6 +999,8 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -978,6 +1008,8 @@ asmlinkage void __init xen_start_kernel(void)
  
  	xen_setup_features();
  
@@ -3245,7 +3271,7 @@ index 0a1700a..9b98567 100644
  	/* Install Xen paravirt ops */
  	pv_info = xen_info;
  	pv_init_ops = xen_init_ops;
-@@ -1031,6 +1054,8 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1031,6 +1063,8 @@ asmlinkage void __init xen_start_kernel(void)
  	if (!xen_initial_domain())
  		__supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
  
@@ -3254,7 +3280,7 @@ index 0a1700a..9b98567 100644
  #ifdef CONFIG_X86_64
  	/* Work out if we support NX */
  	check_efer();
-@@ -1045,6 +1070,7 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1045,6 +1079,7 @@ asmlinkage void __init xen_start_kernel(void)
  
  	xen_raw_console_write("mapping kernel into physical memory\n");
  	pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
@@ -3262,7 +3288,7 @@ index 0a1700a..9b98567 100644
  
  	init_mm.pgd = pgd;
  
-@@ -1054,6 +1080,15 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1054,6 +1089,15 @@ asmlinkage void __init xen_start_kernel(void)
  	if (xen_feature(XENFEAT_supervisor_mode_kernel))
  		pv_info.kernel_rpl = 0;
  
@@ -3278,7 +3304,7 @@ index 0a1700a..9b98567 100644
  	/* set the limit of our address space */
  	xen_reserve_top();
  
-@@ -1075,6 +1110,16 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1075,6 +1119,16 @@ asmlinkage void __init xen_start_kernel(void)
  		add_preferred_console("xenboot", 0, NULL);
  		add_preferred_console("tty", 0, NULL);
  		add_preferred_console("hvc", 0, NULL);
@@ -4241,7 +4267,7 @@ index 22494fd..96f7ee0 100644
     inlineable */
  #define DECL_ASM(ret, name, ...)		\
 diff --git a/block/blk-core.c b/block/blk-core.c
-index b06cf5c..f84ea44 100644
+index 4b45435..48804b0 100644
 --- a/block/blk-core.c
 +++ b/block/blk-core.c
 @@ -438,6 +438,7 @@ void blk_put_queue(struct request_queue *q)
@@ -4252,7 +4278,7 @@ index b06cf5c..f84ea44 100644
  
  void blk_cleanup_queue(struct request_queue *q)
  {
-@@ -619,6 +620,7 @@ int blk_get_queue(struct request_queue *q)
+@@ -617,6 +618,7 @@ int blk_get_queue(struct request_queue *q)
  
  	return 1;
  }
@@ -6883,7 +6909,7 @@ index 0000000..650f4b3
 +	(void)xenbus_register_backend(&blkback);
 +}
 diff --git a/drivers/xen/events.c b/drivers/xen/events.c
-index 891d2e9..a18162c 100644
+index abad71b..ad7193f 100644
 --- a/drivers/xen/events.c
 +++ b/drivers/xen/events.c
 @@ -16,7 +16,7 @@
@@ -7276,9 +7302,9 @@ index 891d2e9..a18162c 100644
  void __init xen_init_IRQ(void)
  {
  	int i;
- 	size_t size = nr_cpu_ids * sizeof(struct cpu_evtchn_s);
  
- 	cpu_evtchn_mask_p = alloc_bootmem(size);
+ 	cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s),
+ 				    GFP_KERNEL);
 -	BUG_ON(cpu_evtchn_mask_p == NULL);
 +	irq_info = alloc_bootmem(nr_irqs * sizeof(*irq_info));
 +
@@ -11964,7 +11990,7 @@ index e2e5ce5..ca67e2b 100644
  {
  	int ret = test_bit(PG_uptodate, &(page)->flags);
 diff --git a/include/linux/pci.h b/include/linux/pci.h
-index d304ddf..4b5fa8d 100644
+index 115fb7b..2265a32 100644
 --- a/include/linux/pci.h
 +++ b/include/linux/pci.h
 @@ -1276,5 +1276,11 @@ extern void pci_hp_create_module_link(struct pci_slot *pci_slot);
@@ -12879,7 +12905,7 @@ index bffe6d7..cec5f62 100644
  		panic("Cannot allocate SWIOTLB overflow buffer!\n");
  
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 5d714f8..79a704e 100644
+index ad7cd1c..1e1ba56 100644
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
 @@ -566,6 +566,13 @@ static void __free_pages_ok(struct page *page, unsigned int order)


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


--- linux-2.6-btrfs-experimental-branch.patch DELETED ---


--- linux-2.6-ext4-prealloc-fixes.patch DELETED ---


--- linux-2.6-missing-rfc2465-stats.patch DELETED ---


--- linux-2.6-neigh_-fix-state-transition-INCOMPLETE-_FAILED-via-Netlink-request.patch DELETED ---


--- linux-2.6.29-lirc.patch DELETED ---


--- patch-2.6.31-rc1-git9.bz2.sign DELETED ---


--- patch-2.6.31-rc1.bz2.sign DELETED ---




More information about the scm-commits mailing list