From: Planet-Lab Support <support@planet-lab.org>
Date: Thu, 6 Oct 2005 18:53:22 +0000 (+0000)
Subject: This commit was manufactured by cvs2svn to create tag
X-Git-Tag: before-andys-new-cpu-scheduler
X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=5caf0c9b520c42e6154eda8951a8a6e857494285;p=linux-2.6.git

This commit was manufactured by cvs2svn to create tag
'before-andys-new-cpu-scheduler'.
---

diff --git a/Makefile b/Makefile
index 1771b7dfd..ab6aae1dc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 12
-EXTRAVERSION = -1.1_1398_FC4.1.planetlab
+EXTRAVERSION = -1.1_1390_FC4.1.planetlab
 NAME=Woozy Numbat
 
 # *DOCUMENTATION*
diff --git a/arch/xen/i386/kernel/Makefile b/arch/xen/i386/kernel/Makefile
index 0edd0f45b..d047f36f2 100644
--- a/arch/xen/i386/kernel/Makefile
+++ b/arch/xen/i386/kernel/Makefile
@@ -88,8 +88,8 @@ $(obj)/vsyscall-syms.o: $(obj)/vsyscall.lds \
 	$(call if_changed,syscall)
 
 c-link	:= init_task.o
-s-link	:= vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o # \
-		# vsyscall-note.o MEF: looks like this should not be here.
+s-link	:= vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o \
+		vsyscall-note.o
 
 $(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)):
 	@ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@
diff --git a/configs/kernel-2.6.12-i686-planetlab.config b/configs/kernel-2.6.12-i686-planetlab.config
index 241cc9b18..0e3ae6456 100644
--- a/configs/kernel-2.6.12-i686-planetlab.config
+++ b/configs/kernel-2.6.12-i686-planetlab.config
@@ -1408,8 +1408,7 @@ CONFIG_VSERVER_LEGACY=y
 # CONFIG_VSERVER_NGNET is not set
 # CONFIG_VSERVER_PROC_SECURE is not set
 CONFIG_VSERVER_HARDCPU=y
-CONFIG_VSERVER_HARDCPU_IDLE=y
-CONFIG_VSERVER_ACB_SCHED=y
+# CONFIG_VSERVER_HARDCPU_IDLE is not set
 # CONFIG_INOXID_NONE is not set
 # CONFIG_INOXID_UID16 is not set
 # CONFIG_INOXID_GID16 is not set
diff --git a/configs/kernel-2.6.12-i686-smp-planetlab.config b/configs/kernel-2.6.12-i686-smp-planetlab.config
index 951cd20bb..737aeae2f 100644
--- a/configs/kernel-2.6.12-i686-smp-planetlab.config
+++ b/configs/kernel-2.6.12-i686-smp-planetlab.config
@@ -1417,8 +1417,7 @@ CONFIG_VSERVER_LEGACY=y
 # CONFIG_VSERVER_NGNET is not set
 # CONFIG_VSERVER_PROC_SECURE is not set
 CONFIG_VSERVER_HARDCPU=y
-CONFIG_VSERVER_HARDCPU_IDLE=y
-CONFIG_VSERVER_ACB_SCHED=y
+# CONFIG_VSERVER_HARDCPU_IDLE is not set
 # CONFIG_INOXID_NONE is not set
 # CONFIG_INOXID_UID16 is not set
 # CONFIG_INOXID_GID16 is not set
diff --git a/configs/kernel-2.6.12-i686-uml-planetlab.config b/configs/kernel-2.6.12-i686-uml-planetlab.config
index 8c4a0e9d9..3fca3ea2e 100644
--- a/configs/kernel-2.6.12-i686-uml-planetlab.config
+++ b/configs/kernel-2.6.12-i686-uml-planetlab.config
@@ -489,8 +489,7 @@ CONFIG_VSERVER_LEGACY=y
 # CONFIG_VSERVER_NGNET is not set
 # CONFIG_VSERVER_PROC_SECURE is not set
 CONFIG_VSERVER_HARDCPU=y
-CONFIG_VSERVER_HARDCPU_IDLE=y
-CONFIG_VSERVER_ACB_SCHED=y
+# CONFIG_VSERVER_HARDCPU_IDLE is not set
 # CONFIG_INOXID_NONE is not set
 # CONFIG_INOXID_UID16 is not set
 # CONFIG_INOXID_GID16 is not set
