rpms/kernel-xen-2.6/F-7 linux-2.6.20.14-xen-3.1.0.patch, NONE, 1.1 kernel-xen.spec, 1.34, 1.35 linux-2.6-csum-missing-line.patch, 1.2, 1.3 linux-2.6-kill_skbuff_hack.patch, 1.2, 1.3 linux-2.6-xen-execshield.patch, 1.3, 1.4 linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch, 1.1, 1.2 linux-2.6-xen-utrace.patch, 1.2, 1.3 linux-2.6-fix-x86_64-smp.patch, 1.1, NONE linux-2.6-xen-fix-nosegneg-detection.patch, 1.1, NONE linux-2.6-xen.patch, 1.5, NONE

Eduardo Habkost (ehabkost) fedora-extras-commits at redhat.com
Wed Aug 8 20:48:44 UTC 2007


Author: ehabkost

Update of /cvs/pkgs/rpms/kernel-xen-2.6/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv11018

Modified Files:
	kernel-xen.spec linux-2.6-csum-missing-line.patch 
	linux-2.6-kill_skbuff_hack.patch 
	linux-2.6-xen-execshield.patch 
	linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch 
	linux-2.6-xen-utrace.patch 
Added Files:
	linux-2.6.20.14-xen-3.1.0.patch 
Removed Files:
	linux-2.6-fix-x86_64-smp.patch 
	linux-2.6-xen-fix-nosegneg-detection.patch linux-2.6-xen.patch 
Log Message:
Update xen patch to xen 3.1.0


linux-2.6.20.14-xen-3.1.0.patch:

--- NEW FILE linux-2.6.20.14-xen-3.1.0.patch ---
diff -r 4a9ef6a03fd9 -r 85b796b085e5 arch/i386/Kconfig
--- a/arch/i386/Kconfig	Wed Jul 18 12:23:24 2007 -0300
+++ b/arch/i386/Kconfig	Wed Aug 08 16:25:28 2007 -0300
@@ -16,6 +16,7 @@ config X86_32
 
 config GENERIC_TIME
 	bool
+	depends on !X86_XEN
 	default y
 
 config LOCKDEP_SUPPORT
@@ -107,6 +108,15 @@ config X86_PC
 	bool "PC-compatible"
 	help
 	  Choose this option if your computer is a standard PC or compatible.
+
+config X86_XEN
+	bool "Xen-compatible"
+	select X86_UP_APIC if !SMP && XEN_PRIVILEGED_GUEST
+	select X86_UP_IOAPIC if !SMP && XEN_PRIVILEGED_GUEST
+	select SWIOTLB
+	help
+	  Choose this option if you plan to run this kernel on top of the
+	  Xen Hypervisor.
 
 config X86_ELAN
 	bool "AMD Elan"
@@ -229,6 +239,7 @@ source "arch/i386/Kconfig.cpu"
 
 config HPET_TIMER
 	bool "HPET Timer Support"
+	depends on !X86_XEN
 	help
 	  This enables the use of the HPET for the kernel's internal timer.
 	  HPET is the next generation timer replacing legacy 8254s.
@@ -279,7 +290,7 @@ source "kernel/Kconfig.preempt"
 
 config X86_UP_APIC
 	bool "Local APIC support on uniprocessors"
-	depends on !SMP && !(X86_VISWS || X86_VOYAGER || X86_GENERICARCH)
+	depends on !SMP && !(X86_VISWS || X86_VOYAGER || X86_GENERICARCH || XEN_UNPRIVILEGED_GUEST)
 	help
 	  A local APIC (Advanced Programmable Interrupt Controller) is an
 	  integrated interrupt controller in the CPU. If you have a single-CPU
@@ -304,12 +315,12 @@ config X86_UP_IOAPIC
 
 config X86_LOCAL_APIC
 	bool
-	depends on X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER) || X86_GENERICARCH
+	depends on X86_UP_APIC || ((X86_VISWS || SMP) && !(X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)) || X86_GENERICARCH
 	default y
 
 config X86_IO_APIC
 	bool
-	depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER)) || X86_GENERICARCH
+	depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)) || X86_GENERICARCH
 	default y
 
 config X86_VISWS_APIC
@@ -319,7 +330,7 @@ config X86_VISWS_APIC
 
 config X86_MCE
 	bool "Machine Check Exception"
-	depends on !X86_VOYAGER
+	depends on !(X86_VOYAGER || X86_XEN)
 	---help---
 	  Machine Check Exception support allows the processor to notify the
 	  kernel if it detects a problem (e.g. overheating, component failure).
@@ -418,6 +429,7 @@ config X86_REBOOTFIXUPS
 
 config MICROCODE
 	tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
+	depends on !XEN_UNPRIVILEGED_GUEST
 	select FW_LOADER
 	---help---
 	  If you say Y here and also to "/dev file system support" in the
@@ -441,6 +453,7 @@ config MICROCODE_OLD_INTERFACE
 
 config X86_MSR
 	tristate "/dev/cpu/*/msr - Model-specific register support"
+	depends on !X86_XEN
 	help
 	  This device gives privileged processes access to the x86
 	  Model-Specific Registers (MSRs).  It is a character device with
@@ -455,6 +468,10 @@ config X86_CPUID
 	  be executed on a specific processor.  It is a character device
 	  with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
 	  /dev/cpu/31/cpuid.
+
+config SWIOTLB
+	bool
+	default n
 
 source "drivers/firmware/Kconfig"
 
@@ -638,6 +655,7 @@ config HIGHPTE
 
 config MATH_EMULATION
 	bool "Math emulation"
+	depends on !X86_XEN
 	---help---
 	  Linux can emulate a math coprocessor (used for floating point
 	  operations) if you don't have one. 486DX and Pentium processors have
@@ -663,6 +681,8 @@ config MATH_EMULATION
 
 config MTRR
 	bool "MTRR (Memory Type Range Register) support"
+	depends on !XEN_UNPRIVILEGED_GUEST
+	default y if X86_XEN
 	---help---
 	  On Intel P6 family processors (Pentium Pro, Pentium II and later)
 	  the Memory Type Range Registers (MTRRs) may be used to control
@@ -697,7 +717,7 @@ config MTRR
 
 config EFI
 	bool "Boot from EFI support"
-	depends on ACPI
+	depends on ACPI && !X86_XEN
 	default n
 	---help---
 	This enables the kernel to boot on EFI platforms using
@@ -715,7 +735,7 @@ config EFI
 
 config IRQBALANCE
  	bool "Enable kernel irq balancing"
-	depends on SMP && X86_IO_APIC
+	depends on SMP && X86_IO_APIC && !X86_XEN
 	default y
 	help
  	  The default yes will allow the kernel to do irq load balancing.
@@ -749,6 +769,7 @@ source kernel/Kconfig.hz
 
 config KEXEC
 	bool "kexec system call"
+	depends on !XEN_UNPRIVILEGED_GUEST
 	help
 	  kexec is a system call that implements the ability to shutdown your
 	  current kernel, and to start another kernel.  It is like a reboot
@@ -866,6 +887,7 @@ config COMPAT_VDSO
 	bool "Compat VDSO support"
 	default y
 	depends on !PARAVIRT
+	depends on !X86_XEN
 	help
 	  Map the VDSO to the predictable old-style address too.
 	---help---
@@ -882,18 +904,20 @@ config ARCH_ENABLE_MEMORY_HOTPLUG
 	depends on HIGHMEM
 
 menu "Power management options (ACPI, APM)"
-	depends on !X86_VOYAGER
-
+	depends on !(X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)
+
+if !X86_XEN
 source kernel/power/Kconfig
