rpms/kernel-xen/devel drm.patch, NONE, 1.1 linux-2.6-execshield-fixes.patch, NONE, 1.1 linux-2.6-mv643xx-compile-fix.patch, NONE, 1.1 linux-2.6.15-cell-numa-init.patch, NONE, 1.1 patch-2.6.16-rc1-git4.bz2.sign, NONE, 1.1 patch-2.6.16-rc1.bz2.sign, NONE, 1.1 .cvsignore, 1.7, 1.8 kernel-xen.spec, 1.29, 1.30 linux-2.6-compile-fixes.patch, 1.2, 1.3 linux-2.6-crashdump-common.patch, 1.3, 1.4 linux-2.6-debug-dual-line-backtrace.patch, 1.2, 1.3 linux-2.6-debug-oops-pause.patch, 1.3, 1.4 linux-2.6-debug-singlebiterror.patch, 1.2, 1.3 linux-2.6-debug-spinlock-taint.patch, 1.3, 1.4 linux-2.6-debug-sysfs-crash-debugging.patch, 1.2, 1.3 linux-2.6-debug-taint-vm.patch, 1.2, 1.3 linux-2.6-devmem.patch, 1.2, 1.3 linux-2.6-diskdump.patch, 1.2, 1.3 linux-2.6-execshield-vdso.patch, 1.2, 1.3 linux-2.6-execshield.patch, 1.3, 1.4 linux-2.6-hvc-console.patch, 1.2, 1.3 linux-2.6-modsign-core.patch, 1.2, 1.3 linux-2.6-radeon-backlight.patch, 1.2, 1.3 linux-2.6-sleepon.patch, 1.2, 1.3 linux-2.6-softmac-git.patch, 1.1, 1.2 linux-2.6-tux.pat! ch, 1.2, 1.3 linux-2.6-vm-clear-unreclaimable.patch, 1.1, 1.2 linux-2.6-vm-oomkiller-debugging.patch, 1.2, 1.3 linux-2.6-vm-silence-atomic-alloc-failures.patch, 1.2, 1.3 linux-2.6-x86-tune-p4.patch, 1.2, 1.3 linux-2.6-xen-merge.patch, 1.3, 1.4 sources, 1.7, 1.8 upstream, 1.4, 1.5 linux-2.6-build-reference-discarded-opd.patch, 1.2, NONE linux-2.6-cell-idle-pmgt.patch, 1.2, NONE linux-2.6-cell-iommu.patch, 1.2, NONE linux-2.6-cell-no-legacy-io.patch, 1.2, NONE linux-2.6-cell-nvram-kmalloc.patch, 1.2, NONE linux-2.6-cell-platform-detect.patch, 1.2, NONE linux-2.6-cell-spidernet.patch, 1.2, NONE linux-2.6-debug-taint-check.patch, 1.2, NONE linux-2.6-debug-taint-proprietary-helpers.patch, 1.2, NONE linux-2.6-gcc41.patch, 1.3, NONE linux-2.6-ia64-spinlock-size.patch, 1.1, NONE linux-2.6-kdump-needs-not-embedded.patch, 1.2, NONE linux-2.6-powerpc-parport.patch, 1.2, NONE linux-2.6-proc-vmcore-needs-not-embedded.patch, 1.2, NONE linux-2.6-scsi-megaraid-legacy.patch, 1.2, NONE linux-2.6-serial-nrports.patch, 1.1, NONE linux-2.6-s! erial-of.patch,1.2,NONE linux-2.6-usbhid-wireless-security-loc! k.patch,

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Jan 26 22:14:37 UTC 2006


Author: quintela

Update of /cvs/dist/rpms/kernel-xen/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv4150

Modified Files:
	.cvsignore kernel-xen.spec linux-2.6-compile-fixes.patch 
	linux-2.6-crashdump-common.patch 
	linux-2.6-debug-dual-line-backtrace.patch 
	linux-2.6-debug-oops-pause.patch 
	linux-2.6-debug-singlebiterror.patch 
	linux-2.6-debug-spinlock-taint.patch 
	linux-2.6-debug-sysfs-crash-debugging.patch 
	linux-2.6-debug-taint-vm.patch linux-2.6-devmem.patch 
	linux-2.6-diskdump.patch linux-2.6-execshield-vdso.patch 
	linux-2.6-execshield.patch linux-2.6-hvc-console.patch 
	linux-2.6-modsign-core.patch linux-2.6-radeon-backlight.patch 
	linux-2.6-sleepon.patch linux-2.6-softmac-git.patch 
	linux-2.6-tux.patch linux-2.6-vm-clear-unreclaimable.patch 
	linux-2.6-vm-oomkiller-debugging.patch 
	linux-2.6-vm-silence-atomic-alloc-failures.patch 
	linux-2.6-x86-tune-p4.patch linux-2.6-xen-merge.patch sources 
	upstream 
Added Files:
	drm.patch linux-2.6-execshield-fixes.patch 
	linux-2.6-mv643xx-compile-fix.patch 
	linux-2.6.15-cell-numa-init.patch 
	patch-2.6.16-rc1-git4.bz2.sign patch-2.6.16-rc1.bz2.sign 
Removed Files:
	linux-2.6-build-reference-discarded-opd.patch 
	linux-2.6-cell-idle-pmgt.patch linux-2.6-cell-iommu.patch 
	linux-2.6-cell-no-legacy-io.patch 
	linux-2.6-cell-nvram-kmalloc.patch 
	linux-2.6-cell-platform-detect.patch 
	linux-2.6-cell-spidernet.patch 
	linux-2.6-debug-taint-check.patch 
	linux-2.6-debug-taint-proprietary-helpers.patch 
	linux-2.6-gcc41.patch linux-2.6-ia64-spinlock-size.patch 
	linux-2.6-kdump-needs-not-embedded.patch 
	linux-2.6-powerpc-parport.patch 
	linux-2.6-proc-vmcore-needs-not-embedded.patch 
	linux-2.6-scsi-megaraid-legacy.patch 
	linux-2.6-serial-nrports.patch linux-2.6-serial-of.patch 
	linux-2.6-usbhid-wireless-security-lock.patch 
	linux-2.6-vm-debug.patch linux-2.6-x86_64-ati-apic-timer.patch 
	linux-2.6-x86_64-disable-hotplug-guessing.patch 
	linux-2.6.15-default-powerpc.patch 
	linux-2.6.15-rc1-ppc64-syscallpath.patch 
Log Message:
rebase with rawhide 1.1869

drm.patch:
 b/drivers/char/drm/Makefile           |    4 
 b/drivers/char/drm/ati_pcigart.c      |   23 
 b/drivers/char/drm/drm.h              |    4 
 b/drivers/char/drm/drmP.h             |  122 +++--
 b/drivers/char/drm/drm_agpsupport.c   |  133 +++--
 b/drivers/char/drm/drm_bufs.c         |   49 +-
 b/drivers/char/drm/drm_context.c      |    2 
 b/drivers/char/drm/drm_core.h         |    4 
 b/drivers/char/drm/drm_drv.c          |  152 +++---
 b/drivers/char/drm/drm_fops.c         |  317 +++++++------
 b/drivers/char/drm/drm_ioc32.c        |    1 
 b/drivers/char/drm/drm_ioctl.c        |   27 -
 b/drivers/char/drm/drm_lock.c         |    1 
 b/drivers/char/drm/drm_memory.c       |    8 
 b/drivers/char/drm/drm_memory_debug.h |  269 +++++------
 b/drivers/char/drm/drm_os_linux.h     |    1 
 b/drivers/char/drm/drm_pciids.h       |   12 
 b/drivers/char/drm/drm_proc.c         |   16 
 b/drivers/char/drm/drm_stub.c         |   63 --
 b/drivers/char/drm/drm_sysfs.c        |   66 +-
 b/drivers/char/drm/i810_dma.c         |   49 +-
 b/drivers/char/drm/i810_drv.c         |   60 --
 b/drivers/char/drm/i810_drv.h         |   10 
 b/drivers/char/drm/i830_dma.c         |   47 +
 b/drivers/char/drm/i830_drv.c         |   59 --
 b/drivers/char/drm/i830_drv.h         |    8 
 b/drivers/char/drm/i915_dma.c         |   52 +-
 b/drivers/char/drm/i915_drm.h         |    6 
 b/drivers/char/drm/i915_drv.c         |   66 --
 b/drivers/char/drm/i915_drv.h         |   44 +
 b/drivers/char/drm/i915_ioc32.c       |    1 
 b/drivers/char/drm/i915_irq.c         |   48 +-
 b/drivers/char/drm/i915_mem.c         |    5 
 b/drivers/char/drm/mga_dma.c          |  160 ++++--
 b/drivers/char/drm/mga_drv.c          |   58 --
 b/drivers/char/drm/mga_drv.h          |   14 
 b/drivers/char/drm/mga_ioc32.c        |    1 
 b/drivers/char/drm/mga_state.c        |   26 -
 b/drivers/char/drm/r128_cce.c         |   15 
 b/drivers/char/drm/r128_drm.h         |    4 
 b/drivers/char/drm/r128_drv.c         |   48 --
 b/drivers/char/drm/r128_drv.h         |    8 
 b/drivers/char/drm/r128_ioc32.c       |    1 
 b/drivers/char/drm/r128_irq.c         |    4 
 b/drivers/char/drm/r128_state.c       |   44 -
 b/drivers/char/drm/r300_cmdbuf.c      |   38 -
 b/drivers/char/drm/r300_reg.h         |    1 
 b/drivers/char/drm/radeon_cp.c        |  106 ++--
 b/drivers/char/drm/radeon_drm.h       |    6 
 b/drivers/char/drm/radeon_drv.c       |   62 +-
 b/drivers/char/drm/radeon_drv.h       |   41 -
 b/drivers/char/drm/radeon_ioc32.c     |    1 
 b/drivers/char/drm/radeon_state.c     |  246 ++++------
 b/drivers/char/drm/savage_bci.c       |   81 +--
 b/drivers/char/drm/savage_drv.c       |   50 --
 b/drivers/char/drm/savage_drv.h       |   29 -
 b/drivers/char/drm/savage_state.c     |  324 ++++++-------
 b/drivers/char/drm/sis_drm.h          |   25 +
 b/drivers/char/drm/sis_drv.c          |   42 -
 b/drivers/char/drm/sis_drv.h          |    4 
 b/drivers/char/drm/sis_ds.h           |    7 
 b/drivers/char/drm/sis_mm.c           |   30 -
 b/drivers/char/drm/tdfx_drv.c         |   42 -
 b/drivers/char/drm/tdfx_drv.h         |    7 
 b/drivers/char/drm/via_dma.c          |   38 +
 b/drivers/char/drm/via_dmablit.c      |  805 ++++++++++++++++++++++++++++++++++
 b/drivers/char/drm/via_dmablit.h      |  140 +++++
 b/drivers/char/drm/via_drm.h          |   58 +-
 b/drivers/char/drm/via_drv.c          |   63 --
 b/drivers/char/drm/via_drv.h          |   56 +-
 b/drivers/char/drm/via_ds.c           |    9 
 b/drivers/char/drm/via_irq.c          |   53 +-
 b/drivers/char/drm/via_map.c          |   47 +
 b/drivers/char/drm/via_mm.c           |   20 
 b/drivers/char/drm/via_verifier.c     |    6 
 b/drivers/char/drm/via_verifier.h     |    4 
 b/drivers/char/drm/via_video.c        |    7 
 drivers/char/drm/drm_init.c           |   53 --
 78 files changed, 2795 insertions(+), 1818 deletions(-)

--- NEW FILE drm.patch ---
diff --git a/drivers/char/drm/Makefile b/drivers/char/drm/Makefile
index e41060c..9d180c4 100644
--- a/drivers/char/drm/Makefile
+++ b/drivers/char/drm/Makefile
@@ -3,7 +3,7 @@
 # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
 
 drm-objs    :=	drm_auth.o drm_bufs.o drm_context.o drm_dma.o drm_drawable.o \
-		drm_drv.o drm_fops.o drm_init.o drm_ioctl.o drm_irq.o \
+		drm_drv.o drm_fops.o drm_ioctl.o drm_irq.o \
 		drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
 		drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
 		drm_sysfs.o
@@ -18,7 +18,7 @@ radeon-objs := radeon_drv.o radeon_cp.o 
 ffb-objs    := ffb_drv.o ffb_context.o
 sis-objs    := sis_drv.o sis_ds.o sis_mm.o
 savage-objs := savage_drv.o savage_bci.o savage_state.o
-via-objs    := via_irq.o via_drv.o via_ds.o via_map.o via_mm.o via_dma.o via_verifier.o via_video.o
+via-objs    := via_irq.o via_drv.o via_ds.o via_map.o via_mm.o via_dma.o via_verifier.o via_video.o via_dmablit.o
 
 ifeq ($(CONFIG_COMPAT),y)
 drm-objs    += drm_ioc32.o
diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c
index efff0ee..5485382 100644
--- a/drivers/char/drm/ati_pcigart.c
+++ b/drivers/char/drm/ati_pcigart.c
@@ -52,7 +52,7 @@
 # define ATI_MAX_PCIGART_PAGES		8192	/**< 32 MB aperture, 4K pages */
 # define ATI_PCIGART_PAGE_SIZE		4096	/**< PCI GART page size */
 
-static unsigned long drm_ati_alloc_pcigart_table(void)
+static void *drm_ati_alloc_pcigart_table(void)
 {
 	unsigned long address;
 	struct page *page;
@@ -72,27 +72,26 @@ static unsigned long drm_ati_alloc_pciga
 	}
 
 	DRM_DEBUG("%s: returning 0x%08lx\n", __FUNCTION__, address);
-	return address;
+	return (void *)address;
 }
 
-static void drm_ati_free_pcigart_table(unsigned long address)
+static void drm_ati_free_pcigart_table(void *address)
 {
 	struct page *page;
 	int i;
 	DRM_DEBUG("%s\n", __FUNCTION__);
 
-	page = virt_to_page(address);
+	page = virt_to_page((unsigned long)address);
 
 	for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++) {
 		__put_page(page);
 		ClearPageReserved(page);
 	}
 
-	free_pages(address, ATI_PCIGART_TABLE_ORDER);
+	free_pages((unsigned long)address, ATI_PCIGART_TABLE_ORDER);
 }
 