diff --git a/configs/kernel-2.6.12-i686-xenU-planetlab.config b/configs/kernel-2.6.12-i686-xenU-planetlab.config
index 047237ddf..3dc4820ee 100644
--- a/configs/kernel-2.6.12-i686-xenU-planetlab.config
+++ b/configs/kernel-2.6.12-i686-xenU-planetlab.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12-1.1_1390_FC4.1.planetlab
-# Wed Sep  7 22:43:27 2005
+# Linux kernel version: 2.6.12-1.1_1390_FC4.1.planetlab.2005.08.04
+# Tue Aug  9 17:29:22 2005
 #
 CONFIG_XEN=y
 CONFIG_ARCH_XEN=y
@@ -49,6 +49,7 @@ CONFIG_KOBJECT_UEVENT=y
 CONFIG_OOM_PANIC=y
 CONFIG_CPUSETS=y
 # CONFIG_EMBEDDED is not set
+# CONFIG_DELAY_ACCT is not set
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -417,6 +418,8 @@ CONFIG_IP_NF_TARGET_NOTRACK=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
+# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
 # CONFIG_IP_NF_CT_PROTO_GRE is not set
 
 #
@@ -467,7 +470,7 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_ULOG=m
-CONFIG_VNET=m
+# CONFIG_VNET is not set
 CONFIG_XFRM=y
 CONFIG_XFRM_USER=y
 
@@ -751,6 +754,7 @@ CONFIG_TMPFS_SECURITY=y
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
 
 #
 # Miscellaneous filesystems
@@ -899,8 +903,7 @@ CONFIG_VSERVER_LEGACY=y
 # CONFIG_VSERVER_NGNET is not set
 CONFIG_VSERVER_PROC_SECURE=y
 CONFIG_VSERVER_HARDCPU=y
-CONFIG_VSERVER_HARDCPU_IDLE=y
-CONFIG_VSERVER_ACB_SCHED=y
+# CONFIG_VSERVER_HARDCPU_IDLE is not set
 # CONFIG_INOXID_NONE is not set
 # CONFIG_INOXID_UID16 is not set
 # CONFIG_INOXID_GID16 is not set
diff --git a/include/linux/vs_sched.h b/include/linux/vs_sched.h
index aa0ff7103..42fca7de7 100644
--- a/include/linux/vs_sched.h
+++ b/include/linux/vs_sched.h
@@ -13,18 +13,6 @@
 #define MAX_PRIO_BIAS		 20
 #define MIN_PRIO_BIAS		-20
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-
-#define VX_INVALID_TICKS        -1000000
-#define IS_BEST_EFFORT(vxi)     (vx_info_flags(vxi, VXF_SCHED_SHARE, 0))
-
-int vx_tokens_avail(struct vx_info *vxi);
-void vx_consume_token(struct vx_info *vxi);
-void vx_scheduler_tick(void);
-void vx_advance_best_effort_ticks(int ticks);
-void vx_advance_guaranteed_ticks(int ticks);
-
-#else
 
 static inline int vx_tokens_avail(struct vx_info *vxi)
 {
@@ -36,8 +24,6 @@ static inline void vx_consume_token(struct vx_info *vxi)
 	atomic_dec(&vxi->sched.tokens);
 }
 
