[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

rpms/kernel/devel xen-build-with-O2.patch, 1.1.6.1, 1.1.6.2 xen-fix_huge_timeouts.patch, 1.1.8.1, 1.1.8.2 xen-ia64-hv.patch, 1.1.4.1, 1.1.4.2 Config.mk, 1.3.8.1, 1.3.8.2 kernel-2.6.spec, 1.2519.4.1, 1.2519.4.2 linux-2.6-cell-mambo-drivers.patch, 1.4.16.1, 1.4.16.2 linux-2.6-compile-fixes.patch, 1.97.6.1, 1.97.6.2 linux-2.6-gfs2-dlm.patch, 1.12.4.1, 1.12.4.2 linux-2.6-gfs2-locking-exports.patch, 1.1.10.1, 1.1.10.2 linux-2.6-lockdep-fixes.patch, 1.16.4.1, 1.16.4.2 linux-2.6-utrace.patch, 1.12.4.1, 1.12.4.2 linux-2.6-xen.patch, 1.49.4.1, 1.49.4.2 sources, 1.468.4.1, 1.468.4.2 linux-2.6-xen-unbreak-oprofile.patch, 1.1.2.1, NONE



Author: dzickus

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

Modified Files:
      Tag: kernel-2_6_17-1_2519_el5_beta1
	Config.mk kernel-2.6.spec linux-2.6-cell-mambo-drivers.patch 
	linux-2.6-compile-fixes.patch linux-2.6-gfs2-dlm.patch 
	linux-2.6-gfs2-locking-exports.patch 
	linux-2.6-lockdep-fixes.patch linux-2.6-utrace.patch 
	linux-2.6-xen.patch sources 
Added Files:
      Tag: kernel-2_6_17-1_2519_el5_beta1
	xen-build-with-O2.patch xen-fix_huge_timeouts.patch 
	xen-ia64-hv.patch 
Removed Files:
      Tag: kernel-2_6_17-1_2519_el5_beta1
	linux-2.6-xen-unbreak-oprofile.patch 
Log Message:
straightening out what can and what can not go into an updated beta build



xen-build-with-O2.patch:
 Rules.mk |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: xen-build-with-O2.patch
===================================================================
RCS file: xen-build-with-O2.patch
diff -N xen-build-with-O2.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ xen-build-with-O2.patch	16 Aug 2006 20:43:06 -0000	1.1.6.2
@@ -0,0 +1,17 @@
+Always build the hypervisor with -O2.  This reduces stack consumption
+significantly and seems to stop the stack overflows that made Xen crash
+frequently in some configurations.
+
+Signed-off-by: Rik van Riel <riel redhat com>
+
+--- xen/Rules.mk.noop	2006-07-26 17:44:02.000000000 -0400
++++ xen/Rules.mk	2006-07-26 17:44:16.000000000 -0400
+@@ -52,7 +52,7 @@
+ ALL_OBJS-$(ACM_SECURITY) += $(BASEDIR)/acm/built_in.o
+ ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
+ 
+-CFLAGS-y               += -g -D__XEN__
++CFLAGS-y               += -g -D__XEN__ -O2
+ CFLAGS-$(ACM_SECURITY) += -DACM_SECURITY
+ CFLAGS-$(verbose)      += -DVERBOSE
+ CFLAGS-$(crash_debug)  += -DCRASH_DEBUG

xen-fix_huge_timeouts.patch:
 schedule.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: xen-fix_huge_timeouts.patch
===================================================================
RCS file: xen-fix_huge_timeouts.patch
diff -N xen-fix_huge_timeouts.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ xen-fix_huge_timeouts.patch	16 Aug 2006 20:43:06 -0000	1.1.8.2
@@ -0,0 +1,12 @@
+diff -ur xen-10712/common/schedule.c xen/common/schedule.c
+--- xen-10712/common/schedule.c	2006-07-15 16:59:55.000000000 +0200
++++ xen/common/schedule.c	2006-07-25 15:56:24.000000000 +0200
+@@ -409,7 +409,7 @@
+         DPRINTK("Warning: huge timeout set by domain %d (vcpu %d):"
+                 " %"PRIx64"\n",
+                 v->domain->domain_id, v->vcpu_id, (uint64_t)timeout);
+-        send_timer_event(v);
++//        send_timer_event(v);
+     }
+     else
+     {

xen-ia64-hv.patch:
 arch/ia64/linux-xen/iosapic.c |    8 +++-
 arch/ia64/xen/domain.c        |   70 +++++++++++++++++++++++++++++++-----------
 arch/ia64/xen/vcpu.c          |    2 -
 arch/ia64/xen/vhpt.c          |   20 ++++++------
 arch/ia64/xen/xensetup.c      |    2 -
 include/asm-ia64/domain.h     |   10 ++++++
 include/asm-ia64/tlbflush.h   |    2 -
 include/asm-ia64/vhpt.h       |    1 
 8 files changed, 84 insertions(+), 31 deletions(-)

Index: xen-ia64-hv.patch
===================================================================
RCS file: xen-ia64-hv.patch
diff -N xen-ia64-hv.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ xen-ia64-hv.patch	16 Aug 2006 20:43:06 -0000	1.1.4.2
@@ -0,0 +1,306 @@
+diff -urNp xen/arch/ia64/linux-xen/iosapic.c xen/arch/ia64/linux-xen/iosapic.c
+--- xen/arch/ia64/linux-xen/iosapic.c	2006-08-01 19:40:39.000000000 -0400
++++ xen/arch/ia64/linux-xen/iosapic.c	2006-08-01 19:41:31.000000000 -0400
+@@ -1155,7 +1155,7 @@ int iosapic_guest_read(unsigned long phy
+ 
+ int iosapic_guest_write(unsigned long physbase, unsigned int reg, u32 val)
+ {
+-	unsigned int id, gsi, vec, dest, high32;
++	unsigned int id, gsi, vec, xen_vec, dest, high32;
+ 	char rte_index;
+ 	struct iosapic *ios;
+ 	struct iosapic_intr_info *info;
+@@ -1185,13 +1185,17 @@ int iosapic_guest_write(unsigned long ph
+ 
+ 	/* Sanity check. Vector should be allocated before this update */
+ 	if ((rte_index > ios->num_rte) ||
+-	    test_bit(vec, ia64_xen_vector) ||
+ 	    ((vec > IA64_FIRST_DEVICE_VECTOR) &&
+ 	     (vec < IA64_LAST_DEVICE_VECTOR) &&
+ 	     (!test_bit(vec - IA64_FIRST_DEVICE_VECTOR, ia64_vector_mask))))
+ 	    return -EINVAL;
+ 
+ 	gsi = ios->gsi_base + rte_index;
++	xen_vec = gsi_to_vector(gsi);
++	if (xen_vec >= 0 && test_bit(xen_vec, ia64_xen_vector)) {
++		printk("WARN: GSI %d in use by Xen.\n", gsi);
++		return -EINVAL;
++	}
+ 	info = &iosapic_intr_info[vec];
+ 	spin_lock_irqsave(&irq_descp(vec)->lock, flags);
+ 	spin_lock(&iosapic_lock);
+diff -urNp xen/arch/ia64/xen/domain.c xen/arch/ia64/xen/domain.c
+--- xen/arch/ia64/xen/domain.c	2006-08-01 19:37:05.000000000 -0400
++++ xen/arch/ia64/xen/domain.c	2006-08-01 19:50:54.000000000 -0400
+@@ -93,6 +93,29 @@ DEFINE_PER_CPU(int *, current_psr_ic_add
+ 
+ #include <xen/sched-if.h>
+ 
++static void flush_vtlb_for_context_switch(struct vcpu* vcpu)
++{
++	int last_vcpu_id =
++		vcpu->domain->arch.last_vcpu[smp_processor_id()].vcpu_id;
++
++	if (is_idle_domain(vcpu->domain) || last_vcpu_id == vcpu->vcpu_id)
++		return;
++	vcpu->domain->arch.last_vcpu[smp_processor_id()].vcpu_id =
++		vcpu->vcpu_id;
++	if (last_vcpu_id == INVALID_VCPU_ID) 
++		return;
++
++	// if the vTLB implementation was changed,
++	// the followings must be updated either.
++	if (VMX_DOMAIN(vcpu)) {
++		// currently vTLB for vt-i domian is per vcpu.
++		// so any flushing isn't needed.
++	} else {
++		vhpt_flush();
++	}
++	local_flush_tlb_all();
++}
++
+ void schedule_tail(struct vcpu *prev)
+ {
+ 	extern char ia64_ivt;
+@@ -111,6 +134,7 @@ void schedule_tail(struct vcpu *prev)
+ 		__ia64_per_cpu_var(current_psr_ic_addr) = (int *)
+ 		  (current->domain->arch.shared_info_va + XSI_PSR_IC_OFS);
+ 	}
++	flush_vtlb_for_context_switch(current);
+ }
+ 
+ void context_switch(struct vcpu *prev, struct vcpu *next)
+@@ -176,6 +200,7 @@ if (!i--) { i = 1000000; printk("+"); }
+ 		__ia64_per_cpu_var(current_psr_ic_addr) = NULL;
+         }
+     }
++    flush_vtlb_for_context_switch(current);
+     local_irq_restore(spsr);
+     context_saved(prev);
+ }
+@@ -310,9 +335,14 @@ static void init_switch_stack(struct vcp
+ 
+ int arch_domain_create(struct domain *d)
+ {
++	int i;
++	
+ 	// the following will eventually need to be negotiated dynamically
+ 	d->arch.shared_info_va = DEFAULT_SHAREDINFO_ADDR;
+ 	d->arch.breakimm = 0x1000;
++	for (i = 0; i < NR_CPUS; i++) {
++		d->arch.last_vcpu[i].vcpu_id = INVALID_VCPU_ID;
++	}
+ 
+ 	if (is_idle_domain(d))
+ 	    return 0;
+diff -urNp xen/arch/ia64/xen/vhpt.c xen/arch/ia64/xen/vhpt.c
+--- xen/arch/ia64/xen/vhpt.c	2006-08-01 19:37:05.000000000 -0400
++++ xen/arch/ia64/xen/vhpt.c	2006-08-01 19:50:54.000000000 -0400
+@@ -23,7 +23,7 @@ extern long running_on_sim;
+ DEFINE_PER_CPU (unsigned long, vhpt_paddr);
+ DEFINE_PER_CPU (unsigned long, vhpt_pend);
+ 
+-static void vhpt_flush(void)
++void vhpt_flush(void)
+ {
+ 	struct vhpt_lf_entry *v = __va(__ia64_per_cpu_var(vhpt_paddr));
+ 	int i;
+diff -urNp xen/include/asm-ia64/domain.h xen/include/asm-ia64/domain.h
+--- xen/include/asm-ia64/domain.h	2006-08-01 19:37:05.000000000 -0400
++++ xen/include/asm-ia64/domain.h	2006-08-01 19:50:54.000000000 -0400
+@@ -58,6 +58,11 @@ struct mm_struct {
+     //	atomic_t mm_users;			/* How many users with user space? */
+ };
+ 
++struct last_vcpu {
++#define INVALID_VCPU_ID INT_MAX
++    int vcpu_id;
++} ____cacheline_aligned_in_smp;
++
+ struct arch_domain {
+     struct mm_struct mm;
+     unsigned long metaphysical_rr0;
+@@ -101,6 +106,8 @@ struct arch_domain {
+     void *efi_runtime;
+     /* Metaphysical address to fpswa_interface_t in domain firmware memory is set. */
+     void *fpswa_inf;
++
++    struct last_vcpu last_vcpu[NR_CPUS];
+ };
+ #define INT_ENABLE_OFFSET(v) 		  \
+     (sizeof(vcpu_info_t) * (v)->vcpu_id + \
+diff -urNp xen/include/asm-ia64/vhpt.h xen/include/asm-ia64/vhpt.h
+--- xen/include/asm-ia64/vhpt.h	2006-08-01 19:37:05.000000000 -0400
++++ xen/include/asm-ia64/vhpt.h	2006-08-01 19:50:54.000000000 -0400
+@@ -40,6 +40,7 @@ extern void vhpt_multiple_insert(unsigne
+ 				 unsigned long logps);
+ extern void vhpt_insert (unsigned long vadr, unsigned long pte,
+ 			 unsigned long logps);
++void vhpt_flush(void);
+ 
+ /* Currently the VHPT is allocated per CPU.  */
+ DECLARE_PER_CPU (unsigned long, vhpt_paddr);
+diff -urNp xen/arch/ia64/xen/domain.c xen/arch/ia64/xen/domain.c
+--- xen/arch/ia64/xen/domain.c	2006-08-01 19:50:54.000000000 -0400
++++ xen/arch/ia64/xen/domain.c	2006-08-01 19:52:11.000000000 -0400
+@@ -95,25 +95,32 @@ DEFINE_PER_CPU(int *, current_psr_ic_add
+ 
+ static void flush_vtlb_for_context_switch(struct vcpu* vcpu)
+ {
+-	int last_vcpu_id =
+-		vcpu->domain->arch.last_vcpu[smp_processor_id()].vcpu_id;
++	int cpu = smp_processor_id();
++	int last_vcpu_id = vcpu->domain->arch.last_vcpu[cpu].vcpu_id;
++	int last_processor = vcpu->arch.last_processor;
+ 
+-	if (is_idle_domain(vcpu->domain) || last_vcpu_id == vcpu->vcpu_id)
+-		return;
+-	vcpu->domain->arch.last_vcpu[smp_processor_id()].vcpu_id =
+-		vcpu->vcpu_id;
+-	if (last_vcpu_id == INVALID_VCPU_ID) 
++	if (is_idle_domain(vcpu->domain))
+ 		return;
++	
++	vcpu->domain->arch.last_vcpu[cpu].vcpu_id = vcpu->vcpu_id;
++	vcpu->arch.last_processor = cpu;
+ 
+-	// if the vTLB implementation was changed,
+-	// the followings must be updated either.
+-	if (VMX_DOMAIN(vcpu)) {
+-		// currently vTLB for vt-i domian is per vcpu.
+-		// so any flushing isn't needed.
+-	} else {
+-		vhpt_flush();
++	if ((last_vcpu_id != vcpu->vcpu_id &&
++	     last_vcpu_id != INVALID_VCPU_ID) ||
++	    (last_vcpu_id == vcpu->vcpu_id &&
++	     last_processor != cpu &&
++	     last_processor != INVALID_PROCESSOR)) {
++
++		// if the vTLB implementation was changed,
++		// the followings must be updated either.
++		if (VMX_DOMAIN(vcpu)) {
++			// currently vTLB for vt-i domian is per vcpu.
++			// so any flushing isn't needed.
++		} else {
++			vhpt_flush();
++		}
++		local_flush_tlb_all();
+ 	}
+-	local_flush_tlb_all();
+ }
+ 
+ void schedule_tail(struct vcpu *prev)
+@@ -299,6 +306,7 @@ struct vcpu *alloc_vcpu_struct(struct do
+ 	    v->arch.starting_rid = d->arch.starting_rid;
+ 	    v->arch.ending_rid = d->arch.ending_rid;
+ 	    v->arch.breakimm = d->arch.breakimm;
++	    v->arch.last_processor = INVALID_PROCESSOR;
+ 	}
+ 
+ 	return v;
+diff -urNp xen/include/asm-ia64/domain.h xen/include/asm-ia64/domain.h
+--- xen/include/asm-ia64/domain.h	2006-08-01 19:50:54.000000000 -0400
++++ xen/include/asm-ia64/domain.h	2006-08-01 19:52:11.000000000 -0400
+@@ -156,6 +156,9 @@ struct arch_vcpu {
+     int mode_flags;
+     fpswa_ret_t fpswa_ret;	/* save return values of FPSWA emulation */
+     struct arch_vmx_struct arch_vmx; /* Virtual Machine Extensions */
++
++#define INVALID_PROCESSOR       INT_MAX
++    int last_processor;
+ };
+ 
+ #include <asm/uaccess.h> /* for KERNEL_DS */
+diff -urNp xen/arch/ia64/xen/vcpu.c xen/arch/ia64/xen/vcpu.c
+--- xen/arch/ia64/xen/vcpu.c	2006-08-01 19:51:43.000000000 -0400
++++ xen/arch/ia64/xen/vcpu.c	2006-08-01 19:54:36.000000000 -0400
+@@ -2096,7 +2096,7 @@ IA64FAULT vcpu_ptc_e(VCPU *vcpu, UINT64 
+ 	// architected loop to purge the entire TLB, should use
+ 	//  base = stride1 = stride2 = 0, count0 = count 1 = 1
+ 
+-	vcpu_flush_vtlb_all ();
++	vcpu_flush_vtlb_all(current);
+ 
+ 	return IA64_NO_FAULT;
+ }
+diff -urNp xen/arch/ia64/xen/vhpt.c xen/arch/ia64/xen/vhpt.c
+--- xen/arch/ia64/xen/vhpt.c	2006-08-01 19:51:43.000000000 -0400
++++ xen/arch/ia64/xen/vhpt.c	2006-08-01 19:54:36.000000000 -0400
+@@ -129,10 +129,8 @@ void vhpt_init(void)
+ }
+ 
+ 
+-void vcpu_flush_vtlb_all (void)
++void vcpu_flush_vtlb_all(struct vcpu *v)
+ {
+-	struct vcpu *v = current;
+-
+ 	/* First VCPU tlb.  */
+ 	vcpu_purge_tr_entry(&PSCBX(v,dtlb));
+ 	vcpu_purge_tr_entry(&PSCBX(v,itlb));
+@@ -148,6 +146,11 @@ void vcpu_flush_vtlb_all (void)
+ 	   check this.  */
+ }
+ 
++static void __vcpu_flush_vtlb_all(void *vcpu)
++{
++	vcpu_flush_vtlb_all((struct vcpu*)vcpu);
++}
++
+ void domain_flush_vtlb_all (void)
+ {
+ 	int cpu = smp_processor_id ();
+@@ -158,12 +161,11 @@ void domain_flush_vtlb_all (void)
+ 			continue;
+ 
+ 		if (v->processor == cpu)
+-			vcpu_flush_vtlb_all ();
++			vcpu_flush_vtlb_all(v);
+ 		else
+-			smp_call_function_single
+-				(v->processor,
+-				 (void(*)(void *))vcpu_flush_vtlb_all,
+-				 NULL,1,1);
++			smp_call_function_single(v->processor,
++						 __vcpu_flush_vtlb_all,
++						 v, 1, 1);
+ 	}
+ }
+ 
+diff -urNp xen/include/asm-ia64/tlbflush.h xen/include/asm-ia64/tlbflush.h
+--- xen/include/asm-ia64/tlbflush.h	2006-08-01 19:51:43.000000000 -0400
++++ xen/include/asm-ia64/tlbflush.h	2006-08-01 19:54:36.000000000 -0400
+@@ -11,7 +11,7 @@
+ */
+ 
+ /* Local all flush of vTLB.  */
+-void vcpu_flush_vtlb_all (void);
++void vcpu_flush_vtlb_all(struct vcpu *v);
+ 
+ /* Local range flush of machine TLB only (not full VCPU virtual TLB!!!)  */
+ void vcpu_flush_tlb_vhpt_range (u64 vadr, u64 log_range);
+diff -urNp xen/arch/ia64/xen/domain.c xen/arch/ia64/xen/domain.c
+--- xen/arch/ia64/xen/domain.c	2006-08-01 19:53:55.000000000 -0400
++++ xen/arch/ia64/xen/domain.c	2006-08-01 19:57:18.000000000 -0400
+@@ -934,8 +934,6 @@ int construct_dom0(struct domain *d, 
+ 	sprintf(si->magic, "xen-%i.%i-ia64", XEN_VERSION, XEN_SUBVERSION);
+ 	si->nr_pages     = max_pages;
+ 
+-	console_endboot();
+-
+ 	printk("Dom0: 0x%lx\n", (u64)dom0);
+ 
+ #ifdef VALIDATE_VT
+diff -urNp xen/arch/ia64/xen/xensetup.c xen/arch/ia64/xen/xensetup.c
+--- xen/arch/ia64/xen/xensetup.c	2006-08-02 11:49:15.000000000 -0400
++++ xen/arch/ia64/xen/xensetup.c	2006-08-02 13:51:21.000000000 -0400
+@@ -65,7 +65,7 @@ integer_param("maxcpus", max_cpus); 
+ /* xencons: if true enable xenconsole input (and irq).
+    Note: you have to disable 8250 serials in domains (to avoid use of the
+    same resource).  */
+-static int opt_xencons = 0;
++static int opt_xencons = 1;
+ boolean_param("xencons", opt_xencons);
+ 
+ /* Toggle to allow non-legacy xencons UARTs to run in polling mode */


Index: Config.mk
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/Config.mk,v
retrieving revision 1.3.8.1
retrieving revision 1.3.8.2
diff -u -r1.3.8.1 -r1.3.8.2
--- Config.mk	11 Aug 2006 19:11:00 -0000	1.3.8.1
+++ Config.mk	16 Aug 2006 20:42:08 -0000	1.3.8.2
@@ -36,7 +36,7 @@
 CFLAGS    ?= -O2 -fomit-frame-pointer
 CFLAGS    += -DNDEBUG
 else
-CFLAGS    += -O2 -g
+CFLAGS    += -g
 endif
 
 


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2519.4.1
retrieving revision 1.2519.4.2
diff -u -r1.2519.4.1 -r1.2519.4.2
--- kernel-2.6.spec	11 Aug 2006 19:01:59 -0000	1.2519.4.1
+++ kernel-2.6.spec	16 Aug 2006 20:42:09 -0000	1.2519.4.2
@@ -33,7 +33,7 @@
 %define rpmversion 2.6.%{sublevel}
 %define release %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?})%{?dist}
 %define signmodules 0
-%define xen_hv_cset 10924
+%define xen_hv_cset 10730
 %define make_target bzImage
 %define kernel_image x86
 %define xen_flags debug=y verbose=y crash_debug=y
@@ -323,7 +323,7 @@
 Patch954: linux-2.6-xen-execshield.patch
 Patch955: linux-2.6-xen-tux.patch
 Patch956: linux-2.6-xen-execshield-lazy-exec-limit.patch
-Patch957: linux-2.6-xen-unbreak-oprofile.patch
+
 
 Patch990: linux-2.6-xen-compile-fixes.patch
 
@@ -448,6 +448,8 @@
 Patch10001: linux-2.6-random-patches.patch
 
 # Xen hypervisor patches
+Patch20000: xen-build-with-O2.patch
+Patch20001: xen-ia64-hv.patch
 
 # END OF PATCH DEFINITIONS
 
@@ -702,6 +704,8 @@
 
 cd xen
 # Any necessary hypervisor patches go here
+%patch20000 -p1
+%patch20001 -p1
 
 cd ..
 
@@ -813,7 +817,6 @@
 %patch954 -p1
 %patch955 -p1
 %patch956 -p1
-%patch957 -p1
 
 #%patch990 -p1
 
@@ -1694,6 +1697,13 @@
 %endif
 
 %changelog
+* Wed Aug 16 2006 Don Zickus <dzickus redhat com>
+- un-backport some patches that weren't beta-blockers
+- updating beta blockers
+- added #202466
+- added #200591
+- added #202464
+
 * Thu Aug  3 2006 Dave Jones <davej redhat com>
 - 2.6.18rc3-git3
 

linux-2.6-cell-mambo-drivers.patch:
 arch/powerpc/Kconfig              |   21 ++
 b/drivers/block/mambo_bd.c        |  285 +++++++++++++++++++++++++++
 b/drivers/net/mambonet.c          |  392 ++++++++++++++++++++++++++++++++++++++
 b/include/asm-powerpc/systemsim.h |  130 ++++++++++++
 drivers/block/Makefile            |    1 
 drivers/net/Makefile              |    1 
 include/asm-powerpc/processor.h   |   17 +
 include/linux/root_dev.h          |    3 
 8 files changed, 850 insertions(+)

Index: linux-2.6-cell-mambo-drivers.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-cell-mambo-drivers.patch,v
retrieving revision 1.4.16.1
retrieving revision 1.4.16.2
diff -u -r1.4.16.1 -r1.4.16.2
--- linux-2.6-cell-mambo-drivers.patch	11 Aug 2006 19:11:00 -0000	1.4.16.1
+++ linux-2.6-cell-mambo-drivers.patch	16 Aug 2006 20:42:24 -0000	1.4.16.2
@@ -338,7 +338,7 @@
  obj-$(CONFIG_ZNET) += znet.o
 --- /dev/null
 +++ b/drivers/net/mambonet.c
-@@ -0,0 +1,391 @@
+@@ -0,0 +1,392 @@
 +/*
 + *  Bogus Network Driver for PowerPC Full System Simulator
 + *
@@ -398,6 +398,7 @@
 +#include <linux/if_arp.h>	/* For ARPHRD_ETHER */
 +#include <linux/workqueue.h>
 +#include <asm/prom.h>
++#include <linux/version.h>
 +#include <asm/systemsim.h>
 +
 +#define MAMBO_BOGUS_NET_PROBE   119

linux-2.6-compile-fixes.patch:
 arch/ia64/kernel/ia64_ksyms.c                     |    2 +-
 arch/ia64/lib/Makefile                            |    2 +-
 linux-2.6.17.noarch/Makefile                      |    4 ----
 linux-2.6.17.noarch/arch/ia64/kernel/ia64_ksyms.c |    1 +
 4 files changed, 3 insertions(+), 6 deletions(-)

Index: linux-2.6-compile-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-compile-fixes.patch,v
retrieving revision 1.97.6.1
retrieving revision 1.97.6.2
diff -u -r1.97.6.1 -r1.97.6.2
--- linux-2.6-compile-fixes.patch	11 Aug 2006 19:11:00 -0000	1.97.6.1
+++ linux-2.6-compile-fixes.patch	16 Aug 2006 20:42:24 -0000	1.97.6.2
@@ -22,4 +22,45 @@
  
  #define __KERNEL_SYSCALLS__
  #include <asm/unistd.h>
+Date: Mon, 31 Jul 2006 09:17:01 -0400
+From: Prarit Bhargava <prarit redhat com>
+Subject: [RHEL5/Fedora]: BZ 196903 Fix ia64 compile
+
+CONFIG_MD_RAID5 became CONFIG_MD_RAID456 in drivers/md/Kconfig.  Make the 
+same
+change in arch/ia64
+
+Signed-off-by: Prarit Bhargava <prarit redhat com>
+Signed-off-by: Aron Griffis <aron hp com>
+
+
+
+CONFIG_MD_RAID5 became CONFIG_MD_RAID456 in drivers/md/Kconfig.  Make the same
+change in arch/ia64
+
+Signed-off-by: Prarit Bhargava <prarit redhat com>
+Signed-off-by: Aron Griffis <aron hp com>
+
+--- linux-2.6.17.ia64.orig/arch/ia64/kernel/ia64_ksyms.c	2006-07-27 15:21:47.000000000 -0400
++++ linux-2.6.17.ia64/arch/ia64/kernel/ia64_ksyms.c	2006-07-31 09:02:06.000000000 -0400
+@@ -68,7 +68,7 @@ EXPORT_SYMBOL(__udivdi3);
+ EXPORT_SYMBOL(__moddi3);
+ EXPORT_SYMBOL(__umoddi3);
+ 
+-#if defined(CONFIG_MD_RAID5) || defined(CONFIG_MD_RAID5_MODULE)
++#if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE)
+ extern void xor_ia64_2(void);
+ extern void xor_ia64_3(void);
+ extern void xor_ia64_4(void);
+--- linux-2.6.17.ia64.orig/arch/ia64/lib/Makefile	2006-07-27 09:20:01.000000000 -0400
++++ linux-2.6.17.ia64/arch/ia64/lib/Makefile	2006-07-31 09:02:41.000000000 -0400
+@@ -14,7 +14,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3
+ lib-$(CONFIG_ITANIUM)	+= copy_page.o copy_user.o memcpy.o
+ lib-$(CONFIG_MCKINLEY)	+= copy_page_mck.o memcpy_mck.o
+ lib-$(CONFIG_PERFMON)	+= carta_random.o
+-lib-$(CONFIG_MD_RAID5)	+= xor.o
++lib-$(CONFIG_MD_RAID456)	+= xor.o
+ 
+ AFLAGS___divdi3.o	=
+ AFLAGS___udivdi3.o	= -DUNSIGNED
 

linux-2.6-gfs2-dlm.patch:
 CREDITS                            |    6 
 Documentation/filesystems/gfs2.txt |   43 
 MAINTAINERS                        |   18 
 fs/Kconfig                         |    2 
 fs/Makefile                        |    2 
 fs/configfs/item.c                 |    2 
 fs/dlm/Kconfig                     |   21 
 fs/dlm/Makefile                    |   19 
 fs/dlm/ast.c                       |  172 +
 fs/dlm/ast.h                       |   26 
 fs/dlm/config.c                    |  789 +++++++
 fs/dlm/config.h                    |   42 
 fs/dlm/debug_fs.c                  |  384 +++
 fs/dlm/dir.c                       |  423 ++++
 fs/dlm/dir.h                       |   30 
 fs/dlm/dlm_internal.h              |  539 +++++
 fs/dlm/lock.c                      | 3845 +++++++++++++++++++++++++++++++++++++
 fs/dlm/lock.h                      |   61 
 fs/dlm/lockspace.c                 |  705 ++++++
 fs/dlm/lockspace.h                 |   25 
 fs/dlm/lowcomms.c                  | 1238 +++++++++++
 fs/dlm/lowcomms.h                  |   26 
 fs/dlm/lvb_table.h                 |   18 
 fs/dlm/main.c                      |   97 
 fs/dlm/member.c                    |  312 +++
 fs/dlm/member.h                    |   24 
 fs/dlm/memory.c                    |  115 +
 fs/dlm/memory.h                    |   29 
 fs/dlm/midcomms.c                  |  140 +
 fs/dlm/midcomms.h                  |   21 
 fs/dlm/rcom.c                      |  457 ++++
 fs/dlm/rcom.h                      |   24 
 fs/dlm/recover.c                   |  776 +++++++
 fs/dlm/recover.h                   |   34 
 fs/dlm/recoverd.c                  |  285 ++
 fs/dlm/recoverd.h                  |   24 
 fs/dlm/requestqueue.c              |  184 +
 fs/dlm/requestqueue.h              |   22 
 fs/dlm/user.c                      |  785 +++++++
 fs/dlm/user.h                      |   16 
 fs/dlm/util.c                      |  161 +
 fs/dlm/util.h                      |   22 
 fs/gfs2/Kconfig                    |   44 
 fs/gfs2/Makefile                   |   10 
 fs/gfs2/acl.c                      |  313 +++
 fs/gfs2/acl.h                      |   37 
 fs/gfs2/bmap.c                     | 1236 +++++++++++
 fs/gfs2/bmap.h                     |   27 
 fs/gfs2/daemon.c                   |  196 +
 fs/gfs2/daemon.h                   |   19 
 fs/gfs2/dir.c                      | 1976 +++++++++++++++++++
 fs/gfs2/dir.h                      |   73 
 fs/gfs2/eaops.c                    |  230 ++
 fs/gfs2/eaops.h                    |   29 
 fs/gfs2/eattr.c                    | 1548 ++++++++++++++
 fs/gfs2/eattr.h                    |   97 
 fs/gfs2/format.h                   |   21 
 fs/gfs2/gfs2.h                     |   31 
 fs/gfs2/glock.c                    | 2279 +++++++++++++++++++++
 fs/gfs2/glock.h                    |  152 +
 fs/gfs2/glops.c                    |  564 +++++
 fs/gfs2/glops.h                    |   23 
 fs/gfs2/incore.h                   |  658 ++++++
 fs/gfs2/inode.c                    | 1344 ++++++++++++
 fs/gfs2/inode.h                    |   56 
 fs/gfs2/lm.c                       |  244 ++
 fs/gfs2/lm.h                       |   41 
 fs/gfs2/lm_interface.h             |  295 ++
 fs/gfs2/locking.c                  |  191 +
 fs/gfs2/locking/dlm/Makefile       |    3 
 fs/gfs2/locking/dlm/lock.c         |  541 +++++
 fs/gfs2/locking/dlm/lock_dlm.h     |  188 +
 fs/gfs2/locking/dlm/main.c         |   64 
 fs/gfs2/locking/dlm/mount.c        |  256 ++
 fs/gfs2/locking/dlm/plock.c        |  301 ++
 fs/gfs2/locking/dlm/sysfs.c        |  225 ++
 fs/gfs2/locking/dlm/thread.c       |  359 +++
 fs/gfs2/locking/nolock/Makefile    |    3 
 fs/gfs2/locking/nolock/main.c      |  259 ++
 fs/gfs2/log.c                      |  601 +++++
 fs/gfs2/log.h                      |   61 
 fs/gfs2/lops.c                     |  800 +++++++
 fs/gfs2/lops.h                     |   96 
 fs/gfs2/lvb.c                      |   45 
 fs/gfs2/lvb.h                      |   19 
 fs/gfs2/main.c                     |  127 +
 fs/gfs2/meta_io.c                  |  780 +++++++
 fs/gfs2/meta_io.h                  |   74 
 fs/gfs2/mount.c                    |  214 ++
 fs/gfs2/mount.h                    |   15 
 fs/gfs2/ondisk.c                   |  308 ++
 fs/gfs2/ops_address.c              |  778 +++++++
 fs/gfs2/ops_address.h              |   18 
 fs/gfs2/ops_dentry.c               |  123 +
 fs/gfs2/ops_dentry.h               |   15 
 fs/gfs2/ops_export.c               |  293 ++
 fs/gfs2/ops_export.h               |   19 
 fs/gfs2/ops_file.c                 |  812 +++++++
 fs/gfs2/ops_file.h                 |   20 
 fs/gfs2/ops_fstype.c               |  836 ++++++++
 fs/gfs2/ops_fstype.h               |   16 
 fs/gfs2/ops_inode.c                | 1165 +++++++++++
 fs/gfs2/ops_inode.h                |   18 
 fs/gfs2/ops_super.c                |  471 ++++
 fs/gfs2/ops_super.h                |   15 
 fs/gfs2/ops_vm.c                   |  194 +
 fs/gfs2/ops_vm.h                   |   16 
 fs/gfs2/quota.c                    | 1286 ++++++++++++
 fs/gfs2/quota.h                    |   32 
 fs/gfs2/recovery.c                 |  575 +++++
 fs/gfs2/recovery.h                 |   32 
 fs/gfs2/rgrp.c                     | 1528 ++++++++++++++
 fs/gfs2/rgrp.h                     |   62 
 fs/gfs2/super.c                    |  979 +++++++++
 fs/gfs2/super.h                    |   52 
 fs/gfs2/sys.c                      |  579 +++++
 fs/gfs2/sys.h                      |   24 
 fs/gfs2/trans.c                    |  184 +
 fs/gfs2/trans.h                    |   34 
 fs/gfs2/util.c                     |  245 ++
 fs/gfs2/util.h                     |  169 +
 include/linux/Kbuild               |   33 
 include/linux/dlm.h                |  302 ++
 include/linux/dlm_device.h         |   86 
 include/linux/fs.h                 |    3 
 include/linux/gfs2_ondisk.h        |  443 ++++
 include/linux/iflags.h             |  102 
 include/linux/kernel.h             |    1 
 include/linux/lock_dlm_plock.h     |   41 
 mm/filemap.c                       |    3 
 mm/readahead.c                     |    1 
 131 files changed, 40621 insertions(+), 21 deletions(-)

Index: linux-2.6-gfs2-dlm.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-gfs2-dlm.patch,v
retrieving revision 1.12.4.1
retrieving revision 1.12.4.2
diff -u -r1.12.4.1 -r1.12.4.2
--- linux-2.6-gfs2-dlm.patch	11 Aug 2006 19:11:00 -0000	1.12.4.1
+++ linux-2.6-gfs2-dlm.patch	16 Aug 2006 20:42:30 -0000	1.12.4.2
@@ -67,10 +67,10 @@
 +  mount.gfs2	to help mount(8) mount a filesystem
 +  mkfs.gfs2	to make a filesystem
 diff --git a/MAINTAINERS b/MAINTAINERS
-index e3e1515..a050d7c 100644
+index b2afc7a..e42e143 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -875,6 +875,16 @@ M:	jack suse cz
+@@ -862,6 +862,16 @@ M:	jack suse cz
  L:	linux-kernel vger kernel org
  S:	Maintained
  
@@ -87,7 +87,7 @@
  DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
  P:	Tobias Ringstrom
  M:	tori unhappy mine nu
-@@ -1129,6 +1139,14 @@ M:	khc pm waw pl
+@@ -1112,6 +1122,14 @@ M:	khc pm waw pl
  W:	http://www.kernel.org/pub/linux/utils/net/hdlc/
  S:	Maintained
  
@@ -1256,10 +1256,10 @@
 +
 diff --git a/fs/dlm/debug_fs.c b/fs/dlm/debug_fs.c
 new file mode 100644
-index 0000000..9c3aedd
+index 0000000..8f471d9
 --- /dev/null
 +++ b/fs/dlm/debug_fs.c
-@@ -0,0 +1,387 @@
+@@ -0,0 +1,384 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -1572,19 +1572,16 @@
 +{
 +	struct dlm_ls *ls = file->private_data;
 +	struct dlm_lkb *lkb;
-+	size_t len = DLM_DEBUG_BUF_LEN, pos = 0, ret, rv;
++	size_t len = DLM_DEBUG_BUF_LEN, pos = 0, rv;
 +
 +	mutex_lock(&debug_buf_lock);
 +	mutex_lock(&ls->ls_waiters_mutex);
 +	memset(debug_buf, 0, sizeof(debug_buf));
 +
 +	list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
-+		ret = snprintf(debug_buf + pos, len - pos, "%x %d %d %s\n",
-+			       lkb->lkb_id, lkb->lkb_wait_type,
-+			       lkb->lkb_nodeid, lkb->lkb_resource->res_name);
-+		if (ret >= len - pos)
-+			break;
-+		pos += ret;
++		pos += snprintf(debug_buf + pos, len - pos, "%x %d %d %s\n",
++				lkb->lkb_id, lkb->lkb_wait_type,
++				lkb->lkb_nodeid, lkb->lkb_resource->res_name);
 +	}
 +	mutex_unlock(&ls->ls_waiters_mutex);
 +
@@ -2114,10 +2111,10 @@
 +
 diff --git a/fs/dlm/dlm_internal.h b/fs/dlm/dlm_internal.h
 new file mode 100644
-index 0000000..da75099
+index 0000000..7c3c2d2
 --- /dev/null
 +++ b/fs/dlm/dlm_internal.h
-@@ -0,0 +1,541 @@
+@@ -0,0 +1,539 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -2587,8 +2584,6 @@
 +	struct list_head	ls_requestqueue;/* queue remote requests */
 +	struct mutex		ls_requestqueue_mutex;
 +	char			*ls_recover_buf;
-+	int			ls_recover_nodeid; /* for debugging */
-+	uint64_t		ls_rcom_seq;
 +	struct list_head	ls_recover_list;
 +	spinlock_t		ls_recover_list_lock;
 +	int			ls_recover_list_count;
@@ -2661,10 +2656,10 @@
 +
 diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c
 new file mode 100644
-index 0000000..bb2e351
+index 0000000..7d38f91
 --- /dev/null
 +++ b/fs/dlm/lock.c
-@@ -0,0 +1,3846 @@
+@@ -0,0 +1,3845 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -6366,7 +6361,6 @@
 +	if (lvb_in && ua->lksb.sb_lvbptr)
 +		memcpy(ua->lksb.sb_lvbptr, lvb_in, DLM_USER_LVB_LEN);
 +	ua->castparam = ua_tmp->castparam;
-+	ua->user_lksb = ua_tmp->user_lksb;
 +
 +	error = set_unlock_args(flags, ua, &args);
 +	if (error)
@@ -6580,10 +6574,10 @@
 +
 diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
 new file mode 100644
-index 0000000..7adaad5
+index 0000000..31ed0fe
 --- /dev/null
 +++ b/fs/dlm/lockspace.c
-@@ -0,0 +1,716 @@
+@@ -0,0 +1,705 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -6667,11 +6661,6 @@
 +	return sprintf(buf, "%x\n", status);
 +}
 +
-+static ssize_t dlm_recover_nodeid_show(struct dlm_ls *ls, char *buf)
-+{
-+	return sprintf(buf, "%d\n", ls->ls_recover_nodeid);
-+}
-+
 +struct dlm_attr {
 +	struct attribute attr;
 +	ssize_t (*show)(struct dlm_ls *, char *);
@@ -6699,17 +6688,11 @@
 +	.show  = dlm_recover_status_show
 +};
 +
-+static struct dlm_attr dlm_attr_recover_nodeid = {
-+	.attr  = {.name = "recover_nodeid", .mode = S_IRUGO},
-+	.show  = dlm_recover_nodeid_show
-+};
-+
 +static struct attribute *dlm_attrs[] = {
 +	&dlm_attr_control.attr,
 +	&dlm_attr_event.attr,
 +	&dlm_attr_id.attr,
 +	&dlm_attr_recover_status.attr,
-+	&dlm_attr_recover_nodeid.attr,
 +	NULL,
 +};
 +
@@ -8736,10 +8719,10 @@
 +
 diff --git a/fs/dlm/member.c b/fs/dlm/member.c
 new file mode 100644
-index 0000000..a3f7de7
+index 0000000..cd0c51e
 --- /dev/null
 +++ b/fs/dlm/member.c
-@@ -0,0 +1,327 @@
+@@ -0,0 +1,312 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -8904,23 +8887,11 @@
 +
 +/* send a status request to all members just to establish comms connections */
 +
-+static int ping_members(struct dlm_ls *ls)
++static void ping_members(struct dlm_ls *ls)
 +{
 +	struct dlm_member *memb;
-+	int error = 0;
-+
-+	list_for_each_entry(memb, &ls->ls_nodes, list) {
-+		error = dlm_recovery_stopped(ls);
-+		if (error)
-+			break;
-+		error = dlm_rcom_status(ls, memb->nodeid);
-+		if (error)
-+			break;
-+	}
-+	if (error)
-+		log_debug(ls, "ping_members aborted %d last nodeid %d",
-+			  error, ls->ls_recover_nodeid);
-+	return error;
++	list_for_each_entry(memb, &ls->ls_nodes, list)
++		dlm_rcom_status(ls, memb->nodeid);
 +}
 +
 +int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out)
@@ -8966,13 +8937,10 @@
 +	dlm_set_recover_status(ls, DLM_RS_NODES);
 +	*neg_out = neg;
 +
-+	error = ping_members(ls);
-+	if (error)
-+		goto out;
++	ping_members(ls);
 +
 +	error = dlm_recover_members_wait(ls);
-+ out:
-+	log_debug(ls, "total members %d error %d", ls->ls_num_nodes, error);
++	log_debug(ls, "total members %d", ls->ls_num_nodes);
 +	return error;
 +}
 +
@@ -9099,10 +9067,10 @@
 +
 diff --git a/fs/dlm/memory.c b/fs/dlm/memory.c
 new file mode 100644
-index 0000000..989b608
+index 0000000..48dfc27
 --- /dev/null
 +++ b/fs/dlm/memory.c
-@@ -0,0 +1,116 @@
+@@ -0,0 +1,115 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -9205,8 +9173,7 @@
 +{
 +	struct dlm_direntry *de;
 +
-+	DLM_ASSERT(namelen <= DLM_RESNAME_MAXLEN,
-+		   printk("namelen = %d\n", namelen););
++	DLM_ASSERT(namelen <= DLM_RESNAME_MAXLEN,);
 +
 +	de = kmalloc(sizeof(*de) + namelen, GFP_KERNEL);
 +	if (de)
@@ -9429,10 +9396,10 @@
 +
 diff --git a/fs/dlm/rcom.c b/fs/dlm/rcom.c
 new file mode 100644
-index 0000000..64ba492
+index 0000000..55fbe31
 --- /dev/null
 +++ b/fs/dlm/rcom.c
-@@ -0,0 +1,471 @@
+@@ -0,0 +1,457 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -9532,7 +9499,6 @@
 +	int error = 0;
 +
 +	memset(ls->ls_recover_buf, 0, dlm_config.buffer_size);
-+	ls->ls_recover_nodeid = nodeid;
 +
 +	if (nodeid == dlm_our_nodeid()) {
 +		rc = (struct dlm_rcom *) ls->ls_recover_buf;
@@ -9543,7 +9509,6 @@
 +	error = create_rcom(ls, nodeid, DLM_RCOM_STATUS, 0, &rc, &mh);
 +	if (error)
 +		goto out;
-+	rc->rc_id = ++ls->ls_rcom_seq;
 +
 +	send_rcom(ls, mh, rc);
 +
@@ -9576,30 +9541,19 @@
 +			    sizeof(struct rcom_config), &rc, &mh);
 +	if (error)
 +		return;
-+	rc->rc_id = rc_in->rc_id;
 +	rc->rc_result = dlm_recover_status(ls);
 +	make_config(ls, (struct rcom_config *) rc->rc_buf);
 +
 +	send_rcom(ls, mh, rc);
 +}
 +
-+static void receive_sync_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
++static void receive_rcom_status_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
 +{
-+	if (rc_in->rc_id != ls->ls_rcom_seq) {
-+		log_debug(ls, "reject old reply %d got %llx wanted %llx",
-+			  rc_in->rc_type, rc_in->rc_id, ls->ls_rcom_seq);
-+		return;
-+	}
 +	memcpy(ls->ls_recover_buf, rc_in, rc_in->rc_header.h_length);
 +	set_bit(LSFL_RCOM_READY, &ls->ls_flags);
 +	wake_up(&ls->ls_wait_general);
 +}
 +
-+static void receive_rcom_status_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
-+{
-+	receive_sync_reply(ls, rc_in);
-+}
-+
 +int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name, int last_len)
 +{
 +	struct dlm_rcom *rc;
@@ -9607,7 +9561,6 @@
 +	int error = 0, len = sizeof(struct dlm_rcom);
 +
 +	memset(ls->ls_recover_buf, 0, dlm_config.buffer_size);
-+	ls->ls_recover_nodeid = nodeid;
 +
 +	if (nodeid == dlm_our_nodeid()) {
 +		dlm_copy_master_names(ls, last_name, last_len,
@@ -9620,7 +9573,6 @@
 +	if (error)
 +		goto out;
 +	memcpy(rc->rc_buf, last_name, last_len);
-+	rc->rc_id = ++ls->ls_rcom_seq;
 +
 +	send_rcom(ls, mh, rc);
 +
@@ -9657,7 +9609,6 @@
 +	error = create_rcom(ls, nodeid, DLM_RCOM_NAMES_REPLY, outlen, &rc, &mh);
 +	if (error)
 +		return;
-+	rc->rc_id = rc_in->rc_id;
 +
 +	dlm_copy_master_names(ls, rc_in->rc_buf, inlen, rc->rc_buf, outlen,
 +			      nodeid);
@@ -9666,7 +9617,9 @@
 +
 +static void receive_rcom_names_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
 +{
-+	receive_sync_reply(ls, rc_in);
++	memcpy(ls->ls_recover_buf, rc_in, rc_in->rc_header.h_length);
++	set_bit(LSFL_RCOM_READY, &ls->ls_flags);
++	wake_up(&ls->ls_wait_general);
 +}
 +
 +int dlm_send_rcom_lookup(struct dlm_rsb *r, int dir_nodeid)
@@ -10758,10 +10711,10 @@
 +
 diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c
 new file mode 100644
-index 0000000..eac8e9f
+index 0000000..7010353
 --- /dev/null
 +++ b/fs/dlm/recoverd.c
-@@ -0,0 +1,286 @@
+@@ -0,0 +1,285 @@
 +/******************************************************************************
 +*******************************************************************************
 +**
@@ -11039,7 +10992,6 @@
 +
 +void dlm_recoverd_suspend(struct dlm_ls *ls)
 +{
-+	wake_up(&ls->ls_wait_general);
 +	mutex_lock(&ls->ls_recoverd_active);
 +}
 +
@@ -21331,10 +21283,10 @@
 +#endif /* __GLOPS_DOT_H__ */
 diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
 new file mode 100644
-index 0000000..e98c14f
+index 0000000..90e0624
 --- /dev/null
 +++ b/fs/gfs2/incore.h
-@@ -0,0 +1,659 @@
+@@ -0,0 +1,658 @@
 +/*
 + * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 + * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
@@ -21616,7 +21568,6 @@
 +
 +enum {
 +	GFF_DID_DIRECT_ALLOC	= 0,
-+	GFF_EXLOCK = 1,
 +};
 +
 +struct gfs2_file {
@@ -23705,10 +23656,10 @@
 +#endif /* __LM_DOT_H__ */
 diff --git a/fs/gfs2/lm_interface.h b/fs/gfs2/lm_interface.h
 new file mode 100644
-index 0000000..1da95a5
+index 0000000..9d34bf3
 --- /dev/null
 +++ b/fs/gfs2/lm_interface.h
-@@ -0,0 +1,290 @@
+@@ -0,0 +1,295 @@
 +/*
 + * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 + * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
@@ -23976,11 +23927,16 @@
 +/*
 + * Lock module bottom interface.  A lock module makes itself available to GFS
 + * with these functions.
++ *
++ * For the time being, we copy the gfs1 lock module bottom interface so the
++ * same lock modules can be used with both gfs1 and gfs2 (it won't be possible
++ * to load both gfs1 and gfs2 at once.)  Eventually the lock modules will fork
++ * for gfs1/gfs2 and this API can change to the gfs2_ prefix.
 + */
 +
-+int gfs2_register_lockproto(struct lm_lockops *proto);
++int gfs_register_lockproto(struct lm_lockops *proto);
 +
-+void gfs2_unregister_lockproto(struct lm_lockops *proto);
++void gfs_unregister_lockproto(struct lm_lockops *proto);
 +
 +/*
 + * Lock module top interface.  GFS calls these functions when mounting or
@@ -24001,7 +23957,7 @@
 +
 diff --git a/fs/gfs2/locking.c b/fs/gfs2/locking.c
 new file mode 100644
-index 0000000..ded1ef6
+index 0000000..1831928
 --- /dev/null
 +++ b/fs/gfs2/locking.c
 @@ -0,0 +1,191 @@
@@ -24038,13 +23994,13 @@
 +static struct mutex lmh_lock;
 +
 +/**
-+ * gfs2_register_lockproto - Register a low-level locking protocol
++ * gfs_register_lockproto - Register a low-level locking protocol
 + * @proto: the protocol definition
 + *
 + * Returns: 0 on success, -EXXX on failure
 + */
 +
-+int gfs2_register_lockproto(struct lm_lockops *proto)
++int gfs_register_lockproto(struct lm_lockops *proto)
 +{
 +	struct lmh_wrapper *lw;
 +
@@ -24074,12 +24030,12 @@
 +}
 +
 +/**
-+ * gfs2_unregister_lockproto - Unregister a low-level locking protocol
++ * gfs_unregister_lockproto - Unregister a low-level locking protocol
 + * @proto: the protocol definition
 + *
 + */
 +
-+void gfs2_unregister_lockproto(struct lm_lockops *proto)
++void gfs_unregister_lockproto(struct lm_lockops *proto)
 +{
 +	struct lmh_wrapper *lw;
 +
@@ -24124,7 +24080,7 @@
 +	int try = 0;
 +	int error, found;
 +
-+retry:
++ retry:
 +	mutex_lock(&lmh_lock);
 +
 +	found = 0;
@@ -24158,7 +24114,7 @@
 +				     min_lvb_size, flags, lockstruct, fskobj);
 +	if (error)
 +		module_put(lw->lw_ops->lm_owner);
-+out:
++ out:
 +	mutex_unlock(&lmh_lock);
 +	return error;
 +}
@@ -24193,8 +24149,8 @@
 +	INIT_LIST_HEAD(&lmh_list);
 +}
 +
-+EXPORT_SYMBOL_GPL(gfs2_register_lockproto);
-+EXPORT_SYMBOL_GPL(gfs2_unregister_lockproto);
++EXPORT_SYMBOL_GPL(gfs_register_lockproto);
++EXPORT_SYMBOL_GPL(gfs_unregister_lockproto);
 +
 diff --git a/fs/gfs2/locking/dlm/Makefile b/fs/gfs2/locking/dlm/Makefile
 new file mode 100644
@@ -24948,7 +24904,7 @@
 +
 diff --git a/fs/gfs2/locking/dlm/main.c b/fs/gfs2/locking/dlm/main.c
 new file mode 100644
-index 0000000..870a1cd
+index 0000000..89728c9
 --- /dev/null
 +++ b/fs/gfs2/locking/dlm/main.c
 @@ -0,0 +1,64 @@
@@ -24974,7 +24930,7 @@
 +{
 +	int error;
 +
-+	error = gfs2_register_lockproto(&gdlm_ops);
++	error = gfs_register_lockproto(&gdlm_ops);
 +	if (error) {
 +		printk(KERN_WARNING "lock_dlm:  can't register protocol: %d\n",
 +		       error);
@@ -24983,14 +24939,14 @@
 +
 +	error = gdlm_sysfs_init();
 +	if (error) {
-+		gfs2_unregister_lockproto(&gdlm_ops);
++		gfs_unregister_lockproto(&gdlm_ops);
 +		return error;
 +	}
 +
 +	error = gdlm_plock_init();
 +	if (error) {
 +		gdlm_sysfs_exit();
-+		gfs2_unregister_lockproto(&gdlm_ops);
++		gfs_unregister_lockproto(&gdlm_ops);
 +		return error;
 +	}
 +
@@ -25006,7 +24962,7 @@
 +{
 +	gdlm_plock_exit();
 +	gdlm_sysfs_exit();
-+	gfs2_unregister_lockproto(&gdlm_ops);
++	gfs_unregister_lockproto(&gdlm_ops);
 +}
 +
 +module_init(init_lock_dlm);
@@ -25280,10 +25236,10 @@
 +
 diff --git a/fs/gfs2/locking/dlm/plock.c b/fs/gfs2/locking/dlm/plock.c
 new file mode 100644
-index 0000000..1acb251
+index 0000000..e5b11f0
 --- /dev/null
 +++ b/fs/gfs2/locking/dlm/plock.c
-@@ -0,0 +1,302 @@
+@@ -0,0 +1,301 @@
 +/*
 + * Copyright (C) 2005 Red Hat, Inc.  All rights reserved.
 + *
@@ -25518,8 +25474,7 @@
 +	spin_lock(&ops_lock);
 +	list_for_each_entry(op, &recv_list, list) {
 +		if (op->info.fsid == info.fsid &&
-+		    op->info.number == info.number &&
-+		    op->info.owner == info.owner) {
++		    op->info.number == info.number) {
 +			list_del_init(&op->list);
 +			found = 1;
 +			op->done = 1;
@@ -26193,7 +26148,7 @@
 +
 diff --git a/fs/gfs2/locking/nolock/main.c b/fs/gfs2/locking/nolock/main.c
 new file mode 100644
-index 0000000..748aa5d
+index 0000000..97ffac5
 --- /dev/null
 +++ b/fs/gfs2/locking/nolock/main.c
 @@ -0,0 +1,259 @@
@@ -26432,7 +26387,7 @@
 +{
 +	int error;
 +
-+	error = gfs2_register_lockproto(&nolock_ops);
++	error = gfs_register_lockproto(&nolock_ops);
 +	if (error) {
 +		printk(KERN_WARNING
 +		       "lock_nolock: can't register protocol: %d\n", error);
@@ -26446,7 +26401,7 @@
 +
 +static void __exit exit_nolock(void)
 +{
-+	gfs2_unregister_lockproto(&nolock_ops);
++	gfs_unregister_lockproto(&nolock_ops);
 +}
 +
 +module_init(init_nolock);
@@ -26458,7 +26413,7 @@
 +
 diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
 new file mode 100644
-index 0000000..a591fb8
+index 0000000..60fdc94
 --- /dev/null
 +++ b/fs/gfs2/log.c
 @@ -0,0 +1,601 @@
@@ -26720,8 +26675,8 @@
 +	if (list_empty(&sdp->sd_ail1_list))
 +		tail = sdp->sd_log_head;
 +	else {
-+		ai = list_entry(sdp->sd_ail1_list.prev, struct gfs2_ail,
-+				ai_list);
++		ai = list_entry(sdp->sd_ail1_list.prev,
++				struct gfs2_ail, ai_list);
 +		tail = ai->ai_first;
 +	}
 +
@@ -29670,10 +29625,10 @@
 +
 diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
 new file mode 100644
-index 0000000..45afd05
+index 0000000..fca69f1
 --- /dev/null
 +++ b/fs/gfs2/ops_address.c
-@@ -0,0 +1,797 @@
+@@ -0,0 +1,778 @@
 +/*
 + * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 + * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
@@ -29807,8 +29762,8 @@
 +static int gfs2_writepage(struct page *page, struct writeback_control *wbc)
 +{
 +	struct inode *inode = page->mapping->host;
-+	struct gfs2_inode *ip = GFS2_I(inode);
-+	struct gfs2_sbd *sdp = GFS2_SB(inode);
++	struct gfs2_inode *ip = GFS2_I(page->mapping->host);
++	struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host);
 +	loff_t i_size = i_size_read(inode);
 +	pgoff_t end_index = i_size >> PAGE_CACHE_SHIFT;
 +	unsigned offset;
@@ -29834,10 +29789,6 @@
 +		error = gfs2_trans_begin(sdp, RES_DINODE + 1, 0);
 +		if (error)
 +			goto out_ignore;
-+		if (!page_has_buffers(page)) {
-+			create_empty_buffers(page, inode->i_sb->s_blocksize,
-+					     (1 << BH_Dirty)|(1 << BH_Uptodate));
-+		}
 +		gfs2_page_add_databufs(ip, page, 0, sdp->sd_vfs->s_blocksize-1);
 +		done_trans = 1;
 +	}
@@ -29917,22 +29868,14 @@
 +	struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host);
 +	struct gfs2_holder gh;
 +	int error;
-+	int do_unlock = 0;
 +
 +	if (likely(file != &gfs2_internal_file_sentinal)) {
-+		if (file) {
-+			struct gfs2_file *gf = file->private_data;
-+			if (test_bit(GFF_EXLOCK, &gf->f_flags))
-+				goto skip_lock;
-+		}
 +		gfs2_holder_init(ip->i_gl, LM_ST_SHARED, GL_ATIME|GL_AOP, &gh);
-+		do_unlock = 1;
 +		error = gfs2_glock_nq_m_atime(1, &gh);
 +		if (unlikely(error))
 +			goto out_unlock;
 +	}
 +
-+skip_lock:
 +	if (gfs2_is_stuffed(ip)) {
 +		error = stuffed_readpage(ip, page);
 +		unlock_page(page);
@@ -29950,7 +29893,7 @@
 +	return error;
 +out_unlock:
 +	unlock_page(page);
-+	if (do_unlock)
++	if (file != &gfs2_internal_file_sentinal)
 +		gfs2_holder_uninit(&gh);
 +	goto out;
 +}
@@ -29979,24 +29922,17 @@
 +	struct gfs2_holder gh;
 +	unsigned page_idx;
 +	int ret;
-+	int do_unlock = 0;
 +
 +	if (likely(file != &gfs2_internal_file_sentinal)) {
-+		if (file) {
-+			struct gfs2_file *gf = file->private_data;
-+			if (test_bit(GFF_EXLOCK, &gf->f_flags))
-+				goto skip_lock;
-+		}
 +		gfs2_holder_init(ip->i_gl, LM_ST_SHARED,
 +				 LM_FLAG_TRY_1CB|GL_ATIME|GL_AOP, &gh);
-+		do_unlock = 1;
 +		ret = gfs2_glock_nq_m_atime(1, &gh);
 +		if (ret == GLR_TRYFAILED) 
 +			goto out_noerror;
 +		if (unlikely(ret))
 +			goto out_unlock;
 +	}
-+skip_lock:
++
 +	if (gfs2_is_stuffed(ip)) {
 +		struct pagevec lru_pvec;
 +		pagevec_init(&lru_pvec, 0);
@@ -30021,7 +29957,7 @@
 +		ret = mpage_readpages(mapping, pages, nr_pages, gfs2_get_block);
 +	}
 +
-+	if (do_unlock) {
++	if (likely(file != &gfs2_internal_file_sentinal)) {
 +		gfs2_glock_dq_m(1, &gh);
 +		gfs2_holder_uninit(&gh);
 +	}
@@ -30039,7 +29975,7 @@
 +		unlock_page(page);
 +		page_cache_release(page);
 +	}
-+	if (do_unlock)
++	if (likely(file != &gfs2_internal_file_sentinal))
 +		gfs2_holder_uninit(&gh);
 +	goto out;
 +}
@@ -34372,10 +34308,10 @@
 +#endif /* __OPS_SUPER_DOT_H__ */
 diff --git a/fs/gfs2/ops_vm.c b/fs/gfs2/ops_vm.c
 new file mode 100644
-index 0000000..875a769
+index 0000000..aff6637
 --- /dev/null
 +++ b/fs/gfs2/ops_vm.c
-@@ -0,0 +1,188 @@
+@@ -0,0 +1,194 @@
 +/*
 + * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 + * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
@@ -34424,7 +34360,13 @@
 +					unsigned long address, int *type)
 +{
 +	struct gfs2_inode *ip = GFS2_I(area->vm_file->f_mapping->host);
++	struct gfs2_holder i_gh;
 +	struct page *result;
++	int error;
++
++	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, 0, &i_gh);
++	if (error)
++		return NULL;
 +
 +	set_bit(GIF_PAGED, &ip->i_flags);
 +
@@ -34433,6 +34375,8 @@
 +	if (result && result != NOPAGE_OOM)
 +		pfault_be_greedy(ip);
 +
++	gfs2_glock_dq_uninit(&i_gh);
++
 +	return result;
 +}
 +
@@ -34511,9 +34455,7 @@
 +static struct page *gfs2_sharewrite_nopage(struct vm_area_struct *area,
 +					   unsigned long address, int *type)
 +{
-+	struct file *file = area->vm_file;
-+	struct gfs2_file *gf = file->private_data;
-+	struct gfs2_inode *ip = GFS2_I(file->f_mapping->host);
++	struct gfs2_inode *ip = GFS2_I(area->vm_file->f_mapping->host);
 +	struct gfs2_holder i_gh;
 +	struct page *result = NULL;
 +	unsigned long index = ((address - area->vm_start) >> PAGE_CACHE_SHIFT) +
@@ -34528,14 +34470,13 @@
 +	set_bit(GIF_PAGED, &ip->i_flags);
 +	set_bit(GIF_SW_PAGED, &ip->i_flags);
 +
-+	error = gfs2_write_alloc_required(ip, (u64)index << PAGE_CACHE_SHIFT,
++	error = gfs2_write_alloc_required(ip,
++					  (uint64_t)index << PAGE_CACHE_SHIFT,
 +					  PAGE_CACHE_SIZE, &alloc_required);
 +	if (error)
 +		goto out;
 +
-+	set_bit(GFF_EXLOCK, &gf->f_flags);
 +	result = filemap_nopage(area, address, type);
-+	clear_bit(GFF_EXLOCK, &gf->f_flags);
 +	if (!result || result == NOPAGE_OOM)
 +		goto out;
 +
@@ -34550,7 +34491,8 @@
 +	}
 +
 +	pfault_be_greedy(ip);
-+out:
++
++ out:
 +	gfs2_glock_dq_uninit(&i_gh);
 +
 +	return result;
@@ -35918,10 +35860,10 @@
 +#endif /* __QUOTA_DOT_H__ */
 diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
 new file mode 100644
-index 0000000..bbd44a4
+index 0000000..7aabc03
 --- /dev/null
 +++ b/fs/gfs2/recovery.c
-@@ -0,0 +1,572 @@
+@@ -0,0 +1,575 @@
 +/*
 + * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 + * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
@@ -36077,7 +36019,8 @@
 +
 +	if (lh.lh_header.mh_magic != GFS2_MAGIC ||
 +	    lh.lh_header.mh_type != GFS2_METATYPE_LH ||
-+	    lh.lh_blkno != blk || lh.lh_hash != hash)
++	    lh.lh_blkno != blk ||
++	    lh.lh_hash != hash)
 +		return 1;
 +
 +	*head = lh;
@@ -36405,9 +36348,11 @@
 +
 +		/* Acquire a shared hold on the transaction lock */
 +
-+		error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED,
++		error = gfs2_glock_nq_init(sdp->sd_trans_gl,
++					   LM_ST_SHARED,
 +					   LM_FLAG_NOEXP | LM_FLAG_PRIORITY |
-+					   GL_NOCANCEL | GL_NOCACHE, &t_gh);
++					   GL_NOCANCEL | GL_NOCACHE,
++					   &t_gh);
 +		if (error)
 +			goto fail_gunlock_ji;
 +

linux-2.6-gfs2-locking-exports.patch:
 locking.c |    3 +++
 1 files changed, 3 insertions(+)

Index: linux-2.6-gfs2-locking-exports.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-gfs2-locking-exports.patch,v
retrieving revision 1.1.10.1
retrieving revision 1.1.10.2
diff -u -r1.1.10.1 -r1.1.10.2
--- linux-2.6-gfs2-locking-exports.patch	11 Aug 2006 19:11:01 -0000	1.1.10.1
+++ linux-2.6-gfs2-locking-exports.patch	16 Aug 2006 20:42:35 -0000	1.1.10.2
@@ -1,10 +1,12 @@
---- linux-2.6.17.noarch/fs/gfs2/locking.c~	2006-08-10 13:33:09.000000000 -0400
-+++ linux-2.6.17.noarch/fs/gfs2/locking.c	2006-08-10 13:33:23.000000000 -0400
-@@ -188,4 +188,6 @@ void __init gfs2_init_lmh(void)
- 
- EXPORT_SYMBOL_GPL(gfs2_register_lockproto);
- EXPORT_SYMBOL_GPL(gfs2_unregister_lockproto);
--
-+EXPORT_SYMBOL_GPL(gfs2_withdraw_lockproto);
-+EXPORT_SYMBOL_GPL(gfs2_mount_lockproto);
-+EXPORT_SYMBOL_GPL(gfs2_unmount_lockproto);
+*** gfs2-2.6-18-rc2/fs/gfs2/locking.c	2006-07-20 10:44:33.000000000 -0500
+--- gfs2-devel/fs/gfs2/locking.c	2006-07-20 12:27:53.000000000 -0500
+*************** void __init gfs2_init_lmh(void)
+*** 188,191 ****
+--- 188,194 ----
+  
+  EXPORT_SYMBOL_GPL(gfs_register_lockproto);
+  EXPORT_SYMBOL_GPL(gfs_unregister_lockproto);
++ EXPORT_SYMBOL_GPL(gfs2_withdraw_lockproto);
++ EXPORT_SYMBOL_GPL(gfs2_mount_lockproto);
++ EXPORT_SYMBOL_GPL(gfs2_unmount_lockproto);
+  

linux-2.6-lockdep-fixes.patch:
 a/net/ipv6/icmp.c                             |   13 ++++++++++
 linux-2.6.17-mm6/include/net/sock.h           |   33 +++++++++++++++++++++++---
 linux-2.6.18-rc1/drivers/input/serio/libps2.c |    6 ++--
 linux-2.6.18-rc1/include/linux/libps2.h       |   12 ++++++++-
 linux-2.6.18-rc1/net/socket.c                 |    8 +++++-
 5 files changed, 64 insertions(+), 8 deletions(-)

Index: linux-2.6-lockdep-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-lockdep-fixes.patch,v
retrieving revision 1.16.4.1
retrieving revision 1.16.4.2
diff -u -r1.16.4.1 -r1.16.4.2
--- linux-2.6-lockdep-fixes.patch	11 Aug 2006 19:11:01 -0000	1.16.4.1
+++ linux-2.6-lockdep-fixes.patch	16 Aug 2006 20:42:35 -0000	1.16.4.2
@@ -387,81 +387,4 @@
  
  		/* Enough space for 2 64K ICMP packets, including
  		 * sk_buff struct overhead.
-
---- a/kernel/lockdep.c~lockdep-print-kernel-version
-+++ a/kernel/lockdep.c
-@@ -36,6 +36,7 @@
- #include <linux/stacktrace.h>
- #include <linux/debug_locks.h>
- #include <linux/irqflags.h>
-+#include <linux/utsname.h>
- 
- #include <asm/sections.h>
- 
-@@ -508,6 +509,13 @@ print_circular_bug_entry(struct lock_lis
- 	return 0;
- }
- 
-+static void print_kernel_version(void)
-+{
-+	printk("%s %.*s\n", system_utsname.release,
-+		(int)strcspn(system_utsname.version, " "),
-+		system_utsname.version);
-+}
-+
- /*
-  * When a circular dependency is detected, print the
-  * header first:
-@@ -524,6 +532,7 @@ print_circular_bug_header(struct lock_li
- 
- 	printk("\n=======================================================\n");
- 	printk(  "[ INFO: possible circular locking dependency detected ]\n");
-+	print_kernel_version();
- 	printk(  "-------------------------------------------------------\n");
- 	printk("%s/%d is trying to acquire lock:\n",
- 		curr->comm, curr->pid);
-@@ -705,6 +714,7 @@ print_bad_irq_dependency(struct task_str
- 	printk("\n======================================================\n");
- 	printk(  "[ INFO: %s-safe -> %s-unsafe lock order detected ]\n",
- 		irqclass, irqclass);
-+	print_kernel_version();
- 	printk(  "------------------------------------------------------\n");
- 	printk("%s/%d [HC%u[%lu]:SC%u[%lu]:HE%u:SE%u] is trying to acquire:\n",
- 		curr->comm, curr->pid,
-@@ -786,6 +796,7 @@ print_deadlock_bug(struct task_struct *c
- 
- 	printk("\n=============================================\n");
- 	printk(  "[ INFO: possible recursive locking detected ]\n");
-+	print_kernel_version();
- 	printk(  "---------------------------------------------\n");
- 	printk("%s/%d is trying to acquire lock:\n",
- 		curr->comm, curr->pid);
-@@ -1368,6 +1379,7 @@ print_irq_inversion_bug(struct task_stru
- 
- 	printk("\n=========================================================\n");
- 	printk(  "[ INFO: possible irq lock inversion dependency detected ]\n");
-+	print_kernel_version();
- 	printk(  "---------------------------------------------------------\n");
- 	printk("%s/%d just changed the state of lock:\n",
- 		curr->comm, curr->pid);
-@@ -1462,6 +1474,7 @@ print_usage_bug(struct task_struct *curr
- 
- 	printk("\n=================================\n");
- 	printk(  "[ INFO: inconsistent lock state ]\n");
-+	print_kernel_version();
- 	printk(  "---------------------------------\n");
- 
- 	printk("inconsistent {%s} -> {%s} usage.\n",
 _
-
---- linux-2.6.17.noarch/fs/exec.c~	2006-08-10 21:49:38.000000000 -0400
-+++ linux-2.6.17.noarch/fs/exec.c	2006-08-10 21:50:36.000000000 -0400
-@@ -753,7 +753,7 @@ no_thread_group:
- 
- 		write_lock_irq(&tasklist_lock);
- 		spin_lock(&oldsighand->siglock);
--		spin_lock(&newsighand->siglock);
-+		spin_lock_nested(&newsighand->siglock, SINGLE_DEPTH_NESTING);
- 
- 		rcu_assign_pointer(current->sighand, newsighand);
- 		recalc_sigpending();

linux-2.6-utrace.patch:
 Documentation/utrace.txt                |  455 +++++++++
 arch/alpha/kernel/asm-offsets.c         |    2 
 arch/alpha/kernel/entry.S               |    4 
 arch/arm/kernel/ptrace.c                |   36 
 arch/arm26/kernel/ptrace.c              |   32 
 arch/frv/kernel/ptrace.c                |   15 
 arch/i386/kernel/entry.S                |    7 
 arch/i386/kernel/i387.c                 |  143 +-
 arch/i386/kernel/process.c              |    3 
 arch/i386/kernel/ptrace.c               |  839 +++++++++--------
 arch/i386/kernel/signal.c               |   39 
 arch/i386/kernel/vm86.c                 |    7 
 arch/ia64/ia32/sys_ia32.c               |    2 
 arch/ia64/kernel/asm-offsets.c          |    2 
 arch/ia64/kernel/fsys.S                 |   16 
 arch/ia64/kernel/mca.c                  |    2 
 arch/ia64/kernel/ptrace.c               |   41 
 arch/mips/kernel/ptrace.c               |   21 
 arch/mips/kernel/sysirix.c              |    2 
 arch/powerpc/kernel/Makefile            |    4 
 arch/powerpc/kernel/asm-offsets.c       |    2 
 arch/powerpc/kernel/process.c           |    5 
 arch/powerpc/kernel/ptrace-common.h     |  161 ---
 arch/powerpc/kernel/ptrace.c            |  785 +++++++---------
 arch/powerpc/kernel/ptrace32.c          |  436 --------
 arch/powerpc/kernel/signal_32.c         |   56 +
 arch/powerpc/kernel/signal_64.c         |    4 
 arch/powerpc/kernel/sys_ppc32.c         |    5 
 arch/powerpc/lib/sstep.c                |    3 
 arch/powerpc/platforms/cell/spufs/run.c |    2 
 arch/ppc/kernel/asm-offsets.c           |    2 
 arch/s390/kernel/compat_linux.c         |    3 
 arch/s390/kernel/compat_signal.c        |    5 
 arch/s390/kernel/process.c              |    3 
 arch/s390/kernel/ptrace.c               |  551 ++++++++++-
 arch/s390/kernel/signal.c               |    4 
 arch/s390/kernel/traps.c                |    6 
 arch/sparc64/kernel/entry.S             |    6 
 arch/sparc64/kernel/process.c           |    3 
 arch/sparc64/kernel/ptrace.c            |  650 +++++++++++--
 arch/sparc64/kernel/signal.c            |    2 
 arch/sparc64/kernel/signal32.c          |    2 
 arch/sparc64/kernel/sys_sparc32.c       |    3 
 arch/sparc64/kernel/systbls.S           |    4 
 arch/x86_64/ia32/fpu32.c                |   92 +
 arch/x86_64/ia32/ia32_aout.c            |    6 
 arch/x86_64/ia32/ia32_signal.c          |    8 
 arch/x86_64/ia32/ia32entry.S            |    2 
 arch/x86_64/ia32/ptrace32.c             |  688 +++++++++-----
 arch/x86_64/ia32/sys_ia32.c             |    5 
 arch/x86_64/kernel/process.c            |    5 
 arch/x86_64/kernel/ptrace.c             |  619 +++++++-----
 arch/x86_64/kernel/signal.c             |   30 
 arch/x86_64/kernel/traps.c              |    8 
 arch/x86_64/mm/fault.c                  |    4 
 drivers/connector/cn_proc.c             |    4 
 fs/binfmt_aout.c                        |    6 
 fs/binfmt_elf.c                         |    6 
 fs/binfmt_elf_fdpic.c                   |    7 
 fs/binfmt_flat.c                        |    3 
 fs/binfmt_som.c                         |    2 
 fs/exec.c                               |   11 
 fs/proc/array.c                         |    7 
 fs/proc/base.c                          |   17 
 include/asm-i386/i387.h                 |   13 
 include/asm-i386/signal.h               |    4 
 include/asm-i386/thread_info.h          |    7 
 include/asm-i386/tracehook.h            |   74 +
 include/asm-powerpc/tracehook.h         |  303 ++++++
 include/asm-s390/tracehook.h            |  105 ++
 include/asm-sparc64/tracehook.h         |   44 
 include/asm-x86_64/fpu32.h              |    3 
 include/asm-x86_64/thread_info.h        |    2 
 include/asm-x86_64/tracehook.h          |  106 ++
 include/linux/init_task.h               |    3 
 include/linux/ptrace.h                  |   86 -
 include/linux/sched.h                   |   25 
 include/linux/tracehook.h               |  641 +++++++++++++
 include/linux/utrace.h                  |  471 +++++++++
 init/Kconfig                            |   29 
 kernel/Makefile                         |    1 
 kernel/exit.c                           |  259 +----
 kernel/fork.c                           |   60 -
 kernel/ptrace.c                         | 1562 +++++++++++++++++++++++++-------
 kernel/signal.c                         |  211 ----
 kernel/sys.c                            |    2 
 kernel/timer.c                          |    6 
 kernel/utrace.c                         | 1520 +++++++++++++++++++++++++++++++
 security/selinux/hooks.c                |    6 
 89 files changed, 8167 insertions(+), 3281 deletions(-)

Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.12.4.1
retrieving revision 1.12.4.2
diff -u -r1.12.4.1 -r1.12.4.2
--- linux-2.6-utrace.patch	11 Aug 2006 19:11:01 -0000	1.12.4.1
+++ linux-2.6-utrace.patch	16 Aug 2006 20:42:36 -0000	1.12.4.2
@@ -7,24 +7,22 @@
  arch/i386/kernel/entry.S                |    7 
  arch/i386/kernel/i387.c                 |  143 +--
  arch/i386/kernel/process.c              |    3 
- arch/i386/kernel/ptrace.c               |  839 +++++++++-------
+ arch/i386/kernel/ptrace.c               |  839 +++++++++--------
  arch/i386/kernel/signal.c               |   39 -
  arch/i386/kernel/vm86.c                 |    7 
- arch/ia64/ia32/ia32_entry.S             |    2 
- arch/ia64/ia32/sys_ia32.c               |   23 
+ arch/ia64/ia32/sys_ia32.c               |    2 
  arch/ia64/kernel/asm-offsets.c          |    2 
  arch/ia64/kernel/fsys.S                 |   16 
  arch/ia64/kernel/mca.c                  |    2 
  arch/ia64/kernel/ptrace.c               |   41 -
- arch/ia64/kernel/signal.c               |    4 
  arch/mips/kernel/ptrace.c               |   21 
  arch/mips/kernel/sysirix.c              |    2 
  arch/powerpc/kernel/Makefile            |    4 
  arch/powerpc/kernel/asm-offsets.c       |    2 
  arch/powerpc/kernel/process.c           |    5 
  arch/powerpc/kernel/ptrace-common.h     |  161 ---
- arch/powerpc/kernel/ptrace.c            |  785 +++++++--------
- arch/powerpc/kernel/ptrace32.c          |  436 --------
+ arch/powerpc/kernel/ptrace.c            |  785 +++++++---------
+ arch/powerpc/kernel/ptrace32.c          |  436 ---------
  arch/powerpc/kernel/signal_32.c         |   56 +
  arch/powerpc/kernel/signal_64.c         |    4 
  arch/powerpc/kernel/sys_ppc32.c         |    5 
@@ -34,12 +32,12 @@
  arch/s390/kernel/compat_linux.c         |    3 
  arch/s390/kernel/compat_signal.c        |    5 
  arch/s390/kernel/process.c              |    3 
- arch/s390/kernel/ptrace.c               |  553 ++++++++++-
+ arch/s390/kernel/ptrace.c               |  551 ++++++++++-
  arch/s390/kernel/signal.c               |    4 
  arch/s390/kernel/traps.c                |    6 
  arch/sparc64/kernel/entry.S             |    6 
  arch/sparc64/kernel/process.c           |    3 
- arch/sparc64/kernel/ptrace.c            |  653 +++++++++++--
+ arch/sparc64/kernel/ptrace.c            |  650 +++++++++++--
  arch/sparc64/kernel/signal.c            |    2 
  arch/sparc64/kernel/signal32.c          |    2 
  arch/sparc64/kernel/sys_sparc32.c       |    3 
@@ -48,7 +46,7 @@
  arch/x86_64/ia32/ia32_aout.c            |    6 
  arch/x86_64/ia32/ia32_signal.c          |    8 
  arch/x86_64/ia32/ia32entry.S            |    2 
- arch/x86_64/ia32/ptrace32.c             |  690 +++++++++----
+ arch/x86_64/ia32/ptrace32.c             |  690 +++++++++-----
  arch/x86_64/ia32/sys_ia32.c             |    5 
  arch/x86_64/kernel/process.c            |    5 
  arch/x86_64/kernel/ptrace.c             |  619 +++++++-----
@@ -62,13 +60,12 @@
  fs/binfmt_flat.c                        |    3 
  fs/binfmt_som.c                         |    2 
  fs/exec.c                               |   11 
- fs/proc/array.c                         |   14 
+ fs/proc/array.c                         |    7 
  fs/proc/base.c                          |   17 
  include/asm-i386/i387.h                 |   13 
  include/asm-i386/signal.h               |    4 
  include/asm-i386/thread_info.h          |    7 
  include/asm-i386/tracehook.h            |   74 +
- include/asm-ia64/tracehook.h            |   67 +
  include/asm-powerpc/tracehook.h         |  303 ++++++
  include/asm-s390/tracehook.h            |  105 ++
  include/asm-sparc64/tracehook.h         |   44 +
@@ -76,27 +73,25 @@
  include/asm-x86_64/thread_info.h        |    2 
  include/asm-x86_64/tracehook.h          |  106 ++
  include/linux/init_task.h               |    3 
- include/linux/ptrace.h                  |   88 +-
+ include/linux/ptrace.h                  |   86 +-
  include/linux/sched.h                   |   25 
- include/linux/tracehook.h               |  645 +++++++++++++
- include/linux/utrace.h                  |  481 +++++++++
+ include/linux/tracehook.h               |  641 +++++++++++++
+ include/linux/utrace.h                  |  471 +++++++++
  init/Kconfig                            |   29 +
  kernel/Makefile                         |    1 
- kernel/exit.c                           |  253 +----
- kernel/fork.c                           |   62 -
- kernel/ptrace.c                         | 1592 ++++++++++++++++++++++++-------
+ kernel/exit.c                           |  259 +----
+ kernel/fork.c                           |   60 -
+ kernel/ptrace.c                         | 1562 ++++++++++++++++++++++++-------
  kernel/signal.c                         |  211 +---
  kernel/sys.c                            |    2 
  kernel/timer.c                          |    6 
- kernel/utrace.c                         | 1526 ++++++++++++++++++++++++++++++
- security/selinux/hooks.c                |   54 +
- security/selinux/include/objsec.h       |    1 
- 93 files changed, 8332 insertions(+), 3321 deletions(-)
+ kernel/utrace.c                         | 1520 ++++++++++++++++++++++++++++++
+ security/selinux/hooks.c                |    6 
+ 89 files changed, 8168 insertions(+), 3282 deletions(-)
  create mode 100644 Documentation/utrace.txt
  delete arch/powerpc/kernel/ptrace-common.h
  delete arch/powerpc/kernel/ptrace32.c
  create mode 100644 include/asm-i386/tracehook.h
- create mode 100644 include/asm-ia64/tracehook.h
  create mode 100644 include/asm-powerpc/tracehook.h
  create mode 100644 include/asm-s390/tracehook.h
  create mode 100644 include/asm-sparc64/tracehook.h
@@ -411,76 +406,6 @@
 +
 +
 +#endif
---- linux-2.6/include/asm-ia64/tracehook.h.utrace-ptrace-compat
-+++ linux-2.6/include/asm-ia64/tracehook.h
-@@ -0,0 +1,67 @@
-+/*
-+ * Copyright (C)2006 Intel Co
-+ *	Anil S Keshavamurthy <anil s keshavamurthy intel com>
-+ *	and Bibo Mao <bibo mao intel com> adapted from i386.
-+ *
-+ * 	Tracing hooks, ia64 CPU support
-+ */
-+
-+#ifndef _ASM_TRACEHOOK_H
-+#define _ASM_TRACEHOOK_H	1
-+
-+#include <linux/sched.h>
-+#include <asm/ptrace.h>
-+
-+/*
-+ * See linux/tracehook.h for the descriptions of what these need to do.
-+ */
-+
-+#define ARCH_HAS_SINGLE_STEP	(1)
-+#define ARCH_HAS_BLOCK_STEP	(1)
-+
-+static inline void tracehook_enable_single_step(struct task_struct *tsk)
-+{
-+	struct pt_regs *pt = task_pt_regs(tsk);
-+	ia64_psr(pt)->ss = 1;
-+}
-+
-+static inline void tracehook_disable_single_step(struct task_struct *tsk)
-+{
-+	struct pt_regs *pt = task_pt_regs(tsk);
-+	ia64_psr(pt)->ss = 0;
-+}
-+
-+static inline void tracehook_enable_block_step(struct task_struct *tsk)
-+{
-+	struct pt_regs *pt = task_pt_regs(tsk);
-+	ia64_psr(pt)->tb = 1;
-+}
-+
-+static inline void tracehook_disable_block_step(struct task_struct *tsk)
-+{
-+	struct pt_regs *pt = task_pt_regs(tsk);
-+	ia64_psr(pt)->tb = 0;
-+}
-+
-+static inline void tracehook_enable_syscall_trace(struct task_struct *tsk)
-+{
-+	set_tsk_thread_flag(tsk, TIF_SYSCALL_TRACE);
-+}
-+
-+static inline void tracehook_disable_syscall_trace(struct task_struct *tsk)
-+{
-+	clear_tsk_thread_flag(tsk, TIF_SYSCALL_TRACE);
-+}
-+
-+static inline int tracehook_single_step_enabled(struct task_struct *tsk)
-+{
-+	struct pt_regs *pt = task_pt_regs(tsk);
-+	return ia64_psr(pt)->ss;
-+}
-+
-+static inline void tracehook_abort_syscall(struct pt_regs *regs)
-+{
-+	regs->r15 = -1L;
-+}
-+
-+#endif
 --- linux-2.6/include/asm-i386/i387.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-i386/i387.h
 @@ -126,17 +126,12 @@ extern int save_i387( struct _fpstate __
@@ -1008,7 +933,7 @@
  extern int send_sig(int, struct task_struct *, int);
 --- linux-2.6/include/linux/utrace.h.utrace-ptrace-compat
 +++ linux-2.6/include/linux/utrace.h
-@@ -0,0 +1,481 @@
+@@ -0,0 +1,471 @@
 +/*
 + * User Debugging Data & Event Rendezvous
 + *
@@ -1262,10 +1187,11 @@
 +	/*
 +	 * Event reported for parent using CLONE_VFORK or vfork system call.
 +	 * The child has died or exec'd, so the vfork parent has unblocked
-+	 * and is about to return child_pid.
++	 * and is about to return child->pid.
 +	 */
 +	u32 (*report_vfork_done)(struct utrace_attached_engine *engine,
-+				 struct task_struct *parent, pid_t child_pid);
++				 struct task_struct *parent,
++				 struct task_struct *child);
 +
 +	/*
 +	 * Event reported after UTRACE_ACTION_QUIESCE is set, when the target
@@ -1383,22 +1309,11 @@
 +			   struct task_struct *target);
 +
 +	/*
-+	 * Return the task_struct for the task using ptrace on this one, or
-+	 * NULL.  Always called with rcu_read_lock held to keep the
-+	 * returned struct alive.
-+	 *
-+	 * At exec time, this may be called with task_lock(target) still
-+	 * held from when unsafe_exec was just called.  In that case it
-+	 * must give results consistent with those unsafe_exec results,
-+	 * i.e. non-NULL if any LSM_UNSAFE_PTRACE_* bits were set.
-+	 *
-+	 * The value is also used to display after "TracerPid:" in
-+	 * /proc/PID/status, where it is called with only rcu_read_lock held.
-+	 *
-+	 * If this engine returns NULL, another engine may supply the result.
++	 * Return the value to display after "TracerPid:" in /proc/PID/status.
++	 * If this engine returns zero, another engine may supply the value.
 +	 */
-+	struct task_struct *(*tracer_task)(struct utrace_attached_engine *,
-+					   struct task_struct *target);
++	pid_t (*tracer_pid)(struct utrace_attached_engine *engine,
++			    struct task_struct *target);
 +};
 +
 +
@@ -1477,13 +1392,13 @@
 +int utrace_get_signal(struct task_struct *, struct pt_regs *,
 +		      siginfo_t *, struct k_sigaction *);
 +void utrace_report_clone(unsigned long clone_flags, struct task_struct *child);
-+void utrace_report_vfork_done(pid_t child_pid);
++void utrace_report_vfork_done(struct task_struct *child);
 +void utrace_report_exit(long *exit_code);
 +void utrace_report_death(struct task_struct *);
 +int utrace_report_jctl(int type);
 +void utrace_report_exec(struct linux_binprm *bprm, struct pt_regs *regs);
 +void utrace_report_syscall(struct pt_regs *regs, int is_exit);
-+struct task_struct *utrace_tracer_task(struct task_struct *);
++pid_t utrace_tracer_pid(struct task_struct *);
 +int utrace_allow_access_process_vm(struct task_struct *);
 +int utrace_unsafe_exec(struct task_struct *);
 +void utrace_signal_handler_singlestep(struct task_struct *, struct pt_regs *);
@@ -1492,7 +1407,7 @@
 +#endif	/* linux/utrace.h */
 --- linux-2.6/include/linux/ptrace.h.utrace-ptrace-compat
 +++ linux-2.6/include/linux/ptrace.h
-@@ -49,66 +49,44 @@
+@@ -49,66 +49,42 @@
  #include <asm/ptrace.h>
  
  #ifdef __KERNEL__
@@ -1570,8 +1485,6 @@
 + * This reports any ptrace-child that is ready as do_wait would a normal child.
 + * If there are no ptrace children, returns -ECHILD.
 + * If there are some ptrace children but none reporting now, returns 0.
-+ * In those cases the tasklist_lock is still held so next_thread(tsk) works.
-+ * For any other return value, tasklist_lock is released before return.
 + */
 +int ptrace_do_wait(struct task_struct *tsk,
 +		   pid_t pid, int options, struct siginfo __user *infop,
@@ -1606,7 +1519,7 @@
  	.sibling	= LIST_HEAD_INIT(tsk.sibling),			\
 --- linux-2.6/include/linux/tracehook.h.utrace-ptrace-compat
 +++ linux-2.6/include/linux/tracehook.h
-@@ -0,0 +1,645 @@
+@@ -0,0 +1,641 @@
 +/*
 + * Tracing hooks
 + *
@@ -1798,10 +1711,8 @@
 +		      void **kbuf, void __user **ubuf,
 +		      const void *data, int start_pos, int end_pos)
 +{
-+	if (*count == 0)
-+		return 0;
 +	BUG_ON(*pos < start_pos);
-+	if (end_pos < 0 || *pos < end_pos) {
++	if (*count > 0 && (end_pos < 0 || *pos < end_pos)) {
 +		unsigned int copy = (end_pos < 0 ? *count
 +				     : min(*count, end_pos - *pos));
 +		data += *pos - start_pos;
@@ -1824,10 +1735,8 @@
 +		     const void **kbuf, const void __user **ubuf,
 +		     void *data, int start_pos, int end_pos)
 +{
-+	if (*count == 0)
-+		return 0;
 +	BUG_ON(*pos < start_pos);
-+	if (end_pos < 0 || *pos < end_pos) {
++	if (*count > 0 && (end_pos < 0 || *pos < end_pos)) {
 +		unsigned int copy = (end_pos < 0 ? *count
 +				     : min(*count, end_pos - *pos));
 +		data += *pos - start_pos;
@@ -1860,6 +1769,18 @@
 +#include <linux/utrace.h>
 +#endif
 +
++/*
++ * Return the value to display after "TracerPid:" in /proc/PID/status.
++ * Called without locks.
++ */
++static inline pid_t tracehook_tracer_pid(struct task_struct *p)
++{
++#ifdef CONFIG_UTRACE
++	if (p->utrace_flags)
++		return utrace_tracer_pid(p);
++#endif
++	return 0;
++}
 +
 +/*
 + * Called in copy_process when setting up the copied task_struct,
@@ -2079,22 +2000,13 @@
 +}
 +
 +/*
-+ * Return the task_struct for the task using ptrace on this one, or NULL.
-+ * Must be called with rcu_read_lock held to keep the returned struct alive.
-+ *
-+ * At exec time, this may be called with task_lock(p) still held from when
-+ * tracehook_unsafe_exec was just called.
-+ *
-+ * The value is also used to display after "TracerPid:" in /proc/PID/status,
-+ * where it is called with only rcu_read_lock held.
++ * Return nonzero if the task is being traced so security checks should apply.
++ * Called with task_lock(tsk) held.
 + */
-+static inline struct task_struct *tracehook_tracer_task(struct task_struct *p)
++static inline int tracehook_security_ptrace(struct task_struct *tsk)
 +{
-+#ifdef CONFIG_UTRACE
-+	if (p->utrace_flags)
-+		return utrace_tracer_task(p);
-+#endif
-+	return NULL;
++	return 0;
++	// return (p->ptrace & PT_PTRACED);
 +}
 +
 +/*
@@ -2200,15 +2112,12 @@
 +/*
 + * Called after a CLONE_VFORK parent has waited for the child to complete.
 + * The clone/vfork system call will return immediately after this.
-+ * The child pointer may be invalid if a self-reaping child died and
-+ * tracehook_report_clone took no action to prevent it from self-reaping.
 + */
-+static inline void tracehook_report_vfork_done(struct task_struct *child,
-+					       pid_t child_pid)
++static inline void tracehook_report_vfork_done(struct task_struct *child)
 +{
 +#ifdef CONFIG_UTRACE
 +	if (current->utrace_flags & UTRACE_EVENT(VFORK_DONE))
-+		utrace_report_vfork_done(child_pid);
++		utrace_report_vfork_done(child);
 +#endif
 +}
 +
@@ -2710,16 +2619,6 @@
 +value.  It says to push the signal back on the thread's queue, with
 +the signal number and details possibly changed in info.  When the
 +thread is allowed to resume, it will dequeue and report it again.
---- linux-2.6/security/selinux/include/objsec.h.utrace-ptrace-compat
-+++ linux-2.6/security/selinux/include/objsec.h
-@@ -34,7 +34,6 @@ struct task_security_struct {
- 	u32 create_sid;      /* fscreate SID */
- 	u32 keycreate_sid;   /* keycreate SID */
- 	u32 sockcreate_sid;  /* fscreate SID */
--	u32 ptrace_sid;      /* SID of ptrace parent */
- };
- 
- struct inode_security_struct {
 --- linux-2.6/security/selinux/hooks.c.utrace-ptrace-compat
 +++ linux-2.6/security/selinux/hooks.c
 @@ -21,7 +21,7 @@
@@ -2731,115 +2630,24 @@
  #include <linux/errno.h>
  #include <linux/sched.h>
  #include <linux/security.h>
-@@ -159,7 +159,7 @@ static int task_alloc_security(struct ta
- 		return -ENOMEM;
- 
- 	tsec->task = task;
--	tsec->osid = tsec->sid = tsec->ptrace_sid = SECINITSID_UNLABELED;
-+	tsec->osid = tsec->sid = SECINITSID_UNLABELED;
- 	task->security = tsec;
+@@ -1397,7 +1397,7 @@ static int selinux_ptrace(struct task_st
  
- 	return 0;
-@@ -1387,19 +1387,13 @@ static int inode_security_set_sid(struct
- 
- static int selinux_ptrace(struct task_struct *parent, struct task_struct *child)
- {
--	struct task_security_struct *psec = parent->security;
--	struct task_security_struct *csec = child->security;
- 	int rc;
- 
- 	rc = secondary_ops->ptrace(parent,child);
- 	if (rc)
- 		return rc;
- 
--	rc = task_has_perm(parent, child, PROCESS__PTRACE);
--	/* Save the SID of the tracing process for later use in apply_creds. */
+ 	rc = task_has_perm(parent, child, PROCESS__PTRACE);
+ 	/* Save the SID of the tracing process for later use in apply_creds. */
 -	if (!(child->ptrace & PT_PTRACED) && !rc)
--		csec->ptrace_sid = psec->sid;
--	return rc;
-+	return task_has_perm(parent, child, PROCESS__PTRACE);
- }
- 
- static int selinux_capget(struct task_struct *target, kernel_cap_t *effective,
-@@ -1821,12 +1815,24 @@ static void selinux_bprm_apply_creds(str
- 		/* Check for ptracing, and update the task SID if ok.
- 		   Otherwise, leave SID unchanged and kill. */
- 		if (unsafe & (LSM_UNSAFE_PTRACE | LSM_UNSAFE_PTRACE_CAP)) {
--			rc = avc_has_perm(tsec->ptrace_sid, sid,
--					  SECCLASS_PROCESS, PROCESS__PTRACE,
--					  NULL);
--			if (rc) {
--				bsec->unsafe = 1;
--				return;
-+			struct task_struct *t;
-+
-+			rcu_read_lock();
-+			t = tracehook_tracer_task(current);
-+			if (unlikely(t == NULL))
-+				rcu_read_unlock();
-+			else {
-+				struct task_security_struct *sec = t->security;
-+				u32 ptsid = sec->sid;
-+				rcu_read_unlock();
-+
-+				rc = avc_has_perm(ptsid, sid,
-+						  SECCLASS_PROCESS,
-+						  PROCESS__PTRACE, NULL);
-+				if (rc) {
-+					bsec->unsafe = 1;
-+					return;
-+				}
- 			}
- 		}
- 		tsec->sid = sid;
-@@ -2684,11 +2690,6 @@ static int selinux_task_alloc_security(s
- 	tsec2->keycreate_sid = tsec1->keycreate_sid;
- 	tsec2->sockcreate_sid = tsec1->sockcreate_sid;
- 
--	/* Retain ptracer SID across fork, if any.
--	   This will be reset by the ptrace hook upon any
--	   subsequent ptrace_attach operations. */
--	tsec2->ptrace_sid = tsec1->ptrace_sid;
--
- 	return 0;
++	if (/* XXX !(child->ptrace & PT_PTRACED) && */ !rc)
+ 		csec->ptrace_sid = psec->sid;
+ 	return rc;
  }
- 
-@@ -4293,6 +4294,7 @@ static int selinux_setprocattr(struct ta
- 			       char *name, void *value, size_t size)
- {
- 	struct task_security_struct *tsec;
-+	struct task_struct *tracer;
- 	u32 sid = 0;
- 	int error;
- 	char *str = value;
-@@ -4381,18 +4383,24 @@ static int selinux_setprocattr(struct ta
+@@ -4385,7 +4385,7 @@ static int selinux_setprocattr(struct ta
  		/* Check for ptracing, and update the task SID if ok.
  		   Otherwise, leave SID unchanged and fail. */
  		task_lock(p);
 -		if (p->ptrace & PT_PTRACED) {
--			error = avc_has_perm_noaudit(tsec->ptrace_sid, sid,
-+		rcu_read_lock();
-+		tracer = tracehook_tracer_task(p);
-+		if (tracer != NULL) {
-+			struct task_security_struct *ptsec = tracer->security;
-+			u32 ptsid = ptsec->sid;
-+			rcu_read_unlock();
-+			error = avc_has_perm_noaudit(ptsid, sid,
++		if (tracehook_security_ptrace(p)) {
+ 			error = avc_has_perm_noaudit(tsec->ptrace_sid, sid,
  						     SECCLASS_PROCESS,
  						     PROCESS__PTRACE, &avd);
- 			if (!error)
- 				tsec->sid = sid;
- 			task_unlock(p);
--			avc_audit(tsec->ptrace_sid, sid, SECCLASS_PROCESS,
-+			avc_audit(ptsid, sid, SECCLASS_PROCESS,
- 				  PROCESS__PTRACE, &avd, error, NULL);
- 			if (error)
- 				return error;
- 		} else {
-+			rcu_read_unlock();
- 			tsec->sid = sid;
- 			task_unlock(p);
- 		}
 --- linux-2.6/kernel/fork.c.utrace-ptrace-compat
 +++ linux-2.6/kernel/fork.c
 @@ -36,7 +36,7 @@
@@ -2979,7 +2787,7 @@
  			wait_for_completion(&vfork);
 -			if (unlikely (current->ptrace & PT_TRACE_VFORK_DONE))
 -				ptrace_notify ((PTRACE_EVENT_VFORK_DONE << 8) | SIGTRAP);
-+			tracehook_report_vfork_done(p, nr);
++			tracehook_report_vfork_done(p);
  		}
  	} else {
  		free_pid(pid);
@@ -3041,7 +2849,7 @@
  
  /*
   * Handle magic process-wide effects of stop/continue signals.
-@@ -896,7 +893,7 @@ __group_complete_signal(int sig, struct 
+@@ -887,7 +884,7 @@ __group_complete_signal(int sig, struct 
  	 */
  	if (sig_fatal(p, sig) && !(p->signal->flags & SIGNAL_GROUP_EXIT) &&
  	    !sigismember(&t->real_blocked, sig) &&
@@ -3050,7 +2858,7 @@
  		/*
  		 * This signal will be fatal to the whole group.
  		 */
-@@ -1438,8 +1435,7 @@ void do_notify_parent(struct task_struct
+@@ -1429,8 +1426,7 @@ void do_notify_parent(struct task_struct
   	/* do_notify_parent_cldstop should have been called instead.  */
   	BUG_ON(tsk->state & (TASK_STOPPED|TASK_TRACED));
  
@@ -3060,7 +2868,7 @@
  
  	info.si_signo = sig;
  	info.si_errno = 0;
-@@ -1464,7 +1460,7 @@ void do_notify_parent(struct task_struct
+@@ -1455,7 +1451,7 @@ void do_notify_parent(struct task_struct
  
  	psig = tsk->parent->sighand;
  	spin_lock_irqsave(&psig->siglock, flags);
@@ -3069,7 +2877,7 @@
  	    (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN ||
  	     (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
  		/*
-@@ -1492,20 +1488,13 @@ void do_notify_parent(struct task_struct
+@@ -1483,20 +1479,13 @@ void do_notify_parent(struct task_struct
  	spin_unlock_irqrestore(&psig->siglock, flags);
  }
  
@@ -3091,7 +2899,7 @@
  	info.si_signo = SIGCHLD;
  	info.si_errno = 0;
  	info.si_pid = tsk->pid;
-@@ -1530,6 +1519,15 @@ static void do_notify_parent_cldstop(str
+@@ -1521,6 +1510,15 @@ static void do_notify_parent_cldstop(str
   		BUG();
   	}
  
@@ -3107,7 +2915,7 @@
  	sighand = parent->sighand;
  	spin_lock_irqsave(&sighand->siglock, flags);
  	if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN &&
-@@ -1542,110 +1540,6 @@ static void do_notify_parent_cldstop(str
+@@ -1533,110 +1531,6 @@ static void do_notify_parent_cldstop(str
  	spin_unlock_irqrestore(&sighand->siglock, flags);
  }
  
@@ -3218,7 +3026,7 @@
  static void
  finish_stop(int stop_count)
  {
-@@ -1654,7 +1548,7 @@ finish_stop(int stop_count)
+@@ -1645,7 +1539,7 @@ finish_stop(int stop_count)
  	 * a group stop in progress and we are the last to stop,
  	 * report to the parent.  When ptraced, every thread reports itself.
  	 */
@@ -3227,7 +3035,7 @@
  		read_lock(&tasklist_lock);
  		do_notify_parent_cldstop(current, CLD_STOPPED);
  		read_unlock(&tasklist_lock);
-@@ -1779,44 +1673,24 @@ relock:
+@@ -1770,44 +1664,24 @@ relock:
  		    handle_group_stop())
  			goto relock;
  
@@ -3288,7 +3096,7 @@
  		if (ka->sa.sa_handler == SIG_IGN) /* Do nothing.  */
  			continue;
  		if (ka->sa.sa_handler != SIG_DFL) {
-@@ -1861,7 +1735,7 @@ relock:
+@@ -1852,7 +1726,7 @@ relock:
  				spin_lock_irq(&current->sighand->siglock);
  			}
  
@@ -3297,7 +3105,7 @@
  				/* It released the siglock.  */
  				goto relock;
  			}
-@@ -1888,13 +1762,13 @@ relock:
+@@ -1879,13 +1753,13 @@ relock:
  			 * first and our do_group_exit call below will use
  			 * that value and ignore the one we pass it.
  			 */
@@ -3313,7 +3121,7 @@
  		/* NOTREACHED */
  	}
  	spin_unlock_irq(&current->sighand->siglock);
-@@ -1907,7 +1781,6 @@ EXPORT_SYMBOL(flush_signals);
+@@ -1898,7 +1772,6 @@ EXPORT_SYMBOL(flush_signals);
  EXPORT_SYMBOL(force_sig);
  EXPORT_SYMBOL(kill_pg);
  EXPORT_SYMBOL(kill_proc);
@@ -3323,7 +3131,7 @@
  EXPORT_SYMBOL(sigprocmask);
 --- linux-2.6/kernel/utrace.c.utrace-ptrace-compat
 +++ linux-2.6/kernel/utrace.c
-@@ -0,0 +1,1526 @@
+@@ -0,0 +1,1520 @@
 +#include <linux/utrace.h>
 +#include <linux/tracehook.h>
 +#include <linux/err.h>
@@ -4262,7 +4070,7 @@
 + * Called iff UTRACE_EVENT(VFORK_DONE) flag is set.
 + */
 +void
-+utrace_report_vfork_done(pid_t child_pid)
++utrace_report_vfork_done(struct task_struct *child)
 +{
 +	struct task_struct *tsk = current;
 +	struct utrace *utrace = tsk->utrace;
@@ -4275,7 +4083,7 @@
 +	list_for_each_safe_rcu(pos, next, &utrace->engines) {
 +		engine = list_entry(pos, struct utrace_attached_engine, entry);
 +		if (engine->flags & UTRACE_EVENT(VFORK_DONE))
-+			REPORT(report_vfork_done, child_pid);
++			REPORT(report_vfork_done, child);
 +		if (action & UTRACE_ACTION_HIDE)
 +			break;
 +	}
@@ -4760,23 +4568,16 @@
 +
 +
 +/*
-+ * Return the task_struct for the task using ptrace on this one, or NULL.
-+ * Must be called with rcu_read_lock held to keep the returned struct alive.
-+ *
-+ * At exec time, this may be called with task_lock(p) still held from when
-+ * tracehook_unsafe_exec was just called.  In that case it must give
-+ * results consistent with those unsafe_exec results, i.e. non-NULL if
-+ * any LSM_UNSAFE_PTRACE_* bits were set.
-+ *
-+ * The value is also used to display after "TracerPid:" in /proc/PID/status,
-+ * where it is called with only rcu_read_lock held.
++ * Return the value to display after "TracerPid:" in /proc/PID/status.
++ * Called without locks.
 + */
-+struct task_struct *
-+utrace_tracer_task(struct task_struct *target)
++pid_t
++utrace_tracer_pid(struct task_struct *target)
 +{
 +	struct utrace *utrace;
-+	struct task_struct *tracer = NULL;
++	pid_t pid = 0;
 +
++	rcu_read_lock();
 +	utrace = rcu_dereference(target->utrace);
 +	if (utrace != NULL) {
 +		struct list_head *pos, *next;
@@ -4786,15 +4587,16 @@
 +			engine = list_entry(pos, struct utrace_attached_engine,
 +					    entry);
 +			ops = rcu_dereference(engine->ops);
-+			if (ops->tracer_task) {
-+				tracer = (*ops->tracer_task)(engine, target);
-+				if (tracer != NULL)
++			if (ops->tracer_pid) {
++				pid = (*ops->tracer_pid)(engine, target);
++				if (pid)
 +					break;
 +			}
 +		}
 +	}
++	rcu_read_unlock();
 +
-+	return tracer;
++	return pid;
 +}
 +
 +int
@@ -5252,7 +5054,23 @@
  static long do_wait(pid_t pid, int options, struct siginfo __user *infop,
  		    int __user *stat_addr, struct rusage __user *ru)
  {
-@@ -1465,26 +1332,17 @@ repeat:
+@@ -1449,13 +1316,14 @@ repeat:
+ 	 */
+ 	flag = 0;
+ 	current->state = TASK_INTERRUPTIBLE;
+-	read_lock(&tasklist_lock);
+ 	tsk = current;
++	rcu_read_lock();
+ 	do {
+ 		struct task_struct *p;
+ 		struct list_head *_p;
+ 		int ret;
+ 
++		read_lock(&tasklist_lock);
+ 		list_for_each(_p,&tsk->children) {
+ 			p = list_entry(_p, struct task_struct, sibling);
+ 
+@@ -1465,26 +1333,17 @@ repeat:
  
  			switch (p->state) {
  			case TASK_TRACED:
@@ -5283,7 +5101,7 @@
  					continue;
  				retval = wait_task_stopped(p, ret == 2,
  							   (options & WNOWAIT),
-@@ -1509,6 +1367,10 @@ repeat:
+@@ -1509,6 +1368,10 @@ repeat:
  						goto check_continued;
  					if (!likely(options & WEXITED))
  						continue;
@@ -5294,7 +5112,7 @@
  					retval = wait_task_zombie(
  						p, (options & WNOWAIT),
  						infop, stat_addr, ru);
-@@ -1525,6 +1387,8 @@ check_continued:
+@@ -1525,6 +1388,8 @@ check_continued:
  				flag = 1;
  				if (!unlikely(options & WCONTINUED))
  					continue;
@@ -5303,7 +5121,7 @@
  				retval = wait_task_continued(
  					p, (options & WNOWAIT),
  					infop, stat_addr, ru);
-@@ -1533,16 +1397,15 @@ check_continued:
+@@ -1533,23 +1398,25 @@ check_continued:
  				break;
  			}
  		}
@@ -5315,20 +5133,30 @@
 -					continue;
 -				flag = 1;
 -				break;
--			}
++		read_unlock(&tasklist_lock);
 +
 +		retval = ptrace_do_wait(tsk, pid, options,
 +					infop, stat_addr, ru);
 +		if (retval != -ECHILD) {
 +			flag = 1;
-+			if (retval != 0) /* He released the lock.  */
++			if (retval) {
++				rcu_read_unlock();
 +				goto end;
+ 			}
  		}
 +
  		if (options & __WNOTHREAD)
  			break;
  		tsk = next_thread(tsk);
-@@ -1566,7 +1429,7 @@ end:
+ 		BUG_ON(tsk->signal != current->signal);
+ 	} while (tsk != current);
++	rcu_read_unlock();
+ 
+-	read_unlock(&tasklist_lock);
+ 	if (flag) {
+ 		retval = 0;
+ 		if (options & WNOHANG)
+@@ -1566,7 +1433,7 @@ end:
  	remove_wait_queue(&current->signal->wait_chldexit,&wait);
  	if (infop) {
  		if (retval > 0)
@@ -5579,7 +5407,7 @@
  /*
   * Access another process' address space.
   * Source/target buffer must be kernel space, 
-@@ -295,249 +125,1341 @@ int access_process_vm(struct task_struct
+@@ -295,249 +125,1303 @@ int access_process_vm(struct task_struct
  	return buf - old_buf;
  }
  
@@ -5784,9 +5612,7 @@
 +			retval = -EPERM;
 +	}
 +	else {
-+		task_lock(current);
 +		retval = security_ptrace(current->parent, current);
-+		task_unlock(current);
 +		if (!retval)
 +			retval = ptrace_setup(current, engine,
 +					      current->parent, 0, 0);
@@ -5855,7 +5681,7 @@
 +	struct ptrace_state *state = (struct ptrace_state *) engine->data;
 +	/*
 +	 * Clearing ->data before detach makes sure an unrelated task
-+	 * calling into ptrace_tracer_task won't try to touch stale state.
++	 * calling into ptrace_tracer_pid won't try to touch stale state.
 +	 */
 +	rcu_assign_pointer(engine->data, 0UL);
 +	utrace_detach(task, engine);
@@ -5892,7 +5718,8 @@
 +		list_for_each_entry_rcu(state, &tsk->ptracees, entry) {
 +			rcu_assign_pointer(state->engine->data, 0UL);
 +			utrace_detach(state->task, state->engine);
-+		}
+ 		}
+-		spin_unlock_irq(&child->sighand->siglock);
 +
 +		/*
 +		 * Now clear out our list and clean up our data structures.
@@ -5902,8 +5729,7 @@
 +		list_for_each_entry_safe(state, next, &tsk->ptracees, entry) {
 +			list_del_rcu(&state->entry);
 +			ptrace_done(state);
- 		}
--		spin_unlock_irq(&child->sighand->siglock);
++		}
 +		task_unlock(tsk);
  	}
 -	read_unlock(&tasklist_lock);
@@ -5965,7 +5791,7 @@
 +
 +		return utrace_inject_signal(target, engine,
 +					    UTRACE_ACTION_RESUME, info, NULL);
-+	}
+ 	}
 +
 +	return 0;
 +}
@@ -5994,7 +5820,7 @@
 +			return -EINVAL;
 +		pos = (addr - regset->bias) * regset->size;
 +		n = 1;
- 	}
++	}
 +	else
 +		n = nregs == 0 ? regset->n : nregs;
 +
@@ -6153,21 +5979,6 @@
 +		utrace_set_flags(child, engine,
 +				 engine->flags | UTRACE_ACTION_QUIESCE);
 +	}
-+
-+	/*
-+	 * We do this for all requests to match traditional ptrace behavior.
-+	 * If the machine state synchronization done at context switch time
-+	 * includes e.g. writing back to user memory, we want to make sure
-+	 * that has finished before a PTRACE_PEEKDATA can fetch the results.
-+	 * On most machines, only regset data is affected by context switch
-+	 * and calling utrace_regset later on will take care of that, so
-+	 * this is superfluous.
-+	 *
-+	 * To do this purely in utrace terms, we could do:
-+	 *  (void) utrace_regset(child, engine, utrace_native_view(child), 0);
-+	 */
-+	wait_task_inactive(child);
-+
 +	if (child->exit_state)
 +		goto out_tsk;
 +
@@ -6534,20 +6345,15 @@
  	return ret;
  }
 +#endif
-+
  
 -/**
 - * ptrace_traceme  --  helper for PTRACE_TRACEME
 - *
 - * Performs checks and sets PT_PTRACED.
 - * Should be used by all ptrace implementations for PTRACE_TRACEME.
-+/*
-+ * We're called with tasklist_lock held for reading.
-+ * If we return -ECHILD or zero, next_thread(tsk) must still be valid to use.
-+ * If we return another error code, or a successful PID value, we
-+ * release tasklist_lock first.
-  */
+- */
 -int ptrace_traceme(void)
++
 +int
 +ptrace_do_wait(struct task_struct *tsk,
 +	       pid_t pid, int options, struct siginfo __user *infop,
@@ -6624,16 +6430,6 @@
 +		why = CLD_TRAPPED;
 +		status = (p->exit_code << 8) | 0x7f;
 +	}
- 
- 	/*
--	 * Are we already being traced?
-+	 * At this point we are committed to a successful return
-+	 * or a user error return.  Release the tasklist_lock.
- 	 */
--	task_lock(current);
--	if (!(current->ptrace & PT_PTRACED)) {
--		ret = security_ptrace(current->parent, current);
-+	read_unlock(&tasklist_lock);
 +
 +	if (rusagep)
 +		err = getrusage(p, RUSAGE_BOTH, rusagep);
@@ -6658,7 +6454,13 @@
 +		struct utrace *utrace;
 +
 +		err = p->pid;
-+
+ 
+-	/*
+-	 * Are we already being traced?
+-	 */
+-	task_lock(current);
+-	if (!(current->ptrace & PT_PTRACED)) {
+-		ret = security_ptrace(current->parent, current);
  		/*
 -		 * Set the ptrace bit in the process ptrace flags.
 +		 * If this was a non-death report, the child might now be
@@ -6744,7 +6546,10 @@
  	 */
 -	if (pid == 1)
 -		return ERR_PTR(-EPERM);
--
++	wake_up_interruptible_sync(&parent->signal->wait_chldexit);
++	spin_unlock_irqrestore(&sighand->siglock, flags);
++}
+ 
 -	read_lock(&tasklist_lock);
 -	child = find_task_by_pid(pid);
 -	if (child)
@@ -6753,18 +6558,10 @@
 -	if (!child)
 -		return ERR_PTR(-ESRCH);
 -	return child;
-+	wake_up_interruptible_sync(&parent->signal->wait_chldexit);
-+	spin_unlock_irqrestore(&sighand->siglock, flags);
- }
- 
--#ifndef __ARCH_SYS_PTRACE
--asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
 +static u32
 +ptrace_report(struct utrace_attached_engine *engine, struct task_struct *tsk,
 +	      int code)
- {
--	struct task_struct *child;
--	long ret;
++{
 +	struct ptrace_state *state = (struct ptrace_state *) engine->data;
 +
 +#ifdef PTRACE_DEBUG
@@ -6779,21 +6576,6 @@
 +	}
 +#endif
 +
-+	BUG_ON(state->u.live.stopped);
- 
- 	/*
--	 * This lock_kernel fixes a subtle race with suid exec
-+	 * Set our QUIESCE flag right now, before notifying the tracer.
-+	 * We do this before setting state->u.live.stopped rather than
-+	 * by using UTRACE_ACTION_NEWSTATE in our return value, to
-+	 * ensure that the tracer can't get the notification and then
-+	 * try to resume us with PTRACE_CONT before we set the flag.
- 	 */
--	lock_kernel();
--	if (request == PTRACE_TRACEME) {
--		ret = ptrace_traceme();
-+	utrace_set_flags(tsk, engine, engine->flags | UTRACE_ACTION_QUIESCE);
-+
 +	state->u.live.stopped = 1;
 +	state->u.live.reported = 0;
 +	tsk->exit_code = code;
@@ -6804,18 +6586,29 @@
 +	       current->pid, current->exit_code);
 +#endif
 +
-+	return UTRACE_ACTION_RESUME;
-+}
-+
++	return (UTRACE_ACTION_NEWSTATE
++		| UTRACE_ACTION_QUIESCE | UTRACE_ACTION_NOREAP);
+ }
+ 
+-#ifndef __ARCH_SYS_PTRACE
+-asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
 +static inline u32
 +ptrace_event(struct utrace_attached_engine *engine, struct task_struct *tsk,
 +	     int event)
-+{
+ {
+-	struct task_struct *child;
+-	long ret;
 +	struct ptrace_state *state = (struct ptrace_state *) engine->data;
 +	state->u.live.syscall = 0;
 +	return ptrace_report(engine, tsk, (event << 8) | SIGTRAP);
 +}
-+
+ 
+-	/*
+-	 * This lock_kernel fixes a subtle race with suid exec
+-	 */
+-	lock_kernel();
+-	if (request == PTRACE_TRACEME) {
+-		ret = ptrace_traceme();
 +
 +static u32
 +ptrace_report_death(struct utrace_attached_engine *engine,
@@ -6925,11 +6718,8 @@
 -	return ret;
 +static u32
 +ptrace_report_vfork_done(struct utrace_attached_engine *engine,
-+			 struct task_struct *parent, pid_t child_pid)
++			 struct task_struct *parent, struct task_struct *child)
 +{
-+	struct ptrace_state *state = (struct ptrace_state *) engine->data;
-+	state->u.live.have_eventmsg = 1;
-+	state->u.live.u.eventmsg = child_pid;
 +	return ptrace_event(engine, parent, PTRACE_EVENT_VFORK_DONE);
 +}
 +
@@ -6954,8 +6744,7 @@
 +		   struct task_struct *tsk, int type)
 +{
 +	return UTRACE_ACTION_RESUME; /* XXX */
- }
--#endif /* __ARCH_SYS_PTRACE */
++}
 +
 +static u32
 +ptrace_report_exec(struct utrace_attached_engine *engine,
@@ -6998,7 +6787,8 @@
 +			    struct task_struct *tsk, struct pt_regs *regs)
 +{
 +	return ptrace_report_syscall(engine, tsk, regs, 0);
-+}
+ }
+-#endif /* __ARCH_SYS_PTRACE */
 +
 +static u32
 +ptrace_report_exit(struct utrace_attached_engine *engine,
@@ -7021,20 +6811,24 @@
 +	return unsafe;
 +}
 +
-+static struct task_struct *
-+ptrace_tracer_task(struct utrace_attached_engine *engine,
-+		   struct task_struct *target)
++static pid_t
++ptrace_tracer_pid(struct utrace_attached_engine *engine,
++		  struct task_struct *target)
 +{
 +	struct ptrace_state *state;
++	pid_t pid;
 +
 +	/*
 +	 * This call is not necessarily made by the target task,
 +	 * so ptrace might be getting detached while we run here.
 +	 * The state pointer will be NULL if that happens.
 +	 */
++	rcu_read_lock();
 +	state = rcu_dereference((struct ptrace_state *) engine->data);
++	pid = state == NULL ? 0 : state->parent->pid;
++	rcu_read_unlock();
 +
-+	return state == NULL ? NULL : state->parent;
++	return pid;
 +}
 +
 +static int
@@ -7074,7 +6868,7 @@
 +	.report_exit = ptrace_report_exit,
 +	.report_death = ptrace_report_death,
 +	.unsafe_exec = ptrace_unsafe_exec,
-+	.tracer_task = ptrace_tracer_task,
++	.tracer_pid = ptrace_tracer_pid,
 +	.allow_access_process_vm = ptrace_allow_access_process_vm,
 +};
 +
@@ -7180,36 +6974,18 @@
  #include <linux/rcupdate.h>
  #include <linux/delayacct.h>
  
-@@ -158,10 +159,17 @@ static inline const char * get_task_stat
- 
- static inline char * task_state(struct task_struct *p, char *buffer)
- {
-+	struct task_struct *tracer;
-+	pid_t tracer_pid;
- 	struct group_info *group_info;
- 	int g;
- 	struct fdtable *fdt = NULL;
- 
-+	rcu_read_lock();
-+	tracer = tracehook_tracer_task(p);
-+	tracer_pid = tracer == NULL ? 0 : tracer->pid;
-+	rcu_read_unlock();
-+
- 	read_lock(&tasklist_lock);
- 	buffer += sprintf(buffer,
- 		"State:\t%s\n"
-@@ -175,8 +183,8 @@ static inline char * task_state(struct t
+@@ -175,8 +176,8 @@ static inline char * task_state(struct t
  		get_task_state(p),
  		(p->sleep_avg/1024)*100/(1020000000/1024),
  	       	p->tgid,
 -		p->pid, pid_alive(p) ? p->group_leader->real_parent->tgid : 0,
 -		pid_alive(p) && p->ptrace ? p->parent->pid : 0,
 +		p->pid, pid_alive(p) ? p->group_leader->parent->tgid : 0,
-+		tracer_pid,
++		tracehook_tracer_pid(p),
  		p->uid, p->euid, p->suid, p->fsuid,
  		p->gid, p->egid, p->sgid, p->fsgid);
  	read_unlock(&tasklist_lock);
-@@ -386,7 +394,7 @@ static int do_task_stat(struct task_stru
+@@ -386,7 +387,7 @@ static int do_task_stat(struct task_stru
  			stime = cputime_add(stime, task->signal->stime);
  		}
  	}
@@ -10577,7 +10353,7 @@
   * Copyright (C) 1997 Jakub Jelinek (jj sunsite mff cuni cz)
   *
   * Based upon code written by Ross Biro, Linus Torvalds, Bob Manson,
-@@ -11,103 +11,598 @@
+@@ -11,103 +11,597 @@
   */
  
  #include <linux/kernel.h>
@@ -10607,13 +10383,7 @@
  #include <asm/page.h>
  #include <asm/cpudata.h>
 +#include <asm/psrcompat.h>
- 
--/* Returning from ptrace is a bit tricky because the syscall return
-- * low level code assumes any value returned which is negative and
-- * is a valid errno will mean setting the condition codes to indicate
-- * an error return.  This doesn't work, so we have this hook.
-- */
--static inline void pt_error_return(struct pt_regs *regs, unsigned long error)
++
 +#define GENREG_G0	0
 +#define GENREG_O0	8
 +#define GENREG_L0	16
@@ -10629,11 +10399,7 @@
 +		       const struct utrace_regset *regset,
 +		       unsigned int pos, unsigned int count,
 +		       void *kbuf, void __user *ubuf)
- {
--	regs->u_regs[UREG_I0] = error;
--	regs->tstate |= (TSTATE_ICARRY | TSTATE_XCARRY);
--	regs->tpc = regs->tnpc;
--	regs->tnpc += 4;
++{
 +	struct pt_regs *regs = task_pt_regs(target);
 +	int err;
 +
@@ -10683,12 +10449,16 @@
 +	}
 +
 +	return err;
- }
++}
  
--static inline void pt_succ_return(struct pt_regs *regs, unsigned long value)
+-/* Returning from ptrace is a bit tricky because the syscall return
+- * low level code assumes any value returned which is negative and
+- * is a valid errno will mean setting the condition codes to indicate
+- * an error return.  This doesn't work, so we have this hook.
 +/* Consistent with signal handling, we only allow userspace to
 + * modify the %asi, %icc, and %xcc fields of the %tstate register.
-+ */
+  */
+-static inline void pt_error_return(struct pt_regs *regs, unsigned long error)
 +#define TSTATE_DEBUGCHANGE	(TSTATE_ASI | TSTATE_ICC | TSTATE_XCC)
 +
 +static int genregs_set(struct task_struct *target,
@@ -10696,8 +10466,8 @@
 +		       unsigned int pos, unsigned int count,
 +		       const void *kbuf, const void __user *ubuf)
  {
--	regs->u_regs[UREG_I0] = value;
--	regs->tstate &= ~(TSTATE_ICARRY | TSTATE_XCARRY);
+-	regs->u_regs[UREG_I0] = error;
+-	regs->tstate |= (TSTATE_ICARRY | TSTATE_XCARRY);
 -	regs->tpc = regs->tnpc;
 -	regs->tnpc += 4;
 +	struct pt_regs *regs = task_pt_regs(target);
@@ -10762,8 +10532,7 @@
 +	return err;
  }
  
--static inline void
--pt_succ_return_linux(struct pt_regs *regs, unsigned long value, void __user *addr)
+-static inline void pt_succ_return(struct pt_regs *regs, unsigned long value)
 +#define FPREG_F0	0
 +#define FPREG_FSR	32
 +#define FPREG_GSR	33
@@ -10776,16 +10545,10 @@
 +		      unsigned int pos, unsigned int count,
 +		      void *kbuf, void __user *ubuf)
  {
--	if (test_thread_flag(TIF_32BIT)) {
--		if (put_user(value, (unsigned int __user *) addr)) {
--			pt_error_return(regs, EFAULT);
--			return;
--		}
--	} else {
--		if (put_user(value, (long __user *) addr)) {
--			pt_error_return(regs, EFAULT);
--			return;
--		}
+-	regs->u_regs[UREG_I0] = value;
+-	regs->tstate &= ~(TSTATE_ICARRY | TSTATE_XCARRY);
+-	regs->tpc = regs->tnpc;
+-	regs->tnpc += 4;
 +	struct thread_info *t = task_thread_info(target);
 +	int err;
 +
@@ -10809,26 +10572,27 @@
 +			*(unsigned long *) kbuf = regs->fprs;
 +		else if (put_user(regs->fprs, (unsigned long __user *) ubuf))
 +			return -EFAULT;
- 	}
--	regs->u_regs[UREG_I0] = 0;
--	regs->tstate &= ~(TSTATE_ICARRY | TSTATE_XCARRY);
--	regs->tpc = regs->tnpc;
--	regs->tnpc += 4;
++	}
 +
 +	return err;
  }
  
--static void
--pt_os_succ_return (struct pt_regs *regs, unsigned long val, void __user *addr)
+-static inline void
+-pt_succ_return_linux(struct pt_regs *regs, unsigned long value, void __user *addr)
 +static int fpregs_set(struct task_struct *target,
 +		      const struct utrace_regset *regset,
 +		      unsigned int pos, unsigned int count,
 +		      const void *kbuf, const void __user *ubuf)
  {
--	if (current->personality == PER_SUNOS)
--		pt_succ_return (regs, val);
--	else
--		pt_succ_return_linux (regs, val, addr);
+-	if (test_thread_flag(TIF_32BIT)) {
+-		if (put_user(value, (unsigned int __user *) addr)) {
+-			pt_error_return(regs, EFAULT);
+-			return;
+-		}
+-	} else {
+-		if (put_user(value, (long __user *) addr)) {
+-			pt_error_return(regs, EFAULT);
+-			return;
 +	struct thread_info *t = task_thread_info(target);
 +	int err;
 +
@@ -10855,10 +10619,8 @@
 +	}
 +
 +	return err;
- }
- 
--/* #define ALLOW_INIT_TRACING */
--/* #define DEBUG_PTRACE */
++}
++
 +static const struct utrace_regset native_regsets[] = {
 +	{
 +		.n = SPARC64_NGREGS,
@@ -10871,21 +10633,12 @@
 +		.get = fpregs_get, .set = fpregs_set
 +	},
 +};
- 
--#ifdef DEBUG_PTRACE
--char *pt_rq [] = {
--	/* 0  */ "TRACEME", "PEEKTEXT", "PEEKDATA", "PEEKUSR",
--	/* 4  */ "POKETEXT", "POKEDATA", "POKEUSR", "CONT",
--	/* 8  */ "KILL", "SINGLESTEP", "SUNATTACH", "SUNDETACH",
--	/* 12 */ "GETREGS", "SETREGS", "GETFPREGS", "SETFPREGS",
--	/* 16 */ "READDATA", "WRITEDATA", "READTEXT", "WRITETEXT",
--	/* 20 */ "GETFPAREGS", "SETFPAREGS", "unknown", "unknown",
--	/* 24 */ "SYSCALL", ""
++
 +const struct utrace_regset_view utrace_sparc64_native_view = {
 +	.name = UTS_MACHINE, .e_machine = ELF_ARCH,
 +	.regsets = native_regsets,
 +	.n = sizeof native_regsets / sizeof native_regsets[0],
- };
++};
 +EXPORT_SYMBOL_GPL(utrace_sparc64_native_view);
 +
 +#ifdef CONFIG_COMPAT
@@ -10969,8 +10722,12 @@
 +				ubuf += sizeof(u32);
 +			pos += sizeof(u32);
 +			count -= sizeof(u32);
-+		}
-+	}
+ 		}
+ 	}
+-	regs->u_regs[UREG_I0] = 0;
+-	regs->tstate &= ~(TSTATE_ICARRY | TSTATE_XCARRY);
+-	regs->tpc = regs->tnpc;
+-	regs->tnpc += 4;
 +
 +	if (count > 0 && pos == (GENREG32_PSR * 4)) {
 +		u32 psr = tstate_to_psr(regs->tstate);
@@ -11034,13 +10791,19 @@
 +	}
 +
 +	return 0;
-+}
-+
+ }
+ 
+-static void
+-pt_os_succ_return (struct pt_regs *regs, unsigned long val, void __user *addr)
 +static int genregs32_set(struct task_struct *target,
 +			 const struct utrace_regset *regset,
 +			 unsigned int pos, unsigned int count,
 +			 const void *kbuf, const void __user *ubuf)
-+{
+ {
+-	if (current->personality == PER_SUNOS)
+-		pt_succ_return (regs, val);
+-	else
+-		pt_succ_return_linux (regs, val, addr);
 +	struct pt_regs *regs = task_pt_regs(target);
 +
 +	while (count > 0 && pos < (GENREG32_L0 * 4)) {
@@ -11154,8 +10917,25 @@
 +	/* Ignore WIM and TBR */
 +
 +	return 0;
-+}
- #endif
+ }
+ 
+-/* #define ALLOW_INIT_TRACING */
+-/* #define DEBUG_PTRACE */
++#define FPREG32_F0	0
++#define FPREG32_FSR	32
+ 
+-#ifdef DEBUG_PTRACE
+-char *pt_rq [] = {
+-	/* 0  */ "TRACEME", "PEEKTEXT", "PEEKDATA", "PEEKUSR",
+-	/* 4  */ "POKETEXT", "POKEDATA", "POKEUSR", "CONT",
+-	/* 8  */ "KILL", "SINGLESTEP", "SUNATTACH", "SUNDETACH",
+-	/* 12 */ "GETREGS", "SETREGS", "GETFPREGS", "SETFPREGS",
+-	/* 16 */ "READDATA", "WRITEDATA", "READTEXT", "WRITETEXT",
+-	/* 20 */ "GETFPAREGS", "SETFPAREGS", "unknown", "unknown",
+-	/* 24 */ "SYSCALL", ""
+-};
+-#endif
++#define SPARC32_NFPREGS	33
  
 -/*
 - * Called by kernel/ptrace.c when detaching..
@@ -11163,11 +10943,6 @@
 - * Make sure single step bits etc are not set.
 - */
 -void ptrace_disable(struct task_struct *child)
-+#define FPREG32_F0	0
-+#define FPREG32_FSR	32
-+
-+#define SPARC32_NFPREGS	33
-+
 +static int fpregs32_get(struct task_struct *target,
 +			const struct utrace_regset *regset,
 +			unsigned int pos, unsigned int count,
@@ -11240,20 +11015,7 @@
  /* To get the necessary page struct, access_process_vm() first calls
   * get_user_pages().  This has done a flush_dcache_page() on the
   * accessed page.  Then our caller (copy_{to,from}_user_page()) did
-@@ -167,6 +662,7 @@ void flush_ptrace_access(struct vm_area_
- 	}
- }
- 
-+#if 0				/* XXX */
- asmlinkage void do_ptrace(struct pt_regs *regs)
- {
- 	int request = regs->u_regs[UREG_I0];
-@@ -640,11 +1136,13 @@ out_tsk:
- out:
- 	unlock_kernel();
- }
-+#endif
- 
+@@ -644,7 +1138,8 @@ out:
  asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
  {
  	/* do the secure computing check first */
@@ -11263,21 +11025,21 @@
  
  	if (unlikely(current->audit_context) && syscall_exit_p) {
  		unsigned long tstate = regs->tstate;
-@@ -656,26 +1154,9 @@ asmlinkage void syscall_trace(struct pt_
+@@ -656,26 +1151,9 @@ asmlinkage void syscall_trace(struct pt_
  		audit_syscall_exit(result, regs->u_regs[UREG_I0]);
  	}
  
 -	if (!(current->ptrace & PT_PTRACED))
 -		goto out;
--
++	if (test_thread_flag(TIF_SYSCALL_TRACE))
++		tracehook_report_syscall(regs, syscall_exit_p);
+ 
 -	if (!test_thread_flag(TIF_SYSCALL_TRACE))
 -		goto out;
 -
 -	ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
 -				 ? 0x80 : 0));
-+	if (test_thread_flag(TIF_SYSCALL_TRACE))
-+		tracehook_report_syscall(regs, syscall_exit_p);
- 
+-
 -	/*
 -	 * this isn't the same as continuing with a signal, but it will do
 -	 * for normal use.  strace only continues with a signal if the
@@ -11372,26 +11134,6 @@
  	INIT_LIST_HEAD(&p->children);
  	INIT_LIST_HEAD(&p->sibling);
  	strncpy(p->comm, type, sizeof(p->comm)-1);
---- linux-2.6/arch/ia64/kernel/signal.c.utrace-ptrace-compat
-+++ linux-2.6/arch/ia64/kernel/signal.c
-@@ -10,7 +10,7 @@
- #include <linux/errno.h>
- #include <linux/kernel.h>
- #include <linux/mm.h>
--#include <linux/ptrace.h>
-+#include <linux/tracehook.h>
- #include <linux/sched.h>
- #include <linux/signal.h>
- #include <linux/smp.h>
-@@ -471,6 +471,8 @@ handle_signal (unsigned long sig, struct
- 		sigaddset(&current->blocked, sig);
- 	recalc_sigpending();
- 	spin_unlock_irq(&current->sighand->siglock);
-+
-+	tracehook_report_handle_signal(sig, ka, oldset, &scr->pt);
- 	return 1;
- }
- 
 --- linux-2.6/arch/ia64/kernel/fsys.S.utrace-ptrace-compat
 +++ linux-2.6/arch/ia64/kernel/fsys.S
 @@ -83,29 +83,29 @@ ENTRY(fsys_getppid)
@@ -11533,54 +11275,9 @@
  	DEFINE(IA64_TASK_SIGHAND_OFFSET,offsetof (struct task_struct, sighand));
  	DEFINE(IA64_TASK_SIGNAL_OFFSET,offsetof (struct task_struct, signal));
  	DEFINE(IA64_TASK_TGID_OFFSET, offsetof (struct task_struct, tgid));
---- linux-2.6/arch/ia64/ia32/ia32_entry.S.utrace-ptrace-compat
-+++ linux-2.6/arch/ia64/ia32/ia32_entry.S
-@@ -236,7 +236,7 @@ ia32_syscall_table:
- 	data8 sys_setuid	/* 16-bit version */
- 	data8 sys_getuid	/* 16-bit version */
- 	data8 compat_sys_stime    /* 25 */
--	data8 sys32_ptrace
-+	data8 compat_sys_ptrace
- 	data8 sys32_alarm
- 	data8 sys_ni_syscall
- 	data8 sys32_pause
 --- linux-2.6/arch/ia64/ia32/sys_ia32.c.utrace-ptrace-compat
 +++ linux-2.6/arch/ia64/ia32/sys_ia32.c
-@@ -1419,25 +1419,6 @@ sys32_waitpid (int pid, unsigned int *st
- 	return compat_sys_wait4(pid, stat_addr, options, NULL);
- }
- 
--static unsigned int
--ia32_peek (struct task_struct *child, unsigned long addr, unsigned int *val)
--{
--	size_t copied;
--	unsigned int ret;
--
--	copied = access_process_vm(child, addr, val, sizeof(*val), 0);
--	return (copied != sizeof(ret)) ? -EIO : 0;
--}
--
--static unsigned int
--ia32_poke (struct task_struct *child, unsigned long addr, unsigned int val)
--{
--
--	if (access_process_vm(child, addr, &val, sizeof(val), 1) != sizeof(val))
--		return -EIO;
--	return 0;
--}
--
- /*
-  *  The order in which registers are stored in the ptrace regs structure
-  */
-@@ -1735,6 +1716,7 @@ restore_ia32_fpxstate (struct task_struc
- 	return 0;
- }
- 
-+#if 0				/* XXX */
- asmlinkage long
- sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data)
- {
-@@ -1842,9 +1824,11 @@ sys32_ptrace (int request, pid_t pid, un
+@@ -1842,9 +1842,11 @@ sys32_ptrace (int request, pid_t pid, un
  					    compat_ptr(data));
  		break;
  
@@ -11592,14 +11289,6 @@
  
  	      case PTRACE_SYSCALL:	/* continue, stop after next syscall */
  	      case PTRACE_CONT:		/* restart after signal. */
-@@ -1865,6 +1849,7 @@ sys32_ptrace (int request, pid_t pid, un
- 	unlock_kernel();
- 	return ret;
- }
-+#endif
- 
- typedef struct {
- 	unsigned int	ss_sp;
 --- linux-2.6/arch/ppc/kernel/asm-offsets.c.utrace-ptrace-compat
 +++ linux-2.6/arch/ppc/kernel/asm-offsets.c
 @@ -37,7 +37,6 @@ main(void)
@@ -11732,7 +11421,7 @@
  
  #ifdef CONFIG_COMPAT
  #include "compat_ptrace.h"
-@@ -87,31 +91,499 @@ FixPerRegisters(struct task_struct *task
+@@ -87,31 +91,497 @@ FixPerRegisters(struct task_struct *task
  }
  
  void
@@ -11741,7 +11430,6 @@
  {
  	task->thread.per_info.single_step = 1;
  	FixPerRegisters(task);
-+	set_tsk_thread_flag(task, TIF_SINGLE_STEP);
  }
  
  void
@@ -11750,7 +11438,6 @@
  {
  	task->thread.per_info.single_step = 0;
  	FixPerRegisters(task);
-+	clear_tsk_thread_flag(task, TIF_SINGLE_STEP);
  }
  
 +int
@@ -12241,7 +11928,7 @@
  #ifndef CONFIG_64BIT
  # define __ADDR_MASK 3
  #else
-@@ -593,6 +1065,7 @@ do_ptrace_emu31(struct task_struct *chil
+@@ -593,6 +1063,7 @@ do_ptrace_emu31(struct task_struct *chil
  			copied += sizeof(unsigned int);
  		}
  		return 0;
@@ -12249,7 +11936,7 @@
  	case PTRACE_GETEVENTMSG:
  		return put_user((__u32) child->ptrace_message,
  				(unsigned int __user *) data);
-@@ -606,6 +1079,7 @@ do_ptrace_emu31(struct task_struct *chil
+@@ -606,6 +1077,7 @@ do_ptrace_emu31(struct task_struct *chil
  			return -EINVAL;
  		return copy_siginfo_from_user32(child->last_siginfo,
  						(compat_siginfo_t __user *) data);
@@ -12257,7 +11944,7 @@
  	}
  	return ptrace_request(child, request, addr, data);
  }
-@@ -656,7 +1130,7 @@ do_ptrace(struct task_struct *child, lon
+@@ -656,7 +1128,7 @@ do_ptrace(struct task_struct *child, lon
  			clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
  		child->exit_code = data;
  		/* make sure the single step bit is not set. */
@@ -12266,7 +11953,7 @@
  		wake_up_process(child);
  		return 0;
  
-@@ -670,7 +1144,7 @@ do_ptrace(struct task_struct *child, lon
+@@ -670,7 +1142,7 @@ do_ptrace(struct task_struct *child, lon
  			return 0;
  		child->exit_code = SIGKILL;
  		/* make sure the single step bit is not set. */
@@ -12275,7 +11962,7 @@
  		wake_up_process(child);
  		return 0;
  
-@@ -683,7 +1157,7 @@ do_ptrace(struct task_struct *child, lon
+@@ -683,7 +1155,7 @@ do_ptrace(struct task_struct *child, lon
  		if (data)
  			set_tsk_thread_flag(child, TIF_SINGLE_STEP);
  		else
@@ -12284,7 +11971,7 @@
  		/* give it a chance to run. */
  		wake_up_process(child);
  		return 0;
-@@ -704,31 +1178,9 @@ do_ptrace(struct task_struct *child, lon
+@@ -704,31 +1176,9 @@ do_ptrace(struct task_struct *child, lon
  	/* Not reached.  */
  	return -EIO;
  }
@@ -12317,7 +12004,7 @@
  
  asmlinkage void
  syscall_trace(struct pt_regs *regs, int entryexit)
-@@ -736,30 +1188,17 @@ syscall_trace(struct pt_regs *regs, int 
+@@ -736,30 +1186,17 @@ syscall_trace(struct pt_regs *regs, int 
  	if (unlikely(current->audit_context) && entryexit)
  		audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]), regs->gprs[2]);
  

linux-2.6-xen.patch:
 arch/i386/Kconfig                                   |   86 
 arch/i386/Kconfig.cpu                               |    4 
 arch/i386/Kconfig.debug                             |    2 
 arch/i386/Makefile                                  |   24 
 arch/i386/boot-xen/Makefile                         |   21 
 arch/i386/kernel/Makefile                           |   21 
 arch/i386/kernel/acpi/Makefile                      |    4 
 arch/i386/kernel/acpi/boot-xen.c                    | 1168 ++++++++
 arch/i386/kernel/alternative.c                      |    4 
 arch/i386/kernel/apic-xen.c                         |  160 +
 arch/i386/kernel/asm-offsets.c                      |    7 
 arch/i386/kernel/cpu/Makefile                       |    5 
 arch/i386/kernel/cpu/common-xen.c                   |  740 +++++
 arch/i386/kernel/cpu/mtrr/Makefile                  |    7 
 arch/i386/kernel/cpu/mtrr/main-xen.c                |  197 +
 arch/i386/kernel/early_printk-xen.c                 |    2 
 arch/i386/kernel/entry-xen.S                        | 1188 ++++++++
 arch/i386/kernel/entry.S                            |    6 
 arch/i386/kernel/fixup.c                            |   93 
 arch/i386/kernel/head-xen.S                         |  180 +
 arch/i386/kernel/init_task-xen.c                    |   51 
 arch/i386/kernel/io_apic-xen.c                      | 2772 ++++++++++++++++++++
 arch/i386/kernel/ioport-xen.c                       |  121 
 arch/i386/kernel/irq-xen.c                          |  324 ++
 arch/i386/kernel/ldt-xen.c                          |  269 +
 arch/i386/kernel/microcode-xen.c                    |  147 +
 arch/i386/kernel/mpparse-xen.c                      | 1186 ++++++++
 arch/i386/kernel/pci-dma-xen.c                      |  378 ++
 arch/i386/kernel/process-xen.c                      |  815 +++++
 arch/i386/kernel/quirks-xen.c                       |   48 
 arch/i386/kernel/setup-xen.c                        | 1827 +++++++++++++
 arch/i386/kernel/smp-xen.c                          |  624 ++++
 arch/i386/kernel/swiotlb.c                          |  672 ++++
 arch/i386/kernel/sysenter.c                         |   22 
 arch/i386/kernel/time-xen.c                         | 1103 +++++++
 arch/i386/kernel/traps-xen.c                        | 1182 ++++++++
 arch/i386/kernel/traps.c                            |    9 
 arch/i386/kernel/tsc.c                              |    2 
 arch/i386/kernel/vm86.c                             |   12 
 arch/i386/kernel/vsyscall-note-xen.S                |   32 
 arch/i386/lib/delay.c                               |    3 
 arch/i386/mach-xen/Makefile                         |    5 
 arch/i386/mach-xen/setup.c                          |  154 +
 arch/i386/mm/Makefile                               |    8 
 arch/i386/mm/fault-xen.c                            |  770 +++++
 arch/i386/mm/highmem-xen.c                          |  133 
 arch/i386/mm/hypervisor.c                           |  458 +++
 arch/i386/mm/init-xen.c                             |  852 ++++++
 arch/i386/mm/ioremap-xen.c                          |  476 +++
 arch/i386/mm/pageattr.c                             |    2 
 arch/i386/mm/pgtable-xen.c                          |  693 +++++
 arch/i386/mm/pgtable.c                              |   12 
 arch/i386/oprofile/Makefile                         |    4 
 arch/i386/oprofile/xenoprof.c                       |  555 ++++
 arch/i386/pci/Makefile                              |    9 
 arch/i386/pci/irq-xen.c                             | 1204 ++++++++
 arch/i386/pci/pcifront.c                            |   55 
 arch/i386/power/Makefile                            |    4 
 arch/ia64/Kconfig                                   |   58 
 arch/ia64/Makefile                                  |   16 
 arch/ia64/hp/sim/Makefile                           |    2 
 arch/ia64/kernel/asm-offsets.c                      |   25 
 arch/ia64/kernel/entry.S                            |   32 
 arch/ia64/kernel/gate.S                             |    1 
 arch/ia64/kernel/gate.lds.S                         |    1 
 arch/ia64/kernel/head.S                             |    6 
 arch/ia64/kernel/iosapic.c                          |   65 
 arch/ia64/kernel/irq_ia64.c                         |  208 +
 arch/ia64/kernel/pal.S                              |    5 
 arch/ia64/kernel/setup.c                            |   60 
 arch/ia64/mm/ioremap.c                              |    3 
 arch/ia64/xen/Makefile                              |    8 
 arch/ia64/xen/drivers/README                        |    2 
 arch/ia64/xen/hypercall.S                           |  353 ++
 arch/ia64/xen/hypervisor.c                          |  799 +++++
 arch/ia64/xen/util.c                                |  130 
 arch/ia64/xen/xenentry.S                            |  869 ++++++
 arch/ia64/xen/xenhpski.c                            |   19 
 arch/ia64/xen/xenivt.S                              | 2171 +++++++++++++++
 arch/ia64/xen/xenminstate.h                         |  369 ++
 arch/ia64/xen/xenpal.S                              |   76 
 arch/ia64/xen/xensetup.S                            |   35 
 arch/um/kernel/physmem.c                            |    4 
 arch/x86_64/Kconfig                                 |   63 
 arch/x86_64/Kconfig.debug                           |    1 
 arch/x86_64/Makefile                                |   20 
 arch/x86_64/ia32/Makefile                           |   20 
 arch/x86_64/ia32/ia32entry-xen.S                    |  743 +++++
 arch/x86_64/ia32/syscall32-xen.c                    |  128 
 arch/x86_64/ia32/syscall32_syscall-xen.S            |   28 
 arch/x86_64/ia32/vsyscall-int80.S                   |   58 
 arch/x86_64/ia32/vsyscall-sigreturn.S               |    2 
 arch/x86_64/kernel/Makefile                         |   18 
 arch/x86_64/kernel/acpi/Makefile                    |    1 
 arch/x86_64/kernel/apic-xen.c                       |  197 +
 arch/x86_64/kernel/asm-offsets.c                    |    2 
 arch/x86_64/kernel/e820-xen.c                       |  752 +++++
 arch/x86_64/kernel/early_printk-xen.c               |  304 ++
 arch/x86_64/kernel/entry-xen.S                      | 1209 ++++++++
 arch/x86_64/kernel/genapic-xen.c                    |  143 +
 arch/x86_64/kernel/genapic_xen.c                    |  176 +
 arch/x86_64/kernel/head-xen.S                       |  176 +
 arch/x86_64/kernel/head64-xen.c                     |  161 +
 arch/x86_64/kernel/init_task.c                      |    3 
 arch/x86_64/kernel/io_apic-xen.c                    | 2263 ++++++++++++++++
 arch/x86_64/kernel/ioport-xen.c                     |   99 
 arch/x86_64/kernel/irq-xen.c                        |  198 +
 arch/x86_64/kernel/ldt-xen.c                        |  282 ++
 arch/x86_64/kernel/mpparse-xen.c                    | 1012 +++++++
 arch/x86_64/kernel/pci-swiotlb-xen.c                |   54 
 arch/x86_64/kernel/process-xen.c                    |  793 +++++
 arch/x86_64/kernel/setup-xen.c                      | 1640 +++++++++++
 arch/x86_64/kernel/setup64-xen.c                    |  360 ++
 arch/x86_64/kernel/smp-xen.c                        |  600 ++++
 arch/x86_64/kernel/traps-xen.c                      | 1166 ++++++++
 arch/x86_64/kernel/vsyscall-xen.c                   |  239 +
 arch/x86_64/kernel/xen_entry.S                      |   40 
 arch/x86_64/mm/Makefile                             |   10 
 arch/x86_64/mm/fault-xen.c                          |  723 +++++
 arch/x86_64/mm/init-xen.c                           | 1201 ++++++++
 arch/x86_64/mm/pageattr-xen.c                       |  396 ++
 arch/x86_64/oprofile/Makefile                       |    5 
 arch/x86_64/pci/Makefile                            |   12 
 drivers/Makefile                                    |    1 
 drivers/acpi/Kconfig                                |    3 
 drivers/char/hangcheck-timer.c                      |    2 
 drivers/char/mem.c                                  |    6 
 drivers/char/tpm/Kconfig                            |   12 
 drivers/char/tpm/Makefile                           |    2 
 drivers/char/tpm/tpm.c                              |   55 
 drivers/char/tpm/tpm.h                              |    7 
 drivers/char/tpm/tpm_vtpm.c                         |  547 +++
 drivers/char/tpm/tpm_vtpm.h                         |   68 
 drivers/char/tpm/tpm_xen.c                          |  758 +++++
 drivers/char/tty_io.c                               |    7 
 drivers/firmware/Kconfig                            |    2 
 drivers/ide/ide-lib.c                               |    8 
 drivers/oprofile/buffer_sync.c                      |   66 
 drivers/oprofile/cpu_buffer.c                       |   51 
 drivers/oprofile/cpu_buffer.h                       |    9 
 drivers/oprofile/event_buffer.h                     |    7 
 drivers/oprofile/oprof.c                            |   32 
 drivers/oprofile/oprof.h                            |    3 
 drivers/oprofile/oprofile_files.c                   |  207 +
 drivers/pci/Kconfig                                 |    1 
 drivers/scsi/scsi_error.c                           |    1 
 drivers/scsi/scsi_priv.h                            |    1 
 drivers/serial/Kconfig                              |    1 
 drivers/xen/Kconfig                                 |  260 +
 drivers/xen/Makefile                                |   17 
 drivers/xen/balloon/Makefile                        |    2 
 drivers/xen/balloon/balloon.c                       |  608 ++++
 drivers/xen/blkback/Makefile                        |    3 
 drivers/xen/blkback/blkback.c                       |  569 ++++
 drivers/xen/blkback/common.h                        |  134 
 drivers/xen/blkback/interface.c                     |  177 +
 drivers/xen/blkback/vbd.c                           |  119 
 drivers/xen/blkback/xenbus.c                        |  460 +++
 drivers/xen/blkfront/Kconfig                        |    6 
 drivers/xen/blkfront/Makefile                       |    5 
 drivers/xen/blkfront/blkfront.c                     |  841 ++++++
 drivers/xen/blkfront/block.h                        |  155 +
 drivers/xen/blkfront/vbd.c                          |  318 ++
 drivers/xen/blktap/Makefile                         |    3 
 drivers/xen/blktap/blktap.c                         | 1438 ++++++++++
 drivers/xen/blktap/common.h                         |  120 
 drivers/xen/blktap/interface.c                      |  165 +
 drivers/xen/blktap/xenbus.c                         |  354 ++
 drivers/xen/char/Makefile                           |    2 
 drivers/xen/char/mem.c                              |  181 +
 drivers/xen/console/Makefile                        |    2 
 drivers/xen/console/console.c                       |  647 ++++
 drivers/xen/console/xencons_ring.c                  |  141 +
 drivers/xen/core/Makefile                           |   13 
 drivers/xen/core/cpu_hotplug.c                      |  188 +
 drivers/xen/core/evtchn.c                           |  870 ++++++
 drivers/xen/core/features.c                         |   30 
 drivers/xen/core/gnttab.c                           |  442 +++
 drivers/xen/core/hypervisor_sysfs.c                 |   60 
 drivers/xen/core/reboot.c                           |  364 ++
 drivers/xen/core/skbuff.c                           |  141 +
 drivers/xen/core/smpboot.c                          |  427 +++
 drivers/xen/core/xen_proc.c                         |   19 
 drivers/xen/core/xen_sysfs.c                        |  379 ++
 drivers/xen/evtchn/Makefile                         |    2 
 drivers/xen/evtchn/evtchn.c                         |  457 +++
 drivers/xen/netback/Makefile                        |    5 
 drivers/xen/netback/common.h                        |  125 
 drivers/xen/netback/interface.c                     |  315 ++
 drivers/xen/netback/loopback.c                      |  261 +
 drivers/xen/netback/netback.c                       | 1122 ++++++++
 drivers/xen/netback/xenbus.c                        |  405 ++
 drivers/xen/netfront/Kconfig                        |    6 
 drivers/xen/netfront/Makefile                       |    4 
 drivers/xen/netfront/netfront.c                     | 1606 +++++++++++
 drivers/xen/pciback/Makefile                        |   13 
 drivers/xen/pciback/conf_space.c                    |  403 ++
 drivers/xen/pciback/conf_space.h                    |  123 
 drivers/xen/pciback/conf_space_capability.c         |   71 
 drivers/xen/pciback/conf_space_capability.h         |   23 
 drivers/xen/pciback/conf_space_capability_pm.c      |  113 
 drivers/xen/pciback/conf_space_capability_vpd.c     |   42 
 drivers/xen/pciback/conf_space_header.c             |  299 ++
 drivers/xen/pciback/passthrough.c                   |  157 +
 drivers/xen/pciback/pci_stub.c                      |  690 ++++
 drivers/xen/pciback/pciback.h                       |   91 
 drivers/xen/pciback/pciback_ops.c                   |   95 
 drivers/xen/pciback/vpci.c                          |  204 +
 drivers/xen/pciback/xenbus.c                        |  454 +++
 drivers/xen/pcifront/Makefile                       |    7 
 drivers/xen/pcifront/pci.c                          |   46 
 drivers/xen/pcifront/pci_op.c                       |  272 +
 drivers/xen/pcifront/pcifront.h                     |   40 
 drivers/xen/pcifront/xenbus.c                       |  294 ++
 drivers/xen/privcmd/Makefile                        |    2 
 drivers/xen/privcmd/privcmd.c                       |  285 ++
 drivers/xen/tpmback/Makefile                        |    4 
 drivers/xen/tpmback/common.h                        |   85 
 drivers/xen/tpmback/interface.c                     |  177 +
 drivers/xen/tpmback/tpmback.c                       |  983 +++++++
 drivers/xen/tpmback/xenbus.c                        |  291 ++
 drivers/xen/util.c                                  |   70 
 drivers/xen/xenbus/Makefile                         |   12 
 drivers/xen/xenbus/xenbus_backend_client.c          |  135 
 drivers/xen/xenbus/xenbus_client.c                  |  278 ++
 drivers/xen/xenbus/xenbus_comms.c                   |  208 +
 drivers/xen/xenbus/xenbus_comms.h                   |   43 
 drivers/xen/xenbus/xenbus_dev.c                     |  245 +
 drivers/xen/xenbus/xenbus_probe.c                   | 1086 +++++++
 drivers/xen/xenbus/xenbus_xs.c                      |  843 ++++++
 fs/Kconfig                                          |    1 
 include/asm-i386/apic.h                             |    2 
 include/asm-i386/fixmap.h                           |    4 
 include/asm-i386/mach-default/mach_traps.h          |   12 
 include/asm-i386/mach-xen/asm/agp.h                 |   37 
 include/asm-i386/mach-xen/asm/desc.h                |  164 +
 include/asm-i386/mach-xen/asm/dma-mapping.h         |  152 +
 include/asm-i386/mach-xen/asm/fixmap.h              |  156 +
 include/asm-i386/mach-xen/asm/floppy.h              |  147 +
 include/asm-i386/mach-xen/asm/highmem.h             |   80 
 include/asm-i386/mach-xen/asm/hypercall.h           |  372 ++
 include/asm-i386/mach-xen/asm/hypervisor.h          |  226 +
 include/asm-i386/mach-xen/asm/io.h                  |  389 ++
 include/asm-i386/mach-xen/asm/kmap_types.h          |   31 
 include/asm-i386/mach-xen/asm/mmu.h                 |   26 
 include/asm-i386/mach-xen/asm/mmu_context.h         |  107 
 include/asm-i386/mach-xen/asm/page.h                |  337 ++
 include/asm-i386/mach-xen/asm/param.h               |   23 
 include/asm-i386/mach-xen/asm/pci.h                 |  153 +
 include/asm-i386/mach-xen/asm/pgalloc.h             |   63 
 include/asm-i386/mach-xen/asm/pgtable-2level-defs.h |   21 
 include/asm-i386/mach-xen/asm/pgtable-2level.h      |   88 
 include/asm-i386/mach-xen/asm/pgtable-3level-defs.h |   25 
 include/asm-i386/mach-xen/asm/pgtable-3level.h      |  197 +
 include/asm-i386/mach-xen/asm/pgtable.h             |  509 +++
 include/asm-i386/mach-xen/asm/processor.h           |  741 +++++
 include/asm-i386/mach-xen/asm/ptrace.h              |   90 
 include/asm-i386/mach-xen/asm/scatterlist.h         |   22 
 include/asm-i386/mach-xen/asm/segment.h             |  117 
 include/asm-i386/mach-xen/asm/setup.h               |   79 
 include/asm-i386/mach-xen/asm/smp.h                 |  103 
 include/asm-i386/mach-xen/asm/spinlock.h            |  199 +
 include/asm-i386/mach-xen/asm/swiotlb.h             |   43 
 include/asm-i386/mach-xen/asm/synch_bitops.h        |  143 +
 include/asm-i386/mach-xen/asm/system.h              |  575 ++++
 include/asm-i386/mach-xen/asm/timer.h               |   70 
 include/asm-i386/mach-xen/asm/tlbflush.h            |  101 
 include/asm-i386/mach-xen/asm/vga.h                 |   20 
 include/asm-i386/mach-xen/irq_vectors.h             |  125 
 include/asm-i386/mach-xen/mach_traps.h              |   33 
 include/asm-i386/mach-xen/setup_arch.h              |    6 
 include/asm-i386/page.h                             |    2 
 include/asm-i386/pgtable-2level-defs.h              |    2 
 include/asm-i386/pgtable-3level-defs.h              |    2 
 include/asm-ia64/agp.h                              |   31 
 include/asm-ia64/dma-mapping.h                      |   72 
 include/asm-ia64/fixmap.h                           |    2 
 include/asm-ia64/gcc_intrin.h                       |   60 
 include/asm-ia64/hw_irq.h                           |   10 
 include/asm-ia64/hypercall.h                        |  533 +++
 include/asm-ia64/hypervisor.h                       |  207 +
 include/asm-ia64/intel_intrin.h                     |   68 
 include/asm-ia64/io.h                               |   34 
 include/asm-ia64/iosapic.h                          |    2 
 include/asm-ia64/irq.h                              |   31 
 include/asm-ia64/machvec.h                          |   15 
 include/asm-ia64/meminit.h                          |    5 
 include/asm-ia64/page.h                             |  124 
 include/asm-ia64/pal.h                              |    1 
 include/asm-ia64/pgalloc.h                          |    2 
 include/asm-ia64/privop.h                           |   59 
 include/asm-ia64/processor.h                        |    1 
 include/asm-ia64/synch_bitops.h                     |   63 
 include/asm-ia64/system.h                           |    4 
 include/asm-ia64/xen/privop.h                       |  302 ++
 include/asm-um/page.h                               |    2 
 include/asm-x86_64/apic.h                           |    2 
 include/asm-x86_64/mach-xen/asm/arch_hooks.h        |   27 
 include/asm-x86_64/mach-xen/asm/bootsetup.h         |   42 
 include/asm-x86_64/mach-xen/asm/desc.h              |  263 +
 include/asm-x86_64/mach-xen/asm/dma-mapping.h       |  208 +
 include/asm-x86_64/mach-xen/asm/dmi.h               |   29 
 include/asm-x86_64/mach-xen/asm/e820.h              |   64 
 include/asm-x86_64/mach-xen/asm/fixmap.h            |  113 
 include/asm-x86_64/mach-xen/asm/floppy.h            |  206 +
 include/asm-x86_64/mach-xen/asm/hw_irq.h            |  137 
 include/asm-x86_64/mach-xen/asm/hypercall.h         |  372 ++
 include/asm-x86_64/mach-xen/asm/hypervisor.h        |    2 
 include/asm-x86_64/mach-xen/asm/io.h                |  327 ++
 include/asm-x86_64/mach-xen/asm/irq.h               |   39 
 include/asm-x86_64/mach-xen/asm/mmu.h               |   37 
 include/asm-x86_64/mach-xen/asm/mmu_context.h       |  135 
 include/asm-x86_64/mach-xen/asm/msr.h               |  399 ++
 include/asm-x86_64/mach-xen/asm/nmi.h               |   93 
 include/asm-x86_64/mach-xen/asm/page.h              |  327 ++
 include/asm-x86_64/mach-xen/asm/param.h             |   22 
 include/asm-x86_64/mach-xen/asm/pci.h               |  173 +
 include/asm-x86_64/mach-xen/asm/pgalloc.h           |  226 +
 include/asm-x86_64/mach-xen/asm/pgtable.h           |  560 ++++
 include/asm-x86_64/mach-xen/asm/processor.h         |  499 +++
 include/asm-x86_64/mach-xen/asm/ptrace.h            |  125 
 include/asm-x86_64/mach-xen/asm/smp.h               |  150 +
 include/asm-x86_64/mach-xen/asm/synch_bitops.h      |    2 
 include/asm-x86_64/mach-xen/asm/system.h            |  346 ++
 include/asm-x86_64/mach-xen/asm/timer.h             |   67 
 include/asm-x86_64/mach-xen/asm/tlbflush.h          |  103 
 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/irq_vectors.h           |  123 
 include/asm-x86_64/mach-xen/mach_time.h             |  111 
 include/asm-x86_64/mach-xen/mach_timer.h            |   48 
 include/asm-x86_64/mach-xen/setup_arch_post.h       |   58 
 include/asm-x86_64/mach-xen/setup_arch_pre.h        |    5 
 include/linux/gfp.h                                 |    6 
 include/linux/highmem.h                             |    6 
 include/linux/interrupt.h                           |    6 
 include/linux/mm.h                                  |   10 
 include/linux/oprofile.h                            |   11 
 include/linux/skbuff.h                              |   15 
 include/scsi/scsi_eh.h                              |    1 
 include/xen/balloon.h                               |   63 
 include/xen/cpu_hotplug.h                           |   44 
 include/xen/driver_util.h                           |   16 
 include/xen/evtchn.h                                |  114 
 include/xen/features.h                              |   20 
 include/xen/foreign_page.h                          |   30 
 include/xen/gnttab.h                                |  151 +
 include/xen/hypervisor_sysfs.h                      |   32 
 include/xen/interface/acm.h                         |  188 +
 include/xen/interface/acm_ops.h                     |  103 
 include/xen/interface/arch-ia64.h                   |  433 +++
 include/xen/interface/arch-powerpc.h                |  119 
 include/xen/interface/arch-x86_32.h                 |  233 +
 include/xen/interface/arch-x86_64.h                 |  299 ++
 include/xen/interface/callback.h                    |   74 
 include/xen/interface/dom0_ops.h                    |  598 ++++
 include/xen/interface/event_channel.h               |  233 +
 include/xen/interface/features.h                    |   53 
 include/xen/interface/grant_table.h                 |  317 ++
 include/xen/interface/hvm/hvm_info_table.h          |   24 
 include/xen/interface/hvm/ioreq.h                   |   93 
 include/xen/interface/hvm/vmx_assist.h              |   98 
 include/xen/interface/io/blkif.h                    |   87 
 include/xen/interface/io/console.h                  |   33 
 include/xen/interface/io/netif.h                    |  157 +
 include/xen/interface/io/pciif.h                    |   55 
 include/xen/interface/io/ring.h                     |  273 +
 include/xen/interface/io/tpmif.h                    |   59 
 include/xen/interface/io/xenbus.h                   |   45 
 include/xen/interface/io/xs_wire.h                  |   97 
 include/xen/interface/memory.h                      |  243 +
 include/xen/interface/nmi.h                         |   60 
 include/xen/interface/physdev.h                     |  149 +
 include/xen/interface/sched.h                       |  103 
 include/xen/interface/sched_ctl.h                   |   69 
 include/xen/interface/trace.h                       |   87 
 include/xen/interface/vcpu.h                        |  121 
 include/xen/interface/version.h                     |   70 
 include/xen/interface/xen-compat.h                  |   47 
 include/xen/interface/xen.h                         |  507 +++
 include/xen/interface/xencomm.h                     |   37 
 include/xen/interface/xenoprof.h                    |  103 
 include/xen/pcifront.h                              |   39 
 include/xen/public/evtchn.h                         |   91 
 include/xen/public/privcmd.h                        |   79 
 include/xen/xen_proc.h                              |   13 
 include/xen/xenbus.h                                |  299 ++
 include/xen/xencons.h                               |   14 
 kernel/Kconfig.preempt                              |    1 
 kernel/fork.c                                       |    3 
 kernel/irq/manage.c                                 |    1 
 kernel/timer.c                                      |   16 
 lib/Kconfig.debug                                   |    2 
 lib/Makefile                                        |    3 
 mm/Kconfig                                          |    3 
 mm/highmem.c                                        |   11 
 mm/memory.c                                         |  119 
 mm/mmap.c                                           |    4 
 mm/page_alloc.c                                     |    6 
 net/core/dev.c                                      |   63 
 net/core/pktgen.c                                   |    2 
 net/core/skbuff.c                                   |   42 
 net/ipv4/netfilter/ip_nat_proto_tcp.c               |    7 
 net/ipv4/netfilter/ip_nat_proto_udp.c               |    7 
 net/ipv4/xfrm4_output.c                             |    6 
 net/ipv6/addrconf.c                                 |    2 
 scripts/Makefile.xen                                |   14 
 407 files changed, 85185 insertions(+), 201 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.49.4.1 -r 1.49.4.2 linux-2.6-xen.patch
Index: linux-2.6-xen.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-xen.patch,v
retrieving revision 1.49.4.1
retrieving revision 1.49.4.2
diff -u -r1.49.4.1 -r1.49.4.2
--- linux-2.6-xen.patch	11 Aug 2006 19:11:01 -0000	1.49.4.1
+++ linux-2.6-xen.patch	16 Aug 2006 20:42:37 -0000	1.49.4.2
@@ -1,6 +1,6 @@
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/boot-xen/Makefile linux-2.6-xen-fedora/arch/i386/boot-xen/Makefile
 --- linux-2.6/arch/i386/boot-xen/Makefile	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/boot-xen/Makefile	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/boot-xen/Makefile	2006-07-18 03:27:59.000000000 +0200
 @@ -0,0 +1,21 @@
 +
 +OBJCOPYFLAGS := -g --strip-unneeded
@@ -24,8 +24,8 @@
 +	install -m0664 System.map $(INSTALL_ROOT)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
 +	ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) $(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL)$(XENGUEST)$(INSTALL_SUFFIX)
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/Kconfig linux-2.6-xen-fedora/arch/i386/Kconfig
---- linux-2.6/arch/i386/Kconfig	2006-08-01 06:44:38.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/Kconfig	2006-08-02 18:15:29.000000000 +0200
+--- linux-2.6/arch/i386/Kconfig	2006-07-13 00:51:19.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/Kconfig	2006-07-26 17:11:03.000000000 +0200
 @@ -16,10 +16,12 @@ config X86_32
  
  config GENERIC_TIME
@@ -149,7 +149,7 @@
  	---help---
  	  On Intel P6 family processors (Pentium Pro, Pentium II and later)
  	  the Memory Type Range Registers (MTRRs) may be used to control
-@@ -673,7 +694,7 @@ config MTRR
+@@ -694,7 +694,7 @@ config MTRR
  
  config EFI
  	bool "Boot from EFI support"
@@ -313,7 +313,7 @@
  	default y
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/Kconfig.cpu linux-2.6-xen-fedora/arch/i386/Kconfig.cpu
 --- linux-2.6/arch/i386/Kconfig.cpu	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/Kconfig.cpu	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/Kconfig.cpu	2006-07-18 03:27:59.000000000 +0200
 @@ -251,7 +251,7 @@ config X86_PPRO_FENCE
  
  config X86_F00F_BUG
@@ -332,7 +332,7 @@
  	default y
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/Kconfig.debug linux-2.6-xen-fedora/arch/i386/Kconfig.debug
 --- linux-2.6/arch/i386/Kconfig.debug	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/Kconfig.debug	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/Kconfig.debug	2006-07-22 20:37:34.000000000 +0200
 @@ -2,6 +2,7 @@ menu "Kernel hacking"
  
  config TRACE_IRQFLAGS_SUPPORT
@@ -351,7 +351,7 @@
            would otherwise cause a system to silently reboot. Disabling this
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/acpi/boot-xen.c linux-2.6-xen-fedora/arch/i386/kernel/acpi/boot-xen.c
 --- linux-2.6/arch/i386/kernel/acpi/boot-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/acpi/boot-xen.c	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/acpi/boot-xen.c	2006-07-22 20:37:34.000000000 +0200
 @@ -0,0 +1,1168 @@
 +/*
 + *  boot.c - Architecture-Specific Low-Level ACPI Boot Support
@@ -1523,7 +1523,7 @@
 +}
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/acpi/Makefile linux-2.6-xen-fedora/arch/i386/kernel/acpi/Makefile
 --- linux-2.6/arch/i386/kernel/acpi/Makefile	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/acpi/Makefile	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/acpi/Makefile	2006-07-18 03:27:59.000000000 +0200
 @@ -6,3 +6,7 @@ ifneq ($(CONFIG_ACPI_PROCESSOR),)
  obj-y				+= cstate.o processor.o
  endif
@@ -1534,7 +1534,7 @@
 +endif
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/alternative.c linux-2.6-xen-fedora/arch/i386/kernel/alternative.c
 --- linux-2.6/arch/i386/kernel/alternative.c	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/alternative.c	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/alternative.c	2006-07-22 20:37:34.000000000 +0200
 @@ -4,7 +4,11 @@
  #include <asm/alternative.h>
  #include <asm/sections.h>
@@ -1549,7 +1549,7 @@
  
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/apic-xen.c linux-2.6-xen-fedora/arch/i386/kernel/apic-xen.c
 --- linux-2.6/arch/i386/kernel/apic-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/apic-xen.c	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/apic-xen.c	2006-07-22 20:37:34.000000000 +0200
 @@ -0,0 +1,160 @@
 +/*
 + *	Local APIC handling, local APIC timers
@@ -1713,7 +1713,7 @@
 +}
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/asm-offsets.c linux-2.6-xen-fedora/arch/i386/kernel/asm-offsets.c
 --- linux-2.6/arch/i386/kernel/asm-offsets.c	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/asm-offsets.c	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/asm-offsets.c	2006-07-22 21:45:45.000000000 +0200
 @@ -66,9 +66,14 @@ void foo(void)
  	OFFSET(pbe_orig_address, pbe, orig_address);
  	OFFSET(pbe_next, pbe, next);
@@ -1732,7 +1732,7 @@
  	DEFINE(VDSO_PRELINK, VDSO_PRELINK);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/cpu/common-xen.c linux-2.6-xen-fedora/arch/i386/kernel/cpu/common-xen.c
 --- linux-2.6/arch/i386/kernel/cpu/common-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/common-xen.c	2006-08-03 22:52:02.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/common-xen.c	2006-07-18 03:27:59.000000000 +0200
 @@ -0,0 +1,740 @@
 +#include <linux/init.h>
 +#include <linux/string.h>
@@ -2476,7 +2476,7 @@
 +#endif
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/cpu/Makefile linux-2.6-xen-fedora/arch/i386/kernel/cpu/Makefile
 --- linux-2.6/arch/i386/kernel/cpu/Makefile	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/Makefile	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/Makefile	2006-07-18 03:27:59.000000000 +0200
 @@ -17,3 +17,8 @@ obj-$(CONFIG_X86_MCE)	+=	mcheck/
  
  obj-$(CONFIG_MTRR)	+= 	mtrr/
@@ -2488,7 +2488,7 @@
 +endif
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/cpu/mtrr/main-xen.c linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/main-xen.c
 --- linux-2.6/arch/i386/kernel/cpu/mtrr/main-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/main-xen.c	2006-08-01 02:31:00.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/main-xen.c	2006-07-18 03:27:59.000000000 +0200
 @@ -0,0 +1,197 @@
 +#include <linux/init.h>
 +#include <linux/proc_fs.h>
@@ -2689,7 +2689,7 @@
 +subsys_initcall(mtrr_init);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/cpu/mtrr/Makefile linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/Makefile
 --- linux-2.6/arch/i386/kernel/cpu/mtrr/Makefile	2006-07-13 00:51:19.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/Makefile	2006-08-01 02:30:59.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/cpu/mtrr/Makefile	2006-07-18 03:27:59.000000000 +0200
 @@ -3,3 +3,10 @@ obj-y		+= amd.o
  obj-y		+= cyrix.o
  obj-y		+= centaur.o
@@ -2703,13 +2703,13 @@
 +endif
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/early_printk-xen.c linux-2.6-xen-fedora/arch/i386/kernel/early_printk-xen.c
 --- linux-2.6/arch/i386/kernel/early_printk-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/early_printk-xen.c	2006-08-01 02:31:00.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/early_printk-xen.c	2006-07-18 03:27:59.000000000 +0200
 @@ -0,0 +1,2 @@
 +
 +#include "../../x86_64/kernel/early_printk-xen.c"
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/entry.S linux-2.6-xen-fedora/arch/i386/kernel/entry.S
---- linux-2.6/arch/i386/kernel/entry.S	2006-08-01 06:44:38.000000000 +0200
-+++ linux-2.6-xen-fedora/arch/i386/kernel/entry.S	2006-08-02 18:15:29.000000000 +0200
+--- linux-2.6/arch/i386/kernel/entry.S	2006-07-13 00:51:19.000000000 +0200
++++ linux-2.6-xen-fedora/arch/i386/kernel/entry.S	2006-07-22 21:45:45.000000000 +0200
 @@ -265,7 +265,7 @@ ENTRY(sysenter_entry)
  	CFI_STARTPROC simple
  	CFI_DEF_CFA esp, 0
@@ -2739,13 +2739,13 @@
  	pushl $sysenter_past_esp
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/arch/i386/kernel/entry-xen.S linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S
 --- linux-2.6/arch/i386/kernel/entry-xen.S	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S	2006-08-02 18:15:29.000000000 +0200
-@@ -0,0 +1,1209 @@
++++ linux-2.6-xen-fedora/arch/i386/kernel/entry-xen.S	2006-07-22 21:45:45.000000000 +0200
+@@ -0,0 +1,1188 @@
 +/*
 + *  linux/arch/i386/entry.S
 + *
-+ *  Copyright (C) 1991, 1992  Linus Torvalds
-+ */
++ *  Copyright (C) 1991, 1992  Linus Torvalds 
++*/
 +
 +/*
 + * entry.S contains the system-call and fault low-level handling routines.
@@ -2977,7 +2977,7 @@
 +ENTRY(ret_from_fork)
 +	CFI_STARTPROC
 +	pushl %eax
-+	CFI_ADJUST_CFA_OFFSET 4
++	CFI_ADJUST_CFA_OFFSET -4
 +	call schedule_tail
 +	GET_THREAD_INFO(%ebp)
 +	popl %eax
@@ -3109,10 +3109,8 @@
 +14:	__DISABLE_INTERRUPTS
 +sysexit_ecrit:	/**** END OF SYSEXIT CRITICAL REGION ****/
 +	push %esp
-+	CFI_ADJUST_CFA_OFFSET 4
 +	call evtchn_do_upcall
 +	add  $4,%esp
-+	CFI_ADJUST_CFA_OFFSET -4
 +	jmp  ret_from_intr
 +#else
 +	sti
@@ -3160,6 +3158,7 @@
 +	movb CS(%esp), %al
 +	andl $(VM_MASK | (4 << 8) | 3), %eax
 +	cmpl $((4 << 8) | 3), %eax
++	CFI_REMEMBER_STATE
 +	je ldt_ss			# returning to user-space with LDT SS
 +restore_nocheck:
 +#else
@@ -3174,7 +3173,6 @@
 +	jnz restore_all_enable_events	#        != 0 => enable event delivery
[...6130 lines suppressed...]
@@ -89510,7 +88467,7 @@
 +#endif /* _XEN_XENBUS_H */
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/include/xen/xencons.h linux-2.6-xen-fedora/include/xen/xencons.h
 --- linux-2.6/include/xen/xencons.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/include/xen/xencons.h	2006-08-01 02:31:26.000000000 +0200
++++ linux-2.6-xen-fedora/include/xen/xencons.h	2006-07-18 03:28:32.000000000 +0200
 @@ -0,0 +1,14 @@
 +#ifndef __ASM_XENCONS_H__
 +#define __ASM_XENCONS_H__
@@ -89528,7 +88485,7 @@
 +#endif /* __ASM_XENCONS_H__ */
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/include/xen/xen_proc.h linux-2.6-xen-fedora/include/xen/xen_proc.h
 --- linux-2.6/include/xen/xen_proc.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/include/xen/xen_proc.h	2006-08-01 02:31:26.000000000 +0200
++++ linux-2.6-xen-fedora/include/xen/xen_proc.h	2006-07-18 03:28:32.000000000 +0200
 @@ -0,0 +1,13 @@
 +
 +#ifndef __ASM_XEN_PROC_H__
@@ -89545,7 +88502,7 @@
 +#endif /* __ASM_XEN_PROC_H__ */
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/kernel/fork.c linux-2.6-xen-fedora/kernel/fork.c
 --- linux-2.6/kernel/fork.c	2006-07-16 19:14:09.000000000 +0200
-+++ linux-2.6-xen-fedora/kernel/fork.c	2006-08-01 02:31:26.000000000 +0200
++++ linux-2.6-xen-fedora/kernel/fork.c	2006-07-22 20:37:56.000000000 +0200
 @@ -275,6 +275,9 @@ static inline int dup_mmap(struct mm_str
  		if (retval)
  			goto out;
@@ -89557,9 +88514,9 @@
  out:
  	up_write(&mm->mmap_sem);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/kernel/irq/manage.c linux-2.6-xen-fedora/kernel/irq/manage.c
---- linux-2.6/kernel/irq/manage.c	2006-08-01 06:44:39.000000000 +0200
-+++ linux-2.6-xen-fedora/kernel/irq/manage.c	2006-08-02 18:15:29.000000000 +0200
-@@ -350,7 +350,6 @@ void free_irq(unsigned int irq, void *de
+--- linux-2.6/kernel/irq/manage.c	2006-07-13 00:51:41.000000000 +0200
++++ linux-2.6-xen-fedora/kernel/irq/manage.c	2006-07-22 20:37:56.000000000 +0200
+@@ -326,7 +326,6 @@ void free_irq(unsigned int irq, void *de
  	struct irqaction **p;
  	unsigned long flags;
  
@@ -89569,7 +88526,7 @@
  
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/kernel/Kconfig.preempt linux-2.6-xen-fedora/kernel/Kconfig.preempt
 --- linux-2.6/kernel/Kconfig.preempt	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/kernel/Kconfig.preempt	2006-08-01 02:31:26.000000000 +0200
++++ linux-2.6-xen-fedora/kernel/Kconfig.preempt	2006-07-18 03:28:32.000000000 +0200
 @@ -35,6 +35,7 @@ config PREEMPT_VOLUNTARY
  
  config PREEMPT
@@ -89579,8 +88536,8 @@
  	  This option reduces the latency of the kernel by making
  	  all kernel code (that is not executing in a critical section)
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/kernel/timer.c linux-2.6-xen-fedora/kernel/timer.c
---- linux-2.6/kernel/timer.c	2006-08-01 06:44:39.000000000 +0200
-+++ linux-2.6-xen-fedora/kernel/timer.c	2006-08-02 18:15:30.000000000 +0200
+--- linux-2.6/kernel/timer.c	2006-07-16 19:14:09.000000000 +0200
++++ linux-2.6-xen-fedora/kernel/timer.c	2006-07-22 20:37:56.000000000 +0200
 @@ -554,6 +554,22 @@ found:
  	if (time_before(expires, jiffies))
  		return jiffies;
@@ -89606,19 +88563,19 @@
  
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/lib/Kconfig.debug linux-2.6-xen-fedora/lib/Kconfig.debug
 --- linux-2.6/lib/Kconfig.debug	2006-07-16 19:14:09.000000000 +0200
-+++ linux-2.6-xen-fedora/lib/Kconfig.debug	2006-08-02 18:15:30.000000000 +0200
++++ linux-2.6-xen-fedora/lib/Kconfig.debug	2006-07-22 20:37:56.000000000 +0200
 @@ -325,7 +325,7 @@ config FRAME_POINTER
  
  config UNWIND_INFO
  	bool "Compile the kernel with frame unwind information"
 -	depends on !IA64 && !PARISC
-+	depends on !IA64 && !PARISC && !X86_64_XEN
++	depends on !IA64 && !PARISC && !XEN
  	depends on !MODULES || !(MIPS || PPC || SUPERH || V850)
  	help
  	  If you say Y here the resulting kernel image will be slightly larger
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/lib/Makefile linux-2.6-xen-fedora/lib/Makefile
 --- linux-2.6/lib/Makefile	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/lib/Makefile	2006-08-01 02:31:26.000000000 +0200
++++ linux-2.6-xen-fedora/lib/Makefile	2006-07-22 20:37:56.000000000 +0200
 @@ -51,6 +51,9 @@ obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o
  obj-$(CONFIG_SMP) += percpu_counter.o
  
@@ -89631,7 +88588,7 @@
  clean-files	:= crc32table.h
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/mm/highmem.c linux-2.6-xen-fedora/mm/highmem.c
 --- linux-2.6/mm/highmem.c	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/mm/highmem.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/mm/highmem.c	2006-07-22 20:37:56.000000000 +0200
 @@ -142,6 +142,17 @@ start:
  	return vaddr;
  }
@@ -89652,7 +88609,7 @@
  	unsigned long vaddr;
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/mm/Kconfig linux-2.6-xen-fedora/mm/Kconfig
 --- linux-2.6/mm/Kconfig	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/mm/Kconfig	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/mm/Kconfig	2006-07-22 20:37:56.000000000 +0200
 @@ -127,11 +127,14 @@ comment "Memory hotplug is currently inc
  # Default to 4 for wider testing, though 8 might be more appropriate.
  # ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
@@ -89670,7 +88627,7 @@
  #
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/mm/memory.c linux-2.6-xen-fedora/mm/memory.c
 --- linux-2.6/mm/memory.c	2006-07-16 19:14:09.000000000 +0200
-+++ linux-2.6-xen-fedora/mm/memory.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/mm/memory.c	2006-07-22 20:37:57.000000000 +0200
 @@ -403,7 +403,8 @@ struct page *vm_normal_page(struct vm_ar
  	 * and that the resulting page looks ok.
  	 */
@@ -89813,7 +88770,7 @@
   * which was read non-atomically.  Before making any commitment, on
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/mm/mmap.c linux-2.6-xen-fedora/mm/mmap.c
 --- linux-2.6/mm/mmap.c	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/mm/mmap.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/mm/mmap.c	2006-07-22 20:37:57.000000000 +0200
 @@ -1950,6 +1950,10 @@ void exit_mmap(struct mm_struct *mm)
  	unsigned long nr_accounted = 0;
  	unsigned long end;
@@ -89827,7 +88784,7 @@
  	tlb = tlb_gather_mmu(mm, 1);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/mm/page_alloc.c linux-2.6-xen-fedora/mm/page_alloc.c
 --- linux-2.6/mm/page_alloc.c	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/mm/page_alloc.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/mm/page_alloc.c	2006-07-22 20:37:57.000000000 +0200
 @@ -443,7 +443,8 @@ static void __free_pages_ok(struct page 
  	int i;
  	int reserved = 0;
@@ -89850,7 +88807,7 @@
  		page->mapping = NULL;
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/core/dev.c linux-2.6-xen-fedora/net/core/dev.c
 --- linux-2.6/net/core/dev.c	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/net/core/dev.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/net/core/dev.c	2006-07-23 03:42:00.000000000 +0200
 @@ -117,6 +117,12 @@
  #include <linux/dmaengine.h>
  #include <linux/err.h>
@@ -89951,7 +88908,7 @@
  EXPORT_SYMBOL(br_handle_frame_hook);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/core/pktgen.c linux-2.6-xen-fedora/net/core/pktgen.c
 --- linux-2.6/net/core/pktgen.c	2006-07-13 00:51:41.000000000 +0200
-+++ linux-2.6-xen-fedora/net/core/pktgen.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/net/core/pktgen.c	2006-07-22 20:37:57.000000000 +0200
 @@ -6,7 +6,7 @@
   *
   * Alexey Kuznetsov  <kuznet ms2 inr ac ru>
@@ -89963,7 +88920,7 @@
   * modify it under the terms of the GNU General Public License
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/core/skbuff.c linux-2.6-xen-fedora/net/core/skbuff.c
 --- linux-2.6/net/core/skbuff.c	2006-07-16 19:14:09.000000000 +0200
-+++ linux-2.6-xen-fedora/net/core/skbuff.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/net/core/skbuff.c	2006-07-22 20:37:57.000000000 +0200
 @@ -146,6 +146,7 @@ EXPORT_SYMBOL(skb_truesize_bug);
   *	Buffers may only be allocated from interrupts using a @gfp_mask of
   *	%GFP_ATOMIC.
@@ -90052,7 +89009,7 @@
  	C(priority);
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/ipv4/netfilter/ip_nat_proto_tcp.c linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_tcp.c
 --- linux-2.6/net/ipv4/netfilter/ip_nat_proto_tcp.c	2006-07-13 00:51:42.000000000 +0200
-+++ linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_tcp.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_tcp.c	2006-07-18 03:28:34.000000000 +0200
 @@ -129,7 +129,12 @@ tcp_manip_pkt(struct sk_buff **pskb,
  	if (hdrsize < sizeof(*hdr))
  		return 1;
@@ -90069,7 +89026,7 @@
  							   hdr->check));
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/ipv4/netfilter/ip_nat_proto_udp.c linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_udp.c
 --- linux-2.6/net/ipv4/netfilter/ip_nat_proto_udp.c	2006-07-13 00:51:42.000000000 +0200
-+++ linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_udp.c	2006-08-01 02:31:27.000000000 +0200
++++ linux-2.6-xen-fedora/net/ipv4/netfilter/ip_nat_proto_udp.c	2006-07-22 20:37:58.000000000 +0200
 @@ -114,7 +114,12 @@ udp_manip_pkt(struct sk_buff **pskb,
  		portptr = &hdr->dest;
  	}
@@ -90086,7 +89043,7 @@
  							   hdr->check));
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/ipv4/xfrm4_output.c linux-2.6-xen-fedora/net/ipv4/xfrm4_output.c
 --- linux-2.6/net/ipv4/xfrm4_output.c	2006-07-13 00:51:42.000000000 +0200
-+++ linux-2.6-xen-fedora/net/ipv4/xfrm4_output.c	2006-08-01 02:31:28.000000000 +0200
++++ linux-2.6-xen-fedora/net/ipv4/xfrm4_output.c	2006-07-22 20:37:58.000000000 +0200
 @@ -18,6 +18,8 @@
  #include <net/xfrm.h>
  #include <net/icmp.h>
@@ -90109,7 +89066,7 @@
  		if (err)
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/net/ipv6/addrconf.c linux-2.6-xen-fedora/net/ipv6/addrconf.c
 --- linux-2.6/net/ipv6/addrconf.c	2006-07-16 19:14:10.000000000 +0200
-+++ linux-2.6-xen-fedora/net/ipv6/addrconf.c	2006-08-01 02:31:28.000000000 +0200
++++ linux-2.6-xen-fedora/net/ipv6/addrconf.c	2006-07-22 20:37:58.000000000 +0200
 @@ -2488,6 +2488,7 @@ static void addrconf_dad_start(struct in
  	spin_lock_bh(&ifp->lock);
  
@@ -90128,7 +89085,7 @@
  
 diff -urNp --exclude=TAGS --exclude='.hg*' linux-2.6/scripts/Makefile.xen linux-2.6-xen-fedora/scripts/Makefile.xen
 --- linux-2.6/scripts/Makefile.xen	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6-xen-fedora/scripts/Makefile.xen	2006-08-01 02:31:28.000000000 +0200
++++ linux-2.6-xen-fedora/scripts/Makefile.xen	2006-07-18 03:28:35.000000000 +0200
 @@ -0,0 +1,14 @@
 +
 +# cherrypickxen($1 = allobj)


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/sources,v
retrieving revision 1.468.4.1
retrieving revision 1.468.4.2
diff -u -r1.468.4.1 -r1.468.4.2
--- sources	11 Aug 2006 19:11:07 -0000	1.468.4.1
+++ sources	16 Aug 2006 20:43:05 -0000	1.468.4.2
@@ -1,4 +1,4 @@
 37ddefe96625502161f075b9d907f21e  linux-2.6.17.tar.bz2
-32a856cececcc35cb834cfaccc3c2523  xen-10924.tar.bz2
+4ae2c95631b54820475437c206c3a4c2  xen-10730.tar.bz2
 ba31b754aaf80aa388858f86c34c4d01  patch-2.6.18-rc3.bz2
 2b8d22d3832b97c2bbd87e75755b36c9  patch-2.6.18-rc3-git3.bz2


--- linux-2.6-xen-unbreak-oprofile.patch DELETED ---


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]