-int drm_ati_pcigart_cleanup(drm_device_t * dev,
-			    drm_ati_pcigart_info * gart_info)
+int drm_ati_pcigart_cleanup(drm_device_t *dev, drm_ati_pcigart_info *gart_info)
 {
 	drm_sg_mem_t *entry = dev->sg;
 	unsigned long pages;
@@ -136,10 +135,10 @@ int drm_ati_pcigart_cleanup(drm_device_t
 
 EXPORT_SYMBOL(drm_ati_pcigart_cleanup);
 
-int drm_ati_pcigart_init(drm_device_t * dev, drm_ati_pcigart_info * gart_info)
+int drm_ati_pcigart_init(drm_device_t *dev, drm_ati_pcigart_info *gart_info)
 {
 	drm_sg_mem_t *entry = dev->sg;
-	unsigned long address = 0;
+	void *address = NULL;
 	unsigned long pages;
 	u32 *pci_gart, page_base, bus_address = 0;
 	int i, j, ret = 0;
@@ -163,7 +162,7 @@ int drm_ati_pcigart_init(drm_device_t * 
 			goto done;
 		}
 
-		bus_address = pci_map_single(dev->pdev, (void *)address,
+		bus_address = pci_map_single(dev->pdev, address,
 					     ATI_PCIGART_TABLE_PAGES *
 					     PAGE_SIZE, PCI_DMA_TODEVICE);
 		if (bus_address == 0) {
@@ -176,7 +175,7 @@ int drm_ati_pcigart_init(drm_device_t * 
 		address = gart_info->addr;
 		bus_address = gart_info->bus_addr;
 		DRM_DEBUG("PCI: Gart Table: VRAM %08X mapped at %08lX\n",
-			  bus_address, address);
+			  bus_address, (unsigned long)address);
 	}
 
 	pci_gart = (u32 *) address;
@@ -195,7 +194,7 @@ int drm_ati_pcigart_init(drm_device_t * 
 		if (entry->busaddr[i] == 0) {
 			DRM_ERROR("unable to map PCIGART pages!\n");
 			drm_ati_pcigart_cleanup(dev, gart_info);
-			address = 0;
+			address = NULL;
 			bus_address = 0;
 			goto done;
 		}
diff --git a/drivers/char/drm/drm.h b/drivers/char/drm/drm.h
index 64d6237..9da0ddb 100644
--- a/drivers/char/drm/drm.h
+++ b/drivers/char/drm/drm.h
@@ -90,8 +90,8 @@
 #define DRM_MAX_ORDER	22	  /**< Up to 2^22 bytes = 4MB */
 #define DRM_RAM_PERCENT 10	  /**< How much system ram can we lock? */
 
-#define _DRM_LOCK_HELD	0x80000000 /**< Hardware lock is held */
-#define _DRM_LOCK_CONT	0x40000000 /**< Hardware lock is contended */
+#define _DRM_LOCK_HELD	0x80000000U /**< Hardware lock is held */
+#define _DRM_LOCK_CONT	0x40000000U /**< Hardware lock is contended */
 #define _DRM_LOCK_IS_HELD(lock)	   ((lock) & _DRM_LOCK_HELD)
 #define _DRM_LOCK_IS_CONT(lock)	   ((lock) & _DRM_LOCK_CONT)
 #define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h
index 3dc3c9d..54b561e 100644
--- a/drivers/char/drm/drmP.h
+++ b/drivers/char/drm/drmP.h
@@ -144,20 +144,6 @@
 /** \name Backward compatibility section */
 /*@{*/
 
-#ifndef MODULE_LICENSE
-#define MODULE_LICENSE(x)
-#endif
-
-#ifndef preempt_disable
-#define preempt_disable()
-#define preempt_enable()
-#endif
-
-#ifndef pte_offset_map
-#define pte_offset_map pte_offset
-#define pte_unmap(pte)
-#endif
-
 #define DRM_RPR_ARG(vma) vma,
 
 #define VM_OFFSET(vma) ((vma)->vm_pgoff << PAGE_SHIFT)
@@ -286,10 +272,13 @@ typedef int drm_ioctl_t(struct inode *in
 typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
 			       unsigned long arg);
 
+#define DRM_AUTH	0x1
+#define	DRM_MASTER	0x2
+#define DRM_ROOT_ONLY	0x4
+
 typedef struct drm_ioctl_desc {
 	drm_ioctl_t *func;
-	int auth_needed;
-	int root_only;
+	int flags;
 } drm_ioctl_desc_t;
 
 typedef struct drm_devstate {
@@ -384,6 +373,7 @@ typedef struct drm_buf_entry {
 /** File private data */
 typedef struct drm_file {
 	int authenticated;
+	int master;
 	int minor;
 	pid_t pid;
 	uid_t uid;
@@ -532,8 +522,9 @@ typedef struct drm_vbl_sig {
 typedef struct ati_pcigart_info {
 	int gart_table_location;
 	int is_pcie;
-	unsigned long addr;
+	void *addr;
 	dma_addr_t bus_addr;
+	drm_local_map_t mapping;
 } drm_ati_pcigart_info;
 
 /**
@@ -544,16 +535,14 @@ typedef struct ati_pcigart_info {
 struct drm_device;
 
 struct drm_driver {
-	int (*preinit) (struct drm_device *, unsigned long flags);
-	void (*prerelease) (struct drm_device *, struct file * filp);
-	void (*pretakedown) (struct drm_device *);
-	int (*postcleanup) (struct drm_device *);
-	int (*presetup) (struct drm_device *);
-	int (*postsetup) (struct drm_device *);
+	int (*load) (struct drm_device *, unsigned long flags);
+	int (*firstopen) (struct drm_device *);
+	int (*open) (struct drm_device *, drm_file_t *);
+	void (*preclose) (struct drm_device *, struct file * filp);
+	void (*postclose) (struct drm_device *, drm_file_t *);
+	void (*lastclose) (struct drm_device *);
[...8171 lines suppressed...]
+	via_dma_cleanup(dev);
 
 	return 0;
 }
@@ -107,3 +94,29 @@ int via_map_init(DRM_IOCTL_ARGS)
 
 	return -EINVAL;
 }
+
+int via_driver_load(drm_device_t *dev, unsigned long chipset)
+{
+	drm_via_private_t *dev_priv;
+
+	dev_priv = drm_calloc(1, sizeof(drm_via_private_t), DRM_MEM_DRIVER);
+	if (dev_priv == NULL)
+		return DRM_ERR(ENOMEM);
+
+	dev->dev_private = (void *)dev_priv;
+
+	if (chipset == VIA_PRO_GROUP_A)
+		dev_priv->pro_group_a = 1;
+
+	return 0;
+}
+
+int via_driver_unload(drm_device_t *dev)
+{
+	drm_via_private_t *dev_priv = dev->dev_private;
+
+	drm_free(dev_priv, sizeof(drm_via_private_t), DRM_MEM_DRIVER);
+
+	return 0;
+}
+
diff --git a/drivers/char/drm/via_mm.c b/drivers/char/drm/via_mm.c
index 3baddac..33e0cb1 100644
--- a/drivers/char/drm/via_mm.c
+++ b/drivers/char/drm/via_mm.c
@@ -42,7 +42,7 @@ static int via_agp_free(drm_via_mem_t * 
 static int via_fb_alloc(drm_via_mem_t * mem);
 static int via_fb_free(drm_via_mem_t * mem);
 
-static int add_alloc_set(int context, int type, unsigned int val)
+static int add_alloc_set(int context, int type, unsigned long val)
 {
 	int i, retval = 0;
 
@@ -56,7 +56,7 @@ static int add_alloc_set(int context, in
 	return retval;
 }
 
-static int del_alloc_set(int context, int type, unsigned int val)
+static int del_alloc_set(int context, int type, unsigned long val)
 {
 	int i, retval = 0;
 
@@ -199,13 +199,13 @@ int via_mem_alloc(DRM_IOCTL_ARGS)
 				 sizeof(mem));
 
 	switch (mem.type) {
-	case VIDEO:
+	case VIA_MEM_VIDEO:
 		if (via_fb_alloc(&mem) < 0)
 			return -EFAULT;
 		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t __user *) data, mem,
 				       sizeof(mem));
 		return 0;
-	case AGP:
+	case VIA_MEM_AGP:
 		if (via_agp_alloc(&mem) < 0)
 			return -EFAULT;
 		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t __user *) data, mem,
@@ -232,7 +232,7 @@ static int via_fb_alloc(drm_via_mem_t * 
 	if (block) {
 		fb.offset = block->ofs;
 		fb.free = (unsigned long)block;
-		if (!add_alloc_set(fb.context, VIDEO, fb.free)) {
+		if (!add_alloc_set(fb.context, VIA_MEM_VIDEO, fb.free)) {
 			DRM_DEBUG("adding to allocation set fails\n");
 			via_mmFreeMem((PMemBlock) fb.free);
 			retval = -1;
@@ -269,7 +269,7 @@ static int via_agp_alloc(drm_via_mem_t *
 	if (block) {
 		agp.offset = block->ofs;
 		agp.free = (unsigned long)block;
-		if (!add_alloc_set(agp.context, AGP, agp.free)) {
+		if (!add_alloc_set(agp.context, VIA_MEM_AGP, agp.free)) {
 			DRM_DEBUG("adding to allocation set fails\n");
 			via_mmFreeMem((PMemBlock) agp.free);
 			retval = -1;
@@ -297,11 +297,11 @@ int via_mem_free(DRM_IOCTL_ARGS)
 
 	switch (mem.type) {
 
-	case VIDEO:
+	case VIA_MEM_VIDEO:
 		if (via_fb_free(&mem) == 0)
 			return 0;
 		break;
-	case AGP:
+	case VIA_MEM_AGP:
 		if (via_agp_free(&mem) == 0)
 			return 0;
 		break;
@@ -329,7 +329,7 @@ static int via_fb_free(drm_via_mem_t * m
 
 	via_mmFreeMem((PMemBlock) fb.free);
 
-	if (!del_alloc_set(fb.context, VIDEO, fb.free)) {
+	if (!del_alloc_set(fb.context, VIA_MEM_VIDEO, fb.free)) {
 		retval = -1;
 	}
 
@@ -352,7 +352,7 @@ static int via_agp_free(drm_via_mem_t * 
 
 	via_mmFreeMem((PMemBlock) agp.free);
 
-	if (!del_alloc_set(agp.context, AGP, agp.free)) {
+	if (!del_alloc_set(agp.context, VIA_MEM_AGP, agp.free)) {
 		retval = -1;
 	}
 
diff --git a/drivers/char/drm/via_verifier.c b/drivers/char/drm/via_verifier.c
index 4ac495f..70c897c 100644
--- a/drivers/char/drm/via_verifier.c
+++ b/drivers/char/drm/via_verifier.c
@@ -237,7 +237,7 @@ static hazard_t table3[256];
 static __inline__ int
 eat_words(const uint32_t ** buf, const uint32_t * buf_end, unsigned num_words)
 {
-	if ((*buf - buf_end) >= num_words) {
+	if ((buf_end - *buf) >= num_words) {
 		*buf += num_words;
 		return 0;
 	}
@@ -249,14 +249,14 @@ eat_words(const uint32_t ** buf, const u
  * Partially stolen from drm_memory.h
  */
 
-static __inline__ drm_map_t *via_drm_lookup_agp_map(drm_via_state_t * seq,
+static __inline__ drm_local_map_t *via_drm_lookup_agp_map(drm_via_state_t *seq,
 						    unsigned long offset,
 						    unsigned long size,
 						    drm_device_t * dev)
 {
 	struct list_head *list;
 	drm_map_list_t *r_list;
-	drm_map_t *map = seq->map_cache;
+	drm_local_map_t *map = seq->map_cache;
 
 	if (map && map->offset <= offset
 	    && (offset + size) <= (map->offset + map->size)) {
diff --git a/drivers/char/drm/via_verifier.h b/drivers/char/drm/via_verifier.h
index eb4eda3..256590f 100644
--- a/drivers/char/drm/via_verifier.h
+++ b/drivers/char/drm/via_verifier.h
@@ -47,7 +47,7 @@ typedef struct {
 	int agp_texture;
 	int multitex;
 	drm_device_t *dev;
-	drm_map_t *map_cache;
+	drm_local_map_t *map_cache;
 	uint32_t vertex_count;
 	int agp;
 	const uint32_t *buf_start;
@@ -55,5 +55,7 @@ typedef struct {
 
 extern int via_verify_command_stream(const uint32_t * buf, unsigned int size,
 				     drm_device_t * dev, int agp);
+extern int via_parse_command_stream(drm_device_t *dev, const uint32_t *buf,
+				    unsigned int size);
 
 #endif
diff --git a/drivers/char/drm/via_video.c b/drivers/char/drm/via_video.c
index 7fab9fb..300ac61 100644
--- a/drivers/char/drm/via_video.c
+++ b/drivers/char/drm/via_video.c
@@ -50,8 +50,11 @@ void via_release_futex(drm_via_private_t
 	unsigned int i;
 	volatile int *lock;
 
+	if (!dev_priv->sarea_priv)
+		return;
+
 	for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) {
-		lock = (int *)XVMCLOCKPTR(dev_priv->sarea_priv, i);
+		lock = (volatile int *)XVMCLOCKPTR(dev_priv->sarea_priv, i);
 		if ((_DRM_LOCKING_CONTEXT(*lock) == context)) {
 			if (_DRM_LOCK_IS_HELD(*lock)
 			    && (*lock & _DRM_LOCK_CONT)) {
@@ -79,7 +82,7 @@ int via_decoder_futex(DRM_IOCTL_ARGS)
 	if (fx.lock > VIA_NR_XVMC_LOCKS)
 		return -EFAULT;
 
-	lock = (int *)XVMCLOCKPTR(sAPriv, fx.lock);
+	lock = (volatile int *)XVMCLOCKPTR(sAPriv, fx.lock);
 
 	switch (fx.func) {
 	case VIA_FUTEX_WAIT:


linux-2.6-execshield-fixes.patch:
 linux-2.6.15.i686/include/asm-i386/desc.h         |    2 +-
 linux-exec-shield-curr.q/arch/i386/kernel/traps.c |    2 +-
 linux-exec-shield-curr.q/fs/proc/base.c           |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

--- NEW FILE linux-2.6-execshield-fixes.patch ---
 arch/i386/kernel/traps.c       |    2 +-
 arch/x86_64/ia32/ia32_binfmt.c |    2 +-
 fs/proc/base.c                 |    2 +-
 include/asm-i386/desc.h        |    2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

Index: linux-exec-shield-curr.q/arch/i386/kernel/traps.c
===================================================================
--- linux-exec-shield-curr.q.orig/arch/i386/kernel/traps.c
+++ linux-exec-shield-curr.q/arch/i386/kernel/traps.c
@@ -494,7 +494,7 @@ check_lazy_exec_limit(int cpu, struct pt
 	set_user_cs(&current->mm->context.user_cs, limit);
 
 	desc1 = &current->mm->context.user_cs;
-	desc2 = per_cpu(cpu_gdt_table, cpu) + GDT_ENTRY_DEFAULT_USER_CS;
+	desc2 = get_cpu_gdt_table(cpu) + GDT_ENTRY_DEFAULT_USER_CS;
 
 	if (desc1->a != desc2->a || desc1->b != desc2->b) {
 		/*
Index: linux-exec-shield-curr.q/fs/proc/base.c
===================================================================
--- linux-exec-shield-curr.q.orig/fs/proc/base.c
+++ linux-exec-shield-curr.q/fs/proc/base.c
@@ -201,7 +201,7 @@ static struct pid_entry tgid_base_stuff[
 	E(PROC_TGID_EXE,       "exe",     S_IFLNK|S_IRWXUGO),
 	E(PROC_TGID_MOUNTS,    "mounts",  S_IFREG|S_IRUGO),
 #ifdef CONFIG_MMU
-	E(PROC_TGID_SMAPS,     "smaps",   S_IFREG|S_IRUGO),
+	E(PROC_TGID_SMAPS,     "smaps",   S_IFREG|S_IRUSR),
 #endif
 #ifdef CONFIG_SECURITY
 	E(PROC_TGID_ATTR,      "attr",    S_IFDIR|S_IRUGO|S_IXUGO),
diff -uNp linux-2.6.15.i686/include/asm-i386/desc.h.orig linux-2.6.15.i686/include/asm-i386/desc.h
--- linux-2.6.15.i686/include/asm-i386/desc.h.orig	2006-01-25 17:57:49.000000000 -0500
+++ linux-2.6.15.i686/include/asm-i386/desc.h	2006-01-25 18:00:02.000000000 -0500
@@ -208,7 +208,7 @@ static inline void set_user_cs(struct de
 
 #ifndef CONFIG_X86_XEN
 #define load_user_cs_desc(cpu, mm) \
-    	per_cpu(cpu_gdt_table, (cpu))[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs
+ 	get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs
 #else
 #define load_user_cs_desc(cpu, mm) \
 	HYPERVISOR_update_descriptor(virt_to_machine(&get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS]), (u64)(mm)->context.user_cs.a | ((u64)(mm)->context.user_cs.b) << 32);

linux-2.6-mv643xx-compile-fix.patch:
 mv643xx_eth.c |    1 +
 1 files changed, 1 insertion(+)

--- NEW FILE linux-2.6-mv643xx-compile-fix.patch ---
--- linux-2.6.15/drivers/net/mv643xx_eth.c~	2006-01-06 13:13:34.000000000 +0000
+++ linux-2.6.15/drivers/net/mv643xx_eth.c	2006-01-06 13:41:03.000000000 +0000
@@ -40,6 +40,7 @@
 #include <linux/delay.h>
 #include <linux/ethtool.h>
 #include <linux/platform_device.h>
+#include <net/ip.h>
 
 #include <asm/io.h>
 #include <asm/types.h>

linux-2.6.15-cell-numa-init.patch:
 setup.c |    1 +
 1 files changed, 1 insertion(+)

--- NEW FILE linux-2.6.15-cell-numa-init.patch ---
--- linux-2.6.15/arch/powerpc/platforms/cell/setup.c~	2006-01-12 20:23:46.000000000 +0000
+++ linux-2.6.15/arch/powerpc/platforms/cell/setup.c	2006-01-13 00:17:51.000000000 +0000
@@ -126,6 +126,7 @@ static void __init cell_spuprop_present(
 static void __init cell_spumem_init(int early)
 {
 	struct device_node *node;
+	return;
 	for (node = of_find_node_by_type(NULL, "spe");
 			node; node = of_find_node_by_type(node, "spe")) {
 		cell_spuprop_present(node, "local-store", early);


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

iD8DBQBD0exdyGugalF9Dw4RAnfNAKCTy5g745oBer9YVfbrqZ2iDO+y+ACbBp5C
iemK/VSL067J5hjAaJ/9+qw=
=EgKq
-----END PGP SIGNATURE-----


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

iD8DBQBDzKrJyGugalF9Dw4RAhIyAJ9QOGkXgvpArr3KJ6UHwFCgREaaAwCgj7YH
C9biYpTvr7a9Y5gMjg+sH9U=
=CXIo
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/.cvsignore,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- .cvsignore	9 Jan 2006 20:42:13 -0000	1.7
+++ .cvsignore	26 Jan 2006 22:14:33 -0000	1.8
@@ -3,4 +3,6 @@
 kernel-xen-2.6.15
 linux-2.6.15.tar.bz2
 xen-20060106.tar.bz2
-bcm43xx-20060106.tar.bz2
+bcm43xx-20060114.tar.bz2
+patch-2.6.16-rc1.bz2
+patch-2.6.16-rc1-git4.bz2


Index: kernel-xen.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/kernel-xen.spec,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- kernel-xen.spec	11 Jan 2006 20:05:14 -0000	1.29
+++ kernel-xen.spec	26 Jan 2006 22:14:33 -0000	1.30
@@ -192,7 +192,7 @@
 Source10: COPYING.modules
 Source11: genkey
 
-%define BCMVER 20060106
+%define BCMVER 20060114
 Source13: ftp://ftp.berlios.de/pub/bcm43xx/snapshots/bcm43xx/bcm43xx-%{BCMVER}.tar.bz2
 
 Source20: kernel-%{kversion}-i586.config
@@ -216,8 +216,9 @@
 #
 # Patches 0 through 100 are meant for core subsystem upgrades
 #
-#Patch1: patch-2.6.16-git1.bz2
-#Patch2: patch-2.6.16-rc1-git1.bz2
+Patch1: patch-2.6.16-rc1.bz2
+Patch2: patch-2.6.16-rc1-git4.bz2
+Patch3: drm.patch
 
 # Patches 100 through 500 are meant for architecture patches
 Patch100: linux-2.6-bzimage.patch
@@ -229,38 +230,25 @@
 Patch202: linux-2.6-x86-vga-vidfail.patch
 Patch203: linux-2.6.14-intel-cache-build.patch
 Patch204: linux-2.6-x86_64-silence-up-apic-errors.patch
-Patch205: linux-2.6-x86_64-disable-hotplug-guessing.patch
-Patch206: linux-2.6-x86_64-ati-apic-timer.patch
-Patch207: linux-2.6-edid-check.patch
+Patch205: linux-2.6-edid-check.patch
 
 # 300 - 399   ppc(64)
-Patch300: linux-2.6.15-default-powerpc.patch
-Patch302: linux-2.6-serial-of.patch
-Patch303: linux-2.6.15-rc1-ppc64-syscallpath.patch
-Patch304: linux-2.6.15-mv643xx-fixes.patch
+Patch301: linux-2.6.15-cell-numa-init.patch
+#Patch304: linux-2.6.15-mv643xx-fixes.patch
 Patch305: linux-2.6-cell-mambo-drivers.patch
 Patch306: linux-2.6-hvc-console.patch
-Patch307: linux-2.6-cell-platform-detect.patch
-Patch308: linux-2.6-cell-idle-pmgt.patch
-Patch309: linux-2.6-cell-nvram-kmalloc.patch
 Patch310: linux-2.6-cell-spiderpic-no-devtree.patch
-Patch311: linux-2.6-cell-spidernet.patch
-Patch312: linux-2.6-cell-no-legacy-io.patch
 Patch313: linux-2.6-hvc-rtas-console.patch
 Patch314: linux-2.6-ppc-rtas-check.patch
-Patch315: linux-2.6-powerpc-parport.patch
-Patch316: linux-2.6-cell-iommu.patch
 Patch317: linux-2.6-ppc-iseries-input-layer.patch
 
 # 400 - 499   ia64
-Patch400: linux-2.6-ia64-spinlock-size.patch
-
 # 500 - 599   s390(x)
 # 600 - 699   sparc(64)
 
 # 700 - 799 Xen
 Patch700: linux-2.6-xen-merge.patch
-Patch701: linux-2.6.14-xen-compile-fixes.patch
+#Patch701: linux-2.6.14-xen-compile-fixes.patch
 Patch702: linux-2.6-xen-no-tls-warn.patch
 Patch704: linux-2.6.14-xen-guest-enable-char-devices.patch
 Patch705: linux-2.6.14-xen_net_read_mac_export.patch
@@ -272,15 +260,14 @@
 #
 Patch800: linux-2.6-build-nonintconfig.patch
 Patch801: linux-2.6-build-userspace-headers-warning.patch
-Patch802: linux-2.6-build-reference-discarded-opd.patch
 
 # Exec-shield.
 Patch810: linux-2.6-execshield.patch
-Patch811: linux-2.6-execshield-vdso.patch
-#Patch812: linux-2.6-vdso-xen.patch
-Patch813: linux-2.6-execshield-xen.patch
-Patch814: linux-2.6-xen-vdso-note.patch
-Patch815: linux-2.6-write-protect-rodata.patch
+Patch811: linux-2.6-execshield-xen.patch
+Patch812: linux-2.6-execshield-vdso.patch
+Patch813: linux-2.6-xen-vdso-note.patch
+Patch814: linux-2.6-execshield-fixes.patch
+Patch815: linux-2.6-vdso-xen.patch
 
 # Module signing infrastructure.
 Patch900: linux-2.6-modsign-core.patch
@@ -300,7 +287,6 @@
 Patch1011: linux-2.6-debug-slab-backtrace.patch
 Patch1012: linux-2.6-debug-list_head.patch
 Patch1013: linux-2.6-debug-taint-vm.patch
-Patch1014: linux-2.6-debug-taint-check.patch
 Patch1015: linux-2.6-debug-singlebiterror.patch
 Patch1016: linux-2.6-debug-spinlock-taint.patch
 Patch1017: linux-2.6-debug-spinlock-panic.patch
@@ -309,7 +295,6 @@
 Patch1020: linux-2.6-debug-sleep-in-irq-warning.patch
 Patch1021: linux-2.6-debug-reference-discarded-return-result.patch
 Patch1022: linux-2.6-debug-panic-stackdump.patch
-Patch1023: linux-2.6-debug-taint-proprietary-helpers.patch
 Patch1024: linux-2.6-debug-dual-line-backtrace.patch
 Patch1025: linux-2.6-debug-sysfs-crash-debugging.patch
 Patch1026: linux-2.6-debug-no-quiet.patch
@@ -317,8 +302,6 @@
 Patch1028: linux-2.6-debug-oops-pause.patch
 Patch1029: linux-2.6-debug-account-kmalloc.patch
 Patch1030: linux-2.6-debug-latency-tracing.patch
-Patch1031: linux-2.6.15-usblp-fixes.patch
-Patch1032: linux-2.6.15-usb-find-interface.patch
 
 # Restrict /dev/mem usage.
 Patch1050: linux-2.6-devmem.patch
@@ -335,8 +318,7 @@
 
 # SCSI bits.
 Patch1101: linux-2.6-scsi-advansys-enabler.patch
-Patch1102: linux-2.6-scsi-megaraid-legacy.patch
-Patch1103: linux-2.6-scsi-advansys-pcitable.patch
+Patch1102: linux-2.6-scsi-advansys-pcitable.patch
 
 # NFS bits.
 Patch1200: linux-2.6-NFSD-non-null-getxattr.patch
@@ -361,11 +343,9 @@
 Patch1600: linux-2.6-procfs-i_nlink-miscalculate.patch
 Patch1610: linux-2.6-atkbd-dell-multimedia.patch
 Patch1630: linux-2.6-module_version.patch
-Patch1640: linux-2.6-swsusp-nofreeze.patch
 Patch1650: linux-2.6-input-kill-stupid-messages.patch
 Patch1660: linux-2.6-input-usblegacy.patch
 Patch1670: linux-2.6-serial-tickle-nmi.patch
-Patch1671: linux-2.6-serial-nrports.patch
 Patch1690: linux-2.6-radeon-backlight.patch
 Patch1700: linux-2.6-ide-tune-locking.patch
 Patch1710: linux-2.6-autofs-pathlookup.patch
@@ -379,12 +359,9 @@
 Patch1790: linux-2.6-softcursor-persistent-alloc.patch
 Patch1800: linux-2.6-pwc-powerup-by-default.patch
 Patch1810: linux-2.6-smsc-ircc2-pnp.patch
-Patch1820: linux-2.6-usbhid-wireless-security-lock.patch
 Patch1830: linux-2.6-w1-hush-debug.patch
 Patch1840: linux-2.6-x86-hp-reboot.patch
-Patch1860: linux-2.6-posix-timers-sched_time-accumulation.patch
-Patch1870: linux-2.6-kill-blk_attempt_merge.patch
-Patch1880: linux-2.6-dm-sync-overrun.patch
+Patch1850: linux-2.6-mv643xx-compile-fix.patch
 
 # Warn about usage of various obsolete functionality that may go away.
 Patch1900: linux-2.6-obsolete-idescsi-warning.patch
@@ -396,8 +373,7 @@
 # VM bits.
 Patch2000: linux-2.6-vm-oomkiller-debugging.patch
 Patch2001: linux-2.6-vm-silence-atomic-alloc-failures.patch
-Patch2002: linux-2.6-vm-debug.patch
-Patch2003: linux-2.6-vm-clear-unreclaimable.patch
+Patch2002: linux-2.6-vm-clear-unreclaimable.patch
 
 # ACPI patches.
 Patch2100: linux-2.6-acpi-thinkpad-c2c3.patch
@@ -405,7 +381,6 @@
 # Broadcom wireless driver
 Patch5000: linux-2.6-softmac-git.patch
 Patch5001: linux-2.6-bcm43xx.patch
-Patch5002: linux-2.6-bcm43xx-resume.patch
 
 #
 # 10000 to 20000 is for stuff that has to come last due to the
@@ -413,10 +388,7 @@
 # Not patches you're too lazy for to put in the proper place.
 #
 
-Patch10001: linux-2.6-kdump-needs-not-embedded.patch
-Patch10002: linux-2.6-proc-vmcore-needs-not-embedded.patch
-Patch10003: linux-2.6-gcc41.patch
-Patch10004: linux-2.6-compile-fixes.patch
+Patch10000: linux-2.6-compile-fixes.patch
 
 # END OF PATCH DEFINITIONS
 
@@ -612,15 +584,18 @@
 else
   # We already have a vanilla dir.
   cd kernel-%{kversion}
-  mv linux-%{kversion} deleteme
-  rm -rf deleteme &
+  if [ -d linux-%{kversion}.%{_target_cpu} ]; then
+     mv linux-%{kversion}.%{_target_cpu} deleteme
+     rm -rf deleteme &
+  fi
 fi
-cp -rl vanilla linux-%{kversion}
-cd linux-%{kversion}
+cp -rl vanilla linux-%{kversion}.%{_target_cpu}
+cd linux-%{kversion}.%{_target_cpu}
 
 # Update to latest upstream.
-#%patch1 -p1
-#%patch2 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1 -R
 
 #
 # Patches 10 through 100 are meant for core subsystem upgrades
@@ -652,62 +627,36 @@
 %patch203 -p1
 # Suppress APIC errors on UP x86-64.
 %patch204 -p1
-# Disable guessing of how many hotplug cpus to add.
-%patch205 -p1
-# ATI timer quirk.
-%patch206 -p1
 # Reboot thru bios on HP laptops.
-%patch207 -p1
+%patch205 -p1
 
 # 
 # ppc64
 #
-
-%patch300 -p1
-# Don't probe serial ports if they don't exist
-%patch302 -p1
-# Updated ppc/ppc64 system call entry/exit path
-%patch303 -p1
+# Arnd says don't call cell_spumem_init() till he fixes it.
+%patch301 -p1
 # Fix the MV643xx Gigabit Ethernet driver
-%patch304 -p1
+#%patch304 -p1
 # Support the IBM Mambo simulator; core as well as disk and network drivers.
 %patch305 -p1
 # Make HVC console generic; support simulator console device using it.
 %patch306 -p1
-# Detect Cell platforms appropriately
-%patch307 -p1
-# Use PAUSE_ZERO on Cell as appropriate
-%patch308 -p1
-# Fix nvram driver to not kmalloc the entire size of a read() call
-%patch309 -p1
 # Hardcode PIC addresses for Cell spiderpic
 %patch310 -p1
-# Cell spidernet fixes; mostly to use firmware from devicetree.
-%patch311 -p1
-# Cell has no legacy I/O
-%patch312 -p1
 # RTAS console support
 %patch313 -p1
 # Check properly for successful RTAS instantiation
 %patch314 -p1
-# Check before using legacy I/O ports which might crash the machine
-%patch315 -p1
-# Handle new Cell boards with >512MiB RAM
-%patch316 -p1
 # No input layer on iseries
 %patch317 -p1
 
-# IA64
-# Altix: Fix sn_flush_device_kernel & spinlock initialization
-%patch400 -p1
-
 #
 # Xen
 #
 %if %{includexen}
 # Base Xen patch from linux-2.6-merge.hg
 %patch700 -p1
-%patch701 -p1
+#%patch701 -p1
 %patch702 -p1
 %patch704 -p1
 %patch705 -p1
@@ -726,8 +675,6 @@
 %patch800 -p1
 # Warn if someone tries to build userspace using kernel headers
 %patch801 -p1
-# reference_discarded additions.
-%patch802 -p1
 
 # Exec shield 
 %patch810 -p1
@@ -737,13 +684,13 @@
 
 # Xen exec-shield bits
 %if %{includexen}
-#%patch812 -p1
+%patch812 -p1
 %patch813 -p1
-%patch814 -p1
+#%patch815 -p1
 %endif
 
-# Write protect rodata
-%patch815 -p1
+# Final small execshield fixes.
+%patch814 -p1
 
 #
 # GPG signed kernel modules
@@ -768,7 +715,6 @@
 %patch1011 -p1
 %patch1012 -p1
 %patch1013 -p1
-%patch1014 -p1
 %patch1015 -p1
 %patch1016 -p1
 %patch1017 -p1
@@ -777,16 +723,15 @@
 %patch1020 -p1
 %patch1021 -p1
 %patch1022 -p1
-%patch1023 -p1
 %patch1024 -p1
 %patch1025 -p1
 %patch1026 -p1
-%patch1027 -p1
+# Slab leak detector.
+#%patch1027 -p1
 %patch1028 -p1
 #%patch1029 -p1
 #%patch1030 -p1
-%patch1031 -p1
-%patch1032 -p1
+
 #
 # Make /dev/mem a need-to-know function 
 #
@@ -818,15 +763,13 @@
 #
 # Enable Advansys driver
 %patch1101 -p1
-# Enable both new and old megaraid drivers.
-%patch1102 -p1
 # Add a pci table to advansys driver.
-%patch1103 -p1
+%patch1102 -p1
 
 #
 # Various upstream NFS/NFSD fixes.
 #
-%patch1200 -p1
+#%patch1200 -p1
 # kNFSD: fixed '-p port' arg to rpc.nfsd and enables the defining proto versions and transports
 %patch1201 -p1
 # Fix badness.
@@ -858,16 +801,12 @@
 %patch1610 -p1
 # Add missing MODULE_VERSION tags to some modules.
 %patch1630 -p1
-# Fix suspend to sbp devices. (166452)
-%patch1640 -p1
 # The input layer spews crap no-one cares about.
 %patch1650 -p1
 # usb legacy workaround.
 %patch1660 -p1
 # Tickle the NMI whilst doing serial writes.
 %patch1670 -p1
-# Limit number of serial ports registered.
-%patch1671 -p1
 # Radeon on thinkpad backlight power-management goodness.
 %patch1690 -p1
 # Fix IDE locking bug.
@@ -879,9 +818,9 @@
 # Silence noisy CD drive spew
 %patch1730 -p1
 # Reduce stack usage in block layer
-%patch1740 -p1
+#%patch1740 -p1
 # Enable USB storage,UB & libusual magick.
-%patch1750 -p1
+#%patch1750 -p1
 # Enable SATA ATAPI by default.
 %patch1760 -p1
 # 
@@ -894,19 +833,12 @@
 %patch1800 -p1
 # PNP support for smsc-ircc2
 %patch1810 -p1
-# don't mistake security lock as a mouse
-%patch1820 -p1
 # Silence debug messages in w1
 %patch1830 -p1
 # Reboot through BIOS on HP laptops.
 %patch1840 -p1
-# Fix posix-cpu-timers sched_time accumulation
-%patch1860 -p1
-# kill blk_attempt_merge
-%patch1870 -p1
-# dm: avoid ovvrun while syncing.
-%patch1880 -p1
-
+# Fix compilation for MV643xx Ethernet
+%patch1850 -p1
 # Warn about obsolete functionality usage.
 %patch1900 -p1
 %patch1901 -p1
@@ -920,10 +852,8 @@
 %patch2000 -p1
 # Silence GFP_ATOMIC failures.
 %patch2001 -p1
-# Try to trace some negative pagecount errors.
-%patch2002 -p1
 # VM oom killer tweaks.
-%patch2003 -p1
+%patch2002 -p1
 
 # ACPI patches.
 # Blacklist another 'No C2/C3 states' Thinkpad R40e BIOS.
@@ -944,8 +874,6 @@
 %patch5000 -p1
 # Patch Kconfig and Makefiles to merge bcm43xx 'properly'
 %patch5001 -p1
-# Fix the reassociate on resume code
-%patch5002 -p1
 
 #
 # final stuff
@@ -954,10 +882,7 @@
 #
 # misc small stuff to make things compile or otherwise improve performance
 #
-%patch10001 -p1
-%patch10002 -p1
-%patch10003 -p1
-#%patch10004 -p1
+%patch10000 -p1
 
 
 # END OF PATCH APPLICATIONS
@@ -1004,8 +929,8 @@
 
 gpg --homedir . --batch --gen-key %{SOURCE11}  
 gpg --homedir . --export --keyring ./kernel.pub Red > extract.pub 
-make linux-%{kversion}/scripts/bin2c
-linux-%{kversion}/scripts/bin2c ksign_def_public_key __initdata < extract.pub > linux-%{kversion}/crypto/signature/key.h
+make linux-%{kversion}.%{_target_cpu}/scripts/bin2c
+linux-%{kversion}.%{_target_cpu}/scripts/bin2c ksign_def_public_key __initdata < extract.pub > linux-%{kversion}.%{_target_cpu}/crypto/signature/key.h
 
 %if %{buildxen}
   cd xen
@@ -1013,7 +938,9 @@
   cd ..
 %endif
 
-cd linux-%{kversion}
+cd linux-%{kversion}.%{_target_cpu}
+
+
 
 BuildKernel() {
 
@@ -1051,7 +978,7 @@
     
     # Start installing the results
 
-%if "%{__debug_package}" == "1"
+%if "%{_enable_debug_packages}" == "1"
     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/boot
 %endif
     mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
@@ -1091,6 +1018,7 @@
     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
     cp arch/%{_arch}/kernel/asm-offsets.s $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/kernel || :
     cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
+	cp .kernelrelease $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
     cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
     if [ -d arch/%{_arch}/scripts ]; then
       cp -a arch/%{_arch}/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || :
@@ -1116,6 +1044,7 @@
       ln -sf ../../../include/asm-ppc* asm
       popd
     fi
+
     # Make sure the Makefile and version.h have a matching timestamp so that
     # external modules can be built
     touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/version.h
@@ -1125,7 +1054,7 @@
     #
     # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
     #
-%if "%{__debug_package}" == "1"
+%if "%{_enable_debug_packages}" == "1"
     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
     cp vmlinux $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
 %endif
@@ -1213,7 +1142,7 @@
   cd ..
 %endif
 
-cd linux-%{kversion}
+cd linux-%{kversion}.%{_target_cpu}
 
 %if %{buildxen}
 mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
@@ -1444,10 +1373,86 @@
 %endif
 
 %changelog
+* Wed Jan 25 2006 Juan Quintela <quintela at redhat.com>
+- merge with rawhide kernel 1.1869.
+
+* Sun Jan 22 2006 Dave Jones <davej at redhat.com>
+- Add missing .kernelrelease to kernel-devel (#178491)
+- Make serial /dev nodes get created for pci modems again.
+- Re-add Intel AGP for 586 kernels.
+
+* Sat Jan 21 2006 Dave Jones <davej at redhat.com>
+- 2.6.16-rc1-git4
+
+* Fri Jan 20 2006 Dave Jones <davej at redhat.com>
+- 2.6.16-rc1-git3
+
+-* Thu Jan 19 2006 Dave Jones <davej at redhat.com>
+- 2.6.16-rc1-git2
+- Fix IA64 unresolved symbols.
+
+* Wed Jan 18 2006 Dave Jones <davej at redhat.com>
+- 2.6.16-rc1-git1
+
+* Tue Jan 17 2006 Dave Jones <davej at redhat.com>
+- 2.6.16-rc1
+- Revert changes that broke named, ifconfig, radvd etc
+
+* Mon Jan 16 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git12
+
+* Sun Jan 15 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git11
+- Revert some DRM changes as an experiment.
+
+* Sat Jan 14 2006 David Woodhouse <dwmw2 at redhat.com>
+- 2.6.15-git10
+- Re-enable Wacom driver on PPC
+
+* Sat Jan 14 2006 David Woodhouse <dwmw2 at redhat.com>
+- Make CHRP build again
+
+* Fri Jan 13 2006 David Woodhouse <dwmw2 at redhat.com>
+- Update softmac and add WPA support to bcm43xx driver
+- 2.6.15-git9 
+
+* Fri Jan 13 2006 David Woodhouse <dwmw2 at redhat.com>
+- Add TIF_RESTORE_SIGMASK patches. 
+- Fix I/O queue stalls
+
+* Fri Jan 13 2006 Dave Jones <davej at redhat.com>
+- Disable more cruft from iseries config.
+
+* Fri Jan 13 2006 David Woodhouse <dwmw2 at redhat.com>
+- Fix oops on Cell Broadband Engine with NUMA enabled.
+
+* Thu Jan 12 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git8
+
+* Thu Jan 12 2006 David Woodhouse <dwmw2 at redhat.com>
+- 2.6.15-git7a -- another interim snapshot because stuff we care about
+  got fixed today
+- Fix TCPv6 oops when sending RST or ACK packets
+
+* Wed Jan 11 2006 Dave Jones <davej at redhat.com>
+- Make ATI chipset based x86-64 machines boot again.
+
+* Wed Jan 11 2006 David Woodhouse <dwmw2 at redhat.com>
+- 2.6.15-git7
+- Turn off CONFIG_DEBUG_MUTEXES since it makes the G5 not boot
+- Update bcm43xx and softmac
+
+* Wed Jan 11 2006 David Woodhouse <dwmw2 at redhat.com>
+- 2.6.15-git6a (49cd619c69d643b30a24029e40eb5364c7a26b2e)
+- Disable S390
+
 * Wed Jan 11 2006  <sct at redhat.com>
 - Fix up kevent usage for xen net backend
 - Fix %post to create mkinitrd for domU
 
+* Tue Jan 10 2006 David Woodhouse <dwmw2 at redhat.com>
+- 2.6.15-git5a (1fd5a46dd6bbca3a1275465120caf4748872c2a7)
+
 * Mon Jan  9 2006 Stephen Tweedie <sct at redhat.com>
 - Rebase xen to hypervisor from 20060106
 - Rebase xen kernel code to linux-2.6-merge.hg cset 16985
@@ -1464,11 +1469,29 @@
 - Fix some usblp problems, add ieee1284_id to sysfs
 - update bcm43xx driver to version tested in -HEAD
 
+* Mon Jan  9 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git5
+
 * Sat Jan  7 2006 Dave Jones <davej at redhat.com>
 - Silence some iseries build warnings.
 
+* Sat Jan  7 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git3
+
+* Fri Jan  6 2006 Dave Jones <davej at redhat.com>
+- Enable nvram driver for x86-64
+- Fix posix-cpu-timers sched_time accumulation
+
+* Fri Jan  6 2006 David Woodhouse <dwmw2 at redhat.com>
+- Fix mv643xx_eth and spider_net compilation
+- Update Broadcom driver, switch to git tree for softmac
+- Fix IA64 build (asm-generic/signal.h needs linux/compiler.h)
+
 * Fri Jan  6 2006 Dave Jones <davej at redhat.com>
 - Branch CVS for test2.
+
+* Fri Jan  6 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git2
 - Add timer quirk for ATI chipsets.
 - Reboot through BIOS on HP laptops.
 - Additional check in x86 edid parser.

linux-2.6-compile-fixes.patch:
 linux-2.6.15/arch/s390/kernel/setup.c     |    2 ++
 linux-2.6.15/drivers/net/spider_net.c     |    1 +
 linux-2.6.15/include/asm-generic/signal.h |    1 +
 linux-2.6/arch/ia64/Kconfig               |    3 +++
 linux-2.6/drivers/Makefile                |    2 +-
 5 files changed, 8 insertions(+), 1 deletion(-)

Index: linux-2.6-compile-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-compile-fixes.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-compile-fixes.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-compile-fixes.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -0,0 +1,71 @@
+--- linux-2.6.15/include/asm-generic/signal.h.orig	2006-01-06 16:05:09.000000000 +0000
++++ linux-2.6.15/include/asm-generic/signal.h	2006-01-06 16:05:19.000000000 +0000
+@@ -9,6 +9,7 @@
+ #endif
+ 
+ #ifndef __ASSEMBLY__
++#include <linux/compiler.h>
+ typedef void __signalfn_t(int);
+ typedef __signalfn_t __user *__sighandler_t;
+ 
+--- linux-2.6.15/drivers/net/spider_net.c.orig	2006-01-06 16:38:43.000000000 +0000
++++ linux-2.6.15/drivers/net/spider_net.c	2006-01-06 16:39:10.000000000 +0000
+@@ -48,6 +48,7 @@
+ #include <asm/bitops.h>
+ #include <asm/pci-bridge.h>
+ #include <net/checksum.h>
++#include <net/ip.h>
+ 
+ #include "spider_net.h"
+ 
+--- linux-2.6.15/arch/s390/kernel/setup.c~	2006-01-10 23:43:32.000000000 +0000
++++ linux-2.6.15/arch/s390/kernel/setup.c	2006-01-11 00:34:18.000000000 +0000
+@@ -319,6 +319,8 @@ void machine_power_off(void)
+ 	_machine_power_off();
+ }
+ 
++void (*pm_power_off)(void) = machine_power_off;
++
+ static void __init
+ add_memory_hole(unsigned long start, unsigned long end)
+ {
+
+
+Include drivers/sn when CONFIG_IA64_SGI_SN2 or CONFIG_IA64_GENERIC
+is enabled.
+
+Signed-off-by: Jes Sorensen <jes at sgi.com>
+----
+
+ arch/ia64/Kconfig |    3 +++
+ drivers/Makefile  |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+Index: linux-2.6/arch/ia64/Kconfig
+===================================================================
+--- linux-2.6.orig/arch/ia64/Kconfig
++++ linux-2.6/arch/ia64/Kconfig
+@@ -374,6 +374,9 @@
+ 	  To use this option, you have to ensure that the "/proc file system
+ 	  support" (CONFIG_PROC_FS) is enabled, too.
+ 
++config SGI_SN
++	def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
++
+ source "drivers/firmware/Kconfig"
+ 
+ source "fs/Kconfig.binfmt"
+Index: linux-2.6/drivers/Makefile
+===================================================================
+--- linux-2.6.orig/drivers/Makefile
++++ linux-2.6/drivers/Makefile
+@@ -69,7 +69,7 @@
+ obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
+ obj-$(CONFIG_MMC)		+= mmc/
+ obj-$(CONFIG_INFINIBAND)	+= infiniband/
+-obj-$(CONFIG_SGI_IOC4)		+= sn/
++obj-$(CONFIG_SGI_SN)		+= sn/
+ obj-y				+= firmware/
+ obj-$(CONFIG_CRYPTO)		+= crypto/
+ obj-$(CONFIG_SUPERH)		+= sh/
+

linux-2.6-crashdump-common.patch:
 linux-2.6.12/Documentation/sysrq.txt         |    8 
 linux-2.6.12/arch/i386/kernel/nmi.c          |    1 
 linux-2.6.12/arch/i386/kernel/traps.c        |    3 
 linux-2.6.12/arch/i386/mm/init.c             |   47 +++++
 linux-2.6.12/arch/i386/mm/pgtable.c          |    3 
 linux-2.6.12/arch/ia64/kernel/process.c      |   30 ++-
 linux-2.6.12/arch/ia64/kernel/traps.c        |    6 
 linux-2.6.12/arch/ia64/mm/contig.c           |    3 
 linux-2.6.12/arch/ia64/mm/discontig.c        |    3 
 linux-2.6.12/arch/ia64/mm/init.c             |   90 +++++++++
 linux-2.6.12/arch/powerpc/kernel/process.c   |    1 
 linux-2.6.12/arch/powerpc/kernel/traps.c     |    3 
 linux-2.6.12/arch/powerpc/mm/mem.c           |   29 +++
 linux-2.6.12/arch/s390/kernel/traps.c        |    6 
 linux-2.6.12/arch/x86_64/kernel/process.c    |    2 
 linux-2.6.12/arch/x86_64/kernel/traps.c      |    6 
 linux-2.6.12/arch/x86_64/mm/init.c           |   32 +++
 linux-2.6.12/drivers/char/sysrq.c            |    2 
 linux-2.6.12/include/asm-generic/crashdump.h |   47 +++++
 linux-2.6.12/include/asm-i386/crashdump.h    |  123 +++++++++++++
 linux-2.6.12/include/asm-i386/kmap_types.h   |    4 
 linux-2.6.12/include/asm-ia64/crashdump.h    |   72 +++++++
 linux-2.6.12/include/asm-powerpc/crashdump.h |   61 ++++++
 linux-2.6.12/include/asm-x86_64/crashdump.h  |   86 +++++++++
 linux-2.6.12/include/linux/kernel.h          |   18 +
 linux-2.6.12/kernel/Makefile                 |    2 
 linux-2.6.12/kernel/dump.c                   |  246 +++++++++++++++++++++++++++
 linux-2.6.12/kernel/panic.c                  |    4 
 linux-2.6.12/kernel/printk.c                 |   20 ++
 linux-2.6.12/kernel/sched.c                  |    2 
 linux-2.6.13/arch/x86_64/mm/fault.c          |    1 
 linux-2.6.13/drivers/char/sysrq.c            |    5 
 32 files changed, 952 insertions(+), 14 deletions(-)

Index: linux-2.6-crashdump-common.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-crashdump-common.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-crashdump-common.patch	9 Jan 2006 20:42:13 -0000	1.3
+++ linux-2.6-crashdump-common.patch	26 Jan 2006 22:14:33 -0000	1.4
@@ -780,14 +780,14 @@
 --- linux-2.6.12/kernel/Makefile.orig	2005-08-18 12:41:10.000000000 -0400
 +++ linux-2.6.12/kernel/Makefile	2005-08-18 14:23:59.000000000 -0400
 @@ -7,7 +7,7 @@
- 	    sysctl.o capability.o ptrace.o timer.o user.o \
  	    signal.o sys.o kmod.o workqueue.o pid.o \
  	    rcupdate.o intermodule.o extable.o params.o posix-timers.o \
--	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o
-+	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o dump.o
+ 	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
+-	    hrtimer.o
++	    hrtimer.o dump.o
  
+ obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
  obj-$(CONFIG_FUTEX) += futex.o
- obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
 --- linux-2.6.12/kernel/sched.c.orig	2005-08-18 12:41:14.000000000 -0400
 +++ linux-2.6.12/kernel/sched.c	2005-08-18 14:32:27.000000000 -0400
 @@ -4177,6 +4177,8 @@

linux-2.6-debug-dual-line-backtrace.patch:
 traps.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

Index: linux-2.6-debug-dual-line-backtrace.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-dual-line-backtrace.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-debug-dual-line-backtrace.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-debug-dual-line-backtrace.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -1,29 +1,22 @@
---- linux-2.6.14/arch/i386/kernel/traps.c~	2005-12-01 04:25:36.000000000 -0500
-+++ linux-2.6.14/arch/i386/kernel/traps.c	2005-12-01 04:36:19.000000000 -0500
-@@ -116,6 +116,7 @@ static inline unsigned long print_contex
- 				unsigned long *stack, unsigned long ebp)
- {
- 	unsigned long addr;
-+	char space=0;
+--- linux-2.6.15.noarch/arch/i386/kernel/traps.c~	2006-01-17 01:46:02.000000000 -0500
++++ linux-2.6.15.noarch/arch/i386/kernel/traps.c	2006-01-17 01:46:50.000000000 -0500
+@@ -114,10 +114,17 @@ static inline int valid_stack_ptr(struct
  
- #ifdef	CONFIG_FRAME_POINTER
- 	while (valid_stack_ptr(tinfo, (void *)ebp)) {
-@@ -131,9 +132,17 @@ static inline unsigned long print_contex
- 		if (__kernel_text_address(addr)) {
- 			printk(" [<%08lx>]", addr);
- 			print_symbol(" %s", addr);
--			printk("\n");
-+			if (space == 0) {
-+				printk("    ");
-+				space = 1;
-+			} else {
-+				printk("\n");
-+				space = 0;
-+			}
- 		}
- 	}
-+	if (space==1)
+ static void print_addr_and_symbol(unsigned long addr, char *log_lvl)
+ {
+-	printk(log_lvl);
++	static char space=0;
++
++	if (space == 0)
++		printk(log_lvl);
+ 	printk(" [<%08lx>] ", addr);
+ 	print_symbol("%s", addr);
+-	printk("\n");
++	if (space == 0)
++		printk("    ");
++	else
 +		printk("\n");
- #endif
- 	return ebp;
++	space = !space;
  }
+ 
+ static inline unsigned long print_context_stack(struct thread_info *tinfo,

linux-2.6-debug-oops-pause.patch:
 traps.c |   10 ++++++++++
 1 files changed, 10 insertions(+)

Index: linux-2.6-debug-oops-pause.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-oops-pause.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-debug-oops-pause.patch	9 Jan 2006 20:42:13 -0000	1.3
+++ linux-2.6-debug-oops-pause.patch	26 Jan 2006 22:14:33 -0000	1.4
@@ -8,6 +8,14 @@
 
 --- vanilla/arch/i386/kernel/traps.c	2006-01-02 22:21:10.000000000 -0500
 +++ linux-2.6.15/arch/i386/kernel/traps.c	2006-01-04 23:42:46.000000000 -0500
+@@ -28,6 +28,7 @@
+ #include <linux/utsname.h>
+ #include <linux/kprobes.h>
+ #include <linux/kexec.h>
++#include <linux/nmi.h> 
+ 
+ #ifdef CONFIG_EISA
+ #include <linux/ioport.h>
 @@ -256,6 +271,15 @@ void show_registers(struct pt_regs *regs
  		}
  	}

linux-2.6-debug-singlebiterror.patch:
 slab.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+)

Index: linux-2.6-debug-singlebiterror.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-singlebiterror.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-debug-singlebiterror.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-debug-singlebiterror.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -1,18 +1,17 @@
---- linux-2.6.11/mm/slab.c~	2005-05-01 00:51:59.000000000 -0400
-+++ linux-2.6.11/mm/slab.c	2005-05-01 01:19:38.000000000 -0400
-@@ -1004,8 +1004,12 @@ static void poison_obj(kmem_cache_t *cac
+--- linux-2.6.15/mm/slab.c~	2006-01-09 13:25:17.000000000 -0500
++++ linux-2.6.15/mm/slab.c	2006-01-09 13:26:01.000000000 -0500
+@@ -1313,8 +1313,11 @@ static void poison_obj(kmem_cache_t *cac
  static void dump_line(char *data, int offset, int limit)
  {
  	int i;
 +	unsigned char total=0;
-+
  	printk(KERN_ERR "%03x:", offset);
- 	for (i=0;i<limit;i++) {
+ 	for (i = 0; i < limit; i++) {
 +		if (data[offset+i] != POISON_FREE)
 +			total += data[offset+i];
- 		if (check_tainted() == 0)
- 			printk(" %02x", (unsigned char)data[offset+i]);
- 		else {
+ 		printk(" %02x", (unsigned char)data[offset + i]);
+ 	}
+ 	printk("\n");
 @@ -1019,6 +1023,18 @@ static void dump_line(char *data, int of
  		}
  	}

linux-2.6-debug-spinlock-taint.patch:
 spinlock_debug.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

Index: linux-2.6-debug-spinlock-taint.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-spinlock-taint.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-debug-spinlock-taint.patch	9 Jan 2006 20:42:13 -0000	1.3
+++ linux-2.6-debug-spinlock-taint.patch	26 Jan 2006 22:14:33 -0000	1.4
@@ -1,61 +1,59 @@
-Print info about tainting in the spinlock debug printks.
-
---- linux-2.6.14/lib/spinlock_debug.c~	2005-12-21 11:42:59.000000000 -0500
-+++ linux-2.6.14/lib/spinlock_debug.c	2005-12-21 11:44:12.000000000 -0500
+--- linux-2.6.15/lib/spinlock_debug.c~	2006-01-10 20:46:43.000000000 +0000
++++ linux-2.6.15/lib/spinlock_debug.c	2006-01-10 20:52:49.000000000 +0000
 @@ -19,9 +19,9 @@ static void spin_bug(spinlock_t *lock, c
  	if (xchg(&print_once, 0)) {
  		if (lock->owner && lock->owner != SPINLOCK_OWNER_INIT)
  			owner = lock->owner;
--		printk("BUG: spinlock %s on CPU#%d, %s/%d\n",
-+		printk("BUG: spinlock %s on CPU#%d, %s/%d (%s)\n",
+-		printk(KERN_EMERG "BUG: spinlock %s on CPU#%d, %s/%d\n",
++		printk(KERN_EMERG "BUG: spinlock %s on CPU#%d, %s/%d (%s)\n",
  			msg, raw_smp_processor_id(),
 -			current->comm, current->pid);
-+			current->comm, current->pid, print_tainted());
- 		printk(" lock: %p, .magic: %08x, .owner: %s/%d, .owner_cpu: %d\n",
++		       current->comm, current->pid, print_tainted());
+ 		printk(KERN_EMERG " lock: %p, .magic: %08x, .owner: %s/%d, "
+ 				".owner_cpu: %d\n",
  			lock, lock->magic,
- 			owner ? owner->comm : "<none>",
-@@ -78,9 +78,9 @@ static void __spin_lock_debug(spinlock_t
- 		/* lockup suspected: */
+@@ -80,9 +80,9 @@ static void __spin_lock_debug(spinlock_t
  		if (print_once) {
  			print_once = 0;
--			printk("BUG: spinlock lockup on CPU#%d, %s/%d, %p\n",
-+			printk("BUG: spinlock lockup on CPU#%d, %s/%d, %p (%s)\n",
+ 			printk(KERN_EMERG "BUG: spinlock lockup on CPU#%d, "
+-					"%s/%d, %p\n",
++					"%s/%d, %p (%s)\n",
  				raw_smp_processor_id(), current->comm,
 -				current->pid, lock);
 +				current->pid, lock, print_tainted());
  			dump_stack();
  		}
  	}
-@@ -120,9 +120,9 @@ static void rwlock_bug(rwlock_t *lock, c
+@@ -122,9 +122,9 @@ static void rwlock_bug(rwlock_t *lock, c
  	static long print_once = 1;
  
  	if (xchg(&print_once, 0)) {
--		printk("BUG: rwlock %s on CPU#%d, %s/%d, %p\n", msg,
-+		printk("BUG: rwlock %s on CPU#%d, %s/%d, %p (%s)\n", msg,
- 			raw_smp_processor_id(), current->comm,
+-		printk(KERN_EMERG "BUG: rwlock %s on CPU#%d, %s/%d, %p\n",
++		printk(KERN_EMERG "BUG: rwlock %s on CPU#%d, %s/%d, %p (%s)\n",
+ 			msg, raw_smp_processor_id(), current->comm,
 -			current->pid, lock);
 +			current->pid, lock, print_tainted());
  		dump_stack();
  #ifdef CONFIG_SMP
  		/*
-@@ -149,9 +149,9 @@ static void __read_lock_debug(rwlock_t *
- 		/* lockup suspected: */
+@@ -152,9 +152,9 @@ static void __read_lock_debug(rwlock_t *
  		if (print_once) {
  			print_once = 0;
--			printk("BUG: read-lock lockup on CPU#%d, %s/%d, %p\n",
-+			printk("BUG: read-lock lockup on CPU#%d, %s/%d, %p (%s)\n",
+ 			printk(KERN_EMERG "BUG: read-lock lockup on CPU#%d, "
+-					"%s/%d, %p\n",
++					"%s/%d, %p (%s)\n",
  				raw_smp_processor_id(), current->comm,
 -				current->pid, lock);
 +				current->pid, lock, print_tainted());
  			dump_stack();
  		}
  	}
-@@ -221,9 +221,9 @@ static void __write_lock_debug(rwlock_t 
- 		/* lockup suspected: */
+@@ -225,9 +225,9 @@ static void __write_lock_debug(rwlock_t 
  		if (print_once) {
  			print_once = 0;
--			printk("BUG: write-lock lockup on CPU#%d, %s/%d, %p\n",
-+			printk("BUG: write-lock lockup on CPU#%d, %s/%d, %p (%s)\n",
+ 			printk(KERN_EMERG "BUG: write-lock lockup on CPU#%d, "
+-					"%s/%d, %p\n",
++					"%s/%d, %p (%s)\n",
  				raw_smp_processor_id(), current->comm,
 -				current->pid, lock);
 +				current->pid, lock, print_tainted());

linux-2.6-debug-sysfs-crash-debugging.patch:
 devel-akpm/arch/i386/kernel/traps.c     |    5 +++++
 devel-akpm/fs/sysfs/file.c              |    8 ++++++++
 linux-2.6.14/arch/x86_64/kernel/traps.c |    5 +++++
 3 files changed, 18 insertions(+)

Index: linux-2.6-debug-sysfs-crash-debugging.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-sysfs-crash-debugging.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-debug-sysfs-crash-debugging.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-debug-sysfs-crash-debugging.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -75,13 +75,13 @@
  int register_die_notifier(struct notifier_block *nb)
  {
  	int err = 0;
-@@ -385,6 +387,9 @@ void __die(const char * str, struct pt_r
+@@ -416,6 +416,9 @@ void __die(const char * str, struct pt_r
  	printk("DEBUG_PAGEALLOC");
  #endif
  	printk("\n");
 +#ifdef CONFIG_SYSFS
 +	printk(KERN_ALERT "last sysfs file: %s\n", last_sysfs_file);
 +#endif
- 	notify_die(DIE_OOPS, (char *)str, regs, err, 255, SIGSEGV);
+ 	notify_die(DIE_OOPS, str, regs, err, current->thread.trap_no, SIGSEGV);
  	show_registers(regs);
  	/* Executive summary in case the oops scrolled away */

linux-2.6-debug-taint-vm.patch:
 linux-2.6.11/include/asm-generic/bug.h |    8 ++++++--
 linux-2.6.15/mm/page_alloc.c           |    4 ++--
 linux-2.6.15/mm/slab.c                 |    4 ++--
 linux-2000/kernel/panic.c              |    1 +
 4 files changed, 11 insertions(+), 6 deletions(-)

Index: linux-2.6-debug-taint-vm.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-debug-taint-vm.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-debug-taint-vm.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-debug-taint-vm.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -36,31 +36,33 @@
  
  void add_taint(unsigned flag)
  {
---- linux-2.6.14/mm/page_alloc.c~	2005-11-15 12:09:41.000000000 -0500
-+++ linux-2.6.14/mm/page_alloc.c	2005-11-15 12:10:01.000000000 -0500
-@@ -126,9 +126,9 @@ static void bad_page(const char *functio
+--- linux-2.6.15/mm/page_alloc.c~	2006-01-07 20:48:33.000000000 -0500
++++ linux-2.6.15/mm/page_alloc.c	2006-01-07 20:49:24.000000000 -0500
+@@ -137,12 +137,12 @@ static inline int bad_range(struct zone 
+ static void bad_page(struct page *page)
  {
- 	printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
- 		function, current->comm, page);
--	printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
-+	printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d (%s)\n",
- 		(int)(2*sizeof(unsigned long)), (unsigned long)page->flags,
--		page->mapping, page_mapcount(page), page_count(page));
-+		page->mapping, page_mapcount(page), page_count(page), print_tainted());
- 	printk(KERN_EMERG "Backtrace:\n");
+ 	printk(KERN_EMERG "Bad page state in process '%s'\n"
+-		KERN_EMERG "page:%p flags:0x%0*lx mapping:%p mapcount:%d count:%d\n"
++		KERN_EMERG "page:%p flags:0x%0*lx mapping:%p mapcount:%d count:%d (%s)\n"
+ 		KERN_EMERG "Trying to fix it up, but a reboot is needed\n"
+ 		KERN_EMERG "Backtrace:\n",
+ 		current->comm, page, (int)(2*sizeof(unsigned long)),
+ 		(unsigned long)page->flags, page->mapping,
+-		page_mapcount(page), page_count(page));
++		page_mapcount(page), page_count(page), print_tainted());
  	dump_stack();
- 	printk(KERN_EMERG "Trying to fix it up, but a reboot is needed\n");
-diff -urNp --exclude-from=/home/davej/.exclude linux-1740/mm/slab.c linux-2000/mm/slab.c
---- linux-1740/mm/slab.c
-+++ linux-2000/mm/slab.c
-@@ -1053,8 +1053,8 @@ static void check_poison_obj(kmem_cache_
- 			/* Mismatch ! */
+ 	page->flags &= ~(1 << PG_lru	|
+ 			1 << PG_private |
+--- linux-2.6.15/mm/slab.c~	2006-01-09 13:19:33.000000000 -0500
++++ linux-2.6.15/mm/slab.c	2006-01-09 13:19:55.000000000 -0500
+@@ -1371,8 +1371,8 @@ static void check_poison_obj(kmem_cache_
  			/* Print header */
  			if (lines == 0) {
--				printk(KERN_ERR "Slab corruption: start=%p, len=%d\n",
--						realobj, size);
-+				printk(KERN_ERR "Slab corruption: (%s) start=%p, len=%d\n",
-+						print_tainted(), realobj, size);
+ 				printk(KERN_ERR
+-				       "Slab corruption: start=%p, len=%d\n",
+-				       realobj, size);
++				       "Slab corruption: (%s) start=%p, len=%d\n",
++				       print_tainted(), realobj, size);
  				print_objinfo(cachep, objp, 0);
+ 				dump_stack();
  			}
- 			/* Hexdump the affected line */

linux-2.6-devmem.patch:
 arch/powerpc/mm/mem.c                   |   14 +++
 linux-1050/arch/i386/mm/init.c          |   19 ++++
 linux-1050/arch/ia64/mm/init.c          |    7 +
 linux-1050/arch/s390/mm/init.c          |    5 +
 linux-1050/arch/x86_64/mm/init.c        |   20 ++++
 linux-1050/drivers/char/mem.c           |  146 ++++----------------------------
 linux-1050/fs/proc/kcore.c              |    2 
 linux-1050/include/asm-alpha/page.h     |    1 
 linux-1050/include/asm-arm/page.h       |    2 
 linux-1050/include/asm-arm26/page.h     |    2 
 linux-1050/include/asm-cris/page.h      |    2 
 linux-1050/include/asm-h8300/page.h     |    2 
 linux-1050/include/asm-i386/page.h      |    4 
 linux-1050/include/asm-ia64/page.h      |    2 
 linux-1050/include/asm-m68k/page.h      |    2 
 linux-1050/include/asm-m68knommu/page.h |    2 
 linux-1050/include/asm-mips/page.h      |    2 
 linux-1050/include/asm-parisc/page.h    |    2 
 linux-1050/include/asm-ppc/page.h       |    2 
 linux-1050/include/asm-s390/page.h      |    2 
 linux-1050/include/asm-sh/page.h        |    2 
 linux-1050/include/asm-sh64/page.h      |    2 
 linux-1050/include/asm-sparc/page.h     |    2 
 linux-1050/include/asm-sparc64/page.h   |    2 
 linux-1050/include/asm-um/page.h        |    1 
 linux-1050/include/asm-v850/page.h      |    2 
 linux-1050/include/asm-x86_64/page.h    |    4 
 linux-2.6.13/arch/x86_64/mm/init.c      |   22 ++++
 linux-2.6.14/include/asm-powerpc/page.h |    2 
 29 files changed, 154 insertions(+), 125 deletions(-)

Index: linux-2.6-devmem.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-devmem.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-devmem.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-devmem.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -299,7 +299,7 @@
 - 	return virtr + wrote;
 -}
 -
- #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
+ #if defined(CONFIG_ISA) || !defined(__mc68000__)
  static ssize_t read_port(struct file * file, char __user * buf,
  			 size_t count, loff_t *ppos)
 @@ -717,7 +617,6 @@ static struct file_operations mem_fops =

linux-2.6-diskdump.patch:
 drivers/block/Kconfig          |    5 
 drivers/block/Makefile         |    1 
 drivers/block/diskdump.c       | 1121 +++++++++++++++++++++++++++++++++++++++++
 include/asm-generic/diskdump.h |   13 
 include/asm-i386/diskdump.h    |   55 ++
 include/asm-ia64/diskdump.h    |   63 ++
 include/asm-powerpc/diskdump.h |   55 ++
 include/asm-ppc/diskdump.h     |    6 
 include/asm-s390/diskdump.h    |    6 
 include/asm-x86_64/diskdump.h  |   44 +
 include/linux/diskdump.h       |  186 ++++++
 include/linux/interrupt.h      |    4 
 include/linux/timer.h          |    3 
 include/linux/workqueue.h      |    3 
 kernel/softirq.c               |   32 +
 kernel/timer.c                 |   43 +
 kernel/workqueue.c             |   34 +
 17 files changed, 1670 insertions(+), 4 deletions(-)

Index: linux-2.6-diskdump.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-diskdump.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-diskdump.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-diskdump.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -1233,11 +1233,10 @@
  	open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);
 --- linux-2.6.12/kernel/timer.c.diskdump.orig	2005-08-19 16:44:27.502410144 -0400
 +++ linux-2.6.12/kernel/timer.c	2005-08-19 16:49:13.988620772 -0400
-@@ -33,6 +33,8 @@
- #include <linux/posix-timers.h>
+@@ -34,6 +34,7 @@
  #include <linux/cpu.h>
  #include <linux/syscalls.h>
-+#include <linux/delay.h>
+ #include <linux/delay.h>
 +#include <linux/diskdump.h>
  
  #include <asm/uaccess.h>

linux-2.6-execshield-vdso.patch:
 arch/i386/kernel/sysenter.c |   69 ++++++++++++++++++++++----------------
 fs/binfmt_elf.c             |   15 ++------
 fs/proc/task_mmu.c          |    9 +++--
 include/asm-i386/elf.h      |    7 +++
 include/asm-i386/page.h     |    5 ++
 include/linux/mm.h          |    5 ++
 kernel/sysctl.c             |   10 +++++
 mm/mmap.c                   |   78 ++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 155 insertions(+), 43 deletions(-)

Index: linux-2.6-execshield-vdso.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-execshield-vdso.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-execshield-vdso.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-execshield-vdso.patch	26 Jan 2006 22:14:33 -0000	1.3
@@ -1,57 +1,125 @@
---- linux-2.6.13/include/asm-i386/page.h.vdso
-+++ linux-2.6.13/include/asm-i386/page.h
-@@ -120,6 +120,11 @@ extern int devmem_is_allowed(unsigned lo
- #endif
- #define __KERNEL_START		(__PAGE_OFFSET + __PHYSICAL_START)
+ arch/i386/kernel/sysenter.c |   69 ++++++++++++++++++++++----------------
+ fs/binfmt_elf.c             |   15 ++------
+ fs/proc/task_mmu.c          |    9 +++--
+ include/asm-i386/elf.h      |    7 +++
+ include/asm-i386/page.h     |    5 ++
+ include/linux/mm.h          |    5 ++
+ kernel/sysctl.c             |   10 +++++
+ mm/mmap.c                   |   78 ++++++++++++++++++++++++++++++++++++++++++++
+ 8 files changed, 155 insertions(+), 43 deletions(-)
+
+Index: linux/arch/i386/kernel/sysenter.c
+===================================================================
+--- linux.orig/arch/i386/kernel/sysenter.c
++++ linux/arch/i386/kernel/sysenter.c
+@@ -47,20 +47,13 @@ void enable_sep_cpu(void)
+ extern const char vsyscall_int80_start, vsyscall_int80_end;
+ extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
+ 
+-struct page *sysenter_page;
++static struct page *sysenter_pages[2];
+ 
+ int __init sysenter_setup(void)
+ {
+ 	void *page = (void *)get_zeroed_page(GFP_ATOMIC);
  
+-	/*
+-	 * We keep this page mapped readonly, even though the executable
+-	 * portion is randomized into a userspace vma - so that we dont
+-	 * have to fix up the data within the VDSO page every time we
+-	 * exec().
+-	 */
+-	__set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_KERNEL_RO);
+-	sysenter_page = virt_to_page(page);
++	sysenter_pages[0] = virt_to_page(page);
+ 
+ 	if (!boot_cpu_has(X86_FEATURE_SEP)) {
+ 		memcpy(page,
+@@ -78,42 +71,58 @@ int __init sysenter_setup(void)
+ 
+ extern void SYSENTER_RETURN_OFFSET;
+ 
+-unsigned int vdso_enabled = 0;
++unsigned int vdso_enabled = 1;
+ 
+-void map_vsyscall(void)
 +/*
-+ * Under exec-shield we don't use the generic fixmap gate area.
-+ * The vDSO ("gate area") has a normal vma found the normal ways.
++ * This is called from binfmt_elf, we create the special vma for the
++ * vDSO and insert it into the mm struct tree.
 + */
-+#define __HAVE_ARCH_GATE_AREA	1
- 
- #define PAGE_OFFSET		((unsigned long)__PAGE_OFFSET)
- #define VMALLOC_RESERVE		((unsigned long)__VMALLOC_RESERVE)
---- linux-2.6.13/include/asm-i386/elf.h.vdso
-+++ linux-2.6.13/include/asm-i386/elf.h
-@@ -146,6 +146,12 @@ do {									\
- 	}								\
- } while (0)
++int arch_setup_additional_pages(struct linux_binprm *bprm,
++				int executable_stack)
+ {
+ 	struct thread_info *ti = current_thread_info();
+-	struct vm_area_struct *vma;
+-	unsigned long addr;
++	unsigned long addr, len;
++	int err;
  
-+#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
-+struct linux_binprm;
-+extern int arch_setup_additional_pages(struct linux_binprm *bprm,
-+				       int executable_stack);
-+
-+#if 0	/* Disabled for exec-shield, where a normal vma holds the vDSO.  */
- /*
-  * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
-  * extra segments containing the vsyscall DSO contents.  Dumping its
-@@ -189,6 +195,7 @@ do {									      \
- 				   PAGE_ALIGN(vsyscall_phdrs[i].p_memsz));    \
- 	}								      \
- } while (0)
-+#endif
+-	if (unlikely(!vdso_enabled)) {
+ 		current->mm->context.vdso = NULL;
+-		return;
+-	}
++	if (unlikely(!vdso_enabled) || unlikely(!sysenter_pages[0]))
++		return 0;
  
- #endif
+ 	/*
+ 	 * Map the vDSO (it will be randomized):
+ 	 */
+ 	down_write(&current->mm->mmap_sem);
+-	addr = do_mmap(NULL, 0, 4096, PROT_READ | PROT_EXEC, MAP_PRIVATE, 0);
+-	current->mm->context.vdso = (void *)addr;
+-	ti->sysenter_return = (void *)addr + (long)&SYSENTER_RETURN_OFFSET;
+-	if (addr != -1) {
+-		vma = find_vma(current->mm, addr);
+-		if (vma) {
+-			pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
+-			get_page(sysenter_page);
+-			install_page(current->mm, vma, addr,
+-					sysenter_page, vma->vm_page_prot);
++	len = PAGE_SIZE > ELF_EXEC_PAGESIZE ? PAGE_SIZE : ELF_EXEC_PAGESIZE;
++	addr = get_unmapped_area_prot(NULL, 0, len, 0,
++				      MAP_PRIVATE, PROT_READ | PROT_EXEC);
++	if (unlikely(addr & ~PAGE_MASK)) {
++		up_write(&current->mm->mmap_sem);
++		return addr;
+ 		}
++	err = install_special_mapping(current->mm, addr, len,
++				      VM_DONTEXPAND | VM_READ | VM_EXEC |
++				      VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
++				      PAGE_READONLY_EXEC,
++				      sysenter_pages);
++	if (likely(err == 0)) {
++		current->mm->context.vdso = (void *)addr;
++		ti->sysenter_return = &SYSENTER_RETURN_OFFSET + addr;
+ 	}
+ 	up_write(&current->mm->mmap_sem);
++	return err;
+ }
  
---- linux-2.6.13/include/linux/mm.h.vdso
-+++ linux-2.6.13/include/linux/mm.h
-@@ -848,6 +848,11 @@ static inline unsigned long get_unmapped
- 	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);	
+-static int __init vdso_setup(char *str)
++int in_gate_area_no_task(unsigned long addr)
+ {
+-        vdso_enabled = simple_strtoul(str, NULL, 0);
+-        return 1;
++	return 0;
  }
+-__setup("vdso=", vdso_setup);
  
-+extern int install_special_mapping(struct mm_struct *mm,
-+				   unsigned long addr, unsigned long len,
-+				   unsigned long vm_flags, pgprot_t pgprot,
-+				   struct page **pages);
++int in_gate_area(struct task_struct *task, unsigned long addr)
++{
++	return 0;
++}
 +
- extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
- 	unsigned long len, unsigned long prot,
- 	unsigned long flag, unsigned long pgoff);
---- linux-2.6.13/fs/binfmt_elf.c.vdso
-+++ linux-2.6.13/fs/binfmt_elf.c
-@@ -1001,8 +1001,6 @@ static int load_elf_binary(struct linux_
++struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
++{
++	return NULL;
++}
+Index: linux/fs/binfmt_elf.c
+===================================================================
+--- linux.orig/fs/binfmt_elf.c
++++ linux/fs/binfmt_elf.c
+@@ -1006,8 +1006,6 @@ static int load_elf_binary(struct linux_
  		elf_entry = loc->elf_ex.e_entry;
  	}
  
@@ -60,7 +128,7 @@
  	if (interpreter_type != INTERPRETER_AOUT)
  		sys_close(elf_exec_fileno);
  
-@@ -1012,17 +1010,11 @@ static int load_elf_binary(struct linux_
+@@ -1017,17 +1015,11 @@ static int load_elf_binary(struct linux_
  	retval = arch_setup_additional_pages(bprm, executable_stack);
  	if (retval < 0) {
  		send_sig(SIGKILL, current, 0);
@@ -80,7 +148,7 @@
  
  	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
-@@ -1227,6 +1219,9 @@ static int maydump(struct vm_area_struct
+@@ -1231,6 +1223,9 @@ static int maydump(struct vm_area_struct
  	if (vma->vm_flags & (VM_IO | VM_RESERVED))
  		return 0;
  
@@ -90,9 +158,11 @@
  	/* Dump shared memory only if mapped from an anonymous file.  */
  	if (vma->vm_flags & VM_SHARED)
  		return vma->vm_file->f_dentry->d_inode->i_nlink == 0;
---- linux-2.6.13/fs/proc/task_mmu.c.vdso
-+++ linux-2.6.13/fs/proc/task_mmu.c
-@@ -156,14 +156,19 @@ static int show_map_internal(struct seq_
+Index: linux/fs/proc/task_mmu.c
+===================================================================
+--- linux.orig/fs/proc/task_mmu.c
++++ linux/fs/proc/task_mmu.c
+@@ -173,14 +173,19 @@ static int show_map_internal(struct seq_
  			if (vma->vm_end == mm->brk) {
  				pad_len_spaces(m, len);
  				seq_puts(m, "[heap]");
@@ -114,9 +184,96 @@
  		} else {
  			pad_len_spaces(m, len);
  			seq_puts(m, "[vdso]");
---- linux-2.6.13/mm/mmap.c.vdso
-+++ linux-2.6.13/mm/mmap.c
-@@ -2155,3 +2155,81 @@ int may_expand_vm(struct mm_struct *mm, 
+Index: linux/include/asm-i386/elf.h
+===================================================================
+--- linux.orig/include/asm-i386/elf.h
++++ linux/include/asm-i386/elf.h
+@@ -148,6 +148,12 @@ do {									\
+ 	}								\
+ } while (0)
+ 
++#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
++struct linux_binprm;
++extern int arch_setup_additional_pages(struct linux_binprm *bprm,
++				       int executable_stack);
++
++#if 0	/* Disabled for exec-shield, where a normal vma holds the vDSO.  */
+ /*
+  * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
+  * extra segments containing the vsyscall DSO contents.  Dumping its
+@@ -191,6 +197,7 @@ do {									      \
+ 				   PAGE_ALIGN(vsyscall_phdrs[i].p_memsz));    \
+ 	}								      \
+ } while (0)
++#endif
+ 
+ #endif
+ 
+Index: linux/include/asm-i386/page.h
+===================================================================
+--- linux.orig/include/asm-i386/page.h
++++ linux/include/asm-i386/page.h
+@@ -118,6 +118,11 @@ extern int page_is_ram(unsigned long pag
+ #endif
+ #define __KERNEL_START		(__PAGE_OFFSET + __PHYSICAL_START)
+ 
++/*
++ * Under exec-shield we don't use the generic fixmap gate area.
++ * The vDSO ("gate area") has a normal vma found the normal ways.
++ */
++#define __HAVE_ARCH_GATE_AREA	1
+ 
+ #define PAGE_OFFSET		((unsigned long)__PAGE_OFFSET)
+ #define VMALLOC_RESERVE		((unsigned long)__VMALLOC_RESERVE)
+Index: linux/include/linux/mm.h
+===================================================================
+--- linux.orig/include/linux/mm.h
++++ linux/include/linux/mm.h
+@@ -923,6 +923,11 @@ static inline unsigned long get_unmapped
+ 	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);
+ }
+ 
++extern int install_special_mapping(struct mm_struct *mm,
++				   unsigned long addr, unsigned long len,
++				   unsigned long vm_flags, pgprot_t pgprot,
++				   struct page **pages);
++
+ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+ 	unsigned long len, unsigned long prot,
+ 	unsigned long flag, unsigned long pgoff);
+Index: linux/kernel/sysctl.c
+===================================================================
+--- linux.orig/kernel/sysctl.c
++++ linux/kernel/sysctl.c
+@@ -77,7 +77,7 @@ extern int proc_unknown_nmi_panic(ctl_ta
+ 				  void __user *, size_t *, loff_t *);
+ #endif
+ 
+-extern unsigned int vdso_enabled;
++extern unsigned int vdso_enabled, vdso_populate;
+ 
+ int exec_shield = 1;
+ 
+@@ -317,6 +317,14 @@ static ctl_table kern_table[] = {
+ 		.mode		= 0644,
+ 		.proc_handler	= &proc_dointvec,
+ 	},
++	{
++		.ctl_name	= KERN_VDSO,
++		.procname	= "vdso_populate",
++		.data		= &vdso_populate,
++		.maxlen		= sizeof(int),
++		.mode		= 0644,
++		.proc_handler	= &proc_dointvec,
++	},
+ #endif
+ 	{
+ 		.ctl_name	= KERN_CORE_USES_PID,
+Index: linux/mm/mmap.c
+===================================================================
+--- linux.orig/mm/mmap.c
++++ linux/mm/mmap.c
+@@ -2149,3 +2149,81 @@ int may_expand_vm(struct mm_struct *mm, 
  		return 0;
  	return 1;
  }
@@ -198,134 +355,3 @@
 +
 +	return err;
 +}
---- linux-2.6.13/arch/i386/kernel/sysenter.c.vdso
-+++ linux-2.6.13/arch/i386/kernel/sysenter.c
-@@ -47,20 +47,13 @@ void enable_sep_cpu(void)
- extern const char vsyscall_int80_start, vsyscall_int80_end;
- extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
- 
--struct page *sysenter_page;
-+static struct page *sysenter_pages[2];
- 
- int __init sysenter_setup(void)
- {
- 	void *page = (void *)get_zeroed_page(GFP_ATOMIC);
- 
--	/*
--	 * We keep this page mapped readonly, even though the executable
--	 * portion is randomized into a userspace vma - so that we dont
--	 * have to fix up the data within the VDSO page every time we
--	 * exec().
--	 */
--	__set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_KERNEL_RO);
--	sysenter_page = virt_to_page(page);
-+	sysenter_pages[0] = virt_to_page(page);
- 
- 	if (!boot_cpu_has(X86_FEATURE_SEP)) {
- 		memcpy(page,
-@@ -78,37 +71,60 @@ int __init sysenter_setup(void)
- 
- extern void SYSENTER_RETURN_OFFSET;
- 
--unsigned int vdso_enabled = 0;
-+unsigned int vdso_enabled = 1;
- 
--void map_vsyscall(void)
-+/*
-+ * This is called from binfmt_elf, we create the special vma for the
-+ * vDSO and insert it into the mm struct tree.
-+ */
-+int arch_setup_additional_pages(struct linux_binprm *bprm,
-+				int executable_stack)
- {
- 	struct thread_info *ti = current_thread_info();
--	struct vm_area_struct *vma;
--	unsigned long addr;
-+	unsigned long addr, len;
-+	int err;
- 
--	if (unlikely(!vdso_enabled)) {
- 		current->mm->context.vdso = NULL;
--		return;
--	}
-+	if (unlikely(!vdso_enabled) || unlikely(!sysenter_pages[0]))
-+		return 0;
- 
- 	/*
- 	 * Map the vDSO (it will be randomized):
- 	 */
- 	down_write(&current->mm->mmap_sem);
--	addr = do_mmap(NULL, 0, 4096, PROT_READ | PROT_EXEC, MAP_PRIVATE, 0);
--	current->mm->context.vdso = (void *)addr;
--	ti->sysenter_return = (void *)addr + (long)&SYSENTER_RETURN_OFFSET;
--	if (addr != -1) {
--		vma = find_vma(current->mm, addr);
--		if (vma) {
--			pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
--			get_page(sysenter_page);
--			install_page(current->mm, vma, addr,
--					sysenter_page, vma->vm_page_prot);
--			
-+	len = PAGE_SIZE > ELF_EXEC_PAGESIZE ? PAGE_SIZE : ELF_EXEC_PAGESIZE;
-+	addr = get_unmapped_area_prot(NULL, 0, len, 0,
-+				      MAP_PRIVATE, PROT_READ | PROT_EXEC);
-+	if (unlikely(addr & ~PAGE_MASK)) {
-+		up_write(&current->mm->mmap_sem);
-+		return addr;
- 		}
-+	err = install_special_mapping(current->mm, addr, len,
-+				      VM_DONTEXPAND | VM_READ | VM_EXEC |
-+				      VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
-+				      PAGE_READONLY_EXEC,
-+				      sysenter_pages);
-+	if (likely(err == 0)) {
-+		current->mm->context.vdso = (void *)addr;
-+		ti->sysenter_return = &SYSENTER_RETURN_OFFSET + addr;
- 	}
- 	up_write(&current->mm->mmap_sem);
-+	return err;
-+}
-+
-+int in_gate_area_no_task(unsigned long addr)
-+{
-+	return 0;
-+}
-+
-+int in_gate_area(struct task_struct *task, unsigned long addr)
-+{
-+	return 0;
-+}
-+
-+struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
-+{
-+	return NULL;
- }
- 
- static int __init vdso_setup(char *str)
---- linux-2.6.13/kernel/sysctl.c
-+++ linux-2.6.13/kernel/sysctl.c
-@@ -74,7 +74,7 @@ extern int proc_unknown_nmi_panic(ctl_ta
- 				  void __user *, size_t *, loff_t *);
- #endif
- 
--extern unsigned int vdso_enabled;
-+extern unsigned int vdso_enabled, vdso_populate;
- 
- int exec_shield = 1;
- 
-@@ -316,6 +316,14 @@ static ctl_table kern_table[] = {
- 		.mode		= 0644,
- 		.proc_handler	= &proc_dointvec,
- 	},
-+	{
-+		.ctl_name	= KERN_VDSO,
-+		.procname	= "vdso_populate",
-+		.data		= &vdso_populate,
-+		.maxlen		= sizeof(int),
-+		.mode		= 0644,
-+		.proc_handler	= &proc_dointvec,
-+	},
- #endif
- 	{
- 		.ctl_name	= KERN_CORE_USES_PID,
-

linux-2.6-execshield.patch:
 arch/i386/kernel/asm-offsets.c       |    1 
 arch/i386/kernel/cpu/common.c        |    7 +
 arch/i386/kernel/entry.S             |    8 +-
 arch/i386/kernel/process.c           |   59 +++++++++++++++
 arch/i386/kernel/signal.c            |    4 -
 arch/i386/kernel/smp.c               |    3 
 arch/i386/kernel/sysenter.c          |   56 ++++++++++++++-
 arch/i386/kernel/traps.c             |   93 ++++++++++++++++++++++++-
 arch/i386/kernel/vsyscall-sysenter.S |    6 -
 arch/i386/kernel/vsyscall.lds.S      |    4 -
 arch/i386/mm/init.c                  |    6 +
 arch/i386/mm/mmap.c                  |    6 +
 arch/ia64/ia32/binfmt_elf32.c        |    2 
 arch/x86_64/ia32/ia32_binfmt.c       |    4 -
 arch/x86_64/kernel/process.c         |    6 -
 arch/x86_64/kernel/setup64.c         |   23 ------
 arch/x86_64/mm/fault.c               |    2 
 drivers/char/random.c                |    7 +
 fs/binfmt_elf.c                      |  130 ++++++++++++++++++++++++++++-------
 fs/proc/array.c                      |    8 +-
 fs/proc/base.c                       |    4 -
 fs/proc/task_mmu.c                   |   25 +++++-
 include/asm-i386/desc.h              |   14 +++
 include/asm-i386/elf.h               |   42 +++++++----
 include/asm-i386/mmu.h               |    6 +
 include/asm-i386/pgalloc.h           |    1 
 include/asm-i386/processor.h         |    7 +
 include/asm-i386/thread_info.h       |    1 
 include/asm-ia64/pgalloc.h           |    4 +
 include/asm-powerpc/pgalloc.h        |    5 +
 include/asm-ppc/pgalloc.h            |    5 +
 include/asm-s390/pgalloc.h           |    4 +
 include/asm-sparc/pgalloc.h          |    4 +
 include/asm-sparc64/pgalloc.h        |    4 +
 include/asm-x86_64/pgalloc.h         |    7 +
 include/asm-x86_64/pgtable.h         |    2 
 include/asm-x86_64/processor.h       |    2 
 include/linux/mm.h                   |   11 ++
 include/linux/resource.h             |    5 +
 include/linux/sched.h                |    9 ++
 include/linux/sysctl.h               |    3 
 kernel/signal.c                      |   38 ++++++++++
 kernel/sysctl.c                      |   39 ++++++++++
 mm/fremap.c                          |   16 ++--
 mm/mmap.c                            |  105 ++++++++++++++++++++++++++--
 mm/mprotect.c                        |    5 +
 mm/mremap.c                          |    4 -
 47 files changed, 684 insertions(+), 123 deletions(-)

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-execshield.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-execshield.patch	9 Jan 2006 20:42:13 -0000	1.3
+++ linux-2.6-execshield.patch	26 Jan 2006 22:14:33 -0000	1.4
@@ -1,6 +1,58 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/asm-offsets.c linux-810/arch/i386/kernel/asm-offsets.c
---- linux-804/arch/i386/kernel/asm-offsets.c
-+++ linux-810/arch/i386/kernel/asm-offsets.c
+ arch/i386/kernel/asm-offsets.c       |    1 
+ arch/i386/kernel/cpu/common.c        |    7 +
+ arch/i386/kernel/entry.S             |    8 +-
+ arch/i386/kernel/process.c           |   59 +++++++++++++++
+ arch/i386/kernel/signal.c            |    4 -
+ arch/i386/kernel/smp.c               |    3 
+ arch/i386/kernel/sysenter.c          |   56 ++++++++++++++-
+ arch/i386/kernel/traps.c             |   93 ++++++++++++++++++++++++-
+ arch/i386/kernel/vsyscall-sysenter.S |    6 -
+ arch/i386/kernel/vsyscall.lds.S      |    4 -
+ arch/i386/mm/init.c                  |    6 +
+ arch/i386/mm/mmap.c                  |    6 +
+ arch/ia64/ia32/binfmt_elf32.c        |    2 
+ arch/x86_64/ia32/ia32_binfmt.c       |    4 -
+ arch/x86_64/kernel/process.c         |    6 -
+ arch/x86_64/kernel/setup64.c         |   23 ------
+ arch/x86_64/mm/Makefile              |    2 
+ arch/x86_64/mm/fault.c               |    2 
+ arch/x86_64/mm/mmap.c                |   95 +++++++++++++++++++++++++
+ drivers/char/random.c                |    7 +
+ fs/binfmt_elf.c                      |  130 ++++++++++++++++++++++++++++-------
+ fs/proc/array.c                      |    8 +-
+ fs/proc/base.c                       |    4 -
+ fs/proc/task_mmu.c                   |   25 +++++-
+ include/asm-i386/desc.h              |   14 +++
+ include/asm-i386/elf.h               |   42 +++++++----
+ include/asm-i386/mmu.h               |    6 +
+ include/asm-i386/pgalloc.h           |    1 
+ include/asm-i386/processor.h         |    8 +-
+ include/asm-i386/thread_info.h       |    1 
+ include/asm-ia64/pgalloc.h           |    4 +
+ include/asm-powerpc/pgalloc.h        |    5 +
+ include/asm-ppc/pgalloc.h            |    5 +
+ include/asm-s390/pgalloc.h           |    4 +
+ include/asm-sparc/pgalloc.h          |    4 +
+ include/asm-sparc64/pgalloc.h        |    4 +
+ include/asm-x86_64/pgalloc.h         |    7 +
+ include/asm-x86_64/pgtable.h         |    2 
+ include/asm-x86_64/processor.h       |    5 +
+ include/linux/mm.h                   |   11 ++
+ include/linux/resource.h             |    5 +
+ include/linux/sched.h                |    9 ++
+ include/linux/sysctl.h               |    3 
+ kernel/signal.c                      |   38 ++++++++++
+ kernel/sysctl.c                      |   39 ++++++++++
+ mm/fremap.c                          |   16 ++--
+ mm/mmap.c                            |  105 ++++++++++++++++++++++++++--
+ mm/mprotect.c                        |    5 +
+ mm/mremap.c                          |    4 -
+ 49 files changed, 784 insertions(+), 124 deletions(-)
+
+Index: linux/arch/i386/kernel/asm-offsets.c
+===================================================================
+--- linux.orig/arch/i386/kernel/asm-offsets.c
++++ linux/arch/i386/kernel/asm-offsets.c
 @@ -53,6 +53,7 @@ void foo(void)
  	OFFSET(TI_preempt_count, thread_info, preempt_count);
  	OFFSET(TI_addr_limit, thread_info, addr_limit);
@@ -9,9 +61,28 @@
  	BLANK();
  
  	OFFSET(EXEC_DOMAIN_handler, exec_domain, handler);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/entry.S linux-810/arch/i386/kernel/entry.S
---- linux-804/arch/i386/kernel/entry.S
-+++ linux-810/arch/i386/kernel/entry.S
+Index: linux/arch/i386/kernel/cpu/common.c
+===================================================================
+--- linux.orig/arch/i386/kernel/cpu/common.c
++++ linux/arch/i386/kernel/cpu/common.c
+@@ -392,6 +392,13 @@ void __devinit identify_cpu(struct cpuin
+ 	if (disable_pse)
+ 		clear_bit(X86_FEATURE_PSE, c->x86_capability);
+ 
++	if (exec_shield != 0) {
++#ifdef CONFIG_HIGHMEM64G   /* NX implies PAE */
++		if (!test_bit(X86_FEATURE_NX, c->x86_capability))
++#endif
++		clear_bit(X86_FEATURE_SEP, c->x86_capability);
++	}
++
+ 	/* If the model name is still unset, do table lookup. */
+ 	if ( !c->x86_model_id[0] ) {
+ 		char *p;
+Index: linux/arch/i386/kernel/entry.S
+===================================================================
+--- linux.orig/arch/i386/kernel/entry.S
++++ linux/arch/i386/kernel/entry.S
 @@ -184,8 +184,12 @@ sysenter_past_esp:
  	pushl %ebp
  	pushfl
@@ -27,10 +98,11 @@
  /*
   * Load the potential sixth argument from user stack.
   * Careful about security.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/process.c linux-810/arch/i386/kernel/process.c
---- linux-804/arch/i386/kernel/process.c
-+++ linux-810/arch/i386/kernel/process.c
-@@ -676,6 +676,8 @@ struct task_struct fastcall * __switch_t
+Index: linux/arch/i386/kernel/process.c
+===================================================================
+--- linux.orig/arch/i386/kernel/process.c
++++ linux/arch/i386/kernel/process.c
+@@ -652,6 +652,8 @@ struct task_struct fastcall * __switch_t
  	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
  	__unlazy_fpu(prev_p);
@@ -39,7 +111,7 @@
  
  	/*
  	 * Reload esp0.
-@@ -949,3 +951,60 @@ unsigned long arch_align_stack(unsigned 
+@@ -925,3 +927,60 @@ unsigned long arch_align_stack(unsigned 
  		sp -= get_random_int() % 8192;
  	return sp & ~0xf;
  }
@@ -100,10 +172,11 @@
 +		current->mm->brk = new_brk;
 +}
 +
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/signal.c linux-810/arch/i386/kernel/signal.c
---- linux-804/arch/i386/kernel/signal.c
-+++ linux-810/arch/i386/kernel/signal.c
-@@ -380,7 +380,7 @@ static int setup_frame(int sig, struct k
+Index: linux/arch/i386/kernel/signal.c
+===================================================================
+--- linux.orig/arch/i386/kernel/signal.c
++++ linux/arch/i386/kernel/signal.c
+@@ -384,7 +384,7 @@ static int setup_frame(int sig, struct k
  			goto give_sigsegv;
  	}
  
@@ -112,7 +185,7 @@
  	if (ka->sa.sa_flags & SA_RESTORER)
  		restorer = ka->sa.sa_restorer;
  
-@@ -476,7 +476,7 @@ static int setup_rt_frame(int sig, struc
+@@ -480,7 +480,7 @@ static int setup_rt_frame(int sig, struc
  		goto give_sigsegv;
  
  	/* Set up to return from userspace.  */
@@ -121,10 +194,11 @@
  	if (ka->sa.sa_flags & SA_RESTORER)
  		restorer = ka->sa.sa_restorer;
  	err |= __put_user(restorer, &frame->pretcode);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/smp.c linux-810/arch/i386/kernel/smp.c
---- linux-804/arch/i386/kernel/smp.c
-+++ linux-810/arch/i386/kernel/smp.c
-@@ -24,6 +24,7 @@
+Index: linux/arch/i386/kernel/smp.c
+===================================================================
+--- linux.orig/arch/i386/kernel/smp.c
++++ linux/arch/i386/kernel/smp.c
+@@ -23,6 +23,7 @@
  
  #include <asm/mtrr.h>
  #include <asm/tlbflush.h>
@@ -132,7 +206,7 @@
  #include <mach_apic.h>
  
  /*
-@@ -315,6 +316,8 @@ fastcall void smp_invalidate_interrupt(s
+@@ -314,6 +315,8 @@ fastcall void smp_invalidate_interrupt(s
  	unsigned long cpu;
  
  	cpu = get_cpu();
@@ -141,9 +215,10 @@
  
  	if (!cpu_isset(cpu, flush_cpumask))
  		goto out;
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/sysenter.c linux-810/arch/i386/kernel/sysenter.c
---- linux-804/arch/i386/kernel/sysenter.c
-+++ linux-810/arch/i386/kernel/sysenter.c
+Index: linux/arch/i386/kernel/sysenter.c
+===================================================================
+--- linux.orig/arch/i386/kernel/sysenter.c
++++ linux/arch/i386/kernel/sysenter.c
 @@ -13,6 +13,7 @@
  #include <linux/gfp.h>
  #include <linux/string.h>
@@ -152,6 +227,15 @@
  
  #include <asm/cpufeature.h>
  #include <asm/msr.h>
+@@ -36,7 +37,7 @@ void enable_sep_cpu(void)
+ 	wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
+ 	wrmsr(MSR_IA32_SYSENTER_ESP, tss->esp1, 0);
+ 	wrmsr(MSR_IA32_SYSENTER_EIP, (unsigned long) sysenter_entry, 0);
+-	put_cpu();	
++	put_cpu();
+ }
+ 
+ /*
 @@ -46,11 +47,20 @@ void enable_sep_cpu(void)
  extern const char vsyscall_int80_start, vsyscall_int80_end;
  extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
@@ -174,7 +258,7 @@
  
  	if (!boot_cpu_has(X86_FEATURE_SEP)) {
  		memcpy(page,
-@@ -65,3 +75,46 @@ int __init sysenter_setup(void)
+@@ -65,3 +75,45 @@ int __init sysenter_setup(void)
  
  	return 0;
  }
@@ -208,7 +292,6 @@
 +			get_page(sysenter_page);
 +			install_page(current->mm, vma, addr,
 +					sysenter_page, vma->vm_page_prot);
-+			
 +		}
 +	}
 +	up_write(&current->mm->mmap_sem);
@@ -221,10 +304,11 @@
 +}
 +__setup("vdso=", vdso_setup);
 +
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/traps.c linux-810/arch/i386/kernel/traps.c
---- linux-804/arch/i386/kernel/traps.c
-+++ linux-810/arch/i386/kernel/traps.c
-@@ -458,13 +458,89 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
+Index: linux/arch/i386/kernel/traps.c
+===================================================================
+--- linux.orig/arch/i386/kernel/traps.c
++++ linux/arch/i386/kernel/traps.c
+@@ -461,7 +461,82 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
  DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
  DO_ERROR(12, SIGBUS,  "stack segment", stack_segment)
  DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
@@ -308,14 +392,15 @@
  
  fastcall void __kprobes do_general_protection(struct pt_regs * regs,
  					      long error_code)
- {
+@@ -469,6 +544,7 @@ fastcall void __kprobes do_general_prote
  	int cpu = get_cpu();
  	struct tss_struct *tss = &per_cpu(init_tss, cpu);
  	struct thread_struct *thread = &current->thread;
 +	int ok;
  
  	/*
-@@ -490,7 +566,6 @@ fastcall void do_general_protection(stru
+ 	 * Perform the lazy TSS's I/O bitmap copy. If the TSS has an
+@@ -495,7 +571,6 @@ fastcall void __kprobes do_general_prote
  		put_cpu();
  		return;
  	}
@@ -323,7 +408,7 @@
  
  	current->thread.error_code = error_code;
  	current->thread.trap_no = 13;
-@@ -501,17 +576,31 @@ fastcall void do_general_protection(stru
+@@ -506,17 +581,31 @@ fastcall void __kprobes do_general_prote
  	if (!user_mode(regs))
  		goto gp_in_kernel;
  
@@ -355,9 +440,29 @@
  	if (!fixup_exception(regs)) {
  		if (notify_die(DIE_GPF, "general protection fault", regs,
  				error_code, 13, SIGSEGV) == NOTIFY_STOP)
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/vsyscall.lds.S linux-810/arch/i386/kernel/vsyscall.lds.S
---- linux-804/arch/i386/kernel/vsyscall.lds.S
-+++ linux-810/arch/i386/kernel/vsyscall.lds.S
+Index: linux/arch/i386/kernel/vsyscall-sysenter.S
+===================================================================
+--- linux.orig/arch/i386/kernel/vsyscall-sysenter.S
++++ linux/arch/i386/kernel/vsyscall-sysenter.S
+@@ -24,11 +24,11 @@ __kernel_vsyscall:
+ 	/* 7: align return point with nop's to make disassembly easier */
+ 	.space 7,0x90
+ 
+-	/* 14: System call restart point is here! (SYSENTER_RETURN - 2) */
++	/* 14: System call restart point is here! (SYSENTER_RETURN_OFFSET-2) */
+ 	jmp .Lenter_kernel
+ 	/* 16: System call normal return point is here! */
+-	.globl SYSENTER_RETURN	/* Symbol used by entry.S.  */
+-SYSENTER_RETURN:
++	.globl SYSENTER_RETURN_OFFSET	/* Symbol used by sysenter.c  */
++SYSENTER_RETURN_OFFSET:
+ 	pop %ebp
+ .Lpop_ebp:
+ 	pop %edx
+Index: linux/arch/i386/kernel/vsyscall.lds.S
+===================================================================
+--- linux.orig/arch/i386/kernel/vsyscall.lds.S
++++ linux/arch/i386/kernel/vsyscall.lds.S
 @@ -7,7 +7,7 @@
  
  SECTIONS
@@ -376,28 +481,11 @@
  
    .text           : { *(.text) }		:text =0x90909090
    .note		  : { *(.note.*) }		:text :note
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/vsyscall-sysenter.S linux-810/arch/i386/kernel/vsyscall-sysenter.S
---- linux-804/arch/i386/kernel/vsyscall-sysenter.S
-+++ linux-810/arch/i386/kernel/vsyscall-sysenter.S
-@@ -24,11 +24,11 @@ __kernel_vsyscall:
- 	/* 7: align return point with nop's to make disassembly easier */
- 	.space 7,0x90
- 
--	/* 14: System call restart point is here! (SYSENTER_RETURN - 2) */
-+	/* 14: System call restart point is here! (SYSENTER_RETURN_OFFSET-2) */
- 	jmp .Lenter_kernel
- 	/* 16: System call normal return point is here! */
--	.globl SYSENTER_RETURN	/* Symbol used by entry.S.  */
--SYSENTER_RETURN:
-+	.globl SYSENTER_RETURN_OFFSET	/* Symbol used by sysenter.c  */
-+SYSENTER_RETURN_OFFSET:
- 	pop %ebp
- .Lpop_ebp:
- 	pop %edx
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/mm/init.c linux-810/arch/i386/mm/init.c
---- linux-804/arch/i386/mm/init.c
-+++ linux-810/arch/i386/mm/init.c
-@@ -401,7 +401,7 @@ u64 __supported_pte_mask = ~_PAGE_NX;
+Index: linux/arch/i386/mm/init.c
+===================================================================
+--- linux.orig/arch/i386/mm/init.c
++++ linux/arch/i386/mm/init.c
+@@ -432,7 +432,7 @@ u64 __supported_pte_mask __read_mostly =
   * Control non executable mappings.
   *
   * on      Enable
@@ -406,7 +494,7 @@
   */
  void __init noexec_setup(const char *str)
  {
-@@ -411,6 +411,7 @@ void __init noexec_setup(const char *str
+@@ -442,6 +442,7 @@ void __init noexec_setup(const char *str
  	} else if (!strncmp(str,"off",3)) {
  		disable_nx = 1;
  		__supported_pte_mask &= ~_PAGE_NX;
@@ -414,7 +502,7 @@
  	}
  }
  
-@@ -475,7 +476,10 @@ void __init paging_init(void)
+@@ -506,7 +507,10 @@ void __init paging_init(void)
  	set_nx();
  	if (nx_enabled)
  		printk("NX (Execute Disable) protection: active\n");
@@ -425,9 +513,10 @@
  
  	pagetable_init();
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/mm/mmap.c linux-810/arch/i386/mm/mmap.c
---- linux-804/arch/i386/mm/mmap.c
-+++ linux-810/arch/i386/mm/mmap.c
+Index: linux/arch/i386/mm/mmap.c
+===================================================================
+--- linux.orig/arch/i386/mm/mmap.c
++++ linux/arch/i386/mm/mmap.c
 @@ -62,15 +62,17 @@ void arch_pick_mmap_layout(struct mm_str
  	 * Fall back to the standard layout if the personality
  	 * bit is set, or if the expected stack growth is unlimited:
@@ -448,10 +537,11 @@
  		mm->unmap_area = arch_unmap_area_topdown;
  	}
  }
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/ia64/ia32/binfmt_elf32.c linux-810/arch/ia64/ia32/binfmt_elf32.c
---- linux-804/arch/ia64/ia32/binfmt_elf32.c
-+++ linux-810/arch/ia64/ia32/binfmt_elf32.c
-@@ -272,7 +272,7 @@ elf32_set_personality (void)
+Index: linux/arch/ia64/ia32/binfmt_elf32.c
+===================================================================
+--- linux.orig/arch/ia64/ia32/binfmt_elf32.c
++++ linux/arch/ia64/ia32/binfmt_elf32.c
+@@ -264,7 +264,7 @@ elf32_set_personality (void)
  }
  
  static unsigned long
@@ -460,36 +550,92 @@
  {
  	unsigned long pgoff = (eppnt->p_vaddr) & ~IA32_PAGE_MASK;
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/ia32/ia32_binfmt.c linux-810/arch/x86_64/ia32/ia32_binfmt.c
---- linux-804/arch/x86_64/ia32/ia32_binfmt.c
-+++ linux-810/arch/x86_64/ia32/ia32_binfmt.c
-@@ -396,7 +396,7 @@ int setup_arg_pages(struct linux_binprm 
+Index: linux/arch/x86_64/ia32/ia32_binfmt.c
+===================================================================
+--- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
++++ linux/arch/x86_64/ia32/ia32_binfmt.c
+@@ -248,8 +248,6 @@ elf_core_copy_task_xfpregs(struct task_s
+ #define elf_check_arch(x) \
+ 	((x)->e_machine == EM_386)
+ 
+-extern int force_personality32;
+-
+ #define ELF_EXEC_PAGESIZE PAGE_SIZE
+ #define ELF_HWCAP (boot_cpu_data.x86_capability[0])
+ #define ELF_PLATFORM  ("i686")
+@@ -263,8 +261,6 @@ do {							\
+ 		set_thread_flag(TIF_ABI_PENDING);		\
+ 	else							\
+ 		clear_thread_flag(TIF_ABI_PENDING);		\
+-	/* XXX This overwrites the user set personality */	\
+-	current->personality |= force_personality32;		\
+ } while (0)
+ 
+ /* Override some function names */
+Index: linux/arch/x86_64/kernel/process.c
+===================================================================
+--- linux.orig/arch/x86_64/kernel/process.c
++++ linux/arch/x86_64/kernel/process.c
+@@ -631,12 +631,6 @@ void set_personality_64bit(void)
+ 
+ 	/* Make sure to be in 64bit mode */
+ 	clear_thread_flag(TIF_IA32); 
+-
+-	/* TBD: overwrites user setup. Should have two bits.
+-	   But 64bit processes have always behaved this way,
+-	   so it's not too bad. The main problem is just that
+-   	   32bit childs are affected again. */
+-	current->personality &= ~READ_IMPLIES_EXEC;
  }
  
- static unsigned long
--elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type)
-+elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type, unsigned long unused)
+ asmlinkage long sys_fork(struct pt_regs *regs)
+Index: linux/arch/x86_64/kernel/setup64.c
+===================================================================
+--- linux.orig/arch/x86_64/kernel/setup64.c
++++ linux/arch/x86_64/kernel/setup64.c
+@@ -45,7 +45,7 @@ Control non executable mappings for 64bi
+ on	Enable(default)
+ off	Disable
+ */ 
+-int __init nonx_setup(char *str)
++void __init nonx_setup(const char *str)
  {
- 	unsigned long map_addr;
- 	struct task_struct *me = current; 
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/kernel/process.c linux-810/arch/x86_64/kernel/process.c
---- linux-804/arch/x86_64/kernel/process.c
-+++ linux-810/arch/x86_64/kernel/process.c
-@@ -833,10 +833,3 @@ int dump_task_regs(struct task_struct *t
-  
- 	return 1;
- }
+ 	if (!strncmp(str, "on", 2)) {
+                 __supported_pte_mask |= _PAGE_NX; 
+@@ -54,28 +54,7 @@ int __init nonx_setup(char *str)
+ 		do_not_nx = 1;
+ 		__supported_pte_mask &= ~_PAGE_NX;
+         }
+-	return 0;
+-} 
+-__setup("noexec=", nonx_setup);	/* parsed early actually */
 -
--unsigned long arch_align_stack(unsigned long sp)
+-int force_personality32 = READ_IMPLIES_EXEC;
+-
+-/* noexec32=on|off
+-Control non executable heap for 32bit processes.
+-To control the stack too use noexec=off
+-
+-on	PROT_READ does not imply PROT_EXEC for 32bit processes
+-off	PROT_READ implies PROT_EXEC (default)
+-*/
+-static int __init nonx32_setup(char *str)
 -{
--	if (randomize_va_space)
--		sp -= get_random_int() % 8192;
--	return sp & ~0xf;
--}
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/fault.c linux-810/arch/x86_64/mm/fault.c
---- linux-804/arch/x86_64/mm/fault.c
-+++ linux-810/arch/x86_64/mm/fault.c
-@@ -73,7 +73,7 @@ static noinline int is_prefetch(struct p
+-	if (!strcmp(str, "on"))
+-		force_personality32 &= ~READ_IMPLIES_EXEC;
+-	else if (!strcmp(str, "off"))
+-		force_personality32 |= READ_IMPLIES_EXEC;
+-	return 0;
+ }
+-__setup("noexec32=", nonx32_setup);
+ 
+ /*
+  * Great future plan:
+Index: linux/arch/x86_64/mm/fault.c
+===================================================================
+--- linux.orig/arch/x86_64/mm/fault.c
++++ linux/arch/x86_64/mm/fault.c
+@@ -74,7 +74,7 @@ static noinline int is_prefetch(struct p
  	instr = (unsigned char *)convert_rip_to_linear(current, regs);
  	max_instr = instr + 15;
  
@@ -498,121 +644,11 @@
  		return 0;
  
  	while (scan_more && instr < max_instr) { 
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/Makefile linux-810/arch/x86_64/mm/Makefile
---- linux-804/arch/x86_64/mm/Makefile
-+++ linux-810/arch/x86_64/mm/Makefile
-@@ -2,7 +2,7 @@
- # Makefile for the linux x86_64-specific parts of the memory manager.
- #
- 
--obj-y	 := init.o fault.o ioremap.o extable.o pageattr.o
-+obj-y	 := init.o fault.o ioremap.o extable.o pageattr.o mmap.o
- obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
- obj-$(CONFIG_NUMA) += numa.o
- obj-$(CONFIG_K8_NUMA) += k8topology.o
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/mmap.c linux-810/arch/x86_64/mm/mmap.c
---- linux-804/arch/x86_64/mm/mmap.c
-+++ linux-810/arch/x86_64/mm/mmap.c
-@@ -0,0 +1,95 @@
-+/*
-+ *  linux/arch/x86-64/mm/mmap.c
-+ *
-+ *  flexible mmap layout support
-+ *
-+ * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
-+ * All Rights Reserved.
-+ *
-+ * This program 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.
-+ *
-+ * 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.
-+ *
-+ * 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
-+ *
-+ *
-+ * Started by Ingo Molnar <mingo at elte.hu>
-+ */
-+
-+#include <linux/personality.h>
-+#include <linux/mm.h>
-+#include <linux/random.h>
-+
-+/*
-+ * Top of mmap area (just below the process stack).
-+ *
-+ * Leave an at least ~128 MB hole.
-+ */
-+#define MIN_GAP (128*1024*1024)
-+#define MAX_GAP (TASK_SIZE/6*5)
-+
-+static inline unsigned long mmap_base(void)
-+{
-+	unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur;
-+
-+	if (gap < MIN_GAP)
-+		gap = MIN_GAP;
-+	else if (gap > MAX_GAP)
-+		gap = MAX_GAP;
-+
-+	return TASK_SIZE - (gap & PAGE_MASK);
-+}
-+
-+static inline int mmap_is_legacy(void)
-+{
-+	/*
-+	 * Force standard allocation for 64 bit programs.
-+	 */
-+	if (!test_thread_flag(TIF_IA32))
-+		return 1;
-+		
-+	if (current->personality & ADDR_COMPAT_LAYOUT) 
-+		return 1;
-+	
-+	if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY)
-+		return 1;
-+		
-+	return sysctl_legacy_va_layout;
-+}
-+
-+/*
-+ * This function, called very early during the creation of a new
-+ * process VM image, sets up which VM layout function to use:
-+ */
-+void arch_pick_mmap_layout(struct mm_struct *mm)
-+{
-+	/*
-+	 * Fall back to the standard layout if the personality
-+	 * bit is set, or if the expected stack growth is unlimited:
-+	 */
-+	if (mmap_is_legacy()) {
-+		mm->mmap_base = TASK_UNMAPPED_BASE;
-+		mm->get_unmapped_area = arch_get_unmapped_area;
-+		mm->unmap_area = arch_unmap_area;
-+	} else {
-+		mm->mmap_base = mmap_base();
-+		mm->get_unmapped_area = arch_get_unmapped_area_topdown;
-+		mm->unmap_area = arch_unmap_area_topdown;
-+	}
-+}
-+
-+unsigned long arch_align_stack(unsigned long sp)
-+{
-+	if (current->flags & PF_RANDOMIZE)
-+		sp -= get_random_int() % 8192;
-+	return sp & ~0xf;
-+}
-+
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/drivers/char/random.c linux-810/drivers/char/random.c
---- linux-804/drivers/char/random.c
-+++ linux-810/drivers/char/random.c
-@@ -1634,13 +1634,18 @@ EXPORT_SYMBOL(secure_dccp_sequence_numbe
+Index: linux/drivers/char/random.c
+===================================================================
+--- linux.orig/drivers/char/random.c
++++ linux/drivers/char/random.c
+@@ -1632,13 +1632,18 @@ EXPORT_SYMBOL(secure_dccp_sequence_numbe
   */
  unsigned int get_random_int(void)
  {
@@ -632,9 +668,10 @@
  }
  
  /*
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/binfmt_elf.c linux-810/fs/binfmt_elf.c
---- linux-804/fs/binfmt_elf.c
-+++ linux-810/fs/binfmt_elf.c
+Index: linux/fs/binfmt_elf.c
+===================================================================
+--- linux.orig/fs/binfmt_elf.c
++++ linux/fs/binfmt_elf.c
 @@ -47,7 +47,7 @@
  
  static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs);
@@ -644,7 +681,7 @@
  extern int dump_fpu (struct pt_regs *, elf_fpregset_t *);
  
  #ifndef elf_addr_t
-@@ -285,20 +285,59 @@ create_elf_tables(struct linux_binprm *b
+@@ -285,26 +285,65 @@ create_elf_tables(struct linux_binprm *b
  #ifndef elf_map
  
  static unsigned long elf_map(struct file *filep, unsigned long addr,
@@ -653,16 +690,26 @@
 +			     unsigned long total_size)
  {
  	unsigned long map_addr;
+-	unsigned long pageoffset = ELF_PAGEOFFSET(eppnt->p_vaddr);
 +	unsigned long size = eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr);
 +	unsigned long off = eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr);
 +
 +	addr = ELF_PAGESTART(addr);
 +	size = ELF_PAGEALIGN(size);
  
- 	down_write(&current->mm->mmap_sem);
--	map_addr = do_mmap(filep, ELF_PAGESTART(addr),
--			   eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr), prot, type,
--			   eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr));
+-	down_write(&current->mm->mmap_sem);
+ 	/* mmap() will return -EINVAL if given a zero size, but a
+ 	 * segment with zero filesize is perfectly valid */
+-	if (eppnt->p_filesz + pageoffset)
+-		map_addr = do_mmap(filep, ELF_PAGESTART(addr),
+-				   eppnt->p_filesz + pageoffset, prot, type,
+-				   eppnt->p_offset - pageoffset);
+-	else
+-		map_addr = ELF_PAGESTART(addr);
++	if (!size)
++		return addr;
++
++	down_write(&current->mm->mmap_sem);
 +
 +	/*
 +	 * total_size is the size of the ELF (interpreter) image.
@@ -679,7 +726,7 @@
 +			do_munmap(current->mm, map_addr+size, total_size-size);
 +	} else
 +		map_addr = do_mmap(filep, addr, size, prot, type, off);
-+		
++
  	up_write(&current->mm->mmap_sem);
 -	return(map_addr);
 +
@@ -706,10 +753,11 @@
 +				ELF_PAGESTART(cmds[first_idx].p_vaddr);
 +}
 +
++
  /* This is much more generalized than the library routine read function,
     so we keep this separate.  Technically the library read function
     is only provided so that we can read a.out libraries that have
-@@ -306,7 +345,8 @@ static unsigned long elf_map(struct file
+@@ -312,7 +351,8 @@ static unsigned long elf_map(struct file
  
  static unsigned long load_elf_interp(struct elfhdr * interp_elf_ex,
  				     struct file * interpreter,
@@ -719,7 +767,7 @@
  {
  	struct elf_phdr *elf_phdata;
  	struct elf_phdr *eppnt;
-@@ -314,6 +354,7 @@ static unsigned long load_elf_interp(str
+@@ -320,6 +360,7 @@ static unsigned long load_elf_interp(str
  	int load_addr_set = 0;
  	unsigned long last_bss = 0, elf_bss = 0;
  	unsigned long error = ~0UL;
@@ -727,7 +775,7 @@
  	int retval, i, size;
  
  	/* First of all, some simple consistency checks */
-@@ -352,6 +393,10 @@ static unsigned long load_elf_interp(str
+@@ -358,6 +399,10 @@ static unsigned long load_elf_interp(str
  		goto out_close;
  	}
  
@@ -738,7 +786,7 @@
  	eppnt = elf_phdata;
  	for (i=0; i<interp_elf_ex->e_phnum; i++, eppnt++) {
  	  if (eppnt->p_type == PT_LOAD) {
-@@ -366,8 +411,11 @@ static unsigned long load_elf_interp(str
+@@ -372,8 +417,11 @@ static unsigned long load_elf_interp(str
  	    vaddr = eppnt->p_vaddr;
  	    if (interp_elf_ex->e_type == ET_EXEC || load_addr_set)
  	    	elf_type |= MAP_FIXED;
@@ -751,7 +799,7 @@
  	    error = map_addr;
  	    if (BAD_ADDR(map_addr))
  	    	goto out_close;
-@@ -527,7 +575,7 @@ static int load_elf_binary(struct linux_
+@@ -533,7 +581,7 @@ static int load_elf_binary(struct linux_
  	unsigned long reloc_func_desc = 0;
  	char passed_fileno[6];
  	struct files_struct *files;
@@ -760,7 +808,7 @@
  	unsigned long def_flags = 0;
  	struct {
  		struct elfhdr elf_ex;
-@@ -683,6 +731,8 @@ static int load_elf_binary(struct linux_
+@@ -689,6 +737,8 @@ static int load_elf_binary(struct linux_
  	}
  
  	elf_ppnt = elf_phdata;
@@ -769,7 +817,7 @@
  	for (i = 0; i < loc->elf_ex.e_phnum; i++, elf_ppnt++)
  		if (elf_ppnt->p_type == PT_GNU_STACK) {
  			if (elf_ppnt->p_flags & PF_X)
-@@ -693,6 +743,11 @@ static int load_elf_binary(struct linux_
+@@ -699,6 +749,11 @@ static int load_elf_binary(struct linux_
  		}
  	have_pt_gnu_stack = (i < loc->elf_ex.e_phnum);
  
@@ -781,7 +829,7 @@
  	/* Some simple consistency checks for the interpreter */
  	if (elf_interpreter) {
  		interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT;
-@@ -746,6 +801,15 @@ static int load_elf_binary(struct linux_
+@@ -752,6 +807,15 @@ static int load_elf_binary(struct linux_
  	if (retval)
  		goto out_free_dentry;
  
@@ -797,7 +845,7 @@
  	/* Discard our unneeded old files struct */
  	if (files) {
  		steal_locks(files);
-@@ -764,7 +828,8 @@ static int load_elf_binary(struct linux_
+@@ -770,7 +834,8 @@ static int load_elf_binary(struct linux_
  	/* Do this immediately, since STACK_TOP as used in setup_arg_pages
  	   may depend on the personality.  */
  	SET_PERSONALITY(loc->elf_ex, ibcs2_interpreter);
@@ -807,7 +855,7 @@
  		current->personality |= READ_IMPLIES_EXEC;
  
  	if ( !(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-@@ -785,10 +850,10 @@ static int load_elf_binary(struct linux_
+@@ -790,10 +855,10 @@ static int load_elf_binary(struct linux_
  	
  	current->mm->start_stack = bprm->p;
  
@@ -821,7 +869,7 @@
  
  	for(i = 0, elf_ppnt = elf_phdata; i < loc->elf_ex.e_phnum; i++, elf_ppnt++) {
  		int elf_prot = 0, elf_flags;
-@@ -832,16 +897,16 @@ static int load_elf_binary(struct linux_
+@@ -837,16 +902,16 @@ static int load_elf_binary(struct linux_
  		elf_flags = MAP_PRIVATE|MAP_DENYWRITE|MAP_EXECUTABLE;
  
  		vaddr = elf_ppnt->p_vaddr;
@@ -845,7 +893,7 @@
  		if (BAD_ADDR(error)) {
  			send_sig(SIGKILL, current, 0);
  			goto out_free_dentry;
-@@ -918,7 +983,8 @@ static int load_elf_binary(struct linux_
+@@ -923,7 +988,8 @@ static int load_elf_binary(struct linux_
  		else
  			elf_entry = load_elf_interp(&loc->interp_elf_ex,
  						    interpreter,
@@ -855,7 +903,7 @@
  		if (BAD_ADDR(elf_entry)) {
  			printk(KERN_ERR "Unable to load interpreter %.128s\n",
  				elf_interpreter);
-@@ -950,6 +1016,14 @@ static int load_elf_binary(struct linux_
+@@ -955,6 +1021,14 @@ static int load_elf_binary(struct linux_
  	}
  #endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */
  
@@ -870,7 +918,7 @@
  	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
  	create_elf_tables(bprm, &loc->elf_ex, (interpreter_type == INTERPRETER_AOUT),
-@@ -963,6 +1037,10 @@ static int load_elf_binary(struct linux_
+@@ -968,6 +1042,10 @@ static int load_elf_binary(struct linux_
  	current->mm->end_data = end_data;
  	current->mm->start_stack = bprm->p;
  
@@ -881,10 +929,11 @@
  	if (current->personality & MMAP_PAGE_ZERO) {
  		/* Why this, you ask???  Well SVr4 maps page 0 as read-only,
  		   and some applications "depend" upon this behavior.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/array.c linux-810/fs/proc/array.c
---- linux-804/fs/proc/array.c
-+++ linux-810/fs/proc/array.c
-@@ -385,8 +385,12 @@ static int do_task_stat(struct task_stru
+Index: linux/fs/proc/array.c
+===================================================================
+--- linux.orig/fs/proc/array.c
++++ linux/fs/proc/array.c
+@@ -391,8 +391,12 @@ static int do_task_stat(struct task_stru
  	ppid = pid_alive(task) ? task->group_leader->real_parent->tgid : 0;
  	read_unlock(&tasklist_lock);
  
@@ -899,10 +948,11 @@
  	if (!whole) {
  		min_flt = task->min_flt;
  		maj_flt = task->maj_flt;
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/base.c linux-810/fs/proc/base.c
---- linux-804/fs/proc/base.c
-+++ linux-810/fs/proc/base.c
-@@ -181,7 +181,7 @@ static struct pid_entry tgid_base_stuff[
+Index: linux/fs/proc/base.c
+===================================================================
+--- linux.orig/fs/proc/base.c
++++ linux/fs/proc/base.c
+@@ -188,7 +188,7 @@ static struct pid_entry tgid_base_stuff[
  	E(PROC_TGID_CMDLINE,   "cmdline", S_IFREG|S_IRUGO),
  	E(PROC_TGID_STAT,      "stat",    S_IFREG|S_IRUGO),
  	E(PROC_TGID_STATM,     "statm",   S_IFREG|S_IRUGO),
@@ -911,7 +961,7 @@
  #ifdef CONFIG_NUMA
  	E(PROC_TGID_NUMA_MAPS, "numa_maps", S_IFREG|S_IRUGO),
  #endif
-@@ -221,7 +221,7 @@ static struct pid_entry tid_base_stuff[]
+@@ -230,7 +230,7 @@ static struct pid_entry tid_base_stuff[]
  	E(PROC_TID_CMDLINE,    "cmdline", S_IFREG|S_IRUGO),
  	E(PROC_TID_STAT,       "stat",    S_IFREG|S_IRUGO),
  	E(PROC_TID_STATM,      "statm",   S_IFREG|S_IRUGO),
@@ -920,9 +970,10 @@
  #ifdef CONFIG_NUMA
  	E(PROC_TID_NUMA_MAPS,  "numa_maps",    S_IFREG|S_IRUGO),
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/task_mmu.c linux-810/fs/proc/task_mmu.c
---- linux-804/fs/proc/task_mmu.c
-+++ linux-810/fs/proc/task_mmu.c
+Index: linux/fs/proc/task_mmu.c
+===================================================================
+--- linux.orig/fs/proc/task_mmu.c
++++ linux/fs/proc/task_mmu.c
 @@ -43,7 +43,11 @@ char *task_mem(struct mm_struct *mm, cha
  		"VmStk:\t%8lu kB\n"
  		"VmExe:\t%8lu kB\n"
@@ -951,7 +1002,7 @@
  	return buffer;
  }
  
-@@ -123,7 +133,13 @@ static int show_map_internal(struct seq_
+@@ -140,7 +150,13 @@ static int show_map_internal(struct seq_
  			vma->vm_end,
  			flags & VM_READ ? 'r' : '-',
  			flags & VM_WRITE ? 'w' : '-',
@@ -966,7 +1017,7 @@
  			flags & VM_MAYSHARE ? 's' : 'p',
  			vma->vm_pgoff << PAGE_SHIFT,
  			MAJOR(dev), MINOR(dev), ino, &len);
-@@ -137,8 +153,7 @@ static int show_map_internal(struct seq_
+@@ -154,8 +170,7 @@ static int show_map_internal(struct seq_
  		seq_path(m, file->f_vfsmnt, file->f_dentry, "\n");
  	} else {
  		if (mm) {
@@ -976,10 +1027,11 @@
  				pad_len_spaces(m, len);
  				seq_puts(m, "[heap]");
  			} else {
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/desc.h linux-810/include/asm-i386/desc.h
---- linux-804/include/asm-i386/desc.h
-+++ linux-810/include/asm-i386/desc.h
-@@ -156,6 +156,20 @@ static inline unsigned long get_desc_bas
+Index: linux/include/asm-i386/desc.h
+===================================================================
+--- linux.orig/include/asm-i386/desc.h
++++ linux/include/asm-i386/desc.h
+@@ -160,6 +160,20 @@ static inline unsigned long get_desc_bas
  	return base;
  }
  
@@ -1000,18 +1052,19 @@
  #endif /* !__ASSEMBLY__ */
  
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/elf.h linux-810/include/asm-i386/elf.h
---- linux-804/include/asm-i386/elf.h
-+++ linux-810/include/asm-i386/elf.h
-@@ -9,6 +9,7 @@
- #include <asm/user.h>
+Index: linux/include/asm-i386/elf.h
+===================================================================
+--- linux.orig/include/asm-i386/elf.h
++++ linux/include/asm-i386/elf.h
+@@ -10,6 +10,7 @@
  #include <asm/processor.h>
  #include <asm/system.h>		/* for savesegment */
  #include <asm/auxvec.h>
 +#include <asm/desc.h>
  
  #include <linux/utsname.h>
-@@ -133,15 +134,22 @@ extern int dump_task_extended_fpu (struc
+ 
+@@ -129,15 +130,22 @@ extern int dump_task_extended_fpu (struc
  #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
  #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs) dump_task_extended_fpu(tsk, elf_xfpregs)
  
@@ -1041,7 +1094,7 @@
  } while (0)
  
  /*
-@@ -152,15 +160,15 @@ do {								\
+@@ -148,15 +156,15 @@ do {								\
   * Dumping its extra ELF program headers includes all the other information
   * a debugger needs to easily find how the vsyscall DSO was being used.
   */
@@ -1061,7 +1114,7 @@
  		struct elf_phdr phdr = vsyscall_phdrs[i];		      \
  		if (phdr.p_type == PT_LOAD) {				      \
  			BUG_ON(ofs != 0);				      \
-@@ -178,10 +186,10 @@ do {									      \
+@@ -174,10 +182,10 @@ do {									      \
  #define ELF_CORE_WRITE_EXTRA_DATA					      \
  do {									      \
  	const struct elf_phdr *const vsyscall_phdrs =			      \
@@ -1075,7 +1128,7 @@
  		if (vsyscall_phdrs[i].p_type == PT_LOAD)		      \
  			DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr,	      \
  				   PAGE_ALIGN(vsyscall_phdrs[i].p_memsz));    \
-@@ -190,4 +198,10 @@ do {									      \
+@@ -186,4 +194,10 @@ do {									      \
  
  #endif
  
@@ -1086,9 +1139,10 @@
 +extern void map_vsyscall(void);
 +
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/mmu.h linux-810/include/asm-i386/mmu.h
---- linux-804/include/asm-i386/mmu.h
-+++ linux-810/include/asm-i386/mmu.h
+Index: linux/include/asm-i386/mmu.h
+===================================================================
+--- linux.orig/include/asm-i386/mmu.h
++++ linux/include/asm-i386/mmu.h
 @@ -7,11 +7,17 @@
   * we put the segment information here.
   *
@@ -1107,9 +1161,10 @@
  } mm_context_t;
  
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/pgalloc.h linux-810/include/asm-i386/pgalloc.h
---- linux-804/include/asm-i386/pgalloc.h
-+++ linux-810/include/asm-i386/pgalloc.h
+Index: linux/include/asm-i386/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-i386/pgalloc.h
++++ linux/include/asm-i386/pgalloc.h
 @@ -3,6 +3,7 @@
  
  #include <linux/config.h>
@@ -1118,10 +1173,11 @@
  #include <linux/threads.h>
  #include <linux/mm.h>		/* for struct page */
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/processor.h linux-810/include/asm-i386/processor.h
---- linux-804/include/asm-i386/processor.h
-+++ linux-810/include/asm-i386/processor.h
-@@ -317,7 +317,10 @@ extern int bootloader_type;
+Index: linux/include/asm-i386/processor.h
+===================================================================
+--- linux.orig/include/asm-i386/processor.h
++++ linux/include/asm-i386/processor.h
+@@ -319,7 +319,9 @@ extern int bootloader_type;
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
   */
@@ -1129,11 +1185,10 @@
 +#define TASK_UNMAPPED_BASE	PAGE_ALIGN(TASK_SIZE/3)
 +
 +#define __HAVE_ARCH_ALIGN_STACK
-+extern unsigned long arch_align_stack(unsigned long sp);
  
  #define HAVE_ARCH_PICK_MMAP_LAYOUT
  
-@@ -499,6 +502,9 @@ static inline void load_esp0(struct tss_
+@@ -501,6 +504,9 @@ static inline void load_esp0(struct tss_
  	regs->xcs = __USER_CS;					\
  	regs->eip = new_eip;					\
  	regs->esp = new_esp;					\
@@ -1143,9 +1198,10 @@
  } while (0)
  
  /*
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/thread_info.h linux-810/include/asm-i386/thread_info.h
---- linux-804/include/asm-i386/thread_info.h
-+++ linux-810/include/asm-i386/thread_info.h
+Index: linux/include/asm-i386/thread_info.h
+===================================================================
+--- linux.orig/include/asm-i386/thread_info.h
++++ linux/include/asm-i386/thread_info.h
 @@ -38,6 +38,7 @@ struct thread_info {
  					 	   0-0xBFFFFFFF for user-thead
  						   0-0xFFFFFFFF for kernel-thread
@@ -1154,9 +1210,10 @@
  	struct restart_block    restart_block;
  
  	unsigned long           previous_esp;   /* ESP of the previous stack in case
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-ia64/pgalloc.h linux-810/include/asm-ia64/pgalloc.h
---- linux-804/include/asm-ia64/pgalloc.h
-+++ linux-810/include/asm-ia64/pgalloc.h
+Index: linux/include/asm-ia64/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-ia64/pgalloc.h
++++ linux/include/asm-ia64/pgalloc.h
 @@ -1,6 +1,10 @@
  #ifndef _ASM_IA64_PGALLOC_H
  #define _ASM_IA64_PGALLOC_H
@@ -1168,9 +1225,26 @@
  /*
   * This file contains the functions and defines necessary to allocate
   * page tables.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-ppc/pgalloc.h linux-810/include/asm-ppc/pgalloc.h
---- linux-804/include/asm-ppc/pgalloc.h
-+++ linux-810/include/asm-ppc/pgalloc.h
+Index: linux/include/asm-powerpc/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-powerpc/pgalloc.h
++++ linux/include/asm-powerpc/pgalloc.h
+@@ -23,6 +23,11 @@ extern kmem_cache_t *pgtable_cache[];
+ #define PGD_CACHE_NUM	0
+ #endif
+ 
++/* Dummy functions since we don't support execshield on ppc */
++#define arch_add_exec_range(mm, limit) do { ; } while (0)
++#define arch_flush_exec_range(mm)      do { ; } while (0)
++#define arch_remove_exec_range(mm, limit) do { ; } while (0)
++
+ /*
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+Index: linux/include/asm-ppc/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-ppc/pgalloc.h
++++ linux/include/asm-ppc/pgalloc.h
 @@ -40,5 +40,10 @@ extern void pte_free(struct page *pte);
  
  #define check_pgt_cache()	do { } while (0)
@@ -1182,24 +1256,10 @@
 +
  #endif /* _PPC_PGALLOC_H */
  #endif /* __KERNEL__ */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-powerpc/pgalloc.h linux-810/include/asm-powerpc/pgalloc.h
---- linux-804/include/asm-powerpc/pgalloc.h
-+++ linux-810/include/asm-powerpc/pgalloc.h
-@@ -13,6 +13,11 @@ extern kmem_cache_t *pgtable_cache[];
- #define PUD_CACHE_NUM	1
- #define PGD_CACHE_NUM	0
- 
-+/* Dummy functions since we don't support execshield on ppc */
-+#define arch_add_exec_range(mm, limit) do { ; } while (0)
-+#define arch_flush_exec_range(mm)      do { ; } while (0)
-+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
-+
- /*
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-s390/pgalloc.h linux-810/include/asm-s390/pgalloc.h
---- linux-804/include/asm-s390/pgalloc.h
-+++ linux-810/include/asm-s390/pgalloc.h
+Index: linux/include/asm-s390/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-s390/pgalloc.h
++++ linux/include/asm-s390/pgalloc.h
 @@ -18,6 +18,10 @@
  #include <linux/gfp.h>
  #include <linux/mm.h>
@@ -1211,9 +1271,10 @@
  #define check_pgt_cache()	do {} while (0)
  
  extern void diag10(unsigned long addr);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-sparc/pgalloc.h linux-810/include/asm-sparc/pgalloc.h
---- linux-804/include/asm-sparc/pgalloc.h
-+++ linux-810/include/asm-sparc/pgalloc.h
+Index: linux/include/asm-sparc/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-sparc/pgalloc.h
++++ linux/include/asm-sparc/pgalloc.h
 @@ -66,4 +66,8 @@ BTFIXUPDEF_CALL(void, pte_free, struct p
  #define pte_free(pte)		BTFIXUP_CALL(pte_free)(pte)
  #define __pte_free_tlb(tlb, pte)	pte_free(pte)
@@ -1223,10 +1284,11 @@
 +#define arch_remove_exec_range(mm, limit)	do { ; } while (0)
 +
  #endif /* _SPARC_PGALLOC_H */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-sparc64/pgalloc.h linux-810/include/asm-sparc64/pgalloc.h
---- linux-804/include/asm-sparc64/pgalloc.h
-+++ linux-810/include/asm-sparc64/pgalloc.h
-@@ -180,4 +180,8 @@ static inline void pte_free(struct page 
+Index: linux/include/asm-sparc64/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-sparc64/pgalloc.h
++++ linux/include/asm-sparc64/pgalloc.h
+@@ -181,4 +181,8 @@ static inline void pte_free(struct page 
  #define pgd_free(pgd)		free_pgd_fast(pgd)
  #define pgd_alloc(mm)		get_pgd_fast()
  
@@ -1235,9 +1297,10 @@
 +#define arch_remove_exec_range(mm, limit)	do { ; } while (0)
 +
  #endif /* _SPARC64_PGALLOC_H */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-x86_64/pgalloc.h linux-810/include/asm-x86_64/pgalloc.h
---- linux-804/include/asm-x86_64/pgalloc.h
-+++ linux-810/include/asm-x86_64/pgalloc.h
+Index: linux/include/asm-x86_64/pgalloc.h
+===================================================================
+--- linux.orig/include/asm-x86_64/pgalloc.h
++++ linux/include/asm-x86_64/pgalloc.h
 @@ -6,6 +6,13 @@
  #include <linux/threads.h>
  #include <linux/mm.h>
@@ -1252,25 +1315,37 @@
  #define pmd_populate_kernel(mm, pmd, pte) \
  		set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)))
  #define pud_populate(mm, pud, pmd) \
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-x86_64/processor.h linux-810/include/asm-x86_64/processor.h
---- linux-804/include/asm-x86_64/processor.h
-+++ linux-810/include/asm-x86_64/processor.h
-@@ -162,6 +162,11 @@ static inline void clear_in_cr4 (unsigne
+Index: linux/include/asm-x86_64/pgtable.h
+===================================================================
+--- linux.orig/include/asm-x86_64/pgtable.h
++++ linux/include/asm-x86_64/pgtable.h
+@@ -21,7 +21,7 @@ extern unsigned long __supported_pte_mas
+ 
+ #define swapper_pg_dir init_level4_pgt
+ 
+-extern int nonx_setup(char *str);
++extern void nonx_setup(const char *str);
+ extern void paging_init(void);
+ extern void clear_kernel_mapping(unsigned long addr, unsigned long size);
+ 
+Index: linux/include/asm-x86_64/processor.h
+===================================================================
+--- linux.orig/include/asm-x86_64/processor.h
++++ linux/include/asm-x86_64/processor.h
+@@ -164,6 +164,8 @@ static inline void clear_in_cr4 (unsigne
   */
  #define TASK_SIZE64	(0x800000000000UL - 4096)
  
 +#define __HAVE_ARCH_ALIGN_STACK
-+extern unsigned long arch_align_stack(unsigned long sp);
-+
-+#define HAVE_ARCH_PICK_MMAP_LAYOUT
 +
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
   */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/mm.h linux-810/include/linux/mm.h
---- linux-804/include/linux/mm.h
-+++ linux-810/include/linux/mm.h
-@@ -840,7 +840,14 @@ extern struct vm_area_struct *copy_vma(s
+Index: linux/include/linux/mm.h
+===================================================================
+--- linux.orig/include/linux/mm.h
++++ linux/include/linux/mm.h
+@@ -914,7 +914,14 @@ extern struct vm_area_struct *copy_vma(s
  extern void exit_mmap(struct mm_struct *);
  extern int may_expand_vm(struct mm_struct *mm, unsigned long npages);
  
@@ -1278,17 +1353,27 @@
 +extern unsigned long get_unmapped_area_prot(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, int);
 +
 +
-+static inline unsigned long get_unmapped_area(struct file * file, unsigned long addr, 
++static inline unsigned long get_unmapped_area(struct file * file, unsigned long addr,
 +		unsigned long len, unsigned long pgoff, unsigned long flags)
 +{
-+	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);	
++	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);
 +}
  
  extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
  	unsigned long len, unsigned long prot,
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/resource.h linux-810/include/linux/resource.h
---- linux-804/include/linux/resource.h
-+++ linux-810/include/linux/resource.h
+@@ -966,7 +973,7 @@ unsigned long page_cache_readahead(struc
+ 			  struct file *filp,
+ 			  pgoff_t offset,
+ 			  unsigned long size);
+-void handle_ra_miss(struct address_space *mapping, 
++void handle_ra_miss(struct address_space *mapping,
+ 		    struct file_ra_state *ra, pgoff_t offset);
+ unsigned long max_sane_readahead(unsigned long nr);
+ 
+Index: linux/include/linux/resource.h
+===================================================================
+--- linux.orig/include/linux/resource.h
++++ linux/include/linux/resource.h
 @@ -52,8 +52,11 @@ struct rlimit {
  /*
   * Limit the stack by to some sane default: root can always
@@ -1302,11 +1387,12 @@
  
  /*
   * GPG wants 32kB of mlocked memory, to make sure pass phrases
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/sched.h linux-810/include/linux/sched.h
---- linux-804/include/linux/sched.h
-+++ linux-810/include/linux/sched.h
-@@ -36,6 +36,8 @@
- #include <linux/seccomp.h>
+Index: linux/include/linux/sched.h
+===================================================================
+--- linux.orig/include/linux/sched.h
++++ linux/include/linux/sched.h
+@@ -39,6 +39,8 @@
+ #include <linux/auxvec.h>	/* For AT_VECTOR_SIZE */
  
  struct exec_domain;
 +extern int exec_shield;
@@ -1314,7 +1400,7 @@
  
  /*
   * cloning flags:
-@@ -197,6 +199,10 @@ extern int sysctl_max_map_count;
+@@ -243,6 +245,10 @@ extern int sysctl_max_map_count;
  extern unsigned long
  arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
  		       unsigned long, unsigned long);
@@ -1325,7 +1411,7 @@
  extern unsigned long
  arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
  			  unsigned long len, unsigned long pgoff,
-@@ -218,6 +224,9 @@ struct mm_struct {
+@@ -295,6 +301,9 @@ struct mm_struct {
  	unsigned long (*get_unmapped_area) (struct file *filp,
  				unsigned long addr, unsigned long len,
  				unsigned long pgoff, unsigned long flags);
@@ -1335,9 +1421,10 @@
  	void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
          unsigned long mmap_base;		/* base of mmap area */
          unsigned long cached_hole_size;         /* if non-zero, the largest hole below free_area_cache */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/sysctl.h linux-810/include/linux/sysctl.h
---- linux-804/include/linux/sysctl.h
-+++ linux-810/include/linux/sysctl.h
+Index: linux/include/linux/sysctl.h
+===================================================================
+--- linux.orig/include/linux/sysctl.h
++++ linux/include/linux/sysctl.h
 @@ -92,6 +92,9 @@ enum
  
  	KERN_CAP_BSET=14,	/* int: capability bounding set */
@@ -1348,12 +1435,13 @@
  	KERN_REALROOTDEV=16,	/* real root device to mount after initrd */
  
  	KERN_SPARC_REBOOT=21,	/* reboot command on Sparc */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/kernel/signal.c linux-810/kernel/signal.c
---- linux-804/kernel/signal.c
-+++ linux-810/kernel/signal.c
-@@ -1209,6 +1209,37 @@ kill_proc_info(int sig, struct siginfo *
- 	return error;
- }
+Index: linux/kernel/signal.c
+===================================================================
+--- linux.orig/kernel/signal.c
++++ linux/kernel/signal.c
+@@ -868,6 +868,37 @@ out_set:
+ #define LEGACY_QUEUE(sigptr, sig) \
+ 	(((sig) < SIGRTMIN) && sigismember(&(sigptr)->signal, (sig)))
  
 +int print_fatal_signals = 0;
 +
@@ -1361,7 +1449,7 @@
 +{
 +	printk("%s/%d: potentially unexpected fatal signal %d.\n",
 +		current->comm, current->pid, signr);
-+		
++
 +#ifdef __i386__
 +	printk("code at %08lx: ", regs->eip);
 +	{
@@ -1373,7 +1461,7 @@
 +			printk("%02x ", insn);
 +		}
 +	}
-+#endif	
++#endif
 +	printk("\n");
 +	show_regs(regs);
 +}
@@ -1387,9 +1475,9 @@
 +
 +__setup("print-fatal-signals=", setup_print_fatal_signals);
  
- /*
-  * kill_something_info() interprets pid in interesting ways just like kill(2).
-@@ -1859,6 +1890,11 @@ relock:
+ static int
+ specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
+@@ -1935,6 +1966,11 @@ relock:
  		if (!signr)
  			break; /* will return 0 */
  
@@ -1401,7 +1489,7 @@
  		if ((current->ptrace & PT_PTRACED) && signr != SIGKILL) {
  			ptrace_signal_deliver(regs, cookie);
  
-@@ -1954,6 +1990,8 @@ relock:
+@@ -2030,6 +2066,8 @@ relock:
  		 * Anything else is fatal, maybe with a core dump.
  		 */
  		current->flags |= PF_SIGNALED;
@@ -1410,10 +1498,11 @@
  		if (sig_kernel_coredump(signr)) {
  			/*
  			 * If it was able to dump core, this kills all
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/kernel/sysctl.c linux-810/kernel/sysctl.c
---- linux-804/kernel/sysctl.c
-+++ linux-810/kernel/sysctl.c
-@@ -74,6 +74,19 @@ extern int proc_unknown_nmi_panic(ctl_ta
+Index: linux/kernel/sysctl.c
+===================================================================
+--- linux.orig/kernel/sysctl.c
++++ linux/kernel/sysctl.c
+@@ -77,6 +77,19 @@ extern int proc_unknown_nmi_panic(ctl_ta
  				  void __user *, size_t *, loff_t *);
  #endif
  
@@ -1433,7 +1522,7 @@
  /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
  static int maxolduid = 65535;
  static int minolduid;
-@@ -279,6 +292,32 @@ static ctl_table kern_table[] = {
+@@ -280,6 +293,32 @@ static ctl_table kern_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -1466,9 +1555,11 @@
  		.ctl_name	= KERN_CORE_USES_PID,
  		.procname	= "core_uses_pid",
  		.data		= &core_uses_pid,
---- linux-2.6.13/mm/fremap.c~	2005-10-13 17:34:08.000000000 -0400
-+++ linux-2.6.13/mm/fremap.c	2005-10-13 17:34:58.000000000 -0400
-@@ -83,13 +83,15 @@ int install_page(struct mm_struct *mm, s
+Index: linux/mm/fremap.c
+===================================================================
+--- linux.orig/mm/fremap.c
++++ linux/mm/fremap.c
+@@ -67,13 +67,15 @@ int install_page(struct mm_struct *mm, s
  	 * caller about it.
  	 */
  	err = -EINVAL;
@@ -1491,9 +1582,10 @@
  
  	if (pte_none(*pte) || !zap_pte(mm, vma, addr, pte))
  		inc_mm_counter(mm, file_rss);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mmap.c linux-810/mm/mmap.c
---- linux-804/mm/mmap.c
-+++ linux-810/mm/mmap.c
+Index: linux/mm/mmap.c
+===================================================================
+--- linux.orig/mm/mmap.c
++++ linux/mm/mmap.c
 @@ -24,6 +24,7 @@
  #include <linux/mount.h>
  #include <linux/mempolicy.h>
@@ -1502,7 +1594,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/cacheflush.h>
-@@ -342,6 +343,8 @@ static inline void
+@@ -341,6 +342,8 @@ static inline void
  __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
  		struct vm_area_struct *prev, struct rb_node *rb_parent)
  {
@@ -1511,7 +1603,7 @@
  	if (prev) {
  		vma->vm_next = prev->vm_next;
  		prev->vm_next = vma;
-@@ -446,6 +449,8 @@ __vma_unlink(struct mm_struct *mm, struc
+@@ -445,6 +448,8 @@ __vma_unlink(struct mm_struct *mm, struc
  	rb_erase(&vma->vm_rb, &mm->mm_rb);
  	if (mm->mmap_cache == vma)
  		mm->mmap_cache = prev;
@@ -1520,7 +1612,7 @@
  }
  
  /*
-@@ -751,6 +756,8 @@ struct vm_area_struct *vma_merge(struct 
+@@ -750,6 +755,8 @@ struct vm_area_struct *vma_merge(struct 
  		} else					/* cases 2, 5, 7 */
  			vma_adjust(prev, prev->vm_start,
  				end, prev->vm_pgoff, NULL);
@@ -1529,7 +1621,7 @@
  		return prev;
  	}
  
-@@ -922,7 +929,7 @@ unsigned long do_mmap_pgoff(struct file 
+@@ -921,7 +928,7 @@ unsigned long do_mmap_pgoff(struct file 
  	/* Obtain the address to map to. we verify (or select) it and ensure
  	 * that it represents a valid section of the address space.
  	 */
@@ -1538,7 +1630,7 @@
  	if (addr & ~PAGE_MASK)
  		return addr;
  
-@@ -1328,16 +1335,21 @@ void arch_unmap_area_topdown(struct mm_s
+@@ -1327,16 +1334,21 @@ void arch_unmap_area_topdown(struct mm_s
  		mm->free_area_cache = mm->mmap_base;
  }
  
@@ -1563,7 +1655,7 @@
  		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);
-@@ -1368,7 +1380,71 @@ get_unmapped_area(struct file *file, uns
+@@ -1367,7 +1379,71 @@ get_unmapped_area(struct file *file, uns
  	return addr;
  }
  
@@ -1636,7 +1728,7 @@
  
  /* 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)
-@@ -1443,6 +1519,14 @@ out:
+@@ -1442,6 +1518,14 @@ out:
  	return prev ? prev->vm_next : vma;
  }
  
@@ -1651,7 +1743,7 @@
  /*
   * Verify that the stack growth is acceptable and
   * update accounting. This is shared with both the
-@@ -1458,7 +1542,7 @@ static int acct_stack_growth(struct vm_a
+@@ -1457,7 +1541,7 @@ static int acct_stack_growth(struct vm_a
  		return -ENOMEM;
  
  	/* Stack limit test */
@@ -1660,7 +1752,7 @@
  		return -ENOMEM;
  
  	/* mlock limit tests */
-@@ -1740,10 +1824,14 @@ int split_vma(struct mm_struct * mm, str
+@@ -1737,10 +1821,14 @@ int split_vma(struct mm_struct * mm, str
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
  
@@ -1677,7 +1769,7 @@
  		vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
  	return 0;
-@@ -2048,6 +2048,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -1945,6 +2033,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);
@@ -1685,9 +1777,10 @@
  
  	/*
  	 * Walk the list again, actually closing and freeing it,
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mprotect.c linux-810/mm/mprotect.c
---- linux-804/mm/mprotect.c
-+++ linux-810/mm/mprotect.c
+Index: linux/mm/mprotect.c
+===================================================================
+--- linux.orig/mm/mprotect.c
++++ linux/mm/mprotect.c
 @@ -22,6 +22,7 @@
  
  #include <asm/uaccess.h>
@@ -1696,7 +1789,7 @@
  #include <asm/cacheflush.h>
  #include <asm/tlbflush.h>
  
-@@ -106,7 +107,7 @@ mprotect_fixup(struct vm_area_struct *vm
+@@ -105,7 +106,7 @@ mprotect_fixup(struct vm_area_struct *vm
  	struct mm_struct *mm = vma->vm_mm;
  	unsigned long oldflags = vma->vm_flags;
  	long nrpages = (end - start) >> PAGE_SHIFT;
@@ -1705,146 +1798,27 @@
  	pgprot_t newprot;
  	pgoff_t pgoff;
  	int error;
-@@ -167,6 +168,8 @@ success:
+@@ -166,6 +167,8 @@ success:
  	 */
  	vma->vm_flags = newflags;
  	vma->vm_page_prot = newprot;
 +	if (oldflags & VM_EXEC)
 +		arch_remove_exec_range(current->mm, old_end);
  	change_protection(vma, start, end, newprot);
- 	__vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
- 	__vm_stat_account(mm, newflags, vma->vm_file, nrpages);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mremap.c linux-810/mm/mremap.c
---- linux-804/mm/mremap.c
-+++ linux-810/mm/mremap.c
-@@ -407,8 +407,8 @@ unsigned long do_mremap(unsigned long ad
+ 	vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
+ 	vm_stat_account(mm, newflags, vma->vm_file, nrpages);
+Index: linux/mm/mremap.c
+===================================================================
+--- linux.orig/mm/mremap.c
++++ linux/mm/mremap.c
+@@ -386,8 +386,8 @@ unsigned long do_mremap(unsigned long ad
  			if (vma->vm_flags & VM_MAYSHARE)
  				map_flags |= MAP_SHARED;
  
 -			new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
 -						vma->vm_pgoff, map_flags);
-+			new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len, 
++			new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
 +				vma->vm_pgoff, map_flags, vma->vm_flags & VM_EXEC);
  			ret = new_addr;
  			if (new_addr & ~PAGE_MASK)
  				goto out;
-diff -urNp --exclude-from=/home/davej/.exclude linux-812/arch/i386/kernel/cpu/common.c linux-813/arch/i386/kernel/cpu/common.c
---- linux-812/arch/i386/kernel/cpu/common.c
-+++ linux-813/arch/i386/kernel/cpu/common.c
-@@ -397,6 +397,13 @@ void __devinit identify_cpu(struct cpuin
- 	if (disable_pse)
- 		clear_bit(X86_FEATURE_PSE, c->x86_capability);
- 
-+	if (exec_shield != 0) {
-+#ifdef CONFIG_HIGHMEM64G   /* NX implies PAE */
-+		if (!test_bit(X86_FEATURE_NX, c->x86_capability))
-+#endif
-+		clear_bit(X86_FEATURE_SEP, c->x86_capability);
-+	}
-+
- 	/* If the model name is still unset, do table lookup. */
- 	if ( !c->x86_model_id[0] ) {
- 		char *p;
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.13-a/arch/x86_64/ia32/ia32_binfmt.c
---- linux-2.6.13/arch/x86_64/ia32/ia32_binfmt.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/ia32/ia32_binfmt.c	2005-10-14 20:56:15.000000000 -0400
-@@ -249,8 +249,6 @@ elf_core_copy_task_xfpregs(struct task_s
- #define elf_check_arch(x) \
- 	((x)->e_machine == EM_386)
- 
--extern int force_personality32;
--
- #define ELF_EXEC_PAGESIZE PAGE_SIZE
- #define ELF_HWCAP (boot_cpu_data.x86_capability[0])
- #define ELF_PLATFORM  ("i686")
-@@ -264,8 +262,6 @@ do {							\
- 		set_thread_flag(TIF_ABI_PENDING);		\
- 	else							\
- 		clear_thread_flag(TIF_ABI_PENDING);		\
--	/* XXX This overwrites the user set personality */	\
--	current->personality |= force_personality32;		\
- } while (0)
- 
- /* Override some function names */
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/kernel/process.c linux-2.6.13-a/arch/x86_64/kernel/process.c
---- linux-2.6.13/arch/x86_64/kernel/process.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/kernel/process.c	2005-10-14 20:56:15.000000000 -0400
-@@ -638,12 +638,6 @@ void set_personality_64bit(void)
- 
- 	/* Make sure to be in 64bit mode */
- 	clear_thread_flag(TIF_IA32); 
--
--	/* TBD: overwrites user setup. Should have two bits.
--	   But 64bit processes have always behaved this way,
--	   so it's not too bad. The main problem is just that
--   	   32bit childs are affected again. */
--	current->personality &= ~READ_IMPLIES_EXEC;
- }
- 
- asmlinkage long sys_fork(struct pt_regs *regs)
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/kernel/setup64.c linux-2.6.13-a/arch/x86_64/kernel/setup64.c
---- linux-2.6.13/arch/x86_64/kernel/setup64.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/kernel/setup64.c	2005-10-14 20:56:15.000000000 -0400
-@@ -45,7 +45,7 @@ Control non executable mappings for 64bi
- on	Enable(default)
- off	Disable
- */ 
--int __init nonx_setup(char *str)
-+void __init nonx_setup(const char *str)
- {
- 	if (!strncmp(str, "on", 2)) {
-                 __supported_pte_mask |= _PAGE_NX; 
-@@ -53,29 +53,8 @@ int __init nonx_setup(char *str)
- 	} else if (!strncmp(str, "off", 3)) {
- 		do_not_nx = 1;
- 		__supported_pte_mask &= ~_PAGE_NX;
--        }
--	return 0;
-+        } 
- } 
--__setup("noexec=", nonx_setup);	/* parsed early actually */
--
--int force_personality32 = READ_IMPLIES_EXEC;
--
--/* noexec32=on|off
--Control non executable heap for 32bit processes.
--To control the stack too use noexec=off
--
--on	PROT_READ does not imply PROT_EXEC for 32bit processes
--off	PROT_READ implies PROT_EXEC (default)
--*/
--static int __init nonx32_setup(char *str)
--{
--	if (!strcmp(str, "on"))
--		force_personality32 &= ~READ_IMPLIES_EXEC;
--	else if (!strcmp(str, "off"))
--		force_personality32 |= READ_IMPLIES_EXEC;
--	return 0;
--}
--__setup("noexec32=", nonx32_setup);
- 
- /*
-  * Great future plan:
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/include/asm-x86_64/pgtable.h linux-2.6.13-a/include/asm-x86_64/pgtable.h
---- linux-2.6.13/include/asm-x86_64/pgtable.h	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/include/asm-x86_64/pgtable.h	2005-10-14 20:56:15.000000000 -0400
-@@ -20,7 +20,7 @@ extern unsigned long __supported_pte_mas
- 
- #define swapper_pg_dir init_level4_pgt
- 
--extern int nonx_setup(char *str);
-+extern void nonx_setup(const char *str);
- extern void paging_init(void);
- extern void clear_kernel_mapping(unsigned long addr, unsigned long size);
- 
---- linux-2.6.14/fs/proc/base.c~	2005-12-29 19:25:42.000000000 -0500
-+++ linux-2.6.14/fs/proc/base.c	2005-12-29 19:26:20.000000000 -0500
-@@ -200,7 +200,7 @@ static struct pid_entry tgid_base_stuff[
- 	E(PROC_TGID_EXE,       "exe",     S_IFLNK|S_IRWXUGO),
- 	E(PROC_TGID_MOUNTS,    "mounts",  S_IFREG|S_IRUGO),
- #ifdef CONFIG_MMU
--	E(PROC_TGID_SMAPS,     "smaps",   S_IFREG|S_IRUGO),
-+	E(PROC_TGID_SMAPS,     "smaps",   S_IFREG|S_IRUSR),
- #endif
- #ifdef CONFIG_SECURITY
- 	E(PROC_TGID_ATTR,      "attr",    S_IFDIR|S_IRUGO|S_IXUGO),

linux-2.6-hvc-console.patch:
 drivers/char/Kconfig            |   13 +++
 drivers/char/Makefile           |    6 +
 drivers/char/hvc_console.c      |   25 ------
 drivers/char/hvc_console.h      |   83 ++++++++++++++++++++++
 drivers/char/hvc_fss.c          |  149 ++++++++++++++++++++++++++++++++++++++++
 drivers/char/hvc_vio.c          |    1 
 include/asm-powerpc/hvconsole.h |   21 -----
 7 files changed, 252 insertions(+), 46 deletions(-)

Index: linux-2.6-hvc-console.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-hvc-console.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-hvc-console.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-hvc-console.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -1,31 +1,3 @@
-diff -uNr --exclude '*.orig' linux-2.6.14.cons/arch/powerpc/kernel/setup-common.c linux-2.6.14/arch/powerpc/kernel/setup-common.c
---- linux-2.6.14.cons/arch/powerpc/kernel/setup-common.c	2005-12-07 16:33:31.000000000 +0100
-+++ linux-2.6.14/arch/powerpc/kernel/setup-common.c	2005-12-07 16:34:00.000000000 +0100
-@@ -304,6 +304,15 @@
- 
- 	DBG(" -> set_preferred_console()\n");
- 
-+#ifdef CONFIG_HVC_FSS
-+	/* if we're on the full system simulator just circumvent the whole
-+	 * picking process because there is no device tree in which we'll
-+	 * find the console device. */
-+	if(__onsim()) {
-+		DBG("Found hvc_fss console\n");
-+		return add_preferred_console("hvc", 0, NULL);
-+	}
-+#endif
- 	/* The user has requested a console so this is already set up. */
- 	if (strstr(saved_command_line, "console=")) {
- 		DBG(" console was specified !\n");
-@@ -385,7 +393,7 @@
-  		} else {
-  			/* pSeries LPAR virtual console */
- 			of_node_put(prom_stdout);
--			DBG("Found hvc console\n");
-+			DBG("Found hvc_vio console\n");
-  			return add_preferred_console("hvc", 0, NULL);
-  		}
- 	}
 diff -uNr --exclude '*.orig' linux-2.6.14.cons/drivers/char/hvc_console.c linux-2.6.14/drivers/char/hvc_console.c
 --- linux-2.6.14.cons/drivers/char/hvc_console.c	2005-12-07 16:33:35.000000000 +0100
 +++ linux-2.6.14/drivers/char/hvc_console.c	2005-12-07 16:33:56.000000000 +0100
@@ -382,9 +354,10 @@
 diff -uNr --exclude '*.orig' linux-2.6.14.cons/include/asm-powerpc/hvconsole.h linux-2.6.14/include/asm-powerpc/hvconsole.h
 --- linux-2.6.14.cons/include/asm-powerpc/hvconsole.h	2005-12-07 16:33:35.000000000 +0100
 +++ linux-2.6.14/include/asm-powerpc/hvconsole.h	2005-12-07 16:33:56.000000000 +0100
-@@ -22,28 +22,7 @@
+@@ -22,30 +22,9 @@
  #ifndef _PPC64_HVCONSOLE_H
  #define _PPC64_HVCONSOLE_H
+ #ifdef __KERNEL__
  
 -/*
 - * This is the max number of console adapters that can/will be found as
@@ -410,6 +383,7 @@
 -						 struct hv_ops *ops);
 -/* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
 -extern int __devexit hvc_remove(struct hvc_struct *hp);
+ #endif /* __KERNEL__ */
  #endif /* _PPC64_HVCONSOLE_H */
 --- linux-2.6.14/drivers/char/hvc_vio.c~	2005-12-07 17:46:48.000000000 +0100
 +++ linux-2.6.14/drivers/char/hvc_vio.c	2005-12-07 18:03:23.000000000 +0100

linux-2.6-modsign-core.patch:
 linux-2.6.12/kernel/module-verify.c  |    2 
 linux-900/include/linux/module.h     |    3 
 linux-900/init/Kconfig               |   16 +
 linux-900/kernel/Makefile            |    3 
 linux-900/kernel/module-verify-sig.c |  442 +++++++++++++++++++++++++++++++++++
 linux-900/kernel/module-verify.c     |  340 ++++++++++++++++++++++++++
 linux-900/kernel/module-verify.h     |   37 ++
 linux-900/kernel/module.c            |   19 +
 8 files changed, 857 insertions(+), 5 deletions(-)

Index: linux-2.6-modsign-core.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-modsign-core.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-modsign-core.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-modsign-core.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -47,9 +47,9 @@
 -obj-$(CONFIG_MODULES) += module.o
 +obj-$(CONFIG_MODULES) += module.o module-verify.o
 +obj-$(CONFIG_MODULE_SIG) += module-verify-sig.o
+ obj-$(CONFIG_OBSOLETE_INTERMODULE) += intermodule.o
  obj-$(CONFIG_KALLSYMS) += kallsyms.o
  obj-$(CONFIG_PM) += power/
- obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
 diff -urNp --exclude-from=/home/davej/.exclude linux-811/kernel/module.c linux-900/kernel/module.c
 --- linux-811/kernel/module.c
 +++ linux-900/kernel/module.c

linux-2.6-radeon-backlight.patch:
 radeon_base.c |   11 +
 radeon_pm.c   |  557 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 567 insertions(+), 1 deletion(-)

Index: linux-2.6-radeon-backlight.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-radeon-backlight.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-radeon-backlight.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-radeon-backlight.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -563,7 +563,7 @@
 @@ -2779,6 +3311,29 @@ void radeonfb_pm_init(struct radeonfb_in
  #endif
  	}
- #endif /* defined(CONFIG_PM) && defined(CONFIG_PPC_OF) */
+ #endif /* defined(CONFIG_PM) && defined(CONFIG_PPC_PMAC) */
 +
 +/* The PM code also works on some PC laptops.
 + * Only a few models are actually tested so Your mileage may vary.

linux-2.6-sleepon.patch:
 drivers/block/DAC960.c        |   12 +++++++++++-
 drivers/net/tokenring/ibmtr.c |    9 ++++++++-
 include/linux/wait.h          |    6 +++---
 kernel/sched.c                |   28 +++++++++++++++-------------
 4 files changed, 37 insertions(+), 18 deletions(-)

Index: linux-2.6-sleepon.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-sleepon.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-sleepon.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-sleepon.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -140,32 +140,3 @@
  	current->state = TASK_UNINTERRUPTIBLE;
  
  	SLEEP_ON_HEAD
-diff -urNp --exclude-from=/home/davej/.exclude linux-1060/net/sunrpc/clnt.c linux-1070/net/sunrpc/clnt.c
---- linux-1060/net/sunrpc/clnt.c
-+++ linux-1070/net/sunrpc/clnt.c
-@@ -223,17 +223,24 @@ out_no_clnt:
- int
- rpc_shutdown_client(struct rpc_clnt *clnt)
- {
-+	wait_queue_t __wait;
-+	init_waitqueue_entry(&__wait, current);
- 	dprintk("RPC: shutting down %s client for %s, tasks=%d\n",
- 			clnt->cl_protname, clnt->cl_server,
- 			atomic_read(&clnt->cl_users));
- 
-+	add_wait_queue(&destroy_wait, &__wait);
-+	set_current_state(TASK_UNINTERRUPTIBLE);
- 	while (atomic_read(&clnt->cl_users) > 0) {
- 		/* Don't let rpc_release_client destroy us */
- 		clnt->cl_oneshot = 0;
- 		clnt->cl_dead = 0;
- 		rpc_killall_tasks(clnt);
--		sleep_on_timeout(&destroy_wait, 1*HZ);
-+		schedule_timeout(1*HZ);
-+		set_current_state(TASK_UNINTERRUPTIBLE);
- 	}
-+	current->state = TASK_RUNNING;
-+	remove_wait_queue(&destroy_wait, &__wait);
- 
- 	if (atomic_read(&clnt->cl_users) < 0) {
- 		printk(KERN_ERR "RPC: rpc_shutdown_client clnt %p tasks=%d\n",

linux-2.6-softmac-git.patch:
 include/net/ieee80211.h                         |    8 
 include/net/ieee80211softmac.h                  |  292 ++++++++++++++
 include/net/ieee80211softmac_wx.h               |   94 ++++
 net/ieee80211/Kconfig                           |    1 
 net/ieee80211/Makefile                          |    1 
 net/ieee80211/ieee80211_module.c                |    2 
 net/ieee80211/ieee80211_rx.c                    |    4 
 net/ieee80211/ieee80211_wx.c                    |   89 ++++
 net/ieee80211/softmac/Kconfig                   |   10 
 net/ieee80211/softmac/Makefile                  |    9 
 net/ieee80211/softmac/ieee80211softmac_assoc.c  |  392 +++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_auth.c   |  376 +++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_event.c  |  159 ++++++++
 net/ieee80211/softmac/ieee80211softmac_io.c     |  474 ++++++++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_module.c |  456 +++++++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_priv.h   |  237 ++++++++++++
 net/ieee80211/softmac/ieee80211softmac_scan.c   |  237 ++++++++++++
 net/ieee80211/softmac/ieee80211softmac_wx.c     |  412 ++++++++++++++++++++
 18 files changed, 3250 insertions(+), 3 deletions(-)

Index: linux-2.6-softmac-git.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-softmac-git.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-softmac-git.patch	9 Jan 2006 20:42:13 -0000	1.1
+++ linux-2.6-softmac-git.patch	26 Jan 2006 22:14:34 -0000	1.2
@@ -1,33 +1,54 @@
 diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
-index cde2f4f..df05f46 100644
+index df05f46..c1cb23a 100644
 --- a/include/net/ieee80211.h
 +++ b/include/net/ieee80211.h
-@@ -363,8 +363,9 @@ enum ieee80211_reasoncode {
- #define IEEE80211_OFDM_SHIFT_MASK_A         4
+@@ -1122,6 +1122,14 @@ extern int ieee80211_wx_set_encodeext(st
+ extern int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
+ 				      struct iw_request_info *info,
+ 				      union iwreq_data *wrqu, char *extra);
++extern int ieee80211_wx_set_auth(struct net_device *dev,
++				 struct iw_request_info *info,
++				 union iwreq_data *wrqu,
++				 char *extra);
++extern int ieee80211_wx_get_auth(struct net_device *dev,
++				 struct iw_request_info *info,
++				 union iwreq_data *wrqu,
++				 char *extra);
  
- /* NOTE: This data is for statistical purposes; not all hardware provides this
-- *       information for frames received.  Not setting these will not cause
-- *       any adverse affects. */
-+ *       information for frames received.
-+ *       For ieee80211_rx_mgt, you need to set at least the 'len' parameter.
-+ */
- struct ieee80211_rx_stats {
- 	u32 mac_time;
- 	s8 rssi;
-@@ -1088,6 +1089,7 @@ extern int ieee80211_tx_frame(struct iee
- /* ieee80211_rx.c */
- extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
- 			struct ieee80211_rx_stats *rx_stats);
-+/* make sure to set stats->len */
- extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,
- 			     struct ieee80211_hdr_4addr *header,
- 			     struct ieee80211_rx_stats *stats);
+ static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
+ {
 diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h
 new file mode 100644
-index 0000000..7264bd8
+index 0000000..b971d8c
 --- /dev/null
 +++ b/include/net/ieee80211softmac.h
-@@ -0,0 +1,266 @@
+@@ -0,0 +1,292 @@
++/*
++ * ieee80211softmac.h - public interface to the softmac
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#ifndef IEEE80211SOFTMAC_H_
 +#define IEEE80211SOFTMAC_H_
 +
@@ -296,10 +317,38 @@
 +#endif /* IEEE80211SOFTMAC_H_ */
 diff --git a/include/net/ieee80211softmac_wx.h b/include/net/ieee80211softmac_wx.h
 new file mode 100644
-index 0000000..165ea4c
+index 0000000..3e0be45
 --- /dev/null
 +++ b/include/net/ieee80211softmac_wx.h
-@@ -0,0 +1,66 @@
+@@ -0,0 +1,94 @@
++/*
++ * This file contains the prototypes for the wireless extension
++ * handlers that the softmac API provides. Include this file to
++ * use the wx handlers, you can assign these directly.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#ifndef _IEEE80211SOFTMAC_WX_H
 +#define _IEEE80211SOFTMAC_WX_H
 +
@@ -384,99 +433,6 @@
  	ieee80211_geo.o
  
 +obj-$(CONFIG_IEEE80211_SOFTMAC) += softmac/
-diff --git a/net/ieee80211/ieee80211_crypt_wep.c b/net/ieee80211/ieee80211_crypt_wep.c
-index 073aebd..f8dca31 100644
---- a/net/ieee80211/ieee80211_crypt_wep.c
-+++ b/net/ieee80211/ieee80211_crypt_wep.c
-@@ -75,22 +75,14 @@ static void prism2_wep_deinit(void *priv
- 	kfree(priv);
- }
- 
--/* Perform WEP encryption on given skb that has at least 4 bytes of headroom
-- * for IV and 4 bytes of tailroom for ICV. Both IV and ICV will be transmitted,
-- * so the payload length increases with 8 bytes.
-- *
-- * WEP frame payload: IV + TX key idx, RC4(data), ICV = RC4(CRC32(data))
-- */
--static int prism2_wep_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
-+/* Add WEP IV/key info to a frame that has at least 4 bytes of headroom */
-+static int prism2_wep_build_iv(struct sk_buff *skb, int hdr_len, void *priv)
- {
- 	struct prism2_wep_data *wep = priv;
--	u32 crc, klen, len;
--	u8 key[WEP_KEY_LEN + 3];
--	u8 *pos, *icv;
--	struct scatterlist sg;
--
--	if (skb_headroom(skb) < 4 || skb_tailroom(skb) < 4 ||
--	    skb->len < hdr_len)
-+	u32 klen, len;
-+	u8 *pos;
-+	
-+	if (skb_headroom(skb) < 4 || skb->len < hdr_len)
- 		return -1;
- 
- 	len = skb->len - hdr_len;
-@@ -112,15 +104,47 @@ static int prism2_wep_encrypt(struct sk_
- 	}
- 
- 	/* Prepend 24-bit IV to RC4 key and TX frame */
--	*pos++ = key[0] = (wep->iv >> 16) & 0xff;
--	*pos++ = key[1] = (wep->iv >> 8) & 0xff;
--	*pos++ = key[2] = wep->iv & 0xff;
-+	*pos++ = (wep->iv >> 16) & 0xff;
-+	*pos++ = (wep->iv >> 8) & 0xff;
-+	*pos++ = wep->iv & 0xff;
- 	*pos++ = wep->key_idx << 6;
- 
-+	return 0;
-+}
-+
-+/* Perform WEP encryption on given skb that has at least 4 bytes of headroom
-+ * for IV and 4 bytes of tailroom for ICV. Both IV and ICV will be transmitted,
-+ * so the payload length increases with 8 bytes.
-+ *
-+ * WEP frame payload: IV + TX key idx, RC4(data), ICV = RC4(CRC32(data))
-+ */
-+static int prism2_wep_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
-+{
-+	struct prism2_wep_data *wep = priv;
-+	u32 crc, klen, len;
-+	u8 *pos, *icv;
-+	struct scatterlist sg;
-+	u8 key[WEP_KEY_LEN + 3];
-+
-+	/* other checks are in prism2_wep_build_iv */
-+	if (skb_tailroom(skb) < 4)
-+		return -1;
-+	
-+	/* add the IV to the frame */
-+	if (prism2_wep_build_iv(skb, hdr_len, priv))
-+		return -1;
-+	
-+	/* Copy the IV into the first 3 bytes of the key */
-+	memcpy(key, skb->data + hdr_len, 3);
-+
- 	/* Copy rest of the WEP key (the secret part) */
- 	memcpy(key + 3, wep->key, wep->key_len);
-+	
-+	len = skb->len - hdr_len - 4;
-+	pos = skb->data + hdr_len + 4;
-+	klen = 3 + wep->key_len;
- 
--	/* Append little-endian CRC32 and encrypt it to produce ICV */
-+	/* Append little-endian CRC32 over only the data and encrypt it to produce ICV */
- 	crc = ~crc32_le(~0, pos, len);
- 	icv = skb_put(skb, 4);
- 	icv[0] = crc;
-@@ -231,6 +255,7 @@ static struct ieee80211_crypto_ops ieee8
- 	.name = "WEP",
- 	.init = prism2_wep_init,
- 	.deinit = prism2_wep_deinit,
-+	.build_iv = prism2_wep_build_iv,
- 	.encrypt_mpdu = prism2_wep_encrypt,
- 	.decrypt_mpdu = prism2_wep_decrypt,
- 	.encrypt_msdu = NULL,
 diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c
 index 321287b..22abfca 100644
 --- a/net/ieee80211/ieee80211_module.c
@@ -491,7 +447,7 @@
  static int show_debug_level(char *page, char **start, off_t offset,
  			    int count, int *eof, void *data)
 diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c
-index 4cc6f41..9943096 100644
+index 5e33803..64eceb7 100644
 --- a/net/ieee80211/ieee80211_rx.c
 +++ b/net/ieee80211/ieee80211_rx.c
 @@ -1289,9 +1289,9 @@ static inline void update_network(struct
@@ -506,32 +462,109 @@
  }
  
  static inline void ieee80211_process_probe_response(struct ieee80211_device
-diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c
-index 445f206..e5b33c8 100644
---- a/net/ieee80211/ieee80211_tx.c
-+++ b/net/ieee80211/ieee80211_tx.c
-@@ -288,7 +288,7 @@ int ieee80211_xmit(struct sk_buff *skb, 
- 	/* Determine total amount of storage required for TXB packets */
- 	bytes = skb->len + SNAP_SIZE + sizeof(u16);
- 
--	if (host_encrypt)
-+	if (host_encrypt || host_build_iv)
- 		fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA |
- 		    IEEE80211_FCTL_PROTECTED;
- 	else
 diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c
-index 181755f..406d5b9 100644
+index 406d5b9..2f16cbe 100644
 --- a/net/ieee80211/ieee80211_wx.c
 +++ b/net/ieee80211/ieee80211_wx.c
-@@ -284,7 +284,7 @@ int ieee80211_wx_set_encode(struct ieee8
- 	};
- 	int i, key, key_provided, len;
- 	struct ieee80211_crypt_data **crypt;
--	int host_crypto = ieee->host_encrypt || ieee->host_decrypt;
-+	int host_crypto = ieee->host_encrypt || ieee->host_decrypt || ieee->host_build_iv;
+@@ -726,9 +726,98 @@ int ieee80211_wx_get_encodeext(struct ie
+ 	return 0;
+ }
  
- 	IEEE80211_DEBUG_WX("SET_ENCODE\n");
++int ieee80211_wx_set_auth(struct net_device *dev,
++			  struct iw_request_info *info,
++			  union iwreq_data *wrqu,
++			  char *extra)
++{
++	struct ieee80211_device *ieee = netdev_priv(dev);
++	unsigned long flags;
++	int err = 0;
++
++	spin_lock_irqsave(&ieee->lock, flags);
++	
++	switch (wrqu->param.flags & IW_AUTH_INDEX) {
++	case IW_AUTH_WPA_VERSION:
++	case IW_AUTH_CIPHER_PAIRWISE:
++	case IW_AUTH_CIPHER_GROUP:
++	case IW_AUTH_KEY_MGMT:
++		/*
++		 * Host AP driver does not use these parameters and allows
++		 * wpa_supplicant to control them internally.
++		 */
++		break;
++	case IW_AUTH_TKIP_COUNTERMEASURES:
++		break;		/* FIXME */
++	case IW_AUTH_DROP_UNENCRYPTED:
++		ieee->drop_unencrypted = !!wrqu->param.value;
++		break;
++	case IW_AUTH_80211_AUTH_ALG:
++		break;		/* FIXME */
++	case IW_AUTH_WPA_ENABLED:
++		ieee->privacy_invoked = ieee->wpa_enabled = !!wrqu->param.value;
++		break;
++	case IW_AUTH_RX_UNENCRYPTED_EAPOL:
++		ieee->ieee802_1x = !!wrqu->param.value;
++		break;
++	case IW_AUTH_PRIVACY_INVOKED:
++		ieee->privacy_invoked = !!wrqu->param.value;
++		break;
++	default:
++		err = -EOPNOTSUPP;
++		break;
++	}
++	spin_unlock_irqrestore(&ieee->lock, flags);
++	return err;
++}
++
++int ieee80211_wx_get_auth(struct net_device *dev,
++			  struct iw_request_info *info,
++			  union iwreq_data *wrqu,
++			  char *extra)
++{
++	struct ieee80211_device *ieee = netdev_priv(dev);
++	unsigned long flags;
++	int err = 0;
++
++	spin_lock_irqsave(&ieee->lock, flags);
++	
++	switch (wrqu->param.flags & IW_AUTH_INDEX) {
++	case IW_AUTH_WPA_VERSION:
++	case IW_AUTH_CIPHER_PAIRWISE:
++	case IW_AUTH_CIPHER_GROUP:
++	case IW_AUTH_KEY_MGMT:
++	case IW_AUTH_TKIP_COUNTERMEASURES:		/* FIXME */
++	case IW_AUTH_80211_AUTH_ALG:			/* FIXME */
++		/*
++		 * Host AP driver does not use these parameters and allows
++		 * wpa_supplicant to control them internally.
++		 */
++		err = -EOPNOTSUPP;
++		break;
++	case IW_AUTH_DROP_UNENCRYPTED:
++		wrqu->param.value = ieee->drop_unencrypted;
++		break;
++	case IW_AUTH_WPA_ENABLED:
++		wrqu->param.value = ieee->wpa_enabled;
++		break;
++	case IW_AUTH_RX_UNENCRYPTED_EAPOL:
++		wrqu->param.value = ieee->ieee802_1x;
++		break;
++	default:
++		err = -EOPNOTSUPP;
++		break;
++	}
++	spin_unlock_irqrestore(&ieee->lock, flags);
++	return err;
++}
++
+ EXPORT_SYMBOL(ieee80211_wx_set_encodeext);
+ EXPORT_SYMBOL(ieee80211_wx_get_encodeext);
  
+ EXPORT_SYMBOL(ieee80211_wx_get_scan);
+ EXPORT_SYMBOL(ieee80211_wx_set_encode);
+ EXPORT_SYMBOL(ieee80211_wx_get_encode);
++
++EXPORT_SYMBOL_GPL(ieee80211_wx_set_auth);
++EXPORT_SYMBOL_GPL(ieee80211_wx_get_auth);
 diff --git a/net/ieee80211/softmac/Kconfig b/net/ieee80211/softmac/Kconfig
 new file mode 100644
 index 0000000..6cd9f34
@@ -565,10 +598,36 @@
 +			ieee80211softmac_event.o
 diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c b/net/ieee80211/softmac/ieee80211softmac_assoc.c
 new file mode 100644
-index 0000000..9848744
+index 0000000..b29fb1c
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
-@@ -0,0 +1,356 @@
+@@ -0,0 +1,392 @@
++/*
++ * This file contains the softmac's association logic.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#include "ieee80211softmac_priv.h"
 +
 +/*
@@ -735,9 +794,14 @@
 +	if (mac->associnfo.bssvalid)
 +		found = ieee80211softmac_get_network_by_bssid(mac, mac->associnfo.bssid);	
 +	
-+	/* Search the ieee80211 networks for this network if we didn't find it */
-+	if (!found)
++	/* Search the ieee80211 networks for this network if we didn't find it by bssid,
++	 * but only if we've scanned at least once (to get a better list of networks to
++	 * select from). If we have not scanned before, the !found logic below will be
++	 * invoked and will scan. */
++	if (!found && (mac->associnfo.scan_retry < IEEE80211SOFTMAC_ASSOC_SCAN_RETRY_LIMIT))
 +	{
++		s8 rssi = -128;	/* if I don't initialise, gcc emits an invalid warning
++				   because it cannot follow the best pointer logic. */
 +		spin_lock_irqsave(&mac->ieee->lock, flags);
 +		list_for_each_entry(net, &mac->ieee->network_list, list) {
 +			/* we're supposed to find the network with
@@ -745,7 +809,7 @@
 +			 * any network with a specific ESSID, and many
 +			 * different ones could have that.
 +			 *
-+			 * I'll for now implement just finding one at all 
++			 * I'll for now just go with the reported rssi.
 +			 *
 +			 * We also should take into account the rateset
 +			 * here to find the best BSSID to try.
@@ -753,15 +817,17 @@
 +			if (network_matches_request(mac, net)) {
 +				if (!best) {
 +					best = net;
++					rssi = best->stats.rssi;
 +					continue;
 +				}
 +				/* we already had a matching network, so
 +				 * compare their properties to get the
 +				 * better of the two ... (see above)
 +				 */
-+				/* TODO */
-+				/* for now, just */
-+				break;
++				if (rssi < net->stats.rssi) {
++					best = net;
++					rssi = best->stats.rssi;
++				}
 +			}
 +		}
 +		/* if we unlock here, we might get interrupted and the `best'
@@ -785,12 +851,10 @@
 +			 * NB: this also happens if we had no memory to copy the network info...
 +			 * Maybe we can hope to have more memory after scanning finishes ;)
 +			 */
-+			dprintk(KERN_INFO PFX "Associate: Network not known, trying to initiate scan: ");
++			dprintk(KERN_INFO PFX "Associate: Scanning for networks first.\n");
 +			ieee80211softmac_notify(mac->dev, IEEE80211SOFTMAC_EVENT_SCAN_FINISHED, ieee80211softmac_assoc_notify, NULL);
 +			if (ieee80211softmac_start_scan(mac))
-+				dprintk("failed.\n");
-+			else
-+				dprintk("ok.\n");
++				dprintk(KERN_INFO PFX "Associate: failed to initiate scan. Is device up?\n");
 +			return;
 +		}
 +		else {
@@ -799,7 +863,7 @@
 +			mac->associated = 0;
 +			spin_unlock_irqrestore(&mac->lock, flags);
 +
-+			dprintk(KERN_INFO PFX "Unable to find network after scan!\n");
++			dprintk(KERN_INFO PFX "Unable to find matching network after scan!\n");
 +			ieee80211softmac_call_events(mac, IEEE80211SOFTMAC_EVENT_ASSOCIATE_NET_NOT_FOUND, NULL);
 +			return;
 +		}
@@ -839,7 +903,7 @@
 +	if (mac->set_bssid_filter)
 +		mac->set_bssid_filter(mac->dev, net->bssid);
 +	memcpy(mac->ieee->bssid, net->bssid, ETH_ALEN);
-+	mac->dev->flags |= IFF_RUNNING;
++	netif_carrier_on(mac->dev);
 +	
 +	mac->association_id = le16_to_cpup(&resp->aid);
 +}
@@ -916,21 +980,52 @@
 +{
 +	struct ieee80211softmac_device *mac = ieee80211_priv(dev);
 +	unsigned long flags;
++	if (memcmp(disassoc->header.addr2, mac->associnfo.bssid, ETH_ALEN))
++		return 0;
++	if (memcmp(disassoc->header.addr1, mac->dev->dev_addr, ETH_ALEN))
++		return 0;
 +	dprintk(KERN_INFO PFX "got disassoc frame\n");
-+	
++	netif_carrier_off(dev);
 +	spin_lock_irqsave(&mac->lock, flags);
 +	mac->associnfo.bssvalid = 0;
 +	mac->associated = 0;
++	schedule_work(&mac->associnfo.work);
 +	spin_unlock_irqrestore(&mac->lock, flags);
 +	
 +	return 0;
 +}
 diff --git a/net/ieee80211/softmac/ieee80211softmac_auth.c b/net/ieee80211/softmac/ieee80211softmac_auth.c
 new file mode 100644
-index 0000000..5a77352
+index 0000000..84ad029
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_auth.c
-@@ -0,0 +1,348 @@
+@@ -0,0 +1,376 @@
++/*
++ * This file contains the softmac's authentication logic.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#include "ieee80211softmac_priv.h"
 +
 +static void ieee80211softmac_auth_queue(void *data);
@@ -1211,6 +1306,8 @@
 +		kfree(net->challenge);
 +	kfree(net);
 +	
++	/* can't transmit data right now... */
++	netif_carrier_off(mac->dev);
 +	/* let's try to re-associate */
 +	schedule_work(&mac->associnfo.work);
 +	spin_unlock_irqrestore(&mac->lock, flags);
@@ -1281,16 +1378,40 @@
 +}
 diff --git a/net/ieee80211/softmac/ieee80211softmac_event.c b/net/ieee80211/softmac/ieee80211softmac_event.c
 new file mode 100644
-index 0000000..b640a58
+index 0000000..0ed8e30
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_event.c
-@@ -0,0 +1,135 @@
-+#include "ieee80211softmac_priv.h"
-+
+@@ -0,0 +1,159 @@
 +/*
 + * Event system
-+ * Also see comments in public header file
++ * Also see comments in public header file and longer explanation below.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 + *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
++#include "ieee80211softmac_priv.h"
++
++/*
 + * Each event has associated to it
 + *  - an event type (see constants in public header)
 + *  - an event context (see below)
@@ -1422,7 +1543,7 @@
 +}
 diff --git a/net/ieee80211/softmac/ieee80211softmac_io.c b/net/ieee80211/softmac/ieee80211softmac_io.c
 new file mode 100644
-index 0000000..a142dae
+index 0000000..febc51d
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_io.c
 @@ -0,0 +1,474 @@
@@ -1736,7 +1857,7 @@
 +{
 +	/* Allocate Packet */
 +	(*pkt) = (struct ieee80211_disassoc *)ieee80211softmac_alloc_mgt(2);
-+	if (unlikely(pkt == NULL))
++	if (unlikely((*pkt) == NULL))
 +		return 0;
 +	ieee80211softmac_hdr_3addr(mac, &((*pkt)->header), type, net->bssid, net->bssid);
 +	/* Reason */
@@ -1902,10 +2023,36 @@
 +}
 diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c b/net/ieee80211/softmac/ieee80211softmac_module.c
 new file mode 100644
-index 0000000..79ef959
+index 0000000..671f83b
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_module.c
-@@ -0,0 +1,436 @@
+@@ -0,0 +1,456 @@
++/*
++ * Contains some basic softmac functions along with module registration code etc.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#include "ieee80211softmac_priv.h"
 +#include <linux/sort.h>
 +
@@ -1948,22 +2095,12 @@
 +	softmac->txrates.default_rate = IEEE80211_CCK_RATE_1MB;
 +	softmac->txrates.default_fallback = IEEE80211_CCK_RATE_1MB;
 +
-+	/* should we also assign softmac->mgmt_xmit here so
-+	 * that it is always valid? If so, we probably want
-+	 * to define a new function for that which just
-+	 * wraps ieee80211_tx_frame
-+	 */
++	/* to start with, we can't send anything ... */
++	netif_carrier_off(dev);
 +	
-+	/* until associated, we're not ready */
-+	dev->flags &= ~IFF_RUNNING;
-+
 +	return dev;
-+
-+err_free_ieee80211:
-+ 	free_ieee80211(dev);
-+
-+	return NULL;
 +}
++EXPORT_SYMBOL_GPL(alloc_ieee80211softmac);
 +
 +/* Clears the pending work queue items, stops all scans, etc. */
 +void 
@@ -1996,7 +2133,7 @@
 +	spin_unlock_irqrestore(&sm->lock, flags);
 +	flush_scheduled_work();
 +
-+	// now we should be save and no longer need locking...
++	/* now we should be save and no longer need locking... */
 +	spin_lock_irqsave(&sm->lock, flags);
 +	/* Free all pending auth work items */
 +	list_for_each_entry_safe(authptr, authtmp, &sm->auth_queue, list) {
@@ -2020,6 +2157,7 @@
 +
 +	spin_unlock_irqrestore(&sm->lock, flags);
 +}
++EXPORT_SYMBOL_GPL(ieee80211softmac_clear_pending_work);
 +
 +void free_ieee80211softmac(struct net_device *dev)
 +{
@@ -2029,6 +2167,7 @@
 +	kfree(sm->wpa.IE);
 +	free_ieee80211(dev);
 +}
++EXPORT_SYMBOL_GPL(free_ieee80211softmac);
 +
 +static void ieee80211softmac_start_check_rates(struct ieee80211softmac_device *mac)
 +{
@@ -2087,6 +2226,7 @@
 +	if (mac->txrates_change)
 +		mac->txrates_change(dev, change, &oldrates);
 +}
++EXPORT_SYMBOL_GPL(ieee80211softmac_start);
 +
 +void ieee80211softmac_stop(struct net_device *dev)
 +{
@@ -2094,6 +2234,7 @@
 +
 +	ieee80211softmac_clear_pending_work(mac);
 +}
++EXPORT_SYMBOL_GPL(ieee80211softmac_stop);
 +
 +void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates)
 +{
@@ -2105,6 +2246,7 @@
 +	mac->ratesinfo.count = count;
 +	spin_unlock_irqrestore(&mac->lock, flags);
 +}
++EXPORT_SYMBOL_GPL(ieee80211softmac_set_rates);
 +
 +static u8 raise_rate(struct ieee80211softmac_device *mac, u8 rate)
 +{
@@ -2187,6 +2329,7 @@
 +
 +	spin_unlock_irqrestore(&mac->lock, flags);
 +}
++EXPORT_SYMBOL_GPL(ieee80211softmac_fragment_lost);
 +
 +static int rate_cmp(const void *a_, const void *b_) {
 +	u8 *a, *b;
@@ -2334,20 +2477,44 @@
 +}
 +
 +MODULE_LICENSE("GPL");
-+
-+EXPORT_SYMBOL_GPL(alloc_ieee80211softmac);
-+EXPORT_SYMBOL_GPL(free_ieee80211softmac);
-+EXPORT_SYMBOL_GPL(ieee80211softmac_set_rates);
-+EXPORT_SYMBOL_GPL(ieee80211softmac_start);
-+EXPORT_SYMBOL_GPL(ieee80211softmac_stop);
-+EXPORT_SYMBOL_GPL(ieee80211softmac_fragment_lost);
-+EXPORT_SYMBOL_GPL(ieee80211softmac_clear_pending_work);
++MODULE_AUTHOR("Johannes Berg");
++MODULE_AUTHOR("Joseph Jezak");
++MODULE_AUTHOR("Larry Finger");
++MODULE_AUTHOR("Danny van Dyk");
++MODULE_AUTHOR("Michael Buesch");
++MODULE_DESCRIPTION("802.11 software MAC");
 diff --git a/net/ieee80211/softmac/ieee80211softmac_priv.h b/net/ieee80211/softmac/ieee80211softmac_priv.h
 new file mode 100644
-index 0000000..44a8ba4
+index 0000000..5b98c3e
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_priv.h
-@@ -0,0 +1,211 @@
+@@ -0,0 +1,237 @@
++/*
++ * Internal softmac API definitions.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
++ */
++
 +#ifndef IEEE80211SOFTMAC_PRIV_H_
 +#define IEEE80211SOFTMAC_PRIV_H_
 +
@@ -2561,14 +2728,36 @@
 +#endif /* IEEE80211SOFTMAC_PRIV_H_ */
 diff --git a/net/ieee80211/softmac/ieee80211softmac_scan.c b/net/ieee80211/softmac/ieee80211softmac_scan.c
 new file mode 100644
-index 0000000..1a1eda4
+index 0000000..d90d31f
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_scan.c
-@@ -0,0 +1,216 @@
+@@ -0,0 +1,237 @@
 +/*
 + * Scanning routines.
 + *
 + * These are not exported because they're assigned to the function pointers.
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
 + */
 +
 +#include <linux/completion.h>
@@ -2651,7 +2840,6 @@
 +
 +		if (!invalid_channel) {
 +			sm->set_channel(sm->dev, si->channels[current_channel_idx].channel);
-+			//TODO: Probe the channel
 +			// FIXME make this user configurable (active/passive)
 +			if(ieee80211softmac_send_mgt_frame(sm, NULL, IEEE80211_STYPE_PROBE_REQ, 0))
 +				printkl(KERN_DEBUG PFX "Sending Probe Request Failed\n");
@@ -2783,12 +2971,34 @@
 +EXPORT_SYMBOL_GPL(ieee80211softmac_scan_finished);
 diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c b/net/ieee80211/softmac/ieee80211softmac_wx.c
 new file mode 100644
-index 0000000..ca11737
+index 0000000..17d30f4
 --- /dev/null
 +++ b/net/ieee80211/softmac/ieee80211softmac_wx.c
-@@ -0,0 +1,390 @@
+@@ -0,0 +1,412 @@
 +/*
 + * This file contains our _wx handlers. Make sure you EXPORT_SYMBOL_GPL them
++ *
++ * Copyright (c) 2005 Johannes Berg <johannes at sipsolutions.net>
++ *                    Joseph Jezak <josejx at gentoo.org>
++ *                    Larry Finger <Larry.Finger at lwfinger.net>
++ *                    Danny van Dyk <kugelfang at gentoo.org>
++ *                    Michael Buesch <mbuesch at freenet.de>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of version 2 of the GNU General Public License as
++ * published by the Free Software Foundation.
++ *
++ * 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.
++ *
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
++ *
++ * The full GNU General Public License is included in this distribution in the
++ * file called COPYING.
 + */
 +
 +#include "ieee80211softmac_priv.h"

linux-2.6-tux.patch:
 arch/alpha/kernel/systbls.S      |    8 
 arch/i386/kernel/syscall_table.S |   10 
 arch/ia64/kernel/entry.S         |    8 
 arch/ia64/kernel/ia64_ksyms.c    |    5 
 arch/x86_64/ia32/ia32entry.S     |   10 
 fs/dcache.c                      |   36 
 fs/exec.c                        |    2 
 fs/fcntl.c                       |    4 
 fs/namei.c                       |   18 
 fs/namespace.c                   |    2 
 fs/open.c                        |    4 
 fs/pipe.c                        |    2 
 fs/read_write.c                  |    2 
 include/asm-alpha/fcntl.h        |    1 
 include/asm-generic/fcntl.h      |    4 
 include/asm-i386/unistd.h        |    5 
 include/asm-ia64/unistd.h        |    2 
 include/asm-sparc/fcntl.h        |    1 
 include/asm-sparc64/fcntl.h      |    1 
 include/asm-x86_64/unistd.h      |   10 
 include/linux/buffer_head.h      |    1 
 include/linux/dcache.h           |    8 
 include/linux/errno.h            |    3 
 include/linux/file.h             |    2 
 include/linux/fs.h               |    7 
 include/linux/kmod.h             |    2 
 include/linux/namei.h            |    2 
 include/linux/net.h              |    1 
 include/linux/sched.h            |    5 
 include/linux/skbuff.h           |    2 
 include/linux/socket.h           |    5 
 include/linux/sysctl.h           |   50 
 include/net/sock.h               |    8 
 include/net/tcp.h                |    3 
 include/net/tux.h                |  804 ++++++++++++++
 include/net/tux_u.h              |  163 ++
 kernel/exit.c                    |    7 
 kernel/fork.c                    |    1 
 kernel/kmod.c                    |   28 
 kernel/signal.c                  |    1 
 mm/filemap.c                     |   19 
 mm/truncate.c                    |    2 
 net/Kconfig                      |    1 
 net/Makefile                     |    1 
 net/core/sock.c                  |    5 
 net/ipv4/tcp.c                   |    3 
 net/ipv4/tcp_input.c             |    1 
 net/ipv4/tcp_output.c            |    3 
 net/socket.c                     |  197 ++-
 net/tux/Kconfig                  |   25 
 net/tux/Makefile                 |   12 
 net/tux/abuf.c                   |  190 +++
 net/tux/accept.c                 |  863 +++++++++++++++
 net/tux/cachemiss.c              |  265 ++++
 net/tux/cgi.c                    |  171 +++
 net/tux/directory.c              |  302 +++++
 net/tux/extcgi.c                 |  329 +++++
 net/tux/gzip.c                   |   40 
 net/tux/input.c                  |  641 +++++++++++
 net/tux/logger.c                 |  837 ++++++++++++++
 net/tux/main.c                   | 1417 +++++++++++++++++++++++++
 net/tux/mod.c                    |  262 ++++
 net/tux/output.c                 |  352 ++++++
 net/tux/parser.h                 |  102 +
 net/tux/postpone.c               |   77 +
 net/tux/proc.c                   | 1149 ++++++++++++++++++++
 net/tux/proto_ftp.c              | 1555 +++++++++++++++++++++++++++
 net/tux/proto_http.c             | 2197 +++++++++++++++++++++++++++++++++++++++
 net/tux/redirect.c               |  172 +++
 net/tux/times.c                  |  392 ++++++
 net/tux/times.h                  |   26 
 net/tux/userspace.c              |   27 
 72 files changed, 12775 insertions(+), 98 deletions(-)

Index: linux-2.6-tux.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-tux.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-tux.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-tux.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -1,76 +1,3 @@
- arch/alpha/kernel/systbls.S      |    8 
- arch/i386/kernel/syscall_table.S |   10 
- arch/ia64/kernel/entry.S         |    8 
- arch/ia64/kernel/ia64_ksyms.c    |    5 
- arch/x86_64/ia32/ia32entry.S     |   10 
- fs/dcache.c                      |   36 
- fs/exec.c                        |    2 
- fs/fcntl.c                       |    4 
- fs/namei.c                       |   18 
- fs/namespace.c                   |    2 
- fs/open.c                        |    4 
- fs/pipe.c                        |    2 
- fs/read_write.c                  |    2 
- include/asm-alpha/fcntl.h        |    1 
- include/asm-generic/fcntl.h      |    4 
- include/asm-i386/unistd.h        |    5 
- include/asm-ia64/unistd.h        |    2 
- include/asm-sparc/fcntl.h        |    1 
- include/asm-sparc64/fcntl.h      |    1 
- include/asm-x86_64/unistd.h      |   10 
- include/linux/buffer_head.h      |    1 
- include/linux/dcache.h           |    8 
- include/linux/errno.h            |    3 
- include/linux/file.h             |    2 
- include/linux/fs.h               |    7 
- include/linux/kmod.h             |    2 
- include/linux/namei.h            |    2 
- include/linux/net.h              |    1 
- include/linux/sched.h            |    5 
- include/linux/skbuff.h           |    2 
- include/linux/socket.h           |    5 
- include/linux/sysctl.h           |   50 
- include/net/sock.h               |    8 
- include/net/tcp.h                |    3 
- include/net/tux.h                |  804 ++++++++++++++
- include/net/tux_u.h              |  163 ++
- kernel/exit.c                    |    7 
- kernel/fork.c                    |    1 
- kernel/kmod.c                    |   28 
- kernel/signal.c                  |    1 
- mm/filemap.c                     |   19 
- mm/truncate.c                    |    2 
- net/Kconfig                      |    1 
- net/Makefile                     |    1 
- net/core/sock.c                  |    5 
- net/ipv4/tcp.c                   |    3 
- net/ipv4/tcp_input.c             |    1 
- net/ipv4/tcp_output.c            |    1 
- net/socket.c                     |  197 ++-
- net/tux/Kconfig                  |   25 
- net/tux/Makefile                 |   12 
- net/tux/abuf.c                   |  190 +++
- net/tux/accept.c                 |  863 +++++++++++++++
- net/tux/cachemiss.c              |  265 ++++
- net/tux/cgi.c                    |  171 +++
- net/tux/directory.c              |  302 +++++
- net/tux/extcgi.c                 |  329 +++++
- net/tux/gzip.c                   |   40 
- net/tux/input.c                  |  641 +++++++++++
- net/tux/logger.c                 |  837 ++++++++++++++
- net/tux/main.c                   | 1417 +++++++++++++++++++++++++
- net/tux/mod.c                    |  262 ++++
- net/tux/output.c                 |  352 ++++++
- net/tux/parser.h                 |  102 +
- net/tux/postpone.c               |   77 +
- net/tux/proc.c                   | 1149 ++++++++++++++++++++
- net/tux/proto_ftp.c              | 1555 +++++++++++++++++++++++++++
- net/tux/proto_http.c             | 2197 +++++++++++++++++++++++++++++++++++++++
- net/tux/redirect.c               |  172 +++
- net/tux/times.c                  |  392 ++++++
- net/tux/times.h                  |   26 
- net/tux/userspace.c              |   27 
- 72 files changed, 12773 insertions(+), 98 deletions(-)
 
 Index: linux/arch/alpha/kernel/systbls.S
 ===================================================================
@@ -96,7 +23,7 @@
 ===================================================================
 --- linux.orig/arch/i386/kernel/syscall_table.S
 +++ linux/arch/i386/kernel/syscall_table.S
-@@ -222,7 +222,15 @@ ENTRY(sys_call_table)
+@@ -221,7 +221,15 @@ ENTRY(sys_call_table)
  	.long sys_madvise
  	.long sys_getdents64	/* 220 */
  	.long sys_fcntl64
@@ -137,7 +64,7 @@
 ===================================================================
 --- linux.orig/arch/ia64/kernel/ia64_ksyms.c
 +++ linux/arch/ia64/kernel/ia64_ksyms.c
-@@ -58,6 +58,11 @@ EXPORT_SYMBOL(__strlen_user);
+@@ -59,6 +59,11 @@ EXPORT_SYMBOL(__strlen_user);
  EXPORT_SYMBOL(__strncpy_from_user);
  EXPORT_SYMBOL(__strnlen_user);
  
@@ -178,11 +105,11 @@
  {
  	if (dentry->d_op && dentry->d_op->d_release)
  		dentry->d_op->d_release(dentry);
-+	if (dentry->d_extra_attributes) {
-+		kfree(dentry->d_extra_attributes);
-+		dentry->d_extra_attributes = NULL;
-+	}
-  	call_rcu(&dentry->d_rcu, d_callback);
++ 	if (dentry->d_extra_attributes) {
++ 		kfree(dentry->d_extra_attributes);
++ 		dentry->d_extra_attributes = NULL;
++ 	}
+  	call_rcu(&dentry->d_u.d_rcu, d_callback);
  }
  
 @@ -742,6 +746,7 @@ struct dentry *d_alloc(struct dentry * p
@@ -197,18 +124,18 @@
  	/* Unhash the target: dput() will then get rid of it */
  	__d_drop(target);
  
-+	/* flush any possible attributes */
-+	if (dentry->d_extra_attributes) {
-+		kfree(dentry->d_extra_attributes);
-+		dentry->d_extra_attributes = NULL;
-+	}
-+	if (target->d_extra_attributes) {
-+		kfree(target->d_extra_attributes);
-+		target->d_extra_attributes = NULL;
-+	}
-+
- 	list_del(&dentry->d_child);
- 	list_del(&target->d_child);
++ 	/* flush any possible attributes */
++ 	if (dentry->d_extra_attributes) {
++ 		kfree(dentry->d_extra_attributes);
++ 		dentry->d_extra_attributes = NULL;
++ 	}
++ 	if (target->d_extra_attributes) {
++ 		kfree(target->d_extra_attributes);
++ 		target->d_extra_attributes = NULL;
++ 	}
++ 
+ 	list_del(&dentry->d_u.d_child);
+ 	list_del(&target->d_u.d_child);
  
 @@ -1353,7 +1368,7 @@ already_unhashed:
   *
@@ -256,7 +183,7 @@
 ===================================================================
 --- linux.orig/fs/exec.c
 +++ linux/fs/exec.c
-@@ -1450,6 +1450,8 @@ int do_coredump(long signr, int exit_cod
+@@ -1440,6 +1440,8 @@ int do_coredump(long signr, int exit_cod
  	binfmt = current->binfmt;
  	if (!binfmt || !binfmt->core_dump)
  		goto fail;
@@ -375,7 +302,7 @@
 ===================================================================
 --- linux.orig/fs/open.c
 +++ linux/fs/open.c
-@@ -542,6 +542,8 @@ out:
+@@ -543,6 +543,8 @@ out:
  	return error;
  }
  
@@ -384,7 +311,7 @@
  asmlinkage long sys_fchdir(unsigned int fd)
  {
  	struct file *file;
-@@ -598,6 +600,8 @@ out:
+@@ -599,6 +601,8 @@ out:
  	return error;
  }
  
@@ -410,7 +337,7 @@
 ===================================================================
 --- linux.orig/fs/read_write.c
 +++ linux/fs/read_write.c
-@@ -360,6 +360,8 @@ asmlinkage ssize_t sys_write(unsigned in
+@@ -374,6 +374,8 @@ asmlinkage ssize_t sys_write(unsigned in
  	return ret;
  }
  
@@ -450,15 +377,15 @@
 ===================================================================
 --- linux.orig/include/asm-i386/unistd.h
 +++ linux/include/asm-i386/unistd.h
-@@ -302,6 +302,7 @@
+@@ -303,6 +303,7 @@
  
- #define NR_syscalls 294
+ #define NR_syscalls 295
  
 +#ifndef __KERNEL_SYSCALLS_NO_ERRNO__
  /*
   * user-visible error numbers are in the range -1 - -128: see
   * <asm-i386/errno.h>
-@@ -315,6 +316,10 @@ do { \
+@@ -316,6 +317,10 @@ do { \
  	return (type) (res); \
  } while (0)
  
@@ -531,8 +458,8 @@
 ===================================================================
 --- linux.orig/include/linux/buffer_head.h
 +++ linux/include/linux/buffer_head.h
-@@ -200,6 +200,7 @@ int cont_prepare_write(struct page*, uns
- int generic_cont_expand(struct inode *inode, loff_t size) ;
+@@ -201,6 +201,7 @@ int generic_cont_expand(struct inode *in
+ int generic_cont_expand_simple(struct inode *inode, loff_t size);
  int block_commit_write(struct page *page, unsigned from, unsigned to);
  int block_sync_page(struct page *);
 +void flush_inode_pages (struct inode * inode);
@@ -543,15 +470,15 @@
 ===================================================================
 --- linux.orig/include/linux/dcache.h
 +++ linux/include/linux/dcache.h
-@@ -102,6 +102,7 @@ struct dentry {
+@@ -108,6 +108,7 @@ struct dentry {
  	struct dentry_operations *d_op;
  	struct super_block *d_sb;	/* The root of the dentry tree */
  	void *d_fsdata;			/* fs-specific data */
-+	void * d_extra_attributes;	/* TUX-specific data */
-  	struct rcu_head d_rcu;
++	void *d_extra_attributes;	/* TUX-specific data */
  	struct dcookie_struct *d_cookie; /* cookie, if any */
  	int d_mounted;
-@@ -211,6 +212,7 @@ extern void shrink_dcache_sb(struct supe
+ 	unsigned char d_iname[DNAME_INLINE_LEN_MIN];	/* small names */
+@@ -216,6 +217,7 @@ extern void shrink_dcache_sb(struct supe
  extern void shrink_dcache_parent(struct dentry *);
  extern void shrink_dcache_anon(struct hlist_head *);
  extern int d_invalidate(struct dentry *);
@@ -559,7 +486,7 @@
  
  /* only used at mount-time */
  extern struct dentry * d_alloc_root(struct inode *);
-@@ -271,8 +273,12 @@ extern struct dentry * __d_lookup(struct
+@@ -276,8 +278,12 @@ extern struct dentry * __d_lookup(struct
  /* validate "insecure" dentry pointer */
  extern int d_validate(struct dentry *, struct dentry *);
  
@@ -602,7 +529,7 @@
 ===================================================================
 --- linux.orig/include/linux/fs.h
 +++ linux/include/linux/fs.h
-@@ -1537,7 +1537,7 @@ ssize_t generic_file_write_nolock(struct
+@@ -1570,7 +1570,7 @@ ssize_t generic_file_write_nolock(struct
  extern ssize_t generic_file_sendfile(struct file *, loff_t *, size_t, read_actor_t, void *);
  extern void do_generic_mapping_read(struct address_space *mapping,
  				    struct file_ra_state *, struct file *,
@@ -611,7 +538,7 @@
  extern void
  file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
  extern ssize_t generic_file_readv(struct file *filp, const struct iovec *iov, 
-@@ -1569,14 +1569,15 @@ static inline int xip_truncate_page(stru
+@@ -1602,14 +1602,15 @@ static inline int xip_truncate_page(stru
  
  static inline void do_generic_file_read(struct file * filp, loff_t *ppos,
  					read_descriptor_t * desc,
@@ -670,7 +597,7 @@
 ===================================================================
 --- linux.orig/include/linux/sched.h
 +++ linux/include/linux/sched.h
-@@ -807,6 +807,11 @@ struct task_struct {
+@@ -804,6 +804,11 @@ struct task_struct {
  	int (*notifier)(void *priv);
  	void *notifier_data;
  	sigset_t *notifier_mask;
@@ -686,7 +613,7 @@
 ===================================================================
 --- linux.orig/include/linux/skbuff.h
 +++ linux/include/linux/skbuff.h
-@@ -1327,6 +1327,8 @@ static inline unsigned int skb_checksum_
+@@ -1328,6 +1328,8 @@ static inline unsigned int skb_checksum_
  		__skb_checksum_complete(skb);
  }
  
@@ -699,7 +626,7 @@
 ===================================================================
 --- linux.orig/include/linux/socket.h
 +++ linux/include/linux/socket.h
-@@ -299,6 +299,11 @@ extern int move_addr_to_user(void *kaddr
+@@ -298,6 +298,11 @@ extern int move_addr_to_user(void *kaddr
  extern int move_addr_to_kernel(void __user *uaddr, int ulen, void *kaddr);
  extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
  
@@ -715,7 +642,7 @@
 ===================================================================
 --- linux.orig/include/linux/sysctl.h
 +++ linux/include/linux/sysctl.h
-@@ -205,6 +205,7 @@ enum
+@@ -207,6 +207,7 @@ enum
  	NET_SCTP=17,
  	NET_LLC=18,
  	NET_NETFILTER=19,
@@ -723,7 +650,7 @@
  };
  
  /* /proc/sys/kernel/random */
-@@ -725,6 +726,55 @@ enum {
+@@ -731,6 +732,55 @@ enum {
  	NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
  };
  
@@ -830,7 +757,7 @@
 ===================================================================
 --- linux.orig/include/net/tcp.h
 +++ linux/include/net/tcp.h
-@@ -310,6 +310,8 @@ extern void			tcp_shutdown (struct sock 
+@@ -263,6 +263,8 @@ extern void			tcp_shutdown (struct sock 
  
  extern int			tcp_v4_rcv(struct sk_buff *skb);
  
@@ -839,7 +766,7 @@
  extern int			tcp_v4_remember_stamp(struct sock *sk);
  
  extern int		    	tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
-@@ -467,6 +469,7 @@ extern int  tcp_send_synack(struct sock 
+@@ -422,6 +424,7 @@ extern int  tcp_send_synack(struct sock 
  extern void tcp_push_one(struct sock *, unsigned int mss_now);
  extern void tcp_send_ack(struct sock *sk);
  extern void tcp_send_delayed_ack(struct sock *sk);
@@ -1828,7 +1755,7 @@
 ===================================================================
 --- linux.orig/kernel/exit.c
 +++ linux/kernel/exit.c
-@@ -845,6 +845,13 @@ fastcall NORET_TYPE void do_exit(long co
+@@ -844,6 +844,13 @@ fastcall NORET_TYPE void do_exit(long co
   		del_timer_sync(&tsk->signal->real_timer);
  		exit_itimers(tsk->signal);
  		acct_process(code);
@@ -1846,7 +1773,7 @@
 ===================================================================
 --- linux.orig/kernel/fork.c
 +++ linux/kernel/fork.c
-@@ -896,6 +896,7 @@ static task_t *copy_process(unsigned lon
+@@ -901,6 +901,7 @@ static task_t *copy_process(unsigned lon
  	p = dup_task_struct(current);
  	if (!p)
  		goto fork_out;
@@ -1912,7 +1839,7 @@
 ===================================================================
 --- linux.orig/kernel/signal.c
 +++ linux/kernel/signal.c
-@@ -430,6 +430,7 @@ flush_signal_handlers(struct task_struct
+@@ -440,6 +440,7 @@ flush_signal_handlers(struct task_struct
  	}
  }
  
@@ -1924,7 +1851,7 @@
 ===================================================================
 --- linux.orig/mm/filemap.c
 +++ linux/mm/filemap.c
-@@ -718,7 +718,8 @@ void do_generic_mapping_read(struct addr
+@@ -733,7 +733,8 @@ void do_generic_mapping_read(struct addr
  			     struct file *filp,
  			     loff_t *ppos,
  			     read_descriptor_t *desc,
@@ -1934,7 +1861,7 @@
  {
  	struct inode *inode = mapping->host;
  	unsigned long index;
-@@ -768,11 +769,21 @@ void do_generic_mapping_read(struct addr
+@@ -783,11 +784,21 @@ void do_generic_mapping_read(struct addr
  find_page:
  		page = find_get_page(mapping, index);
  		if (unlikely(page == NULL)) {
@@ -1957,7 +1884,7 @@
  page_ok:
  
  		/* If users can be writing to this page using arbitrary
-@@ -1028,7 +1039,7 @@ __generic_file_aio_read(struct kiocb *io
+@@ -1048,7 +1059,7 @@ __generic_file_aio_read(struct kiocb *io
  			if (desc.count == 0)
  				continue;
  			desc.error = 0;
@@ -1966,7 +1893,7 @@
  			retval += desc.written;
  			if (desc.error) {
  				retval = retval ?: desc.error;
-@@ -1102,7 +1113,7 @@ ssize_t generic_file_sendfile(struct fil
+@@ -1122,7 +1133,7 @@ ssize_t generic_file_sendfile(struct fil
  	desc.arg.data = target;
  	desc.error = 0;
  
@@ -1979,7 +1906,7 @@
 ===================================================================
 --- linux.orig/mm/truncate.c
 +++ linux/mm/truncate.c
-@@ -224,6 +224,8 @@ unlock:
+@@ -253,6 +253,8 @@ unlock:
  	return ret;
  }
  
@@ -2048,7 +1975,7 @@
  {
  	struct tcp_sock *tp = tcp_sk(sk);
  	int time_to_ack = 0;
-@@ -2144,3 +2144,4 @@ EXPORT_SYMBOL(tcp_sendpage);
+@@ -2142,3 +2142,4 @@ EXPORT_SYMBOL(tcp_sendpage);
  EXPORT_SYMBOL(tcp_setsockopt);
  EXPORT_SYMBOL(tcp_shutdown);
  EXPORT_SYMBOL(tcp_statistics);
@@ -2057,7 +1984,7 @@
 ===================================================================
 --- linux.orig/net/ipv4/tcp_input.c
 +++ linux/net/ipv4/tcp_input.c
-@@ -3433,6 +3433,7 @@ static int tcp_prune_queue(struct sock *
+@@ -3473,6 +3473,7 @@ static int tcp_prune_queue(struct sock *
  	return -1;
  }
  
@@ -2069,7 +1996,16 @@
 ===================================================================
 --- linux.orig/net/ipv4/tcp_output.c
 +++ linux/net/ipv4/tcp_output.c
-@@ -1069,6 +1069,7 @@ void __tcp_push_pending_frames(struct so
+@@ -791,6 +791,8 @@ unsigned int tcp_current_mss(struct sock
+ 	return mss_now;
+ }
+ 
++EXPORT_SYMBOL_GPL(tcp_current_mss);
++
+ /* Congestion window validation. (RFC2861) */
+ 
+ static void tcp_cwnd_validate(struct sock *sk, struct tcp_sock *tp)
+@@ -1156,6 +1158,7 @@ void __tcp_push_pending_frames(struct so
  			tcp_check_probe_timer(sk, tp);
  	}
  }
@@ -2273,7 +2209,7 @@
  /*
   *	In theory you can't get an open on this inode, but /proc provides
   *	a back door. Remember to keep it shut otherwise you'll let the
-@@ -1041,6 +1055,8 @@ static int sock_fasync(int fd, struct fi
+@@ -1044,6 +1058,8 @@ static int sock_fasync(int fd, struct fi
  	}
  
  out:
@@ -2282,9 +2218,9 @@
  	release_sock(sock->sk);
  	return 0;
  }
-@@ -2067,6 +2083,51 @@ void __init sock_init(void)
- #endif
- }
+@@ -2072,6 +2088,51 @@ static int __init sock_init(void)
+ 
+ core_initcall(sock_init);	/* early initcall */
  
 +int tux_Dprintk;
 +int tux_TDprintk;
@@ -5936,7 +5872,7 @@
 +	inode = log_filp->f_dentry->d_inode;
 +	mapping = inode->i_mapping;
 +	if (mapping->nrpages > 256) {   /* batch stuff up */
-+		down(&inode->i_sem);
++		mutex_lock(&inode->i_mutex);
 +		filemap_fdatawrite(inode->i_mapping);
 +
 +		/*
@@ -5946,7 +5882,7 @@
 +		 */
 +		invalidate_mapping_pages(mapping, 0, log_filp_last_index);
 +		log_filp_last_index = log_filp->f_pos >> PAGE_CACHE_SHIFT;
-+		up(&inode->i_sem);
++		mutex_unlock(&inode->i_mutex);
 +	}
 +
 +out_lock:
@@ -13852,13 +13788,4 @@
 + *
 + ****************************************************************/
 +
---- linux-2.6.14/net/ipv4/tcp_output.c~	2005-12-12 00:42:02.000000000 -0500
-+++ linux-2.6.14/net/ipv4/tcp_output.c	2005-12-12 00:42:17.000000000 -0500
-@@ -703,6 +703,7 @@ unsigned int tcp_current_mss(struct sock
- 
- 	return mss_now;
- }
-+EXPORT_SYMBOL_GPL(tcp_current_mss);
- 
- /* Congestion window validation. (RFC2861) */
- 
+

linux-2.6-vm-clear-unreclaimable.patch:
 linux-2.6.14/mm/filemap.c    |    7 +++++++
 linux-2.6.15/mm/page_alloc.c |    5 +++++
 2 files changed, 12 insertions(+)

Index: linux-2.6-vm-clear-unreclaimable.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-vm-clear-unreclaimable.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-vm-clear-unreclaimable.patch	9 Jan 2006 20:42:13 -0000	1.1
+++ linux-2.6-vm-clear-unreclaimable.patch	26 Jan 2006 22:14:34 -0000	1.2
@@ -19,18 +19,17 @@
  	wake_up_page(page, PG_writeback);
  }
  EXPORT_SYMBOL(end_page_writeback);
---- linux-2.6.14/mm/page_alloc.c~	2005-12-10 01:47:51.000000000 -0500
-+++ linux-2.6.14/mm/page_alloc.c	2005-12-10 01:48:25.000000000 -0500
-@@ -657,6 +657,12 @@ static void fastcall free_hot_cold_page(
- 	pcp->count++;
- 	if (pcp->count >= pcp->high)
- 		pcp->count -= free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
-+	else if (zone->all_unreclaimable) {
+--- linux-2.6.15/mm/page_alloc.c~	2006-01-09 13:40:03.000000000 -0500
++++ linux-2.6.15/mm/page_alloc.c	2006-01-09 13:40:50.000000000 -0500
+@@ -722,6 +722,11 @@ static void fastcall free_hot_cold_page(
+ 	if (pcp->count >= pcp->high) {
+ 		free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
+ 		pcp->count -= pcp->batch;
++	} else if (zone->all_unreclaimable) {
 +		spin_lock(&zone->lock);
 +		zone->all_unreclaimable = 0;
 +		zone->pages_scanned = 0;
 +		spin_unlock(&zone->lock);
-+	}
+ 	}
  	local_irq_restore(flags);
  	put_cpu();
- }

linux-2.6-vm-oomkiller-debugging.patch:
 oom_kill.c |    1 +
 1 files changed, 1 insertion(+)

Index: linux-2.6-vm-oomkiller-debugging.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-vm-oomkiller-debugging.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-vm-oomkiller-debugging.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-vm-oomkiller-debugging.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -1,9 +1,9 @@
---- linux-2.6.12/mm/oom_kill.c~	2005-06-22 14:16:57.000000000 -0400
-+++ linux-2.6.12/mm/oom_kill.c	2005-06-22 14:17:35.000000000 -0400
-@@ -272,6 +272,7 @@ retry:
- 	/* Found nothing?!?! Either we hang forever, or we panic. */
+--- linux-2.6.15.noarch/mm/oom_kill.c~	2006-01-15 20:48:36.000000000 -0500
++++ linux-2.6.15.noarch/mm/oom_kill.c	2006-01-15 20:48:43.000000000 -0500
+@@ -286,6 +286,7 @@ retry:
  	if (!p) {
  		read_unlock(&tasklist_lock);
+ 		cpuset_unlock();
 +		show_mem();
  		panic("Out of memory and no killable processes...\n");
  	}

linux-2.6-vm-silence-atomic-alloc-failures.patch:
 gfp.h |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6-vm-silence-atomic-alloc-failures.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-vm-silence-atomic-alloc-failures.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-vm-silence-atomic-alloc-failures.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-vm-silence-atomic-alloc-failures.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -1,12 +1,11 @@
 Atomic failures aren't too interesting.
 
-diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/gfp.h linux-10000/include/linux/gfp.h
---- linux-3022/include/linux/gfp.h
-+++ linux-10000/include/linux/gfp.h
-@@ -47,7 +47,7 @@ struct vm_area_struct;
- 			__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \
- 			__GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP)
+--- linux-2.6.15/include/linux/gfp.h~	2006-01-12 18:48:46.000000000 -0500
++++ linux-2.6.15/include/linux/gfp.h	2006-01-12 18:48:57.000000000 -0500
+@@ -58,7 +58,7 @@ struct vm_area_struct;
+ 			__GFP_NOMEMALLOC|__GFP_HARDWALL)
  
+ /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
 -#define GFP_ATOMIC	(__GFP_HIGH)
 +#define GFP_ATOMIC	(__GFP_HIGH | __GFP_NOWARN)
  #define GFP_NOIO	(__GFP_WAIT)

linux-2.6-x86-tune-p4.patch:
 linux-2.6.12/arch/x86_64/Makefile   |    4 +---
 linux-2.6.15/arch/i386/Makefile.cpu |    2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

Index: linux-2.6-x86-tune-p4.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-x86-tune-p4.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-x86-tune-p4.patch	21 Dec 2005 11:24:51 -0000	1.2
+++ linux-2.6-x86-tune-p4.patch	26 Jan 2006 22:14:34 -0000	1.3
@@ -1,10 +1,9 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-1/arch/i386/Makefile linux-212/arch/i386/Makefile
---- linux-2.6.10/arch/i386/Makefile.cpu
-+++ linux-2.6.10/arch/i386/Makefile.cpu
-@@ -33,7 +33,7 @@ cflags-$(CONFIG_M486)		+= -march=i486
+--- linux-2.6.15/arch/i386/Makefile.cpu~	2006-01-09 11:39:04.000000000 -0500
++++ linux-2.6.15/arch/i386/Makefile.cpu	2006-01-09 11:39:36.000000000 -0500
+@@ -15,7 +15,7 @@ cflags-$(CONFIG_M486)		+= -march=i486
  cflags-$(CONFIG_M586)		+= -march=i586
  cflags-$(CONFIG_M586TSC)	+= -march=i586
- cflags-$(CONFIG_M586MMX)	+= $(call cc-option,-march=pentium-mmx,-march=i586)
+ cflags-$(CONFIG_M586MMX)	+= -march=pentium-mmx
 -cflags-$(CONFIG_M686)		+= -march=i686
 +cflags-$(CONFIG_M686)		+= -march=i686 $(call tune,pentium4)
  cflags-$(CONFIG_MPENTIUMII)	+= -march=i686 $(call tune,pentium2)

linux-2.6-xen-merge.patch:
 ./arch/i386/Kconfig                                |   76 
 ./arch/i386/boot-xen/Makefile                      |   24 
 ./arch/i386/kernel/Makefile                        |   26 
 ./arch/i386/kernel/acpi/Makefile                   |    4 
 ./arch/i386/kernel/acpi/boot-xen.c                 | 1160 ++++++++
 ./arch/i386/kernel/apic-xen.c                      |   89 
 ./arch/i386/kernel/cpu/Makefile                    |    5 
 ./arch/i386/kernel/cpu/common-xen.c                |  655 +++++
 ./arch/i386/kernel/cpu/cpufreq/Kconfig             |    2 
 ./arch/i386/kernel/cpu/mtrr/Makefile               |    7 
 ./arch/i386/kernel/cpu/mtrr/main-xen.c             |  187 +
 ./arch/i386/kernel/early_printk-xen.c              |    2 
 ./arch/i386/kernel/entry-xen.S                     |  838 ++++++
 ./arch/i386/kernel/fixup.c                         |   95 
 ./arch/i386/kernel/head-xen.S                      |  169 +
 ./arch/i386/kernel/init_task-xen.c                 |   49 
 ./arch/i386/kernel/io_apic-xen.c                   | 2725 +++++++++++++++++++++
 ./arch/i386/kernel/ioport-xen.c                    |  121 
 ./arch/i386/kernel/irq-xen.c                       |  306 ++
 ./arch/i386/kernel/ldt-xen.c                       |  262 ++
 ./arch/i386/kernel/microcode-xen.c                 |  163 +
 ./arch/i386/kernel/mpparse-xen.c                   | 1167 ++++++++
 ./arch/i386/kernel/pci-dma-xen.c                   |  302 ++
 ./arch/i386/kernel/process-xen.c                   |  839 ++++++
 ./arch/i386/kernel/quirks-xen.c                    |   49 
 ./arch/i386/kernel/setup-xen.c                     | 1868 ++++++++++++++
 ./arch/i386/kernel/smp-xen.c                       |  617 ++++
 ./arch/i386/kernel/smpalts.c                       |   85 
 ./arch/i386/kernel/smpboot.c                       |   10 
 ./arch/i386/kernel/swiotlb.c                       |  671 +++++
 ./arch/i386/kernel/time-xen.c                      |  942 +++++++
 ./arch/i386/kernel/traps-xen.c                     | 1063 ++++++++
 ./arch/i386/kernel/vmlinux.lds.S                   |    7 
 ./arch/i386/kernel/vsyscall-note-xen.S             |   32 
 ./arch/i386/mach-xen/Makefile                      |    7 
 ./arch/i386/mach-xen/setup.c                       |   37 
 ./arch/i386/mm/Makefile                            |    8 
 ./arch/i386/mm/fault-xen.c                         |  628 ++++
 ./arch/i386/mm/highmem-xen.c                       |  123 
 ./arch/i386/mm/hypervisor.c                        |  459 +++
 ./arch/i386/mm/init-xen.c                          |  833 ++++++
 ./arch/i386/mm/ioremap-xen.c                       |  493 +++
 ./arch/i386/mm/pgtable-xen.c                       |  597 ++++
 ./arch/i386/pci/Makefile                           |    5 
 ./arch/i386/pci/i386-xen.c                         |  295 ++
 ./arch/i386/pci/irq-xen.c                          | 1193 +++++++++
 ./arch/i386/power/Makefile                         |    4 
 ./arch/um/kernel/physmem.c                         |    4 
 ./arch/x86_64/Makefile                             |   16 
 ./arch/x86_64/ia32/ia32entry-xen.S                 |  676 +++++
 ./arch/x86_64/ia32/syscall32-xen.c                 |  128 
 ./arch/x86_64/ia32/syscall32_syscall-xen.S         |   28 
 ./arch/x86_64/ia32/vsyscall-int80.S                |   57 
 ./arch/x86_64/ia32/vsyscall-sigreturn.S            |    2 
 ./arch/x86_64/kernel/acpi/Makefile                 |    2 
 ./arch/x86_64/kernel/apic-xen.c                    |  198 +
 ./arch/x86_64/kernel/e820-xen.c                    |  721 +++++
 ./arch/x86_64/kernel/early_printk-xen.c            |  308 ++
 ./arch/x86_64/kernel/entry-xen.S                   | 1135 ++++++++
 ./arch/x86_64/kernel/genapic-xen.c                 |  135 +
 ./arch/x86_64/kernel/genapic_xen.c                 |  162 +
 ./arch/x86_64/kernel/head-xen.S                    |  292 ++
 ./arch/x86_64/kernel/head64-xen.c                  |  127 
 ./arch/x86_64/kernel/io_apic-xen.c                 | 2115 ++++++++++++++++
 ./arch/x86_64/kernel/ioport-xen.c                  |   57 
 ./arch/x86_64/kernel/irq-xen.c                     |  158 +
 ./arch/x86_64/kernel/ldt-xen.c                     |  273 ++
 ./arch/x86_64/kernel/mpparse-xen.c                 | 1000 +++++++
 ./arch/x86_64/kernel/pci-nommu-xen.c               |   95 
 ./arch/x86_64/kernel/process-xen.c                 |  775 +++++
 ./arch/x86_64/kernel/setup-xen.c                   | 1548 +++++++++++
 ./arch/x86_64/kernel/setup64-xen.c                 |  349 ++
 ./arch/x86_64/kernel/signal-xen.c                  |  513 +++
 ./arch/x86_64/kernel/smp-xen.c                     |  590 ++++
 ./arch/x86_64/kernel/traps-xen.c                   |  967 +++++++
 ./arch/x86_64/kernel/vsyscall-xen.c                |  241 +
 ./arch/x86_64/kernel/x8664_ksyms-xen.c             |  204 +
 ./arch/x86_64/kernel/xen_entry.S                   |   41 
 ./arch/x86_64/mm/Makefile                          |   10 
 ./arch/x86_64/mm/fault-xen.c                       |  594 ++++
 ./arch/x86_64/mm/init-xen.c                        |  974 +++++++
 ./arch/x86_64/mm/pageattr-xen.c                    |  380 ++
 ./arch/x86_64/pci/Makefile                         |    8 
 ./drivers/Kconfig                                  |   11 
 ./drivers/Makefile                                 |    1 
 ./drivers/acpi/Kconfig                             |    2 
 ./drivers/acpi/tables.c                            |    7 
 ./drivers/char/mem.c                               |    6 
 ./drivers/char/tpm/Kconfig                         |   14 
 ./drivers/char/tpm/Makefile                        |    1 
 ./drivers/char/tpm/tpm.c                           |   48 
 ./drivers/char/tpm/tpm.h                           |    9 
 ./drivers/char/tpm/tpm_atmel.c                     |  102 
 ./drivers/char/tpm/tpm_nsc.c                       |  149 -
 ./drivers/char/tpm/tpm_xen.c                       |  525 ++++
 ./drivers/char/tty_io.c                            |    7 
 ./drivers/firmware/Kconfig                         |    2 
 ./drivers/ide/legacy/hd.c                          |    2 
 ./drivers/pci/Kconfig                              |    1 
 ./drivers/video/fbmon.c                            |    2 
 ./drivers/xen/Kconfig                              |  175 +
 ./drivers/xen/Makefile                             |   20 
 ./drivers/xen/balloon/Makefile                     |    2 
 ./drivers/xen/balloon/balloon.c                    |  565 ++++
 ./drivers/xen/blkback/Makefile                     |    2 
 ./drivers/xen/blkback/blkback.c                    |  590 ++++
 ./drivers/xen/blkback/common.h                     |  131 +
 ./drivers/xen/blkback/interface.c                  |  164 +
 ./drivers/xen/blkback/vbd.c                        |  103 
 ./drivers/xen/blkback/xenbus.c                     |  425 +++
 ./drivers/xen/blkfront/Kconfig                     |    6 
 ./drivers/xen/blkfront/Makefile                    |    5 
 ./drivers/xen/blkfront/blkfront.c                  |  842 ++++++
 ./drivers/xen/blkfront/block.h                     |  166 +
 ./drivers/xen/blkfront/vbd.c                       |  323 ++
 ./drivers/xen/blktap/Makefile                      |    3 
 ./drivers/xen/blktap/blktap.c                      |  910 +++++++
 ./drivers/xen/blktap/common.h                      |  118 
 ./drivers/xen/blktap/interface.c                   |  146 +
 ./drivers/xen/blktap/xenbus.c                      |  234 +
 ./drivers/xen/char/Makefile                        |    2 
 ./drivers/xen/char/mem.c                           |  157 +
 ./drivers/xen/console/Makefile                     |    2 
 ./drivers/xen/console/console.c                    |  688 +++++
 ./drivers/xen/console/xencons_ring.c               |  125 
 ./drivers/xen/core/Makefile                        |    9 
 ./drivers/xen/core/evtchn.c                        |  820 ++++++
 ./drivers/xen/core/gnttab.c                        |  480 +++
 ./drivers/xen/core/reboot.c                        |  436 +++
 ./drivers/xen/core/skbuff.c                        |  143 +
 ./drivers/xen/core/smpboot.c                       |  439 +++
 ./drivers/xen/core/xen_proc.c                      |   29 
 ./drivers/xen/evtchn/Makefile                      |    2 
 ./drivers/xen/evtchn/evtchn.c                      |  459 +++
 ./drivers/xen/net_driver_util.c                    |   67 
 ./drivers/xen/netback/Makefile                     |    2 
 ./drivers/xen/netback/common.h                     |  118 
 ./drivers/xen/netback/interface.c                  |  320 ++
 ./drivers/xen/netback/loopback.c                   |  189 +
 ./drivers/xen/netback/netback.c                    |  824 ++++++
 ./drivers/xen/netback/xenbus.c                     |  327 ++
 ./drivers/xen/netfront/Kconfig                     |    6 
 ./drivers/xen/netfront/Makefile                    |    4 
 ./drivers/xen/netfront/netfront.c                  | 1492 +++++++++++
 ./drivers/xen/privcmd/Makefile                     |    2 
 ./drivers/xen/privcmd/privcmd.c                    |  274 ++
 ./drivers/xen/tpmback/Makefile                     |    4 
 ./drivers/xen/tpmback/common.h                     |  102 
 ./drivers/xen/tpmback/interface.c                  |  200 +
 ./drivers/xen/tpmback/tpmback.c                    | 1109 ++++++++
 ./drivers/xen/tpmback/xenbus.c                     |  329 ++
 ./drivers/xen/tpmfront/Makefile                    |    2 
 ./drivers/xen/tpmfront/tpmfront.c                  |  732 +++++
 ./drivers/xen/tpmfront/tpmfront.h                  |   48 
 ./drivers/xen/util.c                               |   75 
 ./drivers/xen/xenbus/Makefile                      |    8 
 ./drivers/xen/xenbus/xenbus_client.c               |  243 +
 ./drivers/xen/xenbus/xenbus_comms.c                |  203 +
 ./drivers/xen/xenbus/xenbus_comms.h                |   50 
 ./drivers/xen/xenbus/xenbus_dev.c                  |  241 +
 ./drivers/xen/xenbus/xenbus_probe.c                | 1014 +++++++
 ./drivers/xen/xenbus/xenbus_xs.c                   |  823 ++++++
 ./fs/Kconfig                                       |    1 
 ./include/asm-i386/agp.h                           |   15 
 ./include/asm-i386/atomic.h                        |    7 
 ./include/asm-i386/bitops.h                        |   19 
 ./include/asm-i386/fixmap.h                        |   20 
 ./include/asm-i386/floppy.h                        |   43 
 ./include/asm-i386/futex.h                         |    4 
 ./include/asm-i386/highmem.h                       |    5 
 ./include/asm-i386/hw_irq.h                        |    4 
 ./include/asm-i386/hypercall.h                     |  319 ++
 ./include/asm-i386/hypervisor.h                    |  180 +
 ./include/asm-i386/io.h                            |   39 
 ./include/asm-i386/kmap_types.h                    |    3 
 ./include/asm-i386/mach-default/mach_dma_map.h     |   80 
 ./include/asm-i386/mach-default/mach_fixmap.h      |   15 
 ./include/asm-i386/mach-default/mach_io.h          |   35 
 ./include/asm-i386/mach-default/mach_mmu.h         |   18 
 ./include/asm-i386/mach-default/mach_mode.h        |    7 
 ./include/asm-i386/mach-default/mach_page.h        |   28 
 ./include/asm-i386/mach-default/mach_pgtable.h     |   45 
 ./include/asm-i386/mach-default/mach_processor.h   |   53 
 ./include/asm-i386/mach-default/mach_seg.h         |   25 
 ./include/asm-i386/mach-default/mach_setup.h       |   50 
 ./include/asm-i386/mach-default/mach_system.h      |   85 
 ./include/asm-i386/mach-default/mach_tlbflush.h    |   59 
 ./include/asm-i386/mach-xen/irq_vectors.h          |  125 
 ./include/asm-i386/mach-xen/mach_dma_map.h         |   47 
 ./include/asm-i386/mach-xen/mach_fixmap.h          |   15 
 ./include/asm-i386/mach-xen/mach_io.h              |   50 
 ./include/asm-i386/mach-xen/mach_mmu.h             |   48 
 ./include/asm-i386/mach-xen/mach_mode.h            |    7 
 ./include/asm-i386/mach-xen/mach_page.h            |  154 +
 ./include/asm-i386/mach-xen/mach_pgtable.h         |  154 +
 ./include/asm-i386/mach-xen/mach_processor.h       |   61 
 ./include/asm-i386/mach-xen/mach_seg.h             |    9 
 ./include/asm-i386/mach-xen/mach_setup.h           |   11 
 ./include/asm-i386/mach-xen/mach_system.h          |  149 +
 ./include/asm-i386/mach-xen/mach_tlbflush.h        |   10 
 ./include/asm-i386/mach-xen/setup_arch_post.h      |   40 
 ./include/asm-i386/mach-xen/setup_arch_pre.h       |    5 
 ./include/asm-i386/mmu.h                           |    6 
 ./include/asm-i386/mmu_context.h                   |   17 
 ./include/asm-i386/page.h                          |   14 
 ./include/asm-i386/pci.h                           |   31 
 ./include/asm-i386/pgalloc.h                       |   31 
 ./include/asm-i386/pgtable-2level.h                |   12 
 ./include/asm-i386/pgtable-3level.h                |   35 
 ./include/asm-i386/pgtable.h                       |   22 
 ./include/asm-i386/processor.h                     |   48 
 ./include/asm-i386/ptrace.h                        |    5 
 ./include/asm-i386/rwsem.h                         |   17 
 ./include/asm-i386/scatterlist.h                   |    9 
 ./include/asm-i386/setup.h                         |   45 
 ./include/asm-i386/smp.h                           |    5 
 ./include/asm-i386/smp_alt.h                       |   32 
 ./include/asm-i386/spinlock.h                      |   43 
 ./include/asm-i386/swiotlb.h                       |   59 
 ./include/asm-i386/synch_bitops.h                  |  142 +
 ./include/asm-i386/tlbflush.h                      |   55 
 ./include/asm-i386/vga.h                           |    2 
 ./include/asm-um/page.h                            |    2 
 ./include/asm-x86_64/arch_hooks.h                  |   31 
 ./include/asm-x86_64/bootsetup.h                   |   10 
 ./include/asm-x86_64/fixmap.h                      |   21 
 ./include/asm-x86_64/floppy.h                      |   45 
 ./include/asm-x86_64/hw_irq.h                      |   14 
 ./include/asm-x86_64/hypercall.h                   |  320 ++
 ./include/asm-x86_64/hypervisor.h                  |    2 
 ./include/asm-x86_64/io.h                          |   47 
 ./include/asm-x86_64/ipi.h                         |    8 
 ./include/asm-x86_64/irq.h                         |   39 
 ./include/asm-x86_64/mach-xen/asm/page.h           |  257 +
 ./include/asm-x86_64/mach-xen/asm/param.h          |   23 
 ./include/asm-x86_64/mach-xen/asm/pci.h            |  177 +
 ./include/asm-x86_64/mach-xen/asm/pgalloc.h        |  198 +
 ./include/asm-x86_64/mach-xen/asm/pgtable.h        |  590 ++++
 ./include/asm-x86_64/mach-xen/asm/processor.h      |  505 +++
 ./include/asm-x86_64/mach-xen/asm/ptrace.h         |  125 
 ./include/asm-x86_64/mach-xen/asm/segment.h        |   46 
 ./include/asm-x86_64/mach-xen/asm/smp.h            |  150 +
 ./include/asm-x86_64/mach-xen/asm/system.h         |  411 +++
 ./include/asm-x86_64/mach-xen/asm/timer.h          |   67 
 ./include/asm-x86_64/mach-xen/asm/tlbflush.h       |  104 
 ./include/asm-x86_64/mach-xen/asm/vga.h            |   20 
 ./include/asm-x86_64/mach-xen/asm/xor.h            |  328 ++
 ./include/asm-x86_64/mach-xen/mach_time.h          |  122 
 ./include/asm-x86_64/mach-xen/mach_timer.h         |   48 
 ./include/asm-x86_64/mach-xen/setup_arch_post.h    |   47 
 ./include/asm-x86_64/mach-xen/setup_arch_pre.h     |    5 
 ./include/asm-x86_64/mmu.h                         |   13 
 ./include/asm-x86_64/synch_bitops.h                |    1 
 ./include/linux/gfp.h                              |    6 
 ./include/linux/highmem.h                          |    6 
 ./include/linux/irq.h                              |    3 
 ./include/linux/mm.h                               |   13 
 ./include/linux/skbuff.h                           |   13 
 ./include/xen/balloon.h                            |   70 
 ./include/xen/driver_util.h                        |   26 
 ./include/xen/evtchn.h                             |  123 
 ./include/xen/foreign_page.h                       |   40 
 ./include/xen/gnttab.h                             |   98 
 ./include/xen/interface/acm.h                      |  181 +
 ./include/xen/interface/acm_ops.h                  |   96 
 ./include/xen/interface/arch-ia64.h                |  279 ++
 ./include/xen/interface/arch-x86_32.h              |  152 +
 ./include/xen/interface/arch-x86_64.h              |  221 +
 ./include/xen/interface/dom0_ops.h                 |  482 +++
 ./include/xen/interface/event_channel.h            |  203 +
 ./include/xen/interface/grant_table.h              |  306 ++
 ./include/xen/interface/hvm/hvm_info_table.h       |   24 
 ./include/xen/interface/hvm/ioreq.h                |   90 
 ./include/xen/interface/hvm/vmx_assist.h           |   97 
 ./include/xen/interface/io/blkif.h                 |   85 
 ./include/xen/interface/io/console.h               |   33 
 ./include/xen/interface/io/netif.h                 |   76 
 ./include/xen/interface/io/ring.h                  |  270 ++
 ./include/xen/interface/io/tpmif.h                 |   56 
 ./include/xen/interface/io/vmx_vlapic.h            |   58 
 ./include/xen/interface/io/vmx_vpic.h              |   85 
 ./include/xen/interface/io/xenbus.h                |   44 
 ./include/xen/interface/io/xs_wire.h               |   97 
 ./include/xen/interface/memory.h                   |  101 
 ./include/xen/interface/physdev.h                  |   70 
 ./include/xen/interface/sched.h                    |   60 
 ./include/xen/interface/sched_ctl.h                |   68 
 ./include/xen/interface/trace.h                    |   90 
 ./include/xen/interface/vcpu.h                     |   64 
 ./include/xen/interface/version.h                  |   52 
 ./include/xen/interface/xen.h                      |  441 +++
 ./include/xen/net_driver_util.h                    |   56 
 ./include/xen/public/evtchn.h                      |   98 
 ./include/xen/public/privcmd.h                     |   91 
 ./include/xen/public/xenstored.h                   |   89 
 ./include/xen/tpmfe.h                              |   33 
 ./include/xen/xen_proc.h                           |   23 
 ./include/xen/xenbus.h                             |  252 +
 ./include/xen/xencons.h                            |   14 
 ./kernel/Kconfig.preempt                           |    1 
 ./kernel/irq/manage.c                              |   84 
 ./lib/Kconfig.debug                                |    2 
 ./lib/Makefile                                     |    2 
 ./mm/Kconfig                                       |    3 
 ./mm/highmem.c                                     |   11 
 ./mm/memory.c                                      |  118 
 ./mm/mmap.c                                        |    4 
 ./net/core/dev.c                                   |   50 
 ./net/core/skbuff.c                                |   41 
 ./scripts/Makefile.xen                             |   14 
 linux-2.6.15.i686/arch/i386/Makefile               |   18 
 linux-2.6.15.i686/arch/x86_64/Kconfig              |   40 
 linux-2.6.15.i686/arch/x86_64/ia32/Makefile        |   18 
 linux-2.6.15.i686/arch/x86_64/kernel/Makefile      |   21 
 linux-2.6.15.i686/arch/x86_64/kernel/pci-dma.c     |    0 
 linux-2.6.15.i686/arch/x86_64/kernel/pci-gart.c    |   10 
 linux-2.6.15.i686/drivers/acpi/processor_idle.c    |    4 
 linux-2.6.15.i686/include/asm-i386/desc.h          |   51 
 linux-2.6.15.i686/include/asm-i386/dma-mapping.h   |  102 
 linux-2.6.15.i686/include/asm-i386/segment.h       |   41 
 linux-2.6.15.i686/include/asm-i386/system.h        |  138 -
 linux-2.6.15.i686/include/asm-x86_64/desc.h        |   41 
 linux-2.6.15.i686/include/asm-x86_64/dma-mapping.h |   34 
 linux-2.6.15.i686/include/asm-x86_64/mmu_context.h |   97 
 linux-2.6.15.i686/include/asm-x86_64/swiotlb.h     |   19 
 linux-2.6.15.i686/mm/page_alloc.c                  |    7 
 326 files changed, 64235 insertions(+), 721 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.3 -r 1.4 linux-2.6-xen-merge.patch
Index: linux-2.6-xen-merge.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/linux-2.6-xen-merge.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-xen-merge.patch	9 Jan 2006 20:42:13 -0000	1.3
+++ linux-2.6-xen-merge.patch	26 Jan 2006 22:14:34 -0000	1.4
@@ -414,14 +414,6 @@
  	struct semaphore buffer_mutex;
  
  	struct timer_list user_read_timer;	/* user needs to claim result */
-@@ -105,5 +104,5 @@
- 			 loff_t *);
- extern ssize_t tpm_read(struct file *, char __user *, size_t, loff_t *);
- extern void tpm_remove_hardware(struct device *);
--extern int tpm_pm_suspend(struct device *, pm_message_t);
--extern int tpm_pm_resume(struct device *);
-+extern int tpm_pm_suspend(struct pci_dev *, pm_message_t);
-+extern int tpm_pm_resume(struct pci_dev *);
 --- /dev/null	2006-01-06 04:48:52.917188312 -0500
 +++ ./drivers/char/tpm/tpm_xen.c	2006-01-06 16:04:34.000000000 -0500
 @@ -0,0 +1,525 @@
@@ -5156,7 +5148,7 @@
 +{
 +	loff_t ret;
 +
-+	down(&file->f_dentry->d_inode->i_sem);
++	mutex_lock(&file->f_dentry->d_inode->i_mutex);
 +	switch (orig) {
 +		case 0:
 +			file->f_pos = offset;
@@ -5171,7 +5163,7 @@
 +		default:
 +			ret = -EINVAL;
 +	}
-+	up(&file->f_dentry->d_inode->i_sem);
++	mutex_unlock(&file->f_dentry->d_inode->i_mutex);
 +	return ret;
 +}
 +
@@ -8560,7 +8552,7 @@
 +				req, (bret->status == BLKIF_RSP_OKAY),
 +				req->hard_nr_sectors);
 +			BUG_ON(ret);
-+			end_that_request_last(req);
++			end_that_request_last(req, (bret->status == BLKIF_RSP_OKAY));
 +			break;
 +		default:
 +			BUG();
@@ -9337,14 +9329,14 @@
 +static struct timer_list balloon_timer;
 +
 +/* Use the private and mapping fields of struct page as a list. */
-+#define PAGE_TO_LIST(p) ((struct list_head *)&p->u.private)
++#define PAGE_TO_LIST(p) (&(p)->ballooned)
 +#define LIST_TO_PAGE(l)				\
-+	(list_entry(((unsigned long *)l), struct page, u.private))
++	list_entry((l), struct page, ballooned)
 +#define UNLIST_PAGE(p)				\
 +	do {					\
 +		list_del(PAGE_TO_LIST(p));	\
-+		p->mapping = NULL;		\
-+		p->u.private = 0;		\
++		PAGE_TO_LIST(p)->next = NULL;	\
++		PAGE_TO_LIST(p)->prev = NULL;	\
 +	} while(0)
 +
 +#define IPRINTK(fmt, args...) \
@@ -19376,28 +19368,6 @@
  }
  
  EXPORT_SYMBOL(free_irq);
---- ./mm/page_alloc.c.xenmerge	2006-01-06 16:03:16.000000000 -0500
-+++ ./mm/page_alloc.c	2006-01-06 16:04:34.000000000 -0500
-@@ -399,7 +399,8 @@
- 	int i;
- 	int reserved = 0;
- 
--	arch_free_page(page, order);
-+	if (arch_free_page(page, order))
-+		return;
- 
- #ifndef CONFIG_MMU
- 	if (order > 0)
-@@ -683,7 +684,8 @@
- 	struct per_cpu_pages *pcp;
- 	unsigned long flags;
- 
--	arch_free_page(page, 0);
-+	if (arch_free_page(page, 0))
-+		return;
- 
- 	if (PageAnon(page))
- 		page->mapping = NULL;
 --- ./mm/memory.c.xenmerge	2006-01-06 16:03:16.000000000 -0500
 +++ ./mm/memory.c	2006-01-06 16:04:34.000000000 -0500
 @@ -395,7 +395,8 @@
@@ -20466,35 +20436,6 @@
 +	.rept IA32_NR_syscalls-(ia32_syscall_end-ia32_sys_call_table)/8
 +		.quad ni_syscall
 +	.endr
---- ./arch/x86_64/ia32/Makefile.xenmerge	2005-10-27 20:02:08.000000000 -0400
-+++ ./arch/x86_64/ia32/Makefile	2006-01-06 16:04:32.000000000 -0500
-@@ -23,10 +23,24 @@
- 			   -Wl,-soname=linux-gate.so.1 -o $@ \
- 			   -Wl,-T,$(filter-out FORCE,$^)
- 
-+$(obj)/vsyscall-int80.so \
- $(obj)/vsyscall-sysenter.so $(obj)/vsyscall-syscall.so: \
- $(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
- 	$(call if_changed,syscall)
- 
--AFLAGS_vsyscall-sysenter.o = -m32
--AFLAGS_vsyscall-syscall.o = -m32
-+AFLAGS_vsyscall-sysenter.o = -m32 -Iarch/i386/kernel
-+AFLAGS_vsyscall-syscall.o = -m32 -Iarch/i386/kernel
- CFLAGS_ia32_ioctl.o += -Ifs/
-+
-+ifdef CONFIG_XEN
-+AFLAGS_vsyscall-int80.o = -m32 -Iarch/i386/kernel
-+
-+$(obj)/syscall32_syscall-xen.o: \
-+	$(foreach F,int80 sysenter syscall,$(obj)/vsyscall-$F.so)
-+
-+targets := $(foreach F,int80 sysenter syscall,vsyscall-$F.o vsyscall-$F.so)
-+
-+include $(srctree)/scripts/Makefile.xen
-+
-+obj-y := $(call cherrypickxen, $(obj-y))
-+endif
 --- /dev/null	2006-01-06 04:48:52.917188312 -0500
 +++ ./arch/x86_64/ia32/syscall32_syscall-xen.S	2006-01-06 16:04:34.000000000 -0500
 @@ -0,0 +1,28 @@
@@ -27441,47 +27382,6 @@
 +	.cpu_mask_to_apicid = xen_cpu_mask_to_apicid,
 +	.phys_pkg_id = phys_pkg_id,
 +};
---- ./arch/x86_64/kernel/pci-gart.c.xenmerge	2006-01-06 16:03:14.000000000 -0500
-+++ ./arch/x86_64/kernel/pci-gart.c	2006-01-06 16:04:32.000000000 -0500
-@@ -409,7 +409,8 @@
- }
- 
- /* Map a single area into the IOMMU */
--dma_addr_t dma_map_single(struct device *dev, void *addr, size_t size, int dir)
-+dma_addr_t dma_map_single(struct device *dev, void *addr, size_t size,
-+                          enum dma_data_direction dir)
- {
- 	unsigned long phys_mem, bus;
- 
-@@ -515,7 +516,8 @@
-  * DMA map all entries in a scatterlist.
-  * Merge chunks that have page aligned sizes into a continuous mapping. 
-  */
--int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, int dir)
-+int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
-+	       enum dma_data_direction dir)
- {
- 	int i;
- 	int out;
-@@ -587,7 +589,7 @@
-  * Free a DMA mapping.
-  */ 
- void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
--		      size_t size, int direction)
-+		      size_t size, enum dma_data_direction direction)
- {
- 	unsigned long iommu_page; 
- 	int npages;
-@@ -613,7 +615,8 @@
- /* 
-  * Wrapper for pci_unmap_single working with scatterlists.
-  */ 
--void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, int dir)
-+void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents,
-+		  enum dma_data_direction dir)
- {
- 	int i;
- 	if (swiotlb) {
 --- /dev/null	2006-01-06 04:48:52.917188312 -0500
 +++ ./arch/x86_64/kernel/smp-xen.c	2006-01-06 16:04:34.000000000 -0500
 @@ -0,0 +1,590 @@
@@ -32364,68 +32264,6 @@
 +		pci_mem_start, gapstart, gapsize);
 +#endif
 +}
---- ./arch/x86_64/kernel/Makefile.xenmerge	2006-01-06 16:03:14.000000000 -0500
-+++ ./arch/x86_64/kernel/Makefile	2006-01-06 16:04:32.000000000 -0500
-@@ -19,15 +19,18 @@
- obj-$(CONFIG_X86_CPUID)		+= cpuid.o
- obj-$(CONFIG_SMP)		+= smp.o smpboot.o trampoline.o
- obj-$(CONFIG_X86_LOCAL_APIC)	+= apic.o  nmi.o
-+obj-$(CONFIG_X86_XEN_GENAPIC)	+= genapic.o genapic_xen.o
- obj-$(CONFIG_X86_IO_APIC)	+= io_apic.o mpparse.o \
- 		genapic.o genapic_cluster.o genapic_flat.o
- obj-$(CONFIG_KEXEC)		+= machine_kexec.o relocate_kernel.o crash.o
--obj-$(CONFIG_PM)		+= suspend.o
-+obj-$(CONFIG_SOFTWARE_SUSPEND)	+= suspend.o
-+obj-$(CONFIG_ACPI_SLEEP)	+= suspend.o
- obj-$(CONFIG_SOFTWARE_SUSPEND)	+= suspend_asm.o
[...2583 lines suppressed...]
+ config X86_IO_APIC
+ 	bool
++	depends !XEN_UNPRIVILEGED_GUEST
+ 	default y
+ 
++config X86_XEN_GENAPIC
++	bool
++	depends X86_64_XEN
++	default XEN_PRIVILEGED_GUEST || SMP
++
+ config X86_LOCAL_APIC
+ 	bool
++	depends !XEN_UNPRIVILEGED_GUEST
+ 	default y
+ 
+ config MTRR
+ 	bool "MTRR (Memory Type Range Register) support"
++	depends on !X86_64_XEN
+ 	---help---
+ 	  On Intel P6 family processors (Pentium Pro, Pentium II and later)
+ 	  the Memory Type Range Registers (MTRRs) may be used to control
+@@ -238,7 +254,7 @@ config SMP
+ 
+ config SCHED_SMT
+ 	bool "SMT (Hyperthreading) scheduler support"
+-	depends on SMP
++	depends on SMP && !X86_64_XEN
+ 	default n
+ 	help
+ 	  SMT scheduler support improves the CPU scheduler's decision making
+@@ -250,7 +266,7 @@ source "kernel/Kconfig.preempt"
+ 
+ config NUMA
+        bool "Non Uniform Memory Access (NUMA) Support"
+-       depends on SMP
++       depends on SMP && !X86_64_XEN
+        help
+ 	 Enable NUMA (Non Uniform Memory Access) support. The kernel 
+ 	 will try to allocate memory used by a CPU on the local memory 
+@@ -325,6 +341,7 @@ config NR_CPUS
+ 	int "Maximum number of CPUs (2-256)"
+ 	range 2 256
+ 	depends on SMP
++	default "16" if X86_64_XEN
+ 	default "8"
+ 	help
+ 	  This allows you to specify the maximum number of CPUs which this
+@@ -345,6 +362,7 @@ config HOTPLUG_CPU
+ 
+ config HPET_TIMER
+ 	bool
++	depends on !X86_64_XEN
+ 	default y
+ 	help
+ 	  Use the IA-PC HPET (High Precision Event Timer) to manage
+@@ -356,7 +374,7 @@ config HPET_TIMER
+ 
+ config X86_PM_TIMER
+ 	bool "PM timer" if EMBEDDED
+-	depends on ACPI
++	depends on ACPI && !X86_64_XEN
+ 	default y
+ 	help
+ 	  Support the ACPI PM timer for time keeping. This is slow,
+@@ -377,7 +395,7 @@ config GART_IOMMU
+ 	bool "K8 GART IOMMU support"
+ 	default y
+ 	select SWIOTLB
+-	depends on PCI
++	depends on PCI && !X86_64_XEN
+ 	help
+ 	  Support the IOMMU. Needed to run systems with more than 3GB of memory
+ 	  properly with 32-bit PCI devices that do not support DAC (Double Address
+@@ -395,6 +413,7 @@ config SWIOTLB
+ 
+ config X86_MCE
+ 	bool "Machine check support" if EMBEDDED
++	depends on !X86_64_XEN
+ 	default y
+ 	help
+ 	   Include a machine check error handler to report hardware errors.
+@@ -420,7 +439,7 @@ config X86_MCE_AMD
+ 
+ config KEXEC
+ 	bool "kexec system call (EXPERIMENTAL)"
+-	depends on EXPERIMENTAL
++	depends on EXPERIMENTAL && !X86_64_XEN
+ 	help
+ 	  kexec is a system call that implements the ability to shutdown your
+ 	  current kernel, and to start another kernel.  It is like a reboot
+@@ -503,12 +522,17 @@ config GENERIC_PENDING_IRQ
+ 	default y
+ 
+ menu "Power management options"
++	depends on !XEN_UNPRIVILEGED_GUEST
+ 
++if !X86_64_XEN
+ source kernel/power/Kconfig
++endif
+ 
+ source "drivers/acpi/Kconfig"
+ 
++if !X86_64_XEN
+ source "arch/x86_64/kernel/cpufreq/Kconfig"
++endif
+ 
+ endmenu
+ 
+@@ -537,6 +561,7 @@ config UNORDERED_IO
+ 	 from i386. Requires that the driver writer used memory barriers
+ 	 properly.
+ 
++if !X86_64_XEN
+ source "drivers/pci/pcie/Kconfig"
+ 
+ source "drivers/pci/Kconfig"
+@@ -544,6 +569,7 @@ source "drivers/pci/Kconfig"
+ source "drivers/pcmcia/Kconfig"
+ 
+ source "drivers/pci/hotplug/Kconfig"
++endif
+ 
+ endmenu
+ 
+@@ -606,4 +632,6 @@ source "security/Kconfig"
+ 
+ source "crypto/Kconfig"
+ 
++source "drivers/xen/Kconfig"
++
+ source "lib/Kconfig"
+diff -uNp linux-2.6.15.i686/arch/i386/Makefile.orig linux-2.6.15.i686/arch/i386/Makefile
+--- linux-2.6.15.i686/arch/i386/Makefile.orig	2006-01-25 18:07:21.000000000 -0500
++++ linux-2.6.15.i686/arch/i386/Makefile	2006-01-25 18:11:15.000000000 -0500
+@@ -68,6 +68,10 @@ mcore-$(CONFIG_X86_BIGSMP)	:= mach-defau
+ mflags-$(CONFIG_X86_SUMMIT) := -Iinclude/asm-i386/mach-summit
+ mcore-$(CONFIG_X86_SUMMIT)  := mach-default
+ 
++# Xen subarch support
++mflags-$(CONFIG_X86_XEN)       := -Iinclude/asm-i386/mach-xen
++mcore-$(CONFIG_X86_XEN)                := mach-xen
++
+ # generic subarchitecture
+ mflags-$(CONFIG_X86_GENERICARCH) := -Iinclude/asm-i386/mach-generic
+ mcore-$(CONFIG_X86_GENERICARCH) := mach-default
+@@ -96,12 +100,25 @@ drivers-$(CONFIG_PM)			+= arch/i386/powe
+ 
+ CFLAGS += $(mflags-y)
+ AFLAGS += $(mflags-y)
++CPPFLAGS += $(mflags-y)
+ 
+ boot := arch/i386/boot
+ 
+ .PHONY: zImage bzImage compressed zlilo bzlilo \
+ 	zdisk bzdisk fdimage fdimage144 fdimage288 install
+ 
++ifdef CONFIG_XEN
++head-y := arch/i386/kernel/head-xen.o arch/i386/kernel/init_task-xen.o
++boot := arch/i386/boot-xen
++.PHONY: vmlinuz
++all: vmlinuz
++
++vmlinuz: vmlinux
++	$(Q)$(MAKE) $(build)=$(boot) $@
++
++install: vmlinux
++	$(Q)$(MAKE) $(build)=$(boot) XENGUEST=$(XENGUEST) $@
++else
+ all: bzImage
+ 
+ # KBUILD_IMAGE specify target image being built
+@@ -124,6 +141,7 @@ fdimage fdimage144 fdimage288: vmlinux
+ 
+ install:
+ 	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
++endif
+ 
+ archclean:
+ 	$(Q)$(MAKE) $(clean)=arch/i386/boot
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff linux-2.6.15.orig/drivers/acpi/processor_idle.c linux-2.6.15.i686/drivers/acpi/processor_idle.c
+--- linux-2.6.15.orig/drivers/acpi/processor_idle.c	2006-01-25 18:16:41.000000000 -0500
++++ linux-2.6.15.i686/drivers/acpi/processor_idle.c	2006-01-26 09:45:56.000000000 -0500
+@@ -878,7 +879,7 @@ static int acpi_processor_power_verify(s
+ 	unsigned int i;
+ 	unsigned int working = 0;
+ 
+-#ifdef ARCH_APICTIMER_STOPS_ON_C3
++#if defined(ARCH_APICTIMER_STOPS_ON_C3) && !defined(CONFIG_XEN)
+ 	struct cpuinfo_x86 *c = cpu_data + pr->id;
+ 	cpumask_t mask = cpumask_of_cpu(pr->id);
+ 
+@@ -901,7 +902,7 @@ static int acpi_processor_power_verify(s
+ 
+ 		case ACPI_STATE_C3:
+ 			acpi_processor_power_verify_c3(pr, cx);
+-#ifdef ARCH_APICTIMER_STOPS_ON_C3
++#if defined(ARCH_APICTIMER_STOPS_ON_C3) && !defined(CONFIG_XEN)
+ 			if (c->x86_vendor == X86_VENDOR_INTEL) {
+ 				on_each_cpu(switch_APIC_timer_to_ipi,
+ 						&mask, 1, 1);


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/sources,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- sources	9 Jan 2006 20:42:18 -0000	1.7
+++ sources	26 Jan 2006 22:14:35 -0000	1.8
@@ -1,3 +1,5 @@
 cdf95e00f5111e31f78e1d97304d9522  linux-2.6.15.tar.bz2
 2f072f3527bb24f37b46f4622a4404fe  xen-20060106.tar.bz2
-1e8dda938d8fb06863d7276b79d6e544  bcm43xx-20060106.tar.bz2
+ce5867f7e98d39c0e0e1ee102213b4c9  bcm43xx-20060114.tar.bz2
+fbc343e7737654226fd4b5b205378393  patch-2.6.16-rc1.bz2
+a247c21e1202f514283ba928d9382353  patch-2.6.16-rc1-git4.bz2


Index: upstream
===================================================================
RCS file: /cvs/dist/rpms/kernel-xen/devel/upstream,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- upstream	9 Jan 2006 20:42:18 -0000	1.4
+++ upstream	26 Jan 2006 22:14:35 -0000	1.5
@@ -1 +1,3 @@
 linux-2.6.15.tar.bz2
+patch-2.6.16-rc1.bz2
+patch-2.6.16-rc1-git4.bz2


--- linux-2.6-build-reference-discarded-opd.patch DELETED ---


--- linux-2.6-cell-idle-pmgt.patch DELETED ---


--- linux-2.6-cell-iommu.patch DELETED ---


--- linux-2.6-cell-no-legacy-io.patch DELETED ---


--- linux-2.6-cell-nvram-kmalloc.patch DELETED ---


--- linux-2.6-cell-platform-detect.patch DELETED ---


--- linux-2.6-cell-spidernet.patch DELETED ---


--- linux-2.6-debug-taint-check.patch DELETED ---


--- linux-2.6-debug-taint-proprietary-helpers.patch DELETED ---


--- linux-2.6-gcc41.patch DELETED ---


--- linux-2.6-ia64-spinlock-size.patch DELETED ---


--- linux-2.6-kdump-needs-not-embedded.patch DELETED ---


--- linux-2.6-powerpc-parport.patch DELETED ---


--- linux-2.6-proc-vmcore-needs-not-embedded.patch DELETED ---


--- linux-2.6-scsi-megaraid-legacy.patch DELETED ---


--- linux-2.6-serial-nrports.patch DELETED ---


--- linux-2.6-serial-of.patch DELETED ---


--- linux-2.6-usbhid-wireless-security-lock.patch DELETED ---


--- linux-2.6-vm-debug.patch DELETED ---


--- linux-2.6-x86_64-ati-apic-timer.patch DELETED ---


--- linux-2.6-x86_64-disable-hotplug-guessing.patch DELETED ---


--- linux-2.6.15-default-powerpc.patch DELETED ---


--- linux-2.6.15-rc1-ppc64-syscallpath.patch DELETED ---




More information about the fedora-cvs-commits mailing list