-#endif /* CONFIG_VSERVER_ACB_SCHED */
-
 static inline int vx_need_resched(struct task_struct *p)
 {
 #ifdef	CONFIG_VSERVER_HARDCPU
diff --git a/include/linux/vserver/context.h b/include/linux/vserver/context.h
index 48ed9ca53..79f90537f 100644
--- a/include/linux/vserver/context.h
+++ b/include/linux/vserver/context.h
@@ -24,8 +24,7 @@
 #define VXF_SCHED_HARD		0x00000100
 #define VXF_SCHED_PRIO		0x00000200
 #define VXF_SCHED_PAUSE		0x00000400
-#define VXF_SCHED_SHARE         0x00000800
- 
+
 #define VXF_VIRT_MEM		0x00010000
 #define VXF_VIRT_UPTIME		0x00020000
 #define VXF_VIRT_CPU		0x00040000
diff --git a/include/linux/vserver/sched_def.h b/include/linux/vserver/sched_def.h
index 4d915a2e4..3a577616f 100644
--- a/include/linux/vserver/sched_def.h
+++ b/include/linux/vserver/sched_def.h
@@ -15,26 +15,9 @@ struct _vx_ticks {
 	uint64_t unused[5];		/* cacheline ? */
 };
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-enum {
-// Different scheduling classes
-    SCH_GUARANTEE = 0,
-    SCH_BEST_EFFORT = 1,
-    SCH_NUM_CLASSES = 2,
-// States
-    SCH_UNINITIALIZED,
-    SCH_INITIALIZED,
-};
-#endif
-
 /* context sub struct */
 
 struct _vx_sched {
-#ifdef CONFIG_VSERVER_ACB_SCHED
-        uint64_t ticks[SCH_NUM_CLASSES];
-        uint64_t last_ticks[SCH_NUM_CLASSES];
-        int      state[SCH_NUM_CLASSES];
-#endif
 	atomic_t tokens;		/* number of CPU tokens */
 	spinlock_t tokens_lock;		/* lock for token bucket */
 
diff --git a/kernel/sched.c b/kernel/sched.c
index 4e10dc63a..daf0319ea 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2453,10 +2453,6 @@ void scheduler_tick(void)
 
 	rq->timestamp_last_tick = now;
 
-#if defined(CONFIG_VSERVER_HARDCPU) && defined(CONFIG_VSERVER_ACB_SCHED) 
-	vx_scheduler_tick();
-#endif
-
 	if (p == rq->idle) {
 		if (wake_priority_sleeper(rq))
 			goto out;
@@ -2715,10 +2711,6 @@ asmlinkage void __sched schedule(void)
 	struct vx_info *vxi;
 #ifdef	CONFIG_VSERVER_HARDCPU
 	int maxidle = -HZ;
-# ifdef CONFIG_VSERVER_ACB_SCHED
-        int min_guarantee_ticks = VX_INVALID_TICKS;
-        int min_best_effort_ticks = VX_INVALID_TICKS;
-# endif
 #endif
 	int cpu, idx;
 
@@ -2789,9 +2781,6 @@ need_resched_nonpreemptible:
 	}
 
 #ifdef CONFIG_VSERVER_HARDCPU
-# ifdef CONFIG_VSERVER_ACB_SCHED
-drain_hold_queue:
-# endif	
 	if (!list_empty(&rq->hold_queue)) {
 		struct list_head *l, *n;
 		int ret;
@@ -2811,17 +2800,6 @@ drain_hold_queue:
 			}
 			if ((ret < 0) && (maxidle < ret))
 				maxidle = ret;
-# ifdef CONFIG_VSERVER_ACB_SCHED
-			if (ret < 0) {
-			        if (IS_BEST_EFFORT(vxi)) {
-				        if (min_best_effort_ticks < ret) 
-					        min_best_effort_ticks = ret;
-				} else {
-				        if (min_guarantee_ticks < ret)
-					        min_guarantee_ticks = ret;
-				}
-			}
-# endif
 		}
 	}
 	rq->idle_tokens = -maxidle;
@@ -2882,19 +2860,8 @@ go_idle:
 		int ret = vx_tokens_recalc(vxi);
 
 		if (unlikely(ret <= 0)) {
-			if (ret) {
-			        if ((rq->idle_tokens > -ret))
-				        rq->idle_tokens = -ret;
-# ifdef CONFIG_VSERVER_ACB_SCHED
-				if (IS_BEST_EFFORT(vxi)) {
-				        if (min_best_effort_ticks < ret) 
-					        min_best_effort_ticks = ret;
-				} else {
-				        if (min_guarantee_ticks < ret)
-					        min_guarantee_ticks = ret;
-				}
-# endif
-			}
+			if (ret && (rq->idle_tokens > -ret))
+				rq->idle_tokens = -ret;
 			vx_hold_task(vxi, next, rq);
 			goto pick_next;
 		}
@@ -2918,18 +2885,6 @@ go_idle:
 	}
 	next->activated = 0;
 switch_tasks:
-#if defined(CONFIG_VSERVER_HARDCPU) && defined(CONFIG_VSERVER_ACB_SCHED)
-	if (next == rq->idle && !list_empty(&rq->hold_queue)) {
-	        if (min_best_effort_ticks != VX_INVALID_TICKS) {
-		        vx_advance_best_effort_ticks(-min_best_effort_ticks);
-			goto drain_hold_queue;
-		} 
-		if (min_guarantee_ticks != VX_INVALID_TICKS) {
-		        vx_advance_guaranteed_ticks(-min_guarantee_ticks);
-			goto drain_hold_queue;
-		}
-	}
-#endif
 	if (next == rq->idle)
 		schedstat_inc(rq, sched_goidle);
 	prefetch(next);
diff --git a/kernel/vserver/Kconfig b/kernel/vserver/Kconfig
index b4ee9b6c3..f8207296e 100644
--- a/kernel/vserver/Kconfig
+++ b/kernel/vserver/Kconfig
@@ -101,13 +101,6 @@ config	VSERVER_HARDCPU_IDLE
 	  This might improve interactivity and latency, but
 	  will also marginally increase scheduling overhead.
 
-config	VSERVER_ACB_SCHED
-	bool	"Guaranteed/fair share scheduler"
-	depends on VSERVER_HARDCPU
-	default n
-	help
-	  Andy Bavier's experimental scheduler
-
 choice
 	prompt	"Persistent Inode Context Tagging"
 	default	INOXID_UGID24
