diff options
author | Christian Limpach <Christian.Limpach@xensource.com> | 2006-09-19 14:26:47 +0100 |
---|---|---|
committer | Christian Limpach <Christian.Limpach@xensource.com> | 2006-09-19 14:26:47 +0100 |
commit | 13b3232ba7bed8877defdd471caeee12ace8c3a8 (patch) | |
tree | a6a9d83884d460cfa50f92cef759f253230e4791 /patches | |
parent | 42ee90deeb77bf93effffb03c487371d4605372e (diff) | |
download | xen-13b3232ba7bed8877defdd471caeee12ace8c3a8.tar.gz xen-13b3232ba7bed8877defdd471caeee12ace8c3a8.tar.bz2 xen-13b3232ba7bed8877defdd471caeee12ace8c3a8.zip |
[linux patches] Update patches for linux-2.6.16.29.
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>
--HG--
rename : patches/linux-2.6.16.13/blktap-aio-16_03_06.patch => patches/linux-2.6.16.29/blktap-aio-16_03_06.patch
rename : patches/linux-2.6.16.13/device_bind.patch => patches/linux-2.6.16.29/device_bind.patch
rename : patches/linux-2.6.16.13/fix-hz-suspend.patch => patches/linux-2.6.16.29/fix-hz-suspend.patch
rename : patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch => patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch
rename : patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch => patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch
rename : patches/linux-2.6.16.13/ipv6-no-autoconf.patch => patches/linux-2.6.16.29/ipv6-no-autoconf.patch
rename : patches/linux-2.6.16.13/net-csum.patch => patches/linux-2.6.16.29/net-csum.patch
rename : patches/linux-2.6.16.13/net-gso-0-base.patch => patches/linux-2.6.16.29/net-gso-0-base.patch
rename : patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch => patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch
rename : patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch => patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch
rename : patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch => patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch
rename : patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch => patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch
rename : patches/linux-2.6.16.13/pmd-shared.patch => patches/linux-2.6.16.29/pmd-shared.patch
rename : patches/linux-2.6.16.13/rcu_needs_cpu.patch => patches/linux-2.6.16.29/rcu_needs_cpu.patch
rename : patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch => patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
rename : patches/linux-2.6.16.13/series => patches/linux-2.6.16.29/series
rename : patches/linux-2.6.16.13/smp-alts.patch => patches/linux-2.6.16.29/smp-alts.patch
rename : patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch => patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch
rename : patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch => patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch
rename : patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch => patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch
rename : patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.16.13/xen-hotplug.patch => patches/linux-2.6.16.29/xen-hotplug.patch
rename : patches/linux-2.6.16.13/xenoprof-generic.patch => patches/linux-2.6.16.29/xenoprof-generic.patch
Diffstat (limited to 'patches')
-rw-r--r-- | patches/linux-2.6.16.29/blktap-aio-16_03_06.patch (renamed from patches/linux-2.6.16.13/blktap-aio-16_03_06.patch) | 27 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/device_bind.patch (renamed from patches/linux-2.6.16.13/device_bind.patch) | 6 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/fix-hz-suspend.patch (renamed from patches/linux-2.6.16.13/fix-hz-suspend.patch) | 6 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch (renamed from patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch) | 8 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch (renamed from patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch) | 12 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/ipv6-no-autoconf.patch (renamed from patches/linux-2.6.16.13/ipv6-no-autoconf.patch) | 14 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-csum.patch (renamed from patches/linux-2.6.16.13/net-csum.patch) | 18 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-gso-0-base.patch (renamed from patches/linux-2.6.16.13/net-gso-0-base.patch) | 610 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch (renamed from patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch) | 6 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch (renamed from patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch) | 134 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch (renamed from patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch) | 6 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch (renamed from patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch) | 8 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/pmd-shared.patch (renamed from patches/linux-2.6.16.13/pmd-shared.patch) | 24 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/rcu_needs_cpu.patch (renamed from patches/linux-2.6.16.13/rcu_needs_cpu.patch) | 26 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch (renamed from patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch) | 6 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/series (renamed from patches/linux-2.6.16.13/series) | 0 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/smp-alts.patch (renamed from patches/linux-2.6.16.13/smp-alts.patch) | 72 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch (renamed from patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch) | 37 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch (renamed from patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch) | 7 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch (renamed from patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch) | 38 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch) | 59 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch (renamed from patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch) | 19 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/xen-hotplug.patch (renamed from patches/linux-2.6.16.13/xen-hotplug.patch) | 5 | ||||
-rw-r--r-- | patches/linux-2.6.16.29/xenoprof-generic.patch (renamed from patches/linux-2.6.16.13/xenoprof-generic.patch) | 86 |
24 files changed, 562 insertions, 672 deletions
diff --git a/patches/linux-2.6.16.13/blktap-aio-16_03_06.patch b/patches/linux-2.6.16.29/blktap-aio-16_03_06.patch index 5f4fd6f7a9..bf3e8d63f0 100644 --- a/patches/linux-2.6.16.13/blktap-aio-16_03_06.patch +++ b/patches/linux-2.6.16.29/blktap-aio-16_03_06.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16-rc5/fs/aio.c ./fs/aio.c ---- ../pristine-linux-2.6.16-rc5/fs/aio.c 2006-03-14 14:10:10.827401387 +0000 -+++ ./fs/aio.c 2006-03-16 09:57:53.898316582 +0000 +diff -pruN ../orig-linux-2.6.16.29/fs/aio.c ./fs/aio.c +--- ../orig-linux-2.6.16.29/fs/aio.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./fs/aio.c 2006-09-19 13:58:49.000000000 +0100 @@ -34,6 +34,11 @@ #include <asm/uaccess.h> #include <asm/mmu_context.h> @@ -184,10 +184,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/fs/aio.c ./fs/aio.c get_ioctx(ioctx); /* io_destroy() expects us to hold a ref */ io_destroy(ioctx); - -diff -pruN ../pristine-linux-2.6.16-rc5/fs/eventpoll.c ./fs/eventpoll.c ---- ../pristine-linux-2.6.16-rc5/fs/eventpoll.c 2006-01-03 03:21:10.000000000 +0000 -+++ ./fs/eventpoll.c 2006-03-16 10:04:35.469956167 +0000 +diff -pruN ../orig-linux-2.6.16.29/fs/eventpoll.c ./fs/eventpoll.c +--- ../orig-linux-2.6.16.29/fs/eventpoll.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./fs/eventpoll.c 2006-09-19 13:58:49.000000000 +0100 @@ -235,8 +235,6 @@ struct ep_pqueue { static void ep_poll_safewake_init(struct poll_safewake *psw); @@ -262,10 +261,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/fs/eventpoll.c ./fs/eventpoll.c /* * Mark the inode dirty from the very beginning, - -diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/aio.h ./include/linux/aio.h ---- ../pristine-linux-2.6.16-rc5/include/linux/aio.h 2006-03-14 14:10:21.597916731 +0000 -+++ ./include/linux/aio.h 2006-03-16 10:05:39.848833028 +0000 +diff -pruN ../orig-linux-2.6.16.29/include/linux/aio.h ./include/linux/aio.h +--- ../orig-linux-2.6.16.29/include/linux/aio.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/aio.h 2006-09-19 13:58:49.000000000 +0100 @@ -191,6 +191,11 @@ struct kioctx { struct aio_ring_info ring_info; @@ -278,10 +276,9 @@ diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/aio.h ./include/linux/aio. }; /* prototypes */ - -diff -pruN ../pristine-linux-2.6.16-rc5/include/linux/eventpoll.h ./include/linux/eventpoll.h ---- ../pristine-linux-2.6.16-rc5/include/linux/eventpoll.h 2006-01-03 03:21:10.000000000 +0000 -+++ ./include/linux/eventpoll.h 2006-03-16 10:08:51.577809317 +0000 +diff -pruN ../orig-linux-2.6.16.29/include/linux/eventpoll.h ./include/linux/eventpoll.h +--- ../orig-linux-2.6.16.29/include/linux/eventpoll.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/eventpoll.h 2006-09-19 13:58:49.000000000 +0100 @@ -86,6 +86,12 @@ static inline void eventpoll_release(str } diff --git a/patches/linux-2.6.16.13/device_bind.patch b/patches/linux-2.6.16.29/device_bind.patch index 331234c89f..8cef71ecc1 100644 --- a/patches/linux-2.6.16.13/device_bind.patch +++ b/patches/linux-2.6.16.29/device_bind.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/drivers/base/bus.c ./drivers/base/bus.c ---- ../pristine-linux-2.6.16.13/drivers/base/bus.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./drivers/base/bus.c 2006-05-04 17:41:30.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/base/bus.c ./drivers/base/bus.c +--- ../orig-linux-2.6.16.29/drivers/base/bus.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/base/bus.c 2006-09-19 13:58:54.000000000 +0100 @@ -188,6 +188,11 @@ static ssize_t driver_bind(struct device up(&dev->sem); if (dev->parent) diff --git a/patches/linux-2.6.16.13/fix-hz-suspend.patch b/patches/linux-2.6.16.29/fix-hz-suspend.patch index bcb79553e7..2a964ccb8c 100644 --- a/patches/linux-2.6.16.13/fix-hz-suspend.patch +++ b/patches/linux-2.6.16.29/fix-hz-suspend.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/kernel/timer.c ./kernel/timer.c ---- ../pristine-linux-2.6.16.13/kernel/timer.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./kernel/timer.c 2006-06-29 14:34:12.788957720 +0100 +diff -pruN ../orig-linux-2.6.16.29/kernel/timer.c ./kernel/timer.c +--- ../orig-linux-2.6.16.29/kernel/timer.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./kernel/timer.c 2006-09-19 13:58:58.000000000 +0100 @@ -555,6 +555,22 @@ found: } spin_unlock(&base->t_base.lock); diff --git a/patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch b/patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch index 0892117255..91e6cb5279 100644 --- a/patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch +++ b/patches/linux-2.6.16.29/fix-ide-cd-pio-mode.patch @@ -1,7 +1,7 @@ -diff -ru ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c ---- ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./drivers/ide/ide-lib.c 2006-05-24 18:37:05.000000000 +0100 -@@ -410,10 +410,10 @@ +diff -pruN ../orig-linux-2.6.16.29/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c +--- ../orig-linux-2.6.16.29/drivers/ide/ide-lib.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/ide/ide-lib.c 2006-09-19 13:59:03.000000000 +0100 +@@ -410,10 +410,10 @@ void ide_toggle_bounce(ide_drive_t *driv { u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */ diff --git a/patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch b/patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch index 424e5483ad..bfcba3908a 100644 --- a/patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch +++ b/patches/linux-2.6.16.29/i386-mach-io-check-nmi.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/traps.c 2006-05-04 17:41:34.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c +--- ../orig-linux-2.6.16.29/arch/i386/kernel/traps.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/traps.c 2006-09-19 13:59:06.000000000 +0100 @@ -567,18 +567,11 @@ static void mem_parity_error(unsigned ch static void io_check_error(unsigned char reason, struct pt_regs * regs) @@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c ./arch/i386/kern } static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs) -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/mach-default/mach_traps.h 2006-05-04 17:41:34.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h +--- ../orig-linux-2.6.16.29/include/asm-i386/mach-default/mach_traps.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/mach-default/mach_traps.h 2006-09-19 13:59:06.000000000 +0100 @@ -15,6 +15,18 @@ static inline void clear_mem_error(unsig outb(reason, 0x61); } diff --git a/patches/linux-2.6.16.13/ipv6-no-autoconf.patch b/patches/linux-2.6.16.29/ipv6-no-autoconf.patch index 7d2fd4d531..e0d1b8c681 100644 --- a/patches/linux-2.6.16.13/ipv6-no-autoconf.patch +++ b/patches/linux-2.6.16.29/ipv6-no-autoconf.patch @@ -1,11 +1,7 @@ - net/ipv6/addrconf.c | 2 ++ - 1 files changed, 2 insertions(+) - -Index: build/net/ipv6/addrconf.c -=================================================================== ---- build.orig/net/ipv6/addrconf.c -+++ build/net/ipv6/addrconf.c -@@ -2462,6 +2462,7 @@ static void addrconf_dad_start(struct in +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/addrconf.c ./net/ipv6/addrconf.c +--- ../orig-linux-2.6.16.29/net/ipv6/addrconf.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv6/addrconf.c 2006-09-19 13:59:11.000000000 +0100 +@@ -2471,6 +2471,7 @@ static void addrconf_dad_start(struct in spin_lock_bh(&ifp->lock); if (dev->flags&(IFF_NOARP|IFF_LOOPBACK) || @@ -13,7 +9,7 @@ Index: build/net/ipv6/addrconf.c !(ifp->flags&IFA_F_TENTATIVE)) { ifp->flags &= ~IFA_F_TENTATIVE; spin_unlock_bh(&ifp->lock); -@@ -2546,6 +2547,7 @@ static void addrconf_dad_completed(struc +@@ -2555,6 +2556,7 @@ static void addrconf_dad_completed(struc if (ifp->idev->cnf.forwarding == 0 && ifp->idev->cnf.rtr_solicits > 0 && (dev->flags&IFF_LOOPBACK) == 0 && diff --git a/patches/linux-2.6.16.13/net-csum.patch b/patches/linux-2.6.16.29/net-csum.patch index c99e0506b2..d5fb233077 100644 --- a/patches/linux-2.6.16.13/net-csum.patch +++ b/patches/linux-2.6.16.29/net-csum.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c ---- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-16 13:28:19.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c +--- ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-09-19 13:59:15.000000000 +0100 @@ -129,7 +129,12 @@ tcp_manip_pkt(struct sk_buff **pskb, if (hdrsize < sizeof(*hdr)) return 1; @@ -15,9 +15,9 @@ diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c ./n ip_nat_cheat_check(oldport ^ 0xFFFF, newport, hdr->check)); -diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c ---- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-16 13:30:14.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c +--- ../orig-linux-2.6.16.29/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-09-19 13:59:15.000000000 +0100 @@ -113,11 +113,17 @@ udp_manip_pkt(struct sk_buff **pskb, newport = tuple->dst.u.udp.port; portptr = &hdr->dest; @@ -38,9 +38,9 @@ diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c ./n *portptr = newport; return 1; } -diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c ---- ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./net/ipv4/xfrm4_output.c 2006-05-04 17:41:37.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:15.000000000 +0100 @@ -17,6 +17,8 @@ #include <net/xfrm.h> #include <net/icmp.h> diff --git a/patches/linux-2.6.16.13/net-gso-0-base.patch b/patches/linux-2.6.16.29/net-gso-0-base.patch index 4c69d1e4a6..4895de4069 100644 --- a/patches/linux-2.6.16.13/net-gso-0-base.patch +++ b/patches/linux-2.6.16.29/net-gso-0-base.patch @@ -1,7 +1,6 @@ -diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt -index 3c0a5ba..847cedb 100644 ---- a/Documentation/networking/netdevices.txt -+++ b/Documentation/networking/netdevices.txt +diff -pruN ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt ./Documentation/networking/netdevices.txt +--- ../orig-linux-2.6.16.29/Documentation/networking/netdevices.txt 2006-09-12 19:02:10.000000000 +0100 ++++ ./Documentation/networking/netdevices.txt 2006-09-19 13:59:20.000000000 +0100 @@ -42,9 +42,9 @@ dev->get_stats: Context: nominally process, but don't sleep inside an rwlock @@ -29,10 +28,9 @@ index 3c0a5ba..847cedb 100644 Context: BHs disabled dev->poll: -diff --git a/drivers/block/aoe/aoenet.c b/drivers/block/aoe/aoenet.c -index 4be9769..2e7cac7 100644 ---- a/drivers/block/aoe/aoenet.c -+++ b/drivers/block/aoe/aoenet.c +diff -pruN ../orig-linux-2.6.16.29/drivers/block/aoe/aoenet.c ./drivers/block/aoe/aoenet.c +--- ../orig-linux-2.6.16.29/drivers/block/aoe/aoenet.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/block/aoe/aoenet.c 2006-09-19 13:59:20.000000000 +0100 @@ -95,9 +95,8 @@ mac_addr(char addr[6]) static struct sk_buff * skb_check(struct sk_buff *skb) @@ -44,10 +42,9 @@ index 4be9769..2e7cac7 100644 dev_kfree_skb(skb); return NULL; } -diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -index a2408d7..c90e620 100644 ---- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +diff -pruN ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ./drivers/infiniband/ulp/ipoib/ipoib_multicast.c +--- ../orig-linux-2.6.16.29/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2006-09-19 13:59:20.000000000 +0100 @@ -821,7 +821,8 @@ void ipoib_mcast_restart_task(void *dev_ ipoib_mcast_stop_thread(dev, 0); @@ -68,10 +65,9 @@ index a2408d7..c90e620 100644 /* We have to cancel outside of the spinlock */ list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { -diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c -index 6711eb6..8d2351f 100644 ---- a/drivers/media/dvb/dvb-core/dvb_net.c -+++ b/drivers/media/dvb/dvb-core/dvb_net.c +diff -pruN ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c ./drivers/media/dvb/dvb-core/dvb_net.c +--- ../orig-linux-2.6.16.29/drivers/media/dvb/dvb-core/dvb_net.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/media/dvb/dvb-core/dvb_net.c 2006-09-19 13:59:20.000000000 +0100 @@ -1052,7 +1052,7 @@ static void wq_set_multicast_list (void dvb_net_feed_stop(dev); @@ -90,11 +86,10 @@ index 6711eb6..8d2351f 100644 dvb_net_feed_start(dev); } -diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c -index dd41049..6615583 100644 ---- a/drivers/net/8139cp.c -+++ b/drivers/net/8139cp.c -@@ -794,7 +794,7 @@ #endif +diff -pruN ../orig-linux-2.6.16.29/drivers/net/8139cp.c ./drivers/net/8139cp.c +--- ../orig-linux-2.6.16.29/drivers/net/8139cp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/8139cp.c 2006-09-19 13:59:20.000000000 +0100 +@@ -794,7 +794,7 @@ static int cp_start_xmit (struct sk_buff entry = cp->tx_head; eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0; if (dev->features & NETIF_F_TSO) @@ -103,10 +98,9 @@ index dd41049..6615583 100644 if (skb_shinfo(skb)->nr_frags == 0) { struct cp_desc *txd = &cp->tx_ring[entry]; -diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c -index a24200d..b5e39a1 100644 ---- a/drivers/net/bnx2.c -+++ b/drivers/net/bnx2.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c +--- ../orig-linux-2.6.16.29/drivers/net/bnx2.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/bnx2.c 2006-09-19 13:59:20.000000000 +0100 @@ -1593,7 +1593,7 @@ bnx2_tx_int(struct bnx2 *bp) skb = tx_buf->skb; #ifdef BCM_TSO @@ -143,10 +137,9 @@ index a24200d..b5e39a1 100644 (skb->len > (bp->dev->mtu + ETH_HLEN))) { u32 tcp_opt_len, ip_tcp_len; -diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c -index bcf9f17..e970921 100644 ---- a/drivers/net/bonding/bond_main.c -+++ b/drivers/net/bonding/bond_main.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c ./drivers/net/bonding/bond_main.c +--- ../orig-linux-2.6.16.29/drivers/net/bonding/bond_main.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/bonding/bond_main.c 2006-09-19 13:59:20.000000000 +0100 @@ -1145,8 +1145,7 @@ int bond_sethwaddr(struct net_device *bo } @@ -177,10 +170,9 @@ index bcf9f17..e970921 100644 * transmitting */ bond_dev->features |= NETIF_F_LLTX; -diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c -index 30ff8ea..7b7d360 100644 ---- a/drivers/net/chelsio/sge.c -+++ b/drivers/net/chelsio/sge.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c ./drivers/net/chelsio/sge.c +--- ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/chelsio/sge.c 2006-09-19 13:59:20.000000000 +0100 @@ -1419,7 +1419,7 @@ int t1_start_xmit(struct sk_buff *skb, s struct cpl_tx_pkt *cpl; @@ -190,7 +182,7 @@ index 30ff8ea..7b7d360 100644 int eth_type; struct cpl_tx_pkt_lso *hdr; -@@ -1434,7 +1434,7 @@ #ifdef NETIF_F_TSO +@@ -1434,7 +1434,7 @@ int t1_start_xmit(struct sk_buff *skb, s hdr->ip_hdr_words = skb->nh.iph->ihl; hdr->tcp_hdr_words = skb->h.th->doff; hdr->eth_type_mss = htons(MK_ETH_TYPE_MSS(eth_type, @@ -199,11 +191,10 @@ index 30ff8ea..7b7d360 100644 hdr->len = htonl(skb->len - sizeof(*hdr)); cpl = (struct cpl_tx_pkt *)hdr; sge->stats.tx_lso_pkts++; -diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c -index fa29402..681d284 100644 ---- a/drivers/net/e1000/e1000_main.c -+++ b/drivers/net/e1000/e1000_main.c -@@ -2526,7 +2526,7 @@ #ifdef NETIF_F_TSO +diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/e1000/e1000_main.c +--- ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/e1000/e1000_main.c 2006-09-19 13:59:20.000000000 +0100 +@@ -2526,7 +2526,7 @@ e1000_tso(struct e1000_adapter *adapter, uint8_t ipcss, ipcso, tucss, tucso, hdr_len; int err; @@ -212,7 +203,7 @@ index fa29402..681d284 100644 if (skb_header_cloned(skb)) { err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); if (err) -@@ -2534,7 +2534,7 @@ #ifdef NETIF_F_TSO +@@ -2534,7 +2534,7 @@ e1000_tso(struct e1000_adapter *adapter, } hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2)); @@ -221,7 +212,7 @@ index fa29402..681d284 100644 if (skb->protocol == ntohs(ETH_P_IP)) { skb->nh.iph->tot_len = 0; skb->nh.iph->check = 0; -@@ -2651,7 +2651,7 @@ #ifdef NETIF_F_TSO +@@ -2651,7 +2651,7 @@ e1000_tx_map(struct e1000_adapter *adapt * tso gets written back prematurely before the data is fully * DMAd to the controller */ if (!skb->data_len && tx_ring->last_tx_tso && @@ -230,7 +221,7 @@ index fa29402..681d284 100644 tx_ring->last_tx_tso = 0; size -= 4; } -@@ -2893,7 +2893,7 @@ #endif +@@ -2893,7 +2893,7 @@ e1000_xmit_frame(struct sk_buff *skb, st } #ifdef NETIF_F_TSO @@ -239,7 +230,7 @@ index fa29402..681d284 100644 /* The controller does a simple calculation to * make sure there is enough room in the FIFO before * initiating the DMA for each buffer. The calc is: -@@ -2935,7 +2935,7 @@ #endif +@@ -2935,7 +2935,7 @@ e1000_xmit_frame(struct sk_buff *skb, st #ifdef NETIF_F_TSO /* Controller Erratum workaround */ if (!skb->data_len && tx_ring->last_tx_tso && @@ -248,11 +239,10 @@ index fa29402..681d284 100644 count++; #endif -diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c -index 3682ec6..c35f16e 100644 ---- a/drivers/net/forcedeth.c -+++ b/drivers/net/forcedeth.c -@@ -482,9 +482,9 @@ #define LPA_1000HALF 0x0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcedeth.c +--- ../orig-linux-2.6.16.29/drivers/net/forcedeth.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/forcedeth.c 2006-09-19 13:59:20.000000000 +0100 +@@ -482,9 +482,9 @@ typedef union _ring_type { * critical parts: * - rx is (pseudo-) lockless: it relies on the single-threading provided * by the arch code for interrupts. @@ -338,10 +328,9 @@ index 3682ec6..c35f16e 100644 */ static void nv_set_multicast(struct net_device *dev) { -diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c -index 102c1f0..d12605f 100644 ---- a/drivers/net/hamradio/6pack.c -+++ b/drivers/net/hamradio/6pack.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c ./drivers/net/hamradio/6pack.c +--- ../orig-linux-2.6.16.29/drivers/net/hamradio/6pack.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/hamradio/6pack.c 2006-09-19 13:59:20.000000000 +0100 @@ -308,9 +308,9 @@ static int sp_set_mac_address(struct net { struct sockaddr_ax25 *sa = addr; @@ -366,10 +355,9 @@ index 102c1f0..d12605f 100644 err = 0; break; -diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c -index dc5e9d5..5c66f5a 100644 ---- a/drivers/net/hamradio/mkiss.c -+++ b/drivers/net/hamradio/mkiss.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c ./drivers/net/hamradio/mkiss.c +--- ../orig-linux-2.6.16.29/drivers/net/hamradio/mkiss.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/hamradio/mkiss.c 2006-09-19 13:59:20.000000000 +0100 @@ -357,9 +357,9 @@ static int ax_set_mac_address(struct net { struct sockaddr_ax25 *sa = addr; @@ -394,10 +382,9 @@ index dc5e9d5..5c66f5a 100644 err = 0; break; -diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c -index 31fb2d7..2e222ef 100644 ---- a/drivers/net/ifb.c -+++ b/drivers/net/ifb.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/ifb.c ./drivers/net/ifb.c +--- ../orig-linux-2.6.16.29/drivers/net/ifb.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/ifb.c 2006-09-19 13:59:20.000000000 +0100 @@ -76,13 +76,13 @@ static void ri_tasklet(unsigned long dev dp->st_task_enter++; if ((skb = skb_peek(&dp->tq)) == NULL) { @@ -436,10 +423,9 @@ index 31fb2d7..2e222ef 100644 } else { resched: dp->tasklet_pending = 1; -diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c -index a9f49f0..339d4a7 100644 ---- a/drivers/net/irda/vlsi_ir.c -+++ b/drivers/net/irda/vlsi_ir.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/irda/vlsi_ir.c ./drivers/net/irda/vlsi_ir.c +--- ../orig-linux-2.6.16.29/drivers/net/irda/vlsi_ir.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/irda/vlsi_ir.c 2006-09-19 13:59:20.000000000 +0100 @@ -959,7 +959,7 @@ static int vlsi_hard_start_xmit(struct s || (now.tv_sec==ready.tv_sec && now.tv_usec>=ready.tv_usec)) break; @@ -449,11 +435,10 @@ index a9f49f0..339d4a7 100644 } } -diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c -index f9f77e4..bdab369 100644 ---- a/drivers/net/ixgb/ixgb_main.c -+++ b/drivers/net/ixgb/ixgb_main.c -@@ -1163,7 +1163,7 @@ #ifdef NETIF_F_TSO +diff -pruN ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c ./drivers/net/ixgb/ixgb_main.c +--- ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/ixgb/ixgb_main.c 2006-09-19 13:59:20.000000000 +0100 +@@ -1163,7 +1163,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s uint16_t ipcse, tucse, mss; int err; @@ -462,7 +447,7 @@ index f9f77e4..bdab369 100644 if (skb_header_cloned(skb)) { err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); if (err) -@@ -1171,7 +1171,7 @@ #ifdef NETIF_F_TSO +@@ -1171,7 +1171,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s } hdr_len = ((skb->h.raw - skb->data) + (skb->h.th->doff << 2)); @@ -471,10 +456,9 @@ index f9f77e4..bdab369 100644 skb->nh.iph->tot_len = 0; skb->nh.iph->check = 0; skb->h.th->check = ~csum_tcpudp_magic(skb->nh.iph->saddr, -diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c -index 690a1aa..9bcaa80 100644 ---- a/drivers/net/loopback.c -+++ b/drivers/net/loopback.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/loopback.c ./drivers/net/loopback.c +--- ../orig-linux-2.6.16.29/drivers/net/loopback.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/loopback.c 2006-09-19 13:59:20.000000000 +0100 @@ -74,7 +74,7 @@ static void emulate_large_send_offload(s struct iphdr *iph = skb->nh.iph; struct tcphdr *th = (struct tcphdr*)(skb->nh.raw + (iph->ihl * 4)); @@ -484,7 +468,7 @@ index 690a1aa..9bcaa80 100644 unsigned int offset = 0; u32 seq = ntohl(th->seq); u16 id = ntohs(iph->id); -@@ -139,7 +139,7 @@ #ifndef LOOPBACK_MUST_CHECKSUM +@@ -139,7 +139,7 @@ static int loopback_xmit(struct sk_buff #endif #ifdef LOOPBACK_TSO @@ -493,10 +477,9 @@ index 690a1aa..9bcaa80 100644 BUG_ON(skb->protocol != htons(ETH_P_IP)); BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP); -diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c -index c0998ef..0fac9d5 100644 ---- a/drivers/net/mv643xx_eth.c -+++ b/drivers/net/mv643xx_eth.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/mv643xx_eth.c ./drivers/net/mv643xx_eth.c +--- ../orig-linux-2.6.16.29/drivers/net/mv643xx_eth.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/mv643xx_eth.c 2006-09-19 13:59:20.000000000 +0100 @@ -1107,7 +1107,7 @@ static int mv643xx_eth_start_xmit(struct #ifdef MV643XX_CHECKSUM_OFFLOAD_TX @@ -506,10 +489,9 @@ index c0998ef..0fac9d5 100644 stats->tx_dropped++; printk(KERN_DEBUG "%s: failed to linearize tiny " "unaligned fragment\n", dev->name); -diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c -index 9d6d254..c9ed624 100644 ---- a/drivers/net/natsemi.c -+++ b/drivers/net/natsemi.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/natsemi.c ./drivers/net/natsemi.c +--- ../orig-linux-2.6.16.29/drivers/net/natsemi.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/natsemi.c 2006-09-19 13:59:20.000000000 +0100 @@ -323,12 +323,12 @@ performance critical codepaths: The rx process only runs in the interrupt handler. Access from outside the interrupt handler is only permitted after disable_irq(). @@ -525,10 +507,9 @@ index 9d6d254..c9ed624 100644 spin_lock_irq(&np->lock); IV. Notes -diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c -index 8cc0d0b..e53b313 100644 ---- a/drivers/net/r8169.c -+++ b/drivers/net/r8169.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/r8169.c ./drivers/net/r8169.c +--- ../orig-linux-2.6.16.29/drivers/net/r8169.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/r8169.c 2006-09-19 13:59:20.000000000 +0100 @@ -2171,7 +2171,7 @@ static int rtl8169_xmit_frags(struct rtl static inline u32 rtl8169_tso_csum(struct sk_buff *skb, struct net_device *dev) { @@ -538,11 +519,10 @@ index 8cc0d0b..e53b313 100644 if (mss) return LargeSend | ((mss & MSSMask) << MSSShift); -diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c -index b7f00d6..439f45f 100644 ---- a/drivers/net/s2io.c -+++ b/drivers/net/s2io.c -@@ -3522,8 +3522,8 @@ #endif +diff -pruN ../orig-linux-2.6.16.29/drivers/net/s2io.c ./drivers/net/s2io.c +--- ../orig-linux-2.6.16.29/drivers/net/s2io.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/s2io.c 2006-09-19 13:59:20.000000000 +0100 +@@ -3522,8 +3522,8 @@ static int s2io_xmit(struct sk_buff *skb txdp->Control_1 = 0; txdp->Control_2 = 0; #ifdef NETIF_F_TSO @@ -553,7 +533,7 @@ index b7f00d6..439f45f 100644 txdp->Control_1 |= TXD_TCP_LSO_EN; txdp->Control_1 |= TXD_TCP_LSO_MSS(mss); } -@@ -3543,10 +3543,10 @@ #endif +@@ -3543,10 +3543,10 @@ static int s2io_xmit(struct sk_buff *skb } frg_len = skb->len - skb->data_len; @@ -566,7 +546,7 @@ index b7f00d6..439f45f 100644 ufo_size &= ~7; txdp->Control_1 |= TXD_UFO_EN; txdp->Control_1 |= TXD_UFO_MSS(ufo_size); -@@ -3572,7 +3572,7 @@ #endif +@@ -3572,7 +3572,7 @@ static int s2io_xmit(struct sk_buff *skb txdp->Host_Control = (unsigned long) skb; txdp->Control_1 |= TXD_BUFFER0_SIZE(frg_len); @@ -575,7 +555,7 @@ index b7f00d6..439f45f 100644 txdp->Control_1 |= TXD_UFO_EN; frg_cnt = skb_shinfo(skb)->nr_frags; -@@ -3587,12 +3587,12 @@ #endif +@@ -3587,12 +3587,12 @@ static int s2io_xmit(struct sk_buff *skb (sp->pdev, frag->page, frag->page_offset, frag->size, PCI_DMA_TODEVICE); txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size); @@ -590,7 +570,7 @@ index b7f00d6..439f45f 100644 frg_cnt++; /* as Txd0 was used for inband header */ tx_fifo = mac_control->tx_FIFO_start[queue]; -@@ -3606,7 +3606,7 @@ #ifdef NETIF_F_TSO +@@ -3606,7 +3606,7 @@ static int s2io_xmit(struct sk_buff *skb if (mss) val64 |= TX_FIFO_SPECIAL_FUNC; #endif @@ -599,10 +579,9 @@ index b7f00d6..439f45f 100644 val64 |= TX_FIFO_SPECIAL_FUNC; writeq(val64, &tx_fifo->List_Control); -diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c -index 0618cd5..2a55eb3 100644 ---- a/drivers/net/sky2.c -+++ b/drivers/net/sky2.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/sky2.c ./drivers/net/sky2.c +--- ../orig-linux-2.6.16.29/drivers/net/sky2.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/sky2.c 2006-09-19 13:59:20.000000000 +0100 @@ -1125,7 +1125,7 @@ static unsigned tx_le_req(const struct s count = sizeof(dma_addr_t) / sizeof(u32); count += skb_shinfo(skb)->nr_frags * count; @@ -621,10 +600,9 @@ index 0618cd5..2a55eb3 100644 if (mss != 0) { /* just drop the packet if non-linear expansion fails */ if (skb_header_cloned(skb) && -diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c -index caf4102..fc9164a 100644 ---- a/drivers/net/tg3.c -+++ b/drivers/net/tg3.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/tg3.c ./drivers/net/tg3.c +--- ../orig-linux-2.6.16.29/drivers/net/tg3.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/tg3.c 2006-09-19 13:59:20.000000000 +0100 @@ -3664,7 +3664,7 @@ static int tg3_start_xmit(struct sk_buff #if TG3_TSO_SUPPORT != 0 mss = 0; @@ -634,11 +612,10 @@ index caf4102..fc9164a 100644 int tcp_opt_len, ip_tcp_len; if (skb_header_cloned(skb) && -diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c -index 5b1af39..11de5af 100644 ---- a/drivers/net/tulip/winbond-840.c -+++ b/drivers/net/tulip/winbond-840.c -@@ -1605,11 +1605,11 @@ #ifdef CONFIG_PM +diff -pruN ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c ./drivers/net/tulip/winbond-840.c +--- ../orig-linux-2.6.16.29/drivers/net/tulip/winbond-840.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/tulip/winbond-840.c 2006-09-19 13:59:20.000000000 +0100 +@@ -1605,11 +1605,11 @@ static void __devexit w840_remove1 (stru * - get_stats: * spin_lock_irq(np->lock), doesn't touch hw if not present * - hard_start_xmit: @@ -666,11 +643,10 @@ index 5b1af39..11de5af 100644 np->stats.rx_missed_errors += ioread32(ioaddr + RxMissed) & 0xffff; -diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c -index 4c76cb7..30c48c9 100644 ---- a/drivers/net/typhoon.c -+++ b/drivers/net/typhoon.c -@@ -340,7 +340,7 @@ #define typhoon_synchronize_irq(x) synch +diff -pruN ../orig-linux-2.6.16.29/drivers/net/typhoon.c ./drivers/net/typhoon.c +--- ../orig-linux-2.6.16.29/drivers/net/typhoon.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/typhoon.c 2006-09-19 13:59:20.000000000 +0100 +@@ -340,7 +340,7 @@ enum state_values { #endif #if defined(NETIF_F_TSO) @@ -679,10 +655,9 @@ index 4c76cb7..30c48c9 100644 #define TSO_NUM_DESCRIPTORS 2 #define TSO_OFFLOAD_ON TYPHOON_OFFLOAD_TCP_SEGMENT #else -diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c -index ed1f837..2eb6b5f 100644 ---- a/drivers/net/via-velocity.c -+++ b/drivers/net/via-velocity.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/via-velocity.c ./drivers/net/via-velocity.c +--- ../orig-linux-2.6.16.29/drivers/net/via-velocity.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/via-velocity.c 2006-09-19 13:59:20.000000000 +0100 @@ -1899,6 +1899,13 @@ static int velocity_xmit(struct sk_buff int pktlen = skb->len; @@ -706,7 +681,7 @@ index ed1f837..2eb6b5f 100644 pktlen = ETH_ZLEN; memcpy(tdinfo->buf, skb->data, skb->len); memset(tdinfo->buf + skb->len, 0, ETH_ZLEN - skb->len); -@@ -1933,7 +1938,6 @@ #ifdef VELOCITY_ZERO_COPY_SUPPORT +@@ -1933,7 +1938,6 @@ static int velocity_xmit(struct sk_buff int nfrags = skb_shinfo(skb)->nr_frags; tdinfo->skb = skb; if (nfrags > 6) { @@ -714,10 +689,9 @@ index ed1f837..2eb6b5f 100644 memcpy(tdinfo->buf, skb->data, skb->len); tdinfo->skb_dma[0] = tdinfo->buf_dma; td_ptr->tdesc0.pktsize = -diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c -index 6fd0bf7..75237c1 100644 ---- a/drivers/net/wireless/orinoco.c -+++ b/drivers/net/wireless/orinoco.c +diff -pruN ../orig-linux-2.6.16.29/drivers/net/wireless/orinoco.c ./drivers/net/wireless/orinoco.c +--- ../orig-linux-2.6.16.29/drivers/net/wireless/orinoco.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/net/wireless/orinoco.c 2006-09-19 13:59:20.000000000 +0100 @@ -1835,7 +1835,9 @@ static int __orinoco_program_rids(struct /* Set promiscuity / multicast*/ priv->promiscuous = 0; @@ -729,11 +703,10 @@ index 6fd0bf7..75237c1 100644 return 0; } -diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c -index 82cb4af..57cec40 100644 ---- a/drivers/s390/net/qeth_eddp.c -+++ b/drivers/s390/net/qeth_eddp.c -@@ -421,7 +421,7 @@ #endif /* CONFIG_QETH_VLAN */ +diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c ./drivers/s390/net/qeth_eddp.c +--- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_eddp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/s390/net/qeth_eddp.c 2006-09-19 13:59:20.000000000 +0100 +@@ -421,7 +421,7 @@ __qeth_eddp_fill_context_tcp(struct qeth } tcph = eddp->skb->h.th; while (eddp->skb_offset < eddp->skb->len) { @@ -768,10 +741,9 @@ index 82cb4af..57cec40 100644 } static inline struct qeth_eddp_context * -diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c -index dba7f7f..d9cc997 100644 ---- a/drivers/s390/net/qeth_main.c -+++ b/drivers/s390/net/qeth_main.c +diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c ./drivers/s390/net/qeth_main.c +--- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/s390/net/qeth_main.c 2006-09-19 13:59:20.000000000 +0100 @@ -4454,7 +4454,7 @@ qeth_send_packet(struct qeth_card *card, queue = card->qdio.out_qs [qeth_get_priority_queue(card, skb, ipv, cast_type)]; @@ -790,10 +762,9 @@ index dba7f7f..d9cc997 100644 !(large_send == QETH_LARGE_SEND_NO)) { card->perf_stats.large_send_bytes += skb->len; card->perf_stats.large_send_cnt++; -diff --git a/drivers/s390/net/qeth_tso.h b/drivers/s390/net/qeth_tso.h -index 1286dde..89cbf34 100644 ---- a/drivers/s390/net/qeth_tso.h -+++ b/drivers/s390/net/qeth_tso.h +diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_tso.h ./drivers/s390/net/qeth_tso.h +--- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_tso.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/s390/net/qeth_tso.h 2006-09-19 13:59:20.000000000 +0100 @@ -51,7 +51,7 @@ qeth_tso_fill_header(struct qeth_card *c hdr->ext.hdr_version = 1; hdr->ext.hdr_len = 28; @@ -803,11 +774,10 @@ index 1286dde..89cbf34 100644 hdr->ext.dg_hdr_len = (__u16)(iph->ihl*4 + tcph->doff*4); hdr->ext.payload_len = (__u16)(skb->len - hdr->ext.dg_hdr_len - sizeof(struct qeth_hdr_tso)); -diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h -index 93535f0..9269df7 100644 ---- a/include/linux/ethtool.h -+++ b/include/linux/ethtool.h -@@ -408,6 +408,8 @@ #define ETHTOOL_STSO 0x0000001f /* Set +diff -pruN ../orig-linux-2.6.16.29/include/linux/ethtool.h ./include/linux/ethtool.h +--- ../orig-linux-2.6.16.29/include/linux/ethtool.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/ethtool.h 2006-09-19 13:59:20.000000000 +0100 +@@ -408,6 +408,8 @@ struct ethtool_ops { #define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ #define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ #define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ @@ -816,10 +786,9 @@ index 93535f0..9269df7 100644 /* compatibility with older code */ #define SPARC_ETH_GSET ETHTOOL_GSET -diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 7fda03d..47b0965 100644 ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h +diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/netdevice.h +--- ../orig-linux-2.6.16.29/include/linux/netdevice.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/netdevice.h 2006-09-19 13:59:20.000000000 +0100 @@ -230,7 +230,8 @@ enum netdev_state_t __LINK_STATE_SCHED, __LINK_STATE_NOCARRIER, @@ -830,7 +799,7 @@ index 7fda03d..47b0965 100644 }; -@@ -306,9 +307,17 @@ #define NETIF_F_HW_VLAN_TX 128 /* Transm +@@ -306,9 +307,17 @@ struct net_device #define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */ #define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */ #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ @@ -850,7 +819,7 @@ index 7fda03d..47b0965 100644 struct net_device *next_sched; -@@ -394,6 +403,9 @@ #define NETIF_F_UFO 8192 +@@ -394,6 +403,9 @@ struct net_device struct list_head qdisc_list; unsigned long tx_queue_len; /* Max frames per queue allowed */ @@ -860,7 +829,7 @@ index 7fda03d..47b0965 100644 /* ingress path synchronizer */ spinlock_t ingress_lock; struct Qdisc *qdisc_ingress; -@@ -402,7 +414,7 @@ #define NETIF_F_UFO 8192 +@@ -402,7 +414,7 @@ struct net_device * One part is mostly used on xmit path (device) */ /* hard_start_xmit synchronizer */ @@ -942,7 +911,7 @@ index 7fda03d..47b0965 100644 #ifdef CONFIG_BUG extern void netdev_rx_csum_fault(struct net_device *dev); #else -@@ -951,6 +999,18 @@ #endif +@@ -951,6 +999,18 @@ extern void dev_seq_stop(struct seq_file extern void linkwatch_run_queue(void); @@ -961,10 +930,9 @@ index 7fda03d..47b0965 100644 #endif /* __KERNEL__ */ #endif /* _LINUX_DEV_H */ -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index ad7cc22..b19d45d 100644 ---- a/include/linux/skbuff.h -+++ b/include/linux/skbuff.h +diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff.h +--- ../orig-linux-2.6.16.29/include/linux/skbuff.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/skbuff.h 2006-09-19 13:59:20.000000000 +0100 @@ -134,9 +134,10 @@ struct skb_frag_struct { struct skb_shared_info { atomic_t dataref; @@ -1041,10 +1009,9 @@ index ad7cc22..b19d45d 100644 static inline void *skb_header_pointer(const struct sk_buff *skb, int offset, int len, void *buffer) -diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h -index b94d1ad..75b5b93 100644 ---- a/include/net/pkt_sched.h -+++ b/include/net/pkt_sched.h +diff -pruN ../orig-linux-2.6.16.29/include/net/pkt_sched.h ./include/net/pkt_sched.h +--- ../orig-linux-2.6.16.29/include/net/pkt_sched.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/net/pkt_sched.h 2006-09-19 13:59:20.000000000 +0100 @@ -218,12 +218,13 @@ extern struct qdisc_rate_table *qdisc_ge struct rtattr *tab); extern void qdisc_put_rtab(struct qdisc_rate_table *tab); @@ -1062,11 +1029,10 @@ index b94d1ad..75b5b93 100644 } extern int tc_classify(struct sk_buff *skb, struct tcf_proto *tp, -diff --git a/include/net/protocol.h b/include/net/protocol.h -index 6dc5970..0d2dcdb 100644 ---- a/include/net/protocol.h -+++ b/include/net/protocol.h -@@ -37,6 +37,8 @@ #define MAX_INET_PROTOS 256 /* Must be +diff -pruN ../orig-linux-2.6.16.29/include/net/protocol.h ./include/net/protocol.h +--- ../orig-linux-2.6.16.29/include/net/protocol.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/net/protocol.h 2006-09-19 13:59:20.000000000 +0100 +@@ -37,6 +37,8 @@ struct net_protocol { int (*handler)(struct sk_buff *skb); void (*err_handler)(struct sk_buff *skb, u32 info); @@ -1075,10 +1041,9 @@ index 6dc5970..0d2dcdb 100644 int no_policy; }; -diff --git a/include/net/sock.h b/include/net/sock.h -index f63d0d5..a8e8d21 100644 ---- a/include/net/sock.h -+++ b/include/net/sock.h +diff -pruN ../orig-linux-2.6.16.29/include/net/sock.h ./include/net/sock.h +--- ../orig-linux-2.6.16.29/include/net/sock.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/net/sock.h 2006-09-19 13:59:20.000000000 +0100 @@ -1064,9 +1064,13 @@ static inline void sk_setup_caps(struct { __sk_dst_set(sk, dst); @@ -1093,11 +1058,10 @@ index f63d0d5..a8e8d21 100644 } } -diff --git a/include/net/tcp.h b/include/net/tcp.h -index 77f21c6..70e1d5f 100644 ---- a/include/net/tcp.h -+++ b/include/net/tcp.h -@@ -552,13 +552,13 @@ #include <net/tcp_ecn.h> +diff -pruN ../orig-linux-2.6.16.29/include/net/tcp.h ./include/net/tcp.h +--- ../orig-linux-2.6.16.29/include/net/tcp.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/net/tcp.h 2006-09-19 13:59:20.000000000 +0100 +@@ -552,13 +552,13 @@ struct tcp_skb_cb { */ static inline int tcp_skb_pcount(const struct sk_buff *skb) { @@ -1122,10 +1086,9 @@ index 77f21c6..70e1d5f 100644 #ifdef CONFIG_PROC_FS extern int tcp4_proc_init(void); extern void tcp4_proc_exit(void); -diff --git a/net/atm/clip.c b/net/atm/clip.c -index 1842a4e..6dc21a7 100644 ---- a/net/atm/clip.c -+++ b/net/atm/clip.c +diff -pruN ../orig-linux-2.6.16.29/net/atm/clip.c ./net/atm/clip.c +--- ../orig-linux-2.6.16.29/net/atm/clip.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/atm/clip.c 2006-09-19 13:59:20.000000000 +0100 @@ -101,7 +101,7 @@ static void unlink_clip_vcc(struct clip_ printk(KERN_CRIT "!clip_vcc->entry (clip_vcc %p)\n",clip_vcc); return; @@ -1144,10 +1107,9 @@ index 1842a4e..6dc21a7 100644 } /* The neighbour entry n->lock is held. */ -diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c -index 0b33a7b..180e79b 100644 ---- a/net/bridge/br_device.c -+++ b/net/bridge/br_device.c +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_device.c ./net/bridge/br_device.c +--- ../orig-linux-2.6.16.29/net/bridge/br_device.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/bridge/br_device.c 2006-09-19 13:59:20.000000000 +0100 @@ -146,9 +146,9 @@ static int br_set_tx_csum(struct net_dev struct net_bridge *br = netdev_priv(dev); @@ -1169,10 +1131,9 @@ index 0b33a7b..180e79b 100644 + dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA | + NETIF_F_TSO | NETIF_F_NO_CSUM | NETIF_F_GSO_ROBUST; } -diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c -index 2d24fb4..00b1128 100644 ---- a/net/bridge/br_forward.c -+++ b/net/bridge/br_forward.c +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_forward.c ./net/bridge/br_forward.c +--- ../orig-linux-2.6.16.29/net/bridge/br_forward.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/bridge/br_forward.c 2006-09-19 13:59:20.000000000 +0100 @@ -32,7 +32,7 @@ static inline int should_deliver(const s int br_dev_queue_push_xmit(struct sk_buff *skb) { @@ -1182,10 +1143,9 @@ index 2d24fb4..00b1128 100644 kfree_skb(skb); else { #ifdef CONFIG_BRIDGE_NETFILTER -diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c -index f36b35e..0617146 100644 ---- a/net/bridge/br_if.c -+++ b/net/bridge/br_if.c +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_if.c ./net/bridge/br_if.c +--- ../orig-linux-2.6.16.29/net/bridge/br_if.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/bridge/br_if.c 2006-09-19 13:59:20.000000000 +0100 @@ -385,17 +385,28 @@ void br_features_recompute(struct net_br struct net_bridge_port *p; unsigned long features, checksum; @@ -1221,10 +1181,9 @@ index f36b35e..0617146 100644 } /* called with RTNL */ -diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c -index 9e27373..588207f 100644 ---- a/net/bridge/br_netfilter.c -+++ b/net/bridge/br_netfilter.c +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c ./net/bridge/br_netfilter.c +--- ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/bridge/br_netfilter.c 2006-09-19 13:59:20.000000000 +0100 @@ -743,7 +743,7 @@ static int br_nf_dev_queue_xmit(struct s { if (skb->protocol == htons(ETH_P_IP) && @@ -1234,11 +1193,10 @@ index 9e27373..588207f 100644 return ip_fragment(skb, br_dev_queue_push_xmit); else return br_dev_queue_push_xmit(skb); -diff --git a/net/core/dev.c b/net/core/dev.c -index 12a214c..32e1056 100644 ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -115,6 +115,7 @@ #include <linux/wireless.h> /* Note : w +diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c +--- ../orig-linux-2.6.16.29/net/core/dev.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/dev.c 2006-09-19 13:59:20.000000000 +0100 +@@ -115,6 +115,7 @@ #include <net/iw_handler.h> #endif /* CONFIG_NET_RADIO */ #include <asm/current.h> @@ -1301,13 +1259,44 @@ index 12a214c..32e1056 100644 /* Take action when hardware reception checksum errors are detected. */ #ifdef CONFIG_BUG void netdev_rx_csum_fault(struct net_device *dev) -@@ -1142,75 +1182,108 @@ #else +@@ -1142,75 +1182,108 @@ static inline int illegal_highdma(struct #define illegal_highdma(dev, skb) (0) #endif -/* Keep head the same: replace data */ -int __skb_linearize(struct sk_buff *skb, gfp_t gfp_mask) --{ ++struct dev_gso_cb { ++ void (*destructor)(struct sk_buff *skb); ++}; ++ ++#define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb) ++ ++static void dev_gso_skb_destructor(struct sk_buff *skb) ++{ ++ struct dev_gso_cb *cb; ++ ++ do { ++ struct sk_buff *nskb = skb->next; ++ ++ skb->next = nskb->next; ++ nskb->next = NULL; ++ kfree_skb(nskb); ++ } while (skb->next); ++ ++ cb = DEV_GSO_CB(skb); ++ if (cb->destructor) ++ cb->destructor(skb); ++} ++ ++/** ++ * dev_gso_segment - Perform emulated hardware segmentation on skb. ++ * @skb: buffer to segment ++ * ++ * This function segments the given skb and stores the list of segments ++ * in skb->next. ++ */ ++static int dev_gso_segment(struct sk_buff *skb) + { - unsigned int size; - u8 *data; - long offset; @@ -1354,44 +1343,6 @@ index 12a214c..32e1056 100644 - skb->mac.raw += offset; - skb->tail += offset; - skb->data += offset; -- -- /* We are no longer a clone, even if we were. */ -- skb->cloned = 0; -- -- skb->tail += skb->data_len; -- skb->data_len = 0; -+struct dev_gso_cb { -+ void (*destructor)(struct sk_buff *skb); -+}; -+ -+#define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb) -+ -+static void dev_gso_skb_destructor(struct sk_buff *skb) -+{ -+ struct dev_gso_cb *cb; -+ -+ do { -+ struct sk_buff *nskb = skb->next; -+ -+ skb->next = nskb->next; -+ nskb->next = NULL; -+ kfree_skb(nskb); -+ } while (skb->next); -+ -+ cb = DEV_GSO_CB(skb); -+ if (cb->destructor) -+ cb->destructor(skb); -+} -+ -+/** -+ * dev_gso_segment - Perform emulated hardware segmentation on skb. -+ * @skb: buffer to segment -+ * -+ * This function segments the given skb and stores the list of segments -+ * in skb->next. -+ */ -+static int dev_gso_segment(struct sk_buff *skb) -+{ + struct net_device *dev = skb->dev; + struct sk_buff *segs; + int features = dev->features & ~(illegal_highdma(dev, skb) ? @@ -1402,14 +1353,18 @@ index 12a214c..32e1056 100644 + /* Verifying header integrity only. */ + if (!segs) + return 0; -+ + +- /* We are no longer a clone, even if we were. */ +- skb->cloned = 0; + if (unlikely(IS_ERR(segs))) + return PTR_ERR(segs); + + skb->next = segs; + DEV_GSO_CB(skb)->destructor = skb->destructor; + skb->destructor = dev_gso_skb_destructor; -+ + +- skb->tail += skb->data_len; +- skb->data_len = 0; + return 0; +} + @@ -1514,7 +1469,7 @@ index 12a214c..32e1056 100644 /* Updates of qdisc are serialized by queue_lock. * The struct Qdisc which is pointed to by qdisc is now a -@@ -1309,8 +1387,8 @@ #endif +@@ -1309,8 +1387,8 @@ int dev_queue_xmit(struct sk_buff *skb) /* The device has no queue. Common case for software devices: loopback, all the sorts of tunnels... @@ -1525,7 +1480,7 @@ index 12a214c..32e1056 100644 counters.) However, it is possible, that they rely on protection made by us here. -@@ -1326,11 +1404,8 @@ #endif +@@ -1326,11 +1404,8 @@ int dev_queue_xmit(struct sk_buff *skb) HARD_TX_LOCK(dev, cpu); if (!netif_queue_stopped(dev)) { @@ -1538,7 +1493,7 @@ index 12a214c..32e1056 100644 HARD_TX_UNLOCK(dev); goto out; } -@@ -1349,13 +1424,13 @@ #endif +@@ -1349,13 +1424,13 @@ int dev_queue_xmit(struct sk_buff *skb) } rc = -ENETDOWN; @@ -1563,7 +1518,7 @@ index 12a214c..32e1056 100644 dev->xmit_lock_owner = -1; #ifdef CONFIG_NET_CLS_ACT spin_lock_init(&dev->ingress_lock); -@@ -2714,9 +2789,7 @@ #endif +@@ -2714,9 +2789,7 @@ int register_netdevice(struct net_device /* Fix illegal SG+CSUM combinations. */ if ((dev->features & NETIF_F_SG) && @@ -1582,11 +1537,10 @@ index 12a214c..32e1056 100644 EXPORT_SYMBOL(dev_valid_name); EXPORT_SYMBOL(dev_add_pack); EXPORT_SYMBOL(dev_alloc_name); -diff --git a/net/core/dev_mcast.c b/net/core/dev_mcast.c -index 05d6085..c57d887 100644 ---- a/net/core/dev_mcast.c -+++ b/net/core/dev_mcast.c -@@ -62,7 +62,7 @@ #include <net/arp.h> +diff -pruN ../orig-linux-2.6.16.29/net/core/dev_mcast.c ./net/core/dev_mcast.c +--- ../orig-linux-2.6.16.29/net/core/dev_mcast.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/dev_mcast.c 2006-09-19 13:59:20.000000000 +0100 +@@ -62,7 +62,7 @@ * Device mc lists are changed by bh at least if IPv6 is enabled, * so that it must be bh protected. * @@ -1700,10 +1654,9 @@ index 05d6085..c57d887 100644 return 0; } -diff --git a/net/core/ethtool.c b/net/core/ethtool.c -index e6f7610..27ce168 100644 ---- a/net/core/ethtool.c -+++ b/net/core/ethtool.c +diff -pruN ../orig-linux-2.6.16.29/net/core/ethtool.c ./net/core/ethtool.c +--- ../orig-linux-2.6.16.29/net/core/ethtool.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/ethtool.c 2006-09-19 13:59:20.000000000 +0100 @@ -30,7 +30,7 @@ u32 ethtool_op_get_link(struct net_devic u32 ethtool_op_get_tx_csum(struct net_device *dev) @@ -1724,24 +1677,16 @@ index e6f7610..27ce168 100644 return -EINVAL; return __ethtool_set_sg(dev, edata.data); -@@ -591,7 +589,7 @@ static int ethtool_set_tso(struct net_de +@@ -561,7 +559,7 @@ static int ethtool_set_sg(struct net_dev - static int ethtool_get_ufo(struct net_device *dev, char __user *useraddr) + static int ethtool_get_tso(struct net_device *dev, char __user *useraddr) { - struct ethtool_value edata = { ETHTOOL_GTSO }; + struct ethtool_value edata = { ETHTOOL_GUFO }; - if (!dev->ethtool_ops->get_ufo) + if (!dev->ethtool_ops->get_tso) return -EOPNOTSUPP; -@@ -600,6 +598,7 @@ static int ethtool_get_ufo(struct net_de - return -EFAULT; - return 0; - } -+ - static int ethtool_set_ufo(struct net_device *dev, char __user *useraddr) - { - struct ethtool_value edata; -@@ -615,6 +614,29 @@ static int ethtool_set_ufo(struct net_de +@@ -616,6 +614,29 @@ static int ethtool_set_ufo(struct net_de return dev->ethtool_ops->set_ufo(dev, edata.data); } @@ -1771,7 +1716,7 @@ index e6f7610..27ce168 100644 static int ethtool_self_test(struct net_device *dev, char __user *useraddr) { struct ethtool_test test; -@@ -906,6 +928,12 @@ int dev_ethtool(struct ifreq *ifr) +@@ -907,6 +928,12 @@ int dev_ethtool(struct ifreq *ifr) case ETHTOOL_SUFO: rc = ethtool_set_ufo(dev, useraddr); break; @@ -1784,10 +1729,9 @@ index e6f7610..27ce168 100644 default: rc = -EOPNOTSUPP; } -diff --git a/net/core/netpoll.c b/net/core/netpoll.c -index ea51f8d..ec28d3b 100644 ---- a/net/core/netpoll.c -+++ b/net/core/netpoll.c +diff -pruN ../orig-linux-2.6.16.29/net/core/netpoll.c ./net/core/netpoll.c +--- ../orig-linux-2.6.16.29/net/core/netpoll.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/netpoll.c 2006-09-19 13:59:20.000000000 +0100 @@ -273,24 +273,21 @@ static void netpoll_send_skb(struct netp do { @@ -1816,11 +1760,10 @@ index ea51f8d..ec28d3b 100644 /* success */ if(!status) { -diff --git a/net/core/pktgen.c b/net/core/pktgen.c -index da16f8f..2380347 100644 ---- a/net/core/pktgen.c -+++ b/net/core/pktgen.c -@@ -2582,7 +2582,7 @@ static __inline__ void pktgen_xmit(struc +diff -pruN ../orig-linux-2.6.16.29/net/core/pktgen.c ./net/core/pktgen.c +--- ../orig-linux-2.6.16.29/net/core/pktgen.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/pktgen.c 2006-09-19 13:59:20.000000000 +0100 +@@ -2586,7 +2586,7 @@ static __inline__ void pktgen_xmit(struc } } @@ -1829,7 +1772,7 @@ index da16f8f..2380347 100644 if (!netif_queue_stopped(odev)) { atomic_inc(&(pkt_dev->skb->users)); -@@ -2627,7 +2627,7 @@ retry_now: +@@ -2631,7 +2631,7 @@ retry_now: pkt_dev->next_tx_ns = 0; } @@ -1838,10 +1781,9 @@ index da16f8f..2380347 100644 /* If pkt_dev->count is zero, then run forever */ if ((pkt_dev->count != 0) && (pkt_dev->sofar >= pkt_dev->count)) { -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index 2144952..46f56af 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c +diff -pruN ../orig-linux-2.6.16.29/net/core/skbuff.c ./net/core/skbuff.c +--- ../orig-linux-2.6.16.29/net/core/skbuff.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/core/skbuff.c 2006-09-19 13:59:20.000000000 +0100 @@ -164,9 +164,9 @@ struct sk_buff *__alloc_skb(unsigned int shinfo = skb_shinfo(skb); atomic_set(&shinfo->dataref, 1); @@ -1867,7 +1809,7 @@ index 2144952..46f56af 100644 skb_shinfo(skb)->frag_list = NULL; out: return skb; -@@ -501,8 +502,9 @@ #endif +@@ -501,8 +502,9 @@ static void copy_skb_header(struct sk_bu new->tc_index = old->tc_index; #endif atomic_set(&new->users, 1); @@ -2013,10 +1955,9 @@ index 2144952..46f56af 100644 void __init skb_init(void) { skbuff_head_cache = kmem_cache_create("skbuff_head_cache", -diff --git a/net/decnet/dn_nsp_in.c b/net/decnet/dn_nsp_in.c -index 44bda85..2e3323a 100644 ---- a/net/decnet/dn_nsp_in.c -+++ b/net/decnet/dn_nsp_in.c +diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_nsp_in.c ./net/decnet/dn_nsp_in.c +--- ../orig-linux-2.6.16.29/net/decnet/dn_nsp_in.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/decnet/dn_nsp_in.c 2006-09-19 13:59:20.000000000 +0100 @@ -801,8 +801,7 @@ got_it: * We linearize everything except data segments here. */ @@ -2027,10 +1968,9 @@ index 44bda85..2e3323a 100644 goto free_out; } -diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c -index 3407f19..a0a25e0 100644 ---- a/net/decnet/dn_route.c -+++ b/net/decnet/dn_route.c +diff -pruN ../orig-linux-2.6.16.29/net/decnet/dn_route.c ./net/decnet/dn_route.c +--- ../orig-linux-2.6.16.29/net/decnet/dn_route.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/decnet/dn_route.c 2006-09-19 13:59:20.000000000 +0100 @@ -629,8 +629,7 @@ int dn_route_rcv(struct sk_buff *skb, st padlen); @@ -2041,10 +1981,9 @@ index 3407f19..a0a25e0 100644 goto dump_it; switch(flags & DN_RT_CNTL_MSK) { -diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c -index 97c276f..5ba719e 100644 ---- a/net/ipv4/af_inet.c -+++ b/net/ipv4/af_inet.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c +--- ../orig-linux-2.6.16.29/net/ipv4/af_inet.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/af_inet.c 2006-09-19 13:59:20.000000000 +0100 @@ -68,6 +68,7 @@ */ @@ -2108,7 +2047,7 @@ index 97c276f..5ba719e 100644 #ifdef CONFIG_IP_MULTICAST static struct net_protocol igmp_protocol = { .handler = igmp_rcv, -@@ -1093,6 +1142,7 @@ #endif +@@ -1093,6 +1142,7 @@ static struct net_protocol igmp_protocol static struct net_protocol tcp_protocol = { .handler = tcp_v4_rcv, .err_handler = tcp_v4_err, @@ -2124,11 +2063,10 @@ index 97c276f..5ba719e 100644 }; static int __init inet_init(void) -diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c -index 8dcba38..19c3c73 100644 ---- a/net/ipv4/ip_output.c -+++ b/net/ipv4/ip_output.c -@@ -210,8 +210,7 @@ #if defined(CONFIG_NETFILTER) && defined +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/ip_output.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/ip_output.c 2006-09-19 13:59:20.000000000 +0100 +@@ -210,8 +210,7 @@ static inline int ip_finish_output(struc return dst_output(skb); } #endif @@ -2186,10 +2124,9 @@ index 8dcba38..19c3c73 100644 len = size; else { -diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c -index d64e2ec..7494823 100644 ---- a/net/ipv4/ipcomp.c -+++ b/net/ipv4/ipcomp.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c ./net/ipv4/ipcomp.c +--- ../orig-linux-2.6.16.29/net/ipv4/ipcomp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/ipcomp.c 2006-09-19 13:59:20.000000000 +0100 @@ -84,7 +84,7 @@ static int ipcomp_input(struct xfrm_stat struct xfrm_decap_state *decap, struct sk_buff *skb) { @@ -2224,11 +2161,10 @@ index d64e2ec..7494823 100644 err = ipcomp_compress(x, skb); iph = skb->nh.iph; -diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c -index 00aa80e..84130c9 100644 ---- a/net/ipv4/tcp.c -+++ b/net/ipv4/tcp.c -@@ -257,6 +257,7 @@ #include <linux/smp_lock.h> +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c +--- ../orig-linux-2.6.16.29/net/ipv4/tcp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/tcp.c 2006-09-19 13:59:20.000000000 +0100 +@@ -257,6 +257,7 @@ #include <linux/fs.h> #include <linux/random.h> #include <linux/bootmem.h> @@ -2353,10 +2289,9 @@ index 00aa80e..84130c9 100644 extern void __skb_cb_too_small_for_tcp(int, int); extern struct tcp_congestion_ops tcp_reno; -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index e9a54ae..defe77a 100644 ---- a/net/ipv4/tcp_input.c -+++ b/net/ipv4/tcp_input.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_input.c ./net/ipv4/tcp_input.c +--- ../orig-linux-2.6.16.29/net/ipv4/tcp_input.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/tcp_input.c 2006-09-19 13:59:20.000000000 +0100 @@ -1072,7 +1072,7 @@ tcp_sacktag_write_queue(struct sock *sk, else pkt_len = (end_seq - @@ -2366,10 +2301,9 @@ index e9a54ae..defe77a 100644 break; pcount = tcp_skb_pcount(skb); } -diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c -index 310f2e6..ee01f69 100644 ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c ./net/ipv4/tcp_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/tcp_output.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/tcp_output.c 2006-09-19 13:59:20.000000000 +0100 @@ -497,15 +497,17 @@ static void tcp_set_skb_tso_segs(struct /* Avoid the costly divide in the normal * non-TSO case. @@ -2485,10 +2419,9 @@ index 310f2e6..ee01f69 100644 /* Use a previous sequence. This should cause the other * end to send an ack. Don't queue or clone SKB, just -diff --git a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c -index 32ad229..737c1db 100644 ---- a/net/ipv4/xfrm4_output.c -+++ b/net/ipv4/xfrm4_output.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c 2006-09-19 13:59:15.000000000 +0100 ++++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:20.000000000 +0100 @@ -9,6 +9,8 @@ */ @@ -2498,7 +2431,7 @@ index 32ad229..737c1db 100644 #include <linux/skbuff.h> #include <linux/spinlock.h> #include <linux/netfilter_ipv4.h> -@@ -152,16 +154,10 @@ error_nolock: +@@ -158,16 +160,10 @@ error_nolock: goto out_exit; } @@ -2516,7 +2449,7 @@ index 32ad229..737c1db 100644 while (likely((err = xfrm4_output_one(skb)) == 0)) { nf_reset(skb); -@@ -174,7 +170,7 @@ #endif +@@ -180,7 +176,7 @@ static int xfrm4_output_finish(struct sk return dst_output(skb); err = nf_hook(PF_INET, NF_IP_POST_ROUTING, &skb, NULL, @@ -2525,7 +2458,7 @@ index 32ad229..737c1db 100644 if (unlikely(err != 1)) break; } -@@ -182,6 +178,48 @@ #endif +@@ -188,6 +184,48 @@ static int xfrm4_output_finish(struct sk return err; } @@ -2574,10 +2507,9 @@ index 32ad229..737c1db 100644 int xfrm4_output(struct sk_buff *skb) { return NF_HOOK_COND(PF_INET, NF_IP_POST_ROUTING, skb, NULL, skb->dst->dev, -diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c -index 5bf70b1..cf5d17e 100644 ---- a/net/ipv6/ip6_output.c -+++ b/net/ipv6/ip6_output.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c ./net/ipv6/ip6_output.c +--- ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv6/ip6_output.c 2006-09-19 13:59:20.000000000 +0100 @@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *s int ip6_output(struct sk_buff *skb) @@ -2599,10 +2531,9 @@ index 5bf70b1..cf5d17e 100644 ipv6_select_ident(skb, &fhdr); skb_shinfo(skb)->ip6_frag_id = fhdr.identification; __skb_queue_tail(&sk->sk_write_queue, skb); -diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c -index d511a88..ef56d5d 100644 ---- a/net/ipv6/ipcomp6.c -+++ b/net/ipv6/ipcomp6.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c ./net/ipv6/ipcomp6.c +--- ../orig-linux-2.6.16.29/net/ipv6/ipcomp6.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv6/ipcomp6.c 2006-09-19 13:59:20.000000000 +0100 @@ -64,7 +64,7 @@ static LIST_HEAD(ipcomp6_tfms_list); static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) @@ -2637,10 +2568,9 @@ index d511a88..ef56d5d 100644 /* compression */ plen = skb->len - hdr_len; -diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c -index 8024217..39bdeec 100644 ---- a/net/ipv6/xfrm6_output.c -+++ b/net/ipv6/xfrm6_output.c +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_output.c +--- ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv6/xfrm6_output.c 2006-09-19 13:59:20.000000000 +0100 @@ -151,7 +151,7 @@ error_nolock: goto out_exit; } @@ -2701,10 +2631,9 @@ index 8024217..39bdeec 100644 int xfrm6_output(struct sk_buff *skb) { return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev, -diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 99ceb91..28c9efd 100644 ---- a/net/sched/sch_generic.c -+++ b/net/sched/sch_generic.c +diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_generic.c ./net/sched/sch_generic.c +--- ../orig-linux-2.6.16.29/net/sched/sch_generic.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/sched/sch_generic.c 2006-09-19 13:59:20.000000000 +0100 @@ -72,9 +72,9 @@ void qdisc_unlock_tree(struct net_device dev->queue_lock serializes queue accesses for this device AND dev->qdisc pointer itself. @@ -2877,10 +2806,9 @@ index 99ceb91..28c9efd 100644 -EXPORT_SYMBOL(qdisc_restart); EXPORT_SYMBOL(qdisc_lock_tree); EXPORT_SYMBOL(qdisc_unlock_tree); -diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c -index 79b8ef3..4c16ad5 100644 ---- a/net/sched/sch_teql.c -+++ b/net/sched/sch_teql.c +diff -pruN ../orig-linux-2.6.16.29/net/sched/sch_teql.c ./net/sched/sch_teql.c +--- ../orig-linux-2.6.16.29/net/sched/sch_teql.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/sched/sch_teql.c 2006-09-19 13:59:20.000000000 +0100 @@ -302,20 +302,17 @@ restart: switch (teql_resolve(skb, skb_res, slave)) { diff --git a/patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch b/patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch index ab8812af61..db2ea2321b 100644 --- a/patches/linux-2.6.16.13/net-gso-1-check-dodgy.patch +++ b/patches/linux-2.6.16.29/net-gso-1-check-dodgy.patch @@ -1,6 +1,6 @@ -diff -urp a/net/ipv4/tcp.c b/net/ipv4/tcp.c ---- a/net/ipv4/tcp.c 2006-07-25 14:42:53.194910626 +0100 -+++ b/net/ipv4/tcp.c 2006-07-25 14:41:00.955501910 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp.c ./net/ipv4/tcp.c +--- ../orig-linux-2.6.16.29/net/ipv4/tcp.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv4/tcp.c 2006-09-19 13:59:42.000000000 +0100 @@ -2042,13 +2042,19 @@ struct sk_buff *tcp_tso_segment(struct s if (!pskb_may_pull(skb, thlen)) goto out; diff --git a/patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch b/patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch index d8b7ba7a75..430be5fbbf 100644 --- a/patches/linux-2.6.16.13/net-gso-2-checksum-fix.patch +++ b/patches/linux-2.6.16.29/net-gso-2-checksum-fix.patch @@ -1,6 +1,6 @@ -diff -urp a/drivers/net/bnx2.c b/drivers/net/bnx2.c ---- a/drivers/net/bnx2.c 2006-07-25 14:41:00.905507519 +0100 -+++ b/drivers/net/bnx2.c 2006-07-25 14:36:00.288561400 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/bnx2.c ./drivers/net/bnx2.c +--- ../orig-linux-2.6.16.29/drivers/net/bnx2.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/bnx2.c 2006-09-19 13:59:46.000000000 +0100 @@ -1593,7 +1593,7 @@ bnx2_tx_int(struct bnx2 *bp) skb = tx_buf->skb; #ifdef BCM_TSO @@ -10,9 +10,9 @@ diff -urp a/drivers/net/bnx2.c b/drivers/net/bnx2.c u16 last_idx, last_ring_idx; last_idx = sw_cons + -diff -urp a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c ---- a/drivers/net/chelsio/sge.c 2006-07-25 14:41:00.908507183 +0100 -+++ b/drivers/net/chelsio/sge.c 2006-07-25 14:36:00.291561087 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c ./drivers/net/chelsio/sge.c +--- ../orig-linux-2.6.16.29/drivers/net/chelsio/sge.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/chelsio/sge.c 2006-09-19 13:59:46.000000000 +0100 @@ -1419,7 +1419,7 @@ int t1_start_xmit(struct sk_buff *skb, s struct cpl_tx_pkt *cpl; @@ -22,9 +22,9 @@ diff -urp a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c int eth_type; struct cpl_tx_pkt_lso *hdr; -diff -urp a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c ---- a/drivers/net/e1000/e1000_main.c 2006-07-25 14:41:00.910506958 +0100 -+++ b/drivers/net/e1000/e1000_main.c 2006-07-25 14:36:00.293560878 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c ./drivers/net/e1000/e1000_main.c +--- ../orig-linux-2.6.16.29/drivers/net/e1000/e1000_main.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/e1000/e1000_main.c 2006-09-19 13:59:46.000000000 +0100 @@ -2526,7 +2526,7 @@ e1000_tso(struct e1000_adapter *adapter, uint8_t ipcss, ipcso, tucss, tucso, hdr_len; int err; @@ -53,9 +53,9 @@ diff -urp a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c count++; #endif -diff -urp a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c ---- a/drivers/net/forcedeth.c 2006-07-25 14:41:00.912506734 +0100 -+++ b/drivers/net/forcedeth.c 2006-07-25 14:36:00.295560669 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/forcedeth.c ./drivers/net/forcedeth.c +--- ../orig-linux-2.6.16.29/drivers/net/forcedeth.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/forcedeth.c 2006-09-19 13:59:46.000000000 +0100 @@ -1105,7 +1105,7 @@ static int nv_start_xmit(struct sk_buff np->tx_skbuff[nr] = skb; @@ -65,9 +65,9 @@ diff -urp a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c tx_flags_extra = NV_TX2_TSO | (skb_shinfo(skb)->gso_size << NV_TX2_TSO_SHIFT); else #endif -diff -urp a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c ---- a/drivers/net/ixgb/ixgb_main.c 2006-07-25 14:41:00.915506397 +0100 -+++ b/drivers/net/ixgb/ixgb_main.c 2006-07-25 14:36:00.298560355 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c ./drivers/net/ixgb/ixgb_main.c +--- ../orig-linux-2.6.16.29/drivers/net/ixgb/ixgb_main.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/ixgb/ixgb_main.c 2006-09-19 13:59:46.000000000 +0100 @@ -1163,7 +1163,7 @@ ixgb_tso(struct ixgb_adapter *adapter, s uint16_t ipcse, tucse, mss; int err; @@ -77,9 +77,9 @@ diff -urp a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c if (skb_header_cloned(skb)) { err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); if (err) -diff -urp a/drivers/net/loopback.c b/drivers/net/loopback.c ---- a/drivers/net/loopback.c 2006-07-25 14:41:00.915506397 +0100 -+++ b/drivers/net/loopback.c 2006-07-25 14:36:00.298560355 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/loopback.c ./drivers/net/loopback.c +--- ../orig-linux-2.6.16.29/drivers/net/loopback.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/loopback.c 2006-09-19 13:59:46.000000000 +0100 @@ -139,7 +139,7 @@ static int loopback_xmit(struct sk_buff #endif @@ -89,9 +89,9 @@ diff -urp a/drivers/net/loopback.c b/drivers/net/loopback.c BUG_ON(skb->protocol != htons(ETH_P_IP)); BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP); -diff -urp a/drivers/net/sky2.c b/drivers/net/sky2.c ---- a/drivers/net/sky2.c 2006-07-25 14:41:00.924505388 +0100 -+++ b/drivers/net/sky2.c 2006-07-25 14:36:00.306559519 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/sky2.c ./drivers/net/sky2.c +--- ../orig-linux-2.6.16.29/drivers/net/sky2.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/sky2.c 2006-09-19 13:59:46.000000000 +0100 @@ -1125,7 +1125,7 @@ static unsigned tx_le_req(const struct s count = sizeof(dma_addr_t) / sizeof(u32); count += skb_shinfo(skb)->nr_frags * count; @@ -101,9 +101,9 @@ diff -urp a/drivers/net/sky2.c b/drivers/net/sky2.c ++count; if (skb->ip_summed == CHECKSUM_HW) -diff -urp a/drivers/net/typhoon.c b/drivers/net/typhoon.c ---- a/drivers/net/typhoon.c 2006-07-25 14:41:00.931504603 +0100 -+++ b/drivers/net/typhoon.c 2006-07-25 14:36:00.314558683 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/net/typhoon.c ./drivers/net/typhoon.c +--- ../orig-linux-2.6.16.29/drivers/net/typhoon.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/net/typhoon.c 2006-09-19 13:59:46.000000000 +0100 @@ -805,7 +805,7 @@ typhoon_start_tx(struct sk_buff *skb, st * If problems develop with TSO, check this first. */ @@ -122,9 +122,9 @@ diff -urp a/drivers/net/typhoon.c b/drivers/net/typhoon.c first_txd->processFlags |= TYPHOON_TX_PF_TCP_SEGMENT; first_txd->numDesc++; -diff -urp a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c ---- a/drivers/s390/net/qeth_main.c 2006-07-25 14:41:00.939503705 +0100 -+++ b/drivers/s390/net/qeth_main.c 2006-07-25 14:36:00.321557952 +0100 +diff -pruN ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c ./drivers/s390/net/qeth_main.c +--- ../orig-linux-2.6.16.29/drivers/s390/net/qeth_main.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./drivers/s390/net/qeth_main.c 2006-09-19 13:59:46.000000000 +0100 @@ -4454,7 +4454,7 @@ qeth_send_packet(struct qeth_card *card, queue = card->qdio.out_qs [qeth_get_priority_queue(card, skb, ipv, cast_type)]; @@ -144,9 +144,9 @@ diff -urp a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c card->perf_stats.large_send_bytes += skb->len; card->perf_stats.large_send_cnt++; } -diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h ---- a/include/linux/netdevice.h 2006-07-25 14:41:00.940503593 +0100 -+++ b/include/linux/netdevice.h 2006-07-25 14:36:00.323557743 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/netdevice.h +--- ../orig-linux-2.6.16.29/include/linux/netdevice.h 2006-09-19 13:59:20.000000000 +0100 ++++ ./include/linux/netdevice.h 2006-09-19 13:59:46.000000000 +0100 @@ -541,6 +541,7 @@ struct packet_type { struct net_device *); struct sk_buff *(*gso_segment)(struct sk_buff *skb, @@ -174,9 +174,9 @@ diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h } #endif /* __KERNEL__ */ -diff -urp a/include/linux/skbuff.h b/include/linux/skbuff.h ---- a/include/linux/skbuff.h 2006-07-25 14:41:00.941503481 +0100 -+++ b/include/linux/skbuff.h 2006-07-25 14:36:00.323557743 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/linux/skbuff.h ./include/linux/skbuff.h +--- ../orig-linux-2.6.16.29/include/linux/skbuff.h 2006-09-19 13:59:20.000000000 +0100 ++++ ./include/linux/skbuff.h 2006-09-19 13:59:46.000000000 +0100 @@ -1403,5 +1403,10 @@ static inline void nf_bridge_get(struct static inline void nf_reset(struct sk_buff *skb) {} #endif /* CONFIG_NETFILTER */ @@ -188,9 +188,9 @@ diff -urp a/include/linux/skbuff.h b/include/linux/skbuff.h + #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */ -diff -urp a/include/net/protocol.h b/include/net/protocol.h ---- a/include/net/protocol.h 2006-07-25 14:41:00.942503369 +0100 -+++ b/include/net/protocol.h 2006-07-25 14:36:00.324557639 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/net/protocol.h ./include/net/protocol.h +--- ../orig-linux-2.6.16.29/include/net/protocol.h 2006-09-19 13:59:20.000000000 +0100 ++++ ./include/net/protocol.h 2006-09-19 13:59:46.000000000 +0100 @@ -37,6 +37,7 @@ struct net_protocol { int (*handler)(struct sk_buff *skb); @@ -199,9 +199,9 @@ diff -urp a/include/net/protocol.h b/include/net/protocol.h struct sk_buff *(*gso_segment)(struct sk_buff *skb, int features); int no_policy; -diff -urp a/include/net/tcp.h b/include/net/tcp.h ---- a/include/net/tcp.h 2006-07-25 14:41:00.943503256 +0100 -+++ b/include/net/tcp.h 2006-07-25 14:36:00.325557534 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/net/tcp.h ./include/net/tcp.h +--- ../orig-linux-2.6.16.29/include/net/tcp.h 2006-09-19 13:59:20.000000000 +0100 ++++ ./include/net/tcp.h 2006-09-19 13:59:46.000000000 +0100 @@ -1063,6 +1063,7 @@ extern struct request_sock_ops tcp_reque extern int tcp_v4_destroy_sock(struct sock *sk); @@ -210,9 +210,9 @@ diff -urp a/include/net/tcp.h b/include/net/tcp.h extern struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features); #ifdef CONFIG_PROC_FS -diff -urp a/net/bridge/br_forward.c b/net/bridge/br_forward.c ---- a/net/bridge/br_forward.c 2006-07-25 14:41:00.944503144 +0100 -+++ b/net/bridge/br_forward.c 2006-07-25 14:36:00.326557430 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_forward.c ./net/bridge/br_forward.c +--- ../orig-linux-2.6.16.29/net/bridge/br_forward.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/bridge/br_forward.c 2006-09-19 13:59:46.000000000 +0100 @@ -32,7 +32,7 @@ static inline int should_deliver(const s int br_dev_queue_push_xmit(struct sk_buff *skb) { @@ -222,9 +222,9 @@ diff -urp a/net/bridge/br_forward.c b/net/bridge/br_forward.c kfree_skb(skb); else { #ifdef CONFIG_BRIDGE_NETFILTER -diff -urp a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c ---- a/net/bridge/br_netfilter.c 2006-07-25 14:41:00.945503032 +0100 -+++ b/net/bridge/br_netfilter.c 2006-07-25 14:36:00.327557325 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c ./net/bridge/br_netfilter.c +--- ../orig-linux-2.6.16.29/net/bridge/br_netfilter.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/bridge/br_netfilter.c 2006-09-19 13:59:46.000000000 +0100 @@ -743,7 +743,7 @@ static int br_nf_dev_queue_xmit(struct s { if (skb->protocol == htons(ETH_P_IP) && @@ -234,9 +234,9 @@ diff -urp a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c return ip_fragment(skb, br_dev_queue_push_xmit); else return br_dev_queue_push_xmit(skb); -diff -urp a/net/core/dev.c b/net/core/dev.c ---- a/net/core/dev.c 2006-07-25 14:41:00.947502808 +0100 -+++ b/net/core/dev.c 2006-07-25 14:36:00.329557116 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c +--- ../orig-linux-2.6.16.29/net/core/dev.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/core/dev.c 2006-09-19 13:59:46.000000000 +0100 @@ -1083,9 +1083,17 @@ int skb_checksum_help(struct sk_buff *sk unsigned int csum; int ret = 0, offset = skb->h.raw - skb->data; @@ -304,9 +304,9 @@ diff -urp a/net/core/dev.c b/net/core/dev.c segs = ptype->gso_segment(skb, features); break; } -diff -urp a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c ---- a/net/ipv4/af_inet.c 2006-07-25 14:41:00.952502247 +0100 -+++ b/net/ipv4/af_inet.c 2006-07-25 14:36:00.334556594 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/af_inet.c ./net/ipv4/af_inet.c +--- ../orig-linux-2.6.16.29/net/ipv4/af_inet.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv4/af_inet.c 2006-09-19 13:59:46.000000000 +0100 @@ -1085,6 +1085,40 @@ int inet_sk_rebuild_header(struct sock * EXPORT_SYMBOL(inet_sk_rebuild_header); @@ -364,9 +364,9 @@ diff -urp a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c .gso_segment = inet_gso_segment, }; -diff -urp a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c ---- a/net/ipv4/ip_output.c 2006-07-25 14:41:00.953502135 +0100 -+++ b/net/ipv4/ip_output.c 2006-07-25 14:36:00.335556489 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/ip_output.c ./net/ipv4/ip_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/ip_output.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv4/ip_output.c 2006-09-19 13:59:46.000000000 +0100 @@ -210,7 +210,7 @@ static inline int ip_finish_output(struc return dst_output(skb); } @@ -385,9 +385,9 @@ diff -urp a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c len = size; else { -diff -urp a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c ---- a/net/ipv4/tcp_ipv4.c 2006-07-25 14:39:15.985080788 +0100 -+++ b/net/ipv4/tcp_ipv4.c 2006-07-25 14:36:00.339556071 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/tcp_ipv4.c ./net/ipv4/tcp_ipv4.c +--- ../orig-linux-2.6.16.29/net/ipv4/tcp_ipv4.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./net/ipv4/tcp_ipv4.c 2006-09-19 13:59:46.000000000 +0100 @@ -495,6 +495,24 @@ void tcp_v4_send_check(struct sock *sk, } } @@ -413,10 +413,10 @@ diff -urp a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c /* * This routine will send an RST to the other tcp. * -diff -urp a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c ---- a/net/ipv4/xfrm4_output.c 2006-07-25 14:41:00.958501574 +0100 -+++ b/net/ipv4/xfrm4_output.c 2006-07-25 14:36:00.341555862 +0100 -@@ -189,7 +189,7 @@ static int xfrm4_output_finish(struct sk +diff -pruN ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c +--- ../orig-linux-2.6.16.29/net/ipv4/xfrm4_output.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv4/xfrm4_output.c 2006-09-19 13:59:46.000000000 +0100 +@@ -195,7 +195,7 @@ static int xfrm4_output_finish(struct sk } #endif @@ -425,9 +425,9 @@ diff -urp a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c return xfrm4_output_finish2(skb); skb->protocol = htons(ETH_P_IP); -diff -urp a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c ---- a/net/ipv6/ip6_output.c 2006-07-25 14:41:00.959501461 +0100 -+++ b/net/ipv6/ip6_output.c 2006-07-25 14:36:00.341555862 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c ./net/ipv6/ip6_output.c +--- ../orig-linux-2.6.16.29/net/ipv6/ip6_output.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv6/ip6_output.c 2006-09-19 13:59:46.000000000 +0100 @@ -147,7 +147,7 @@ static int ip6_output2(struct sk_buff *s int ip6_output(struct sk_buff *skb) @@ -437,9 +437,9 @@ diff -urp a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c dst_allfrag(skb->dst)) return ip6_fragment(skb, ip6_output2); else -diff -urp a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c ---- a/net/ipv6/xfrm6_output.c 2006-07-25 14:41:00.960501349 +0100 -+++ b/net/ipv6/xfrm6_output.c 2006-07-25 14:36:00.342555758 +0100 +diff -pruN ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c ./net/ipv6/xfrm6_output.c +--- ../orig-linux-2.6.16.29/net/ipv6/xfrm6_output.c 2006-09-19 13:59:20.000000000 +0100 ++++ ./net/ipv6/xfrm6_output.c 2006-09-19 13:59:46.000000000 +0100 @@ -179,7 +179,7 @@ static int xfrm6_output_finish(struct sk { struct sk_buff *segs; diff --git a/patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch b/patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch index 0b3dfd2870..0c373223d8 100644 --- a/patches/linux-2.6.16.13/net-gso-3-fix-errorcheck.patch +++ b/patches/linux-2.6.16.29/net-gso-3-fix-errorcheck.patch @@ -1,6 +1,6 @@ -diff -urp a/include/linux/netdevice.h b/include/linux/netdevice.h ---- a/include/linux/netdevice.h 2006-07-25 15:16:39.314333975 +0100 -+++ b/include/linux/netdevice.h 2006-07-25 15:19:37.298320799 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/linux/netdevice.h ./include/linux/netdevice.h +--- ../orig-linux-2.6.16.29/include/linux/netdevice.h 2006-09-19 13:59:46.000000000 +0100 ++++ ./include/linux/netdevice.h 2006-09-19 14:05:28.000000000 +0100 @@ -930,10 +930,10 @@ static inline void netif_tx_lock_bh(stru static inline int netif_tx_trylock(struct net_device *dev) diff --git a/patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch b/patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch index caefc4a1f5..86cd7a2b47 100644 --- a/patches/linux-2.6.16.13/net-gso-4-kill-warnon.patch +++ b/patches/linux-2.6.16.29/net-gso-4-kill-warnon.patch @@ -1,8 +1,6 @@ -508c578140642a641bb9b888369719c510ae2a00 -diff --git a/net/core/dev.c b/net/core/dev.c -index e814a89..240773b 100644 ---- a/net/core/dev.c -+++ b/net/core/dev.c +diff -pruN ../orig-linux-2.6.16.29/net/core/dev.c ./net/core/dev.c +--- ../orig-linux-2.6.16.29/net/core/dev.c 2006-09-19 13:59:46.000000000 +0100 ++++ ./net/core/dev.c 2006-09-19 14:05:32.000000000 +0100 @@ -1087,11 +1087,6 @@ int skb_checksum_help(struct sk_buff *sk goto out_set_summed; diff --git a/patches/linux-2.6.16.13/pmd-shared.patch b/patches/linux-2.6.16.29/pmd-shared.patch index 2af0a737f4..f8123a96ba 100644 --- a/patches/linux-2.6.16.13/pmd-shared.patch +++ b/patches/linux-2.6.16.29/pmd-shared.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c ---- ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/mm/pageattr.c 2006-05-04 17:41:40.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c +--- ../orig-linux-2.6.16.29/arch/i386/mm/pageattr.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/mm/pageattr.c 2006-09-19 14:05:35.000000000 +0100 @@ -78,7 +78,7 @@ static void set_pmd_pte(pte_t *kpte, uns unsigned long flags; @@ -10,9 +10,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c ./arch/i386/mm/pa return; spin_lock_irqsave(&pgd_lock, flags); -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c ---- ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/mm/pgtable.c 2006-05-04 17:41:40.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c +--- ../orig-linux-2.6.16.29/arch/i386/mm/pgtable.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/mm/pgtable.c 2006-09-19 14:05:35.000000000 +0100 @@ -215,9 +215,10 @@ void pgd_ctor(void *pgd, kmem_cache_t *c spin_lock_irqsave(&pgd_lock, flags); } @@ -85,9 +85,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c ./arch/i386/mm/pgt /* in the non-PAE case, free_pgtables() clears user pgd entries */ kmem_cache_free(pgd_cache, pgd); } -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/pgtable-2level-defs.h 2006-05-04 17:41:40.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h +--- ../orig-linux-2.6.16.29/include/asm-i386/pgtable-2level-defs.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/pgtable-2level-defs.h 2006-09-19 14:05:35.000000000 +0100 @@ -1,6 +1,8 @@ #ifndef _I386_PGTABLE_2LEVEL_DEFS_H #define _I386_PGTABLE_2LEVEL_DEFS_H @@ -97,9 +97,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h ./ /* * traditional i386 two-level paging structure: */ -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/pgtable-3level-defs.h 2006-05-04 17:41:40.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h +--- ../orig-linux-2.6.16.29/include/asm-i386/pgtable-3level-defs.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/pgtable-3level-defs.h 2006-09-19 14:05:35.000000000 +0100 @@ -1,6 +1,8 @@ #ifndef _I386_PGTABLE_3LEVEL_DEFS_H #define _I386_PGTABLE_3LEVEL_DEFS_H diff --git a/patches/linux-2.6.16.13/rcu_needs_cpu.patch b/patches/linux-2.6.16.29/rcu_needs_cpu.patch index f2d60f7b02..c8f3b79229 100644 --- a/patches/linux-2.6.16.13/rcu_needs_cpu.patch +++ b/patches/linux-2.6.16.29/rcu_needs_cpu.patch @@ -1,5 +1,17 @@ ---- ../pristine-linux-2.6.16.13/kernel/rcupdate.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./kernel/rcupdate.c 2006-06-09 20:27:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/linux/rcupdate.h ./include/linux/rcupdate.h +--- ../orig-linux-2.6.16.29/include/linux/rcupdate.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/rcupdate.h 2006-09-19 14:05:39.000000000 +0100 +@@ -134,6 +134,7 @@ static inline void rcu_bh_qsctr_inc(int + } + + extern int rcu_pending(int cpu); ++extern int rcu_needs_cpu(int cpu); + + /** + * rcu_read_lock - mark the beginning of an RCU read-side critical section. +diff -pruN ../orig-linux-2.6.16.29/kernel/rcupdate.c ./kernel/rcupdate.c +--- ../orig-linux-2.6.16.29/kernel/rcupdate.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./kernel/rcupdate.c 2006-09-19 14:05:39.000000000 +0100 @@ -485,6 +485,20 @@ int rcu_pending(int cpu) __rcu_pending(&rcu_bh_ctrlblk, &per_cpu(rcu_bh_data, cpu)); } @@ -21,13 +33,3 @@ void rcu_check_callbacks(int cpu, int user) { if (user || ---- ../pristine-linux-2.6.16.13/include/linux/rcupdate.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/linux/rcupdate.h 2006-06-09 20:28:57.000000000 +0100 -@@ -134,6 +134,7 @@ static inline void rcu_bh_qsctr_inc(int - } - - extern int rcu_pending(int cpu); -+extern int rcu_needs_cpu(int cpu); - - /** - * rcu_read_lock - mark the beginning of an RCU read-side critical section. diff --git a/patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch b/patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch index 0f318dee73..31788cc3bc 100644 --- a/patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch +++ b/patches/linux-2.6.16.29/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:44.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S +--- ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/entry.S 2006-09-19 14:05:44.000000000 +0100 @@ -177,7 +177,7 @@ need_resched: # sysenter call handler stub diff --git a/patches/linux-2.6.16.13/series b/patches/linux-2.6.16.29/series index 63774a0bd7..63774a0bd7 100644 --- a/patches/linux-2.6.16.13/series +++ b/patches/linux-2.6.16.29/series diff --git a/patches/linux-2.6.16.13/smp-alts.patch b/patches/linux-2.6.16.29/smp-alts.patch index 0e0d597da9..fbcd4a29ac 100644 --- a/patches/linux-2.6.16.13/smp-alts.patch +++ b/patches/linux-2.6.16.29/smp-alts.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/Kconfig ./arch/i386/Kconfig ---- ../pristine-linux-2.6.16.13/arch/i386/Kconfig 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/Kconfig 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/Kconfig ./arch/i386/Kconfig +--- ../orig-linux-2.6.16.29/arch/i386/Kconfig 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/Kconfig 2006-09-19 14:05:48.000000000 +0100 @@ -202,6 +202,19 @@ config SMP If you don't know what to do here, say N. @@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/Kconfig ./arch/i386/Kconfig config NR_CPUS int "Maximum number of CPUs (2-255)" range 2 255 -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/Makefile 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile +--- ../orig-linux-2.6.16.29/arch/i386/kernel/Makefile 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/Makefile 2006-09-19 14:05:48.000000000 +0100 @@ -37,6 +37,7 @@ obj-$(CONFIG_EFI) += efi.o efi_stub.o obj-$(CONFIG_DOUBLEFAULT) += doublefault.o obj-$(CONFIG_VM86) += vm86.o @@ -32,9 +32,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile ./arch/i386/ker EXTRA_AFLAGS := -traditional -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./arch/i386/kernel/smpalts.c 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c +--- ../orig-linux-2.6.16.29/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100 ++++ ./arch/i386/kernel/smpalts.c 2006-09-19 14:05:48.000000000 +0100 @@ -0,0 +1,85 @@ +#include <linux/kernel.h> +#include <asm/system.h> @@ -121,9 +121,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c ./arch/i386/ke + asm volatile ("jmp 1f\n1:"); + mb(); +} -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/smpboot.c 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c +--- ../orig-linux-2.6.16.29/arch/i386/kernel/smpboot.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/smpboot.c 2006-09-19 14:05:48.000000000 +0100 @@ -1218,6 +1218,11 @@ static void __init smp_boot_cpus(unsigne if (max_cpus <= cpucount+1) continue; @@ -148,9 +148,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c ./arch/i386/ke local_irq_enable(); per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; /* Unleash the CPU! */ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/vmlinux.lds.S 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S +--- ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:05:48.000000000 +0100 @@ -34,6 +34,13 @@ SECTIONS __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { *(__ex_table) } __stop___ex_table = .; @@ -165,9 +165,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S ./arch/i38 RODATA /* writeable */ -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h ./include/asm-i386/atomic.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/atomic.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/atomic.h ./include/asm-i386/atomic.h +--- ../orig-linux-2.6.16.29/include/asm-i386/atomic.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/atomic.h 2006-09-19 14:05:48.000000000 +0100 @@ -4,18 +4,13 @@ #include <linux/config.h> #include <linux/compiler.h> @@ -188,9 +188,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h ./include/asm-i /* * Make sure gcc doesn't try to be clever and move things around * on us. We need to use _exactly_ the address the user gave us, -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h ./include/asm-i386/bitops.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/bitops.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/bitops.h ./include/asm-i386/bitops.h +--- ../orig-linux-2.6.16.29/include/asm-i386/bitops.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/bitops.h 2006-09-19 14:05:48.000000000 +0100 @@ -7,6 +7,7 @@ #include <linux/config.h> @@ -266,9 +266,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h ./include/asm-i "btcl %2,%1\n\tsbbl %0,%0" :"=r" (oldbit),"+m" (ADDR) :"Ir" (nr) : "memory"); -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/futex.h ./include/asm-i386/futex.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/futex.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/futex.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/futex.h ./include/asm-i386/futex.h +--- ../orig-linux-2.6.16.29/include/asm-i386/futex.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/futex.h 2006-09-19 14:05:48.000000000 +0100 @@ -28,7 +28,7 @@ "1: movl %2, %0\n\ movl %0, %3\n" \ @@ -287,9 +287,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/futex.h ./include/asm-i3 oldval, uaddr, oparg); break; case FUTEX_OP_OR: -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/rwsem.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h +--- ../orig-linux-2.6.16.29/include/asm-i386/rwsem.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/rwsem.h 2006-09-19 14:05:48.000000000 +0100 @@ -40,6 +40,7 @@ #include <linux/list.h> @@ -370,9 +370,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h ./include/asm-i3 : "+r"(tmp), "=m"(sem->count) : "r"(sem), "m"(sem->count) : "memory"); -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100 -+++ ./include/asm-i386/smp_alt.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h +--- ../orig-linux-2.6.16.29/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100 ++++ ./include/asm-i386/smp_alt.h 2006-09-19 14:05:48.000000000 +0100 @@ -0,0 +1,32 @@ +#ifndef __ASM_SMP_ALT_H__ +#define __ASM_SMP_ALT_H__ @@ -406,9 +406,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h ./include/asm- +#endif + +#endif /* __ASM_SMP_ALT_H__ */ -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/spinlock.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h +--- ../orig-linux-2.6.16.29/include/asm-i386/spinlock.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/spinlock.h 2006-09-19 14:05:48.000000000 +0100 @@ -6,6 +6,7 @@ #include <asm/page.h> #include <linux/config.h> @@ -488,9 +488,9 @@ diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h ./include/asm : "=m" (rw->lock) : : "memory"); } -diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/system.h ./include/asm-i386/system.h ---- ../pristine-linux-2.6.16.13/include/asm-i386/system.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-i386/system.h 2006-05-04 17:41:45.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-i386/system.h ./include/asm-i386/system.h +--- ../orig-linux-2.6.16.29/include/asm-i386/system.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-i386/system.h 2006-09-19 14:05:48.000000000 +0100 @@ -5,7 +5,7 @@ #include <linux/kernel.h> #include <asm/segment.h> diff --git a/patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch b/patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch index df0bc02e78..71a22017b5 100644 --- a/patches/linux-2.6.16.13/tpm_plugin_2.6.17.patch +++ b/patches/linux-2.6.16.29/tpm_plugin_2.6.17.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c ./drivers/char/tpm/tpm_atmel.c ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c 2006-06-26 18:05:03.000000000 -0400 -+++ ./drivers/char/tpm/tpm_atmel.c 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.c ./drivers/char/tpm/tpm_atmel.c +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/char/tpm/tpm_atmel.c 2006-09-19 14:05:52.000000000 +0100 @@ -47,12 +47,12 @@ static int tpm_atml_recv(struct tpm_chip return -EIO; @@ -151,9 +151,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.c ./drivers/ch err_unreg_drv: driver_unregister(&atml_drv); return rc; -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h ./drivers/char/tpm/tpm_atmel.h ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h 2006-06-26 18:05:03.000000000 -0400 -+++ ./drivers/char/tpm/tpm_atmel.h 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.h ./drivers/char/tpm/tpm_atmel.h +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_atmel.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/char/tpm/tpm_atmel.h 2006-09-19 14:05:52.000000000 +0100 @@ -28,13 +28,12 @@ #define atmel_request_region request_mem_region #define atmel_release_region release_mem_region @@ -214,9 +214,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_atmel.h ./drivers/ch + return ioport_map(*base, *region_size); } #endif -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c ./drivers/char/tpm/tpm_bios.c ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c 2006-06-26 18:05:03.000000000 -0400 -+++ ./drivers/char/tpm/tpm_bios.c 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_bios.c ./drivers/char/tpm/tpm_bios.c +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_bios.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/char/tpm/tpm_bios.c 2006-09-19 14:05:52.000000000 +0100 @@ -29,6 +29,11 @@ #define MAX_TEXT_EVENT 1000 /* Max event string length */ #define ACPI_TCPA_SIG "TCPA" /* 0x41504354 /'TCPA' */ @@ -469,9 +469,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_bios.c ./drivers/cha return 0; } -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c ./drivers/char/tpm/tpm_infineon.c ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c 2006-06-26 18:05:03.000000000 -0400 -+++ ./drivers/char/tpm/tpm_infineon.c 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_infineon.c ./drivers/char/tpm/tpm_infineon.c +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_infineon.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/char/tpm/tpm_infineon.c 2006-09-19 14:05:52.000000000 +0100 @@ -15,6 +15,7 @@ * License. */ @@ -684,9 +684,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_infineon.c ./drivers -MODULE_VERSION("1.7"); +MODULE_VERSION("1.8"); MODULE_LICENSE("GPL"); -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c ./drivers/char/tpm/tpm_nsc.c ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c 2006-06-26 18:05:03.000000000 -0400 -+++ ./drivers/char/tpm/tpm_nsc.c 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_nsc.c ./drivers/char/tpm/tpm_nsc.c +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_nsc.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/char/tpm/tpm_nsc.c 2006-09-19 14:05:52.000000000 +0100 @@ -71,7 +71,7 @@ static int wait_for_stat(struct tpm_chip unsigned long stop; @@ -874,9 +874,9 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_nsc.c ./drivers/char err_unreg_dev: platform_device_unregister(pdev); err_free_dev: -diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c ./drivers/char/tpm/tpm_tis.c ---- ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c 1969-12-31 19:00:00.000000000 -0500 -+++ ./drivers/char/tpm/tpm_tis.c 2006-06-26 18:16:33.000000000 -0400 +diff -pruN ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_tis.c ./drivers/char/tpm/tpm_tis.c +--- ../orig-linux-2.6.16.29/drivers/char/tpm/tpm_tis.c 1970-01-01 01:00:00.000000000 +0100 ++++ ./drivers/char/tpm/tpm_tis.c 2006-09-19 14:05:52.000000000 +0100 @@ -0,0 +1,665 @@ +/* + * Copyright (C) 2005, 2006 IBM Corporation @@ -1543,4 +1543,3 @@ diff -pruN ../pristine-linux-2.6.16.13/drivers/char/tpm/tpm_tis.c ./drivers/char +MODULE_DESCRIPTION("TPM Driver"); +MODULE_VERSION("2.0"); +MODULE_LICENSE("GPL"); - diff --git a/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch b/patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch index 208573b424..3dcae42ffd 100644 --- a/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch +++ b/patches/linux-2.6.16.29/x86-elfnote-as-preprocessor-macro.patch @@ -1,7 +1,6 @@ - -diff -r 4b7cd997c08f include/linux/elfnote.h ---- a/include/linux/elfnote.h Wed Aug 23 11:48:46 2006 +0100 -+++ b/include/linux/elfnote.h Wed Aug 23 12:44:27 2006 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/linux/elfnote.h ./include/linux/elfnote.h +--- ../orig-linux-2.6.16.29/include/linux/elfnote.h 2006-09-19 14:06:10.000000000 +0100 ++++ ./include/linux/elfnote.h 2006-09-19 14:06:20.000000000 +0100 @@ -31,22 +31,24 @@ /* * Generate a structure with the same shape as Elf{32,64}_Nhdr (which diff --git a/patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch b/patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch index 1bff3be41e..0ac84e4aca 100644 --- a/patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch +++ b/patches/linux-2.6.16.29/x86-increase-interrupt-vector-range.patch @@ -1,6 +1,6 @@ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:49.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S +--- ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S 2006-09-19 14:05:44.000000000 +0100 ++++ ./arch/i386/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100 @@ -406,7 +406,7 @@ vector=0 ENTRY(irq_entries_start) .rept NR_IRQS @@ -19,9 +19,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kern SAVE_ALL \ movl %esp,%eax; \ call smp_/**/name; \ -diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c ---- ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/i386/kernel/irq.c 2006-05-04 17:41:49.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c +--- ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100 @@ -53,8 +53,8 @@ static union irq_ctx *softirq_ctx[NR_CPU */ fastcall unsigned int do_IRQ(struct pt_regs *regs) @@ -33,10 +33,10 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c ./arch/i386/kernel #ifdef CONFIG_4KSTACKS union irq_ctx *curctx, *irqctx; u32 *isp; -diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S ---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/x86_64/kernel/entry.S 2006-05-04 17:41:49.000000000 +0100 -@@ -601,7 +601,7 @@ retint_kernel: +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100 +@@ -596,7 +596,7 @@ retint_kernel: */ .macro apicinterrupt num,func INTR_FRAME @@ -45,9 +45,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S ./arch/x86_64/ CFI_ADJUST_CFA_OFFSET 8 interrupt \func jmp ret_from_intr -diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c ---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/x86_64/kernel/irq.c 2006-05-04 17:41:49.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100 @@ -96,8 +96,8 @@ skip: */ asmlinkage unsigned int do_IRQ(struct pt_regs *regs) @@ -59,9 +59,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c ./arch/x86_64/ke exit_idle(); irq_enter(); -diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c ---- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./arch/x86_64/kernel/smp.c 2006-05-04 17:41:49.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/smp.c 2006-09-19 14:05:56.000000000 +0100 @@ -135,10 +135,10 @@ asmlinkage void smp_invalidate_interrupt cpu = smp_processor_id(); @@ -75,9 +75,9 @@ diff -pruN ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c ./arch/x86_64/ke f = &per_cpu(flush_state, sender); if (!cpu_isset(cpu, f->flush_cpumask)) -diff -pruN ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h ---- ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h 2006-05-02 22:38:44.000000000 +0100 -+++ ./include/asm-x86_64/hw_irq.h 2006-05-04 17:41:49.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h +--- ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-x86_64/hw_irq.h 2006-09-19 14:05:56.000000000 +0100 @@ -127,7 +127,7 @@ asmlinkage void IRQ_NAME(nr); \ __asm__( \ "\n.p2align\n" \ diff --git a/patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch index 6f2422f517..1047ee417c 100644 --- a/patches/linux-2.6.16.13/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch +++ b/patches/linux-2.6.16.29/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch @@ -1,37 +1,7 @@ -Taken from 2.6.18-rc4-mm1. - -From: Jeremy Fitzhardinge <jeremy@xensource.com> - -This patch will pack any .note.* section into a PT_NOTE segment in the output -file. - -To do this, we tell ld that we need a PT_NOTE segment. This requires us to -start explicitly mapping sections to segments, so we also need to explicitly -create PT_LOAD segments for text and data, and map the sections to them -appropriately. Fortunately, each section will default to its previous -section's segment, so it doesn't take many changes to vmlinux.lds.S. - -This only changes i386 for now, but I presume the corresponding changes for -other architectures will be as simple. - -This change also adds <linux/elfnote.h>, which defines C and Assembler macros -for actually creating ELF notes. - -Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> -Cc: Eric W. Biederman <ebiederm@xmission.com> -Cc: Hollis Blanchard <hollisb@us.ibm.com> -Signed-off-by: Andrew Morton <akpm@osdl.org> ---- - - arch/i386/kernel/vmlinux.lds.S | 12 +++ - include/asm-generic/vmlinux.lds.h | 3 - include/linux/elfnote.h | 88 ++++++++++++++++++++++++++++ - 3 files changed, 101 insertions(+), 2 deletions(-) - -diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux arch/i386/kernel/vmlinux.lds.S ---- a/arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux -+++ a/arch/i386/kernel/vmlinux.lds.S -@@ -13,6 +13,12 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386" +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S +--- ../orig-linux-2.6.16.29/arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:05:48.000000000 +0100 ++++ ./arch/i386/kernel/vmlinux.lds.S 2006-09-19 14:06:10.000000000 +0100 +@@ -12,6 +12,12 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386" OUTPUT_ARCH(i386) ENTRY(phys_startup_32) jiffies = jiffies_64; @@ -44,7 +14,7 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se SECTIONS { . = __KERNEL_START; -@@ -26,7 +32,7 @@ SECTIONS +@@ -25,7 +31,7 @@ SECTIONS KPROBES_TEXT *(.fixup) *(.gnu.warning) @@ -53,7 +23,7 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se _etext = .; /* End of text section */ -@@ -50,7 +56,7 @@ SECTIONS +@@ -47,7 +53,7 @@ SECTIONS .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ *(.data) CONSTRUCTORS @@ -62,26 +32,26 @@ diff -puN arch/i386/kernel/vmlinux.lds.S~x86-put-note-sections-into-a-pt_note-se . = ALIGN(4096); __nosave_begin = .; -@@ -186,4 +192,6 @@ SECTIONS +@@ -154,4 +160,6 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + + NOTES } -diff -puN include/asm-generic/vmlinux.lds.h~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux include/asm-generic/vmlinux.lds.h ---- a/include/asm-generic/vmlinux.lds.h~x86-put-note-sections-into-a-pt_note-segment-in-vmlinux -+++ a/include/asm-generic/vmlinux.lds.h -@@ -194,3 +194,6 @@ +diff -pruN ../orig-linux-2.6.16.29/include/asm-generic/vmlinux.lds.h ./include/asm-generic/vmlinux.lds.h +--- ../orig-linux-2.6.16.29/include/asm-generic/vmlinux.lds.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-generic/vmlinux.lds.h 2006-09-19 14:06:10.000000000 +0100 +@@ -152,3 +152,6 @@ .stab.index 0 : { *(.stab.index) } \ .stab.indexstr 0 : { *(.stab.indexstr) } \ .comment 0 : { *(.comment) } + +#define NOTES \ + .notes : { *(.note.*) } :note -diff -puN /dev/null include/linux/elfnote.h ---- /dev/null -+++ a/include/linux/elfnote.h +diff -pruN ../orig-linux-2.6.16.29/include/linux/elfnote.h ./include/linux/elfnote.h +--- ../orig-linux-2.6.16.29/include/linux/elfnote.h 1970-01-01 01:00:00.000000000 +0100 ++++ ./include/linux/elfnote.h 2006-09-19 14:06:10.000000000 +0100 @@ -0,0 +1,88 @@ +#ifndef _LINUX_ELFNOTE_H +#define _LINUX_ELFNOTE_H @@ -171,4 +141,3 @@ diff -puN /dev/null include/linux/elfnote.h +#endif /* __ASSEMBLER__ */ + +#endif /* _LINUX_ELFNOTE_H */ -_ diff --git a/patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch b/patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch index 9c0cd81d76..7e44d833b4 100644 --- a/patches/linux-2.6.16.13/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch +++ b/patches/linux-2.6.16.29/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch @@ -1,6 +1,7 @@ ---- a/arch/x86_64/kernel/vmlinux.lds.S -+++ b/arch/x86_64/kernel/vmlinux.lds.S -@@ -13,6 +13,12 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86 +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/vmlinux.lds.S ./arch/x86_64/kernel/vmlinux.lds.S +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/vmlinux.lds.S 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/vmlinux.lds.S 2006-09-19 14:06:15.000000000 +0100 +@@ -14,6 +14,12 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86 OUTPUT_ARCH(i386:x86-64) ENTRY(phys_startup_64) jiffies_64 = jiffies; @@ -13,7 +14,7 @@ SECTIONS { . = __START_KERNEL; -@@ -31,7 +37,7 @@ SECTIONS +@@ -26,7 +32,7 @@ SECTIONS KPROBES_TEXT *(.fixup) *(.gnu.warning) @@ -22,7 +23,7 @@ /* out-of-line lock text */ .text.lock : AT(ADDR(.text.lock) - LOAD_OFFSET) { *(.text.lock) } -@@ -57,17 +63,10 @@ #endif +@@ -43,17 +49,10 @@ SECTIONS .data : AT(ADDR(.data) - LOAD_OFFSET) { *(.data) CONSTRUCTORS @@ -41,7 +42,7 @@ . = ALIGN(PAGE_SIZE); . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { -@@ -89,7 +88,7 @@ #define VVIRT_OFFSET (VSYSCALL_ADDR - VS +@@ -75,7 +74,7 @@ SECTIONS #define VVIRT(x) (ADDR(x) - VVIRT_OFFSET) . = VSYSCALL_ADDR; @@ -50,7 +51,7 @@ __vsyscall_0 = VSYSCALL_VIRT_ADDR; . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); -@@ -132,7 +131,7 @@ #undef VVIRT +@@ -118,7 +117,7 @@ SECTIONS . = ALIGN(8192); /* init_task */ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { *(.data.init_task) @@ -59,7 +60,7 @@ . = ALIGN(4096); .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { -@@ -222,6 +221,14 @@ SECTIONS +@@ -188,6 +187,14 @@ SECTIONS . = ALIGN(4096); __nosave_end = .; @@ -74,7 +75,7 @@ _end = . ; /* Sections to be discarded */ -@@ -235,4 +242,6 @@ #endif +@@ -201,4 +208,6 @@ SECTIONS STABS_DEBUG DWARF_DEBUG diff --git a/patches/linux-2.6.16.13/xen-hotplug.patch b/patches/linux-2.6.16.29/xen-hotplug.patch index 529cd568c1..06abdda41b 100644 --- a/patches/linux-2.6.16.13/xen-hotplug.patch +++ b/patches/linux-2.6.16.29/xen-hotplug.patch @@ -1,5 +1,6 @@ ---- ../pristine-linux-2.6.16.13/fs/proc/proc_misc.c 2006-05-02 22:38:44.000000000 +0100 -+++ ./fs/proc/proc_misc.c 2006-05-22 15:29:34.000000000 +0100 +diff -pruN ../orig-linux-2.6.16.29/fs/proc/proc_misc.c ./fs/proc/proc_misc.c +--- ../orig-linux-2.6.16.29/fs/proc/proc_misc.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./fs/proc/proc_misc.c 2006-09-19 14:06:00.000000000 +0100 @@ -433,7 +433,7 @@ static int show_stat(struct seq_file *p, (unsigned long long)cputime64_to_clock_t(irq), (unsigned long long)cputime64_to_clock_t(softirq), diff --git a/patches/linux-2.6.16.13/xenoprof-generic.patch b/patches/linux-2.6.16.29/xenoprof-generic.patch index 66b17ba2f3..6521fd7c7d 100644 --- a/patches/linux-2.6.16.13/xenoprof-generic.patch +++ b/patches/linux-2.6.16.29/xenoprof-generic.patch @@ -1,6 +1,6 @@ -diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.c ---- orig/drivers/oprofile/buffer_sync.c 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/buffer_sync.c 2006-07-06 18:19:05.000000000 -0700 +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/buffer_sync.c ./drivers/oprofile/buffer_sync.c +--- ../orig-linux-2.6.16.29/drivers/oprofile/buffer_sync.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/buffer_sync.c 2006-09-19 14:06:05.000000000 +0100 @@ -6,6 +6,10 @@ * * @author John Levon <levon@movementarian.org> @@ -12,7 +12,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. * This is the core of the buffer management. Each * CPU buffer is processed and entered into the * global event buffer. Such processing is necessary -@@ -275,15 +279,31 @@ +@@ -275,15 +279,31 @@ static void add_cpu_switch(int i) last_cookie = INVALID_COOKIE; } @@ -50,7 +50,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. static void add_user_ctx_switch(struct task_struct const * task, unsigned long cookie) { -@@ -348,9 +368,9 @@ +@@ -348,9 +368,9 @@ static int add_us_sample(struct mm_struc * for later lookup from userspace. */ static int @@ -62,7 +62,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. add_sample_entry(s->eip, s->event); return 1; } else if (mm) { -@@ -496,10 +516,11 @@ +@@ -496,10 +516,11 @@ void sync_buffer(int cpu) struct mm_struct *mm = NULL; struct task_struct * new; unsigned long cookie = 0; @@ -75,7 +75,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. down(&buffer_sem); -@@ -512,16 +533,18 @@ +@@ -512,16 +533,18 @@ void sync_buffer(int cpu) for (i = 0; i < available; ++i) { struct op_sample * s = &cpu_buf->buffer[cpu_buf->tail_pos]; @@ -99,7 +99,7 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. } else { struct mm_struct * oldmm = mm; -@@ -535,11 +558,16 @@ +@@ -535,11 +558,16 @@ void sync_buffer(int cpu) add_user_ctx_switch(new, cookie); } } else { @@ -121,9 +121,9 @@ diff -Naur orig/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync. } } } -diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c ---- orig/drivers/oprofile/cpu_buffer.c 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/cpu_buffer.c 2006-07-06 18:19:05.000000000 -0700 +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.c ./drivers/oprofile/cpu_buffer.c +--- ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/cpu_buffer.c 2006-09-19 14:06:05.000000000 +0100 @@ -6,6 +6,10 @@ * * @author John Levon <levon@movementarian.org> @@ -135,7 +135,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c * Each CPU has a local buffer that stores PC value/event * pairs. We also log context switches when we notice them. * Eventually each CPU's buffer is processed into the global -@@ -34,6 +38,8 @@ +@@ -34,6 +38,8 @@ static void wq_sync_buffer(void *); #define DEFAULT_TIMER_EXPIRE (HZ / 10) static int work_enabled; @@ -144,7 +144,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c void free_cpu_buffers(void) { int i; -@@ -58,7 +64,7 @@ +@@ -58,7 +64,7 @@ int alloc_cpu_buffers(void) goto fail; b->last_task = NULL; @@ -153,7 +153,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c b->tracing = 0; b->buffer_size = buffer_size; b->tail_pos = 0; -@@ -114,7 +120,7 @@ +@@ -114,7 +120,7 @@ void cpu_buffer_reset(struct oprofile_cp * collected will populate the buffer with proper * values to initialize the buffer */ @@ -162,7 +162,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c cpu_buf->last_task = NULL; } -@@ -164,13 +170,13 @@ +@@ -164,13 +170,13 @@ add_code(struct oprofile_cpu_buffer * bu * because of the head/tail separation of the writer and reader * of the CPU buffer. * @@ -180,7 +180,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c { struct task_struct * task; -@@ -181,18 +187,18 @@ +@@ -181,18 +187,18 @@ static int log_sample(struct oprofile_cp return 0; } @@ -206,7 +206,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c cpu_buf->last_task = task; add_code(cpu_buf, (unsigned long)task); } -@@ -269,6 +275,25 @@ +@@ -269,6 +275,25 @@ void oprofile_add_trace(unsigned long pc add_sample(cpu_buf, pc, 0); } @@ -232,10 +232,10 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c /* * This serves to avoid cpu buffer overflow, and makes sure * the task mortuary progresses -diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h ---- orig/drivers/oprofile/cpu_buffer.h 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/cpu_buffer.h 2006-07-06 18:19:05.000000000 -0700 -@@ -36,7 +36,7 @@ +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.h ./drivers/oprofile/cpu_buffer.h +--- ../orig-linux-2.6.16.29/drivers/oprofile/cpu_buffer.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/cpu_buffer.h 2006-09-19 14:06:05.000000000 +0100 +@@ -36,7 +36,7 @@ struct oprofile_cpu_buffer { volatile unsigned long tail_pos; unsigned long buffer_size; struct task_struct * last_task; @@ -244,7 +244,7 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h int tracing; struct op_sample * buffer; unsigned long sample_received; -@@ -51,7 +51,10 @@ +@@ -51,7 +51,10 @@ extern struct oprofile_cpu_buffer cpu_bu void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf); /* transient events for the CPU buffer -> event buffer */ @@ -257,10 +257,10 @@ diff -Naur orig/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h +#define CPU_DOMAIN_SWITCH 4 #endif /* OPROFILE_CPU_BUFFER_H */ -diff -Naur orig/drivers/oprofile/event_buffer.h new/drivers/oprofile/event_buffer.h ---- orig/drivers/oprofile/event_buffer.h 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/event_buffer.h 2006-07-06 18:19:05.000000000 -0700 -@@ -29,15 +29,20 @@ +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/event_buffer.h ./drivers/oprofile/event_buffer.h +--- ../orig-linux-2.6.16.29/drivers/oprofile/event_buffer.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/event_buffer.h 2006-09-19 14:06:05.000000000 +0100 +@@ -29,15 +29,20 @@ void wake_up_buffer_waiter(void); #define CPU_SWITCH_CODE 2 #define COOKIE_SWITCH_CODE 3 #define KERNEL_ENTER_SWITCH_CODE 4 @@ -282,9 +282,9 @@ diff -Naur orig/drivers/oprofile/event_buffer.h new/drivers/oprofile/event_buffe /* add data to the event buffer */ void add_event_entry(unsigned long data); -diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c ---- orig/drivers/oprofile/oprof.c 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/oprof.c 2006-07-06 18:19:05.000000000 -0700 +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprof.c ./drivers/oprofile/oprof.c +--- ../orig-linux-2.6.16.29/drivers/oprofile/oprof.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/oprof.c 2006-09-19 14:06:05.000000000 +0100 @@ -5,6 +5,10 @@ * @remark Read the file COPYING * @@ -305,7 +305,7 @@ diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c struct oprofile_operations oprofile_ops; unsigned long oprofile_started; -@@ -33,6 +37,32 @@ +@@ -33,6 +37,32 @@ static DECLARE_MUTEX(start_sem); */ static int timer = 0; @@ -338,10 +338,10 @@ diff -Naur orig/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c int oprofile_setup(void) { int err; -diff -Naur orig/drivers/oprofile/oprof.h new/drivers/oprofile/oprof.h ---- orig/drivers/oprofile/oprof.h 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/oprof.h 2006-07-06 18:19:05.000000000 -0700 -@@ -35,5 +35,8 @@ +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprof.h ./drivers/oprofile/oprof.h +--- ../orig-linux-2.6.16.29/drivers/oprofile/oprof.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/oprof.h 2006-09-19 14:06:05.000000000 +0100 +@@ -35,5 +35,8 @@ void oprofile_create_files(struct super_ void oprofile_timer_init(struct oprofile_operations * ops); int oprofile_set_backtrace(unsigned long depth); @@ -350,9 +350,9 @@ diff -Naur orig/drivers/oprofile/oprof.h new/drivers/oprofile/oprof.h +int oprofile_set_passive(int passive_domains[], unsigned int pdomains); #endif /* OPROF_H */ -diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_files.c ---- orig/drivers/oprofile/oprofile_files.c 2006-05-02 14:38:44.000000000 -0700 -+++ new/drivers/oprofile/oprofile_files.c 2006-07-06 18:19:05.000000000 -0700 +diff -pruN ../orig-linux-2.6.16.29/drivers/oprofile/oprofile_files.c ./drivers/oprofile/oprofile_files.c +--- ../orig-linux-2.6.16.29/drivers/oprofile/oprofile_files.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./drivers/oprofile/oprofile_files.c 2006-09-19 14:06:05.000000000 +0100 @@ -5,15 +5,21 @@ * @remark Read the file COPYING * @@ -376,7 +376,7 @@ diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_ unsigned long fs_buffer_size = 131072; unsigned long fs_cpu_buffer_size = 8192; unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */ -@@ -117,11 +123,202 @@ +@@ -117,11 +123,202 @@ static ssize_t dump_write(struct file * static struct file_operations dump_fops = { .write = dump_write, }; @@ -580,9 +580,9 @@ diff -Naur orig/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_ oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops); oprofilefs_create_ulong(sb, root, "buffer_size", &fs_buffer_size); oprofilefs_create_ulong(sb, root, "buffer_watershed", &fs_buffer_watershed); -diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h ---- orig/include/linux/oprofile.h 2006-05-02 14:38:44.000000000 -0700 -+++ new/include/linux/oprofile.h 2006-07-06 18:19:31.000000000 -0700 +diff -pruN ../orig-linux-2.6.16.29/include/linux/oprofile.h ./include/linux/oprofile.h +--- ../orig-linux-2.6.16.29/include/linux/oprofile.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/linux/oprofile.h 2006-09-19 14:06:05.000000000 +0100 @@ -16,6 +16,8 @@ #include <linux/types.h> #include <linux/spinlock.h> @@ -592,7 +592,7 @@ diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h struct super_block; struct dentry; -@@ -27,6 +29,11 @@ +@@ -27,6 +29,11 @@ struct oprofile_operations { /* create any necessary configuration files in the oprofile fs. * Optional. */ int (*create_files)(struct super_block * sb, struct dentry * root); @@ -604,7 +604,7 @@ diff -Naur orig/include/linux/oprofile.h new/include/linux/oprofile.h /* Do any necessary interrupt setup. Optional. */ int (*setup)(void); /* Do any necessary interrupt shutdown. Optional. */ -@@ -68,6 +75,8 @@ +@@ -68,6 +75,8 @@ void oprofile_add_pc(unsigned long pc, i /* add a backtrace entry, to be called from the ->backtrace callback */ void oprofile_add_trace(unsigned long eip); |