+endif
 
 source "drivers/acpi/Kconfig"
 
 menu "APM (Advanced Power Management) BIOS Support"
-depends on PM && !X86_VISWS
+depends on PM && !(X86_VISWS || X86_XEN)
 
 config APM
 	tristate "APM (Advanced Power Management) BIOS support"
-	depends on PM
+	depends on PM && PM_LEGACY
 	---help---
 	  APM is a BIOS specification for saving power using several different
 	  techniques. This is mostly useful for battery powered laptops with
@@ -1078,6 +1102,7 @@ choice
 
 config PCI_GOBIOS
 	bool "BIOS"
+	depends on !X86_XEN
 
 config PCI_GOMMCONFIG
 	bool "MMConfig"
@@ -1085,6 +1110,13 @@ config PCI_GODIRECT
 config PCI_GODIRECT
 	bool "Direct"
 
+config PCI_GOXEN_FE
+	bool "Xen PCI Frontend"
+	depends on X86_XEN
+	help
+	  The PCI device frontend driver allows the kernel to import arbitrary
+	  PCI devices from a PCI backend to support PCI driver domains.
+
 config PCI_GOANY
 	bool "Any"
 
@@ -1092,7 +1124,7 @@ endchoice
 
 config PCI_BIOS
 	bool
-	depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
+	depends on !(X86_VISWS || X86_XEN) && PCI && (PCI_GOBIOS || PCI_GOANY)
[...92831 lines suppressed...]
+#endif
+
 /*
  *	The list of packet types we will receive (as opposed to discard)
  *	and the routines to invoke.
@@ -1392,6 +1398,43 @@ out_kfree_skb:
 	}						\
 }
 
+#ifdef CONFIG_XEN
+inline int skb_checksum_setup(struct sk_buff *skb)
+{
+	if (skb->proto_csum_blank) {
+		if (skb->protocol != htons(ETH_P_IP))
+			goto out;
+		skb->h.raw = (unsigned char *)skb->nh.iph + 4*skb->nh.iph->ihl;
+		if (skb->h.raw >= skb->tail)
+			goto out;
+		switch (skb->nh.iph->protocol) {
+		case IPPROTO_TCP:
+			skb->csum = offsetof(struct tcphdr, check);
+			break;
+		case IPPROTO_UDP:
+			skb->csum = offsetof(struct udphdr, check);
+			break;
+		default:
+			if (net_ratelimit())
+				printk(KERN_ERR "Attempting to checksum a non-"
+				       "TCP/UDP packet, dropping a protocol"
+				       " %d packet", skb->nh.iph->protocol);
+			goto out;
+		}
+		if ((skb->h.raw + skb->csum + 2) > skb->tail)
+			goto out;
+		skb->ip_summed = CHECKSUM_PARTIAL;
+		skb->proto_csum_blank = 0;
+	}
+	return 0;
+out:
+	return -EPROTO;
+}
+#else
+inline int skb_checksum_setup(struct sk_buff *skb) { return 0; }
+#endif
+
+
 /**
  *	dev_queue_xmit - transmit a buffer
  *	@skb: buffer to transmit
@@ -1423,6 +1466,12 @@ int dev_queue_xmit(struct sk_buff *skb)
 	struct net_device *dev = skb->dev;
 	struct Qdisc *q;
 	int rc = -ENOMEM;
+
+ 	/* If a checksum-deferred packet is forwarded to a device that needs a
+ 	 * checksum, correct the pointers and force checksumming.
+ 	 */
+ 	if (skb_checksum_setup(skb))
+ 		goto out_kfree_skb;
 
 	/* GSO will handle the following emulations directly. */
 	if (netif_needs_gso(dev, skb))