diff --git a/kernel/vserver/sched.c b/kernel/vserver/sched.c
index e978e7a6b..60f3c6ac5 100644
--- a/kernel/vserver/sched.c
+++ b/kernel/vserver/sched.c
@@ -19,120 +19,6 @@
 #include <asm/errno.h>
 #include <asm/uaccess.h>
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-
-#define TICK_SCALE 1000
-#define TICKS_PER_TOKEN(vxi) \
-        ((vxi->sched.interval * TICK_SCALE) / vxi->sched.fill_rate)
-#define CLASS(vxi) \
-    (IS_BEST_EFFORT(vxi) ? SCH_BEST_EFFORT : SCH_GUARANTEE)
-#define GLOBAL_TICKS(vxi) \
-    (IS_BEST_EFFORT(vxi) ? vx_best_effort_ticks : vx_guaranteed_ticks)
-
-uint64_t vx_guaranteed_ticks = 0;
-uint64_t vx_best_effort_ticks = 0;
-
-void vx_tokens_set(struct vx_info *vxi, int tokens) {
-    int class = CLASS(vxi);
-
-    vxi->sched.ticks[class] = GLOBAL_TICKS(vxi);
-    vxi->sched.ticks[class] -=	tokens * TICKS_PER_TOKEN(vxi);
-}
-
-void vx_scheduler_tick(void) {
-    vx_guaranteed_ticks += TICK_SCALE;
-    vx_best_effort_ticks += TICK_SCALE;
-}
-
-void vx_advance_best_effort_ticks(int ticks) {
-    vx_best_effort_ticks += TICK_SCALE * ticks;
-}
-
-void vx_advance_guaranteed_ticks(int ticks) {
-    vx_guaranteed_ticks += TICK_SCALE * ticks;
-}
-
-int vx_tokens_avail(struct vx_info *vxi)
-{
-    uint64_t diff;
-    int tokens;
-    long rem;
-    int class = CLASS(vxi);
-
-    if (vxi->sched.state[class] == SCH_UNINITIALIZED) {
-	/* Set the "real" token count */
-	tokens = atomic_read(&vxi->sched.tokens);
-	vx_tokens_set(vxi, tokens);
-	vxi->sched.state[class] = SCH_INITIALIZED;
-	goto out;
-    } 
-
-    if (vxi->sched.last_ticks[class] == GLOBAL_TICKS(vxi)) {
-	tokens = atomic_read(&vxi->sched.tokens);
-	goto out;
-    }
-
-    /* Use of fixed-point arithmetic in these calculations leads to
-     * some limitations.  These should be made explicit.
-     */
-    diff = GLOBAL_TICKS(vxi) - vxi->sched.ticks[class];
-    tokens = div_long_long_rem(diff, TICKS_PER_TOKEN(vxi), &rem);
-
-    if (tokens > vxi->sched.tokens_max) {
-	vx_tokens_set(vxi, vxi->sched.tokens_max);
-	tokens = vxi->sched.tokens_max;
-    }
-
-    atomic_set(&vxi->sched.tokens, tokens);
-
-out:
-    vxi->sched.last_ticks[class] = GLOBAL_TICKS(vxi);
-    return tokens;
-}
-
-void vx_consume_token(struct vx_info *vxi)
-{
-    int class = CLASS(vxi);
-
-    vxi->sched.ticks[class] += TICKS_PER_TOKEN(vxi);
-}
-
-/*
- * recalculate the context's scheduling tokens
- *
- * ret > 0 : number of tokens available
- * ret = 0 : context is paused
- * ret < 0 : number of jiffies until new tokens arrive
- *
- */
-int vx_tokens_recalc(struct vx_info *vxi)
-{
-        long delta, tokens;
-
-	if (vx_info_flags(vxi, VXF_SCHED_PAUSE, 0))
-		/* we are paused */
-		return 0;
-
-	tokens = vx_tokens_avail(vxi);
-	if (tokens <= 0)
-	    vxi->vx_state |= VXS_ONHOLD;
-	if (tokens < vxi->sched.tokens_min) {
-	    delta = tokens - vxi->sched.tokens_min;
-	    /* enough tokens will be available in */
-	    return (delta * vxi->sched.interval) / vxi->sched.fill_rate;
-	}
-
-	/* we have some tokens left */
-	if (vx_info_state(vxi, VXS_ONHOLD) &&
-		(tokens >= vxi->sched.tokens_min))
-		vxi->vx_state &= ~VXS_ONHOLD;
-	if (vx_info_state(vxi, VXS_ONHOLD))
-		tokens -= vxi->sched.tokens_min;
-
-	return tokens;
-}
-
-#else
 
 /*
  * recalculate the context's scheduling tokens
@@ -195,8 +81,6 @@ int vx_tokens_recalc(struct vx_info *vxi)
 	return tokens;
 }
 
-#endif /* CONFIG_VSERVER_ACB_SCHED */
-
 /*
  * effective_prio - return the priority that is based on the static
  * priority but is modified by bonuses/penalties.
@@ -275,10 +159,6 @@ int vc_set_sched_v2(uint32_t xid, void __user *data)
 	if (vxi->sched.tokens_min > vxi->sched.tokens_max)
 		vxi->sched.tokens_min = vxi->sched.tokens_max;
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-	vx_tokens_set(vxi, atomic_read(&vxi->sched.tokens));
-#endif
-
 	spin_unlock(&vxi->sched.tokens_lock);
 	put_vx_info(vxi);
 	return 0;
@@ -331,10 +211,6 @@ int vc_set_sched(uint32_t xid, void __user *data)
 	if (vxi->sched.priority_bias < MIN_PRIO_BIAS)
 		vxi->sched.priority_bias = MIN_PRIO_BIAS;
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-	vx_tokens_set(vxi, atomic_read(&vxi->sched.tokens));
-#endif
-
 	spin_unlock(&vxi->sched.tokens_lock);
 	put_vx_info(vxi);
 	return 0;
diff --git a/kernel/vserver/sched_init.h b/kernel/vserver/sched_init.h
index 6724c286f..90d13960f 100644
--- a/kernel/vserver/sched_init.h
+++ b/kernel/vserver/sched_init.h
@@ -11,14 +11,6 @@ static inline void vx_info_init_sched(struct _vx_sched *sched)
 	sched->jiffies		= jiffies;
 	sched->tokens_lock	= SPIN_LOCK_UNLOCKED;
 
-#ifdef CONFIG_VSERVER_ACB_SCHED
-	/* We can't set the "real" token count here because we don't have
-	 * access to the vx_info struct.  Do it later... */
-	for (i = 0; i < SCH_NUM_CLASSES; i++) {
-	    sched->state[i] = SCH_UNINITIALIZED;
-	}
-#endif
-
 	atomic_set(&sched->tokens, HZ >> 2);
 	sched->cpus_allowed	= CPU_MASK_ALL;
 	sched->priority_bias	= 0;
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 03189967d..0fe94ef35 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -111,6 +111,7 @@ static int ip_dev_loopback_xmit(struct sk_buff *newskb)
 #ifdef CONFIG_NETFILTER_DEBUG
 	nf_debug_ip_loopback_xmit(newskb);
 #endif
+	nf_reset(newskb);
 	netif_rx(newskb);
 	return 0;
 }
