--- olpc-2.6-master.00/arch/alpha/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/alpha/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -644,6 +644,8 @@ source "arch/alpha/oprofile/Kconfig"
 
 source "arch/alpha/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/arm/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/arm/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -995,6 +995,8 @@ source "arch/arm/oprofile/Kconfig"
 
 source "arch/arm/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/arm26/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/arm26/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -246,6 +246,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/arm26/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/cris/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/cris/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -200,6 +200,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/cris/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/h8300/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/h8300/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -214,6 +214,8 @@ source "fs/Kconfig"
 
 source "arch/h8300/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/i386/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/i386/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -1284,6 +1284,8 @@ endmenu
 
 source "arch/i386/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/ia64/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/ia64/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -576,6 +576,8 @@ endmenu
 
 source "arch/ia64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/m68k/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/m68k/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -669,6 +669,8 @@ source "fs/Kconfig"
 
 source "arch/m68k/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/m68knommu/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/m68knommu/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -678,6 +678,8 @@ source "fs/Kconfig"
 
 source "arch/m68knommu/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/mips/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/mips/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -2127,6 +2127,8 @@ source "arch/mips/oprofile/Kconfig"
 
 source "arch/mips/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/parisc/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/parisc/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -271,6 +271,8 @@ source "arch/parisc/oprofile/Kconfig"
 
 source "arch/parisc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/powerpc/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/powerpc/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -1250,6 +1250,8 @@ endmenu
 
 source "arch/powerpc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 config KEYS_COMPAT
--- olpc-2.6-master.00/arch/ppc/Kconfig	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/ppc/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -1455,6 +1455,8 @@ source "arch/powerpc/oprofile/Kconfig"
 
 source "arch/ppc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/s390/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/s390/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -550,6 +550,8 @@ endmenu
 
 source "arch/s390/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/sh/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/sh/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -705,6 +705,8 @@ source "arch/sh/oprofile/Kconfig"
 
 source "arch/sh/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/sparc/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/sparc/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -310,6 +310,8 @@ endmenu
 
 source "arch/sparc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/sparc64/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/sparc64/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -443,6 +443,8 @@ endmenu
 
 source "arch/sparc64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/um/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/um/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -314,6 +314,8 @@ source "drivers/connector/Kconfig"
 
 source "fs/Kconfig"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/v850/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/v850/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -337,6 +337,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/v850/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/arch/x86_64/Kconfig	2007-02-28 20:05:26.000000000 -0500
+++ olpc-2.6-master-vs22x.02/arch/x86_64/Kconfig	2007-03-01 11:52:20.000000000 -0500
@@ -753,6 +753,8 @@ endmenu
 
 source "arch/x86_64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- olpc-2.6-master.00/include/linux/capability.h	2007-02-28 20:05:28.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/capability.h	2007-03-01 11:52:20.000000000 -0500
@@ -235,6 +235,7 @@ typedef __u32 kernel_cap_t;
    arbitrary SCSI commands */
 /* Allow setting encryption key on loopback filesystem */
 /* Allow setting zone reclaim policy */
+/* Allow the selection of a security context */
 
 #define CAP_SYS_ADMIN        21
 
--- olpc-2.6-master.00/include/linux/capability.h	2007-02-28 20:05:28.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/capability.h	2007-03-01 11:52:20.000000000 -0500
@@ -288,6 +289,11 @@ typedef __u32 kernel_cap_t;
 
 #define CAP_AUDIT_CONTROL    30
 
+/* Allow context manipulations */
+/* Allow changing context info on files */
+
+#define CAP_CONTEXT	     31
+
 #ifdef __KERNEL__
 /* 
  * Bounding set
--- olpc-2.6-master.00/include/linux/init_task.h	2007-02-28 20:05:28.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/init_task.h	2007-03-01 11:52:20.000000000 -0500
@@ -141,6 +141,10 @@ extern struct group_info init_groups;
 	.pi_lock	= SPIN_LOCK_UNLOCKED,				\
 	INIT_TRACE_IRQFLAGS						\
 	INIT_LOCKDEP							\
+	.xid		= 0,						\
+	.vx_info	= NULL,						\
+	.nid		= 0,						\
+	.nx_info	= NULL,						\
 }
 
 
--- olpc-2.6-master.00/include/linux/percpu.h	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/percpu.h	2007-03-01 11:52:20.000000000 -0500
@@ -11,7 +11,7 @@
 
 /* Enough to cover all DEFINE_PER_CPUs in kernel, including modules. */
 #ifndef PERCPU_ENOUGH_ROOM
