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,
®s);
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, ®s);
@@ -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