@@ -1796,6 +1845,19 @@ int netif_receive_skb(struct sk_buff *sk
 	if (skb->tc_verd & TC_NCLS) {
 		skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
 		goto ncls;
+	}
+#endif
+
+#ifdef CONFIG_XEN
+	switch (skb->ip_summed) {
+	case CHECKSUM_UNNECESSARY:
+		skb->proto_data_valid = 1;
+		break;
+	case CHECKSUM_PARTIAL:
+		/* XXX Implement me. */
+	default:
+		skb->proto_data_valid = 0;
+		break;
 	}
 #endif
 
@@ -3565,6 +3627,7 @@ EXPORT_SYMBOL(net_enable_timestamp);
 EXPORT_SYMBOL(net_enable_timestamp);
 EXPORT_SYMBOL(net_disable_timestamp);
 EXPORT_SYMBOL(dev_get_flags);
+EXPORT_SYMBOL(skb_checksum_setup);
 
 #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
 EXPORT_SYMBOL(br_handle_frame_hook);
diff -r 4a9ef6a03fd9 -r 85b796b085e5 net/core/skbuff.c
--- a/net/core/skbuff.c	Wed Jul 18 12:23:24 2007 -0300
+++ b/net/core/skbuff.c	Wed Aug 08 16:25:28 2007 -0300
@@ -243,6 +243,7 @@ struct sk_buff *alloc_skb_from_cache(str
 	skb_shinfo(skb)->gso_size = 0;
 	skb_shinfo(skb)->gso_segs = 0;
 	skb_shinfo(skb)->gso_type = 0;
+	skb_shinfo(skb)->ip6_frag_id = 0;
 	skb_shinfo(skb)->frag_list = NULL;
 out:
 	return skb;
@@ -469,6 +470,10 @@ struct sk_buff *skb_clone(struct sk_buff
 	C(local_df);
 	n->cloned = 1;
 	n->nohdr = 0;
+#ifdef CONFIG_XEN
+	C(proto_data_valid);
+	C(proto_csum_blank);
+#endif
 	C(pkt_type);
 	C(ip_summed);
 	C(priority);
@@ -643,7 +648,6 @@ struct sk_buff *pskb_copy(struct sk_buff
 	n->csum	     = skb->csum;
 	n->ip_summed = skb->ip_summed;
 
-	n->truesize += skb->data_len;
 	n->data_len  = skb->data_len;
 	n->len	     = skb->len;
 
diff -r 4a9ef6a03fd9 -r 85b796b085e5 net/ipv4/netfilter/ip_nat_proto_tcp.c
--- a/net/ipv4/netfilter/ip_nat_proto_tcp.c	Wed Jul 18 12:23:24 2007 -0300
+++ b/net/ipv4/netfilter/ip_nat_proto_tcp.c	Wed Aug 08 16:25:28 2007 -0300
@@ -129,8 +129,15 @@ tcp_manip_pkt(struct sk_buff **pskb,
 	if (hdrsize < sizeof(*hdr))
 		return 1;
 
+#ifdef CONFIG_XEN
+	if ((*pskb)->proto_csum_blank)
+		nf_csum_replace4(&hdr->check, oldip, newip);
+	else
+#endif
+	{
 	nf_proto_csum_replace4(&hdr->check, *pskb, oldip, newip, 1);
 	nf_proto_csum_replace2(&hdr->check, *pskb, oldport, newport, 0);
+	}
 	return 1;
 }
 
diff -r 4a9ef6a03fd9 -r 85b796b085e5 net/ipv4/netfilter/ip_nat_proto_udp.c
--- a/net/ipv4/netfilter/ip_nat_proto_udp.c	Wed Jul 18 12:23:24 2007 -0300
+++ b/net/ipv4/netfilter/ip_nat_proto_udp.c	Wed Aug 08 16:25:28 2007 -0300
@@ -115,8 +115,16 @@ udp_manip_pkt(struct sk_buff **pskb,
 	}
 
 	if (hdr->check || (*pskb)->ip_summed == CHECKSUM_PARTIAL) {
+#ifdef CONFIG_XEN
+		if ((*pskb)->proto_csum_blank)
+			nf_csum_replace4(&hdr->check, oldip, newip);
+		else
+#endif
+		{
 		nf_proto_csum_replace4(&hdr->check, *pskb, oldip, newip, 1);
 		nf_proto_csum_replace2(&hdr->check, *pskb, *portptr, newport, 0);
+		}
+
 		if (!hdr->check)
 			hdr->check = CSUM_MANGLED_0;
 	}
diff -r 4a9ef6a03fd9 -r 85b796b085e5 net/ipv4/xfrm4_output.c
--- a/net/ipv4/xfrm4_output.c	Wed Jul 18 12:23:24 2007 -0300
+++ b/net/ipv4/xfrm4_output.c	Wed Aug 08 16:25:28 2007 -0300
@@ -17,6 +17,8 @@
 #include <net/ip.h>
 #include <net/xfrm.h>
 #include <net/icmp.h>
+
+extern int skb_checksum_setup(struct sk_buff *skb);
 
 static int xfrm4_tunnel_check_size(struct sk_buff *skb)
 {
@@ -48,6 +50,10 @@ static int xfrm4_output_one(struct sk_bu
 	struct xfrm_state *x = dst->xfrm;
 	int err;
 	
+	err = skb_checksum_setup(skb);
+	if (err)
+		goto error_nolock;
+
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		err = skb_checksum_help(skb);
 		if (err)
diff -r 4a9ef6a03fd9 -r 85b796b085e5 scripts/Makefile.xen
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/Makefile.xen	Wed Aug 08 16:25:28 2007 -0300
@@ -0,0 +1,14 @@
+
+# cherrypickxen($1 = allobj)
+cherrypickxen = $(foreach var, $(1), \
+		$(shell o=$(var); \
+			c=$${o%.o}-xen.c; \
+			s=$${o%.o}-xen.S; \
+			oxen=$${o%.o}-xen.o; \
+			[ -f $(srctree)/$(src)/$${c} ] || \
+			   [ -f $(srctree)/$(src)/$${s} ] \
+				&& echo $$oxen \
+				|| echo $(var) ) \
+	  )
+# filterxen($1 = allobj, $2 = noobjs)
+filterxen = $(filter-out $(2), $(1))


Index: kernel-xen.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/kernel-xen.spec,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- kernel-xen.spec	17 Jul 2007 14:26:53 -0000	1.34
+++ kernel-xen.spec	8 Aug 2007 20:48:09 -0000	1.35
@@ -373,16 +373,14 @@
 Patch910: linux-2.6-tux.patch
 
 # 950 - 999 Xen
-Patch950: linux-2.6-xen.patch
+Patch950: linux-2.6.20.14-xen-3.1.0.patch
 Patch951: linux-2.6-xen-utrace.patch
 Patch952: linux-2.6-xen-x86_64-silence-up-apic-errors.patch
 Patch954: linux-2.6-xen-execshield.patch
 Patch955: linux-2.6-xen-tux.patch
 # smp/vgetcpu fixes (#238015)
-Patch956: linux-2.6-fix-x86_64-smp.patch
 Patch957: linux-2.6-fix-x86_64-vgetcpu.patch
 Patch958: linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch
-Patch959: linux-2.6-xen-fix-nosegneg-detection.patch
 Patch960: linux-2.6-xen-blkfront-wait-add.patch
 
 #
@@ -906,10 +904,8 @@
 %patch954 -p1
 %patch955 -p1
 # smp/vgetcpu fixes (#238015)
-%patch956 -p1
 %patch957 -p1
 %patch958 -p1
-%patch959 -p1
 %patch960 -p1
 %endif
 
@@ -2027,6 +2023,9 @@
 #  - tux.
 
 %changelog
+* Wed Aug 08 2007 Eduardo Habkost <ehabkost at redhat.com>
+- Update xen patch to 3.1.0
+
 * Mon Jul 16 2007 Eduardo Habkost <ehabkost at redhat.com>
 - Make xenblk wait to the disk to be added (bug #248462)
 - Rebase to 2.6.20.14

linux-2.6-csum-missing-line.patch:

Index: linux-2.6-csum-missing-line.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/linux-2.6-csum-missing-line.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-csum-missing-line.patch	30 Apr 2007 22:20:01 -0000	1.2
+++ linux-2.6-csum-missing-line.patch	8 Aug 2007 20:48:09 -0000	1.3
@@ -23,9 +23,11 @@
 Home Page: http://gondor.apana.org.au/~herbert/
 PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
 --
---- linux-2.6.20.i386/drivers/xen/core/skbuff.c	2007-04-28 15:30:16.000000000 +1000
-+++ build-2.6.20.i386/drivers/xen/core/skbuff.c	2007-04-28 15:30:52.000000000 +1000
-@@ -89,6 +89,7 @@
+Index: patching/drivers/xen/core/checksum.c
+===================================================================
+--- patching.orig/drivers/xen/core/checksum.c
++++ patching/drivers/xen/core/checksum.c
+@@ -12,6 +12,7 @@ int skb_checksum_setup(struct sk_buff *s
  	skb->h.raw = (unsigned char *)skb->nh.iph + 4*skb->nh.iph->ihl;
  	if (skb->h.raw >= skb->tail)
  		goto out;
@@ -33,5 +35,3 @@
  	switch (skb->nh.iph->protocol) {
  	case IPPROTO_TCP:
  		skb->csum_offset = offsetof(struct tcphdr, check);
-
-

linux-2.6-kill_skbuff_hack.patch:

Index: linux-2.6-kill_skbuff_hack.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/linux-2.6-kill_skbuff_hack.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-kill_skbuff_hack.patch	30 Apr 2007 22:20:01 -0000	1.2
+++ linux-2.6-kill_skbuff_hack.patch	8 Aug 2007 20:48:09 -0000	1.3
@@ -19,62 +19,11 @@
 Home Page: http://gondor.apana.org.au/~herbert/
 PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
 --
-diff -ur linux-2.6.20.i386.orig/drivers/xen/core/skbuff.c linux-2.6.20.i386/drivers/xen/core/skbuff.c
---- linux-2.6.20.i386.orig/drivers/xen/core/skbuff.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/drivers/xen/core/skbuff.c	2007-04-24 15:50:03.000000000 +1000
-@@ -9,6 +9,10 @@
- #include <linux/etherdevice.h>
- #include <linux/skbuff.h>
- #include <linux/init.h>
-+#include <linux/if_ether.h>
-+#include <linux/tcp.h>
-+#include <linux/udp.h>
-+#include <net/ip.h>
- #include <asm/io.h>
- #include <asm/page.h>
- #include <asm/hypervisor.h>
-@@ -78,6 +82,37 @@
- 	return skb;
- }
- 
-+int skb_checksum_setup(struct sk_buff *skb)
-+{
-+	if (skb->protocol != htons(ETH_P_IP))
-+		goto out;
-+	skb->h.raw = (unsigned char *)skb->nh.iph + 4*skb->nh.iph->ihl;
-+	if (skb->h.raw >= skb->tail)
-+		goto out;
-+	switch (skb->nh.iph->protocol) {
-+	case IPPROTO_TCP:
-+		skb->csum_offset = offsetof(struct tcphdr, check);
-+		break;
-+	case IPPROTO_UDP:
-+		skb->csum_offset = offsetof(struct udphdr, check);
-+		break;
-+	default:
-+		if (net_ratelimit())
-+			printk(KERN_ERR "Attempting to checksum a non-"
-+			       "TCP/UDP packet, dropping a protocol"
-+			       " %d packet", skb->nh.iph->protocol);
-+		goto out;
-+	}
-+	if ((skb->h.raw + skb->csum_offset + 2) > skb->tail)
-+		goto out;
-+	skb->ip_summed = CHECKSUM_PARTIAL;
-+
-+	return 0;
-+out:
-+	return -EPROTO;
-+}
-+EXPORT_SYMBOL(skb_checksum_setup);
-+
- static void skbuff_ctor(void *buf, struct kmem_cache *cachep, unsigned long unused)
- {
- 	int order = 0;
-diff -ur linux-2.6.20.i386.orig/drivers/xen/netback/loopback.c linux-2.6.20.i386/drivers/xen/netback/loopback.c
---- linux-2.6.20.i386.orig/drivers/xen/netback/loopback.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/drivers/xen/netback/loopback.c	2007-04-24 15:50:03.000000000 +1000
-@@ -149,16 +149,6 @@
+Index: patching/drivers/xen/netback/loopback.c
+===================================================================
+--- patching.orig/drivers/xen/netback/loopback.c
++++ patching/drivers/xen/netback/loopback.c
+@@ -149,16 +149,6 @@ static int loopback_start_xmit(struct sk
  	np->stats.rx_bytes += skb->len;
  	np->stats.rx_packets++;
  
@@ -91,10 +40,11 @@
  	skb->pkt_type = PACKET_HOST; /* overridden by eth_type_trans() */
  	skb->protocol = eth_type_trans(skb, dev);
  	skb->dev      = dev;
-diff -ur linux-2.6.20.i386.orig/drivers/xen/netback/netback.c linux-2.6.20.i386/drivers/xen/netback/netback.c
---- linux-2.6.20.i386.orig/drivers/xen/netback/netback.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/drivers/xen/netback/netback.c	2007-04-24 15:50:03.000000000 +1000
-@@ -293,7 +293,6 @@
+Index: patching/drivers/xen/netback/netback.c
+===================================================================
+--- patching.orig/drivers/xen/netback/netback.c
++++ patching/drivers/xen/netback/netback.c
+@@ -263,7 +263,6 @@ int netif_be_start_xmit(struct sk_buff *
  		/* Copy only the header fields we use in this driver. */
  		nskb->dev = skb->dev;
  		nskb->ip_summed = skb->ip_summed;
@@ -102,7 +52,7 @@
  		dev_kfree_skb(skb);
  		skb = nskb;
  	}
-@@ -677,9 +676,11 @@
+@@ -649,9 +648,11 @@ static void net_rx_action(unsigned long 
  		id = meta[npo.meta_cons].id;
  		flags = nr_frags ? NETRXF_more_data : 0;
  
@@ -116,7 +66,7 @@
  			flags |= NETRXF_data_validated;
  
  		if (meta[npo.meta_cons].copy)
-@@ -1318,23 +1319,19 @@
+@@ -1290,23 +1291,19 @@ static void net_tx_action(unsigned long 
  			netif_idx_release(pending_idx);
  		}
  
@@ -149,10 +99,11 @@
  
  		netif->stats.rx_bytes += skb->len;
  		netif->stats.rx_packets++;
-diff -ur linux-2.6.20.i386.orig/drivers/xen/netfront/netfront.c linux-2.6.20.i386/drivers/xen/netfront/netfront.c
---- linux-2.6.20.i386.orig/drivers/xen/netfront/netfront.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/drivers/xen/netfront/netfront.c	2007-04-24 15:50:03.000000000 +1000
-@@ -962,12 +962,12 @@
+Index: patching/drivers/xen/netfront/netfront.c
+===================================================================
+--- patching.orig/drivers/xen/netfront/netfront.c
++++ patching/drivers/xen/netfront/netfront.c
+@@ -978,12 +978,12 @@ static int network_start_xmit(struct sk_
  	tx->flags = 0;
  	extra = NULL;
  
@@ -169,7 +120,7 @@
  
  #ifdef HAVE_TSO
  	if (skb_is_gso(skb)) {
-@@ -1388,20 +1388,10 @@
+@@ -1404,20 +1404,10 @@ err:	
  		skb->truesize += skb->data_len - (RX_COPY_THRESHOLD - len);
  		skb->len += skb->data_len;
  
@@ -193,7 +144,7 @@
  
  		__skb_queue_tail(&rxq, skb);
  
-@@ -1441,6 +1431,19 @@
+@@ -1457,6 +1447,19 @@ err:	
  
  		/* Ethernet work: Delayed to here as it peeks the header. */
  		skb->protocol = eth_type_trans(skb, dev);
@@ -213,10 +164,11 @@
  
  		/* Pass it up. */
  		netif_receive_skb(skb);
-diff -ur linux-2.6.20.i386.orig/include/linux/skbuff.h linux-2.6.20.i386/include/linux/skbuff.h
---- linux-2.6.20.i386.orig/include/linux/skbuff.h	2007-04-24 15:16:44.000000000 +1000
-+++ linux-2.6.20.i386/include/linux/skbuff.h	2007-04-24 15:50:03.000000000 +1000
-@@ -205,8 +205,6 @@
+Index: patching/include/linux/skbuff.h
+===================================================================
+--- patching.orig/include/linux/skbuff.h
++++ patching/include/linux/skbuff.h
+@@ -205,8 +205,6 @@ enum {
   *	@local_df: allow local fragmentation
   *	@cloned: Head may be cloned (check refcnt to be sure)
   *	@nohdr: Payload reference only, must not modify header
@@ -225,7 +177,7 @@
   *	@pkt_type: Packet class
   *	@fclone: skbuff clone status
   *	@ip_summed: Driver fed us an IP checksum
-@@ -292,13 +290,7 @@
+@@ -293,13 +291,7 @@ struct sk_buff {
  				nfctinfo:3;
  	__u8			pkt_type:3,
  				fclone:2,
@@ -239,7 +191,7 @@
  	__be16			protocol;
  
  	void			(*destructor)(struct sk_buff *skb);
-@@ -1351,6 +1343,8 @@
+@@ -1347,6 +1339,8 @@ extern void	       skb_split(struct sk_b
  
  extern struct sk_buff *skb_segment(struct sk_buff *skb, int features);
  
@@ -248,9 +200,10 @@
  static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
  				       int len, void *buffer)
  {
-diff -ur linux-2.6.20.i386.orig/net/core/dev.c linux-2.6.20.i386/net/core/dev.c
---- linux-2.6.20.i386.orig/net/core/dev.c	2007-04-24 15:14:04.000000000 +1000
-+++ linux-2.6.20.i386/net/core/dev.c	2007-04-24 15:50:03.000000000 +1000
+Index: patching/net/core/dev.c
+===================================================================
+--- patching.orig/net/core/dev.c
++++ patching/net/core/dev.c
 @@ -117,12 +117,6 @@
  #include <linux/err.h>
  #include <linux/ctype.h>
@@ -264,7 +217,7 @@
  /*
   *	The list of packet types we will receive (as opposed to discard)
   *	and the routines to invoke.
-@@ -1400,43 +1394,6 @@
+@@ -1400,43 +1394,6 @@ out_kfree_skb:
  	}						\
  }
  
@@ -308,7 +261,7 @@
  /**
   *	dev_queue_xmit - transmit a buffer
   *	@skb: buffer to transmit
-@@ -1469,12 +1426,6 @@
+@@ -1469,12 +1426,6 @@ int dev_queue_xmit(struct sk_buff *skb)
  	struct Qdisc *q;
  	int rc = -ENOMEM;
  
@@ -321,7 +274,7 @@
  	/* GSO will handle the following emulations directly. */
  	if (netif_needs_gso(dev, skb))
  		goto gso;
-@@ -1853,19 +1804,6 @@
+@@ -1853,19 +1804,6 @@ int netif_receive_skb(struct sk_buff *sk
  	}
  #endif
  
@@ -341,7 +294,7 @@
  	list_for_each_entry_rcu(ptype, &ptype_all, list) {
  		if (!ptype->dev || ptype->dev == skb->dev) {
  			if (pt_prev) 
-@@ -3630,7 +3568,6 @@
+@@ -3632,7 +3570,6 @@ EXPORT_SYMBOL(unregister_netdevice_notif
  EXPORT_SYMBOL(net_enable_timestamp);
  EXPORT_SYMBOL(net_disable_timestamp);
  EXPORT_SYMBOL(dev_get_flags);
@@ -349,10 +302,11 @@
  
  #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
  EXPORT_SYMBOL(br_handle_frame_hook);
-diff -ur linux-2.6.20.i386.orig/net/core/skbuff.c linux-2.6.20.i386/net/core/skbuff.c
---- linux-2.6.20.i386.orig/net/core/skbuff.c	2007-04-24 15:08:07.000000000 +1000
-+++ linux-2.6.20.i386/net/core/skbuff.c	2007-04-24 15:50:03.000000000 +1000
-@@ -483,10 +483,6 @@
+Index: patching/net/core/skbuff.c
+===================================================================
+--- patching.orig/net/core/skbuff.c
++++ patching/net/core/skbuff.c
+@@ -470,10 +470,6 @@ struct sk_buff *skb_clone(struct sk_buff
  	C(local_df);
  	n->cloned = 1;
  	n->nohdr = 0;
@@ -363,10 +317,11 @@
  	C(pkt_type);
  	C(ip_summed);
  	C(priority);
-diff -ur linux-2.6.20.i386.orig/net/ipv4/netfilter/ip_nat_proto_tcp.c linux-2.6.20.i386/net/ipv4/netfilter/ip_nat_proto_tcp.c
---- linux-2.6.20.i386.orig/net/ipv4/netfilter/ip_nat_proto_tcp.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/net/ipv4/netfilter/ip_nat_proto_tcp.c	2007-04-24 15:50:03.000000000 +1000
-@@ -129,15 +129,8 @@
+Index: patching/net/ipv4/netfilter/ip_nat_proto_tcp.c
+===================================================================
+--- patching.orig/net/ipv4/netfilter/ip_nat_proto_tcp.c
++++ patching/net/ipv4/netfilter/ip_nat_proto_tcp.c
+@@ -129,15 +129,8 @@ tcp_manip_pkt(struct sk_buff **pskb,
  	if (hdrsize < sizeof(*hdr))
  		return 1;
  
@@ -382,10 +337,11 @@
  	return 1;
  }
  
-diff -ur linux-2.6.20.i386.orig/net/ipv4/netfilter/ip_nat_proto_udp.c linux-2.6.20.i386/net/ipv4/netfilter/ip_nat_proto_udp.c
---- linux-2.6.20.i386.orig/net/ipv4/netfilter/ip_nat_proto_udp.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/net/ipv4/netfilter/ip_nat_proto_udp.c	2007-04-24 15:50:03.000000000 +1000
-@@ -115,16 +115,8 @@
+Index: patching/net/ipv4/netfilter/ip_nat_proto_udp.c
+===================================================================
+--- patching.orig/net/ipv4/netfilter/ip_nat_proto_udp.c
++++ patching/net/ipv4/netfilter/ip_nat_proto_udp.c
+@@ -115,16 +115,8 @@ udp_manip_pkt(struct sk_buff **pskb,
  	}
  
  	if (hdr->check || (*pskb)->ip_summed == CHECKSUM_PARTIAL) {
@@ -402,9 +358,10 @@
  		if (!hdr->check)
  			hdr->check = CSUM_MANGLED_0;
  	}
-diff -ur linux-2.6.20.i386.orig/net/ipv4/xfrm4_output.c linux-2.6.20.i386/net/ipv4/xfrm4_output.c
---- linux-2.6.20.i386.orig/net/ipv4/xfrm4_output.c	2007-04-24 13:18:41.000000000 +1000
-+++ linux-2.6.20.i386/net/ipv4/xfrm4_output.c	2007-04-24 15:50:03.000000000 +1000
+Index: patching/net/ipv4/xfrm4_output.c
+===================================================================
+--- patching.orig/net/ipv4/xfrm4_output.c
++++ patching/net/ipv4/xfrm4_output.c
 @@ -18,8 +18,6 @@
  #include <net/xfrm.h>
  #include <net/icmp.h>
@@ -414,7 +371,7 @@
  static int xfrm4_tunnel_check_size(struct sk_buff *skb)
  {
  	int mtu, ret = 0;
-@@ -49,10 +47,6 @@
+@@ -49,10 +47,6 @@ static int xfrm4_output_one(struct sk_bu
  	struct dst_entry *dst = skb->dst;
  	struct xfrm_state *x = dst->xfrm;
  	int err;
@@ -425,5 +382,57 @@
  
  	if (skb->ip_summed == CHECKSUM_PARTIAL) {
  		err = skb_checksum_help(skb);
-
-
+Index: patching/drivers/xen/core/Makefile
+===================================================================
+--- patching.orig/drivers/xen/core/Makefile
++++ patching/drivers/xen/core/Makefile
+@@ -2,7 +2,7 @@
+ # Makefile for the linux kernel.
+ #
+ 
+-obj-y := evtchn.o gnttab.o features.o reboot.o machine_reboot.o
++obj-y := evtchn.o gnttab.o features.o reboot.o machine_reboot.o checksum.o
+ 
+ obj-$(CONFIG_PROC_FS)		+= xen_proc.o
+ obj-$(CONFIG_SYSFS)		+= hypervisor_sysfs.o
+Index: patching/drivers/xen/core/checksum.c
+===================================================================
+--- /dev/null
++++ patching/drivers/xen/core/checksum.c
+@@ -0,0 +1,36 @@
++#include <linux/skbuff.h>
++#include <linux/if_ether.h>
++#include <linux/tcp.h>
++#include <linux/udp.h>
++#include <net/ip.h>
++
++int skb_checksum_setup(struct sk_buff *skb)
++{
++	if (skb->protocol != htons(ETH_P_IP))
++		goto out;
++	skb->h.raw = (unsigned char *)skb->nh.iph + 4*skb->nh.iph->ihl;
++	if (skb->h.raw >= skb->tail)
++		goto out;
++	switch (skb->nh.iph->protocol) {
++	case IPPROTO_TCP:
++		skb->csum_offset = offsetof(struct tcphdr, check);
++		break;
++	case IPPROTO_UDP:
++		skb->csum_offset = offsetof(struct udphdr, check);
++		break;
++	default:
++		if (net_ratelimit())
++			printk(KERN_ERR "Attempting to checksum a non-"
++			       "TCP/UDP packet, dropping a protocol"
++			       " %d packet", skb->nh.iph->protocol);
++		goto out;
++	}
++	if ((skb->h.raw + skb->csum_offset + 2) > skb->tail)
++		goto out;
++	skb->ip_summed = CHECKSUM_PARTIAL;
++
++	return 0;
++out:
++	return -EPROTO;
++}
++EXPORT_SYMBOL(skb_checksum_setup);

linux-2.6-xen-execshield.patch:

Index: linux-2.6-xen-execshield.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/linux-2.6-xen-execshield.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-xen-execshield.patch	22 Mar 2007 16:21:33 -0000	1.3
+++ linux-2.6-xen-execshield.patch	8 Aug 2007 20:48:09 -0000	1.4
@@ -1,24 +1,8 @@
-diff -r 095d53b0d1a6 arch/i386/kernel/cpu/common-xen.c
---- a/arch/i386/kernel/cpu/common-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/i386/kernel/cpu/common-xen.c	Tue Jul 25 23:02:25 2006 +0200
-@@ -431,6 +431,13 @@ void __cpuinit identify_cpu(struct cpuin
- 	if (disable_pse)
- 		clear_bit(X86_FEATURE_PSE, c->x86_capability);
- 
-+	if (exec_shield != 0) {
-+#ifdef CONFIG_HIGHMEM64G   /* NX implies PAE */
-+		if (!test_bit(X86_FEATURE_NX, c->x86_capability))
-+#endif
-+		clear_bit(X86_FEATURE_SEP, c->x86_capability);
-+	}
-+
- 	/* If the model name is still unset, do table lookup. */
- 	if ( !c->x86_model_id[0] ) {
- 		char *p;
-diff -r 095d53b0d1a6 arch/i386/kernel/process-xen.c
---- a/arch/i386/kernel/process-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/i386/kernel/process-xen.c	Tue Jul 25 23:02:25 2006 +0200
-@@ -528,6 +528,9 @@ struct task_struct fastcall * __switch_t
+Index: patching/arch/i386/kernel/process-xen.c
+===================================================================
+--- patching.orig/arch/i386/kernel/process-xen.c
++++ patching/arch/i386/kernel/process-xen.c
+@@ -602,6 +602,9 @@ struct task_struct fastcall * __switch_t
  	else BUG_ON(!(read_cr0() & 8));
  #endif
  
@@ -28,7 +12,7 @@
  	/*
  	 * Reload esp0.
  	 * This is load_esp0(tss, next) with a multicall.
-@@ -810,3 +813,60 @@ unsigned long arch_align_stack(unsigned 
+@@ -879,3 +882,60 @@ unsigned long arch_align_stack(unsigned 
  		sp -= get_random_int() % 8192;
  	return sp & ~0xf;
  }
@@ -89,9 +73,10 @@
 +		current->mm->brk = new_brk;
 +}
 +
-diff -r 095d53b0d1a6 arch/i386/kernel/smp-xen.c
---- a/arch/i386/kernel/smp-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/i386/kernel/smp-xen.c	Tue Jul 25 23:02:25 2006 +0200
+Index: patching/arch/i386/kernel/smp-xen.c
+===================================================================
+--- patching.orig/arch/i386/kernel/smp-xen.c
++++ patching/arch/i386/kernel/smp-xen.c
 @@ -23,6 +23,7 @@
  
  #include <asm/mtrr.h>
@@ -100,7 +85,7 @@
  #if 0
  #include <mach_apic.h>
  #endif
-@@ -285,6 +286,8 @@ irqreturn_t smp_invalidate_interrupt(int
+@@ -286,6 +287,8 @@ irqreturn_t smp_invalidate_interrupt(int
  	unsigned long cpu;
  
  	cpu = get_cpu();
@@ -109,10 +94,11 @@
  
  	if (!cpu_isset(cpu, flush_cpumask))
  		goto out;
-diff -r 095d53b0d1a6 arch/i386/kernel/traps-xen.c
---- a/arch/i386/kernel/traps-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/i386/kernel/traps-xen.c	Tue Jul 25 23:02:25 2006 +0200
-@@ -558,11 +558,89 @@ DO_ERROR(11, SIGBUS,  "segment not prese
+Index: patching/arch/i386/kernel/traps-xen.c
+===================================================================
+--- patching.orig/arch/i386/kernel/traps-xen.c
++++ patching/arch/i386/kernel/traps-xen.c
+@@ -570,11 +570,89 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
  DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
  DO_ERROR(12, SIGBUS,  "stack segment", stack_segment)
  DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
@@ -203,7 +189,7 @@
  	current->thread.error_code = error_code;
  	current->thread.trap_no = 13;
  
-@@ -572,17 +650,31 @@ fastcall void __kprobes do_general_prote
+@@ -584,17 +662,31 @@ fastcall void __kprobes do_general_prote
  	if (!user_mode(regs))
  		goto gp_in_kernel;
  
@@ -235,10 +221,11 @@
  	if (!fixup_exception(regs)) {
  		if (notify_die(DIE_GPF, "general protection fault", regs,
  				error_code, 13, SIGSEGV) == NOTIFY_STOP)
-diff -uNp linux-2.6.19.noarch/arch/i386/mm/init-xen.c.orig linux-2.6.19.noarch/arch/i386/mm/init-xen.c
---- linux-2.6.19.noarch/arch/i386/mm/init-xen.c.orig	2006-12-23 20:55:44.000000000 +0100
-+++ linux-2.6.19.noarch/arch/i386/mm/init-xen.c	2006-12-23 21:12:52.000000000 +0100
-@@ -465,7 +465,7 @@ EXPORT_SYMBOL(__supported_pte_mask);
+Index: patching/arch/i386/mm/init-xen.c
+===================================================================
+--- patching.orig/arch/i386/mm/init-xen.c
++++ patching/arch/i386/mm/init-xen.c
+@@ -463,7 +463,7 @@ EXPORT_SYMBOL(__supported_pte_mask);
   * Control non executable mappings.
   *
   * on      Enable
@@ -247,7 +234,7 @@
   */
  static int __init noexec_setup(char *str)
  {
-@@ -477,6 +477,7 @@ static int __init noexec_setup(char *str
+@@ -475,6 +475,7 @@ static int __init noexec_setup(char *str
  	} else if (!strcmp(str,"off")) {
  		disable_nx = 1;
  		__supported_pte_mask &= ~_PAGE_NX;
@@ -255,7 +242,7 @@
  	} else
  		return -EINVAL;
  
-@@ -548,7 +549,10 @@ void __init paging_init(void)
+@@ -546,7 +547,10 @@ void __init paging_init(void)
  	set_nx();
  	if (nx_enabled)
  		printk("NX (Execute Disable) protection: active\n");
@@ -266,10 +253,11 @@
  
  	pagetable_init();
  
-diff -r 095d53b0d1a6 arch/x86_64/kernel/process-xen.c
---- a/arch/x86_64/kernel/process-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/x86_64/kernel/process-xen.c	Tue Jul 25 23:02:25 2006 +0200
-@@ -590,12 +590,6 @@ void set_personality_64bit(void)
+Index: patching/arch/x86_64/kernel/process-xen.c
+===================================================================
+--- patching.orig/arch/x86_64/kernel/process-xen.c
++++ patching/arch/x86_64/kernel/process-xen.c
+@@ -698,12 +698,6 @@ void set_personality_64bit(void)
  
  	/* Make sure to be in 64bit mode */
  	clear_thread_flag(TIF_IA32); 
@@ -282,10 +270,11 @@
  }
  
  asmlinkage long sys_fork(struct pt_regs *regs)
-diff
---- linux-2.6.orig/arch/x86_64/kernel/setup64-xen.c
-+++ linux-2.6/arch/x86_64/kernel/setup64-xen.c
-@@ -40,46 +40,6 @@ unsigned long __supported_pte_mask __rea
+Index: patching/arch/x86_64/kernel/setup64-xen.c
+===================================================================
+--- patching.orig/arch/x86_64/kernel/setup64-xen.c
++++ patching/arch/x86_64/kernel/setup64-xen.c
+@@ -49,46 +49,6 @@ unsigned long __supported_pte_mask __rea
  EXPORT_SYMBOL(__supported_pte_mask);
  static int do_not_nx __cpuinitdata = 0;
  
@@ -332,57 +321,11 @@
  /*
   * Great future plan:
   * Declare PDA itself and support (irqstack,tss,pgd) as per cpu data.
-diff -r 095d53b0d1a6 arch/x86_64/mm/fault-xen.c
---- a/arch/x86_64/mm/fault-xen.c	Tue Jul 25 21:53:33 2006 +0200
-+++ b/arch/x86_64/mm/fault-xen.c	Tue Jul 25 23:02:25 2006 +0200
-@@ -114,7 +114,7 @@ static noinline int is_prefetch(struct p
- 	instr = (unsigned char *)convert_rip_to_linear(current, regs);
- 	max_instr = instr + 15;
- 
--	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE)
-+	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE64)
- 		return 0;
- 
- 	while (scan_more && instr < max_instr) { 
-diff -r 095d53b0d1a6 include/asm-i386/mach-xen/asm/desc.h
---- a/include/asm-i386/mach-xen/asm/desc.h	Tue Jul 25 21:53:33 2006 +0200
-+++ b/include/asm-i386/mach-xen/asm/desc.h	Tue Jul 25 23:02:25 2006 +0200
-@@ -159,6 +159,20 @@ static inline unsigned long get_desc_bas
- 	return base;
- }
- 
-+static inline void set_user_cs(struct desc_struct *desc, unsigned long limit)
-+{
-+	limit = (limit - 1) / PAGE_SIZE;
-+	desc->a = limit & 0xffff;
-+	desc->b = (limit & 0xf0000) | 0x00c0fb00;
-+}
-+
-+#define load_user_cs_desc(cpu, mm) \
-+        HYPERVISOR_update_descriptor(virt_to_machine(&get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS]), (u64)(mm)->context.user_cs.a | ((u64)(mm)->context.user_cs.b) << 32);
-+
-+extern void arch_add_exec_range(struct mm_struct *mm, unsigned long limit);
-+extern void arch_remove_exec_range(struct mm_struct *mm, unsigned long limit);
-+extern void arch_flush_exec_range(struct mm_struct *mm);
-+
- #else /* __ASSEMBLY__ */
- 
- /*
-diff -r 095d53b0d1a6 include/asm-i386/mach-xen/asm/pgalloc.h
---- a/include/asm-i386/mach-xen/asm/pgalloc.h	Tue Jul 25 21:53:33 2006 +0200
-+++ b/include/asm-i386/mach-xen/asm/pgalloc.h	Tue Jul 25 23:02:25 2006 +0200
-@@ -2,6 +2,7 @@
- #define _I386_PGALLOC_H
- 
- #include <asm/fixmap.h>
-+#include <asm/desc.h>
- #include <linux/threads.h>
- #include <linux/mm.h>		/* for struct page */
- #include <asm/io.h>		/* for phys_to_virt and page_to_pseudophys */
-diff -r 095d53b0d1a6 include/asm-i386/mach-xen/asm/processor.h
---- a/include/asm-i386/mach-xen/asm/processor.h	Tue Jul 25 21:53:33 2006 +0200
-+++ b/include/asm-i386/mach-xen/asm/processor.h	Tue Jul 25 23:02:25 2006 +0200
-@@ -333,7 +333,10 @@ extern int bootloader_type;
+Index: patching/include/asm-i386/mach-xen/asm/processor.h
+===================================================================
+--- patching.orig/include/asm-i386/mach-xen/asm/processor.h
++++ patching/include/asm-i386/mach-xen/asm/processor.h
+@@ -280,7 +280,10 @@ extern int bootloader_type;
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
   */
@@ -394,7 +337,7 @@
  
  #define HAVE_ARCH_PICK_MMAP_LAYOUT
  
-@@ -526,6 +529,9 @@ static inline void __load_esp0(struct ts
+@@ -460,6 +463,9 @@ struct thread_struct {
  	regs->xcs = __USER_CS;					\
  	regs->eip = new_eip;					\
  	regs->esp = new_esp;					\
@@ -403,10 +346,11 @@
 +	preempt_enable();					\
  } while (0)
  
- /*
-diff -r 095d53b0d1a6 include/asm-x86_64/mach-xen/asm/pgalloc.h
---- a/include/asm-x86_64/mach-xen/asm/pgalloc.h	Tue Jul 25 21:53:33 2006 +0200
-+++ b/include/asm-x86_64/mach-xen/asm/pgalloc.h	Tue Jul 25 23:02:25 2006 +0200
+ /* Forward declaration, a strange C thing */
+Index: patching/include/asm-x86_64/mach-xen/asm/pgalloc.h
+===================================================================
+--- patching.orig/include/asm-x86_64/mach-xen/asm/pgalloc.h
++++ patching/include/asm-x86_64/mach-xen/asm/pgalloc.h
 @@ -8,6 +8,14 @@
  #include <asm/io.h>		/* for phys_to_virt and page_to_pseudophys */
  
@@ -422,3 +366,26 @@
  void make_page_readonly(void *va, unsigned int feature);
  void make_page_writable(void *va, unsigned int feature);
  void make_pages_readonly(void *va, unsigned int nr, unsigned int feature);
+Index: patching/include/asm-i386/desc.h
+===================================================================
+--- patching.orig/include/asm-i386/desc.h
++++ patching/include/asm-i386/desc.h
+@@ -206,9 +206,18 @@ static inline void set_user_cs(struct de
+ 	desc->b = (limit & 0xf0000) | 0x00c0fb00;
+ }
+ 
++#ifdef CONFIG_XEN
++
++#define load_user_cs_desc(cpu, mm) \
++        HYPERVISOR_update_descriptor(virt_to_machine(&get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS]), (u64)(mm)->context.user_cs.a | ((u64)(mm)->context.user_cs.b) << 32);
++
++#else /* CONFIG_XEN */
++
+ #define load_user_cs_desc(cpu, mm) \
+ 	get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs
+ 
++#endif /* CONFIG_XEN */
++
+ extern void arch_add_exec_range(struct mm_struct *mm, unsigned long limit);
+ extern void arch_remove_exec_range(struct mm_struct *mm, unsigned long limit);
+ extern void arch_flush_exec_range(struct mm_struct *mm);

linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch:

Index: linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch	22 May 2007 12:39:00 -0000	1.1
+++ linux-2.6-xen-iscsi-x86_64-no_iommu_init.patch	8 Aug 2007 20:48:09 -0000	1.2
@@ -7,21 +7,20 @@
 to Mark McLoughlin <markmc at redhat.com> for spotting the issue and
 proposing a fix.
 
-Index: linux-2.6.20.i386/arch/i386/kernel/pci-dma-xen.c
+Index: patching/arch/i386/kernel/pci-dma-xen.c
 ===================================================================
---- linux-2.6.20.i386.orig/arch/i386/kernel/pci-dma-xen.c
-+++ linux-2.6.20.i386/arch/i386/kernel/pci-dma-xen.c
-@@ -21,6 +21,9 @@
- #include <asm/bug.h>
+--- patching.orig/arch/i386/kernel/pci-dma-xen.c
++++ patching/arch/i386/kernel/pci-dma-xen.c
+@@ -22,6 +22,8 @@
  
  #ifdef __x86_64__
-+#include <asm/proto.h>
+ #include <asm/proto.h>
 +#include <asm/calgary.h>
 +
+ 
  int iommu_merge __read_mostly = 0;
  EXPORT_SYMBOL(iommu_merge);
- 
-@@ -69,6 +72,22 @@ void __init pci_iommu_alloc(void)
+@@ -71,6 +73,22 @@ void __init pci_iommu_alloc(void)
  #endif
  }
  

linux-2.6-xen-utrace.patch:

Index: linux-2.6-xen-utrace.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/F-7/linux-2.6-xen-utrace.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-xen-utrace.patch	22 Mar 2007 15:40:59 -0000	1.2
+++ linux-2.6-xen-utrace.patch	8 Aug 2007 20:48:09 -0000	1.3
@@ -1,7 +1,8 @@
-diff -urNp linux-2.6.17.previous/arch/i386/kernel/entry-xen.S linux-2.6.17.noarch/arch/i386/kernel/entry-xen.S
---- linux-2.6.17.previous/arch/i386/kernel/entry-xen.S	2006-07-19 16:27:09.000000000 +0200
-+++ linux-2.6.17.noarch/arch/i386/kernel/entry-xen.S	2006-07-19 17:48:25.000000000 +0200
-@@ -340,7 +340,7 @@ sysenter_past_esp:
+Index: patching/arch/i386/kernel/entry-xen.S
+===================================================================
+--- patching.orig/arch/i386/kernel/entry-xen.S
++++ patching/arch/i386/kernel/entry-xen.S
+@@ -356,7 +356,7 @@ sysenter_past_esp:
  	GET_THREAD_INFO(%ebp)
  
  	/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
@@ -10,7 +11,7 @@
  	jnz syscall_trace_entry
  	cmpl $(nr_syscalls), %eax
  	jae syscall_badsys
-@@ -389,7 +389,7 @@ ENTRY(system_call)
+@@ -414,7 +414,7 @@ ENTRY(system_call)
  no_singlestep:
  					# system call tracing in operation / emulation
  	/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
@@ -19,7 +20,7 @@
  	jnz syscall_trace_entry
  	cmpl $(nr_syscalls), %eax
  	jae syscall_badsys
-@@ -539,9 +539,6 @@ syscall_trace_entry:
+@@ -600,9 +600,6 @@ syscall_trace_entry:
  	movl %esp, %eax
  	xorl %edx,%edx
  	call do_syscall_trace
@@ -29,10 +30,11 @@
  	movl PT_ORIG_EAX(%esp), %eax
  	cmpl $(nr_syscalls), %eax
  	jnae syscall_call
-diff -urNp linux-2.6.17.previous/arch/i386/kernel/process-xen.c linux-2.6.17.noarch/arch/i386/kernel/process-xen.c
---- linux-2.6.17.previous/arch/i386/kernel/process-xen.c	2006-07-19 16:27:11.000000000 +0200
-+++ linux-2.6.17.noarch/arch/i386/kernel/process-xen.c	2006-07-19 17:46:21.000000000 +0200
-@@ -657,9 +657,6 @@ asmlinkage int sys_execve(struct pt_regs
+Index: patching/arch/i386/kernel/process-xen.c
+===================================================================
+--- patching.orig/arch/i386/kernel/process-xen.c
++++ patching/arch/i386/kernel/process-xen.c
+@@ -724,9 +724,6 @@ asmlinkage int sys_execve(struct pt_regs
  			(char __user * __user *) regs.edx,
  			&regs);
  	if (error == 0) {
@@ -42,9 +44,10 @@
  		/* Make sure we don't return using sysenter.. */
  		set_thread_flag(TIF_IRET);
  	}
-diff -urNp linux-2.6.17.previous/arch/x86_64/ia32/ia32entry-xen.S linux-2.6.17.noarch/arch/x86_64/ia32/ia32entry-xen.S
---- linux-2.6.17.previous/arch/x86_64/ia32/ia32entry-xen.S	2006-07-19 16:27:10.000000000 +0200
-+++ linux-2.6.17.noarch/arch/x86_64/ia32/ia32entry-xen.S	2006-07-19 17:53:16.000000000 +0200
+Index: patching/arch/x86_64/ia32/ia32entry-xen.S
+===================================================================
+--- patching.orig/arch/x86_64/ia32/ia32entry-xen.S
++++ patching/arch/x86_64/ia32/ia32entry-xen.S
 @@ -444,7 +444,7 @@ ia32_sys_call_table:
  	.quad sys_setuid16
  	.quad sys_getuid16
@@ -54,10 +57,11 @@
  	.quad sys_alarm
  	.quad sys_fstat	/* (old)fstat */
  	.quad sys_pause
-diff -urNp linux-2.6.17.previous/arch/x86_64/kernel/process-xen.c linux-2.6.17.noarch/arch/x86_64/kernel/process-xen.c
---- linux-2.6.17.previous/arch/x86_64/kernel/process-xen.c	2006-07-19 16:27:11.000000000 +0200
-+++ linux-2.6.17.noarch/arch/x86_64/kernel/process-xen.c	2006-07-19 17:52:39.000000000 +0200
-@@ -580,11 +580,6 @@ long sys_execve(char __user *name, char 
+Index: patching/arch/x86_64/kernel/process-xen.c
+===================================================================
+--- patching.orig/arch/x86_64/kernel/process-xen.c
++++ patching/arch/x86_64/kernel/process-xen.c
+@@ -688,11 +688,6 @@ long sys_execve(char __user *name, char 
  	if (IS_ERR(filename)) 
  		return error;
  	error = do_execve(filename, argv, envp, &regs); 
@@ -69,10 +73,11 @@
  	putname(filename);
  	return error;
  }
-diff -urNp linux-2.6.17.previous/arch/x86_64/kernel/traps-xen.c linux-2.6.17.noarch/arch/x86_64/kernel/traps-xen.c
---- linux-2.6.17.previous/arch/x86_64/kernel/traps-xen.c	2006-07-19 16:27:10.000000000 +0200
-+++ linux-2.6.17.noarch/arch/x86_64/kernel/traps-xen.c	2006-07-19 17:51:56.000000000 +0200
-@@ -863,14 +863,6 @@ asmlinkage void __kprobes do_debug(struc
+Index: patching/arch/x86_64/kernel/traps-xen.c
+===================================================================
+--- patching.orig/arch/x86_64/kernel/traps-xen.c
++++ patching/arch/x86_64/kernel/traps-xen.c
+@@ -870,14 +870,6 @@ asmlinkage void __kprobes do_debug(struc
  		 */
                  if (!user_mode(regs))
                         goto clear_TF_reenable;
@@ -87,24 +92,3 @@
  	}
  
  	/* Ok, finally something we can handle */
-diff -urNp linux-2.6.17.previous/arch/x86_64/mm/fault-xen.c linux-2.6.17.noarch/arch/x86_64/mm/fault-xen.c
---- linux-2.6.17.previous/arch/x86_64/mm/fault-xen.c	2006-07-19 16:27:11.000000000 +0200
-+++ linux-2.6.17.noarch/arch/x86_64/mm/fault-xen.c	2006-07-19 18:01:52.000000000 +0200
-@@ -11,7 +11,7 @@
- #include <linux/errno.h>
- #include <linux/string.h>
- #include <linux/types.h>
--#include <linux/ptrace.h>
-+#include <linux/tracehook.h>
- #include <linux/mman.h>
- #include <linux/mm.h>
- #include <linux/smp.h>
-@@ -250,7 +250,7 @@ int unhandled_signal(struct task_struct 
- {
- 	if (tsk->pid == 1)
- 		return 1;
--	if (tsk->ptrace & PT_PTRACED)
-+	if (tracehook_consider_fatal_signal(tsk, sig))
- 		return 0;
- 	return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_IGN) ||
- 		(tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL);


--- linux-2.6-fix-x86_64-smp.patch DELETED ---


--- linux-2.6-xen-fix-nosegneg-detection.patch DELETED ---


--- linux-2.6-xen.patch DELETED ---




More information about the fedora-extras-commits mailing list