-#define PERCPU_ENOUGH_ROOM 32768
+#define PERCPU_ENOUGH_ROOM 65536
 #endif
 
 /*
--- olpc-2.6-master.00/include/linux/sched.h	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/sched.h	2007-03-01 11:52:20.000000000 -0500
@@ -949,6 +957,14 @@ struct task_struct {
 	
 	void *security;
 	struct audit_context *audit_context;
+
+/* vserver context data */
+	struct vx_info *vx_info;
+	struct nx_info *nx_info;
+
+	xid_t xid;
+	nid_t nid;
+
 	seccomp_t seccomp;
 
 /* Thread group tracking */
--- olpc-2.6-master.00/include/linux/types.h	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/types.h	2007-03-01 11:52:20.000000000 -0500
@@ -39,6 +39,9 @@ typedef __kernel_uid32_t	uid_t;
 typedef __kernel_gid32_t	gid_t;
 typedef __kernel_uid16_t        uid16_t;
 typedef __kernel_gid16_t        gid16_t;
+typedef unsigned int		xid_t;
+typedef unsigned int		nid_t;
+typedef unsigned int		tag_t;
 
 #ifdef CONFIG_UID16
 /* This is defined by include/asm-{arch}/posix_types.h */
--- olpc-2.6-master.00/include/linux/vserver/global.h	1969-12-31 19:00:00.000000000 -0500
+++ olpc-2.6-master-vs22x.02/include/linux/vserver/global.h	2007-03-01 11:52:20.000000000 -0500
@@ -0,0 +1,18 @@
+#ifndef _VX_GLOBAL_H
+#define _VX_GLOBAL_H
+
+
+extern atomic_t vx_global_ctotal;
+extern atomic_t vx_global_cactive;
+
+extern atomic_t nx_global_ctotal;
+extern atomic_t nx_global_cactive;
+
+extern atomic_t vs_global_nsproxy;
+extern atomic_t vs_global_fs;
+extern atomic_t vs_global_mnt_ns;
+extern atomic_t vs_global_uts_ns;
+extern atomic_t vs_global_ipc_ns;
+
+
+#endif /* _VX_GLOBAL_H */
--- olpc-2.6-master.00/kernel/exit.c	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/exit.c	2007-03-01 11:52:20.000000000 -0500
@@ -940,6 +956,8 @@ fastcall NORET_TYPE void do_exit(long co
 	tsk->exit_code = code;
 	proc_exit_connector(tsk);
 	exit_task_namespaces(tsk);
+	/* needs to stay before exit_notify() */
+	exit_vx_info_early(tsk, code);
 	exit_notify(tsk);
 #ifdef CONFIG_NUMA
 	mpol_free(tsk->mempolicy);
--- olpc-2.6-master.00/kernel/exit.c	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/exit.c	2007-03-01 11:52:20.000000000 -0500
@@ -964,6 +984,10 @@ fastcall NORET_TYPE void do_exit(long co
 	if (tsk->splice_pipe)
 		__free_pipe_info(tsk->splice_pipe);
 
+	/* needs to stay after exit_notify() */
+	exit_vx_info(tsk, code);
+	exit_nx_info(tsk);
+
 	preempt_disable();
 	/* causes final put_task_struct in finish_task_switch(). */
 	tsk->state = TASK_DEAD;
--- olpc-2.6-master.00/kernel/Makefile	2007-02-28 20:05:29.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/Makefile	2007-03-01 11:52:20.000000000 -0500
@@ -10,6 +10,8 @@ obj-y     = sched.o fork.o exec_domain.o
 	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
 	    hrtimer.o rwsem.o latency.o nsproxy.o srcu.o
 
+obj-y	  += vserver/
+
 obj-$(CONFIG_STACKTRACE) += stacktrace.o
 obj-y += time/
 obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
--- olpc-2.6-master.00/kernel/vserver/init.c	1969-12-31 19:00:00.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/vserver/init.c	2007-03-01 11:52:20.000000000 -0500
@@ -0,0 +1,47 @@
+/*
+ *  linux/kernel/init.c
+ *
+ *  Virtual Server Init
+ *
+ *  Copyright (C) 2004-2005  Herbert Pötzl
+ *
+ *  V0.01  basic structure
+ *
+ */
+
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/module.h>
+
+int	vserver_register_sysctl(void);
+void	vserver_unregister_sysctl(void);
+
+
+static int __init init_vserver(void)
+{
+	int ret = 0;
+
+#ifdef	CONFIG_VSERVER_DEBUG
+	vserver_register_sysctl();
+#endif
+	return ret;
+}
+
+
+static void __exit exit_vserver(void)
+{
+
+#ifdef	CONFIG_VSERVER_DEBUG
+	vserver_unregister_sysctl();
+#endif
+	return;
+}
+
+/* FIXME: GFP_ZONETYPES gone
+long vx_slab[GFP_ZONETYPES]; */
+long vx_area;
+
+
+module_init(init_vserver);
+module_exit(exit_vserver);
+
--- olpc-2.6-master.00/kernel/vserver/Kconfig	1969-12-31 19:00:00.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/vserver/Kconfig	2007-03-01 17:09:59.000000000 -0500
@@ -0,0 +1,236 @@
+#
+# Linux VServer configuration
+#
+
+menu "Linux VServer"
+
+config	VSERVER_AUTO_LBACK
+	bool	"Automatically Assign Loopback IP"
+	default y
+	help
+	  Automatically assign a guest specific loopback
+	  IP and add it to the kernel network stack on startup.
+
+config	VSERVER_SINGLE_IP
+	bool	"Single IP Special Casing"
+	depends on EXPERIMENTAL && !VSERVER_AUTO_LBACK
+	default n
+	help
+	  This allows to have network contexts with a single
+	  IP to remap 0.0.0.0 bindings to that IP, avoiding
+	  further network checks and improving performance.
+
+	  (note: such guests do not allow to change the ip
+	   on the fly and do not show loopback addresses)
+
+config	VSERVER_COWBL
+	bool	"Enable COW Immutable Link Breaking"
+	default y
+	help
+	  This enables the COW (Copy-On-Write) link break code.
+	  It allows you to treat unified files like normal files
+	  when writing to them (which will implicitely break the
+	  link and create a copy of the unified file)
+
+config	VSERVER_VTIME
+	bool	"Enable Virtualized Guest Time"
+	depends on EXPERIMENTAL
+	default n
+	help
+	  This enables per guest time offsets to allow for
+	  adjusting the system clock individually per guest.
+	  this adds some overhead to the time functions and
+	  therefore should not be enabled without good reason.
+
+config	VSERVER_PROC_SECURE
+	bool	"Enable Proc Security"
+	depends on PROC_FS
+	default y
+	help
+	  This configures ProcFS security to initially hide
+	  non-process entries for all contexts except the main and
+	  spectator context (i.e. for all guests), which is a secure
+	  default.
+
+	  (note: on 1.2x the entries were visible by default)
+
+config	VSERVER_HARDCPU
+	bool	"Enable Hard CPU Limits"
+	default n
+	help
+	  Activate the Hard CPU Limits
+
+	  This will compile in code that allows the Token Bucket
+	  Scheduler to put processes on hold when a context's
+	  tokens are depleted (provided that its per-context
+	  sched_hard flag is set).
+
+	  Processes belonging to that context will not be able
+	  to consume CPU resources again until a per-context
+	  configured minimum of tokens has been reached.
+
+config	VSERVER_IDLETIME
+	bool	"Avoid idle CPUs by skipping Time"
+	depends on VSERVER_HARDCPU
+	default n
+	help
+	  This option allows the scheduler to artificially
+	  advance time (per cpu) when otherwise the idle
+	  task would be scheduled, thus keeping the cpu
+	  busy and sharing the available resources among
+	  certain contexts.
+
+config	VSERVER_IDLELIMIT
+	bool	"Limit the IDLE task"
+	depends on VSERVER_HARDCPU
+	default n
+	help
+	  Limit the idle slices, so the the next context
+	  will be scheduled as soon as possible.
+
+	  This might improve interactivity and latency, but
+	  will also marginally increase scheduling overhead.
+
+choice
+	prompt	"Persistent Inode Tagging"
+	default	TAGGING_ID24
+	help
+	  This adds persistent context information to filesystems
+	  mounted with the tagxid option. Tagging is a requirement
+	  for per-context disk limits and per-context quota.
+
+
+config	TAGGING_NONE
+	bool	"Disabled"
+	help
+	  do not store per-context information in inodes.
+
+config	TAGGING_UID16
+	bool	"UID16/GID32"
+	help
+	  reduces UID to 16 bit, but leaves GID at 32 bit.
+
+config	TAGGING_GID16
+	bool	"UID32/GID16"
+	help
+	  reduces GID to 16 bit, but leaves UID at 32 bit.
+
+config	TAGGING_ID24
+	bool	"UID24/GID24"
+	help
+	  uses the upper 8bit from UID and GID for XID tagging
+	  which leaves 24bit for UID/GID each, which should be
+	  more than sufficient for normal use.
+
+config	TAGGING_INTERN
+	bool	"UID32/GID32"
+	help
+	  this uses otherwise reserved inode fields in the on
+	  disk representation, which limits the use to a few
+	  filesystems (currently ext2 and ext3)
+
+config	TAGGING_RUNTIME
+	bool	"Runtime"
+	depends on EXPERIMENTAL
+	help
+	  inodes are tagged when first accessed, this doesn't
+	  require any persistant information, but might give
+	  funny results for mixed access.
+
+endchoice
+
+config	TAG_NFSD
+	bool	"Tag NFSD User Auth and Files"
+	default n
+	help
+	  Enable this if you do want the in-kernel NFS
+	  Server to use the tagging specified above.
+	  (will require patched clients too)
+
+config	PROPAGATE
+	bool	"Enable Inode Tag Propagation"
+	default n
+	depends on EXPERIMENTAL
+	help
+	  This allows for the tagid= mount option to specify
+	  a tagid which is to be used for the entire mount
+	  tree.
+
+config	VSERVER_PRIVACY
+	bool	"Honor Privacy Aspects of Guests"
+	default y
+	help
+	  When enabled, most context checks will disallow
+	  access to structures assigned to a specific context,
+	  like ptys or loop devices.
+
+config	VSERVER_DEBUG
+	bool	"VServer Debugging Code"
+	default n
+	help
+	  Set this to yes if you want to be able to activate
+	  debugging output at runtime. It adds a probably small
+	  overhead to all vserver related functions and
+	  increases the kernel size by about 20k.
+
+config	VSERVER_HISTORY
+	bool	"VServer History Tracing"
+	depends on VSERVER_DEBUG
+	default n
+	help
+	  Set this to yes if you want to record the history of
+	  linux-vserver activities, so they can be replayed in
+	  the event of a kernel panic or oops.
+
+config	VSERVER_HISTORY_SIZE
+	int	"Per-CPU History Size (32-65536)"
+	depends on VSERVER_HISTORY
+	range 32 65536
+	default 64
+	help
+	  This allows you to specify the number of entries in
+	  the per-CPU history buffer.
+
+config	VSERVER_MONITOR
+	bool	"VServer Scheduling Monitor"
+	depends on VSERVER_DEBUG
+	default n
+	help
+	  Set this to yes if you want to record the scheduling
+	  decisions, so that they can be relayed to userspace
+	  for detailed analysis.
+
+config	VSERVER_MONITOR_SIZE
+	int	"Per-CPU Monitor Queue Size (32-65536)"
+	depends on VSERVER_MONITOR
+	range 32 65536
+	default 1024
+	help
+	  This allows you to specify the number of entries in
+	  the per-CPU scheduling monitor buffer.
+
+config	VSERVER_MONITOR_SYNC
+	int	"Per-CPU Monitor Sync Interval (0-65536)"
+	depends on VSERVER_MONITOR
+	range 0 65536
+	default 256
+	help
+	  This allows you to specify the interval in ticks
+	  when a time sync entry is inserted.
+
+endmenu
+
+
+config	VSERVER
+	bool
+	default y
+	select UTS_NS
+	select SYSVIPC
+	select IPC_NS
+
+config	VSERVER_SECURITY
+	bool
+	depends on SECURITY
+	default y
+	select SECURITY_CAPABILITIES
+
--- olpc-2.6-master.00/kernel/vserver/Makefile	1969-12-31 19:00:00.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/vserver/Makefile	2007-03-01 17:09:59.000000000 -0500
@@ -0,0 +1,16 @@
+#
+# Makefile for the Linux vserver routines.
+#
+
+
+obj-y		+= vserver.o
+
+vserver-y	:= switch.o context.o space.o sched.o network.o inode.o \
+		   limit.o cvirt.o cacct.o signal.o helper.o init.o dlimit.o
+
+vserver-$(CONFIG_INET) += inet.o
+vserver-$(CONFIG_PROC_FS) += proc.o
+vserver-$(CONFIG_VSERVER_DEBUG) += sysctl.o debug.o
+vserver-$(CONFIG_VSERVER_HISTORY) += history.o
+vserver-$(CONFIG_VSERVER_MONITOR) += monitor.o
+
--- olpc-2.6-master.00/kernel/vserver/vci_config.h	1969-12-31 19:00:00.000000000 -0500
+++ olpc-2.6-master-vs22x.02/kernel/vserver/vci_config.h	2007-03-01 17:09:59.000000000 -0500
@@ -0,0 +1,81 @@
+
+/*  interface version */
+
+#define VCI_VERSION		0x00020200
+#define VCI_LEGACY_VERSION	0x000100FF
+
+
+enum {
+	VCI_KCBIT_NO_DYNAMIC = 0,
+	VCI_KCBIT_LEGACY = 1,
+	VCI_KCBIT_LEGACYNET = 2,
+	VCI_KCBIT_NGNET = 3,
+
+	VCI_KCBIT_PROC_SECURE = 4,
+	VCI_KCBIT_HARDCPU = 5,
+	VCI_KCBIT_IDLELIMIT = 6,
+	VCI_KCBIT_IDLETIME = 7,
+
+	VCI_KCBIT_COWBL = 8,
+	VCI_KCBIT_FULLCOWBL = 9,
+	VCI_KCBIT_SPACES = 10,
+
+	VCI_KCBIT_LEGACY_VERSION = 15,
+	VCI_KCBIT_DEBUG = 16,
+	VCI_KCBIT_HISTORY = 20,
+	VCI_KCBIT_TAGGED = 24,
+};
+
+
+static inline uint32_t vci_kernel_config(void)
+{
+	return
+	(1 << VCI_KCBIT_NO_DYNAMIC) |
+	(1 << VCI_KCBIT_NGNET) |
+
+	/* configured features */
+#ifdef	CONFIG_VSERVER_PROC_SECURE
+	(1 << VCI_KCBIT_PROC_SECURE) |
+#endif
+#ifdef	CONFIG_VSERVER_HARDCPU
+	(1 << VCI_KCBIT_HARDCPU) |
+#endif
+#ifdef	CONFIG_VSERVER_IDLELIMIT
+	(1 << VCI_KCBIT_IDLELIMIT) |
+#endif
+#ifdef	CONFIG_VSERVER_IDLETIME
+	(1 << VCI_KCBIT_IDLETIME) |
+#endif
+#ifdef	CONFIG_VSERVER_COWBL
+	(1 << VCI_KCBIT_COWBL) |
+	(1 << VCI_KCBIT_FULLCOWBL) |
+#endif
+	(1 << VCI_KCBIT_SPACES) |
+
+	/* debug options */
+#ifdef	CONFIG_VSERVER_DEBUG
+	(1 << VCI_KCBIT_DEBUG) |
+#endif
+#ifdef	CONFIG_VSERVER_HISTORY
+	(1 << VCI_KCBIT_HISTORY) |
+#endif
+
+	/* inode context tagging */
+#if	defined(CONFIG_TAGGING_NONE)
+	(0 << VCI_KCBIT_TAGGED) |
+#elif	defined(CONFIG_TAGGING_UID16)
+	(1 << VCI_KCBIT_TAGGED) |
+#elif	defined(CONFIG_TAGGING_GID16)
+	(2 << VCI_KCBIT_TAGGED) |
+#elif	defined(CONFIG_TAGGING_ID24)
+	(3 << VCI_KCBIT_TAGGED) |
+#elif	defined(CONFIG_TAGGING_INTERN)
+	(4 << VCI_KCBIT_TAGGED) |
+#elif	defined(CONFIG_TAGGING_RUNTIME)
+	(5 << VCI_KCBIT_TAGGED) |
+#else
+	(7 << VCI_KCBIT_TAGGED) |
+#endif
+	0;
+}
+
--- olpc-2.6-master.00/Makefile	2007-02-28 20:05:25.000000000 -0500
+++ olpc-2.6-master-vs22x.02/Makefile	2007-03-01 12:02:27.000000000 -0500
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 21
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc2-vs2.2.0.0
 NAME = Homicidal Dwarf Hamster
 
 # *DOCUMENTATION*