@@ -195,6 +196,14 @@ static inline int ip_finish_output2(struct sk_buff *skb)
 	nf_debug_ip_finish_output2(skb);
 #endif /*CONFIG_NETFILTER_DEBUG*/
 
+#ifdef CONFIG_BRIDGE_NETFILTER
+	/* bridge-netfilter defers calling some IP hooks to the bridge layer
+	 * and still needs the conntrack reference.
+	 */
+	if (skb->nf_bridge == NULL)
+#endif
+		nf_reset(skb);
+
 	if (hh) {
 		int hh_alen;
 
diff --git a/net/ipv4/netfilter/ip_conntrack_standalone.c b/net/ipv4/netfilter/ip_conntrack_standalone.c
index 084d4ef53..83a668c87 100644
--- a/net/ipv4/netfilter/ip_conntrack_standalone.c
+++ b/net/ipv4/netfilter/ip_conntrack_standalone.c
@@ -442,13 +442,6 @@ static unsigned int ip_conntrack_defrag(unsigned int hooknum,
 				        const struct net_device *out,
 				        int (*okfn)(struct sk_buff *))
 {
-#if !defined(CONFIG_IP_NF_NAT) && !defined(CONFIG_IP_NF_NAT_MODULE)
-	/* Previously seen (loopback)?  Ignore.  Do this before
-           fragment check. */
-	if ((*pskb)->nfct)
-		return NF_ACCEPT;
-#endif
-
 	/* Gather fragments. */
 	if ((*pskb)->nh.iph->frag_off & htons(IP_MF|IP_OFFSET)) {
 		*pskb = ip_ct_gather_frags(*pskb,
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 10a79da10..2cd6d2972 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -274,9 +274,6 @@ static int packet_rcv_spkt(struct sk_buff *skb, struct net_device *dev,  struct
 	dst_release(skb->dst);
 	skb->dst = NULL;
 
-	/* drop conntrack reference */
-	nf_reset(skb);
-
 	spkt = (struct sockaddr_pkt*)skb->cb;
 
 	skb_push(skb, skb->data-skb->mac.raw);
@@ -526,9 +523,6 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,  struct packe
 	dst_release(skb->dst);
 	skb->dst = NULL;
 
-	/* drop conntrack reference */
-	nf_reset(skb);
-
 	spin_lock(&sk->sk_receive_queue.lock);
 	po->stats.tp_packets++;
 	__skb_queue_tail(&sk->sk_receive_queue, skb);
diff --git a/scripts/kernel-2.6-planetlab.spec b/scripts/kernel-2.6-planetlab.spec
index 40851859e..0a2d12c24 100644
--- a/scripts/kernel-2.6-planetlab.spec
+++ b/scripts/kernel-2.6-planetlab.spec
@@ -62,9 +62,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 #
 # The ld.so.conf.d file we install uses syntax older ldconfig's don't grok.
 #
-
-# MEF commented out
-# %define xen_conflicts glibc < 2.3.5-1
+%define xen_conflicts glibc < 2.3.5-1
 
 #
 # Packages that need to be installed before the kernel is, because the %post
@@ -191,10 +189,7 @@ Prereq: %{kernel_prereq}
 Conflicts: %{kernel_dot_org_conflicts}
 Conflicts: %{package_conflicts}
 Conflicts: %{nptl_conflicts}
-
-# MEF commented out 
-# Conflicts: %{xen_conflicts}
-
+Conflicts: %{xen_conflicts}
 # We can't let RPM do the dependencies automatic because it'll then pick up
 # a correct but undesirable perl dependency from the module headers which
 # isn't required for the kernel proper to function
@@ -370,11 +365,8 @@ BuildKernel() {
     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
     (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
     # first copy everything
-    cp --parents `find  -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build 
+    cp --parents `find  -type f -name Makefile -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build 
     cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
-    if [ "$1" = "uml" ] ; then
-      cp --parents -a `find arch/um -name include` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
-    fi
     # then drop all but the needed Makefiles/Kconfig files
     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
@@ -396,11 +388,6 @@ BuildKernel() {
 %if %{buildxen}
     cp -a asm-xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
 %endif
-    if [ "$1" = "uml" ] ; then
-      cd asm	
-      cp -a `readlink arch` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
-      cd ..
-    fi
     cp -a `readlink asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
     # Make sure the Makefile and version.h have a matching timestamp so that
     # external modules can be built