summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xssn.at>2010-01-17 12:10:25 +0100
committerFlorian Pritz <bluewind@xssn.at>2010-01-17 12:10:25 +0100
commitca2d44a6820a66e074d753b32fdc7c3d86e58a3d (patch)
tree52965f85df44d83395189f88eab9e663154c5a8f
parentdbd1c0d9ff79e45fe66955f48d87eb32c21965a2 (diff)
downloadaur-packages-ca2d44a6820a66e074d753b32fdc7c3d86e58a3d.tar.gz
aur-packages-ca2d44a6820a66e074d753b32fdc7c3d86e58a3d.tar.xz
some more updates/adds
Signed-off-by: Florian Pritz <bluewind@xssn.at>
-rw-r--r--babl-git/PKGBUILD43
-rw-r--r--celt/PKGBUILD28
-rw-r--r--ffcast/PKGBUILD38
-rw-r--r--ffmpeg-svn/PKGBUILD8
-rw-r--r--flvstreamer/PKGBUILD15
-rw-r--r--gecko-mediaplayer-svn/PKGBUILD28
-rw-r--r--gegl-git/.DS_Storebin0 -> 6148 bytes
-rw-r--r--gegl-git/._.DS_Storebin0 -> 82 bytes
-rw-r--r--gegl-git/._PKGBUILDbin0 -> 167 bytes
-rw-r--r--gegl-git/._gegl-git.installbin0 -> 197 bytes
-rw-r--r--gegl-git/PKGBUILD43
-rw-r--r--gegl-git/gegl-git.install15
-rw-r--r--gimp-git/PKGBUILD61
-rw-r--r--gimp-git/gimp-git.install23
-rw-r--r--gimp-git/linux.gpl19
-rw-r--r--gnome-mplayer-svn/PKGBUILD29
-rw-r--r--kernel26-vserver/PKGBUILD187
-rw-r--r--kernel26-vserver/config4564
-rw-r--r--kernel26-vserver/config.x86_644338
-rw-r--r--kernel26-vserver/kernel26-vserver.install144
-rw-r--r--kernel26-vserver/kernel26-vserver.preset17
-rw-r--r--kernel26-vserver/patch-2.6.31.6-vs2.3.0.36.24.diff28766
-rw-r--r--libjpeg6/PKGBUILD38
-rw-r--r--mbuffer/PKGBUILD6
-rw-r--r--mpd-git/PKGBUILD2
-rw-r--r--mumble-git/PKGBUILD69
-rw-r--r--mumble-git/mumble.install11
-rw-r--r--mumble-git/mumble11x.desktop11
-rw-r--r--perl-class-inspector/PKGBUILD54
-rw-r--r--perl-mail-checkuser/PKGBUILD53
-rw-r--r--perl-params-util/ChangeLog19
-rw-r--r--perl-params-util/PKGBUILD28
-rw-r--r--smtp-cli/PKGBUILD19
-rw-r--r--smtp-cli/smtp-cli814
-rw-r--r--tcc-git/PKGBUILD2
-rw-r--r--vhba-module/PKGBUILD11
-rw-r--r--x264-git/PKGBUILD2
37 files changed, 39485 insertions, 20 deletions
diff --git a/babl-git/PKGBUILD b/babl-git/PKGBUILD
new file mode 100644
index 0000000..6e7c00e
--- /dev/null
+++ b/babl-git/PKGBUILD
@@ -0,0 +1,43 @@
+# Contributor: Alessio Biancalana <dottorblaster@gmail.com>
+
+pkgname=babl-git
+pkgver=20100109
+pkgrel=1
+pkgdesc="babl is a dynamic, any to any, pixel format translation library"
+arch=('i686' 'x86_64')
+url="http://www.gegl.org/babl"
+license=('GPL')
+conflicts=('babl')
+provides=('babl')
+depends=('glib2>=2.10' 'libpng')
+makedepends=('git')
+source=()
+md5sums=()
+
+_gitroot=('git://git.gnome.org/babl')
+_gitname=('babl')
+
+ build() {
+ cd $startdir/src
+ msg "Connecting to gnome.org git server...."
+ rm -rf $startdir/src/$_gitname-build
+
+ if [[ -d $_gitname ]]; then
+ cd $_gitname || return 1
+ git pull origin || return 1
+ else
+ git clone $_gitroot $_gitname || return 1
+ fi
+ msg " checkout done."
+
+ msg "Starting make..."
+ cd "$srcdir"
+ rm -r "$srcdir/$_gitname-build"
+ cp -r $srcdir/$_gitname $_gitname-build
+ cd $_gitname-build
+
+ ./autogen.sh --prefix=/usr
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
+
diff --git a/celt/PKGBUILD b/celt/PKGBUILD
new file mode 100644
index 0000000..b003294
--- /dev/null
+++ b/celt/PKGBUILD
@@ -0,0 +1,28 @@
+# Contributor: Lauri Niskanen <ape@ape3000.com>
+# Contributor: Ray Rashif <schivmeister@gmail.com>
+
+pkgname=celt
+pkgver=0.7.0
+pkgrel=2
+pkgdesc="Low-latency audio communication codec"
+arch=(i686 x86_64)
+url="http://www.celt-codec.org"
+license=('BSD')
+depends=('libogg')
+options=('!libtool')
+source=(http://downloads.us.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('0bb72abec367f4ef12551f79dda11b23')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+ ln -s $pkgdir/usr/lib/libcelt.so.0.0.0 $pkgdir/usr/lib/libcelt.so.0.7
+ ln -s $pkgdir/usr/lib/libcelt.so.0.0.0 $pkgdir/usr/lib/libcelt.so.0.7.0
+
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/BSD"
+}
+
diff --git a/ffcast/PKGBUILD b/ffcast/PKGBUILD
new file mode 100644
index 0000000..d1bf09d
--- /dev/null
+++ b/ffcast/PKGBUILD
@@ -0,0 +1,38 @@
+# Contributor: lolilolicon <lolilolicon{at}gmail{dot}com>
+
+pkgname=ffcast
+pkgver=20091128
+pkgrel=1
+pkgdesc="bash script that takes screencast of given window area using ffmpeg/xwininfo/xrectsel"
+arch=('i686' 'x86_64')
+url="http://github.com/lolilolicon/ffcast"
+license=('GPL v3')
+makedepends=('git')
+depends=('bash>=3.2' 'ffmpeg>=0.5' 'x264>=20090416' 'xorg-utils' 'bc')
+source=()
+md5sums=()
+
+_gitroot="git://github.com/lolilolicon/ffcast.git"
+_gitname=master
+
+build() {
+ msg "Connecting to GIT server..."
+ if [ -d "$srcdir/$pkgname" ]; then
+ cd "$srcdir/$pkgname" && git pull origin $_gitname || return 1
+ else
+ git clone "$_gitroot" "$srcdir/$pkgname" || return 1
+ cd "$srcdir/$pkgname" && git checkout $_gitname || return 1
+ fi
+
+ msg "GIT checkout done or server timeout"
+ msg "Starting make..."
+
+ rm -rf "$srcdir/$pkgname-build"
+ git clone "$srcdir/$pkgname" "$srcdir/$pkgname-build"
+ cd "$srcdir/$pkgname-build"
+
+ make || return 1
+ make PREFIX=/usr DESTDIR="$pkgdir" install || return 1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/ffmpeg-svn/PKGBUILD b/ffmpeg-svn/PKGBUILD
index ae596b5..9b1cc30 100644
--- a/ffmpeg-svn/PKGBUILD
+++ b/ffmpeg-svn/PKGBUILD
@@ -1,13 +1,13 @@
# Contributor: raubkopierer <mail[dot]sensenmann[at]googlemail[dot]com>
pkgname=ffmpeg-svn
-pkgver=20578
+pkgver=21252
pkgrel=1
pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
arch=('i686' 'x86_64')
url="http://ffmpeg.mplayerhq.hu/"
license=('GPL')
-depends=('lame' 'sdl' 'faad2' 'faac' 'zlib' 'imlib2' 'x264' 'libtheora')
+depends=('lame' 'sdl' 'zlib' 'imlib2' 'x264-git' 'libtheora' 'opencore-amr' 'faac')
makedepends=('subversion')
provides=("ffmpeg=`date +%Y%m%d`")
conflicts=('ffmpeg')
@@ -37,10 +37,12 @@ build() {
--prefix=/usr \
--enable-gpl \
--enable-nonfree \
+ --enable-version3 \
--enable-libmp3lame \
--enable-libfaac \
- --enable-libfaad \
--enable-libx264 \
+ --enable-libopencore-amrnb \
+ --enable-libopencore-amrwb \
--enable-libtheora \
--enable-postproc \
--enable-shared \
diff --git a/flvstreamer/PKGBUILD b/flvstreamer/PKGBUILD
index b5a4adc..0ee7f55 100644
--- a/flvstreamer/PKGBUILD
+++ b/flvstreamer/PKGBUILD
@@ -1,18 +1,21 @@
# Maintainer: Stefan Husmann <stefan-husmann@t-online.de>
pkgname=flvstreamer
-pkgver=1.8k
+pkgver=1.9
pkgrel=1
pkgdesc="Open source command-line RTMP client"
url="http://savannah.nongnu.org/projects/flvstreamer"
arch=('i686' 'x86_64')
license=('GPL')
depends=('gcc-libs')
-source=(http://mirrors.zerg.biz/nongnu/flvstreamer/source/$pkgname-$pkgver.tar.gz)
-md5sums=('e70d4f2a154c06759debfb7426a09d6a')
+source=("http://mirrors.zerg.biz/nongnu/flvstreamer/source/$pkgname-$pkgver.tar.gz")
+md5sums=('8024c2a44b4fe9e39d1eec9b58f4da9e')
build() {
- cd $srcdir/$pkgname
+ cd $srcdir/$pkgname-$pkgver
make $pkgname || return 1
make streams || return 1
- install -Dm755 ${pkgname}_x86 $pkgdir/usr/bin/$pkgname || return 1
- install -Dm755 streams_x86 $pkgdir/usr/bin/streams || return 1
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ install -Dm755 $pkgname $pkgdir/usr/bin/$pkgname || return 1
+ install -Dm755 streams $pkgdir/usr/bin/streams || return 1
} \ No newline at end of file
diff --git a/gecko-mediaplayer-svn/PKGBUILD b/gecko-mediaplayer-svn/PKGBUILD
new file mode 100644
index 0000000..5a55a92
--- /dev/null
+++ b/gecko-mediaplayer-svn/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: evr <evanroman at gmail>
+# Contributor: Jorge Mokross <mokross@gmail.com>
+pkgname=gecko-mediaplayer-svn
+pkgver=345
+pkgrel=1
+pkgdesc="A browser plugin that uses GNOME Mplayer."
+url="http://kdekorte.googlepages.com/gecko-mediaplayer"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('gnome-mplayer-svn')
+makedepends=('xulrunner' 'pkgconfig')
+conflicts=('gecko-mediaplayer' 'gecko-mediaplayer-cvs')
+provides=('gecko-mediaplayer')
+
+_svntrunk=http://gecko-mediaplayer.googlecode.com/svn/trunk
+_svnmod=gecko-mediaplayer-read-only
+
+build() {
+ cd $srcdir
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $_svnmod
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
+
diff --git a/gegl-git/.DS_Store b/gegl-git/.DS_Store
new file mode 100644
index 0000000..b3d7e1b
--- /dev/null
+++ b/gegl-git/.DS_Store
Binary files differ
diff --git a/gegl-git/._.DS_Store b/gegl-git/._.DS_Store
new file mode 100644
index 0000000..460d887
--- /dev/null
+++ b/gegl-git/._.DS_Store
Binary files differ
diff --git a/gegl-git/._PKGBUILD b/gegl-git/._PKGBUILD
new file mode 100644
index 0000000..361f6aa
--- /dev/null
+++ b/gegl-git/._PKGBUILD
Binary files differ
diff --git a/gegl-git/._gegl-git.install b/gegl-git/._gegl-git.install
new file mode 100644
index 0000000..120e8c8
--- /dev/null
+++ b/gegl-git/._gegl-git.install
Binary files differ
diff --git a/gegl-git/PKGBUILD b/gegl-git/PKGBUILD
new file mode 100644
index 0000000..faab426
--- /dev/null
+++ b/gegl-git/PKGBUILD
@@ -0,0 +1,43 @@
+# Contributor: Alessio Biancalana <dottorblaster@gmail.com>
+
+pkgname=gegl-git
+pkgver=20100109
+pkgrel=1
+pkgdesc="GEGL (Generic Graphics Library) is a graph based image processing framework."
+arch=('i686' 'x86_64')
+url="http://www.gegl.org/"
+license=('GPL')
+conflicts=('gegl')
+provides=('gegl')
+depends=('glib2>=2.10' 'babl-git' 'libpng' 'ruby')
+makedepends=('git')
+install=$pkgname.install
+source=($pkgname.install)
+md5sums=('2289b100d1d4ee9ef6b3ad02eddbc899')
+
+_gitroot=('git://git.gnome.org/gegl')
+_gitname=('gegl')
+
+ build() {
+ cd $startdir/src
+ msg "Connecting to gnome.org git server...."
+ rm -rf $startdir/src/$_gitname-build
+
+ if [[ -d $_gitname ]]; then
+ cd $_gitname || return 1
+ git pull origin || return 1
+ else
+ git clone $_gitroot $_gitname || return 1
+ fi
+ msg " checkout done."
+
+ msg "Starting make..."
+ cd "$srcdir"
+ rm -r "$srcdir/$_gitname-build"
+ cp -r $srcdir/$_gitname $_gitname-build
+ cd $_gitname-build
+
+ ./autogen.sh --prefix=/usr --disable-docs
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/gegl-git/gegl-git.install b/gegl-git/gegl-git.install
new file mode 100644
index 0000000..4d6aee5
--- /dev/null
+++ b/gegl-git/gegl-git.install
@@ -0,0 +1,15 @@
+post_install() {
+
+ echo ">>> If you want more functionality install the following packages:"
+ echo ">>> sdl - libjpeg - openexr - pango - librsvg - graphviz"
+ echo ">>> And build the package again."
+
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
diff --git a/gimp-git/PKGBUILD b/gimp-git/PKGBUILD
new file mode 100644
index 0000000..f248c6e
--- /dev/null
+++ b/gimp-git/PKGBUILD
@@ -0,0 +1,61 @@
+# Contributor: Alessio Biancalana <dottorblaster@gmail.com>
+
+pkgname=gimp-git
+pkgver=20100109
+pkgrel=1
+pkgdesc="GNU Image Manipulation Program (GIT Version)"
+arch=('i686' 'x86_64')
+url="http://www.gimp.org/"
+license=('GPL')
+depends=('gtk2>=2.10' 'lcms>=1.16' 'libxpm>=3.5.6' 'libwmf>=0.2.8' \
+ 'libxmu>=1.0.3' 'librsvg>=2.16.1' 'libmng>=1.0.9' 'desktop-file-utils' \
+ 'libexif>=0.6.13' 'libart-lgpl>=2.3.19' 'pygtk>=2.10.4' 'dbus-glib' 'gtk-doc')
+makedepends=('gutenprint>=5.0.0' 'intltool>=0.35.5' 'libgtkhtml>=2.6.3' \
+ 'gnome-python>=2.16.2' 'poppler>=0.6' 'pkgconfig>=0.21' \
+ 'libgnomeprintui>=2.18' 'alsa-lib>=1.0.0' 'gegl-git'
+'libtool>=1.5' 'autoconf>=2.54' 'automake>=1.9.6' 'libxslt' 'libwebkit'
+'pango' 'gettext' 'git')
+options=('!libtool' '!makeflags')
+provides=('gimp')
+conflicts=('gimp' 'gimp-devel')
+source=('gimp-git.install' 'linux.gpl')
+install=('gimp-git.install')
+md5sums=('c49a84c5333fbe0b49b49911a3da9d20'
+ 'bb27bc214261d36484093e857f015f38')
+
+_gitroot=('git://git.gnome.org/gimp')
+_gitname=('gimp')
+
+build() {
+ cd $startdir/src
+ msg "Connecting to gnome.org git server...."
+ rm -rf $startdir/src/$_gitname-build
+
+ if [[ -d $_gitname ]]; then
+ cd $_gitname || return 1
+# git pull origin || return 1
+# else
+# git clone $_gitroot $_gitname || return 1
+ fi
+ msg " checkout done."
+
+ msg "Starting make..."
+ cd "$srcdir"
+ rm -r "$srcdir/$_gitname-build"
+ cp -r $srcdir/$_gitname $_gitname-build
+ cd $_gitname-build
+
+ ./autogen.sh --prefix=/usr --sysconfdir=/etc \
+ --enable-mp --enable-gimp-console --disable-devel-docs \
+ --enable-python --with-gif-compression=lzw \
+ --without-aa
+ make || return 1
+ make DESTDIR=${startdir}/pkg install-strip || return 1
+
+ install -Dm644 ${startdir}/src/linux.gpl \
+ ${startdir}/pkg/usr/share/gimp/2.0/palettes/Linux.gpl
+
+ #ln -s gimp-2.5 ${startdir}/pkg/usr/bin/gimp
+ #ln -s gimp-console-2.5 ${startdir}/pkg/usr/bin/gimp-console
+ #ln -s gimp-remote-2.5 ${startdir}/pkg/usr/bin/gimp-remote
+}
diff --git a/gimp-git/gimp-git.install b/gimp-git/gimp-git.install
new file mode 100644
index 0000000..24e2c39
--- /dev/null
+++ b/gimp-git/gimp-git.install
@@ -0,0 +1,23 @@
+post_install() {
+ cat << EOM
+
+--> OPTIONAL PACKAGES:
+--> Please install optional packages as necessary. They will be found and
+--> used automatically:
+--> gimp has built-in cups print support now. For more sophisticated printing, install gutenprint.
+--> For help browser support, install libgtkhtml.
+
+EOM
+
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
diff --git a/gimp-git/linux.gpl b/gimp-git/linux.gpl
new file mode 100644
index 0000000..0a73d89
--- /dev/null
+++ b/gimp-git/linux.gpl
@@ -0,0 +1,19 @@
+GIMP Palette
+Name: linux
+#
+ 0 0 0
+ 0 0 170
+ 0 170 0
+ 0 170 170
+170 0 0
+170 0 170
+170 85 0
+170 170 170
+ 85 85 85
+ 85 85 255
+ 85 255 85
+ 85 255 255
+255 85 85
+255 85 255
+255 255 85
+255 255 255
diff --git a/gnome-mplayer-svn/PKGBUILD b/gnome-mplayer-svn/PKGBUILD
new file mode 100644
index 0000000..5cd2632
--- /dev/null
+++ b/gnome-mplayer-svn/PKGBUILD
@@ -0,0 +1,29 @@
+# Maintainter: evr <evanroman at gmail>
+# Contributor: Jorge Mokross <mokross@gmail.com>
+pkgname=gnome-mplayer-svn
+pkgver=1606
+pkgrel=1
+pkgdesc="A simple Mplayer GUI"
+url="http://kdekorte.googlepages.com/gnomemplayer"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('gconf' 'mplayer' 'libgpod')
+makedepends=('subversion' 'pkgconfig')
+conflicts=('gnome-mplayer' 'gnome-mplayer-cvs')
+provides=('gnome-mplayer')
+
+_svntrunk=http://gnome-mplayer.googlecode.com/svn/trunk
+_svnmod=gnome-mplayer-read-only
+
+build() {
+ cd $srcdir
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $_svnmod
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --disable-schemas-install --without-gconf || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
+
diff --git a/kernel26-vserver/PKGBUILD b/kernel26-vserver/PKGBUILD
new file mode 100644
index 0000000..de76e61
--- /dev/null
+++ b/kernel26-vserver/PKGBUILD
@@ -0,0 +1,187 @@
+# Contributor: Jonathan Liu <net147@gmail.com>
+pkgname=kernel26-vserver
+_kernelname=${pkgname#kernel26}
+_basekernel=2.6.31
+pkgver=${_basekernel}.6
+pkgrel=1
+_patchname="patch-${pkgver}-1-ARCH"
+_vserver=2.3.0.36.24
+pkgdesc="The Linux Kernel and modules with Linux-VServer"
+arch=('i686' 'x86_64')
+license=('GPL2')
+groups=('base')
+url="http://linux-vserver.org/"
+backup=("etc/mkinitcpio.d/${pkgname}.preset")
+depends=('coreutils' 'kernel26-firmware>=2.6.31' 'module-init-tools' 'mkinitcpio>=0.5.20')
+install=$pkgname.install
+source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2
+ ftp://ftp.archlinux.org/other/kernel26/${_patchname}.bz2
+ http://vserver.13thfloor.at/Experimental/patch-${pkgver}-vs$_vserver.diff
+ # the main kernel config files
+ config config.x86_64
+ # standard config files for mkinitcpio ramdisk
+ $pkgname.preset)
+optdepends=('crda: to set the correct wireless channels of your country')
+md5sums=('84c077a37684e4cbfa67b18154390d8a'
+ 'ab4ff4cf5a2373fd1842edd775e8bb48'
+ '838bfea8a7710c8d1d42931e47aaea3d'
+ '27bace59bdf0dff83bc4b02df97ead68'
+ '992c7f84276ddac4f2d8b667870f13d2'
+ '6952cf6ca4d430708390dacdcaefc623')
+
+build() {
+ KARCH=x86
+
+ cd ${srcdir}/linux-${_basekernel}
+ # Add -ARCH patches
+ # See http://projects.archlinux.org/git/?p=linux-2.6-ARCH.git;a=summary
+ patch -Np1 -i ${srcdir}/${_patchname} || return 1
+ # Revert stripping of extra version in Makefile by -ARCH patches
+ ([ -n $(echo "$pkgver" | cut -d'.' -f 4) ] && \
+ sed -i 's/EXTRAVERSION = /EXTRAVERSION = .'"$(echo "$pkgver" | cut -d'.' -f 4)"'/' Makefile) || return 1
+ # Add Linux-VServer patches
+ patch -Np1 -i ${srcdir}/patch-${pkgver}-vs$_vserver.diff || return 1
+ # Strip extra version
+ sed -i 's|^EXTRAVERSION = .*$|EXTRAVERSION = |g' Makefile || return 1
+
+ if [ "$CARCH" = "x86_64" ]; then
+ cat ../config.x86_64 >./.config
+ else
+ cat ../config >./.config
+ fi
+ # Strip local version
+ echo "-vs" >./localversion-vserver
+ # get kernel version
+ make prepare
+ _kernver="$(make kernelrelease)"
+ # load configuration
+ # Configure the kernel. Replace the line below with one of your choice.
+ #make menuconfig # CLI menu for configuration
+ #make xconfig # X-based configuration
+ #make oldconfig # using old config from previous kernel version
+ # ... or manually edit .config
+ ####################
+ # stop here
+ # this is useful to configure the kernel
+ #msg "Stopping build"
+ #return 1
+ ####################
+ yes "" | make config
+ # build!
+ make bzImage modules || return 1
+ mkdir -p ${pkgdir}/{lib/modules,boot}
+ make INSTALL_MOD_PATH=${pkgdir} modules_install || return 1
+ cp System.map ${pkgdir}/boot/System.map26${_kernelname}
+ cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26${_kernelname}
+ install -D -m644 Makefile \
+ ${pkgdir}/usr/src/linux-${_kernver}/Makefile
+ install -D -m644 kernel/Makefile \
+ ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile
+ install -D -m644 .config \
+ ${pkgdir}/usr/src/linux-${_kernver}/.config
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include
+
+ for i in acpi asm-{generic,x86} config linux math-emu media net pcmcia scsi sound video; do
+ cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/
+ done
+
+ # copy arch includes for external modules
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
+ cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/
+
+ # copy files necessary for later builds, like nvidia and vmware
+ cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}
+ cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}
+ # fix permissions on scripts dir
+ chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts
+ #mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions
+
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel
+
+ cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
+ if [ "$CARCH" = "i686" ]; then
+ cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
+ fi
+ cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/
+
+ # add headers for lirc package
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video
+ cp drivers/media/video/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/
+ for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
+ cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
+ done
+ # add dm headers
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
+ cp drivers/md/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
+ # add inotify.h
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux
+ cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/
+ # add CLUSTERIP file for iptables
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/ipv4/netfilter/
+ # add wireless headers
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
+ cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
+ # add dvb headers for external modules
+ # in reference to:
+ # http://bugs.archlinux.org/task/9912
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core
+ cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/
+ # add dvb headers for external modules
+ # in reference to:
+ # http://bugs.archlinux.org/task/11194
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
+ cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
+ # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
+ # in reference to:
+ # http://bugs.archlinux.org/task/13146
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
+ cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
+ cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
+ # add xfs and shmem for aufs building
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm
+ cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h
+ # add headers vor virtualbox
+ # in reference to:
+ # http://bugs.archlinux.org/task/14568
+ cp -a include/drm $pkgdir/usr/src/linux-${_kernver}/include/
+ # add headers for broadcom wl
+ # in reference to:
+ # http://bugs.archlinux.org/task/14568
+ cp -a include/trace $pkgdir/usr/src/linux-${_kernver}/include/
+ # add vmlinux
+ cp vmlinux ${pkgdir}/usr/src/linux-${_kernver}
+ # copy in Kconfig files
+ for i in `find . -name "Kconfig*"`; do
+ mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`
+ cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i
+ done
+
+ cd ${pkgdir}/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm
+
+ chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
+ find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
+ cd ${pkgdir}/lib/modules/${_kernver} && \
+ (rm -f source build; ln -sf ../../../usr/src/linux-${_kernver} build)
+ # install fallback mkinitcpio.conf file and preset file for kernel
+ install -m644 -D ${srcdir}/${pkgname}.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset || return 1
+ # set correct depmod command for install
+ sed \
+ -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
+ -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
+ -i ${srcdir}/../${pkgname}.install
+ sed \
+ -e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" \
+ -e "s|default_image=.*|default_image=\"/boot/${pkgname}.img\"|g" \
+ -e "s|fallback_image=.*|fallback_image=\"/boot/${pkgname}-fallback.img\"|g" \
+ -i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
+
+ echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${pkgdir}/etc/mkinitcpio.d/${pkgname}.kver
+ # remove unneeded architectures
+ rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa}
+ # remove the firmware
+ rm -rf ${pkgdir}/lib/firmware
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/kernel26-vserver/config b/kernel26-vserver/config
new file mode 100644
index 0000000..771c72b
--- /dev/null
+++ b/kernel26-vserver/config
@@ -0,0 +1,4564 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31
+# Sat Nov 14 15:34:22 2009
+#
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+# CONFIG_X86_64 is not set
+CONFIG_X86=y
+CONFIG_OUTPUT_FORMAT="elf32-i386"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_FAST_CMPXCHG_LOCAL=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
+# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+# CONFIG_ZONE_DMA32 is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_32_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ARCH"
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=19
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_COUNTERS=y
+
+#
+# Performance Counters
+#
+CONFIG_PERF_COUNTERS=y
+CONFIG_EVENT_PROFILE=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_MARKERS=y
+CONFIG_OPROFILE=m
+CONFIG_OPROFILE_IBS=y
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_SLOW_WORK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+# CONFIG_SPARSE_IRQ is not set
+CONFIG_X86_MPPARSE=y
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_PARAVIRT_GUEST=y
+CONFIG_VMI=y
+CONFIG_KVM_CLOCK=y
+CONFIG_KVM_GUEST=y
+CONFIG_LGUEST_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_SPINLOCKS is not set
+CONFIG_PARAVIRT_CLOCK=y
+# CONFIG_PARAVIRT_DEBUG is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_GENERIC_CPU is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CPU=y
+CONFIG_X86_L1_CACHE_BYTES=64
+CONFIG_X86_INTERNODE_CACHE_BYTES=64
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_X86_XADD=y
+# CONFIG_X86_PPRO_FENCE is not set
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_CYRIX_32=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_CPU_SUP_TRANSMETA_32=y
+CONFIG_CPU_SUP_UMC_32=y
+# CONFIG_X86_DS is not set
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+# CONFIG_IOMMU_HELPER is not set
+CONFIG_IOMMU_API=y
+CONFIG_NR_CPUS=8
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_OLD_MCE is not set
+CONFIG_X86_NEW_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+# CONFIG_X86_ANCIENT_MCE is not set
+CONFIG_X86_MCE_THRESHOLD=y
+# CONFIG_X86_MCE_INJECT is not set
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_VM86=y
+CONFIG_TOSHIBA=m
+CONFIG_I8K=m
+CONFIG_X86_REBOOTFIXUPS=y
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+# CONFIG_X86_CPU_DEBUG is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
+# CONFIG_HIGHMEM64G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_HIGHPTE is not set
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_X86_RESERVE_LOW_64K=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_EFI=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR_ALL=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+# CONFIG_CRASH_DUMP is not set
+# CONFIG_KEXEC_JUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_COMPAT_VDSO is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION_NVS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=m
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_SBS=m
+CONFIG_X86_APM_BOOT=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+CONFIG_APM_DO_ENABLE=y
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_ALLOW_INTS is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_POWERNOW_K6=m
+CONFIG_X86_POWERNOW_K7=m
+CONFIG_X86_POWERNOW_K7_ACPI=y
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_GX_SUSPMOD=m
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+CONFIG_X86_SPEEDSTEP_ICH=m
+CONFIG_X86_SPEEDSTEP_SMI=m
+CONFIG_X86_P4_CLOCKMOD=m
+CONFIG_X86_CPUFREQ_NFORCE2=m
+CONFIG_X86_LONGRUN=m
+CONFIG_X86_LONGHAUL=m
+CONFIG_X86_E_POWERSAVER=m
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+# CONFIG_PCI_GOOLPC is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_OLPC=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_DMAR=y
+# CONFIG_DMAR_DEFAULT_ON is not set
+# CONFIG_DMAR_BROKEN_GFX_WA is not set
+CONFIG_DMAR_FLOPPY_WA=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_PCI_STUB=m
+CONFIG_HT_IRQ=y
+CONFIG_PCI_IOV=y
+CONFIG_ISA_DMA_API=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+CONFIG_OLPC=y
+CONFIG_K8_NB=y
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_I82365=m
+CONFIG_TCIC=m
+CONFIG_PCMCIA_PROBE=y
+CONFIG_PCCARD_NONSTATIC=m
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=y
+CONFIG_HAVE_ATOMIC_IOMAP=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+# CONFIG_IPV6_MROUTE is not set
+CONFIG_NETLABEL=y
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_IPV6 is not set
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=y
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
+CONFIG_IP_DCCP_CCID3_RTO=100
+CONFIG_IP_DCCP_TFRC_LIB=y
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+CONFIG_SCTP_HMAC_SHA1=y
+# CONFIG_SCTP_HMAC_MD5 is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+# CONFIG_VLAN_8021Q_GVRP is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_LTPC=m
+CONFIG_COPS=m
+CONFIG_COPS_DAYNA=y
+CONFIG_COPS_TANGENT=y
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+CONFIG_PHONET=m
+CONFIG_IEEE802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+# CONFIG_NET_EMATCH is not set
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_DROP_MONITOR=y
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+CONFIG_KINGSUN_DONGLE=m
+CONFIG_KSDAZZLE_DONGLE=m
+CONFIG_KS959_DONGLE=m
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_TOSHIBA_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+CONFIG_RXKAD=m
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=m
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_DEFAULT_PS=y
+CONFIG_MAC80211_DEFAULT_PS_VALUE=1
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+# CONFIG_NET_9P_DEBUG is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_TESTS=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_RAM=m
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_TS5500 is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+CONFIG_PARPORT_PC_FIFO=y
+CONFIG_PARPORT_PC_SUPERIO=y
+CONFIG_PARPORT_PC_PCMCIA=m
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG_MESSAGES is not set
+
+#
+# Protocols
+#
+CONFIG_ISAPNP=y
+# CONFIG_PNPBIOS is not set
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=m
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_VROOT=y
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+CONFIG_PHANTOM=m
+CONFIG_SGI_IOC4=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_HP_ILO=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_ISL29003=m
+CONFIG_C2PORT=m
+CONFIG_C2PORT_DURAMAR_2150=m
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_AT25=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+CONFIG_HAVE_IDE=y
+CONFIG_IDE=m
+
+#
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
+#
+CONFIG_IDE_XFER_MODE=y
+CONFIG_IDE_TIMINGS=y
+CONFIG_IDE_ATAPI=y
+CONFIG_IDE_LEGACY=y
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_IDE_GD=m
+CONFIG_IDE_GD_ATA=y
+CONFIG_IDE_GD_ATAPI=y
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_DELKIN=m
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEACPI=y
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+CONFIG_BLK_DEV_PLATFORM=m
+CONFIG_BLK_DEV_CMD640=m
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+CONFIG_BLK_DEV_IDEPNP=m
+CONFIG_BLK_DEV_IDEDMA_SFF=y
+
+#
+# PCI IDE chipsets support
+#
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=m
+CONFIG_BLK_DEV_OPTI621=m
+CONFIG_BLK_DEV_RZ1000=m
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+CONFIG_BLK_DEV_AEC62XX=m
+CONFIG_BLK_DEV_ALI15X3=m
+CONFIG_BLK_DEV_AMD74XX=m
+CONFIG_BLK_DEV_ATIIXP=m
+CONFIG_BLK_DEV_CMD64X=m
+CONFIG_BLK_DEV_TRIFLEX=m
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+CONFIG_BLK_DEV_CS5535=m
+CONFIG_BLK_DEV_CS5536=m
+CONFIG_BLK_DEV_HPT366=m
+CONFIG_BLK_DEV_JMICRON=m
+CONFIG_BLK_DEV_SC1200=m
+CONFIG_BLK_DEV_PIIX=m
+CONFIG_BLK_DEV_IT8172=m
+CONFIG_BLK_DEV_IT8213=m
+CONFIG_BLK_DEV_IT821X=m
+CONFIG_BLK_DEV_NS87415=m
+CONFIG_BLK_DEV_PDC202XX_OLD=m
+CONFIG_BLK_DEV_PDC202XX_NEW=m
+CONFIG_BLK_DEV_SVWKS=m
+CONFIG_BLK_DEV_SIIMAGE=m
+CONFIG_BLK_DEV_SIS5513=m
+CONFIG_BLK_DEV_SLC90E66=m
+CONFIG_BLK_DEV_TRM290=m
+CONFIG_BLK_DEV_VIA82CXXX=m
+CONFIG_BLK_DEV_TC86C001=m
+
+#
+# Other IDE chipsets support
+#
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+CONFIG_BLK_DEV_4DRIVES=m
+CONFIG_BLK_DEV_ALI14XX=m
+CONFIG_BLK_DEV_DTC2278=m
+CONFIG_BLK_DEV_HT6560B=m
+CONFIG_BLK_DEV_QD65XX=m
+CONFIG_BLK_DEV_UMC8672=m
+CONFIG_BLK_DEV_IDEDMA=y
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=m
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_FC_TGT_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_7000FASST=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AHA152X=m
+CONFIG_SCSI_AHA1542=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_IN2000=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ARCMSR_AER=y
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_FLASHPOINT is not set
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_FCOE=m
+CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_DTC3280=m
+CONFIG_SCSI_EATA=m
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_GENERIC_NCR5380=m
+CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
+CONFIG_SCSI_GENERIC_NCR53C400=y
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_NCR53C406A=m
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_PAS16=m
+CONFIG_SCSI_QLOGIC_FAS=m
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_SYM53C416=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_T128=m
+CONFIG_SCSI_U14_34F=m
+# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
+# CONFIG_SCSI_U14_34F_LINKED_COMMANDS is not set
+CONFIG_SCSI_U14_34F_MAX_TAGS=8
+CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_NSP32=m
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_SRP=m
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=0
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=m
+CONFIG_SATA_SIL24=m
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=m
+CONFIG_ATA_PIIX=m
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_PDC_ADMA=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_SX4=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+CONFIG_SATA_INIC162X=m
+CONFIG_PATA_ACPI=m
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARTOP=m
+CONFIG_PATA_ATIIXP=m
+CONFIG_PATA_CMD640_PCI=m
+CONFIG_PATA_CMD64X=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_CS5535=m
+CONFIG_PATA_CS5536=m
+CONFIG_PATA_CYPRESS=m
+CONFIG_PATA_EFAR=m
+CONFIG_ATA_GENERIC=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+CONFIG_PATA_HPT3X3=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_ISAPNP=m
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_JMICRON=m
+CONFIG_PATA_LEGACY=m
+CONFIG_PATA_TRIFLEX=m
+CONFIG_PATA_MARVELL=m
+CONFIG_PATA_MPIIX=m
+CONFIG_PATA_OLDPIIX=m
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_NS87415=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_OPTIDMA=m
+CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PDC_OLD=m
+CONFIG_PATA_QDI=m
+CONFIG_PATA_RADISYS=m
+CONFIG_PATA_RZ1000=m
+CONFIG_PATA_SC1200=m
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
+CONFIG_PATA_WINBOND_VLB=m
+CONFIG_PATA_SCH=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID6_PQ=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_DELAY=m
+CONFIG_DM_UEVENT=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=m
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# See the help texts for more information.
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+CONFIG_IEEE1394_OHCI1394=m
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_DV1394=m
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+CONFIG_I2O=m
+CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_CONFIG_OLD_IOCTL=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_MACVLAN=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_NET_SB1000=m
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_EL1=m
+CONFIG_EL2=m
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_EL3=m
+CONFIG_3C515=m
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+CONFIG_ENC28J60=m
+# CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_ETHOC=m
+CONFIG_NET_VENDOR_RACAL=y
+CONFIG_NI52=m
+CONFIG_NI65=m
+CONFIG_DNET=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
+CONFIG_NET_ISA=y
+CONFIG_E2100=m
+CONFIG_EWRK3=m
+CONFIG_EEXPRESS=m
+CONFIG_EEXPRESS_PRO=m
+CONFIG_HPLAN_PLUS=m
+CONFIG_HPLAN=m
+CONFIG_LP486E=m
+CONFIG_ETH16I=m
+CONFIG_NE2000=m
+CONFIG_ZNET=m
+CONFIG_SEEQ8005=m
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_CS89x0=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R6040=m
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_SC92031=m
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_ATL2=m
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_VLAN is not set
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_JME=m
+CONFIG_NETDEV_10000=y
+CONFIG_MDIO=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3_DEPENDS=y
+CONFIG_CHELSIO_T3=m
+CONFIG_ENIC=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGB=m
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NIU=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_TEHUTI=m
+CONFIG_BNX2X=m
+CONFIG_QLGE=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_BE2NET=m
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_AIRO=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MWL8K=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_SPI=m
+CONFIG_P54_LEDS=y
+CONFIG_ATH_COMMON=m
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUG is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
+CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
+# CONFIG_IWLWIFI_DEBUG is not set
+CONFIG_IWLAGN=m
+CONFIG_IWL4965=y
+CONFIG_IWL5000=y
+CONFIG_IWL3945=m
+CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_PIO=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_HT=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_RFKILL=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_WL12XX=m
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
+
+#
+# WiMAX Wireless Broadband devices
+#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_SDIO=m
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+# CONFIG_WAN is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+# CONFIG_SLIP_COMPRESSED is not set
+CONFIG_SLHC=m
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+# CONFIG_NET_FC is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_VIRTIO_NET=m
+CONFIG_ISDN=y
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_0=y
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_AVM_A1=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_IX1MICROR2=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_ASUSCOM=y
+CONFIG_HISAX_TELEINT=y
+CONFIG_HISAX_HFCS=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_SPORTSTER=y
+CONFIG_HISAX_MIC=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_ISURF=y
+CONFIG_HISAX_HSTSAPHIR=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_ISDN_DRV_ICN=m
+CONFIG_ISDN_DRV_PCBIT=m
+CONFIG_ISDN_DRV_SC=m
+CONFIG_ISDN_DRV_ACT2000=m
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+CONFIG_INPUT_POLLDEV=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_OLPC=y
+CONFIG_MOUSE_SERIAL=y
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_INPORT=m
+# CONFIG_MOUSE_ATIXL is not set
+CONFIG_MOUSE_LOGIBM=m
+CONFIG_MOUSE_PC110PAD=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_ZHENHUA=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+CONFIG_JOYSTICK_JOYDUMP=m
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+CONFIG_JOYSTICK_WALKERA0701=m
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_AD7877=m
+CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_AD7879=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_INEXIO=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_HTCPEN=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_WM97XX=m
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_TOUCHSCREEN_W90X900=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_WISTRON_BTNS=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_PCF50633_PMU=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_STALDRV is not set
+CONFIG_NOZOMI=m
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_MAX3100=m
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_NVRAM=m
+CONFIG_DTLK=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+CONFIG_SONYPI=m
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
+CONFIG_MWAVE=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_CS5535_GPIO=m
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=m
+CONFIG_TCG_TIS=m
+CONFIG_TCG_NSC=m
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_INFINEON=m
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Graphics adapter I2C/DDC channel drivers
+#
+CONFIG_I2C_VOODOO3=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_PCA_ISA=m
+CONFIG_I2C_PCA_PLATFORM=m
+# CONFIG_I2C_STUB is not set
+CONFIG_SCx200_ACB=m
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_DS1682=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_PCF8575=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_BUTTERFLY=m
+CONFIG_SPI_LM70_LLP=m
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_TLE62X0=m
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_GPIOLIB is not set
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2760=m
+CONFIG_BATTERY_DS2782=m
+CONFIG_BATTERY_OLPC=m
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
+CONFIG_CHARGER_PCF50633=m
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADCXX=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7473=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_MAX1111=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_SENSORS_APPLESMC=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM8350_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_SBC7240_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# ISA-based Watchdog Cards
+#
+CONFIG_PCWATCHDOG=m
+CONFIG_MIXCOMWD=m
+CONFIG_WDT=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+CONFIG_MFD_SM501=m
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM8350_I2C=m
+CONFIG_MFD_PCF50633=m
+CONFIG_PCF50633_ADC=m
+CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
+# CONFIG_EZX_PCAP is not set
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+# CONFIG_MEDIA_ATTACH is not set
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_M52790=m
+CONFIG_VIDEO_TLV320AIC23B=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_SAA7191=m
+CONFIG_VIDEO_TVP514X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_CX25840=m
+
+#
+# MPEG video encoders
+#
+CONFIG_VIDEO_CX2341X=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_THS7303=m
+CONFIG_VIDEO_ADV7343=m
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_BT848_DVB=y
+CONFIG_VIDEO_PMS=m
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_CADET=m
+CONFIG_RADIO_RTRACK=m
+CONFIG_RADIO_RTRACK2=m
+CONFIG_RADIO_AZTECH=m
+CONFIG_RADIO_GEMTEK=m
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_RADIO_SF16FMI=m
+CONFIG_RADIO_SF16FMR2=m
+CONFIG_RADIO_TERRATEC=m
+CONFIG_RADIO_TRUST=m
+CONFIG_RADIO_TYPHOON=m
+# CONFIG_RADIO_TYPHOON_PROC_FS is not set
+CONFIG_RADIO_ZOLTRIX=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_SI470X=m
+CONFIG_USB_MR800=m
+CONFIG_RADIO_TEA5764=m
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_SIANO_MDTV=m
+
+#
+# Siano module components
+#
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported SDMC DM1105 Adapters
+#
+CONFIG_DVB_DM1105=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_IEEE1394=y
+CONFIG_DVB_FIREDTV_INPUT=y
+
+#
+# Supported DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=m
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+CONFIG_DRM=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+# CONFIG_DRM_I915_KMS is not set
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+CONFIG_FB_PM2_FIFO_DISCONNECT=y
+CONFIG_FB_CYBER2000=m
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_UVESA=m
+CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_I2C=y
+# CONFIG_FB_NVIDIA_DEBUG is not set
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+CONFIG_FB_RIVA=m
+CONFIG_FB_RIVA_I2C=y
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_I810=m
+# CONFIG_FB_I810_GTF is not set
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+# CONFIG_FB_MATROX is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_VIA=m
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+CONFIG_FB_3DFX_ACCEL=y
+CONFIG_FB_3DFX_I2C=y
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_BROADSHEET is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_LTV350QV=m
+CONFIG_LCD_ILI9320=m
+CONFIG_LCD_TDO24M=m
+CONFIG_LCD_VGG2432A4=m
+CONFIG_LCD_PLATFORM=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_CARILLO_RANCH=m
+CONFIG_BACKLIGHT_MBP_NVIDIA=m
+CONFIG_BACKLIGHT_SAHARA=m
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=m
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+CONFIG_SND_OPL4_LIB_SEQ=m
+CONFIG_SND_SBAWE_SEQ=m
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_OPL4_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_PORTMAN2X4=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_WSS_LIB=m
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB8_DSP=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_ISA=y
+CONFIG_SND_ADLIB=m
+CONFIG_SND_AD1816A=m
+CONFIG_SND_AD1848=m
+CONFIG_SND_ALS100=m
+CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8330=m
+CONFIG_SND_CS4231=m
+CONFIG_SND_CS4236=m
+CONFIG_SND_DT019X=m
+CONFIG_SND_ES968=m
+CONFIG_SND_ES1688=m
+CONFIG_SND_ES18XX=m
+CONFIG_SND_SC6000=m
+CONFIG_SND_GUSCLASSIC=m
+CONFIG_SND_GUSEXTREME=m
+CONFIG_SND_GUSMAX=m
+CONFIG_SND_INTERWAVE=m
+CONFIG_SND_INTERWAVE_STB=m
+CONFIG_SND_OPL3SA2=m
+CONFIG_SND_OPTI92X_AD1848=m
+CONFIG_SND_OPTI92X_CS4231=m
+CONFIG_SND_OPTI93X=m
+CONFIG_SND_MIRO=m
+CONFIG_SND_SB8=m
+CONFIG_SND_SB16=m
+CONFIG_SND_SBAWE=m
+CONFIG_SND_SB16_CSP=y
+CONFIG_SND_SGALAXY=m
+CONFIG_SND_SSCAPE=m
+CONFIG_SND_WAVEFRONT=m
+CONFIG_SND_MSND_PINNACLE=m
+CONFIG_SND_MSND_CLASSIC=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_NVHDMI=y
+CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_ELD=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_POWER_SAVE=y
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HIFIER=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SIS7019=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_PCMCIA=y
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_I2C_AND_SPI=m
+# CONFIG_SND_SOC_ALL_CODECS is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LOGITECH=m
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_GREENASIA_FF=y
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_WACOM=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=m
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_C67X00_HCD=m
+CONFIG_USB_XHCI_HCD=m
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_OXU210HP_HCD=m
+CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_ISP1760_HCD=m
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_HCD_SSB is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_WHCI_HCD=m
+CONFIG_USB_HWA_HCD=m
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
+CONFIG_USB_ISIGHTFW=m
+CONFIG_USB_VST=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
+# CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_AUDIO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_MIDI_GADGET=m
+CONFIG_USB_G_PRINTER=m
+# CONFIG_USB_CDC_COMPOSITE is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_WLP=m
+CONFIG_UWB_I1480U=m
+CONFIG_UWB_I1480U_WLP=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_ALIX2 is not set
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM8350=m
+CONFIG_LEDS_DAC124S085=m
+CONFIG_LEDS_BD2802=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_ACCESSIBILITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+# CONFIG_INFINIBAND is not set
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+
+#
+# SPI RTC drivers
+#
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_DS1305=m
+CONFIG_RTC_DRV_DS1390=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_DS3234=m
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_PCF50633=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+CONFIG_ASYNC_TX_DMA=y
+# CONFIG_DMATEST is not set
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+CONFIG_KS0108=m
+CONFIG_KS0108_PORT=0x378
+CONFIG_KS0108_DELAY=2
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_SMX=m
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+CONFIG_ET131X=m
+# CONFIG_ET131X_DEBUG is not set
+CONFIG_SLICOSS=m
+CONFIG_SXG=m
+CONFIG_ME4000=m
+CONFIG_MEILHAUS=m
+CONFIG_ME0600=m
+CONFIG_ME0900=m
+CONFIG_ME1000=m
+CONFIG_ME1400=m
+CONFIG_ME1600=m
+CONFIG_ME4600=m
+CONFIG_ME6000=m
+CONFIG_ME8100=m
+CONFIG_ME8200=m
+CONFIG_MEDUMMY=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set
+CONFIG_USB_IP_COMMON=m
+CONFIG_USB_IP_VHCI_HCD=m
+CONFIG_USB_IP_HOST=m
+CONFIG_W35UND=m
+CONFIG_PRISM2_USB=m
+CONFIG_ECHO=m
+CONFIG_USB_ATMEL=m
+CONFIG_POCH=m
+CONFIG_AGNX=m
+CONFIG_OTUS=m
+CONFIG_RT2860=m
+CONFIG_RT2870=m
+CONFIG_RT3070=m
+CONFIG_COMEDI=m
+# CONFIG_COMEDI_DEBUG is not set
+CONFIG_COMEDI_PCI_DRIVERS=m
+CONFIG_COMEDI_PCMCIA_DRIVERS=m
+CONFIG_COMEDI_USB_DRIVERS=m
+CONFIG_ASUS_OLED=m
+# CONFIG_PANEL is not set
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+CONFIG_RTL8187SE=m
+CONFIG_RTL8192SU=m
+# CONFIG_INPUT_MIMIO is not set
+# CONFIG_TRANZPORT is not set
+# CONFIG_EPL is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_DST=m
+# CONFIG_DST_DEBUG is not set
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
+CONFIG_STLC45XX=m
+CONFIG_B3DFG=m
+CONFIG_IDE_PHISON=m
+CONFIG_PLAN9AUTH=m
+CONFIG_HECI=m
+CONFIG_LINE6_USB=m
+CONFIG_DRM_RADEON_KMS=y
+CONFIG_USB_SERIAL_QUATECH2=m
+CONFIG_VT6655=m
+CONFIG_USB_CPC=m
+CONFIG_RDC_17F3101X=m
+CONFIG_FB_UDL=m
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_TC1100_WMI=m
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+# CONFIG_SONYPI_COMPAT is not set
+CONFIG_THINKPAD_ACPI=m
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ACPI_WMI=m
+CONFIG_ACPI_ASUS=m
+CONFIG_ACPI_TOSHIBA=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+# CONFIG_ISCSI_IBFT_FIND is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=m
+CONFIG_EXT4DEV_COMPAT=y
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=m
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
+CONFIG_OCFS2_FS_STATS=y
+# CONFIG_OCFS2_DEBUG_MASKLOG is not set
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_OCFS2_FS_POSIX_ACL=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_QUOTA_TREE=m
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+CONFIG_FSCACHE_HISTOGRAM=y
+# CONFIG_FSCACHE_DEBUG is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+CONFIG_AFFS_FS=m
+CONFIG_ECRYPT_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_OMFS_FS=m
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_EXOFS_FS=m
+# CONFIG_EXOFS_DEBUG is not set
+CONFIG_NILFS2_FS=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_UPCALL is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+CONFIG_AFS_FSCACHE=y
+CONFIG_9P_FS=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_SOLARIS_X86_PARTITION=y
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_FTRACE_SYSCALLS=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+# CONFIG_KMEMCHECK is not set
+CONFIG_STRICT_DEVMEM=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+# CONFIG_DEBUG_RODATA is not set
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_4KSTACKS is not set
+CONFIG_DOUBLEFAULT=y
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_OPTIMIZE_INLINING is not set
+
+#
+# Linux VServer
+#
+CONFIG_VSERVER_AUTO_LBACK=y
+CONFIG_VSERVER_AUTO_SINGLE=y
+CONFIG_VSERVER_COWBL=y
+CONFIG_VSERVER_VTIME=y
+CONFIG_VSERVER_DEVICE=y
+CONFIG_VSERVER_PROC_SECURE=y
+CONFIG_VSERVER_HARDCPU=y
+CONFIG_VSERVER_IDLETIME=y
+# CONFIG_VSERVER_IDLELIMIT is not set
+# CONFIG_TAGGING_NONE is not set
+# CONFIG_TAGGING_UID16 is not set
+# CONFIG_TAGGING_GID16 is not set
+CONFIG_TAGGING_ID24=y
+# CONFIG_TAGGING_INTERN is not set
+# CONFIG_TAG_NFSD is not set
+CONFIG_VSERVER_PRIVACY=y
+CONFIG_VSERVER_CONTEXTS=256
+CONFIG_VSERVER_WARN=y
+# CONFIG_VSERVER_DEBUG is not set
+CONFIG_VSERVER=y
+CONFIG_VSERVER_SECURITY=y
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+# CONFIG_SECURITY_PATH is not set
+CONFIG_SECURITY_FILE_CAPABILITIES=y
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_IMA is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_586=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_586=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+# CONFIG_KVM_TRACE is not set
+CONFIG_LGUEST=m
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_RING=y
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_NLATTR=y
diff --git a/kernel26-vserver/config.x86_64 b/kernel26-vserver/config.x86_64
new file mode 100644
index 0000000..d581a04
--- /dev/null
+++ b/kernel26-vserver/config.x86_64
@@ -0,0 +1,4338 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31
+# Sat Nov 14 15:34:39 2009
+#
+CONFIG_64BIT=y
+# CONFIG_X86_32 is not set
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_FAST_CMPXCHG_LOCAL=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
+CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_X86_64_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_TRAMPOLINE=y
+# CONFIG_KTIME_SCALAR is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION="-ARCH"
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_LZMA=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_TREE=y
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=19
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_COUNTERS=y
+
+#
+# Performance Counters
+#
+CONFIG_PERF_COUNTERS=y
+CONFIG_EVENT_PROFILE=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_MARKERS=y
+CONFIG_OPROFILE=m
+CONFIG_OPROFILE_IBS=y
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_SLOW_WORK=y
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLOCK_COMPAT=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_SMP=y
+# CONFIG_SPARSE_IRQ is not set
+CONFIG_X86_MPPARSE=y
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_PARAVIRT_GUEST=y
+# CONFIG_XEN is not set
+CONFIG_KVM_CLOCK=y
+CONFIG_KVM_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_SPINLOCKS is not set
+CONFIG_PARAVIRT_CLOCK=y
+# CONFIG_PARAVIRT_DEBUG is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_CPU=y
+CONFIG_X86_L1_CACHE_BYTES=64
+CONFIG_X86_INTERNODE_CACHE_BYTES=64
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+# CONFIG_X86_DS is not set
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_GART_IOMMU=y
+CONFIG_CALGARY_IOMMU=y
+CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
+# CONFIG_AMD_IOMMU is not set
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_IOMMU_API is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS=16
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_NEW_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+# CONFIG_X86_MCE_INJECT is not set
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+# CONFIG_X86_CPU_DEBUG is not set
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_DIRECT_GBPAGES=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+
+#
+# Memory hotplug is currently incompatible with Software Suspend
+#
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_X86_RESERVE_LOW_64K=y
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_EFI=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR_ALL=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+# CONFIG_CRASH_DUMP is not set
+CONFIG_KEXEC_JUMP=y
+CONFIG_PHYSICAL_START=0x1000000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x1000000
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_COMPAT_VDSO is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATION_NVS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+CONFIG_ACPI_PROCFS_POWER=y
+CONFIG_ACPI_SYSFS_POWER=y
+CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=m
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=m
+CONFIG_ACPI_SBS=m
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_POWERNOW_K8=m
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+CONFIG_X86_P4_CLOCKMOD=m
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Memory power savings
+#
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
+CONFIG_I7300_IDLE=m
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_DMAR is not set
+# CONFIG_INTR_REMAP is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+# CONFIG_PCIEASPM is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+CONFIG_PCI_STUB=m
+CONFIG_HT_IRQ=y
+CONFIG_PCI_IOV=y
+CONFIG_ISA_DMA_API=y
+CONFIG_K8_NB=y
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_IA32_EMULATION=y
+CONFIG_IA32_AOUT=m
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+# CONFIG_IPV6_MROUTE is not set
+CONFIG_NETLABEL=y
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_IPV6 is not set
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=y
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
+CONFIG_IP_DCCP_CCID3_RTO=100
+CONFIG_IP_DCCP_TFRC_LIB=y
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+CONFIG_SCTP_HMAC_SHA1=y
+# CONFIG_SCTP_HMAC_MD5 is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+# CONFIG_VLAN_8021Q_GVRP is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+CONFIG_PHONET=m
+CONFIG_IEEE802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+# CONFIG_NET_EMATCH is not set
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_DROP_MONITOR=y
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_TOIM3232_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+CONFIG_KINGSUN_DONGLE=m
+CONFIG_KSDAZZLE_DONGLE=m
+CONFIG_KS959_DONGLE=m
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+CONFIG_MCS_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+CONFIG_RXKAD=m
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=m
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_DEBUGFS is not set
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_DEFAULT_PS=y
+CONFIG_MAC80211_DEFAULT_PS_VALUE=1
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_WIMAX=m
+CONFIG_WIMAX_DEBUG_LEVEL=8
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+# CONFIG_NET_9P_DEBUG is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_TESTS=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_RAM=m
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_TS5500 is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+CONFIG_PARPORT_PC_FIFO=y
+CONFIG_PARPORT_PC_SUPERIO=y
+CONFIG_PARPORT_PC_PCMCIA=m
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG_MESSAGES is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_FD=m
+# CONFIG_PARIDE is not set
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+# CONFIG_CISS_SCSI_TAPE is not set
+CONFIG_BLK_DEV_DAC960=m
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_VROOT=y
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_IBM_ASM is not set
+CONFIG_PHANTOM=m
+CONFIG_SGI_IOC4=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+CONFIG_ICS932S401=m
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_HP_ILO=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_ISL29003=m
+CONFIG_C2PORT=m
+CONFIG_C2PORT_DURAMAR_2150=m
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_AT25=m
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+CONFIG_HAVE_IDE=y
+CONFIG_IDE=m
+
+#
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
+#
+CONFIG_IDE_XFER_MODE=y
+CONFIG_IDE_TIMINGS=y
+CONFIG_IDE_ATAPI=y
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_IDE_GD=m
+CONFIG_IDE_GD_ATA=y
+CONFIG_IDE_GD_ATAPI=y
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_DELKIN=m
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEACPI=y
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=m
+CONFIG_BLK_DEV_PLATFORM=m
+CONFIG_BLK_DEV_CMD640=m
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+CONFIG_BLK_DEV_IDEPNP=m
+CONFIG_BLK_DEV_IDEDMA_SFF=y
+
+#
+# PCI IDE chipsets support
+#
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_BLK_DEV_GENERIC=m
+CONFIG_BLK_DEV_OPTI621=m
+CONFIG_BLK_DEV_RZ1000=m
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+CONFIG_BLK_DEV_AEC62XX=m
+CONFIG_BLK_DEV_ALI15X3=m
+CONFIG_BLK_DEV_AMD74XX=m
+CONFIG_BLK_DEV_ATIIXP=m
+CONFIG_BLK_DEV_CMD64X=m
+CONFIG_BLK_DEV_TRIFLEX=m
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+CONFIG_BLK_DEV_HPT366=m
+CONFIG_BLK_DEV_JMICRON=m
+CONFIG_BLK_DEV_SC1200=m
+CONFIG_BLK_DEV_PIIX=m
+CONFIG_BLK_DEV_IT8172=m
+CONFIG_BLK_DEV_IT8213=m
+CONFIG_BLK_DEV_IT821X=m
+CONFIG_BLK_DEV_NS87415=m
+CONFIG_BLK_DEV_PDC202XX_OLD=m
+CONFIG_BLK_DEV_PDC202XX_NEW=m
+CONFIG_BLK_DEV_SVWKS=m
+CONFIG_BLK_DEV_SIIMAGE=m
+CONFIG_BLK_DEV_SIS5513=m
+CONFIG_BLK_DEV_SLC90E66=m
+CONFIG_BLK_DEV_TRM290=m
+CONFIG_BLK_DEV_VIA82CXXX=m
+CONFIG_BLK_DEV_TC86C001=m
+CONFIG_BLK_DEV_IDEDMA=y
+
+#
+# SCSI device support
+#
+CONFIG_RAID_ATTRS=m
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_FC_TGT_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC94XX=m
+# CONFIG_AIC94XX_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_DPT_I2O=m
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ARCMSR_AER=y
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+# CONFIG_SCSI_MPT2SAS_LOGGING is not set
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_FCOE=m
+CONFIG_FCOE_FNIC=m
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_EATA=m
+# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
+# CONFIG_SCSI_EATA_LINKED_COMMANDS is not set
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_IPR=m
+# CONFIG_SCSI_IPR_TRACE is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_SRP=m
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_SCSI_DH=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=0
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_ACPI=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=m
+CONFIG_SATA_SIL24=m
+CONFIG_ATA_SFF=y
+CONFIG_SATA_SVW=m
+CONFIG_ATA_PIIX=m
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_PDC_ADMA=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_SX4=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+CONFIG_SATA_INIC162X=m
+CONFIG_PATA_ACPI=m
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARTOP=m
+CONFIG_PATA_ATIIXP=m
+CONFIG_PATA_CMD640_PCI=m
+CONFIG_PATA_CMD64X=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_CYPRESS=m
+CONFIG_PATA_EFAR=m
+CONFIG_ATA_GENERIC=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+CONFIG_PATA_HPT3X3=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_JMICRON=m
+CONFIG_PATA_TRIFLEX=m
+CONFIG_PATA_MARVELL=m
+CONFIG_PATA_MPIIX=m
+CONFIG_PATA_OLDPIIX=m
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_NS87415=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_OPTIDMA=m
+CONFIG_PATA_PCMCIA=m
+CONFIG_PATA_PDC_OLD=m
+CONFIG_PATA_RADISYS=m
+CONFIG_PATA_RZ1000=m
+CONFIG_PATA_SC1200=m
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
+CONFIG_PATA_SCH=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID6_PQ=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_DELAY=m
+CONFIG_DM_UEVENT=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=m
+# CONFIG_FUSION_LOGGING is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# See the help texts for more information.
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+CONFIG_IEEE1394_OHCI1394=m
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_DV1394=m
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+CONFIG_I2O=m
+CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
+CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
+CONFIG_I2O_CONFIG=m
+CONFIG_I2O_CONFIG_OLD_IOCTL=y
+CONFIG_I2O_BUS=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_IFB=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_MACVLAN=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_VETH=m
+CONFIG_NET_SB1000=m
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_ENC28J60=m
+# CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_ETHOC=m
+CONFIG_DNET=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_HP100=m
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R6040=m
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_KS8842=m
+CONFIG_KS8851=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_SC92031=m
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_ATL2=m
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IP1000=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_VLAN is not set
+CONFIG_SIS190=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_QLA3XXX=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_JME=m
+CONFIG_NETDEV_10000=y
+CONFIG_MDIO=m
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3_DEPENDS=y
+CONFIG_CHELSIO_T3=m
+CONFIG_ENIC=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGB=m
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NIU=m
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_TEHUTI=m
+CONFIG_BNX2X=m
+CONFIG_QLGE=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_BE2NET=m
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_AIRO=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_WL3501=m
+CONFIG_PRISM54=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_ADM8211=m
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MWL8K=m
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+CONFIG_P54_PCI=m
+CONFIG_P54_SPI=m
+CONFIG_P54_LEDS=y
+CONFIG_ATH_COMMON=m
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUG is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+# CONFIG_IPW2100_DEBUG is not set
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+# CONFIG_IPW2200_DEBUG is not set
+CONFIG_LIBIPW=m
+# CONFIG_LIBIPW_DEBUG is not set
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
+CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
+# CONFIG_IWLWIFI_DEBUG is not set
+CONFIG_IWLAGN=m
+CONFIG_IWL4965=y
+CONFIG_IWL5000=y
+CONFIG_IWL3945=m
+CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+CONFIG_HOSTAP_CS=m
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_PIO=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_RT2X00=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_HT=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_RFKILL=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_HERMES=m
+CONFIG_HERMES_CACHE_FW_ON_INIT=y
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_NORTEL_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_WL12XX=m
+CONFIG_IWM=m
+# CONFIG_IWM_DEBUG is not set
+
+#
+# WiMAX Wireless Broadband devices
+#
+CONFIG_WIMAX_I2400M=m
+CONFIG_WIMAX_I2400M_USB=m
+CONFIG_WIMAX_I2400M_SDIO=m
+CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+# CONFIG_WAN is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_PPPOL2TP=m
+CONFIG_SLIP=m
+# CONFIG_SLIP_COMPRESSED is not set
+CONFIG_SLHC=m
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+# CONFIG_NET_FC is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_VIRTIO_NET=m
+CONFIG_ISDN=y
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+CONFIG_HISAX_SEDLBAUER_CS=m
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+CONFIG_INPUT_POLLDEV=m
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_SERIAL=y
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_VSXXXAA=m
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDJOY=m
+CONFIG_JOYSTICK_ZHENHUA=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+CONFIG_JOYSTICK_JOYDUMP=m
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+CONFIG_JOYSTICK_WALKERA0701=m
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_AD7877=m
+CONFIG_TOUCHSCREEN_AD7879_I2C=m
+CONFIG_TOUCHSCREEN_AD7879=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_MTOUCH=m
+CONFIG_TOUCHSCREEN_INEXIO=m
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_PENMOUNT=m
+CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
+CONFIG_TOUCHSCREEN_TOUCHWIN=m
+CONFIG_TOUCHSCREEN_WM97XX=m
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+# CONFIG_TOUCHSCREEN_WM9712 is not set
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_TOUCHSCREEN_W90X900=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_PCF50633_PMU=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+CONFIG_ROCKETPORT=m
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_STALDRV is not set
+CONFIG_NOZOMI=m
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_MAX3100=m
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_JSM=m
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_NVRAM=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
+CONFIG_MWAVE=m
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=m
+CONFIG_TCG_TIS=m
+CONFIG_TCG_NSC=m
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_INFINEON=m
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_OCORES=m
+CONFIG_I2C_SIMTEC=m
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_TAOS_EVM=m
+CONFIG_I2C_TINY_USB=m
+
+#
+# Graphics adapter I2C/DDC channel drivers
+#
+CONFIG_I2C_VOODOO3=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_PCA_PLATFORM=m
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_DS1682=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_PCF8575=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_BUTTERFLY=m
+CONFIG_SPI_LM70_LLP=m
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_TLE62X0=m
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_GPIOLIB is not set
+CONFIG_W1=m
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+CONFIG_W1_SLAVE_DS2760=m
+CONFIG_W1_SLAVE_BQ27000=m
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+CONFIG_WM8350_POWER=m
+CONFIG_BATTERY_DS2760=m
+CONFIG_BATTERY_DS2782=m
+CONFIG_BATTERY_BQ27x00=m
+CONFIG_BATTERY_MAX17040=m
+CONFIG_CHARGER_PCF50633=m
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADCXX=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7473=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_FSCPOS=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_MAX1111=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_SIS5595=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_HDAPS=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_SENSORS_APPLESMC=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_WM8350_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+CONFIG_WAFER_WDT=m
+CONFIG_I6300ESB_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_SC1200_WDT=m
+CONFIG_PC87413_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_SBC8360_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMSC37B787_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+CONFIG_SBC_EPX_C3_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+CONFIG_MFD_SM501=m
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_WM8400=m
+CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM8350_I2C=m
+CONFIG_MFD_PCF50633=m
+CONFIG_PCF50633_ADC=m
+CONFIG_PCF50633_GPIO=m
+CONFIG_AB3100_CORE=m
+# CONFIG_EZX_PCAP is not set
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_M52790=m
+CONFIG_VIDEO_TLV320AIC23B=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_BT866=m
+CONFIG_VIDEO_KS0127=m
+CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_SAA7191=m
+CONFIG_VIDEO_TVP514X=m
+CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_VPX3220=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_CX25840=m
+
+#
+# MPEG video encoders
+#
+CONFIG_VIDEO_CX2341X=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+CONFIG_VIDEO_THS7303=m
+CONFIG_VIDEO_ADV7343=m
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_BT848_DVB=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_CPIA2=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+CONFIG_VIDEO_ZORAN_AVS6EYES=m
+CONFIG_VIDEO_MEYE=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_IVTV=m
+CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CAFE_CCIC=m
+CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M111=m
+CONFIG_SOC_CAMERA_MT9T031=m
+CONFIG_SOC_CAMERA_MT9V022=m
+CONFIG_SOC_CAMERA_TW9910=m
+CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_SOC_CAMERA_OV772X=m
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+CONFIG_USB_ET61X251=m
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+CONFIG_USB_ZC0301=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_SI470X=m
+CONFIG_USB_MR800=m
+CONFIG_RADIO_TEA5764=m
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_SIANO_MDTV=m
+
+#
+# Siano module components
+#
+CONFIG_SMS_USB_DRV=m
+CONFIG_SMS_SDIO_DRV=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+CONFIG_DVB_PLUTO2=m
+
+#
+# Supported SDMC DM1105 Adapters
+#
+CONFIG_DVB_DM1105=m
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_IEEE1394=y
+CONFIG_DVB_FIREDTV_INPUT=y
+
+#
+# Supported DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_VIA=m
+CONFIG_DRM=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TDFX=m
+CONFIG_DRM_R128=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_I810=m
+CONFIG_DRM_I830=m
+CONFIG_DRM_I915=m
+# CONFIG_DRM_I915_KMS is not set
+CONFIG_DRM_MGA=m
+CONFIG_DRM_SIS=m
+CONFIG_DRM_VIA=m
+CONFIG_DRM_SAVAGE=m
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_SVGALIB=m
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_CIRRUS=m
+CONFIG_FB_PM2=m
+CONFIG_FB_PM2_FIFO_DISCONNECT=y
+CONFIG_FB_CYBER2000=m
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_UVESA=m
+CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_NVIDIA=m
+CONFIG_FB_NVIDIA_I2C=y
+# CONFIG_FB_NVIDIA_DEBUG is not set
+CONFIG_FB_NVIDIA_BACKLIGHT=y
+CONFIG_FB_RIVA=m
+CONFIG_FB_RIVA_I2C=y
+# CONFIG_FB_RIVA_DEBUG is not set
+CONFIG_FB_RIVA_BACKLIGHT=y
+CONFIG_FB_LE80578=m
+CONFIG_FB_CARILLO_RANCH=m
+# CONFIG_FB_MATROX is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+CONFIG_FB_RADEON_BACKLIGHT=y
+# CONFIG_FB_RADEON_DEBUG is not set
+CONFIG_FB_ATY128=m
+CONFIG_FB_ATY128_BACKLIGHT=y
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GENERIC_LCD=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_BACKLIGHT=y
+CONFIG_FB_S3=m
+CONFIG_FB_SAVAGE=m
+CONFIG_FB_SAVAGE_I2C=y
+CONFIG_FB_SAVAGE_ACCEL=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_VIA=m
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+CONFIG_FB_3DFX_ACCEL=y
+CONFIG_FB_3DFX_I2C=y
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_VT8623=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_BROADSHEET is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_LTV350QV=m
+CONFIG_LCD_ILI9320=m
+CONFIG_LCD_TDO24M=m
+CONFIG_LCD_VGG2432A4=m
+CONFIG_LCD_PLATFORM=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PROGEAR=m
+CONFIG_BACKLIGHT_CARILLO_RANCH=m
+CONFIG_BACKLIGHT_MBP_NVIDIA=m
+CONFIG_BACKLIGHT_SAHARA=m
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=m
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_JACK=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_PORTMAN2X4=m
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AW2=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_CODEC_ANALOG=y
+CONFIG_SND_HDA_CODEC_SIGMATEL=y
+CONFIG_SND_HDA_CODEC_VIA=y
+CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_NVHDMI=y
+CONFIG_SND_HDA_CODEC_INTELHDMI=y
+CONFIG_SND_HDA_ELD=y
+CONFIG_SND_HDA_CODEC_CONEXANT=y
+CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CMEDIA=y
+CONFIG_SND_HDA_CODEC_SI3054=y
+CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_POWER_SAVE=y
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HIFIER=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_PCMCIA=y
+CONFIG_SND_VXPOCKET=m
+CONFIG_SND_PDAUDIOCF=m
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_I2C_AND_SPI=m
+# CONFIG_SND_SOC_ALL_CODECS is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_HID_EZKEY=m
+CONFIG_HID_KYE=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_LOGITECH=m
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_GREENASIA=m
+CONFIG_GREENASIA_FF=y
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_WACOM=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_ZEROPLUS_FF=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+CONFIG_USB_MON=m
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_C67X00_HCD=m
+CONFIG_USB_XHCI_HCD=m
+# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+CONFIG_USB_ISP116X_HCD=m
+CONFIG_USB_ISP1760_HCD=m
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_HCD_SSB is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+CONFIG_USB_U132_HCD=m
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_WHCI_HCD=m
+CONFIG_USB_HWA_HCD=m
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USB_TEST=m
+CONFIG_USB_ISIGHTFW=m
+CONFIG_USB_VST=m
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
+# CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_AUDIO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_MIDI_GADGET=m
+CONFIG_USB_G_PRINTER=m
+# CONFIG_USB_CDC_COMPOSITE is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_WLP=m
+CONFIG_UWB_I1480U=m
+CONFIG_UWB_I1480U_WLP=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=m
+CONFIG_MMC_SDHCI_PLTFM=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_SPI=m
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_ALIX2 is not set
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_PCA955X=m
+CONFIG_LEDS_WM8350=m
+CONFIG_LEDS_DAC124S085=m
+CONFIG_LEDS_BD2802=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_ACCESSIBILITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+# CONFIG_INFINIBAND is not set
+CONFIG_EDAC=y
+
+#
+# Reporting subsystems
+#
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_TEST=m
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+
+#
+# SPI RTC drivers
+#
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_DS1305=m
+CONFIG_RTC_DRV_DS1390=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_DS3234=m
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=m
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+CONFIG_RTC_DRV_M48T86=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_PCF50633=m
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+CONFIG_ASYNC_TX_DMA=y
+# CONFIG_DMATEST is not set
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+CONFIG_KS0108=m
+CONFIG_KS0108_PORT=0x378
+CONFIG_KS0108_DELAY=2
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_SMX=m
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+CONFIG_ET131X=m
+# CONFIG_ET131X_DEBUG is not set
+CONFIG_SLICOSS=m
+CONFIG_SXG=m
+CONFIG_ME4000=m
+CONFIG_MEILHAUS=m
+CONFIG_ME0600=m
+CONFIG_ME0900=m
+CONFIG_ME1000=m
+CONFIG_ME1400=m
+CONFIG_ME1600=m
+CONFIG_ME4600=m
+CONFIG_ME6000=m
+CONFIG_ME8100=m
+CONFIG_ME8200=m
+# CONFIG_MEDUMMY is not set
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set
+CONFIG_USB_IP_COMMON=m
+CONFIG_USB_IP_VHCI_HCD=m
+CONFIG_USB_IP_HOST=m
+CONFIG_W35UND=m
+CONFIG_PRISM2_USB=m
+CONFIG_ECHO=m
+CONFIG_USB_ATMEL=m
+CONFIG_POCH=m
+CONFIG_AGNX=m
+CONFIG_OTUS=m
+CONFIG_RT2860=m
+CONFIG_RT2870=m
+CONFIG_RT3070=m
+CONFIG_COMEDI=m
+# CONFIG_COMEDI_DEBUG is not set
+CONFIG_COMEDI_PCI_DRIVERS=m
+CONFIG_COMEDI_PCMCIA_DRIVERS=m
+CONFIG_COMEDI_USB_DRIVERS=m
+CONFIG_ASUS_OLED=m
+# CONFIG_PANEL is not set
+# CONFIG_ALTERA_PCIE_CHDMA is not set
+CONFIG_RTL8187SE=m
+CONFIG_RTL8192SU=m
+# CONFIG_INPUT_MIMIO is not set
+# CONFIG_TRANZPORT is not set
+# CONFIG_EPL is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+CONFIG_DST=m
+# CONFIG_DST_DEBUG is not set
+CONFIG_POHMELFS=m
+# CONFIG_POHMELFS_DEBUG is not set
+CONFIG_POHMELFS_CRYPTO=y
+CONFIG_STLC45XX=m
+CONFIG_B3DFG=m
+CONFIG_IDE_PHISON=m
+CONFIG_PLAN9AUTH=m
+CONFIG_HECI=m
+CONFIG_LINE6_USB=m
+CONFIG_DRM_RADEON_KMS=y
+CONFIG_USB_SERIAL_QUATECH2=m
+CONFIG_VT6655=m
+CONFIG_USB_CPC=m
+CONFIG_RDC_17F3101X=m
+CONFIG_FB_UDL=m
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+# CONFIG_SONYPI_COMPAT is not set
+CONFIG_THINKPAD_ACPI=m
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_MENLOW=m
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ACPI_WMI=m
+CONFIG_ACPI_ASUS=m
+CONFIG_ACPI_TOSHIBA=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_EFI_VARS=m
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+# CONFIG_ISCSI_IBFT_FIND is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=m
+CONFIG_EXT4DEV_COMPAT=y
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=m
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
+CONFIG_OCFS2_FS_STATS=y
+# CONFIG_OCFS2_DEBUG_MASKLOG is not set
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_OCFS2_FS_POSIX_ACL=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_QUOTA_TREE=m
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+CONFIG_FSCACHE_HISTOGRAM=y
+# CONFIG_FSCACHE_DEBUG is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+CONFIG_AFFS_FS=m
+CONFIG_ECRYPT_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_OMFS_FS=m
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_EXOFS_FS=m
+# CONFIG_EXOFS_DEBUG is not set
+CONFIG_NILFS2_FS=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_UPCALL is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+CONFIG_AFS_FSCACHE=y
+CONFIG_9P_FS=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_SOLARIS_X86_PARTITION=y
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+# CONFIG_DLM_DEBUG is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=2048
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_FTRACE_SYSCALLS=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+# CONFIG_KMEMCHECK is not set
+CONFIG_STRICT_DEVMEM=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_X86_PTDUMP is not set
+# CONFIG_DEBUG_RODATA is not set
+# CONFIG_DEBUG_NX_TEST is not set
+# CONFIG_IOMMU_DEBUG is not set
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_OPTIMIZE_INLINING is not set
+
+#
+# Linux VServer
+#
+CONFIG_VSERVER_AUTO_LBACK=y
+CONFIG_VSERVER_AUTO_SINGLE=y
+CONFIG_VSERVER_COWBL=y
+CONFIG_VSERVER_VTIME=y
+CONFIG_VSERVER_DEVICE=y
+CONFIG_VSERVER_PROC_SECURE=y
+CONFIG_VSERVER_HARDCPU=y
+CONFIG_VSERVER_IDLETIME=y
+# CONFIG_VSERVER_IDLELIMIT is not set
+# CONFIG_TAGGING_NONE is not set
+# CONFIG_TAGGING_UID16 is not set
+# CONFIG_TAGGING_GID16 is not set
+CONFIG_TAGGING_ID24=y
+# CONFIG_TAGGING_INTERN is not set
+# CONFIG_TAG_NFSD is not set
+CONFIG_VSERVER_PRIVACY=y
+CONFIG_VSERVER_CONTEXTS=768
+CONFIG_VSERVER_WARN=y
+# CONFIG_VSERVER_DEBUG is not set
+CONFIG_VSERVER=y
+CONFIG_VSERVER_SECURITY=y
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+# CONFIG_SECURITY_PATH is not set
+CONFIG_SECURITY_FILE_CAPABILITIES=y
+# CONFIG_SECURITY_SELINUX is not set
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_IMA is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_FPU=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_X86_64=m
+CONFIG_CRYPTO_AES_NI_INTEL=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_X86_64=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_X86_64=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_KVM_AMD=m
+# CONFIG_KVM_TRACE is not set
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_NLATTR=y
diff --git a/kernel26-vserver/kernel26-vserver.install b/kernel26-vserver/kernel26-vserver.install
new file mode 100644
index 0000000..c6d875c
--- /dev/null
+++ b/kernel26-vserver/kernel26-vserver.install
@@ -0,0 +1,144 @@
+# arg 1: the new package version
+# arg 2: the old package version
+
+KERNEL_NAME=-vserver
+KERNEL_VERSION=2.6.31-vs-ARCH
+
+post_install () {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ depmod $KERNEL_VERSION
+ # generate init ramdisks
+ echo ">>> MKINITCPIO SETUP"
+ echo ">>> ----------------"
+ echo ">>> If you use LVM2, Encrypted root or software RAID,"
+ echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
+ echo ">>> More information about mkinitcpio setup can be found here:"
+ echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"
+ echo ""
+ echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
+ /sbin/mkinitcpio -p kernel26${KERNEL_NAME}
+}
+
+post_upgrade() {
+ pacman -Q grub &>/dev/null
+ hasgrub=$?
+ pacman -Q grub2 &>/dev/null
+ hasgrub2=$?
+ pacman -Q lilo &>/dev/null
+ haslilo=$?
+ # reminder notices
+ if [ $haslilo -eq 0 ]; then
+ echo ">>>"
+ if [ $hasgrub -eq 0 -o $hasgrub2 -eq 0 ]; then
+ echo ">>> If you use the LILO bootloader, you should run 'lilo' before rebooting."
+ else
+ echo ">>> You appear to be using the LILO bootloader. You should run"
+ echo ">>> 'lilo' before rebooting."
+ fi
+ echo ">>>"
+ fi
+
+ if grep "/boot" /etc/fstab 2>&1 >/dev/null; then
+ if ! grep "/boot" /etc/mtab 2>&1 >/dev/null; then
+ echo "WARNING: /boot appears to be a seperate partition but is not mounted"
+ echo " This is most likely not what you want. Please mount your /boot"
+ echo " partition and reinstall the kernel unless you are sure this is OK"
+ fi
+ fi
+
+ if [ "`vercmp $2 2.6.13`" -lt 0 ]; then
+ # important upgrade notice
+ echo ">>>"
+ echo ">>> IMPORTANT KERNEL UPGRADE NOTICE"
+ echo ">>> -------------------------------"
+ echo ">>> As of kernel 2.6.13, DevFS is NO LONGER AVAILABLE!"
+ echo ">>> If you still use DevFS, please make the transition to uDev before"
+ echo ">>> rebooting. If you really need to stay with DevFS for some reason,"
+ echo ">>> then you can manually downgrade to an older version:"
+ echo ">>>"
+ echo ">>> # pacman -U http://archlinux.org/~judd/kernel/kernel26-scsi-2.6.12.2-1.pkg.tar.gz"
+ echo ">>>"
+ echo ">>> If you choose to downgrade, don't forget to add kernel26-scsi to your"
+ echo ">>> IgnorePkg list in /etc/pacman.conf"
+ echo ">>>"
+ echo ">>> (NOTE: The following portion applies to uDev users as well!)"
+ echo ">>>"
+ echo ">>> If you use any DevFS paths in your GRUB menu.lst, then you will not"
+ echo ">>> be able to boot! Change your root= parameter to use the classic"
+ echo ">>> naming scheme."
+ echo ">>>"
+ echo ">>> EXAMPLES:"
+ echo ">>> - change root=/dev/discs/disc0/part3 to root=/dev/sda3"
+ echo ">>> - change root=/dev/md/0 to root=/dev/md0"
+ echo ">>>"
+ fi
+ # generate new init ramdisk
+ if [ "`vercmp $2 2.6.18`" -lt 0 ]; then
+ echo ">>> --------------------------------------------------------------"
+ echo ">>> | WARNING: |"
+ echo ">>> |mkinitrd is not supported anymore in kernel >=2.6.18 series!|"
+ echo ">>> | Please change to Mkinitcpio setup. |"
+ echo ">>> --------------------------------------------------------------"
+ echo ">>>"
+ fi
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ depmod $KERNEL_VERSION
+ echo ">>> MKINITCPIO SETUP"
+ echo ">>> ----------------"
+ if [ "`vercmp $2 2.6.18`" -lt 0 ]; then
+ echo ">>> Please change your bootloader config files:"
+ echo ">>> Grub: /boot/grub/menu.lst | Lilo: /etc/lilo.conf"
+ echo "------------------------------------------------"
+ echo "| - initrd26.img to kernel26${KERNEL_NAME}.img |"
+ echo "| - initrd26-full.img to kernel26${KERNEL_NAME}-fallback.img |"
+ echo "------------------------------------------------"
+ fi
+ if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
+ echo ""
+ echo ">>> New PATA/IDE subsystem - EXPERIMENTAL"
+ echo ">>> ----------"
+ echo ">>> To use the new pata drivers, change the 'ide' hook "
+ echo ">>> to 'pata' in /etc/mkinicpio.conf HOOKS="
+ echo ">>> The new system changes: /dev/hd? to /dev/sd?"
+ echo ">>> Don't forget to modify GRUB, LILO and fstab to the"
+ echo ">>> new naming system. "
+ echo ">>> eg: hda3 --> sda3, hdc8 --> sdc8"
+ echo ""
+ echo ">>> piix/ata_piix (Intel chipsets) - IMPORTANT"
+ echo "----------"
+ echo ">>> If you have enabled ide/pata/sata HOOKs in /etc/mkinitcpio.conf"
+ echo ">>> the 'ata_piix' module will be used."
+ echo ">>> This may cause your devices to shift names, eg:"
+ echo ">>> - IDE: devices from hd? to sd?"
+ echo ">>> - SATA: sda might shift to sdc if you have 2 other disks on a PIIX IDE port."
+ echo ">>> To check if this will affect you, check 'mkinitcpio -M' for piix/ata_piix"
+ echo ""
+ fi
+
+ echo ">>> If you use LVM2, Encrypted root or software RAID,"
+ echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
+ echo ">>> More information about mkinitcpio setup can be found here:"
+ echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"
+ echo ""
+ echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
+if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
+ /sbin/mkinitcpio -p kernel26${KERNEL_NAME} -m "ATTENTION:\nIf you get a kernel panic below
+and are using an Intel chipset, append 'earlymodules=piix' to the
+kernel commandline"
+else
+ /sbin/mkinitcpio -p kernel26${KERNEL_NAME}
+fi
+if [ "`vercmp $2 2.6.21`" -lt 0 ]; then
+ echo ""
+ echo "Important ACPI Information:"
+ echo ">>> Since 2.6.20.7 all possible ACPI parts are modularized."
+ echo ">>> The modules are located at:"
+ echo ">>> /lib/modules/$(uname -r)/kernel/drivers/acpi"
+ echo ">>> For more information about ACPI modules check this wiki page:"
+ echo ">>> 'http://wiki.archlinux.org/index.php/ACPI_modules'"
+fi
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/kernel26-vserver/kernel26-vserver.preset b/kernel26-vserver/kernel26-vserver.preset
new file mode 100644
index 0000000..01b9a44
--- /dev/null
+++ b/kernel26-vserver/kernel26-vserver.preset
@@ -0,0 +1,17 @@
+# mkinitcpio preset file for kernel26-vserver
+
+########################################
+# DO NOT EDIT THIS LINE:
+source /etc/mkinitcpio.d/kernel26-vserver.kver
+########################################
+ALL_config="/etc/mkinitcpio.conf"
+
+PRESETS=('default' 'fallback')
+
+#default_config="/etc/mkinitcpio.conf"
+default_image="/boot/kernel26-vserver.img"
+#default_options=""
+
+#fallback_config="/etc/mkinitcpio.conf"
+fallback_image="/boot/kernel26-vserver-fallback.img"
+fallback_options="-S autodetect"
diff --git a/kernel26-vserver/patch-2.6.31.6-vs2.3.0.36.24.diff b/kernel26-vserver/patch-2.6.31.6-vs2.3.0.36.24.diff
new file mode 100644
index 0000000..9cd6e0b
--- /dev/null
+++ b/kernel26-vserver/patch-2.6.31.6-vs2.3.0.36.24.diff
@@ -0,0 +1,28766 @@
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/Kconfig
+--- linux-2.6.31.6/arch/alpha/Kconfig 2009-03-24 14:18:07.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -666,6 +666,8 @@ config DUMMY_CONSOLE
+ depends on VGA_HOSE
+ default y
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/kernel/entry.S linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/entry.S
+--- linux-2.6.31.6/arch/alpha/kernel/entry.S 2009-06-11 17:11:46.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/entry.S 2009-09-10 16:11:43.000000000 +0200
+@@ -874,24 +874,15 @@ sys_getxgid:
+ .globl sys_getxpid
+ .ent sys_getxpid
+ sys_getxpid:
++ lda $sp, -16($sp)
++ stq $26, 0($sp)
+ .prologue 0
+- ldq $2, TI_TASK($8)
+
+- /* See linux/kernel/timer.c sys_getppid for discussion
+- about this loop. */
+- ldq $3, TASK_GROUP_LEADER($2)
+- ldq $4, TASK_REAL_PARENT($3)
+- ldl $0, TASK_TGID($2)
+-1: ldl $1, TASK_TGID($4)
+-#ifdef CONFIG_SMP
+- mov $4, $5
+- mb
+- ldq $3, TASK_GROUP_LEADER($2)
+- ldq $4, TASK_REAL_PARENT($3)
+- cmpeq $4, $5, $5
+- beq $5, 1b
+-#endif
+- stq $1, 80($sp)
++ lda $16, 96($sp)
++ jsr $26, do_getxpid
++ ldq $26, 0($sp)
++
++ lda $sp, 16($sp)
+ ret
+ .end sys_getxpid
+
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/kernel/osf_sys.c linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/osf_sys.c
+--- linux-2.6.31.6/arch/alpha/kernel/osf_sys.c 2009-09-10 15:25:14.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/osf_sys.c 2009-09-10 16:11:43.000000000 +0200
+@@ -872,7 +872,7 @@ SYSCALL_DEFINE2(osf_gettimeofday, struct
+ {
+ if (tv) {
+ struct timeval ktv;
+- do_gettimeofday(&ktv);
++ vx_gettimeofday(&ktv);
+ if (put_tv32(tv, &ktv))
+ return -EFAULT;
+ }
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/kernel/ptrace.c linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/ptrace.c
+--- linux-2.6.31.6/arch/alpha/kernel/ptrace.c 2009-09-10 15:25:14.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/ptrace.c 2009-09-10 16:11:43.000000000 +0200
+@@ -14,6 +14,7 @@
+ #include <linux/slab.h>
+ #include <linux/security.h>
+ #include <linux/signal.h>
++#include <linux/vs_base.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/pgtable.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/kernel/systbls.S linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/systbls.S
+--- linux-2.6.31.6/arch/alpha/kernel/systbls.S 2009-03-24 14:18:08.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/systbls.S 2009-09-10 16:11:43.000000000 +0200
+@@ -446,7 +446,7 @@ sys_call_table:
+ .quad sys_stat64 /* 425 */
+ .quad sys_lstat64
+ .quad sys_fstat64
+- .quad sys_ni_syscall /* sys_vserver */
++ .quad sys_vserver /* sys_vserver */
+ .quad sys_ni_syscall /* sys_mbind */
+ .quad sys_ni_syscall /* sys_get_mempolicy */
+ .quad sys_ni_syscall /* sys_set_mempolicy */
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/traps.c
+--- linux-2.6.31.6/arch/alpha/kernel/traps.c 2009-06-11 17:11:46.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -183,7 +183,8 @@ die_if_kernel(char * str, struct pt_regs
+ #ifdef CONFIG_SMP
+ printk("CPU %d ", hard_smp_processor_id());
+ #endif
+- printk("%s(%d): %s %ld\n", current->comm, task_pid_nr(current), str, err);
++ printk("%s(%d[#%u]): %s %ld\n", current->comm,
++ task_pid_nr(current), current->xid, str, err);
+ dik_show_regs(regs, r9_15);
+ add_taint(TAINT_DIE);
+ dik_show_trace((unsigned long *)(regs+1));
+diff -NurpP --minimal linux-2.6.31.6/arch/alpha/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/mm/fault.c
+--- linux-2.6.31.6/arch/alpha/mm/fault.c 2009-09-10 15:25:14.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/alpha/mm/fault.c 2009-09-10 16:11:43.000000000 +0200
+@@ -193,8 +193,8 @@ do_page_fault(unsigned long address, uns
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk(KERN_ALERT "VM: killing process %s(%d)\n",
+- current->comm, task_pid_nr(current));
++ printk(KERN_ALERT "VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (!user_mode(regs))
+ goto no_context;
+ do_group_exit(SIGKILL);
+diff -NurpP --minimal linux-2.6.31.6/arch/arm/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/arm/Kconfig
+--- linux-2.6.31.6/arch/arm/Kconfig 2009-09-10 15:25:14.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/arm/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -1483,6 +1483,8 @@ source "fs/Kconfig"
+
+ source "arch/arm/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/arm/kernel/calls.S linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/calls.S
+--- linux-2.6.31.6/arch/arm/kernel/calls.S 2009-09-10 15:25:15.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/calls.S 2009-09-10 16:11:43.000000000 +0200
+@@ -322,7 +322,7 @@
+ /* 310 */ CALL(sys_request_key)
+ CALL(sys_keyctl)
+ CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
+-/* vserver */ CALL(sys_ni_syscall)
++ CALL(sys_vserver)
+ CALL(sys_ioprio_set)
+ /* 315 */ CALL(sys_ioprio_get)
+ CALL(sys_inotify_init)
+diff -NurpP --minimal linux-2.6.31.6/arch/arm/kernel/process.c linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/process.c
+--- linux-2.6.31.6/arch/arm/kernel/process.c 2009-09-10 15:25:15.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/process.c 2009-09-10 16:11:43.000000000 +0200
+@@ -269,7 +269,8 @@ void __show_regs(struct pt_regs *regs)
+ void show_regs(struct pt_regs * regs)
+ {
+ printk("\n");
+- printk("Pid: %d, comm: %20s\n", task_pid_nr(current), current->comm);
++ printk("Pid: %d[#%u], comm: %20s\n",
++ task_pid_nr(current), current->xid, current->comm);
+ __show_regs(regs);
+ __backtrace();
+ }
+diff -NurpP --minimal linux-2.6.31.6/arch/arm/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/traps.c
+--- linux-2.6.31.6/arch/arm/kernel/traps.c 2009-06-11 17:11:49.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/arm/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -228,8 +228,8 @@ static void __die(const char *str, int e
+ str, err, ++die_counter);
+ print_modules();
+ __show_regs(regs);
+- printk("Process %s (pid: %d, stack limit = 0x%p)\n",
+- tsk->comm, task_pid_nr(tsk), thread + 1);
++ printk("Process %s (pid: %d:#%u, stack limit = 0x%p)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid, thread + 1);
+
+ if (!user_mode(regs) || in_interrupt()) {
+ dump_mem("Stack: ", regs->ARM_sp,
+diff -NurpP --minimal linux-2.6.31.6/arch/arm/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/arm/mm/fault.c
+--- linux-2.6.31.6/arch/arm/mm/fault.c 2009-09-10 15:25:18.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/arm/mm/fault.c 2009-09-10 16:11:43.000000000 +0200
+@@ -294,7 +294,8 @@ do_page_fault(unsigned long addr, unsign
+ * happened to us that made us unable to handle
+ * the page fault gracefully.
+ */
+- printk("VM: killing process %s\n", tsk->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ do_group_exit(SIGKILL);
+ return 0;
+ }
+diff -NurpP --minimal linux-2.6.31.6/arch/avr32/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/avr32/mm/fault.c
+--- linux-2.6.31.6/arch/avr32/mm/fault.c 2009-09-10 15:25:20.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/avr32/mm/fault.c 2009-09-29 17:32:09.000000000 +0200
+@@ -216,7 +216,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: Killing process %s\n", tsk->comm);
++ printk("VM: Killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/cris/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/cris/Kconfig
+--- linux-2.6.31.6/arch/cris/Kconfig 2009-06-11 17:11:56.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/cris/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -685,6 +685,8 @@ source "drivers/staging/Kconfig"
+
+ source "arch/cris/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/cris/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/cris/mm/fault.c
+--- linux-2.6.31.6/arch/cris/mm/fault.c 2009-09-10 15:25:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/cris/mm/fault.c 2009-09-29 17:25:13.000000000 +0200
+@@ -245,7 +245,8 @@ do_page_fault(unsigned long address, str
+
+ out_of_memory:
+ up_read(&mm->mmap_sem);
+- printk("VM: killing process %s\n", tsk->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if (user_mode(regs))
+ do_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/frv/kernel/kernel_thread.S linux-2.6.31.6-vs2.3.0.36.24/arch/frv/kernel/kernel_thread.S
+--- linux-2.6.31.6/arch/frv/kernel/kernel_thread.S 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/frv/kernel/kernel_thread.S 2009-09-10 16:11:43.000000000 +0200
+@@ -37,7 +37,7 @@ kernel_thread:
+
+ # start by forking the current process, but with shared VM
+ setlos.p #__NR_clone,gr7 ; syscall number
+- ori gr10,#CLONE_VM,gr8 ; first syscall arg [clone_flags]
++ ori gr10,#CLONE_KT,gr8 ; first syscall arg [clone_flags]
+ sethi.p #0xe4e4,gr9 ; second syscall arg [newsp]
+ setlo #0xe4e4,gr9
+ setlos.p #0,gr10 ; third syscall arg [parent_tidptr]
+diff -NurpP --minimal linux-2.6.31.6/arch/frv/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/frv/mm/fault.c
+--- linux-2.6.31.6/arch/frv/mm/fault.c 2009-09-10 15:25:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/frv/mm/fault.c 2009-09-29 17:25:48.000000000 +0200
+@@ -257,7 +257,8 @@ asmlinkage void do_page_fault(int datamm
+ */
+ out_of_memory:
+ up_read(&mm->mmap_sem);
+- printk("VM: killing process %s\n", current->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (user_mode(__frame))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/h8300/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/h8300/Kconfig
+--- linux-2.6.31.6/arch/h8300/Kconfig 2009-03-24 14:18:24.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/h8300/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -226,6 +226,8 @@ source "fs/Kconfig"
+
+ source "arch/h8300/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/ia32/ia32_entry.S linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/ia32/ia32_entry.S
+--- linux-2.6.31.6/arch/ia64/ia32/ia32_entry.S 2009-06-11 17:11:57.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/ia32/ia32_entry.S 2009-09-10 16:11:43.000000000 +0200
+@@ -451,7 +451,7 @@ ia32_syscall_table:
+ data8 sys_tgkill /* 270 */
+ data8 compat_sys_utimes
+ data8 sys32_fadvise64_64
+- data8 sys_ni_syscall
++ data8 sys32_vserver
+ data8 sys_ni_syscall
+ data8 sys_ni_syscall /* 275 */
+ data8 sys_ni_syscall
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/Kconfig
+--- linux-2.6.31.6/arch/ia64/Kconfig 2009-09-10 15:25:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -676,6 +676,8 @@ source "fs/Kconfig"
+
+ source "arch/ia64/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/kernel/entry.S linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/entry.S
+--- linux-2.6.31.6/arch/ia64/kernel/entry.S 2009-09-10 15:25:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/entry.S 2009-09-10 16:11:43.000000000 +0200
+@@ -1753,7 +1753,7 @@ sys_call_table:
+ data8 sys_mq_notify
+ data8 sys_mq_getsetattr
+ data8 sys_kexec_load
+- data8 sys_ni_syscall // reserved for vserver
++ data8 sys_vserver
+ data8 sys_waitid // 1270
+ data8 sys_add_key
+ data8 sys_request_key
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/kernel/perfmon.c linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/perfmon.c
+--- linux-2.6.31.6/arch/ia64/kernel/perfmon.c 2009-09-10 15:25:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/perfmon.c 2009-09-10 16:11:43.000000000 +0200
+@@ -41,6 +41,7 @@
+ #include <linux/rcupdate.h>
+ #include <linux/completion.h>
+ #include <linux/tracehook.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/errno.h>
+ #include <asm/intrinsics.h>
+@@ -2372,7 +2373,7 @@ pfm_smpl_buffer_alloc(struct task_struct
+ */
+ insert_vm_struct(mm, vma);
+
+- mm->total_vm += size >> PAGE_SHIFT;
++ vx_vmpages_add(mm, size >> PAGE_SHIFT);
+ vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
+ vma_pages(vma));
+ up_write(&task->mm->mmap_sem);
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/kernel/process.c linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/process.c
+--- linux-2.6.31.6/arch/ia64/kernel/process.c 2009-06-11 17:11:57.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/process.c 2009-09-10 16:11:43.000000000 +0200
+@@ -110,8 +110,8 @@ show_regs (struct pt_regs *regs)
+ unsigned long ip = regs->cr_iip + ia64_psr(regs)->ri;
+
+ print_modules();
+- printk("\nPid: %d, CPU %d, comm: %20s\n", task_pid_nr(current),
+- smp_processor_id(), current->comm);
++ printk("\nPid: %d[#%u], CPU %d, comm: %20s\n", task_pid_nr(current),
++ current->xid, smp_processor_id(), current->comm);
+ printk("psr : %016lx ifs : %016lx ip : [<%016lx>] %s (%s)\n",
+ regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(),
+ init_utsname()->release);
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/kernel/ptrace.c linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/ptrace.c
+--- linux-2.6.31.6/arch/ia64/kernel/ptrace.c 2009-09-10 15:25:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/ptrace.c 2009-09-10 16:11:43.000000000 +0200
+@@ -22,6 +22,7 @@
+ #include <linux/regset.h>
+ #include <linux/elf.h>
+ #include <linux/tracehook.h>
++#include <linux/vs_base.h>
+
+ #include <asm/pgtable.h>
+ #include <asm/processor.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/traps.c
+--- linux-2.6.31.6/arch/ia64/kernel/traps.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -60,8 +60,9 @@ die (const char *str, struct pt_regs *re
+ put_cpu();
+
+ if (++die.lock_owner_depth < 3) {
+- printk("%s[%d]: %s %ld [%d]\n",
+- current->comm, task_pid_nr(current), str, err, ++die_counter);
++ printk("%s[%d[#%u]]: %s %ld [%d]\n",
++ current->comm, task_pid_nr(current), current->xid,
++ str, err, ++die_counter);
+ if (notify_die(DIE_OOPS, str, regs, err, 255, SIGSEGV)
+ != NOTIFY_STOP)
+ show_regs(regs);
+@@ -324,8 +325,9 @@ handle_fpu_swa (int fp_fault, struct pt_
+ if ((last.count & 15) < 5 && (ia64_fetchadd(1, &last.count, acq) & 15) < 5) {
+ last.time = current_jiffies + 5 * HZ;
+ printk(KERN_WARNING
+- "%s(%d): floating-point assist fault at ip %016lx, isr %016lx\n",
+- current->comm, task_pid_nr(current), regs->cr_iip + ia64_psr(regs)->ri, isr);
++ "%s(%d[#%u]): floating-point assist fault at ip %016lx, isr %016lx\n",
++ current->comm, task_pid_nr(current), current->xid,
++ regs->cr_iip + ia64_psr(regs)->ri, isr);
+ }
+ }
+ }
+diff -NurpP --minimal linux-2.6.31.6/arch/ia64/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/mm/fault.c
+--- linux-2.6.31.6/arch/ia64/mm/fault.c 2009-09-10 15:25:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/ia64/mm/fault.c 2009-09-29 17:26:21.000000000 +0200
+@@ -10,6 +10,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/kprobes.h>
+ #include <linux/kdebug.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/pgtable.h>
+ #include <asm/processor.h>
+@@ -281,7 +282,8 @@ ia64_do_page_fault (unsigned long addres
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk(KERN_CRIT "VM: killing process %s\n", current->comm);
++ printk(KERN_CRIT "VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/m32r/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/m32r/kernel/traps.c
+--- linux-2.6.31.6/arch/m32r/kernel/traps.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m32r/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -196,8 +196,9 @@ static void show_registers(struct pt_reg
+ } else {
+ printk("SPI: %08lx\n", sp);
+ }
+- printk("Process %s (pid: %d, process nr: %d, stackpage=%08lx)",
+- current->comm, task_pid_nr(current), 0xffff & i, 4096+(unsigned long)current);
++ printk("Process %s (pid: %d[#%u], process nr: %d, stackpage=%08lx)",
++ current->comm, task_pid_nr(current), current->xid,
++ 0xffff & i, 4096+(unsigned long)current);
+
+ /*
+ * When in-kernel, we also print out the stack and code at the
+diff -NurpP --minimal linux-2.6.31.6/arch/m32r/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/m32r/mm/fault.c
+--- linux-2.6.31.6/arch/m32r/mm/fault.c 2009-09-10 15:25:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m32r/mm/fault.c 2009-09-29 17:26:48.000000000 +0200
+@@ -276,7 +276,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", tsk->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if (error_code & ACE_USERMODE)
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/m68k/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/Kconfig
+--- linux-2.6.31.6/arch/m68k/Kconfig 2009-11-12 12:10:08.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/Kconfig 2009-11-12 12:26:38.000000000 +0100
+@@ -616,6 +616,8 @@ source "fs/Kconfig"
+
+ source "arch/m68k/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/m68k/kernel/ptrace.c linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/kernel/ptrace.c
+--- linux-2.6.31.6/arch/m68k/kernel/ptrace.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/kernel/ptrace.c 2009-09-10 16:11:43.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/ptrace.h>
+ #include <linux/user.h>
+ #include <linux/signal.h>
++#include <linux/vs_base.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/page.h>
+@@ -269,6 +270,8 @@ long arch_ptrace(struct task_struct *chi
+ ret = ptrace_request(child, request, addr, data);
+ break;
+ }
++ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
++ goto out_tsk;
+
+ return ret;
+ out_eio:
+diff -NurpP --minimal linux-2.6.31.6/arch/m68k/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/kernel/traps.c
+--- linux-2.6.31.6/arch/m68k/kernel/traps.c 2009-09-10 15:25:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -906,8 +906,8 @@ void show_registers(struct pt_regs *regs
+ printk("d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n",
+ regs->d4, regs->d5, regs->a0, regs->a1);
+
+- printk("Process %s (pid: %d, task=%p)\n",
+- current->comm, task_pid_nr(current), current);
++ printk("Process %s (pid: %d[#%u], task=%p)\n",
++ current->comm, task_pid_nr(current), current->xid, current);
+ addr = (unsigned long)&fp->un;
+ printk("Frame format=%X ", regs->format);
+ switch (regs->format) {
+diff -NurpP --minimal linux-2.6.31.6/arch/m68k/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/mm/fault.c
+--- linux-2.6.31.6/arch/m68k/mm/fault.c 2009-09-10 15:25:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68k/mm/fault.c 2009-09-29 17:27:45.000000000 +0200
+@@ -186,7 +186,8 @@ out_of_memory:
+ goto survive;
+ }
+
+- printk("VM: killing process %s\n", current->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+
+diff -NurpP --minimal linux-2.6.31.6/arch/m68knommu/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/m68knommu/Kconfig
+--- linux-2.6.31.6/arch/m68knommu/Kconfig 2009-06-11 17:11:59.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68knommu/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -721,6 +721,8 @@ source "fs/Kconfig"
+
+ source "arch/m68knommu/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/m68knommu/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/m68knommu/kernel/traps.c
+--- linux-2.6.31.6/arch/m68knommu/kernel/traps.c 2009-09-10 15:25:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/m68knommu/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -78,8 +78,9 @@ void die_if_kernel(char *str, struct pt_
+ printk(KERN_EMERG "d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n",
+ fp->d4, fp->d5, fp->a0, fp->a1);
+
+- printk(KERN_EMERG "Process %s (pid: %d, stackpage=%08lx)\n",
+- current->comm, current->pid, PAGE_SIZE+(unsigned long)current);
++ printk(KERN_EMERG "Process %s (pid: %d[#%u], stackpage=%08lx)\n",
++ current->comm, task_pid_nr(current), current->xid,
++ PAGE_SIZE+(unsigned long)current);
+ show_stack(NULL, (unsigned long *)(fp + 1));
+ add_taint(TAINT_DIE);
+ do_exit(SIGSEGV);
+diff -NurpP --minimal linux-2.6.31.6/arch/microblaze/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/microblaze/mm/fault.c
+--- linux-2.6.31.6/arch/microblaze/mm/fault.c 2009-09-10 15:25:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/microblaze/mm/fault.c 2009-09-29 17:28:08.000000000 +0200
+@@ -279,7 +279,8 @@ out_of_memory:
+ goto survive;
+ }
+ up_read(&mm->mmap_sem);
+- printk(KERN_WARNING "VM: killing process %s\n", current->comm);
++ printk(KERN_WARNING "VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (user_mode(regs))
+ do_exit(SIGKILL);
+ bad_page_fault(regs, address, SIGKILL);
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/mips/Kconfig
+--- linux-2.6.31.6/arch/mips/Kconfig 2009-09-10 15:25:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -2186,6 +2186,8 @@ source "fs/Kconfig"
+
+ source "arch/mips/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/ptrace.c linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/ptrace.c
+--- linux-2.6.31.6/arch/mips/kernel/ptrace.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/ptrace.c 2009-09-10 16:11:43.000000000 +0200
+@@ -25,6 +25,7 @@
+ #include <linux/security.h>
+ #include <linux/audit.h>
+ #include <linux/seccomp.h>
++#include <linux/vs_base.h>
+
+ #include <asm/byteorder.h>
+ #include <asm/cpu.h>
+@@ -259,6 +260,9 @@ long arch_ptrace(struct task_struct *chi
+ {
+ int ret;
+
++ if (!vx_check(vx_task_xid(child), VS_WATCH_P | VS_IDENT))
++ goto out;
++
+ switch (request) {
+ /* when I and D space are separate, these will need to be fixed. */
+ case PTRACE_PEEKTEXT: /* read word at location addr. */
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/scall32-o32.S linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall32-o32.S
+--- linux-2.6.31.6/arch/mips/kernel/scall32-o32.S 2009-09-10 15:25:38.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall32-o32.S 2009-09-10 16:11:43.000000000 +0200
+@@ -597,7 +597,7 @@ einval: li v0, -ENOSYS
+ sys sys_mq_timedreceive 5
+ sys sys_mq_notify 2 /* 4275 */
+ sys sys_mq_getsetattr 3
+- sys sys_ni_syscall 0 /* sys_vserver */
++ sys sys_vserver 3
+ sys sys_waitid 5
+ sys sys_ni_syscall 0 /* available, was setaltroot */
+ sys sys_add_key 5 /* 4280 */
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/scall64-64.S linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-64.S
+--- linux-2.6.31.6/arch/mips/kernel/scall64-64.S 2009-09-10 15:25:38.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-64.S 2009-09-10 16:11:43.000000000 +0200
+@@ -434,7 +434,7 @@ sys_call_table:
+ PTR sys_mq_timedreceive
+ PTR sys_mq_notify
+ PTR sys_mq_getsetattr /* 5235 */
+- PTR sys_ni_syscall /* sys_vserver */
++ PTR sys_vserver
+ PTR sys_waitid
+ PTR sys_ni_syscall /* available, was setaltroot */
+ PTR sys_add_key
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/scall64-n32.S linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-n32.S
+--- linux-2.6.31.6/arch/mips/kernel/scall64-n32.S 2009-09-10 15:25:38.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-n32.S 2009-09-10 16:11:43.000000000 +0200
+@@ -360,7 +360,7 @@ EXPORT(sysn32_call_table)
+ PTR compat_sys_mq_timedreceive
+ PTR compat_sys_mq_notify
+ PTR compat_sys_mq_getsetattr
+- PTR sys_ni_syscall /* 6240, sys_vserver */
++ PTR sys32_vserver /* 6240 */
+ PTR compat_sys_waitid
+ PTR sys_ni_syscall /* available, was setaltroot */
+ PTR sys_add_key
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/scall64-o32.S linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-o32.S
+--- linux-2.6.31.6/arch/mips/kernel/scall64-o32.S 2009-09-10 15:25:38.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/scall64-o32.S 2009-09-10 16:11:43.000000000 +0200
+@@ -480,7 +480,7 @@ sys_call_table:
+ PTR compat_sys_mq_timedreceive
+ PTR compat_sys_mq_notify /* 4275 */
+ PTR compat_sys_mq_getsetattr
+- PTR sys_ni_syscall /* sys_vserver */
++ PTR sys32_vserver
+ PTR sys_32_waitid
+ PTR sys_ni_syscall /* available, was setaltroot */
+ PTR sys_add_key /* 4280 */
+diff -NurpP --minimal linux-2.6.31.6/arch/mips/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/traps.c
+--- linux-2.6.31.6/arch/mips/kernel/traps.c 2009-09-10 15:25:38.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mips/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -335,9 +335,10 @@ void show_registers(const struct pt_regs
+
+ __show_regs(regs);
+ print_modules();
+- printk("Process %s (pid: %d, threadinfo=%p, task=%p, tls=%0*lx)\n",
+- current->comm, current->pid, current_thread_info(), current,
+- field, current_thread_info()->tp_value);
++ printk("Process %s (pid: %d:#%u, threadinfo=%p, task=%p, tls=%0*lx)\n",
++ current->comm, task_pid_nr(current), current->xid,
++ current_thread_info(), current,
++ field, current_thread_info()->tp_value);
+ if (cpu_has_userlocal) {
+ unsigned long tls;
+
+diff -NurpP --minimal linux-2.6.31.6/arch/mn10300/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/mn10300/mm/fault.c
+--- linux-2.6.31.6/arch/mn10300/mm/fault.c 2009-09-10 15:25:39.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/mn10300/mm/fault.c 2009-09-29 17:28:34.000000000 +0200
+@@ -339,7 +339,8 @@ no_context:
+ out_of_memory:
+ up_read(&mm->mmap_sem);
+ monitor_signal(regs);
+- printk(KERN_ALERT "VM: killing process %s\n", tsk->comm);
++ printk(KERN_ALERT "VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if ((fault_code & MMUFCR_xFC_ACCESS) == MMUFCR_xFC_ACCESS_USR)
+ do_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/parisc/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/Kconfig
+--- linux-2.6.31.6/arch/parisc/Kconfig 2009-09-10 15:25:39.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -293,6 +293,8 @@ source "fs/Kconfig"
+
+ source "arch/parisc/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/parisc/kernel/syscall_table.S linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/kernel/syscall_table.S
+--- linux-2.6.31.6/arch/parisc/kernel/syscall_table.S 2009-09-10 15:25:40.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/kernel/syscall_table.S 2009-09-10 16:11:43.000000000 +0200
+@@ -361,7 +361,7 @@
+ ENTRY_COMP(mbind) /* 260 */
+ ENTRY_COMP(get_mempolicy)
+ ENTRY_COMP(set_mempolicy)
+- ENTRY_SAME(ni_syscall) /* 263: reserved for vserver */
++ ENTRY_DIFF(vserver)
+ ENTRY_SAME(add_key)
+ ENTRY_SAME(request_key) /* 265 */
+ ENTRY_SAME(keyctl)
+diff -NurpP --minimal linux-2.6.31.6/arch/parisc/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/kernel/traps.c
+--- linux-2.6.31.6/arch/parisc/kernel/traps.c 2009-09-10 15:25:40.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -236,8 +236,9 @@ void die_if_kernel(char *str, struct pt_
+ if (err == 0)
+ return; /* STFU */
+
+- printk(KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n",
+- current->comm, task_pid_nr(current), str, err, regs->iaoq[0]);
++ printk(KERN_CRIT "%s (pid %d:#%u): %s (code %ld) at " RFMT "\n",
++ current->comm, task_pid_nr(current), current->xid,
++ str, err, regs->iaoq[0]);
+ #ifdef PRINT_USER_FAULTS
+ /* XXX for debugging only */
+ show_regs(regs);
+@@ -270,8 +271,8 @@ void die_if_kernel(char *str, struct pt_
+ pdc_console_restart();
+
+ if (err)
+- printk(KERN_CRIT "%s (pid %d): %s (code %ld)\n",
+- current->comm, task_pid_nr(current), str, err);
++ printk(KERN_CRIT "%s (pid %d:#%u): %s (code %ld)\n",
++ current->comm, task_pid_nr(current), current->xid, str, err);
+
+ /* Wot's wrong wif bein' racy? */
+ if (current->thread.flags & PARISC_KERNEL_DEATH) {
+diff -NurpP --minimal linux-2.6.31.6/arch/parisc/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/mm/fault.c
+--- linux-2.6.31.6/arch/parisc/mm/fault.c 2009-09-10 15:25:40.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/parisc/mm/fault.c 2009-09-10 16:11:43.000000000 +0200
+@@ -237,8 +237,9 @@ bad_area:
+
+ #ifdef PRINT_USER_FAULTS
+ printk(KERN_DEBUG "\n");
+- printk(KERN_DEBUG "do_page_fault() pid=%d command='%s' type=%lu address=0x%08lx\n",
+- task_pid_nr(tsk), tsk->comm, code, address);
++ printk(KERN_DEBUG "do_page_fault() pid=%d:#%u "
++ "command='%s' type=%lu address=0x%08lx\n",
++ task_pid_nr(tsk), tsk->xid, tsk->comm, code, address);
+ if (vma) {
+ printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n",
+ vma->vm_start, vma->vm_end);
+@@ -264,7 +265,8 @@ no_context:
+
+ out_of_memory:
+ up_read(&mm->mmap_sem);
+- printk(KERN_CRIT "VM: killing process %s\n", current->comm);
++ printk(KERN_CRIT "VM: killing process %s(%d:#%u)\n",
++ current->comm, current->pid, current->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/include/asm/unistd.h linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/include/asm/unistd.h
+--- linux-2.6.31.6/arch/powerpc/include/asm/unistd.h 2009-09-10 15:25:41.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/include/asm/unistd.h 2009-10-22 01:07:37.000000000 +0200
+@@ -275,7 +275,7 @@
+ #endif
+ #define __NR_rtas 255
+ #define __NR_sys_debug_setcontext 256
+-/* Number 257 is reserved for vserver */
++#define __NR_vserver 257
+ #define __NR_migrate_pages 258
+ #define __NR_mbind 259
+ #define __NR_get_mempolicy 260
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/Kconfig
+--- linux-2.6.31.6/arch/powerpc/Kconfig 2009-09-10 15:25:40.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -933,6 +933,8 @@ source "lib/Kconfig"
+
+ source "arch/powerpc/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ config KEYS_COMPAT
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/kernel/irq.c linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/irq.c
+--- linux-2.6.31.6/arch/powerpc/kernel/irq.c 2009-09-10 15:25:41.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/irq.c 2009-09-10 16:15:56.000000000 +0200
+@@ -54,6 +54,7 @@
+ #include <linux/pci.h>
+ #include <linux/debugfs.h>
+ #include <linux/perf_counter.h>
++#include <linux/vs_context.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/kernel/process.c linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/process.c
+--- linux-2.6.31.6/arch/powerpc/kernel/process.c 2009-09-10 15:25:41.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/process.c 2009-09-10 16:11:43.000000000 +0200
+@@ -519,8 +519,9 @@ void show_regs(struct pt_regs * regs)
+ #else
+ printk("DAR: "REG", DSISR: "REG"\n", regs->dar, regs->dsisr);
+ #endif
+- printk("TASK = %p[%d] '%s' THREAD: %p",
+- current, task_pid_nr(current), current->comm, task_thread_info(current));
++ printk("TASK = %p[%d,#%u] '%s' THREAD: %p",
++ current, task_pid_nr(current), current->xid,
++ current->comm, task_thread_info(current));
+
+ #ifdef CONFIG_SMP
+ printk(" CPU: %d", raw_smp_processor_id());
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/kernel/traps.c linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/traps.c
+--- linux-2.6.31.6/arch/powerpc/kernel/traps.c 2009-09-10 15:25:41.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/traps.c 2009-09-10 16:11:43.000000000 +0200
+@@ -931,8 +931,9 @@ void nonrecoverable_exception(struct pt_
+
+ void trace_syscall(struct pt_regs *regs)
+ {
+- printk("Task: %p(%d), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
+- current, task_pid_nr(current), regs->nip, regs->link, regs->gpr[0],
++ printk("Task: %p(%d[#%u]), PC: %08lX/%08lX, Syscall: %3ld, Result: %s%ld %s\n",
++ current, task_pid_nr(current), current->xid,
++ regs->nip, regs->link, regs->gpr[0],
+ regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
+ }
+
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/kernel/vdso.c linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/vdso.c
+--- linux-2.6.31.6/arch/powerpc/kernel/vdso.c 2009-03-24 14:18:35.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/kernel/vdso.c 2009-09-10 16:11:43.000000000 +0200
+@@ -22,6 +22,7 @@
+ #include <linux/security.h>
+ #include <linux/bootmem.h>
+ #include <linux/lmb.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/pgtable.h>
+ #include <asm/system.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/powerpc/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/mm/fault.c
+--- linux-2.6.31.6/arch/powerpc/mm/fault.c 2009-09-10 15:25:41.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/powerpc/mm/fault.c 2009-09-10 16:11:43.000000000 +0200
+@@ -358,7 +358,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", current->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ current->comm, current->pid, current->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ return SIGKILL;
+diff -NurpP --minimal linux-2.6.31.6/arch/s390/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/s390/Kconfig
+--- linux-2.6.31.6/arch/s390/Kconfig 2009-09-10 15:25:42.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/s390/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -624,6 +624,8 @@ source "fs/Kconfig"
+
+ source "arch/s390/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/s390/kernel/ptrace.c linux-2.6.31.6-vs2.3.0.36.24/arch/s390/kernel/ptrace.c
+--- linux-2.6.31.6/arch/s390/kernel/ptrace.c 2009-09-10 15:25:43.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/s390/kernel/ptrace.c 2009-09-10 16:17:22.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include <linux/regset.h>
+ #include <linux/tracehook.h>
+ #include <linux/seccomp.h>
++#include <linux/vs_base.h>
+ #include <trace/syscall.h>
+ #include <asm/compat.h>
+ #include <asm/segment.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/s390/kernel/syscalls.S linux-2.6.31.6-vs2.3.0.36.24/arch/s390/kernel/syscalls.S
+--- linux-2.6.31.6/arch/s390/kernel/syscalls.S 2009-09-10 15:25:43.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/s390/kernel/syscalls.S 2009-09-10 16:11:43.000000000 +0200
+@@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
+ SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260 */
+ SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
+ SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
+-NI_SYSCALL /* reserved for vserver */
++SYSCALL(sys_vserver,sys_vserver,sys32_vserver)
+ SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
+ SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
+ SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
+diff -NurpP --minimal linux-2.6.31.6/arch/s390/lib/uaccess_pt.c linux-2.6.31.6-vs2.3.0.36.24/arch/s390/lib/uaccess_pt.c
+--- linux-2.6.31.6/arch/s390/lib/uaccess_pt.c 2009-09-10 15:25:43.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/s390/lib/uaccess_pt.c 2009-09-29 17:29:02.000000000 +0200
+@@ -90,7 +90,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", current->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ return ret;
+
+ out_sigbus:
+diff -NurpP --minimal linux-2.6.31.6/arch/sh/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/sh/Kconfig
+--- linux-2.6.31.6/arch/sh/Kconfig 2009-09-10 15:25:43.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sh/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -813,6 +813,8 @@ source "fs/Kconfig"
+
+ source "arch/sh/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/sh/kernel/irq.c linux-2.6.31.6-vs2.3.0.36.24/arch/sh/kernel/irq.c
+--- linux-2.6.31.6/arch/sh/kernel/irq.c 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sh/kernel/irq.c 2009-09-10 16:11:43.000000000 +0200
+@@ -11,6 +11,7 @@
+ #include <linux/module.h>
+ #include <linux/kernel_stat.h>
+ #include <linux/seq_file.h>
++#include <linux/vs_context.h>
+ #include <asm/processor.h>
+ #include <asm/machvec.h>
+ #include <asm/uaccess.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/sh/kernel/vsyscall/vsyscall.c linux-2.6.31.6-vs2.3.0.36.24/arch/sh/kernel/vsyscall/vsyscall.c
+--- linux-2.6.31.6/arch/sh/kernel/vsyscall/vsyscall.c 2009-03-24 14:18:42.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sh/kernel/vsyscall/vsyscall.c 2009-09-10 16:11:43.000000000 +0200
+@@ -19,6 +19,7 @@
+ #include <linux/elf.h>
+ #include <linux/sched.h>
+ #include <linux/err.h>
++#include <linux/vs_memory.h>
+
+ /*
+ * Should the kernel map a VDSO page into processes and pass its
+diff -NurpP --minimal linux-2.6.31.6/arch/sh/mm/fault_32.c linux-2.6.31.6-vs2.3.0.36.24/arch/sh/mm/fault_32.c
+--- linux-2.6.31.6/arch/sh/mm/fault_32.c 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sh/mm/fault_32.c 2009-09-29 17:29:36.000000000 +0200
+@@ -246,7 +246,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", tsk->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/sh/mm/tlbflush_64.c linux-2.6.31.6-vs2.3.0.36.24/arch/sh/mm/tlbflush_64.c
+--- linux-2.6.31.6/arch/sh/mm/tlbflush_64.c 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sh/mm/tlbflush_64.c 2009-09-29 17:29:54.000000000 +0200
+@@ -306,7 +306,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", tsk->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ tsk->comm, task_pid_nr(tsk), tsk->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ goto no_context;
+diff -NurpP --minimal linux-2.6.31.6/arch/sparc/include/asm/tlb_64.h linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/include/asm/tlb_64.h
+--- linux-2.6.31.6/arch/sparc/include/asm/tlb_64.h 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/include/asm/tlb_64.h 2009-09-10 16:11:43.000000000 +0200
+@@ -3,6 +3,7 @@
+
+ #include <linux/swap.h>
+ #include <linux/pagemap.h>
++#include <linux/vs_memory.h>
+ #include <asm/pgalloc.h>
+ #include <asm/tlbflush.h>
+ #include <asm/mmu_context.h>
+diff -NurpP --minimal linux-2.6.31.6/arch/sparc/include/asm/unistd.h linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/include/asm/unistd.h
+--- linux-2.6.31.6/arch/sparc/include/asm/unistd.h 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/include/asm/unistd.h 2009-09-10 16:11:43.000000000 +0200
+@@ -335,7 +335,7 @@
+ #define __NR_timer_getoverrun 264
+ #define __NR_timer_delete 265
+ #define __NR_timer_create 266
+-/* #define __NR_vserver 267 Reserved for VSERVER */
++#define __NR_vserver 267
+ #define __NR_io_setup 268
+ #define __NR_io_destroy 269
+ #define __NR_io_submit 270
+diff -NurpP --minimal linux-2.6.31.6/arch/sparc/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/Kconfig
+--- linux-2.6.31.6/arch/sparc/Kconfig 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -530,6 +530,8 @@ source "fs/Kconfig"
+
+ source "arch/sparc/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/sparc/kernel/systbls_32.S linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/kernel/systbls_32.S
+--- linux-2.6.31.6/arch/sparc/kernel/systbls_32.S 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/kernel/systbls_32.S 2009-09-10 16:11:43.000000000 +0200
+@@ -70,7 +70,7 @@ sys_call_table:
+ /*250*/ .long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
+ /*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
+ /*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
+-/*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy
++/*265*/ .long sys_timer_delete, sys_timer_create, sys_vserver, sys_io_setup, sys_io_destroy
+ /*270*/ .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
+ /*275*/ .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
+ /*280*/ .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
+diff -NurpP --minimal linux-2.6.31.6/arch/sparc/kernel/systbls_64.S linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/kernel/systbls_64.S
+--- linux-2.6.31.6/arch/sparc/kernel/systbls_64.S 2009-09-10 15:25:45.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/sparc/kernel/systbls_64.S 2009-09-10 16:11:43.000000000 +0200
+@@ -71,7 +71,7 @@ sys_call_table32:
+ /*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
+ .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
+ /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
+- .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
++ .word sys_timer_delete, compat_sys_timer_create, sys32_vserver, compat_sys_io_setup, sys_io_destroy
+ /*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
+ .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid
+ /*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat
+@@ -146,7 +146,7 @@ sys_call_table:
+ /*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
+ .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
+ /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
+- .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
++ .word sys_timer_delete, sys_timer_create, sys_vserver, sys_io_setup, sys_io_destroy
+ /*270*/ .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
+ .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
+ /*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
+diff -NurpP --minimal linux-2.6.31.6/arch/x86/ia32/ia32entry.S linux-2.6.31.6-vs2.3.0.36.24/arch/x86/ia32/ia32entry.S
+--- linux-2.6.31.6/arch/x86/ia32/ia32entry.S 2009-11-12 12:10:08.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/x86/ia32/ia32entry.S 2009-11-12 12:26:38.000000000 +0100
+@@ -777,7 +777,7 @@ ia32_sys_call_table:
+ .quad sys_tgkill /* 270 */
+ .quad compat_sys_utimes
+ .quad sys32_fadvise64_64
+- .quad quiet_ni_syscall /* sys_vserver */
++ .quad sys32_vserver
+ .quad sys_mbind
+ .quad compat_sys_get_mempolicy /* 275 */
+ .quad sys_set_mempolicy
+diff -NurpP --minimal linux-2.6.31.6/arch/x86/include/asm/unistd_64.h linux-2.6.31.6-vs2.3.0.36.24/arch/x86/include/asm/unistd_64.h
+--- linux-2.6.31.6/arch/x86/include/asm/unistd_64.h 2009-09-10 15:25:47.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/x86/include/asm/unistd_64.h 2009-09-10 16:11:43.000000000 +0200
+@@ -535,7 +535,7 @@ __SYSCALL(__NR_tgkill, sys_tgkill)
+ #define __NR_utimes 235
+ __SYSCALL(__NR_utimes, sys_utimes)
+ #define __NR_vserver 236
+-__SYSCALL(__NR_vserver, sys_ni_syscall)
++__SYSCALL(__NR_vserver, sys_vserver)
+ #define __NR_mbind 237
+ __SYSCALL(__NR_mbind, sys_mbind)
+ #define __NR_set_mempolicy 238
+diff -NurpP --minimal linux-2.6.31.6/arch/x86/Kconfig linux-2.6.31.6-vs2.3.0.36.24/arch/x86/Kconfig
+--- linux-2.6.31.6/arch/x86/Kconfig 2009-09-10 15:25:46.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/x86/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -2088,6 +2088,8 @@ source "fs/Kconfig"
+
+ source "arch/x86/Kconfig.debug"
+
++source "kernel/vserver/Kconfig"
++
+ source "security/Kconfig"
+
+ source "crypto/Kconfig"
+diff -NurpP --minimal linux-2.6.31.6/arch/x86/kernel/syscall_table_32.S linux-2.6.31.6-vs2.3.0.36.24/arch/x86/kernel/syscall_table_32.S
+--- linux-2.6.31.6/arch/x86/kernel/syscall_table_32.S 2009-09-10 15:25:47.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/x86/kernel/syscall_table_32.S 2009-09-10 16:11:43.000000000 +0200
+@@ -272,7 +272,7 @@ ENTRY(sys_call_table)
+ .long sys_tgkill /* 270 */
+ .long sys_utimes
+ .long sys_fadvise64_64
+- .long sys_ni_syscall /* sys_vserver */
++ .long sys_vserver
+ .long sys_mbind
+ .long sys_get_mempolicy
+ .long sys_set_mempolicy
+diff -NurpP --minimal linux-2.6.31.6/arch/xtensa/mm/fault.c linux-2.6.31.6-vs2.3.0.36.24/arch/xtensa/mm/fault.c
+--- linux-2.6.31.6/arch/xtensa/mm/fault.c 2009-09-10 15:25:48.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/arch/xtensa/mm/fault.c 2009-09-29 17:30:14.000000000 +0200
+@@ -151,7 +151,8 @@ out_of_memory:
+ down_read(&mm->mmap_sem);
+ goto survive;
+ }
+- printk("VM: killing process %s\n", current->comm);
++ printk("VM: killing process %s(%d:#%u)\n",
++ current->comm, task_pid_nr(current), current->xid);
+ if (user_mode(regs))
+ do_group_exit(SIGKILL);
+ bad_page_fault(regs, address, SIGKILL);
+diff -NurpP --minimal linux-2.6.31.6/Documentation/scheduler/sched-cfs-hard-limits.txt linux-2.6.31.6-vs2.3.0.36.24/Documentation/scheduler/sched-cfs-hard-limits.txt
+--- linux-2.6.31.6/Documentation/scheduler/sched-cfs-hard-limits.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/Documentation/scheduler/sched-cfs-hard-limits.txt 2009-10-06 04:39:46.000000000 +0200
+@@ -0,0 +1,52 @@
++CPU HARD LIMITS FOR CFS GROUPS
++==============================
++
++1. Overview
++2. Interface
++3. Examples
++
++1. Overview
++-----------
++
++CFS is a proportional share scheduler which tries to divide the CPU time
++proportionately between tasks or groups of tasks (task group/cgroup) depending
++on the priority/weight of the task or shares assigned to groups of tasks.
++In CFS, a task/task group can get more than its share of CPU if there are
++enough idle CPU cycles available in the system, due to the work conserving
++nature of the scheduler. However in certain scenarios (like pay-per-use),
++it is desirable not to provide extra time to a group even in the presence
++of idle CPU cycles. This is where hard limiting can be of use.
++
++Hard limits for task groups can be set by specifying how much CPU runtime a
++group can consume within a given period. If the group consumes more CPU time
++than the runtime in a given period, it gets throttled. None of the tasks of
++the throttled group gets to run until the runtime of the group gets refreshed
++at the beginning of the next period.
++
++2. Interface
++------------
++
++Hard limit feature adds 3 cgroup files for CFS group scheduler:
++
++cfs_runtime_us: Hard limit for the group in microseconds.
++
++cfs_period_us: Time period in microseconds within which hard limits is
++enforced.
++
++cfs_hard_limit: The control file to enable or disable hard limiting for the
++group.
++
++A group gets created with default values for runtime and period and with
++hard limit disabled. Each group can set its own values for runtime and period
++independent of other groups in the system.
++
++3. Examples
++-----------
++
++# mount -t cgroup -ocpu none /cgroups/
++# cd /cgroups
++# mkdir 1
++# cd 1/
++# echo 250000 > cfs_runtime_us /* set a 250ms runtime or limit */
++# echo 500000 > cfs_period_us /* set a 500ms period */
++# echo 1 > cfs_hard_limit /* enable hard limiting for group 1/ */
+diff -NurpP --minimal linux-2.6.31.6/Documentation/vserver/debug.txt linux-2.6.31.6-vs2.3.0.36.24/Documentation/vserver/debug.txt
+--- linux-2.6.31.6/Documentation/vserver/debug.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/Documentation/vserver/debug.txt 2009-09-10 16:11:43.000000000 +0200
+@@ -0,0 +1,154 @@
++
++debug_cvirt:
++
++ 2 4 "vx_map_tgid: %p/%llx: %d -> %d"
++ "vx_rmap_tgid: %p/%llx: %d -> %d"
++
++debug_dlim:
++
++ 0 1 "ALLOC (%p,#%d)%c inode (%d)"
++ "FREE (%p,#%d)%c inode"
++ 1 2 "ALLOC (%p,#%d)%c %lld bytes (%d)"
++ "FREE (%p,#%d)%c %lld bytes"
++ 2 4 "ADJUST: %lld,%lld on %ld,%ld [mult=%d]"
++ 3 8 "ext3_has_free_blocks(%p): %lu<%lu+1, %c, %u!=%u r=%d"
++ "ext3_has_free_blocks(%p): free=%lu, root=%lu"
++ "rcu_free_dl_info(%p)"
++ 4 10 "alloc_dl_info(%p,%d) = %p"
++ "dealloc_dl_info(%p)"
++ "get_dl_info(%p[#%d.%d])"
++ "put_dl_info(%p[#%d.%d])"
++ 5 20 "alloc_dl_info(%p,%d)*"
++ 6 40 "__hash_dl_info: %p[#%d]"
++ "__unhash_dl_info: %p[#%d]"
++ 7 80 "locate_dl_info(%p,#%d) = %p"
++
++debug_misc:
++
++ 0 1 "destroy_dqhash: %p [#0x%08x] c=%d"
++ "new_dqhash: %p [#0x%08x]"
++ "vroot[%d]_clr_dev: dev=%p[%lu,%d:%d]"
++ "vroot[%d]_get_real_bdev: dev=%p[%lu,%d:%d]"
++ "vroot[%d]_set_dev: dev=%p[%lu,%d:%d]"
++ "vroot_get_real_bdev not set"
++ 1 2 "cow_break_link(%s)"
++ "temp copy %s"
++ 2 4 "dentry_open(new): %p"
++ "dentry_open(old): %p"
++ "lookup_create(new): %p"
++ "old path %s"
++ "path_lookup(old): %d"
++ "vfs_create(new): %d"
++ "vfs_rename: %d"
++ "vfs_sendfile: %d"
++ 3 8 "fput(new_file=%p[#%d])"
++ "fput(old_file=%p[#%d])"
++ 4 10 "vx_info_kill(%p[#%d],%d,%d) = %d"
++ "vx_info_kill(%p[#%d],%d,%d)*"
++ 5 20 "vs_reboot(%p[#%d],%d)"
++ 6 40 "dropping task %p[#%u,%u] for %p[#%u,%u]"
++
++debug_net:
++
++ 2 4 "nx_addr_conflict(%p,%p) %d.%d,%d.%d"
++ 3 8 "inet_bind(%p) %d.%d.%d.%d, %d.%d.%d.%d, %d.%d.%d.%d"
++ "inet_bind(%p)* %p,%p;%lx %d.%d.%d.%d"
++ 4 10 "ip_route_connect(%p) %p,%p;%lx"
++ 5 20 "__addr_in_socket(%p,%d.%d.%d.%d) %p:%d.%d.%d.%d %p;%lx"
++ 6 40 "sk,egf: %p [#%d] (from %d)"
++ "sk,egn: %p [#%d] (from %d)"
++ "sk,req: %p [#%d] (from %d)"
++ "sk: %p [#%d] (from %d)"
++ "tw: %p [#%d] (from %d)"
++ 7 80 "__sock_recvmsg: %p[%p,%p,%p;%d]:%d/%d"
++ "__sock_sendmsg: %p[%p,%p,%p;%d]:%d/%d"
++
++debug_nid:
++
++ 0 1 "__lookup_nx_info(#%u): %p[#%u]"
++ "alloc_nx_info(%d) = %p"
++ "create_nx_info(%d) (dynamic rejected)"
++ "create_nx_info(%d) = %p (already there)"
++ "create_nx_info(%d) = %p (new)"
++ "dealloc_nx_info(%p)"
++ 1 2 "alloc_nx_info(%d)*"
++ "create_nx_info(%d)*"
++ 2 4 "get_nx_info(%p[#%d.%d])"
++ "put_nx_info(%p[#%d.%d])"
++ 3 8 "claim_nx_info(%p[#%d.%d.%d]) %p"
++ "clr_nx_info(%p[#%d.%d])"
++ "init_nx_info(%p[#%d.%d])"
++ "release_nx_info(%p[#%d.%d.%d]) %p"
++ "set_nx_info(%p[#%d.%d])"
++ 4 10 "__hash_nx_info: %p[#%d]"
++ "__nx_dynamic_id: [#%d]"
++ "__unhash_nx_info: %p[#%d.%d.%d]"
++ 5 20 "moved task %p into nxi:%p[#%d]"
++ "nx_migrate_task(%p,%p[#%d.%d.%d])"
++ "task_get_nx_info(%p)"
++ 6 40 "nx_clear_persistent(%p[#%d])"
++
++debug_quota:
++
++ 0 1 "quota_sync_dqh(%p,%d) discard inode %p"
++ 1 2 "quota_sync_dqh(%p,%d)"
++ "sync_dquots(%p,%d)"
++ "sync_dquots_dqh(%p,%d)"
++ 3 8 "do_quotactl(%p,%d,cmd=%d,id=%d,%p)"
++
++debug_switch:
++
++ 0 1 "vc: VCMD_%02d_%d[%d], %d,%p [%d,%d,%x,%x]"
++ 1 2 "vc: VCMD_%02d_%d[%d] = %08lx(%ld) [%d,%d]"
++ 4 10 "%s: (%s %s) returned %s with %d"
++
++debug_tag:
++
++ 7 80 "dx_parse_tag(%s): %d:#%d"
++ "dx_propagate_tag(%p[#%lu.%d]): %d,%d"
++
++debug_xid:
++
++ 0 1 "__lookup_vx_info(#%u): %p[#%u]"
++ "alloc_vx_info(%d) = %p"
++ "alloc_vx_info(%d)*"
++ "create_vx_info(%d) (dynamic rejected)"
++ "create_vx_info(%d) = %p (already there)"
++ "create_vx_info(%d) = %p (new)"
++ "dealloc_vx_info(%p)"
++ "loc_vx_info(%d) = %p (found)"
++ "loc_vx_info(%d) = %p (new)"
++ "loc_vx_info(%d) = %p (not available)"
++ 1 2 "create_vx_info(%d)*"
++ "loc_vx_info(%d)*"
++ 2 4 "get_vx_info(%p[#%d.%d])"
++ "put_vx_info(%p[#%d.%d])"
++ 3 8 "claim_vx_info(%p[#%d.%d.%d]) %p"
++ "clr_vx_info(%p[#%d.%d])"
++ "init_vx_info(%p[#%d.%d])"
++ "release_vx_info(%p[#%d.%d.%d]) %p"
++ "set_vx_info(%p[#%d.%d])"
++ 4 10 "__hash_vx_info: %p[#%d]"
++ "__unhash_vx_info: %p[#%d.%d.%d]"
++ "__vx_dynamic_id: [#%d]"
++ 5 20 "enter_vx_info(%p[#%d],%p) %p[#%d,%p]"
++ "leave_vx_info(%p[#%d,%p]) %p[#%d,%p]"
++ "moved task %p into vxi:%p[#%d]"
++ "task_get_vx_info(%p)"
++ "vx_migrate_task(%p,%p[#%d.%d])"
++ 6 40 "vx_clear_persistent(%p[#%d])"
++ "vx_exit_init(%p[#%d],%p[#%d,%d,%d])"
++ "vx_set_init(%p[#%d],%p[#%d,%d,%d])"
++ "vx_set_persistent(%p[#%d])"
++ "vx_set_reaper(%p[#%d],%p[#%d,%d])"
++ 7 80 "vx_child_reaper(%p[#%u,%u]) = %p[#%u,%u]"
++
++
++debug_limit:
++
++ n 2^n "vx_acc_cres[%5d,%s,%2d]: %5d%s"
++ "vx_cres_avail[%5d,%s,%2d]: %5ld > %5d + %5d"
++
++ m 2^m "vx_acc_page[%5d,%s,%2d]: %5d%s"
++ "vx_acc_pages[%5d,%s,%2d]: %5d += %5d"
++ "vx_pages_avail[%5d,%s,%2d]: %5ld > %5d + %5d"
+diff -NurpP --minimal linux-2.6.31.6/drivers/block/Kconfig linux-2.6.31.6-vs2.3.0.36.24/drivers/block/Kconfig
+--- linux-2.6.31.6/drivers/block/Kconfig 2009-09-10 15:25:49.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/block/Kconfig 2009-09-10 16:11:43.000000000 +0200
+@@ -271,6 +271,13 @@ config BLK_DEV_CRYPTOLOOP
+ instead, which can be configured to be on-disk compatible with the
+ cryptoloop device.
+
++config BLK_DEV_VROOT
++ tristate "Virtual Root device support"
++ depends on QUOTACTL
++ ---help---
++ Saying Y here will allow you to use quota/fs ioctls on a shared
++ partition within a virtual server without compromising security.
++
+ config BLK_DEV_NBD
+ tristate "Network block device support"
+ depends on NET
+diff -NurpP --minimal linux-2.6.31.6/drivers/block/loop.c linux-2.6.31.6-vs2.3.0.36.24/drivers/block/loop.c
+--- linux-2.6.31.6/drivers/block/loop.c 2009-09-10 15:25:49.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/block/loop.c 2009-09-10 16:11:43.000000000 +0200
+@@ -74,6 +74,7 @@
+ #include <linux/gfp.h>
+ #include <linux/kthread.h>
+ #include <linux/splice.h>
++#include <linux/vs_context.h>
+
+ #include <asm/uaccess.h>
+
+@@ -812,6 +813,7 @@ static int loop_set_fd(struct loop_devic
+ lo->lo_blocksize = lo_blocksize;
+ lo->lo_device = bdev;
+ lo->lo_flags = lo_flags;
++ lo->lo_xid = vx_current_xid();
+ lo->lo_backing_file = file;
+ lo->transfer = transfer_none;
+ lo->ioctl = NULL;
+@@ -937,6 +939,7 @@ static int loop_clr_fd(struct loop_devic
+ lo->lo_encrypt_key_size = 0;
+ lo->lo_flags = 0;
+ lo->lo_thread = NULL;
++ lo->lo_xid = 0;
+ memset(lo->lo_encrypt_key, 0, LO_KEY_SIZE);
+ memset(lo->lo_crypt_name, 0, LO_NAME_SIZE);
+ memset(lo->lo_file_name, 0, LO_NAME_SIZE);
+@@ -971,7 +974,7 @@ loop_set_status(struct loop_device *lo,
+
+ if (lo->lo_encrypt_key_size &&
+ lo->lo_key_owner != uid &&
+- !capable(CAP_SYS_ADMIN))
++ !vx_capable(CAP_SYS_ADMIN, VXC_ADMIN_CLOOP))
+ return -EPERM;
+ if (lo->lo_state != Lo_bound)
+ return -ENXIO;
+@@ -1055,7 +1058,8 @@ loop_get_status(struct loop_device *lo,
+ memcpy(info->lo_crypt_name, lo->lo_crypt_name, LO_NAME_SIZE);
+ info->lo_encrypt_type =
+ lo->lo_encryption ? lo->lo_encryption->number : 0;
+- if (lo->lo_encrypt_key_size && capable(CAP_SYS_ADMIN)) {
++ if (lo->lo_encrypt_key_size &&
++ vx_capable(CAP_SYS_ADMIN, VXC_ADMIN_CLOOP)) {
+ info->lo_encrypt_key_size = lo->lo_encrypt_key_size;
+ memcpy(info->lo_encrypt_key, lo->lo_encrypt_key,
+ lo->lo_encrypt_key_size);
+@@ -1399,6 +1403,9 @@ static int lo_open(struct block_device *
+ {
+ struct loop_device *lo = bdev->bd_disk->private_data;
+
++ if (!vx_check(lo->lo_xid, VS_IDENT|VS_HOSTID|VS_ADMIN_P))
++ return -EACCES;
++
+ mutex_lock(&lo->lo_ctl_mutex);
+ lo->lo_refcnt++;
+ mutex_unlock(&lo->lo_ctl_mutex);
+diff -NurpP --minimal linux-2.6.31.6/drivers/block/Makefile linux-2.6.31.6-vs2.3.0.36.24/drivers/block/Makefile
+--- linux-2.6.31.6/drivers/block/Makefile 2009-09-10 15:25:49.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/block/Makefile 2009-09-10 16:11:43.000000000 +0200
+@@ -34,6 +34,7 @@ obj-$(CONFIG_VIODASD) += viodasd.o
+ obj-$(CONFIG_BLK_DEV_SX8) += sx8.o
+ obj-$(CONFIG_BLK_DEV_UB) += ub.o
+ obj-$(CONFIG_BLK_DEV_HD) += hd.o
++obj-$(CONFIG_BLK_DEV_VROOT) += vroot.o
+
+ obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o
+
+diff -NurpP --minimal linux-2.6.31.6/drivers/block/vroot.c linux-2.6.31.6-vs2.3.0.36.24/drivers/block/vroot.c
+--- linux-2.6.31.6/drivers/block/vroot.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/block/vroot.c 2009-09-10 16:11:43.000000000 +0200
+@@ -0,0 +1,281 @@
++/*
++ * linux/drivers/block/vroot.c
++ *
++ * written by Herbert Ptzl, 9/11/2002
++ * ported to 2.6.10 by Herbert Ptzl, 30/12/2004
++ *
++ * based on the loop.c code by Theodore Ts'o.
++ *
++ * Copyright (C) 2002-2007 by Herbert Ptzl.
++ * Redistribution of this file is permitted under the
++ * GNU General Public License.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/file.h>
++#include <linux/major.h>
++#include <linux/blkdev.h>
++
++#include <linux/vroot.h>
++#include <linux/vs_context.h>
++
++
++static int max_vroot = 8;
++
++static struct vroot_device *vroot_dev;
++static struct gendisk **disks;
++
++
++static int vroot_set_dev(
++ struct vroot_device *vr,
++ struct block_device *bdev,
++ unsigned int arg)
++{
++ struct block_device *real_bdev;
++ struct file *file;
++ struct inode *inode;
++ int error;
++
++ error = -EBUSY;
++ if (vr->vr_state != Vr_unbound)
++ goto out;
++
++ error = -EBADF;
++ file = fget(arg);
++ if (!file)
++ goto out;
++
++ error = -EINVAL;
++ inode = file->f_dentry->d_inode;
++
++
++ if (S_ISBLK(inode->i_mode)) {
++ real_bdev = inode->i_bdev;
++ vr->vr_device = real_bdev;
++ __iget(real_bdev->bd_inode);
++ } else
++ goto out_fput;
++
++ vxdprintk(VXD_CBIT(misc, 0),
++ "vroot[%d]_set_dev: dev=" VXF_DEV,
++ vr->vr_number, VXD_DEV(real_bdev));
++
++ vr->vr_state = Vr_bound;
++ error = 0;
++
++ out_fput:
++ fput(file);
++ out:
++ return error;
++}
++
++static int vroot_clr_dev(
++ struct vroot_device *vr,
++ struct block_device *bdev)
++{
++ struct block_device *real_bdev;
++
++ if (vr->vr_state != Vr_bound)
++ return -ENXIO;
++ if (vr->vr_refcnt > 1) /* we needed one fd for the ioctl */
++ return -EBUSY;
++
++ real_bdev = vr->vr_device;
++
++ vxdprintk(VXD_CBIT(misc, 0),
++ "vroot[%d]_clr_dev: dev=" VXF_DEV,
++ vr->vr_number, VXD_DEV(real_bdev));
++
++ bdput(real_bdev);
++ vr->vr_state = Vr_unbound;
++ vr->vr_device = NULL;
++ return 0;
++}
++
++
++static int vr_ioctl(struct block_device *bdev, fmode_t mode,
++ unsigned int cmd, unsigned long arg)
++{
++ struct vroot_device *vr = bdev->bd_disk->private_data;
++ int err;
++
++ down(&vr->vr_ctl_mutex);
++ switch (cmd) {
++ case VROOT_SET_DEV:
++ err = vroot_set_dev(vr, bdev, arg);
++ break;
++ case VROOT_CLR_DEV:
++ err = vroot_clr_dev(vr, bdev);
++ break;
++ default:
++ err = -EINVAL;
++ break;
++ }
++ up(&vr->vr_ctl_mutex);
++ return err;
++}
++
++static int vr_open(struct block_device *bdev, fmode_t mode)
++{
++ struct vroot_device *vr = bdev->bd_disk->private_data;
++
++ down(&vr->vr_ctl_mutex);
++ vr->vr_refcnt++;
++ up(&vr->vr_ctl_mutex);
++ return 0;
++}
++
++static int vr_release(struct gendisk *disk, fmode_t mode)
++{
++ struct vroot_device *vr = disk->private_data;
++
++ down(&vr->vr_ctl_mutex);
++ --vr->vr_refcnt;
++ up(&vr->vr_ctl_mutex);
++ return 0;
++}
++
++static struct block_device_operations vr_fops = {
++ .owner = THIS_MODULE,
++ .open = vr_open,
++ .release = vr_release,
++ .ioctl = vr_ioctl,
++};
++
++struct block_device *__vroot_get_real_bdev(struct block_device *bdev)
++{
++ struct inode *inode = bdev->bd_inode;
++ struct vroot_device *vr;
++ struct block_device *real_bdev;
++ int minor = iminor(inode);
++
++ vr = &vroot_dev[minor];
++ real_bdev = vr->vr_device;
++
++ vxdprintk(VXD_CBIT(misc, 0),
++ "vroot[%d]_get_real_bdev: dev=" VXF_DEV,
++ vr->vr_number, VXD_DEV(real_bdev));
++
++ if (vr->vr_state != Vr_bound)
++ return ERR_PTR(-ENXIO);
++
++ __iget(real_bdev->bd_inode);
++ return real_bdev;
++}
++
++/*
++ * And now the modules code and kernel interface.
++ */
++
++module_param(max_vroot, int, 0);
++
++MODULE_PARM_DESC(max_vroot, "Maximum number of vroot devices (1-256)");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_BLOCKDEV_MAJOR(VROOT_MAJOR);
++
++MODULE_AUTHOR ("Herbert Ptzl");
++MODULE_DESCRIPTION ("Virtual Root Device Mapper");
++
++
++int __init vroot_init(void)
++{
++ int err, i;
++
++ if (max_vroot < 1 || max_vroot > 256) {
++ max_vroot = MAX_VROOT_DEFAULT;
++ printk(KERN_WARNING "vroot: invalid max_vroot "
++ "(must be between 1 and 256), "
++ "using default (%d)\n", max_vroot);
++ }
++
++ if (register_blkdev(VROOT_MAJOR, "vroot"))
++ return -EIO;
++
++ err = -ENOMEM;
++ vroot_dev = kmalloc(max_vroot * sizeof(struct vroot_device), GFP_KERNEL);
++ if (!vroot_dev)
++ goto out_mem1;
++ memset(vroot_dev, 0, max_vroot * sizeof(struct vroot_device));
++
++ disks = kmalloc(max_vroot * sizeof(struct gendisk *), GFP_KERNEL);
++ if (!disks)
++ goto out_mem2;
++
++ for (i = 0; i < max_vroot; i++) {
++ disks[i] = alloc_disk(1);
++ if (!disks[i])
++ goto out_mem3;
++ disks[i]->queue = blk_alloc_queue(GFP_KERNEL);
++ if (!disks[i]->queue)
++ goto out_mem3;
++ }
++
++ for (i = 0; i < max_vroot; i++) {
++ struct vroot_device *vr = &vroot_dev[i];
++ struct gendisk *disk = disks[i];
++
++ memset(vr, 0, sizeof(*vr));
++ init_MUTEX(&vr->vr_ctl_mutex);
++ vr->vr_number = i;
++ disk->major = VROOT_MAJOR;
++ disk->first_minor = i;
++ disk->fops = &vr_fops;
++ sprintf(disk->disk_name, "vroot%d", i);
++ disk->private_data = vr;
++ }
++
++ err = register_vroot_grb(&__vroot_get_real_bdev);
++ if (err)
++ goto out_mem3;
++
++ for (i = 0; i < max_vroot; i++)
++ add_disk(disks[i]);
++ printk(KERN_INFO "vroot: loaded (max %d devices)\n", max_vroot);
++ return 0;
++
++out_mem3:
++ while (i--)
++ put_disk(disks[i]);
++ kfree(disks);
++out_mem2:
++ kfree(vroot_dev);
++out_mem1:
++ unregister_blkdev(VROOT_MAJOR, "vroot");
++ printk(KERN_ERR "vroot: ran out of memory\n");
++ return err;
++}
++
++void vroot_exit(void)
++{
++ int i;
++
++ if (unregister_vroot_grb(&__vroot_get_real_bdev))
++ printk(KERN_WARNING "vroot: cannot unregister grb\n");
++
++ for (i = 0; i < max_vroot; i++) {
++ del_gendisk(disks[i]);
++ put_disk(disks[i]);
++ }
++ unregister_blkdev(VROOT_MAJOR, "vroot");
++
++ kfree(disks);
++ kfree(vroot_dev);
++}
++
++module_init(vroot_init);
++module_exit(vroot_exit);
++
++#ifndef MODULE
++
++static int __init max_vroot_setup(char *str)
++{
++ max_vroot = simple_strtol(str, NULL, 0);
++ return 1;
++}
++
++__setup("max_vroot=", max_vroot_setup);
++
++#endif
++
+diff -NurpP --minimal linux-2.6.31.6/drivers/char/sysrq.c linux-2.6.31.6-vs2.3.0.36.24/drivers/char/sysrq.c
+--- linux-2.6.31.6/drivers/char/sysrq.c 2009-09-10 15:25:50.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/char/sysrq.c 2009-09-10 16:11:43.000000000 +0200
+@@ -37,6 +37,7 @@
+ #include <linux/workqueue.h>
+ #include <linux/hrtimer.h>
+ #include <linux/oom.h>
++#include <linux/vserver/debug.h>
+
+ #include <asm/ptrace.h>
+ #include <asm/irq_regs.h>
+@@ -382,6 +383,21 @@ static struct sysrq_key_op sysrq_unrt_op
+ .enable_mask = SYSRQ_ENABLE_RTNICE,
+ };
+
++
++#ifdef CONFIG_VSERVER_DEBUG
++static void sysrq_handle_vxinfo(int key, struct tty_struct *tty)
++{
++ dump_vx_info_inactive((key == 'x')?0:1);
++}
++
++static struct sysrq_key_op sysrq_showvxinfo_op = {
++ .handler = sysrq_handle_vxinfo,
++ .help_msg = "conteXt",
++ .action_msg = "Show Context Info",
++ .enable_mask = SYSRQ_ENABLE_DUMP,
++};
++#endif
++
+ /* Key Operations table and lock */
+ static DEFINE_SPINLOCK(sysrq_key_table_lock);
+
+@@ -436,7 +452,11 @@ static struct sysrq_key_op *sysrq_key_ta
+ NULL, /* v */
+ &sysrq_showstate_blocked_op, /* w */
+ /* x: May be registered on ppc/powerpc for xmon */
++#ifdef CONFIG_VSERVER_DEBUG
++ &sysrq_showvxinfo_op, /* x */
++#else
+ NULL, /* x */
++#endif
+ /* y: May be registered on sparc64 for global register dump */
+ NULL, /* y */
+ &sysrq_ftrace_dump_op, /* z */
+@@ -451,6 +471,8 @@ static int sysrq_key_table_key2index(int
+ retval = key - '0';
+ else if ((key >= 'a') && (key <= 'z'))
+ retval = key + 10 - 'a';
++ else if ((key >= 'A') && (key <= 'Z'))
++ retval = key + 10 - 'A';
+ else
+ retval = -1;
+ return retval;
+diff -NurpP --minimal linux-2.6.31.6/drivers/char/tty_io.c linux-2.6.31.6-vs2.3.0.36.24/drivers/char/tty_io.c
+--- linux-2.6.31.6/drivers/char/tty_io.c 2009-11-12 12:10:09.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/char/tty_io.c 2009-10-05 23:35:52.000000000 +0200
+@@ -106,6 +106,7 @@
+
+ #include <linux/kmod.h>
+ #include <linux/nsproxy.h>
++#include <linux/vs_pid.h>
+
+ #undef TTY_DEBUG_HANGUP
+
+@@ -2236,6 +2237,7 @@ static int tiocspgrp(struct tty_struct *
+ return -ENOTTY;
+ if (get_user(pgrp_nr, p))
+ return -EFAULT;
++ pgrp_nr = vx_rmap_pid(pgrp_nr);
+ if (pgrp_nr < 0)
+ return -EINVAL;
+ rcu_read_lock();
+diff -NurpP --minimal linux-2.6.31.6/drivers/infiniband/hw/ipath/ipath_user_pages.c linux-2.6.31.6-vs2.3.0.36.24/drivers/infiniband/hw/ipath/ipath_user_pages.c
+--- linux-2.6.31.6/drivers/infiniband/hw/ipath/ipath_user_pages.c 2009-06-11 17:12:30.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/infiniband/hw/ipath/ipath_user_pages.c 2009-09-10 16:11:43.000000000 +0200
+@@ -33,6 +33,7 @@
+
+ #include <linux/mm.h>
+ #include <linux/device.h>
++#include <linux/vs_memory.h>
+
+ #include "ipath_kernel.h"
+
+@@ -61,7 +62,8 @@ static int __get_user_pages(unsigned lon
+ lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >>
+ PAGE_SHIFT;
+
+- if (num_pages > lock_limit) {
++ if (num_pages > lock_limit ||
++ !vx_vmlocked_avail(current->mm, num_pages)) {
+ ret = -ENOMEM;
+ goto bail;
+ }
+@@ -78,7 +80,7 @@ static int __get_user_pages(unsigned lon
+ goto bail_release;
+ }
+
+- current->mm->locked_vm += num_pages;
++ vx_vmlocked_add(current->mm, num_pages);
+
+ ret = 0;
+ goto bail;
+@@ -177,7 +179,7 @@ void ipath_release_user_pages(struct pag
+
+ __ipath_release_user_pages(p, num_pages, 1);
+
+- current->mm->locked_vm -= num_pages;
++ vx_vmlocked_sub(current->mm, num_pages);
+
+ up_write(&current->mm->mmap_sem);
+ }
+@@ -194,7 +196,7 @@ static void user_pages_account(struct wo
+ container_of(_work, struct ipath_user_pages_work, work);
+
+ down_write(&work->mm->mmap_sem);
+- work->mm->locked_vm -= work->num_pages;
++ vx_vmlocked_sub(work->mm, work->num_pages);
+ up_write(&work->mm->mmap_sem);
+ mmput(work->mm);
+ kfree(work);
+diff -NurpP --minimal linux-2.6.31.6/drivers/md/dm.c linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm.c
+--- linux-2.6.31.6/drivers/md/dm.c 2009-11-12 12:10:10.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm.c 2009-11-12 12:26:38.000000000 +0100
+@@ -19,6 +19,7 @@
+ #include <linux/slab.h>
+ #include <linux/idr.h>
+ #include <linux/hdreg.h>
++#include <linux/vs_base.h>
+
+ #include <trace/events/block.h>
+
+@@ -119,6 +120,7 @@ struct mapped_device {
+ rwlock_t map_lock;
+ atomic_t holders;
+ atomic_t open_count;
++ xid_t xid;
+
+ unsigned long flags;
+
+@@ -323,6 +325,7 @@ static void __exit dm_exit(void)
+ static int dm_blk_open(struct block_device *bdev, fmode_t mode)
+ {
+ struct mapped_device *md;
++ int ret = -ENXIO;
+
+ spin_lock(&_minor_lock);
+
+@@ -331,18 +334,19 @@ static int dm_blk_open(struct block_devi
+ goto out;
+
+ if (test_bit(DMF_FREEING, &md->flags) ||
+- test_bit(DMF_DELETING, &md->flags)) {
+- md = NULL;
++ test_bit(DMF_DELETING, &md->flags))
++ goto out;
++
++ ret = -EACCES;
++ if (!vx_check(md->xid, VS_IDENT|VS_HOSTID))
+ goto out;
+- }
+
+ dm_get(md);
+ atomic_inc(&md->open_count);
+-
++ ret = 0;
+ out:
+ spin_unlock(&_minor_lock);
+-
+- return md ? 0 : -ENXIO;
++ return ret;
+ }
+
+ static int dm_blk_close(struct gendisk *disk, fmode_t mode)
+@@ -551,6 +555,14 @@ int dm_set_geometry(struct mapped_device
+ return 0;
+ }
+
++/*
++ * Get the xid associated with a dm device
++ */
++xid_t dm_get_xid(struct mapped_device *md)
++{
++ return md->xid;
++}
++
+ /*-----------------------------------------------------------------
+ * CRUD START:
+ * A more elegant soln is in the works that uses the queue
+@@ -1760,6 +1772,7 @@ static struct mapped_device *alloc_dev(i
+ INIT_LIST_HEAD(&md->uevent_list);
+ spin_lock_init(&md->uevent_lock);
+
++ md->xid = vx_current_xid();
+ md->queue = blk_init_queue(dm_request_fn, NULL);
+ if (!md->queue)
+ goto bad_queue;
+diff -NurpP --minimal linux-2.6.31.6/drivers/md/dm.h linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm.h
+--- linux-2.6.31.6/drivers/md/dm.h 2009-09-10 15:25:55.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm.h 2009-09-10 16:11:43.000000000 +0200
+@@ -41,6 +41,8 @@ struct dm_dev_internal {
+ struct dm_table;
+ struct dm_md_mempools;
+
++xid_t dm_get_xid(struct mapped_device *md);
++
+ /*-----------------------------------------------------------------
+ * Internal table functions.
+ *---------------------------------------------------------------*/
+diff -NurpP --minimal linux-2.6.31.6/drivers/md/dm-ioctl.c linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm-ioctl.c
+--- linux-2.6.31.6/drivers/md/dm-ioctl.c 2009-09-10 15:25:55.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/md/dm-ioctl.c 2009-09-10 16:11:43.000000000 +0200
+@@ -16,6 +16,7 @@
+ #include <linux/dm-ioctl.h>
+ #include <linux/hdreg.h>
+ #include <linux/compat.h>
++#include <linux/vs_context.h>
+
+ #include <asm/uaccess.h>
+
+@@ -101,7 +102,8 @@ static struct hash_cell *__get_name_cell
+ unsigned int h = hash_str(str);
+
+ list_for_each_entry (hc, _name_buckets + h, name_list)
+- if (!strcmp(hc->name, str)) {
++ if (vx_check(dm_get_xid(hc->md), VS_WATCH_P | VS_IDENT) &&
++ !strcmp(hc->name, str)) {
+ dm_get(hc->md);
+ return hc;
+ }
+@@ -115,7 +117,8 @@ static struct hash_cell *__get_uuid_cell
+ unsigned int h = hash_str(str);
+
+ list_for_each_entry (hc, _uuid_buckets + h, uuid_list)
+- if (!strcmp(hc->uuid, str)) {
++ if (vx_check(dm_get_xid(hc->md), VS_WATCH_P | VS_IDENT) &&
++ !strcmp(hc->uuid, str)) {
+ dm_get(hc->md);
+ return hc;
+ }
+@@ -352,6 +355,9 @@ typedef int (*ioctl_fn)(struct dm_ioctl
+
+ static int remove_all(struct dm_ioctl *param, size_t param_size)
+ {
++ if (!vx_check(0, VS_ADMIN))
++ return -EPERM;
++
+ dm_hash_remove_all(1);
+ param->data_size = 0;
+ return 0;
+@@ -399,6 +405,8 @@ static int list_devices(struct dm_ioctl
+ */
+ for (i = 0; i < NUM_BUCKETS; i++) {
+ list_for_each_entry (hc, _name_buckets + i, name_list) {
++ if (!vx_check(dm_get_xid(hc->md), VS_WATCH_P | VS_IDENT))
++ continue;
+ needed += sizeof(struct dm_name_list);
+ needed += strlen(hc->name) + 1;
+ needed += ALIGN_MASK;
+@@ -422,6 +430,8 @@ static int list_devices(struct dm_ioctl
+ */
+ for (i = 0; i < NUM_BUCKETS; i++) {
+ list_for_each_entry (hc, _name_buckets + i, name_list) {
++ if (!vx_check(dm_get_xid(hc->md), VS_WATCH_P | VS_IDENT))
++ continue;
+ if (old_nl)
+ old_nl->next = (uint32_t) ((void *) nl -
+ (void *) old_nl);
+@@ -612,10 +622,11 @@ static struct hash_cell *__find_device_h
+ if (!md)
+ goto out;
+
+- mdptr = dm_get_mdptr(md);
++ if (vx_check(dm_get_xid(md), VS_WATCH_P | VS_IDENT))
++ mdptr = dm_get_mdptr(md);
++
+ if (!mdptr)
+ dm_put(md);
+-
+ out:
+ return mdptr;
+ }
+@@ -1445,8 +1456,8 @@ static int ctl_ioctl(uint command, struc
+ ioctl_fn fn = NULL;
+ size_t param_size;
+
+- /* only root can play with this */
+- if (!capable(CAP_SYS_ADMIN))
++ /* only root and certain contexts can play with this */
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_ADMIN_MAPPER))
+ return -EACCES;
+
+ if (_IOC_TYPE(command) != DM_IOCTL)
+diff -NurpP --minimal linux-2.6.31.6/drivers/net/tun.c linux-2.6.31.6-vs2.3.0.36.24/drivers/net/tun.c
+--- linux-2.6.31.6/drivers/net/tun.c 2009-11-12 12:10:10.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/drivers/net/tun.c 2009-10-15 03:50:05.000000000 +0200
+@@ -61,6 +61,7 @@
+ #include <linux/crc32.h>
+ #include <linux/nsproxy.h>
+ #include <linux/virtio_net.h>
++#include <linux/vs_network.h>
+ #include <net/net_namespace.h>
+ #include <net/netns/generic.h>
+ #include <net/rtnetlink.h>
+@@ -102,6 +103,7 @@ struct tun_struct {
+ unsigned int flags;
+ uid_t owner;
+ gid_t group;
++ nid_t nid;
+
+ struct sk_buff_head readq;
+
+@@ -138,7 +140,7 @@ static int tun_attach(struct tun_struct
+ /* Check permissions */
+ if (((tun->owner != -1 && cred->euid != tun->owner) ||
+ (tun->group != -1 && !in_egroup_p(tun->group))) &&
+- !capable(CAP_NET_ADMIN))
++ !cap_raised(current_cap(), CAP_NET_ADMIN))
+ return -EPERM;
+
+ netif_tx_lock_bh(tun->dev);
+@@ -823,6 +825,7 @@ static void tun_setup(struct net_device
+
+ tun->owner = -1;
+ tun->group = -1;
++ tun->nid = current->nid;
+
+ dev->ethtool_ops = &tun_ethtool_ops;
+ dev->destructor = tun_free_netdev;
+@@ -935,6 +938,9 @@ static int tun_set_iff(struct net *net,
+ else
+ return -EINVAL;
+
++ if (!nx_check(tun->nid, VS_IDENT | VS_HOSTID | VS_ADMIN_P))
++ return -EPERM;
++
+ err = tun_attach(tun, file);
+ if (err < 0)
+ return err;
+@@ -943,7 +949,7 @@ static int tun_set_iff(struct net *net,
+ char *name;
+ unsigned long flags = 0;
+
+- if (!capable(CAP_NET_ADMIN))
++ if (!nx_capable(CAP_NET_ADMIN, NXC_TUN_CREATE))
+ return -EPERM;
+
+ /* Set dev type */
+@@ -1190,6 +1196,16 @@ static long tun_chr_ioctl(struct file *f
+ DBG(KERN_INFO "%s: group set to %d\n", tun->dev->name, tun->group);
+ break;
+
++ case TUNSETNID:
++ if (!capable(CAP_CONTEXT))
++ return -EPERM;
++
++ /* Set nid owner of the device */
++ tun->nid = (nid_t) arg;
++
++ DBG(KERN_INFO "%s: nid owner set to %u\n", tun->dev->name, tun->nid);
++ break;
++
+ case TUNSETLINK:
+ /* Only allow setting the type when the interface is down */
+ if (tun->dev->flags & IFF_UP) {
+diff -NurpP --minimal linux-2.6.31.6/fs/attr.c linux-2.6.31.6-vs2.3.0.36.24/fs/attr.c
+--- linux-2.6.31.6/fs/attr.c 2009-06-11 17:13:01.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/attr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -14,6 +14,9 @@
+ #include <linux/fcntl.h>
+ #include <linux/quotaops.h>
+ #include <linux/security.h>
++#include <linux/proc_fs.h>
++#include <linux/devpts_fs.h>
++#include <linux/vs_tag.h>
+
+ /* Taken over from the old code... */
+
+@@ -55,6 +58,10 @@ int inode_change_ok(struct inode *inode,
+ if (!is_owner_or_cap(inode))
+ goto error;
+ }
++
++ if (dx_permission(inode, MAY_WRITE))
++ goto error;
++
+ fine:
+ retval = 0;
+ error:
+@@ -78,6 +85,8 @@ int inode_setattr(struct inode * inode,
+ inode->i_uid = attr->ia_uid;
+ if (ia_valid & ATTR_GID)
+ inode->i_gid = attr->ia_gid;
++ if ((ia_valid & ATTR_TAG) && IS_TAGGED(inode))
++ inode->i_tag = attr->ia_tag;
+ if (ia_valid & ATTR_ATIME)
+ inode->i_atime = timespec_trunc(attr->ia_atime,
+ inode->i_sb->s_time_gran);
+@@ -172,7 +181,8 @@ int notify_change(struct dentry * dentry
+ error = inode_change_ok(inode, attr);
+ if (!error) {
+ if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+- (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid))
++ (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid) ||
++ (ia_valid & ATTR_TAG && attr->ia_tag != inode->i_tag))
+ error = vfs_dq_transfer(inode, attr) ?
+ -EDQUOT : 0;
+ if (!error)
+diff -NurpP --minimal linux-2.6.31.6/fs/binfmt_aout.c linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_aout.c
+--- linux-2.6.31.6/fs/binfmt_aout.c 2009-03-24 14:22:24.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_aout.c 2009-09-10 16:11:43.000000000 +0200
+@@ -24,6 +24,7 @@
+ #include <linux/binfmts.h>
+ #include <linux/personality.h>
+ #include <linux/init.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/system.h>
+ #include <asm/uaccess.h>
+diff -NurpP --minimal linux-2.6.31.6/fs/binfmt_elf.c linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_elf.c
+--- linux-2.6.31.6/fs/binfmt_elf.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_elf.c 2009-09-29 17:02:58.000000000 +0200
+@@ -31,6 +31,7 @@
+ #include <linux/random.h>
+ #include <linux/elf.h>
+ #include <linux/utsname.h>
++#include <linux/vs_memory.h>
+ #include <asm/uaccess.h>
+ #include <asm/param.h>
+ #include <asm/page.h>
+diff -NurpP --minimal linux-2.6.31.6/fs/binfmt_flat.c linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_flat.c
+--- linux-2.6.31.6/fs/binfmt_flat.c 2009-09-10 15:26:20.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_flat.c 2009-09-10 16:11:43.000000000 +0200
+@@ -35,6 +35,7 @@
+ #include <linux/init.h>
+ #include <linux/flat.h>
+ #include <linux/syscalls.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/byteorder.h>
+ #include <asm/system.h>
+diff -NurpP --minimal linux-2.6.31.6/fs/binfmt_som.c linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_som.c
+--- linux-2.6.31.6/fs/binfmt_som.c 2009-06-11 17:13:02.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/binfmt_som.c 2009-09-10 16:11:43.000000000 +0200
+@@ -28,6 +28,7 @@
+ #include <linux/shm.h>
+ #include <linux/personality.h>
+ #include <linux/init.h>
++#include <linux/vs_memory.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/pgtable.h>
+diff -NurpP --minimal linux-2.6.31.6/fs/block_dev.c linux-2.6.31.6-vs2.3.0.36.24/fs/block_dev.c
+--- linux-2.6.31.6/fs/block_dev.c 2009-09-10 15:26:20.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/block_dev.c 2009-09-10 17:01:13.000000000 +0200
+@@ -26,6 +26,7 @@
+ #include <linux/namei.h>
+ #include <linux/log2.h>
+ #include <linux/kmemleak.h>
++#include <linux/vs_device.h>
+ #include <asm/uaccess.h>
+ #include "internal.h"
+
+@@ -550,6 +551,7 @@ struct block_device *bdget(dev_t dev)
+ bdev->bd_invalidated = 0;
+ inode->i_mode = S_IFBLK;
+ inode->i_rdev = dev;
++ inode->i_mdev = dev;
+ inode->i_bdev = bdev;
+ inode->i_data.a_ops = &def_blk_aops;
+ mapping_set_gfp_mask(&inode->i_data, GFP_USER);
+@@ -596,6 +598,11 @@ EXPORT_SYMBOL(bdput);
+ static struct block_device *bd_acquire(struct inode *inode)
+ {
+ struct block_device *bdev;
++ dev_t mdev;
++
++ if (!vs_map_blkdev(inode->i_rdev, &mdev, DATTR_OPEN))
++ return NULL;
++ inode->i_mdev = mdev;
+
+ spin_lock(&bdev_lock);
+ bdev = inode->i_bdev;
+@@ -606,7 +613,7 @@ static struct block_device *bd_acquire(s
+ }
+ spin_unlock(&bdev_lock);
+
+- bdev = bdget(inode->i_rdev);
++ bdev = bdget(mdev);
+ if (bdev) {
+ spin_lock(&bdev_lock);
+ if (!inode->i_bdev) {
+diff -NurpP --minimal linux-2.6.31.6/fs/btrfs/ctree.h linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/ctree.h
+--- linux-2.6.31.6/fs/btrfs/ctree.h 2009-09-10 15:26:20.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/ctree.h 2009-10-08 07:39:48.000000000 +0200
+@@ -540,11 +540,14 @@ struct btrfs_inode_item {
+ /* modification sequence number for NFS */
+ __le64 sequence;
+
++ __le16 tag;
+ /*
+ * a little future expansion, for more than this we can
+ * just grow the inode item and version it
+ */
+- __le64 reserved[4];
++ __le16 reserved16;
++ __le32 reserved32;
++ __le64 reserved[3];
+ struct btrfs_timespec atime;
+ struct btrfs_timespec ctime;
+ struct btrfs_timespec mtime;
+@@ -1119,6 +1122,8 @@ struct btrfs_root {
+ #define BTRFS_MOUNT_SSD_SPREAD (1 << 8)
+ #define BTRFS_MOUNT_NOSSD (1 << 9)
+
++#define BTRFS_MOUNT_TAGGED (1 << 24)
++
+ #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
+ #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
+ #define btrfs_test_opt(root, opt) ((root)->fs_info->mount_opt & \
+@@ -1138,6 +1143,10 @@ struct btrfs_root {
+ #define BTRFS_INODE_NOATIME (1 << 9)
+ #define BTRFS_INODE_DIRSYNC (1 << 10)
+
++#define BTRFS_INODE_IXUNLINK (1 << 24)
++#define BTRFS_INODE_BARRIER (1 << 25)
++#define BTRFS_INODE_COW (1 << 26)
++
+
+ /* some macros to generate set/get funcs for the struct fields. This
+ * assumes there is a lefoo_to_cpu for every type, so lets make a simple
+@@ -1340,6 +1349,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
+ BTRFS_SETGET_FUNCS(inode_nlink, struct btrfs_inode_item, nlink, 32);
+ BTRFS_SETGET_FUNCS(inode_uid, struct btrfs_inode_item, uid, 32);
+ BTRFS_SETGET_FUNCS(inode_gid, struct btrfs_inode_item, gid, 32);
++BTRFS_SETGET_FUNCS(inode_tag, struct btrfs_inode_item, tag, 16);
+ BTRFS_SETGET_FUNCS(inode_mode, struct btrfs_inode_item, mode, 32);
+ BTRFS_SETGET_FUNCS(inode_rdev, struct btrfs_inode_item, rdev, 64);
+ BTRFS_SETGET_FUNCS(inode_flags, struct btrfs_inode_item, flags, 64);
+@@ -2280,6 +2290,7 @@ int btrfs_cont_expand(struct inode *inod
+ long btrfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
+ void btrfs_update_iflags(struct inode *inode);
+ void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
++int btrfs_sync_flags(struct inode *inode, int, int);
+
+ /* file.c */
+ int btrfs_sync_file(struct file *file, struct dentry *dentry, int datasync);
+diff -NurpP --minimal linux-2.6.31.6/fs/btrfs/disk-io.c linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/disk-io.c
+--- linux-2.6.31.6/fs/btrfs/disk-io.c 2009-09-10 15:26:20.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/disk-io.c 2009-10-08 06:43:17.000000000 +0200
+@@ -1673,6 +1673,9 @@ struct btrfs_root *open_ctree(struct sup
+ goto fail_iput;
+ }
+
++ if (btrfs_test_opt(tree_root, TAGGED))
++ sb->s_flags |= MS_TAGGED;
++
+ features = btrfs_super_incompat_flags(disk_super) &
+ ~BTRFS_FEATURE_INCOMPAT_SUPP;
+ if (features) {
+diff -NurpP --minimal linux-2.6.31.6/fs/btrfs/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/inode.c
+--- linux-2.6.31.6/fs/btrfs/inode.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/inode.c 2009-10-08 14:17:12.000000000 +0200
+@@ -36,6 +36,8 @@
+ #include <linux/xattr.h>
+ #include <linux/posix_acl.h>
+ #include <linux/falloc.h>
++#include <linux/vs_tag.h>
++
+ #include "compat.h"
+ #include "ctree.h"
+ #include "disk-io.h"
+@@ -2072,6 +2074,8 @@ static void btrfs_read_locked_inode(stru
+ int maybe_acls;
+ u64 alloc_group_block;
+ u32 rdev;
++ uid_t uid;
++ gid_t gid;
+ int ret;
+
+ path = btrfs_alloc_path();
+@@ -2088,8 +2092,13 @@ static void btrfs_read_locked_inode(stru
+
+ inode->i_mode = btrfs_inode_mode(leaf, inode_item);
+ inode->i_nlink = btrfs_inode_nlink(leaf, inode_item);
+- inode->i_uid = btrfs_inode_uid(leaf, inode_item);
+- inode->i_gid = btrfs_inode_gid(leaf, inode_item);
++
++ uid = btrfs_inode_uid(leaf, inode_item);
++ gid = btrfs_inode_gid(leaf, inode_item);
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid,
++ btrfs_inode_tag(leaf, inode_item));
+ btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item));
+
+ tspec = btrfs_inode_atime(inode_item);
+@@ -2171,8 +2180,15 @@ static void fill_inode_item(struct btrfs
+ struct btrfs_inode_item *item,
+ struct inode *inode)
+ {
+- btrfs_set_inode_uid(leaf, item, inode->i_uid);
+- btrfs_set_inode_gid(leaf, item, inode->i_gid);
++ uid_t uid = TAGINO_UID(DX_TAG(inode), inode->i_uid, inode->i_tag);
++ gid_t gid = TAGINO_GID(DX_TAG(inode), inode->i_gid, inode->i_tag);
++
++ btrfs_set_inode_uid(leaf, item, uid);
++ btrfs_set_inode_gid(leaf, item, gid);
++#ifdef CONFIG_TAGGING_INTERN
++ btrfs_set_inode_tag(leaf, item, inode->i_tag);
++#endif
++
+ btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size);
+ btrfs_set_inode_mode(leaf, item, inode->i_mode);
+ btrfs_set_inode_nlink(leaf, item, inode->i_nlink);
+@@ -3615,6 +3631,7 @@ static struct inode *btrfs_new_inode(str
+ } else
+ inode->i_gid = current_fsgid();
+
++ inode->i_tag = dx_current_fstag(root->fs_info->sb);
+ inode->i_mode = mode;
+ inode->i_ino = objectid;
+ inode_set_bytes(inode, 0);
+@@ -5218,6 +5235,7 @@ static struct inode_operations btrfs_dir
+ .listxattr = btrfs_listxattr,
+ .removexattr = btrfs_removexattr,
+ .permission = btrfs_permission,
++ .sync_flags = btrfs_sync_flags,
+ };
+ static struct inode_operations btrfs_dir_ro_inode_operations = {
+ .lookup = btrfs_lookup,
+@@ -5289,6 +5307,7 @@ static struct inode_operations btrfs_fil
+ .permission = btrfs_permission,
+ .fallocate = btrfs_fallocate,
+ .fiemap = btrfs_fiemap,
++ .sync_flags = btrfs_sync_flags,
+ };
+ static struct inode_operations btrfs_special_inode_operations = {
+ .getattr = btrfs_getattr,
+diff -NurpP --minimal linux-2.6.31.6/fs/btrfs/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/ioctl.c
+--- linux-2.6.31.6/fs/btrfs/ioctl.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/ioctl.c 2009-10-08 05:58:29.000000000 +0200
+@@ -67,10 +67,13 @@ static unsigned int btrfs_flags_to_ioctl
+ {
+ unsigned int iflags = 0;
+
+- if (flags & BTRFS_INODE_SYNC)
+- iflags |= FS_SYNC_FL;
+ if (flags & BTRFS_INODE_IMMUTABLE)
+ iflags |= FS_IMMUTABLE_FL;
++ if (flags & BTRFS_INODE_IXUNLINK)
++ iflags |= FS_IXUNLINK_FL;
++
++ if (flags & BTRFS_INODE_SYNC)
++ iflags |= FS_SYNC_FL;
+ if (flags & BTRFS_INODE_APPEND)
+ iflags |= FS_APPEND_FL;
+ if (flags & BTRFS_INODE_NODUMP)
+@@ -80,28 +83,78 @@ static unsigned int btrfs_flags_to_ioctl
+ if (flags & BTRFS_INODE_DIRSYNC)
+ iflags |= FS_DIRSYNC_FL;
+
++ if (flags & BTRFS_INODE_BARRIER)
++ iflags |= FS_BARRIER_FL;
++ if (flags & BTRFS_INODE_COW)
++ iflags |= FS_COW_FL;
+ return iflags;
+ }
+
+ /*
+- * Update inode->i_flags based on the btrfs internal flags.
++ * Update inode->i_(v)flags based on the btrfs internal flags.
+ */
+ void btrfs_update_iflags(struct inode *inode)
+ {
+ struct btrfs_inode *ip = BTRFS_I(inode);
+
+- inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+- if (ip->flags & BTRFS_INODE_SYNC)
+- inode->i_flags |= S_SYNC;
+ if (ip->flags & BTRFS_INODE_IMMUTABLE)
+ inode->i_flags |= S_IMMUTABLE;
++ if (ip->flags & BTRFS_INODE_IXUNLINK)
++ inode->i_flags |= S_IXUNLINK;
++
++ if (ip->flags & BTRFS_INODE_SYNC)
++ inode->i_flags |= S_SYNC;
+ if (ip->flags & BTRFS_INODE_APPEND)
+ inode->i_flags |= S_APPEND;
+ if (ip->flags & BTRFS_INODE_NOATIME)
+ inode->i_flags |= S_NOATIME;
+ if (ip->flags & BTRFS_INODE_DIRSYNC)
+ inode->i_flags |= S_DIRSYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (ip->flags & BTRFS_INODE_BARRIER)
++ inode->i_vflags |= V_BARRIER;
++ if (ip->flags & BTRFS_INODE_COW)
++ inode->i_vflags |= V_COW;
++}
++
++/*
++ * Update btrfs internal flags from inode->i_(v)flags.
++ */
++void btrfs_update_flags(struct inode *inode)
++{
++ struct btrfs_inode *ip = BTRFS_I(inode);
++
++ unsigned int flags = inode->i_flags;
++ unsigned int vflags = inode->i_vflags;
++
++ ip->flags &= ~(BTRFS_INODE_SYNC | BTRFS_INODE_APPEND |
++ BTRFS_INODE_IMMUTABLE | BTRFS_INODE_IXUNLINK |
++ BTRFS_INODE_NOATIME | BTRFS_INODE_DIRSYNC |
++ BTRFS_INODE_BARRIER | BTRFS_INODE_COW);
++
++ if (flags & S_IMMUTABLE)
++ ip->flags |= BTRFS_INODE_IMMUTABLE;
++ if (flags & S_IXUNLINK)
++ ip->flags |= BTRFS_INODE_IXUNLINK;
++
++ if (flags & S_SYNC)
++ ip->flags |= BTRFS_INODE_SYNC;
++ if (flags & S_APPEND)
++ ip->flags |= BTRFS_INODE_APPEND;
++ if (flags & S_NOATIME)
++ ip->flags |= BTRFS_INODE_NOATIME;
++ if (flags & S_DIRSYNC)
++ ip->flags |= BTRFS_INODE_DIRSYNC;
++
++ if (vflags & V_BARRIER)
++ ip->flags |= BTRFS_INODE_BARRIER;
++ if (vflags & V_COW)
++ ip->flags |= BTRFS_INODE_COW;
+ }
+
+ /*
+@@ -119,7 +172,7 @@ void btrfs_inherit_iflags(struct inode *
+ flags = BTRFS_I(dir)->flags;
+
+ if (S_ISREG(inode->i_mode))
+- flags &= ~BTRFS_INODE_DIRSYNC;
++ flags &= ~(BTRFS_INODE_DIRSYNC | BTRFS_INODE_BARRIER);
+ else if (!S_ISDIR(inode->i_mode))
+ flags &= (BTRFS_INODE_NODUMP | BTRFS_INODE_NOATIME);
+
+@@ -127,6 +180,30 @@ void btrfs_inherit_iflags(struct inode *
+ btrfs_update_iflags(inode);
+ }
+
++int btrfs_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ struct btrfs_inode *ip = BTRFS_I(inode);
++ struct btrfs_root *root = ip->root;
++ struct btrfs_trans_handle *trans;
++ int ret;
++
++ trans = btrfs_join_transaction(root, 1);
++ BUG_ON(!trans);
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ btrfs_update_flags(inode);
++
++ ret = btrfs_update_inode(trans, root, inode);
++ BUG_ON(ret);
++
++ btrfs_update_iflags(inode);
++ inode->i_ctime = CURRENT_TIME;
++ btrfs_end_transaction(trans, root);
++
++ return 0;
++}
++
+ static int btrfs_ioctl_getflags(struct file *file, void __user *arg)
+ {
+ struct btrfs_inode *ip = BTRFS_I(file->f_path.dentry->d_inode);
+@@ -149,6 +226,7 @@ static int btrfs_ioctl_setflags(struct f
+ if (copy_from_user(&flags, arg, sizeof(flags)))
+ return -EFAULT;
+
++ /* maybe add FS_IXUNLINK_FL ? */
+ if (flags & ~(FS_IMMUTABLE_FL | FS_APPEND_FL | \
+ FS_NOATIME_FL | FS_NODUMP_FL | \
+ FS_SYNC_FL | FS_DIRSYNC_FL))
+@@ -161,7 +239,8 @@ static int btrfs_ioctl_setflags(struct f
+
+ flags = btrfs_mask_flags(inode->i_mode, flags);
+ oldflags = btrfs_flags_to_ioctl(ip->flags);
+- if ((flags ^ oldflags) & (FS_APPEND_FL | FS_IMMUTABLE_FL)) {
++ if ((flags ^ oldflags) & (FS_APPEND_FL |
++ FS_IMMUTABLE_FL | FS_IXUNLINK_FL)) {
+ if (!capable(CAP_LINUX_IMMUTABLE)) {
+ ret = -EPERM;
+ goto out_unlock;
+@@ -172,14 +251,19 @@ static int btrfs_ioctl_setflags(struct f
+ if (ret)
+ goto out_unlock;
+
+- if (flags & FS_SYNC_FL)
+- ip->flags |= BTRFS_INODE_SYNC;
+- else
+- ip->flags &= ~BTRFS_INODE_SYNC;
+ if (flags & FS_IMMUTABLE_FL)
+ ip->flags |= BTRFS_INODE_IMMUTABLE;
+ else
+ ip->flags &= ~BTRFS_INODE_IMMUTABLE;
++ if (flags & FS_IXUNLINK_FL)
++ ip->flags |= BTRFS_INODE_IXUNLINK;
++ else
++ ip->flags &= ~BTRFS_INODE_IXUNLINK;
++
++ if (flags & FS_SYNC_FL)
++ ip->flags |= BTRFS_INODE_SYNC;
++ else
++ ip->flags &= ~BTRFS_INODE_SYNC;
+ if (flags & FS_APPEND_FL)
+ ip->flags |= BTRFS_INODE_APPEND;
+ else
+diff -NurpP --minimal linux-2.6.31.6/fs/btrfs/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/super.c
+--- linux-2.6.31.6/fs/btrfs/super.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/btrfs/super.c 2009-10-08 07:27:04.000000000 +0200
+@@ -66,7 +66,8 @@ enum {
+ Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow,
+ Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier,
+ Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl,
+- Opt_compress, Opt_notreelog, Opt_ratio, Opt_flushoncommit, Opt_err,
++ Opt_compress, Opt_notreelog, Opt_ratio, Opt_flushoncommit,
++ Opt_tag, Opt_notag, Opt_tagid, Opt_err,
+ };
+
+ static match_table_t tokens = {
+@@ -88,6 +89,9 @@ static match_table_t tokens = {
+ {Opt_notreelog, "notreelog"},
+ {Opt_flushoncommit, "flushoncommit"},
+ {Opt_ratio, "metadata_ratio=%d"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_err, NULL},
+ };
+
+@@ -257,6 +261,22 @@ int btrfs_parse_options(struct btrfs_roo
+ info->metadata_ratio);
+ }
+ break;
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ printk(KERN_INFO "btrfs: use tagging\n");
++ btrfs_set_opt(info->mount_opt, TAGGED);
++ break;
++ case Opt_notag:
++ printk(KERN_INFO "btrfs: disabled tagging\n");
++ btrfs_clear_opt(info->mount_opt, TAGGED);
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ btrfs_set_opt(info->mount_opt, TAGGED);
++ break;
++#endif
+ default:
+ break;
+ }
+@@ -568,6 +588,12 @@ static int btrfs_remount(struct super_bl
+ if (ret)
+ return -EINVAL;
+
++ if (btrfs_test_opt(root, TAGGED) && !(sb->s_flags & MS_TAGGED)) {
++ printk("btrfs: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ return -EINVAL;
++ }
++
+ if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
+ return 0;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/char_dev.c linux-2.6.31.6-vs2.3.0.36.24/fs/char_dev.c
+--- linux-2.6.31.6/fs/char_dev.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/char_dev.c 2009-09-10 16:11:43.000000000 +0200
+@@ -20,6 +20,8 @@
+ #include <linux/cdev.h>
+ #include <linux/mutex.h>
+ #include <linux/backing-dev.h>
++#include <linux/vs_context.h>
++#include <linux/vs_device.h>
+
+ #include "internal.h"
+
+@@ -357,14 +359,21 @@ static int chrdev_open(struct inode *ino
+ struct cdev *p;
+ struct cdev *new = NULL;
+ int ret = 0;
++ dev_t mdev;
++
++ if (!vs_map_chrdev(inode->i_rdev, &mdev, DATTR_OPEN))
++ return -EPERM;
++ inode->i_mdev = mdev;
+
+ spin_lock(&cdev_lock);
+ p = inode->i_cdev;
+ if (!p) {
+ struct kobject *kobj;
+ int idx;
++
+ spin_unlock(&cdev_lock);
+- kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx);
++
++ kobj = kobj_lookup(cdev_map, mdev, &idx);
+ if (!kobj)
+ return -ENXIO;
+ new = container_of(kobj, struct cdev, kobj);
+diff -NurpP --minimal linux-2.6.31.6/fs/dcache.c linux-2.6.31.6-vs2.3.0.36.24/fs/dcache.c
+--- linux-2.6.31.6/fs/dcache.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/dcache.c 2009-09-10 16:11:43.000000000 +0200
+@@ -32,6 +32,7 @@
+ #include <linux/swap.h>
+ #include <linux/bootmem.h>
+ #include <linux/fs_struct.h>
++#include <linux/vs_limit.h>
+ #include "internal.h"
+
+ int sysctl_vfs_cache_pressure __read_mostly = 100;
+@@ -229,6 +230,8 @@ repeat:
+ return;
+ }
+
++ vx_dentry_dec(dentry);
++
+ /*
+ * AV: ->d_delete() is _NOT_ allowed to block now.
+ */
+@@ -320,6 +323,7 @@ static inline struct dentry * __dget_loc
+ {
+ atomic_inc(&dentry->d_count);
+ dentry_lru_del_init(dentry);
++ vx_dentry_inc(dentry);
+ return dentry;
+ }
+
+@@ -918,6 +922,9 @@ struct dentry *d_alloc(struct dentry * p
+ struct dentry *dentry;
+ char *dname;
+
++ if (!vx_dentry_avail(1))
++ return NULL;
++
+ dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL);
+ if (!dentry)
+ return NULL;
+@@ -963,6 +970,7 @@ struct dentry *d_alloc(struct dentry * p
+ if (parent)
+ list_add(&dentry->d_u.d_child, &parent->d_subdirs);
+ dentry_stat.nr_dentry++;
++ vx_dentry_inc(dentry);
+ spin_unlock(&dcache_lock);
+
+ return dentry;
+@@ -1406,6 +1414,7 @@ struct dentry * __d_lookup(struct dentry
+ }
+
+ atomic_inc(&dentry->d_count);
++ vx_dentry_inc(dentry);
+ found = dentry;
+ spin_unlock(&dentry->d_lock);
+ break;
+diff -NurpP --minimal linux-2.6.31.6/fs/devpts/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/devpts/inode.c
+--- linux-2.6.31.6/fs/devpts/inode.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/devpts/inode.c 2009-09-10 16:11:43.000000000 +0200
+@@ -19,12 +19,12 @@
+ #include <linux/tty.h>
+ #include <linux/mutex.h>
+ #include <linux/idr.h>
++#include <linux/magic.h>
+ #include <linux/devpts_fs.h>
+ #include <linux/parser.h>
+ #include <linux/fsnotify.h>
+ #include <linux/seq_file.h>
+-
+-#define DEVPTS_SUPER_MAGIC 0x1cd1
++#include <linux/vs_base.h>
+
+ #define DEVPTS_DEFAULT_MODE 0600
+ /*
+@@ -36,6 +36,20 @@
+ #define DEVPTS_DEFAULT_PTMX_MODE 0000
+ #define PTMX_MINOR 2
+
++static int devpts_permission(struct inode *inode, int mask)
++{
++ int ret = -EACCES;
++
++ /* devpts is xid tagged */
++ if (vx_check((xid_t)inode->i_tag, VS_WATCH_P | VS_IDENT))
++ ret = generic_permission(inode, mask, NULL);
++ return ret;
++}
++
++static struct inode_operations devpts_file_inode_operations = {
++ .permission = devpts_permission,
++};
++
+ extern int pty_limit; /* Config limit on Unix98 ptys */
+ static DEFINE_MUTEX(allocated_ptys_lock);
+
+@@ -263,6 +277,25 @@ static int devpts_show_options(struct se
+ return 0;
+ }
+
++static int devpts_filter(struct dentry *de)
++{
++ /* devpts is xid tagged */
++ return vx_check((xid_t)de->d_inode->i_tag, VS_WATCH_P | VS_IDENT);
++}
++
++static int devpts_readdir(struct file * filp, void * dirent, filldir_t filldir)
++{
++ return dcache_readdir_filter(filp, dirent, filldir, devpts_filter);
++}
++
++static struct file_operations devpts_dir_operations = {
++ .open = dcache_dir_open,
++ .release = dcache_dir_close,
++ .llseek = dcache_dir_lseek,
++ .read = generic_read_dir,
++ .readdir = devpts_readdir,
++};
++
+ static const struct super_operations devpts_sops = {
+ .statfs = simple_statfs,
+ .remount_fs = devpts_remount,
+@@ -302,12 +335,15 @@ devpts_fill_super(struct super_block *s,
+ inode = new_inode(s);
+ if (!inode)
+ goto free_fsi;
++
+ inode->i_ino = 1;
+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
+ inode->i_mode = S_IFDIR | S_IRUGO | S_IXUGO | S_IWUSR;
+ inode->i_op = &simple_dir_inode_operations;
+- inode->i_fop = &simple_dir_operations;
++ inode->i_fop = &devpts_dir_operations;
+ inode->i_nlink = 2;
++ /* devpts is xid tagged */
++ inode->i_tag = (tag_t)vx_current_xid();
+
+ s->s_root = d_alloc_root(inode);
+ if (s->s_root)
+@@ -498,6 +534,9 @@ int devpts_pty_new(struct inode *ptmx_in
+ inode->i_gid = opts->setgid ? opts->gid : current_fsgid();
+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
+ init_special_inode(inode, S_IFCHR|opts->mode, device);
++ /* devpts is xid tagged */
++ inode->i_tag = (tag_t)vx_current_xid();
++ inode->i_op = &devpts_file_inode_operations;
+ inode->i_private = tty;
+ tty->driver_data = inode;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/exec.c linux-2.6.31.6-vs2.3.0.36.24/fs/exec.c
+--- linux-2.6.31.6/fs/exec.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/exec.c 2009-09-10 16:11:43.000000000 +0200
+@@ -249,7 +249,9 @@ static int __bprm_mm_init(struct linux_b
+ if (err)
+ goto err;
+
+- mm->stack_vm = mm->total_vm = 1;
++ mm->total_vm = 0;
++ vx_vmpages_inc(mm);
++ mm->stack_vm = 1;
+ up_write(&mm->mmap_sem);
+ bprm->p = vma->vm_end - sizeof(void *);
+ return 0;
+@@ -1471,7 +1473,7 @@ static int format_corename(char *corenam
+ /* UNIX time of coredump */
+ case 't': {
+ struct timeval tv;
+- do_gettimeofday(&tv);
++ vx_gettimeofday(&tv);
+ rc = snprintf(out_ptr, out_end - out_ptr,
+ "%lu", tv.tv_sec);
+ if (rc > out_end - out_ptr)
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/balloc.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/balloc.c
+--- linux-2.6.31.6/fs/ext2/balloc.c 2009-06-11 17:13:03.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/balloc.c 2009-09-10 16:11:43.000000000 +0200
+@@ -701,7 +701,6 @@ ext2_try_to_allocate(struct super_block
+ start = 0;
+ end = EXT2_BLOCKS_PER_GROUP(sb);
+ }
+-
+ BUG_ON(start > EXT2_BLOCKS_PER_GROUP(sb));
+
+ repeat:
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/ext2.h linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ext2.h
+--- linux-2.6.31.6/fs/ext2/ext2.h 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ext2.h 2009-10-07 01:23:12.000000000 +0200
+@@ -131,6 +131,7 @@ extern int ext2_fiemap(struct inode *ino
+ int __ext2_write_begin(struct file *file, struct address_space *mapping,
+ loff_t pos, unsigned len, unsigned flags,
+ struct page **pagep, void **fsdata);
++extern int ext2_sync_flags(struct inode *, int, int);
+
+ /* ioctl.c */
+ extern long ext2_ioctl(struct file *, unsigned int, unsigned long);
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/file.c
+--- linux-2.6.31.6/fs/ext2/file.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/file.c 2009-10-07 01:03:12.000000000 +0200
+@@ -87,4 +87,5 @@ const struct inode_operations ext2_file_
+ .setattr = ext2_setattr,
+ .permission = ext2_permission,
+ .fiemap = ext2_fiemap,
++ .sync_flags = ext2_sync_flags,
+ };
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/ialloc.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ialloc.c
+--- linux-2.6.31.6/fs/ext2/ialloc.c 2009-06-11 17:13:03.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ialloc.c 2009-10-12 05:05:34.000000000 +0200
+@@ -17,6 +17,7 @@
+ #include <linux/backing-dev.h>
+ #include <linux/buffer_head.h>
+ #include <linux/random.h>
++#include <linux/vs_tag.h>
+ #include "ext2.h"
+ #include "xattr.h"
+ #include "acl.h"
+@@ -560,6 +561,7 @@ got:
+ } else
+ inode->i_gid = current_fsgid();
+ inode->i_mode = mode;
++ inode->i_tag = dx_current_fstag(sb);
+
+ inode->i_ino = ino;
+ inode->i_blocks = 0;
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/inode.c
+--- linux-2.6.31.6/fs/ext2/inode.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/inode.c 2009-10-06 19:45:13.000000000 +0200
+@@ -33,6 +33,7 @@
+ #include <linux/mpage.h>
+ #include <linux/fiemap.h>
+ #include <linux/namei.h>
++#include <linux/vs_tag.h>
+ #include "ext2.h"
+ #include "acl.h"
+ #include "xip.h"
+@@ -1038,7 +1039,7 @@ void ext2_truncate(struct inode *inode)
+ return;
+ if (ext2_inode_is_fast_symlink(inode))
+ return;
+- if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
++ if (IS_APPEND(inode) || IS_IXORUNLINK(inode))
+ return;
+
+ blocksize = inode->i_sb->s_blocksize;
+@@ -1176,36 +1177,61 @@ void ext2_set_inode_flags(struct inode *
+ {
+ unsigned int flags = EXT2_I(inode)->i_flags;
+
+- inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
++
++
++ if (flags & EXT2_IMMUTABLE_FL)
++ inode->i_flags |= S_IMMUTABLE;
++ if (flags & EXT2_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
++
+ if (flags & EXT2_SYNC_FL)
+ inode->i_flags |= S_SYNC;
+ if (flags & EXT2_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+- if (flags & EXT2_IMMUTABLE_FL)
+- inode->i_flags |= S_IMMUTABLE;
+ if (flags & EXT2_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+ if (flags & EXT2_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (flags & EXT2_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ if (flags & EXT2_COW_FL)
++ inode->i_vflags |= V_COW;
+ }
+
+ /* Propagate flags from i_flags to EXT2_I(inode)->i_flags */
+ void ext2_get_inode_flags(struct ext2_inode_info *ei)
+ {
+ unsigned int flags = ei->vfs_inode.i_flags;
++ unsigned int vflags = ei->vfs_inode.i_vflags;
++
++ ei->i_flags &= ~(EXT2_SYNC_FL | EXT2_APPEND_FL |
++ EXT2_IMMUTABLE_FL | EXT2_IXUNLINK_FL |
++ EXT2_NOATIME_FL | EXT2_DIRSYNC_FL |
++ EXT2_BARRIER_FL | EXT2_COW_FL);
++
++ if (flags & S_IMMUTABLE)
++ ei->i_flags |= EXT2_IMMUTABLE_FL;
++ if (flags & S_IXUNLINK)
++ ei->i_flags |= EXT2_IXUNLINK_FL;
+
+- ei->i_flags &= ~(EXT2_SYNC_FL|EXT2_APPEND_FL|
+- EXT2_IMMUTABLE_FL|EXT2_NOATIME_FL|EXT2_DIRSYNC_FL);
+ if (flags & S_SYNC)
+ ei->i_flags |= EXT2_SYNC_FL;
+ if (flags & S_APPEND)
+ ei->i_flags |= EXT2_APPEND_FL;
+- if (flags & S_IMMUTABLE)
+- ei->i_flags |= EXT2_IMMUTABLE_FL;
+ if (flags & S_NOATIME)
+ ei->i_flags |= EXT2_NOATIME_FL;
+ if (flags & S_DIRSYNC)
+ ei->i_flags |= EXT2_DIRSYNC_FL;
++
++ if (vflags & V_BARRIER)
++ ei->i_flags |= EXT2_BARRIER_FL;
++ if (vflags & V_COW)
++ ei->i_flags |= EXT2_COW_FL;
+ }
+
+ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
+@@ -1215,6 +1241,8 @@ struct inode *ext2_iget (struct super_bl
+ struct ext2_inode *raw_inode;
+ struct inode *inode;
+ long ret = -EIO;
++ uid_t uid;
++ gid_t gid;
+ int n;
+
+ inode = iget_locked(sb, ino);
+@@ -1233,12 +1261,17 @@ struct inode *ext2_iget (struct super_bl
+ }
+
+ inode->i_mode = le16_to_cpu(raw_inode->i_mode);
+- inode->i_uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
+- inode->i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
++ uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
++ gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
+ if (!(test_opt (inode->i_sb, NO_UID32))) {
+- inode->i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
+- inode->i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
++ uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
++ gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
+ }
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid,
++ le16_to_cpu(raw_inode->i_raw_tag));
++
+ inode->i_nlink = le16_to_cpu(raw_inode->i_links_count);
+ inode->i_size = le32_to_cpu(raw_inode->i_size);
+ inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
+@@ -1336,8 +1369,8 @@ int ext2_write_inode(struct inode *inode
+ struct ext2_inode_info *ei = EXT2_I(inode);
+ struct super_block *sb = inode->i_sb;
+ ino_t ino = inode->i_ino;
+- uid_t uid = inode->i_uid;
+- gid_t gid = inode->i_gid;
++ uid_t uid = TAGINO_UID(DX_TAG(inode), inode->i_uid, inode->i_tag);
++ gid_t gid = TAGINO_GID(DX_TAG(inode), inode->i_gid, inode->i_tag);
+ struct buffer_head * bh;
+ struct ext2_inode * raw_inode = ext2_get_inode(sb, ino, &bh);
+ int n;
+@@ -1373,6 +1406,9 @@ int ext2_write_inode(struct inode *inode
+ raw_inode->i_uid_high = 0;
+ raw_inode->i_gid_high = 0;
+ }
++#ifdef CONFIG_TAGGING_INTERN
++ raw_inode->i_raw_tag = cpu_to_le16(inode->i_tag);
++#endif
+ raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
+ raw_inode->i_size = cpu_to_le32(inode->i_size);
+ raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
+@@ -1454,7 +1490,8 @@ int ext2_setattr(struct dentry *dentry,
+ if (error)
+ return error;
+ if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
+- (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
++ (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid) ||
++ (iattr->ia_valid & ATTR_TAG && iattr->ia_tag != inode->i_tag)) {
+ error = vfs_dq_transfer(inode, iattr) ? -EDQUOT : 0;
+ if (error)
+ return error;
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ioctl.c
+--- linux-2.6.31.6/fs/ext2/ioctl.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/ioctl.c 2009-10-07 01:01:20.000000000 +0200
+@@ -17,6 +17,16 @@
+ #include <asm/uaccess.h>
+
+
++int ext2_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ ext2_get_inode_flags(EXT2_I(inode));
++ inode->i_ctime = CURRENT_TIME_SEC;
++ mark_inode_dirty(inode);
++ return 0;
++}
++
+ long ext2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ struct inode *inode = filp->f_dentry->d_inode;
+@@ -51,6 +61,11 @@ long ext2_ioctl(struct file *filp, unsig
+
+ flags = ext2_mask_flags(inode->i_mode, flags);
+
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -EACCES;
++ }
++
+ mutex_lock(&inode->i_mutex);
+ /* Is it quota file? Do not allow user to mess with it */
+ if (IS_NOQUOTA(inode)) {
+@@ -66,7 +81,9 @@ long ext2_ioctl(struct file *filp, unsig
+ *
+ * This test looks nicer. Thanks to Pauline Middelink
+ */
+- if ((flags ^ oldflags) & (EXT2_APPEND_FL | EXT2_IMMUTABLE_FL)) {
++ if ((oldflags & EXT2_IMMUTABLE_FL) ||
++ ((flags ^ oldflags) & (EXT2_APPEND_FL |
++ EXT2_IMMUTABLE_FL | EXT2_IXUNLINK_FL))) {
+ if (!capable(CAP_LINUX_IMMUTABLE)) {
+ mutex_unlock(&inode->i_mutex);
+ ret = -EPERM;
+@@ -74,7 +91,7 @@ long ext2_ioctl(struct file *filp, unsig
+ }
+ }
+
+- flags = flags & EXT2_FL_USER_MODIFIABLE;
++ flags &= EXT2_FL_USER_MODIFIABLE;
+ flags |= oldflags & ~EXT2_FL_USER_MODIFIABLE;
+ ei->i_flags = flags;
+ mutex_unlock(&inode->i_mutex);
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/namei.c
+--- linux-2.6.31.6/fs/ext2/namei.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/namei.c 2009-10-07 01:08:06.000000000 +0200
+@@ -31,6 +31,7 @@
+ */
+
+ #include <linux/pagemap.h>
++#include <linux/vs_tag.h>
+ #include "ext2.h"
+ #include "xattr.h"
+ #include "acl.h"
+@@ -74,6 +75,7 @@ static struct dentry *ext2_lookup(struct
+ return ERR_PTR(-EIO);
+ } else {
+ return ERR_CAST(inode);
++ dx_propagate_tag(nd, inode);
+ }
+ }
+ }
+@@ -401,6 +403,7 @@ const struct inode_operations ext2_dir_i
+ #endif
+ .setattr = ext2_setattr,
+ .permission = ext2_permission,
++ .sync_flags = ext2_sync_flags,
+ };
+
+ const struct inode_operations ext2_special_inode_operations = {
+diff -NurpP --minimal linux-2.6.31.6/fs/ext2/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/super.c
+--- linux-2.6.31.6/fs/ext2/super.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext2/super.c 2009-10-06 22:47:11.000000000 +0200
+@@ -382,7 +382,8 @@ enum {
+ Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
+ Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
+ Opt_acl, Opt_noacl, Opt_xip, Opt_ignore, Opt_err, Opt_quota,
+- Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation
++ Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation,
++ Opt_tag, Opt_notag, Opt_tagid
+ };
+
+ static const match_table_t tokens = {
+@@ -410,6 +411,9 @@ static const match_table_t tokens = {
+ {Opt_acl, "acl"},
+ {Opt_noacl, "noacl"},
+ {Opt_xip, "xip"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_grpquota, "grpquota"},
+ {Opt_ignore, "noquota"},
+ {Opt_quota, "quota"},
+@@ -480,6 +484,20 @@ static int parse_options (char * options
+ case Opt_nouid32:
+ set_opt (sbi->s_mount_opt, NO_UID32);
+ break;
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++ case Opt_notag:
++ clear_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
+ case Opt_nocheck:
+ clear_opt (sbi->s_mount_opt, CHECK);
+ break;
+@@ -829,6 +847,8 @@ static int ext2_fill_super(struct super_
+ if (!parse_options ((char *) data, sbi))
+ goto failed_mount;
+
++ if (EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED;
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ?
+ MS_POSIXACL : 0);
+@@ -1175,6 +1195,14 @@ static int ext2_remount (struct super_bl
+ goto restore_opts;
+ }
+
++ if ((sbi->s_mount_opt & EXT2_MOUNT_TAGGED) &&
++ !(sb->s_flags & MS_TAGGED)) {
++ printk("EXT2-fs: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ err = -EINVAL;
++ goto restore_opts;
++ }
++
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/file.c
+--- linux-2.6.31.6/fs/ext3/file.c 2009-06-11 17:13:03.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/file.c 2009-10-06 23:23:15.000000000 +0200
+@@ -139,5 +139,6 @@ const struct inode_operations ext3_file_
+ #endif
+ .permission = ext3_permission,
+ .fiemap = ext3_fiemap,
++ .sync_flags = ext3_sync_flags,
+ };
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/ialloc.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/ialloc.c
+--- linux-2.6.31.6/fs/ext3/ialloc.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/ialloc.c 2009-10-12 05:06:13.000000000 +0200
+@@ -23,6 +23,7 @@
+ #include <linux/buffer_head.h>
+ #include <linux/random.h>
+ #include <linux/bitops.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/byteorder.h>
+
+@@ -548,6 +549,7 @@ got:
+ } else
+ inode->i_gid = current_fsgid();
+ inode->i_mode = mode;
++ inode->i_tag = dx_current_fstag(sb);
+
+ inode->i_ino = ino;
+ /* This is the optimal IO size (for stat), not the fs block size */
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/inode.c
+--- linux-2.6.31.6/fs/ext3/inode.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/inode.c 2009-10-06 19:45:13.000000000 +0200
+@@ -38,6 +38,7 @@
+ #include <linux/bio.h>
+ #include <linux/fiemap.h>
+ #include <linux/namei.h>
++#include <linux/vs_tag.h>
+ #include "xattr.h"
+ #include "acl.h"
+
+@@ -2312,7 +2313,7 @@ static void ext3_free_branches(handle_t
+
+ int ext3_can_truncate(struct inode *inode)
+ {
+- if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
++ if (IS_APPEND(inode) || IS_IXORUNLINK(inode))
+ return 0;
+ if (S_ISREG(inode->i_mode))
+ return 1;
+@@ -2697,36 +2698,60 @@ void ext3_set_inode_flags(struct inode *
+ {
+ unsigned int flags = EXT3_I(inode)->i_flags;
+
+- inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
++
++ if (flags & EXT3_IMMUTABLE_FL)
++ inode->i_flags |= S_IMMUTABLE;
++ if (flags & EXT3_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
++
+ if (flags & EXT3_SYNC_FL)
+ inode->i_flags |= S_SYNC;
+ if (flags & EXT3_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+- if (flags & EXT3_IMMUTABLE_FL)
+- inode->i_flags |= S_IMMUTABLE;
+ if (flags & EXT3_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+ if (flags & EXT3_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (flags & EXT3_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ if (flags & EXT3_COW_FL)
++ inode->i_vflags |= V_COW;
+ }
+
+ /* Propagate flags from i_flags to EXT3_I(inode)->i_flags */
+ void ext3_get_inode_flags(struct ext3_inode_info *ei)
+ {
+ unsigned int flags = ei->vfs_inode.i_flags;
++ unsigned int vflags = ei->vfs_inode.i_vflags;
++
++ ei->i_flags &= ~(EXT3_SYNC_FL | EXT3_APPEND_FL |
++ EXT3_IMMUTABLE_FL | EXT3_IXUNLINK_FL |
++ EXT3_NOATIME_FL | EXT3_DIRSYNC_FL |
++ EXT3_BARRIER_FL | EXT3_COW_FL);
++
++ if (flags & S_IMMUTABLE)
++ ei->i_flags |= EXT3_IMMUTABLE_FL;
++ if (flags & S_IXUNLINK)
++ ei->i_flags |= EXT3_IXUNLINK_FL;
+
+- ei->i_flags &= ~(EXT3_SYNC_FL|EXT3_APPEND_FL|
+- EXT3_IMMUTABLE_FL|EXT3_NOATIME_FL|EXT3_DIRSYNC_FL);
+ if (flags & S_SYNC)
+ ei->i_flags |= EXT3_SYNC_FL;
+ if (flags & S_APPEND)
+ ei->i_flags |= EXT3_APPEND_FL;
+- if (flags & S_IMMUTABLE)
+- ei->i_flags |= EXT3_IMMUTABLE_FL;
+ if (flags & S_NOATIME)
+ ei->i_flags |= EXT3_NOATIME_FL;
+ if (flags & S_DIRSYNC)
+ ei->i_flags |= EXT3_DIRSYNC_FL;
++
++ if (vflags & V_BARRIER)
++ ei->i_flags |= EXT3_BARRIER_FL;
++ if (vflags & V_COW)
++ ei->i_flags |= EXT3_COW_FL;
+ }
+
+ struct inode *ext3_iget(struct super_block *sb, unsigned long ino)
+@@ -2738,6 +2763,8 @@ struct inode *ext3_iget(struct super_blo
+ struct inode *inode;
+ long ret;
+ int block;
++ uid_t uid;
++ gid_t gid;
+
+ inode = iget_locked(sb, ino);
+ if (!inode)
+@@ -2754,12 +2781,17 @@ struct inode *ext3_iget(struct super_blo
+ bh = iloc.bh;
+ raw_inode = ext3_raw_inode(&iloc);
+ inode->i_mode = le16_to_cpu(raw_inode->i_mode);
+- inode->i_uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
+- inode->i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
++ uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
++ gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
+ if(!(test_opt (inode->i_sb, NO_UID32))) {
+- inode->i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
+- inode->i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
++ uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
++ gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
+ }
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid,
++ le16_to_cpu(raw_inode->i_raw_tag));
++
+ inode->i_nlink = le16_to_cpu(raw_inode->i_links_count);
+ inode->i_size = le32_to_cpu(raw_inode->i_size);
+ inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
+@@ -2890,6 +2922,8 @@ static int ext3_do_update_inode(handle_t
+ struct ext3_inode *raw_inode = ext3_raw_inode(iloc);
+ struct ext3_inode_info *ei = EXT3_I(inode);
+ struct buffer_head *bh = iloc->bh;
++ uid_t uid = TAGINO_UID(DX_TAG(inode), inode->i_uid, inode->i_tag);
++ gid_t gid = TAGINO_GID(DX_TAG(inode), inode->i_gid, inode->i_tag);
+ int err = 0, rc, block;
+
+ /* For fields not not tracking in the in-memory inode,
+@@ -2900,29 +2934,32 @@ static int ext3_do_update_inode(handle_t
+ ext3_get_inode_flags(ei);
+ raw_inode->i_mode = cpu_to_le16(inode->i_mode);
+ if(!(test_opt(inode->i_sb, NO_UID32))) {
+- raw_inode->i_uid_low = cpu_to_le16(low_16_bits(inode->i_uid));
+- raw_inode->i_gid_low = cpu_to_le16(low_16_bits(inode->i_gid));
++ raw_inode->i_uid_low = cpu_to_le16(low_16_bits(uid));
++ raw_inode->i_gid_low = cpu_to_le16(low_16_bits(gid));
+ /*
+ * Fix up interoperability with old kernels. Otherwise, old inodes get
+ * re-used with the upper 16 bits of the uid/gid intact
+ */
+ if(!ei->i_dtime) {
+ raw_inode->i_uid_high =
+- cpu_to_le16(high_16_bits(inode->i_uid));
++ cpu_to_le16(high_16_bits(uid));
+ raw_inode->i_gid_high =
+- cpu_to_le16(high_16_bits(inode->i_gid));
++ cpu_to_le16(high_16_bits(gid));
+ } else {
+ raw_inode->i_uid_high = 0;
+ raw_inode->i_gid_high = 0;
+ }
+ } else {
+ raw_inode->i_uid_low =
+- cpu_to_le16(fs_high2lowuid(inode->i_uid));
++ cpu_to_le16(fs_high2lowuid(uid));
+ raw_inode->i_gid_low =
+- cpu_to_le16(fs_high2lowgid(inode->i_gid));
++ cpu_to_le16(fs_high2lowgid(gid));
+ raw_inode->i_uid_high = 0;
+ raw_inode->i_gid_high = 0;
+ }
++#ifdef CONFIG_TAGGING_INTERN
++ raw_inode->i_raw_tag = cpu_to_le16(inode->i_tag);
++#endif
+ raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
+ raw_inode->i_size = cpu_to_le32(ei->i_disksize);
+ raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
+@@ -3074,7 +3111,8 @@ int ext3_setattr(struct dentry *dentry,
+ return error;
+
+ if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+- (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
++ (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid) ||
++ (ia_valid & ATTR_TAG && attr->ia_tag != inode->i_tag)) {
+ handle_t *handle;
+
+ /* (user+group)*(old+new) structure, inode write (sb,
+@@ -3096,6 +3134,8 @@ int ext3_setattr(struct dentry *dentry,
+ inode->i_uid = attr->ia_uid;
+ if (attr->ia_valid & ATTR_GID)
+ inode->i_gid = attr->ia_gid;
++ if ((attr->ia_valid & ATTR_TAG) && IS_TAGGED(inode))
++ inode->i_tag = attr->ia_tag;
+ error = ext3_mark_inode_dirty(handle, inode);
+ ext3_journal_stop(handle);
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/ioctl.c
+--- linux-2.6.31.6/fs/ext3/ioctl.c 2009-06-11 17:13:03.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/ioctl.c 2009-10-07 00:08:00.000000000 +0200
+@@ -8,6 +8,7 @@
+ */
+
+ #include <linux/fs.h>
++#include <linux/mount.h>
+ #include <linux/jbd.h>
+ #include <linux/capability.h>
+ #include <linux/ext3_fs.h>
+@@ -17,6 +18,34 @@
+ #include <linux/compat.h>
+ #include <asm/uaccess.h>
+
++
++int ext3_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ handle_t *handle = NULL;
++ struct ext3_iloc iloc;
++ int err;
++
++ handle = ext3_journal_start(inode, 1);
++ if (IS_ERR(handle))
++ return PTR_ERR(handle);
++
++ if (IS_SYNC(inode))
++ handle->h_sync = 1;
++ err = ext3_reserve_inode_write(handle, inode, &iloc);
++ if (err)
++ goto flags_err;
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ ext3_get_inode_flags(EXT3_I(inode));
++ inode->i_ctime = CURRENT_TIME_SEC;
++
++ err = ext3_mark_iloc_dirty(handle, inode, &iloc);
++flags_err:
++ ext3_journal_stop(handle);
++ return err;
++}
++
+ long ext3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ struct inode *inode = filp->f_dentry->d_inode;
+@@ -50,6 +79,11 @@ long ext3_ioctl(struct file *filp, unsig
+
+ flags = ext3_mask_flags(inode->i_mode, flags);
+
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -EACCES;
++ }
++
+ mutex_lock(&inode->i_mutex);
+
+ /* Is it quota file? Do not allow user to mess with it */
+@@ -68,7 +102,9 @@ long ext3_ioctl(struct file *filp, unsig
+ *
+ * This test looks nicer. Thanks to Pauline Middelink
+ */
+- if ((flags ^ oldflags) & (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL)) {
++ if ((oldflags & EXT3_IMMUTABLE_FL) ||
++ ((flags ^ oldflags) & (EXT3_APPEND_FL |
++ EXT3_IMMUTABLE_FL | EXT3_IXUNLINK_FL))) {
+ if (!capable(CAP_LINUX_IMMUTABLE))
+ goto flags_out;
+ }
+@@ -93,7 +129,7 @@ long ext3_ioctl(struct file *filp, unsig
+ if (err)
+ goto flags_err;
+
+- flags = flags & EXT3_FL_USER_MODIFIABLE;
++ flags &= EXT3_FL_USER_MODIFIABLE;
+ flags |= oldflags & ~EXT3_FL_USER_MODIFIABLE;
+ ei->i_flags = flags;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/namei.c
+--- linux-2.6.31.6/fs/ext3/namei.c 2009-06-11 17:13:03.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/namei.c 2009-10-06 23:24:04.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include <linux/quotaops.h>
+ #include <linux/buffer_head.h>
+ #include <linux/bio.h>
++#include <linux/vs_tag.h>
+
+ #include "namei.h"
+ #include "xattr.h"
+@@ -912,6 +913,7 @@ restart:
+ if (bh)
+ ll_rw_block(READ_META, 1, &bh);
+ }
++ dx_propagate_tag(nd, inode);
+ }
+ if ((bh = bh_use[ra_ptr++]) == NULL)
+ goto next;
+@@ -2446,6 +2448,7 @@ const struct inode_operations ext3_dir_i
+ .removexattr = generic_removexattr,
+ #endif
+ .permission = ext3_permission,
++ .sync_flags = ext3_sync_flags,
+ };
+
+ const struct inode_operations ext3_special_inode_operations = {
+diff -NurpP --minimal linux-2.6.31.6/fs/ext3/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/super.c
+--- linux-2.6.31.6/fs/ext3/super.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext3/super.c 2009-10-06 22:46:25.000000000 +0200
+@@ -787,7 +787,7 @@ enum {
+ Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
+ Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
+ Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
+- Opt_grpquota
++ Opt_grpquota, Opt_tag, Opt_notag, Opt_tagid
+ };
+
+ static const match_table_t tokens = {
+@@ -840,6 +840,9 @@ static const match_table_t tokens = {
+ {Opt_usrquota, "usrquota"},
+ {Opt_barrier, "barrier=%u"},
+ {Opt_resize, "resize"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_err, NULL},
+ };
+
+@@ -932,6 +935,20 @@ static int parse_options (char *options,
+ case Opt_nouid32:
+ set_opt (sbi->s_mount_opt, NO_UID32);
+ break;
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++ case Opt_notag:
++ clear_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
+ case Opt_nocheck:
+ clear_opt (sbi->s_mount_opt, CHECK);
+ break;
+@@ -1656,6 +1673,9 @@ static int ext3_fill_super (struct super
+ NULL, 0))
+ goto failed_mount;
+
++ if (EXT3_SB(sb)->s_mount_opt & EXT3_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED;
++
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
+
+@@ -2514,6 +2534,14 @@ static int ext3_remount (struct super_bl
+ if (sbi->s_mount_opt & EXT3_MOUNT_ABORT)
+ ext3_abort(sb, __func__, "Abort forced by user");
+
++ if ((sbi->s_mount_opt & EXT3_MOUNT_TAGGED) &&
++ !(sb->s_flags & MS_TAGGED)) {
++ printk("EXT3-fs: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ err = -EINVAL;
++ goto restore_opts;
++ }
++
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/ext4.h linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ext4.h
+--- linux-2.6.31.6/fs/ext4/ext4.h 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ext4.h 2009-10-07 01:23:25.000000000 +0200
+@@ -252,8 +252,12 @@ struct flex_groups {
+ #define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */
+ #define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */
+ #define EXT4_EXT_MIGRATE 0x00100000 /* Inode is migrating */
++#define EXT4_IXUNLINK_FL 0x08000000 /* Immutable invert on unlink */
+ #define EXT4_RESERVED_FL 0x80000000 /* reserved for ext4 lib */
+
++#define EXT4_BARRIER_FL 0x04000000 /* Barrier for chroot() */
++#define EXT4_COW_FL 0x20000000 /* Copy on Write marker */
++
+ #define EXT4_FL_USER_VISIBLE 0x000BDFFF /* User visible flags */
+ #define EXT4_FL_USER_MODIFIABLE 0x000B80FF /* User modifiable flags */
+
+@@ -423,7 +427,8 @@ struct ext4_inode {
+ __le16 l_i_file_acl_high;
+ __le16 l_i_uid_high; /* these 2 fields */
+ __le16 l_i_gid_high; /* were reserved2[0] */
+- __u32 l_i_reserved2;
++ __le16 l_i_tag; /* Context Tag */
++ __u16 l_i_reserved2;
+ } linux2;
+ struct {
+ __le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
+@@ -538,6 +543,7 @@ do { \
+ #define i_gid_low i_gid
+ #define i_uid_high osd2.linux2.l_i_uid_high
+ #define i_gid_high osd2.linux2.l_i_gid_high
++#define i_raw_tag osd2.linux2.l_i_tag
+ #define i_reserved2 osd2.linux2.l_i_reserved2
+
+ #elif defined(__GNU__)
+@@ -694,6 +700,7 @@ struct ext4_inode_info {
+ #define EXT4_MOUNT_QUOTA 0x80000 /* Some quota option set */
+ #define EXT4_MOUNT_USRQUOTA 0x100000 /* "old" user quota */
+ #define EXT4_MOUNT_GRPQUOTA 0x200000 /* "old" group quota */
++#define EXT4_MOUNT_TAGGED 0x400000 /* Enable Context Tags */
+ #define EXT4_MOUNT_JOURNAL_CHECKSUM 0x800000 /* Journal checksums */
+ #define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 /* Journal Async Commit */
+ #define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */
+@@ -1655,6 +1662,7 @@ extern int ext4_get_blocks(handle_t *han
+ struct buffer_head *bh, int flags);
+ extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+ __u64 start, __u64 len);
++extern int ext4_sync_flags(struct inode *, int, int);
+ /* move_extent.c */
+ extern int ext4_move_extents(struct file *o_filp, struct file *d_filp,
+ __u64 start_orig, __u64 start_donor,
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/file.c
+--- linux-2.6.31.6/fs/ext4/file.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/file.c 2009-10-07 01:03:26.000000000 +0200
+@@ -210,5 +210,6 @@ const struct inode_operations ext4_file_
+ .permission = ext4_permission,
+ .fallocate = ext4_fallocate,
+ .fiemap = ext4_fiemap,
++ .sync_flags = ext4_sync_flags,
+ };
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/ialloc.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ialloc.c
+--- linux-2.6.31.6/fs/ext4/ialloc.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ialloc.c 2009-10-12 05:06:42.000000000 +0200
+@@ -22,6 +22,7 @@
+ #include <linux/random.h>
+ #include <linux/bitops.h>
+ #include <linux/blkdev.h>
++#include <linux/vs_tag.h>
+ #include <asm/byteorder.h>
+
+ #include "ext4.h"
+@@ -995,6 +996,7 @@ got:
+ } else
+ inode->i_gid = current_fsgid();
+ inode->i_mode = mode;
++ inode->i_tag = dx_current_fstag(sb);
+
+ inode->i_ino = ino + group * EXT4_INODES_PER_GROUP(sb);
+ /* This is the optimal IO size (for stat), not the fs block size */
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/inode.c
+--- linux-2.6.31.6/fs/ext4/inode.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/inode.c 2009-10-06 19:45:13.000000000 +0200
+@@ -37,6 +37,7 @@
+ #include <linux/namei.h>
+ #include <linux/uio.h>
+ #include <linux/bio.h>
++#include <linux/vs_tag.h>
+
+ #include "ext4_jbd2.h"
+ #include "xattr.h"
+@@ -3901,7 +3902,7 @@ static void ext4_free_branches(handle_t
+
+ int ext4_can_truncate(struct inode *inode)
+ {
+- if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
++ if (IS_APPEND(inode) || IS_IXORUNLINK(inode))
+ return 0;
+ if (S_ISREG(inode->i_mode))
+ return 1;
+@@ -4253,36 +4254,60 @@ void ext4_set_inode_flags(struct inode *
+ {
+ unsigned int flags = EXT4_I(inode)->i_flags;
+
+- inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
++
++ if (flags & EXT4_IMMUTABLE_FL)
++ inode->i_flags |= S_IMMUTABLE;
++ if (flags & EXT4_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
++
+ if (flags & EXT4_SYNC_FL)
+ inode->i_flags |= S_SYNC;
+ if (flags & EXT4_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+- if (flags & EXT4_IMMUTABLE_FL)
+- inode->i_flags |= S_IMMUTABLE;
+ if (flags & EXT4_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+ if (flags & EXT4_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (flags & EXT4_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ if (flags & EXT4_COW_FL)
++ inode->i_vflags |= V_COW;
+ }
+
+ /* Propagate flags from i_flags to EXT4_I(inode)->i_flags */
+ void ext4_get_inode_flags(struct ext4_inode_info *ei)
+ {
+ unsigned int flags = ei->vfs_inode.i_flags;
++ unsigned int vflags = ei->vfs_inode.i_vflags;
++
++ ei->i_flags &= ~(EXT4_SYNC_FL | EXT4_APPEND_FL |
++ EXT4_IMMUTABLE_FL | EXT4_IXUNLINK_FL |
++ EXT4_NOATIME_FL | EXT4_DIRSYNC_FL |
++ EXT4_BARRIER_FL | EXT4_COW_FL);
++
++ if (flags & S_IMMUTABLE)
++ ei->i_flags |= EXT4_IMMUTABLE_FL;
++ if (flags & S_IXUNLINK)
++ ei->i_flags |= EXT4_IXUNLINK_FL;
+
+- ei->i_flags &= ~(EXT4_SYNC_FL|EXT4_APPEND_FL|
+- EXT4_IMMUTABLE_FL|EXT4_NOATIME_FL|EXT4_DIRSYNC_FL);
+ if (flags & S_SYNC)
+ ei->i_flags |= EXT4_SYNC_FL;
+ if (flags & S_APPEND)
+ ei->i_flags |= EXT4_APPEND_FL;
+- if (flags & S_IMMUTABLE)
+- ei->i_flags |= EXT4_IMMUTABLE_FL;
+ if (flags & S_NOATIME)
+ ei->i_flags |= EXT4_NOATIME_FL;
+ if (flags & S_DIRSYNC)
+ ei->i_flags |= EXT4_DIRSYNC_FL;
++
++ if (vflags & V_BARRIER)
++ ei->i_flags |= EXT4_BARRIER_FL;
++ if (vflags & V_COW)
++ ei->i_flags |= EXT4_COW_FL;
+ }
+
+ static blkcnt_t ext4_inode_blocks(struct ext4_inode *raw_inode,
+@@ -4317,6 +4342,8 @@ struct inode *ext4_iget(struct super_blo
+ struct inode *inode;
+ long ret;
+ int block;
++ uid_t uid;
++ gid_t gid;
+
+ inode = iget_locked(sb, ino);
+ if (!inode)
+@@ -4332,12 +4359,16 @@ struct inode *ext4_iget(struct super_blo
+ bh = iloc.bh;
+ raw_inode = ext4_raw_inode(&iloc);
+ inode->i_mode = le16_to_cpu(raw_inode->i_mode);
+- inode->i_uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
+- inode->i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
++ uid = (uid_t)le16_to_cpu(raw_inode->i_uid_low);
++ gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
+ if (!(test_opt(inode->i_sb, NO_UID32))) {
+- inode->i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
+- inode->i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
++ uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
++ gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
+ }
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid,
++ le16_to_cpu(raw_inode->i_raw_tag));
+ inode->i_nlink = le16_to_cpu(raw_inode->i_links_count);
+
+ ei->i_state = 0;
+@@ -4538,6 +4569,8 @@ static int ext4_do_update_inode(handle_t
+ struct ext4_inode *raw_inode = ext4_raw_inode(iloc);
+ struct ext4_inode_info *ei = EXT4_I(inode);
+ struct buffer_head *bh = iloc->bh;
++ uid_t uid = TAGINO_UID(DX_TAG(inode), inode->i_uid, inode->i_tag);
++ gid_t gid = TAGINO_GID(DX_TAG(inode), inode->i_gid, inode->i_tag);
+ int err = 0, rc, block;
+
+ /* For fields not not tracking in the in-memory inode,
+@@ -4548,29 +4581,32 @@ static int ext4_do_update_inode(handle_t
+ ext4_get_inode_flags(ei);
+ raw_inode->i_mode = cpu_to_le16(inode->i_mode);
+ if (!(test_opt(inode->i_sb, NO_UID32))) {
+- raw_inode->i_uid_low = cpu_to_le16(low_16_bits(inode->i_uid));
+- raw_inode->i_gid_low = cpu_to_le16(low_16_bits(inode->i_gid));
++ raw_inode->i_uid_low = cpu_to_le16(low_16_bits(uid));
++ raw_inode->i_gid_low = cpu_to_le16(low_16_bits(gid));
+ /*
+ * Fix up interoperability with old kernels. Otherwise, old inodes get
+ * re-used with the upper 16 bits of the uid/gid intact
+ */
+ if (!ei->i_dtime) {
+ raw_inode->i_uid_high =
+- cpu_to_le16(high_16_bits(inode->i_uid));
++ cpu_to_le16(high_16_bits(uid));
+ raw_inode->i_gid_high =
+- cpu_to_le16(high_16_bits(inode->i_gid));
++ cpu_to_le16(high_16_bits(gid));
+ } else {
+ raw_inode->i_uid_high = 0;
+ raw_inode->i_gid_high = 0;
+ }
+ } else {
+ raw_inode->i_uid_low =
+- cpu_to_le16(fs_high2lowuid(inode->i_uid));
++ cpu_to_le16(fs_high2lowuid(uid));
+ raw_inode->i_gid_low =
+- cpu_to_le16(fs_high2lowgid(inode->i_gid));
++ cpu_to_le16(fs_high2lowgid(gid));
+ raw_inode->i_uid_high = 0;
+ raw_inode->i_gid_high = 0;
+ }
++#ifdef CONFIG_TAGGING_INTERN
++ raw_inode->i_raw_tag = cpu_to_le16(inode->i_tag);
++#endif
+ raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
+
+ EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode);
+@@ -4734,7 +4770,8 @@ int ext4_setattr(struct dentry *dentry,
+ return error;
+
+ if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+- (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
++ (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid) ||
++ (ia_valid & ATTR_TAG && attr->ia_tag != inode->i_tag)) {
+ handle_t *handle;
+
+ /* (user+group)*(old+new) structure, inode write (sb,
+@@ -4756,6 +4793,8 @@ int ext4_setattr(struct dentry *dentry,
+ inode->i_uid = attr->ia_uid;
+ if (attr->ia_valid & ATTR_GID)
+ inode->i_gid = attr->ia_gid;
++ if ((attr->ia_valid & ATTR_TAG) && IS_TAGGED(inode))
++ inode->i_tag = attr->ia_tag;
+ error = ext4_mark_inode_dirty(handle, inode);
+ ext4_journal_stop(handle);
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ioctl.c
+--- linux-2.6.31.6/fs/ext4/ioctl.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/ioctl.c 2009-10-07 04:03:02.000000000 +0200
+@@ -14,10 +14,39 @@
+ #include <linux/compat.h>
+ #include <linux/mount.h>
+ #include <linux/file.h>
++#include <linux/vs_tag.h>
+ #include <asm/uaccess.h>
+ #include "ext4_jbd2.h"
+ #include "ext4.h"
+
++
++int ext4_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ handle_t *handle = NULL;
++ struct ext4_iloc iloc;
++ int err;
++
++ handle = ext4_journal_start(inode, 1);
++ if (IS_ERR(handle))
++ return PTR_ERR(handle);
++
++ if (IS_SYNC(inode))
++ ext4_handle_sync(handle);
++ err = ext4_reserve_inode_write(handle, inode, &iloc);
++ if (err)
++ goto flags_err;
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ ext4_get_inode_flags(EXT4_I(inode));
++ inode->i_ctime = ext4_current_time(inode);
++
++ err = ext4_mark_iloc_dirty(handle, inode, &iloc);
++flags_err:
++ ext4_journal_stop(handle);
++ return err;
++}
++
+ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ struct inode *inode = filp->f_dentry->d_inode;
+@@ -50,6 +79,11 @@ long ext4_ioctl(struct file *filp, unsig
+
+ flags = ext4_mask_flags(inode->i_mode, flags);
+
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -EACCES;
++ }
++
+ err = -EPERM;
+ mutex_lock(&inode->i_mutex);
+ /* Is it quota file? Do not allow user to mess with it */
+@@ -67,7 +101,9 @@ long ext4_ioctl(struct file *filp, unsig
+ *
+ * This test looks nicer. Thanks to Pauline Middelink
+ */
+- if ((flags ^ oldflags) & (EXT4_APPEND_FL | EXT4_IMMUTABLE_FL)) {
++ if ((oldflags & EXT4_IMMUTABLE_FL) ||
++ ((flags ^ oldflags) & (EXT4_APPEND_FL |
++ EXT4_IMMUTABLE_FL | EXT4_IXUNLINK_FL))) {
+ if (!capable(CAP_LINUX_IMMUTABLE))
+ goto flags_out;
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/namei.c
+--- linux-2.6.31.6/fs/ext4/namei.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/namei.c 2009-10-07 01:08:37.000000000 +0200
+@@ -34,6 +34,7 @@
+ #include <linux/quotaops.h>
+ #include <linux/buffer_head.h>
+ #include <linux/bio.h>
++#include <linux/vs_tag.h>
+ #include "ext4.h"
+ #include "ext4_jbd2.h"
+
+@@ -941,6 +942,7 @@ restart:
+ if (bh)
+ ll_rw_block(READ_META, 1, &bh);
+ }
++ dx_propagate_tag(nd, inode);
+ }
+ if ((bh = bh_use[ra_ptr++]) == NULL)
+ goto next;
+@@ -2538,6 +2540,7 @@ const struct inode_operations ext4_dir_i
+ #endif
+ .permission = ext4_permission,
+ .fiemap = ext4_fiemap,
++ .sync_flags = ext4_sync_flags,
+ };
+
+ const struct inode_operations ext4_special_inode_operations = {
+diff -NurpP --minimal linux-2.6.31.6/fs/ext4/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/super.c
+--- linux-2.6.31.6/fs/ext4/super.c 2009-09-10 15:26:21.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ext4/super.c 2009-10-06 22:47:27.000000000 +0200
+@@ -1057,7 +1057,8 @@ enum {
+ Opt_usrquota, Opt_grpquota, Opt_i_version,
+ Opt_stripe, Opt_delalloc, Opt_nodelalloc,
+ Opt_block_validity, Opt_noblock_validity,
+- Opt_inode_readahead_blks, Opt_journal_ioprio
++ Opt_inode_readahead_blks, Opt_journal_ioprio,
++ Opt_tag, Opt_notag, Opt_tagid
+ };
+
+ static const match_table_t tokens = {
+@@ -1123,6 +1124,9 @@ static const match_table_t tokens = {
+ {Opt_auto_da_alloc, "auto_da_alloc=%u"},
+ {Opt_auto_da_alloc, "auto_da_alloc"},
+ {Opt_noauto_da_alloc, "noauto_da_alloc"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_err, NULL},
+ };
+
+@@ -1220,6 +1224,20 @@ static int parse_options(char *options,
+ case Opt_nouid32:
+ set_opt(sbi->s_mount_opt, NO_UID32);
+ break;
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++ case Opt_notag:
++ clear_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ set_opt (sbi->s_mount_opt, TAGGED);
++ break;
++#endif
+ case Opt_debug:
+ set_opt(sbi->s_mount_opt, DEBUG);
+ break;
+@@ -2385,6 +2403,9 @@ static int ext4_fill_super(struct super_
+ &journal_ioprio, NULL, 0))
+ goto failed_mount;
+
++ if (EXT4_SB(sb)->s_mount_opt & EXT4_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED;
++
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((sbi->s_mount_opt & EXT4_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
+
+@@ -3441,6 +3462,14 @@ static int ext4_remount(struct super_blo
+ if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
+ ext4_abort(sb, __func__, "Abort forced by user");
+
++ if ((sbi->s_mount_opt & EXT4_MOUNT_TAGGED) &&
++ !(sb->s_flags & MS_TAGGED)) {
++ printk("EXT4-fs: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ err = -EINVAL;
++ goto restore_opts;
++ }
++
+ sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
+ ((sbi->s_mount_opt & EXT4_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
+
+diff -NurpP --minimal linux-2.6.31.6/fs/fcntl.c linux-2.6.31.6-vs2.3.0.36.24/fs/fcntl.c
+--- linux-2.6.31.6/fs/fcntl.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/fcntl.c 2009-09-10 17:00:41.000000000 +0200
+@@ -19,6 +19,7 @@
+ #include <linux/signal.h>
+ #include <linux/rcupdate.h>
+ #include <linux/pid_namespace.h>
++#include <linux/vs_limit.h>
+
+ #include <asm/poll.h>
+ #include <asm/siginfo.h>
+@@ -102,6 +103,8 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldf
+
+ if (tofree)
+ filp_close(tofree, files);
++ else
++ vx_openfd_inc(newfd); /* fd was unused */
+
+ return newfd;
+
+@@ -347,6 +350,8 @@ SYSCALL_DEFINE3(fcntl, unsigned int, fd,
+ filp = fget(fd);
+ if (!filp)
+ goto out;
++ if (!vx_files_avail(1))
++ goto out;
+
+ err = security_file_fcntl(filp, cmd, arg);
+ if (err) {
+diff -NurpP --minimal linux-2.6.31.6/fs/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/file.c
+--- linux-2.6.31.6/fs/file.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/file.c 2009-09-10 16:11:43.000000000 +0200
+@@ -19,6 +19,7 @@
+ #include <linux/spinlock.h>
+ #include <linux/rcupdate.h>
+ #include <linux/workqueue.h>
++#include <linux/vs_limit.h>
+
+ struct fdtable_defer {
+ spinlock_t lock;
+@@ -367,6 +368,8 @@ struct files_struct *dup_fd(struct files
+ struct file *f = *old_fds++;
+ if (f) {
+ get_file(f);
++ /* TODO: sum it first for check and performance */
++ vx_openfd_inc(open_files - i);
+ } else {
+ /*
+ * The fd may be claimed in the fd bitmap but not yet
+@@ -475,6 +478,7 @@ repeat:
+ else
+ FD_CLR(fd, fdt->close_on_exec);
+ error = fd;
++ vx_openfd_inc(fd);
+ #if 1
+ /* Sanity check */
+ if (rcu_dereference(fdt->fd[fd]) != NULL) {
+diff -NurpP --minimal linux-2.6.31.6/fs/file_table.c linux-2.6.31.6-vs2.3.0.36.24/fs/file_table.c
+--- linux-2.6.31.6/fs/file_table.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/file_table.c 2009-09-10 16:11:43.000000000 +0200
+@@ -22,6 +22,8 @@
+ #include <linux/fsnotify.h>
+ #include <linux/sysctl.h>
+ #include <linux/percpu_counter.h>
++#include <linux/vs_limit.h>
++#include <linux/vs_context.h>
+
+ #include <asm/atomic.h>
+
+@@ -131,6 +133,8 @@ struct file *get_empty_filp(void)
+ spin_lock_init(&f->f_lock);
+ eventpoll_init_file(f);
+ /* f->f_version: 0 */
++ f->f_xid = vx_current_xid();
++ vx_files_inc(f);
+ return f;
+
+ over:
+@@ -285,6 +289,8 @@ void __fput(struct file *file)
+ cdev_put(inode->i_cdev);
+ fops_put(file->f_op);
+ put_pid(file->f_owner.pid);
++ vx_files_dec(file);
++ file->f_xid = 0;
+ file_kill(file);
+ if (file->f_mode & FMODE_WRITE)
+ drop_file_write_access(file);
+@@ -352,6 +358,8 @@ void put_filp(struct file *file)
+ {
+ if (atomic_long_dec_and_test(&file->f_count)) {
+ security_file_free(file);
++ vx_files_dec(file);
++ file->f_xid = 0;
+ file_kill(file);
+ file_free(file);
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/fs_struct.c linux-2.6.31.6-vs2.3.0.36.24/fs/fs_struct.c
+--- linux-2.6.31.6/fs/fs_struct.c 2009-06-11 17:13:04.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/fs_struct.c 2009-09-10 16:11:43.000000000 +0200
+@@ -4,6 +4,7 @@
+ #include <linux/path.h>
+ #include <linux/slab.h>
+ #include <linux/fs_struct.h>
++#include <linux/vserver/global.h>
+
+ /*
+ * Replace the fs->{rootmnt,root} with {mnt,dentry}. Put the old values.
+@@ -77,6 +78,7 @@ void free_fs_struct(struct fs_struct *fs
+ {
+ path_put(&fs->root);
+ path_put(&fs->pwd);
++ atomic_dec(&vs_global_fs);
+ kmem_cache_free(fs_cachep, fs);
+ }
+
+@@ -112,6 +114,7 @@ struct fs_struct *copy_fs_struct(struct
+ fs->pwd = old->pwd;
+ path_get(&old->pwd);
+ read_unlock(&old->lock);
++ atomic_inc(&vs_global_fs);
+ }
+ return fs;
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/gfs2/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/file.c
+--- linux-2.6.31.6/fs/gfs2/file.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/file.c 2009-10-07 18:47:19.000000000 +0200
+@@ -133,6 +133,9 @@ static const u32 fsflags_to_gfs2[32] = {
+ [7] = GFS2_DIF_NOATIME,
+ [12] = GFS2_DIF_EXHASH,
+ [14] = GFS2_DIF_INHERIT_JDATA,
++ [27] = GFS2_DIF_IXUNLINK,
++ [26] = GFS2_DIF_BARRIER,
++ [29] = GFS2_DIF_COW,
+ };
+
+ static const u32 gfs2_to_fsflags[32] = {
+@@ -142,6 +145,9 @@ static const u32 gfs2_to_fsflags[32] = {
+ [gfs2fl_NoAtime] = FS_NOATIME_FL,
+ [gfs2fl_ExHash] = FS_INDEX_FL,
+ [gfs2fl_InheritJdata] = FS_JOURNAL_DATA_FL,
++ [gfs2fl_IXUnlink] = FS_IXUNLINK_FL,
++ [gfs2fl_Barrier] = FS_BARRIER_FL,
++ [gfs2fl_Cow] = FS_COW_FL,
+ };
+
+ static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
+@@ -172,10 +178,16 @@ void gfs2_set_inode_flags(struct inode *
+ {
+ struct gfs2_inode *ip = GFS2_I(inode);
+ unsigned int flags = inode->i_flags;
++ unsigned int vflags = inode->i_vflags;
++
++ flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+- flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
+ if (ip->i_diskflags & GFS2_DIF_IMMUTABLE)
+ flags |= S_IMMUTABLE;
++ if (ip->i_diskflags & GFS2_DIF_IXUNLINK)
++ flags |= S_IXUNLINK;
++
+ if (ip->i_diskflags & GFS2_DIF_APPENDONLY)
+ flags |= S_APPEND;
+ if (ip->i_diskflags & GFS2_DIF_NOATIME)
+@@ -183,6 +195,43 @@ void gfs2_set_inode_flags(struct inode *
+ if (ip->i_diskflags & GFS2_DIF_SYNC)
+ flags |= S_SYNC;
+ inode->i_flags = flags;
++
++ vflags &= ~(V_BARRIER | V_COW);
++
++ if (ip->i_diskflags & GFS2_DIF_BARRIER)
++ vflags |= V_BARRIER;
++ if (ip->i_diskflags & GFS2_DIF_COW)
++ vflags |= V_COW;
++ inode->i_vflags = vflags;
++}
++
++void gfs2_get_inode_flags(struct inode *inode)
++{
++ struct gfs2_inode *ip = GFS2_I(inode);
++ unsigned int flags = inode->i_flags;
++ unsigned int vflags = inode->i_vflags;
++
++ ip->i_diskflags &= ~(GFS2_DIF_APPENDONLY |
++ GFS2_DIF_NOATIME | GFS2_DIF_SYNC |
++ GFS2_DIF_IMMUTABLE | GFS2_DIF_IXUNLINK |
++ GFS2_DIF_BARRIER | GFS2_DIF_COW);
++
++ if (flags & S_IMMUTABLE)
++ ip->i_diskflags |= GFS2_DIF_IMMUTABLE;
++ if (flags & S_IXUNLINK)
++ ip->i_diskflags |= GFS2_DIF_IXUNLINK;
++
++ if (flags & S_APPEND)
++ ip->i_diskflags |= GFS2_DIF_APPENDONLY;
++ if (flags & S_NOATIME)
++ ip->i_diskflags |= GFS2_DIF_NOATIME;
++ if (flags & S_SYNC)
++ ip->i_diskflags |= GFS2_DIF_SYNC;
++
++ if (vflags & V_BARRIER)
++ ip->i_diskflags |= GFS2_DIF_BARRIER;
++ if (vflags & V_COW)
++ ip->i_diskflags |= GFS2_DIF_COW;
+ }
+
+ /* Flags that can be set by user space */
+@@ -287,6 +336,37 @@ static int gfs2_set_flags(struct file *f
+ return do_gfs2_set_flags(filp, gfsflags, ~GFS2_DIF_JDATA);
+ }
+
++int gfs2_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ struct gfs2_inode *ip = GFS2_I(inode);
++ struct gfs2_sbd *sdp = GFS2_SB(inode);
++ struct buffer_head *bh;
++ struct gfs2_holder gh;
++ int error;
++
++ error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
++ if (error)
++ return error;
++ error = gfs2_trans_begin(sdp, RES_DINODE, 0);
++ if (error)
++ goto out;
++ error = gfs2_meta_inode_buffer(ip, &bh);
++ if (error)
++ goto out_trans_end;
++ gfs2_trans_add_bh(ip->i_gl, bh, 1);
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ gfs2_get_inode_flags(inode);
++ gfs2_dinode_out(ip, bh->b_data);
++ brelse(bh);
++ gfs2_set_aops(inode);
++out_trans_end:
++ gfs2_trans_end(sdp);
++out:
++ gfs2_glock_dq_uninit(&gh);
++ return error;
++}
++
+ static long gfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ switch(cmd) {
+diff -NurpP --minimal linux-2.6.31.6/fs/gfs2/inode.h linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/inode.h
+--- linux-2.6.31.6/fs/gfs2/inode.h 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/inode.h 2009-10-07 18:16:33.000000000 +0200
+@@ -109,6 +109,7 @@ extern const struct file_operations gfs2
+ extern const struct file_operations gfs2_dir_fops_nolock;
+
+ extern void gfs2_set_inode_flags(struct inode *inode);
++extern int gfs2_sync_flags(struct inode *inode, int flags, int vflags);
+
+ #ifdef CONFIG_GFS2_FS_LOCKING_DLM
+ extern const struct file_operations gfs2_file_fops;
+diff -NurpP --minimal linux-2.6.31.6/fs/gfs2/ops_inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/ops_inode.c
+--- linux-2.6.31.6/fs/gfs2/ops_inode.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/gfs2/ops_inode.c 2009-10-07 18:15:45.000000000 +0200
+@@ -1409,6 +1409,7 @@ const struct inode_operations gfs2_file_
+ .listxattr = gfs2_listxattr,
+ .removexattr = gfs2_removexattr,
+ .fiemap = gfs2_fiemap,
++ .sync_flags = gfs2_sync_flags,
+ };
+
+ const struct inode_operations gfs2_dir_iops = {
+@@ -1429,6 +1430,7 @@ const struct inode_operations gfs2_dir_i
+ .listxattr = gfs2_listxattr,
+ .removexattr = gfs2_removexattr,
+ .fiemap = gfs2_fiemap,
++ .sync_flags = gfs2_sync_flags,
+ };
+
+ const struct inode_operations gfs2_symlink_iops = {
+diff -NurpP --minimal linux-2.6.31.6/fs/hfsplus/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/hfsplus/ioctl.c
+--- linux-2.6.31.6/fs/hfsplus/ioctl.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/hfsplus/ioctl.c 2009-09-10 16:11:43.000000000 +0200
+@@ -17,6 +17,7 @@
+ #include <linux/mount.h>
+ #include <linux/sched.h>
+ #include <linux/xattr.h>
++#include <linux/mount.h>
+ #include <asm/uaccess.h>
+ #include "hfsplus_fs.h"
+
+diff -NurpP --minimal linux-2.6.31.6/fs/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/inode.c
+--- linux-2.6.31.6/fs/inode.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/inode.c 2009-10-05 23:35:52.000000000 +0200
+@@ -128,6 +128,9 @@ int inode_init_always(struct super_block
+ struct address_space *const mapping = &inode->i_data;
+
+ inode->i_sb = sb;
++
++ /* essential because of inode slab reuse */
++ inode->i_tag = 0;
+ inode->i_blkbits = sb->s_blocksize_bits;
+ inode->i_flags = 0;
+ atomic_set(&inode->i_count, 1);
+@@ -148,6 +151,7 @@ int inode_init_always(struct super_block
+ inode->i_bdev = NULL;
+ inode->i_cdev = NULL;
+ inode->i_rdev = 0;
++ inode->i_mdev = 0;
+ inode->dirtied_when = 0;
+
+ if (security_inode_alloc(inode))
+@@ -304,6 +308,8 @@ void __iget(struct inode *inode)
+ inodes_stat.nr_unused--;
+ }
+
++EXPORT_SYMBOL_GPL(__iget);
++
+ /**
+ * clear_inode - clear an inode
+ * @inode: inode to clear
+@@ -1588,9 +1594,11 @@ void init_special_inode(struct inode *in
+ if (S_ISCHR(mode)) {
+ inode->i_fop = &def_chr_fops;
+ inode->i_rdev = rdev;
++ inode->i_mdev = rdev;
+ } else if (S_ISBLK(mode)) {
+ inode->i_fop = &def_blk_fops;
+ inode->i_rdev = rdev;
++ inode->i_mdev = rdev;
+ } else if (S_ISFIFO(mode))
+ inode->i_fop = &def_fifo_fops;
+ else if (S_ISSOCK(mode))
+diff -NurpP --minimal linux-2.6.31.6/fs/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/ioctl.c
+--- linux-2.6.31.6/fs/ioctl.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ioctl.c 2009-09-10 17:13:08.000000000 +0200
+@@ -16,6 +16,9 @@
+ #include <linux/writeback.h>
+ #include <linux/buffer_head.h>
+ #include <linux/falloc.h>
++#include <linux/proc_fs.h>
++#include <linux/vserver/inode.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/ioctls.h>
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ioprio.c linux-2.6.31.6-vs2.3.0.36.24/fs/ioprio.c
+--- linux-2.6.31.6/fs/ioprio.c 2009-03-24 14:22:26.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ioprio.c 2009-09-10 16:11:43.000000000 +0200
+@@ -26,6 +26,7 @@
+ #include <linux/syscalls.h>
+ #include <linux/security.h>
+ #include <linux/pid_namespace.h>
++#include <linux/vs_base.h>
+
+ int set_task_ioprio(struct task_struct *task, int ioprio)
+ {
+@@ -123,6 +124,8 @@ SYSCALL_DEFINE3(ioprio_set, int, which,
+ else
+ pgrp = find_vpid(who);
+ do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
++ if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++ continue;
+ ret = set_task_ioprio(p, ioprio);
+ if (ret)
+ break;
+@@ -212,6 +215,8 @@ SYSCALL_DEFINE2(ioprio_get, int, which,
+ else
+ pgrp = find_vpid(who);
+ do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
++ if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
++ continue;
+ tmpio = get_task_ioprio(p);
+ if (tmpio < 0)
+ continue;
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/acl.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/acl.c
+--- linux-2.6.31.6/fs/jfs/acl.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/acl.c 2009-09-10 16:11:43.000000000 +0200
+@@ -221,7 +221,8 @@ int jfs_setattr(struct dentry *dentry, s
+ return rc;
+
+ if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
+- (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
++ (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid) ||
++ (iattr->ia_valid & ATTR_TAG && iattr->ia_tag != inode->i_tag)) {
+ if (vfs_dq_transfer(inode, iattr))
+ return -EDQUOT;
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/file.c
+--- linux-2.6.31.6/fs/jfs/file.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/file.c 2009-10-07 01:05:32.000000000 +0200
+@@ -98,6 +98,7 @@ const struct inode_operations jfs_file_i
+ .setattr = jfs_setattr,
+ .permission = jfs_permission,
+ #endif
++ .sync_flags = jfs_sync_flags,
+ };
+
+ const struct file_operations jfs_file_operations = {
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/ioctl.c
+--- linux-2.6.31.6/fs/jfs/ioctl.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/ioctl.c 2009-10-07 04:09:15.000000000 +0200
+@@ -11,6 +11,7 @@
+ #include <linux/mount.h>
+ #include <linux/time.h>
+ #include <linux/sched.h>
++#include <linux/mount.h>
+ #include <asm/current.h>
+ #include <asm/uaccess.h>
+
+@@ -52,6 +53,16 @@ static long jfs_map_ext2(unsigned long f
+ }
+
+
++int jfs_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ jfs_get_inode_flags(JFS_IP(inode));
++ inode->i_ctime = CURRENT_TIME_SEC;
++ mark_inode_dirty(inode);
++ return 0;
++}
++
+ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ struct inode *inode = filp->f_dentry->d_inode;
+@@ -85,6 +96,11 @@ long jfs_ioctl(struct file *filp, unsign
+ if (!S_ISDIR(inode->i_mode))
+ flags &= ~JFS_DIRSYNC_FL;
+
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -EACCES;
++ }
++
+ /* Is it quota file? Do not allow user to mess with it */
+ if (IS_NOQUOTA(inode)) {
+ err = -EPERM;
+@@ -102,8 +118,8 @@ long jfs_ioctl(struct file *filp, unsign
+ * the relevant capability.
+ */
+ if ((oldflags & JFS_IMMUTABLE_FL) ||
+- ((flags ^ oldflags) &
+- (JFS_APPEND_FL | JFS_IMMUTABLE_FL))) {
++ ((flags ^ oldflags) & (JFS_APPEND_FL |
++ JFS_IMMUTABLE_FL | JFS_IXUNLINK_FL))) {
+ if (!capable(CAP_LINUX_IMMUTABLE)) {
+ mutex_unlock(&inode->i_mutex);
+ err = -EPERM;
+@@ -111,7 +127,7 @@ long jfs_ioctl(struct file *filp, unsign
+ }
+ }
+
+- flags = flags & JFS_FL_USER_MODIFIABLE;
++ flags &= JFS_FL_USER_MODIFIABLE;
+ flags |= oldflags & ~JFS_FL_USER_MODIFIABLE;
+ jfs_inode->mode2 = flags;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/jfs_dinode.h linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_dinode.h
+--- linux-2.6.31.6/fs/jfs/jfs_dinode.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_dinode.h 2009-09-10 16:11:43.000000000 +0200
+@@ -161,9 +161,13 @@ struct dinode {
+
+ #define JFS_APPEND_FL 0x01000000 /* writes to file may only append */
+ #define JFS_IMMUTABLE_FL 0x02000000 /* Immutable file */
++#define JFS_IXUNLINK_FL 0x08000000 /* Immutable invert on unlink */
+
+-#define JFS_FL_USER_VISIBLE 0x03F80000
+-#define JFS_FL_USER_MODIFIABLE 0x03F80000
++#define JFS_BARRIER_FL 0x04000000 /* Barrier for chroot() */
++#define JFS_COW_FL 0x20000000 /* Copy on Write marker */
++
++#define JFS_FL_USER_VISIBLE 0x07F80000
++#define JFS_FL_USER_MODIFIABLE 0x07F80000
+ #define JFS_FL_INHERIT 0x03C80000
+
+ /* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/jfs_filsys.h linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_filsys.h
+--- linux-2.6.31.6/fs/jfs/jfs_filsys.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_filsys.h 2009-09-10 16:11:43.000000000 +0200
+@@ -263,6 +263,7 @@
+ #define JFS_NAME_MAX 255
+ #define JFS_PATH_MAX BPSIZE
+
++#define JFS_TAGGED 0x00800000 /* Context Tagging */
+
+ /*
+ * file system state (superblock state)
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/jfs_imap.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_imap.c
+--- linux-2.6.31.6/fs/jfs/jfs_imap.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_imap.c 2009-09-10 16:11:43.000000000 +0200
+@@ -45,6 +45,7 @@
+ #include <linux/buffer_head.h>
+ #include <linux/pagemap.h>
+ #include <linux/quotaops.h>
++#include <linux/vs_tag.h>
+
+ #include "jfs_incore.h"
+ #include "jfs_inode.h"
+@@ -3059,6 +3060,8 @@ static int copy_from_dinode(struct dinod
+ {
+ struct jfs_inode_info *jfs_ip = JFS_IP(ip);
+ struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb);
++ uid_t uid;
++ gid_t gid;
+
+ jfs_ip->fileset = le32_to_cpu(dip->di_fileset);
+ jfs_ip->mode2 = le32_to_cpu(dip->di_mode);
+@@ -3079,14 +3082,18 @@ static int copy_from_dinode(struct dinod
+ }
+ ip->i_nlink = le32_to_cpu(dip->di_nlink);
+
+- jfs_ip->saved_uid = le32_to_cpu(dip->di_uid);
++ uid = le32_to_cpu(dip->di_uid);
++ gid = le32_to_cpu(dip->di_gid);
++ ip->i_tag = INOTAG_TAG(DX_TAG(ip), uid, gid, 0);
++
++ jfs_ip->saved_uid = INOTAG_UID(DX_TAG(ip), uid, gid);
+ if (sbi->uid == -1)
+ ip->i_uid = jfs_ip->saved_uid;
+ else {
+ ip->i_uid = sbi->uid;
+ }
+
+- jfs_ip->saved_gid = le32_to_cpu(dip->di_gid);
++ jfs_ip->saved_gid = INOTAG_GID(DX_TAG(ip), uid, gid);
+ if (sbi->gid == -1)
+ ip->i_gid = jfs_ip->saved_gid;
+ else {
+@@ -3151,14 +3158,12 @@ static void copy_to_dinode(struct dinode
+ dip->di_size = cpu_to_le64(ip->i_size);
+ dip->di_nblocks = cpu_to_le64(PBLK2LBLK(ip->i_sb, ip->i_blocks));
+ dip->di_nlink = cpu_to_le32(ip->i_nlink);
+- if (sbi->uid == -1)
+- dip->di_uid = cpu_to_le32(ip->i_uid);
+- else
+- dip->di_uid = cpu_to_le32(jfs_ip->saved_uid);
+- if (sbi->gid == -1)
+- dip->di_gid = cpu_to_le32(ip->i_gid);
+- else
+- dip->di_gid = cpu_to_le32(jfs_ip->saved_gid);
++
++ dip->di_uid = cpu_to_le32(TAGINO_UID(DX_TAG(ip),
++ (sbi->uid == -1) ? ip->i_uid : jfs_ip->saved_uid, ip->i_tag));
++ dip->di_gid = cpu_to_le32(TAGINO_GID(DX_TAG(ip),
++ (sbi->gid == -1) ? ip->i_gid : jfs_ip->saved_gid, ip->i_tag));
++
+ jfs_get_inode_flags(jfs_ip);
+ /*
+ * mode2 is only needed for storing the higher order bits.
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/jfs_inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_inode.c
+--- linux-2.6.31.6/fs/jfs/jfs_inode.c 2009-06-11 17:13:05.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_inode.c 2009-10-12 05:07:16.000000000 +0200
+@@ -18,6 +18,7 @@
+
+ #include <linux/fs.h>
+ #include <linux/quotaops.h>
++#include <linux/vs_tag.h>
+ #include "jfs_incore.h"
+ #include "jfs_inode.h"
+ #include "jfs_filsys.h"
+@@ -30,29 +31,46 @@ void jfs_set_inode_flags(struct inode *i
+ {
+ unsigned int flags = JFS_IP(inode)->mode2;
+
+- inode->i_flags &= ~(S_IMMUTABLE | S_APPEND |
+- S_NOATIME | S_DIRSYNC | S_SYNC);
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+ if (flags & JFS_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
++ if (flags & JFS_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
++
++ if (flags & JFS_SYNC_FL)
++ inode->i_flags |= S_SYNC;
+ if (flags & JFS_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+ if (flags & JFS_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+ if (flags & JFS_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
+- if (flags & JFS_SYNC_FL)
+- inode->i_flags |= S_SYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (flags & JFS_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ if (flags & JFS_COW_FL)
++ inode->i_vflags |= V_COW;
+ }
+
+ void jfs_get_inode_flags(struct jfs_inode_info *jfs_ip)
+ {
+ unsigned int flags = jfs_ip->vfs_inode.i_flags;
++ unsigned int vflags = jfs_ip->vfs_inode.i_vflags;
++
++ jfs_ip->mode2 &= ~(JFS_IMMUTABLE_FL | JFS_IXUNLINK_FL |
++ JFS_APPEND_FL | JFS_NOATIME_FL |
++ JFS_DIRSYNC_FL | JFS_SYNC_FL |
++ JFS_BARRIER_FL | JFS_COW_FL);
+
+- jfs_ip->mode2 &= ~(JFS_IMMUTABLE_FL | JFS_APPEND_FL | JFS_NOATIME_FL |
+- JFS_DIRSYNC_FL | JFS_SYNC_FL);
+ if (flags & S_IMMUTABLE)
+ jfs_ip->mode2 |= JFS_IMMUTABLE_FL;
++ if (flags & S_IXUNLINK)
++ jfs_ip->mode2 |= JFS_IXUNLINK_FL;
++
+ if (flags & S_APPEND)
+ jfs_ip->mode2 |= JFS_APPEND_FL;
+ if (flags & S_NOATIME)
+@@ -61,6 +79,11 @@ void jfs_get_inode_flags(struct jfs_inod
+ jfs_ip->mode2 |= JFS_DIRSYNC_FL;
+ if (flags & S_SYNC)
+ jfs_ip->mode2 |= JFS_SYNC_FL;
++
++ if (vflags & V_BARRIER)
++ jfs_ip->mode2 |= JFS_BARRIER_FL;
++ if (vflags & V_COW)
++ jfs_ip->mode2 |= JFS_COW_FL;
+ }
+
+ /*
+@@ -105,6 +128,7 @@ struct inode *ialloc(struct inode *paren
+ mode |= S_ISGID;
+ } else
+ inode->i_gid = current_fsgid();
++ inode->i_tag = dx_current_fstag(sb);
+
+ /*
+ * New inodes need to save sane values on disk when
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/jfs_inode.h linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_inode.h
+--- linux-2.6.31.6/fs/jfs/jfs_inode.h 2009-06-11 17:13:05.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/jfs_inode.h 2009-10-07 01:25:26.000000000 +0200
+@@ -39,6 +39,7 @@ extern struct dentry *jfs_fh_to_dentry(s
+ extern struct dentry *jfs_fh_to_parent(struct super_block *sb, struct fid *fid,
+ int fh_len, int fh_type);
+ extern void jfs_set_inode_flags(struct inode *);
++extern int jfs_sync_flags(struct inode *, int, int);
+ extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int);
+
+ extern const struct address_space_operations jfs_aops;
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/namei.c
+--- linux-2.6.31.6/fs/jfs/namei.c 2009-06-11 17:13:05.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/namei.c 2009-10-07 01:09:16.000000000 +0200
+@@ -21,6 +21,7 @@
+ #include <linux/ctype.h>
+ #include <linux/quotaops.h>
+ #include <linux/exportfs.h>
++#include <linux/vs_tag.h>
+ #include "jfs_incore.h"
+ #include "jfs_superblock.h"
+ #include "jfs_inode.h"
+@@ -1476,6 +1477,7 @@ static struct dentry *jfs_lookup(struct
+ return ERR_CAST(ip);
+ }
+
++ dx_propagate_tag(nd, ip);
+ dentry = d_splice_alias(ip, dentry);
+
+ if (dentry && (JFS_SBI(dip->i_sb)->mntflag & JFS_OS2))
+@@ -1545,6 +1547,7 @@ const struct inode_operations jfs_dir_in
+ .setattr = jfs_setattr,
+ .permission = jfs_permission,
+ #endif
++ .sync_flags = jfs_sync_flags,
+ };
+
+ const struct file_operations jfs_dir_operations = {
+diff -NurpP --minimal linux-2.6.31.6/fs/jfs/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/super.c
+--- linux-2.6.31.6/fs/jfs/super.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/jfs/super.c 2009-09-10 17:10:55.000000000 +0200
+@@ -194,7 +194,8 @@ static void jfs_put_super(struct super_b
+ enum {
+ Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
+ Opt_resize_nosize, Opt_errors, Opt_ignore, Opt_err, Opt_quota,
+- Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask
++ Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask,
++ Opt_tag, Opt_notag, Opt_tagid
+ };
+
+ static const match_table_t tokens = {
+@@ -204,6 +205,10 @@ static const match_table_t tokens = {
+ {Opt_resize, "resize=%u"},
+ {Opt_resize_nosize, "resize"},
+ {Opt_errors, "errors=%s"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
++ {Opt_tag, "tagxid"},
+ {Opt_ignore, "noquota"},
+ {Opt_ignore, "quota"},
+ {Opt_usrquota, "usrquota"},
+@@ -338,6 +343,20 @@ static int parse_options(char *options,
+ }
+ break;
+ }
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ *flag |= JFS_TAGGED;
++ break;
++ case Opt_notag:
++ *flag &= JFS_TAGGED;
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ *flag |= JFS_TAGGED;
++ break;
++#endif
+ default:
+ printk("jfs: Unrecognized mount option \"%s\" "
+ " or missing value\n", p);
+@@ -369,6 +388,12 @@ static int jfs_remount(struct super_bloc
+ if (!parse_options(data, sb, &newLVSize, &flag)) {
+ return -EINVAL;
+ }
++ if ((flag & JFS_TAGGED) && !(sb->s_flags & MS_TAGGED)) {
++ printk(KERN_ERR "JFS: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ return -EINVAL;
++ }
++
+ lock_kernel();
+ if (newLVSize) {
+ if (sb->s_flags & MS_RDONLY) {
+@@ -452,6 +477,9 @@ static int jfs_fill_super(struct super_b
+ #ifdef CONFIG_JFS_POSIX_ACL
+ sb->s_flags |= MS_POSIXACL;
+ #endif
++ /* map mount option tagxid */
++ if (sbi->flag & JFS_TAGGED)
++ sb->s_flags |= MS_TAGGED;
+
+ if (newLVSize) {
+ printk(KERN_ERR "resize option for remount only\n");
+diff -NurpP --minimal linux-2.6.31.6/fs/libfs.c linux-2.6.31.6-vs2.3.0.36.24/fs/libfs.c
+--- linux-2.6.31.6/fs/libfs.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/libfs.c 2009-09-10 16:11:43.000000000 +0200
+@@ -127,7 +127,8 @@ static inline unsigned char dt_type(stru
+ * both impossible due to the lock on directory.
+ */
+
+-int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir)
++static inline int do_dcache_readdir_filter(struct file *filp,
++ void *dirent, filldir_t filldir, int (*filter)(struct dentry *dentry))
+ {
+ struct dentry *dentry = filp->f_path.dentry;
+ struct dentry *cursor = filp->private_data;
+@@ -160,6 +161,8 @@ int dcache_readdir(struct file * filp, v
+ next = list_entry(p, struct dentry, d_u.d_child);
+ if (d_unhashed(next) || !next->d_inode)
+ continue;
++ if (filter && !filter(next))
++ continue;
+
+ spin_unlock(&dcache_lock);
+ if (filldir(dirent, next->d_name.name,
+@@ -178,6 +181,18 @@ int dcache_readdir(struct file * filp, v
+ return 0;
+ }
+
++int dcache_readdir(struct file *filp, void *dirent, filldir_t filldir)
++{
++ return do_dcache_readdir_filter(filp, dirent, filldir, NULL);
++}
++
++int dcache_readdir_filter(struct file *filp, void *dirent, filldir_t filldir,
++ int (*filter)(struct dentry *))
++{
++ return do_dcache_readdir_filter(filp, dirent, filldir, filter);
++}
++
++
+ ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
+ {
+ return -EISDIR;
+@@ -836,6 +851,7 @@ EXPORT_SYMBOL(dcache_dir_close);
+ EXPORT_SYMBOL(dcache_dir_lseek);
+ EXPORT_SYMBOL(dcache_dir_open);
+ EXPORT_SYMBOL(dcache_readdir);
++EXPORT_SYMBOL(dcache_readdir_filter);
+ EXPORT_SYMBOL(generic_read_dir);
+ EXPORT_SYMBOL(get_sb_pseudo);
+ EXPORT_SYMBOL(simple_write_begin);
+diff -NurpP --minimal linux-2.6.31.6/fs/locks.c linux-2.6.31.6-vs2.3.0.36.24/fs/locks.c
+--- linux-2.6.31.6/fs/locks.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/locks.c 2009-09-10 16:11:43.000000000 +0200
+@@ -127,6 +127,8 @@
+ #include <linux/time.h>
+ #include <linux/rcupdate.h>
+ #include <linux/pid_namespace.h>
++#include <linux/vs_base.h>
++#include <linux/vs_limit.h>
+
+ #include <asm/uaccess.h>
+
+@@ -148,6 +150,8 @@ static struct kmem_cache *filelock_cache
+ /* Allocate an empty lock structure. */
+ static struct file_lock *locks_alloc_lock(void)
+ {
++ if (!vx_locks_avail(1))
++ return NULL;
+ return kmem_cache_alloc(filelock_cache, GFP_KERNEL);
+ }
+
+@@ -174,6 +178,7 @@ static void locks_free_lock(struct file_
+ BUG_ON(!list_empty(&fl->fl_block));
+ BUG_ON(!list_empty(&fl->fl_link));
+
++ vx_locks_dec(fl);
+ locks_release_private(fl);
+ kmem_cache_free(filelock_cache, fl);
+ }
+@@ -194,6 +199,7 @@ void locks_init_lock(struct file_lock *f
+ fl->fl_start = fl->fl_end = 0;
+ fl->fl_ops = NULL;
+ fl->fl_lmops = NULL;
++ fl->fl_xid = -1;
+ }
+
+ EXPORT_SYMBOL(locks_init_lock);
+@@ -248,6 +254,7 @@ void locks_copy_lock(struct file_lock *n
+ new->fl_file = fl->fl_file;
+ new->fl_ops = fl->fl_ops;
+ new->fl_lmops = fl->fl_lmops;
++ new->fl_xid = fl->fl_xid;
+
+ locks_copy_private(new, fl);
+ }
+@@ -286,6 +293,11 @@ static int flock_make_lock(struct file *
+ fl->fl_flags = FL_FLOCK;
+ fl->fl_type = type;
+ fl->fl_end = OFFSET_MAX;
++
++ vxd_assert(filp->f_xid == vx_current_xid(),
++ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
++ fl->fl_xid = filp->f_xid;
++ vx_locks_inc(fl);
+
+ *lock = fl;
+ return 0;
+@@ -451,6 +463,7 @@ static int lease_init(struct file *filp,
+
+ fl->fl_owner = current->files;
+ fl->fl_pid = current->tgid;
++ fl->fl_xid = vx_current_xid();
+
+ fl->fl_file = filp;
+ fl->fl_flags = FL_LEASE;
+@@ -470,6 +483,11 @@ static struct file_lock *lease_alloc(str
+ if (fl == NULL)
+ return ERR_PTR(error);
+
++ fl->fl_xid = vx_current_xid();
++ if (filp)
++ vxd_assert(filp->f_xid == fl->fl_xid,
++ "f_xid(%d) == fl_xid(%d)", filp->f_xid, fl->fl_xid);
++ vx_locks_inc(fl);
+ error = lease_init(filp, type, fl);
+ if (error) {
+ locks_free_lock(fl);
+@@ -770,6 +788,7 @@ static int flock_lock_file(struct file *
+ if (found)
+ cond_resched_bkl();
+
++ new_fl->fl_xid = -1;
+ find_conflict:
+ for_each_lock(inode, before) {
+ struct file_lock *fl = *before;
+@@ -790,6 +809,7 @@ find_conflict:
+ goto out;
+ locks_copy_lock(new_fl, request);
+ locks_insert_lock(before, new_fl);
++ vx_locks_inc(new_fl);
+ new_fl = NULL;
+ error = 0;
+
+@@ -800,7 +820,8 @@ out:
+ return error;
+ }
+
+-static int __posix_lock_file(struct inode *inode, struct file_lock *request, struct file_lock *conflock)
++static int __posix_lock_file(struct inode *inode, struct file_lock *request,
++ struct file_lock *conflock, xid_t xid)
+ {
+ struct file_lock *fl;
+ struct file_lock *new_fl = NULL;
+@@ -810,6 +831,8 @@ static int __posix_lock_file(struct inod
+ struct file_lock **before;
+ int error, added = 0;
+
++ vxd_assert(xid == vx_current_xid(),
++ "xid(%d) == current(%d)", xid, vx_current_xid());
+ /*
+ * We may need two file_lock structures for this operation,
+ * so we get them in advance to avoid races.
+@@ -820,7 +843,11 @@ static int __posix_lock_file(struct inod
+ (request->fl_type != F_UNLCK ||
+ request->fl_start != 0 || request->fl_end != OFFSET_MAX)) {
+ new_fl = locks_alloc_lock();
++ new_fl->fl_xid = xid;
++ vx_locks_inc(new_fl);
+ new_fl2 = locks_alloc_lock();
++ new_fl2->fl_xid = xid;
++ vx_locks_inc(new_fl2);
+ }
+
+ lock_kernel();
+@@ -1019,7 +1046,8 @@ static int __posix_lock_file(struct inod
+ int posix_lock_file(struct file *filp, struct file_lock *fl,
+ struct file_lock *conflock)
+ {
+- return __posix_lock_file(filp->f_path.dentry->d_inode, fl, conflock);
++ return __posix_lock_file(filp->f_path.dentry->d_inode,
++ fl, conflock, filp->f_xid);
+ }
+ EXPORT_SYMBOL(posix_lock_file);
+
+@@ -1109,7 +1137,7 @@ int locks_mandatory_area(int read_write,
+ fl.fl_end = offset + count - 1;
+
+ for (;;) {
+- error = __posix_lock_file(inode, &fl, NULL);
++ error = __posix_lock_file(inode, &fl, NULL, filp->f_xid);
+ if (error != FILE_LOCK_DEFERRED)
+ break;
+ error = wait_event_interruptible(fl.fl_wait, !fl.fl_next);
+@@ -1424,6 +1452,7 @@ int generic_setlease(struct file *filp,
+
+ locks_copy_lock(new_fl, lease);
+ locks_insert_lock(before, new_fl);
++ vx_locks_inc(new_fl);
+
+ *flp = new_fl;
+ return 0;
+@@ -1779,6 +1808,11 @@ int fcntl_setlk(unsigned int fd, struct
+ if (file_lock == NULL)
+ return -ENOLCK;
+
++ vxd_assert(filp->f_xid == vx_current_xid(),
++ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
++ file_lock->fl_xid = filp->f_xid;
++ vx_locks_inc(file_lock);
++
+ /*
+ * This might block, so we do it before checking the inode.
+ */
+@@ -1897,6 +1931,11 @@ int fcntl_setlk64(unsigned int fd, struc
+ if (file_lock == NULL)
+ return -ENOLCK;
+
++ vxd_assert(filp->f_xid == vx_current_xid(),
++ "f_xid(%d) == current(%d)", filp->f_xid, vx_current_xid());
++ file_lock->fl_xid = filp->f_xid;
++ vx_locks_inc(file_lock);
++
+ /*
+ * This might block, so we do it before checking the inode.
+ */
+@@ -2162,8 +2201,11 @@ static int locks_show(struct seq_file *f
+
+ lock_get_status(f, fl, (long)f->private, "");
+
+- list_for_each_entry(bfl, &fl->fl_block, fl_block)
++ list_for_each_entry(bfl, &fl->fl_block, fl_block) {
++ if (!vx_check(fl->fl_xid, VS_WATCH_P | VS_IDENT))
++ continue;
+ lock_get_status(f, bfl, (long)f->private, " ->");
++ }
+
+ f->private++;
+ return 0;
+diff -NurpP --minimal linux-2.6.31.6/fs/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/namei.c
+--- linux-2.6.31.6/fs/namei.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/namei.c 2009-10-15 03:49:19.000000000 +0200
+@@ -33,6 +33,14 @@
+ #include <linux/fcntl.h>
+ #include <linux/device_cgroup.h>
+ #include <linux/fs_struct.h>
++#include <linux/proc_fs.h>
++#include <linux/vserver/inode.h>
++#include <linux/vs_base.h>
++#include <linux/vs_tag.h>
++#include <linux/vs_cowbl.h>
++#include <linux/vs_device.h>
++#include <linux/vs_context.h>
++#include <linux/pid_namespace.h>
+ #include <asm/uaccess.h>
+
+ #define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE])
+@@ -169,6 +177,77 @@ void putname(const char *name)
+ EXPORT_SYMBOL(putname);
+ #endif
+
++static inline int dx_barrier(struct inode *inode)
++{
++ if (IS_BARRIER(inode) && !vx_check(0, VS_ADMIN | VS_WATCH)) {
++ vxwprintk_task(1, "did hit the barrier.");
++ return 1;
++ }
++ return 0;
++}
++
++static int __dx_permission(struct inode *inode, int mask)
++{
++ if (dx_barrier(inode))
++ return -EACCES;
++
++ if (inode->i_sb->s_magic == DEVPTS_SUPER_MAGIC) {
++ /* devpts is xid tagged */
++ if (S_ISDIR(inode->i_mode) ||
++ vx_check((xid_t)inode->i_tag, VS_IDENT | VS_WATCH_P))
++ return 0;
++ }
++ else if (inode->i_sb->s_magic == PROC_SUPER_MAGIC) {
++ struct proc_dir_entry *de = PDE(inode);
++
++ if (de && !vx_hide_check(0, de->vx_flags))
++ goto out;
++
++ if ((mask & (MAY_WRITE | MAY_APPEND))) {
++ struct pid *pid;
++ struct task_struct *tsk;
++
++ if (vx_check(0, VS_ADMIN | VS_WATCH_P) ||
++ vx_flags(VXF_STATE_SETUP, 0))
++ return 0;
++
++ pid = PROC_I(inode)->pid;
++ if (!pid)
++ goto out;
++
++ tsk = pid_task(pid, PIDTYPE_PID);
++ vxdprintk(VXD_CBIT(tag, 0), "accessing %p[#%u]",
++ tsk, (tsk ? vx_task_xid(tsk) : 0));
++ if (tsk && vx_check(vx_task_xid(tsk), VS_IDENT | VS_WATCH_P))
++ return 0;
++ }
++ else {
++ /* FIXME: Should we block some entries here? */
++ return 0;
++ }
++ }
++ else {
++ if (dx_notagcheck(inode->i_sb) ||
++ dx_check(inode->i_tag, DX_HOSTID | DX_ADMIN | DX_WATCH |
++ DX_IDENT))
++ return 0;
++ }
++
++out:
++ return -EACCES;
++}
++
++int dx_permission(struct inode *inode, int mask)
++{
++ int ret = __dx_permission(inode, mask);
++ if (unlikely(ret)) {
++ vxwprintk_task(1, "denied %x access to %s:%p[#%d,%lu]",
++ mask, inode->i_sb->s_id, inode, inode->i_tag,
++ inode->i_ino);
++ }
++ return ret;
++}
++
+
+ /**
+ * generic_permission - check for access rights on a Posix-like filesystem
+@@ -255,10 +334,14 @@ int inode_permission(struct inode *inode
+ /*
+ * Nobody gets write access to an immutable file.
+ */
+- if (IS_IMMUTABLE(inode))
++ if (IS_IMMUTABLE(inode) && !IS_COW(inode))
+ return -EACCES;
+ }
+
++ retval = dx_permission(inode, mask);
++ if (retval)
++ return retval;
++
+ if (inode->i_op->permission)
+ retval = inode->i_op->permission(inode, mask);
+ else
+@@ -434,6 +517,8 @@ static int exec_permission_lite(struct i
+ {
+ umode_t mode = inode->i_mode;
+
++ if (dx_barrier(inode))
++ return -EACCES;
+ if (inode->i_op->permission)
+ return -EAGAIN;
+
+@@ -756,7 +841,8 @@ static __always_inline void follow_dotdo
+
+ if (nd->path.dentry == nd->root.dentry &&
+ nd->path.mnt == nd->root.mnt) {
+- break;
++ /* for sane '/' avoid follow_mount() */
++ return;
+ }
+ spin_lock(&dcache_lock);
+ if (nd->path.dentry != nd->path.mnt->mnt_root) {
+@@ -792,16 +878,30 @@ static int do_lookup(struct nameidata *n
+ {
+ struct vfsmount *mnt = nd->path.mnt;
+ struct dentry *dentry = __d_lookup(nd->path.dentry, name);
++ struct inode *inode;
+
+ if (!dentry)
+ goto need_lookup;
+ if (dentry->d_op && dentry->d_op->d_revalidate)
+ goto need_revalidate;
++ inode = dentry->d_inode;
++ if (!inode)
++ goto done;
++
++ if (__dx_permission(inode, MAY_ACCESS))
++ goto hidden;
++
+ done:
+ path->mnt = mnt;
+ path->dentry = dentry;
+ __follow_mount(path);
+ return 0;
++hidden:
++ vxwprintk_task(1, "did lookup hidden %s:%p[#%d,%lu] %s/%.*s.",
++ inode->i_sb->s_id, inode, inode->i_tag, inode->i_ino,
++ vxd_path(&nd->path), name->len, name->name);
++ dput(dentry);
++ return -ENOENT;
+
+ need_lookup:
+ dentry = real_lookup(nd->path.dentry, name, nd);
+@@ -1389,7 +1489,7 @@ static int may_delete(struct inode *dir,
+ if (IS_APPEND(dir))
+ return -EPERM;
+ if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)||
+- IS_IMMUTABLE(victim->d_inode) || IS_SWAPFILE(victim->d_inode))
++ IS_IXORUNLINK(victim->d_inode) || IS_SWAPFILE(victim->d_inode))
+ return -EPERM;
+ if (isdir) {
+ if (!S_ISDIR(victim->d_inode->i_mode))
+@@ -1529,6 +1629,14 @@ int may_open(struct path *path, int acc_
+ break;
+ }
+
++#ifdef CONFIG_VSERVER_COWBL
++ if (IS_COW(inode) && (flag & FMODE_WRITE)) {
++ if (IS_COW_LINK(inode))
++ return -EMLINK;
++ inode->i_flags &= ~(S_IXUNLINK|S_IMMUTABLE);
++ mark_inode_dirty(inode);
++ }
++#endif
+ error = inode_permission(inode, acc_mode);
+ if (error)
+ return error;
+@@ -1677,7 +1785,11 @@ struct file *do_filp_open(int dfd, const
+ int count = 0;
+ int will_write;
+ int flag = open_to_namei_flags(open_flag);
+-
++#ifdef CONFIG_VSERVER_COWBL
++ int rflag = flag;
++ int rmode = mode;
++restart:
++#endif
+ if (!acc_mode)
+ acc_mode = MAY_OPEN | ACC_MODE(flag);
+
+@@ -1825,6 +1937,25 @@ ok:
+ goto exit;
+ }
+ error = may_open(&nd.path, acc_mode, flag);
++#ifdef CONFIG_VSERVER_COWBL
++ if (error == -EMLINK) {
++ struct dentry *dentry;
++ dentry = cow_break_link(pathname);
++ if (IS_ERR(dentry)) {
++ error = PTR_ERR(dentry);
++ goto exit_cow;
++ }
++ dput(dentry);
++ if (will_write)
++ mnt_drop_write(nd.path.mnt);
++ release_open_intent(&nd);
++ path_put(&nd.path);
++ flag = rflag;
++ mode = rmode;
++ goto restart;
++ }
++exit_cow:
++#endif
+ if (error) {
+ if (will_write)
+ mnt_drop_write(nd.path.mnt);
+@@ -1987,9 +2118,17 @@ int vfs_mknod(struct inode *dir, struct
+ if (error)
+ return error;
+
+- if ((S_ISCHR(mode) || S_ISBLK(mode)) && !capable(CAP_MKNOD))
++ if (!(S_ISCHR(mode) || S_ISBLK(mode)))
++ goto okay;
++
++ if (!capable(CAP_MKNOD))
+ return -EPERM;
+
++ if (S_ISCHR(mode) && !vs_chrdev_perm(dev, DATTR_CREATE))
++ return -EPERM;
++ if (S_ISBLK(mode) && !vs_blkdev_perm(dev, DATTR_CREATE))
++ return -EPERM;
++okay:
+ if (!dir->i_op->mknod)
+ return -EPERM;
+
+@@ -2456,7 +2595,7 @@ int vfs_link(struct dentry *old_dentry,
+ /*
+ * A link to an append-only or immutable file cannot be created.
+ */
+- if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
++ if (IS_APPEND(inode) || IS_IXORUNLINK(inode))
+ return -EPERM;
+ if (!dir->i_op->link)
+ return -EPERM;
+@@ -2829,6 +2968,219 @@ int vfs_follow_link(struct nameidata *nd
+ return __vfs_follow_link(nd, link);
+ }
+
++
++#ifdef CONFIG_VSERVER_COWBL
++
++#include <linux/file.h>
++
++static inline
++long do_cow_splice(struct file *in, struct file *out, size_t len)
++{
++ loff_t ppos = 0;
++
++ return do_splice_direct(in, &ppos, out, len, 0);
++}
++
++struct dentry *cow_break_link(const char *pathname)
++{
++ int ret, mode, pathlen, redo = 0;
++ struct nameidata old_nd, dir_nd;
++ struct path old_path, new_path;
++ struct dentry *dir, *res = NULL;
++ struct file *old_file;
++ struct file *new_file;
++ char *to, *path, pad='\251';
++ loff_t size;
++
++ vxdprintk(VXD_CBIT(misc, 1), "cow_break_link(%s)", pathname);
++ path = kmalloc(PATH_MAX, GFP_KERNEL);
++ ret = -ENOMEM;
++ if (!path)
++ goto out;
++
++ /* old_nd will have refs to dentry and mnt */
++ ret = path_lookup(pathname, LOOKUP_FOLLOW, &old_nd);
++ vxdprintk(VXD_CBIT(misc, 2), "path_lookup(old): %d", ret);
++ if (ret < 0)
++ goto out_free_path;
++
++ old_path = old_nd.path;
++ mode = old_path.dentry->d_inode->i_mode;
++
++ to = d_path(&old_path, path, PATH_MAX-2);
++ pathlen = strlen(to);
++ vxdprintk(VXD_CBIT(misc, 2), "old path %s [%.*s:%d]", to,
++ old_path.dentry->d_name.len, old_path.dentry->d_name.name,
++ old_path.dentry->d_name.len);
++
++ to[pathlen + 1] = 0;
++retry:
++ to[pathlen] = pad--;
++ ret = -EMLINK;
++ if (pad <= '\240')
++ goto out_rel_old;
++
++ vxdprintk(VXD_CBIT(misc, 1), "temp copy %s", to);
++ /* dir_nd will have refs to dentry and mnt */
++ ret = path_lookup(to,
++ LOOKUP_PARENT | LOOKUP_OPEN | LOOKUP_CREATE, &dir_nd);
++ vxdprintk(VXD_CBIT(misc, 2),
++ "path_lookup(new): %d", ret);
++ if (ret < 0)
++ goto retry;
++
++ /* this puppy downs the inode mutex */
++ new_path.dentry = lookup_create(&dir_nd, 0);
++ if (!new_path.dentry || IS_ERR(new_path.dentry)) {
++ vxdprintk(VXD_CBIT(misc, 2),
++ "lookup_create(new): %p", new_path.dentry);
++ mutex_unlock(&dir_nd.path.dentry->d_inode->i_mutex);
++ path_put(&dir_nd.path);
++ goto retry;
++ }
++ vxdprintk(VXD_CBIT(misc, 2),
++ "lookup_create(new): %p [%.*s:%d]", new_path.dentry,
++ new_path.dentry->d_name.len, new_path.dentry->d_name.name,
++ new_path.dentry->d_name.len);
++ dir = dir_nd.path.dentry;
++
++ ret = vfs_create(dir_nd.path.dentry->d_inode, new_path.dentry, mode, &dir_nd);
++ vxdprintk(VXD_CBIT(misc, 2),
++ "vfs_create(new): %d", ret);
++ if (ret == -EEXIST) {
++ mutex_unlock(&dir->d_inode->i_mutex);
++ dput(new_path.dentry);
++ path_put(&dir_nd.path);
++ goto retry;
++ }
++ else if (ret < 0)
++ goto out_unlock_new;
++
++ /* drop out early, ret passes ENOENT */
++ ret = -ENOENT;
++ if ((redo = d_unhashed(old_path.dentry)))
++ goto out_unlock_new;
++
++ new_path.mnt = dir_nd.path.mnt;
++ dget(old_path.dentry);
++ mntget(old_path.mnt);
++ /* this one cleans up the dentry/mnt in case of failure */
++ old_file = dentry_open(old_path.dentry, old_path.mnt,
++ O_RDONLY, current_cred());
++ vxdprintk(VXD_CBIT(misc, 2),
++ "dentry_open(old): %p", old_file);
++ if (!old_file || IS_ERR(old_file)) {
++ res = IS_ERR(old_file) ? (void *) old_file : res;
++ goto out_unlock_new;
++ }
++
++ dget(new_path.dentry);
++ mntget(new_path.mnt);
++ /* this one cleans up the dentry/mnt in case of failure */
++ new_file = dentry_open(new_path.dentry, new_path.mnt,
++ O_WRONLY, current_cred());
++ vxdprintk(VXD_CBIT(misc, 2),
++ "dentry_open(new): %p", new_file);
++
++ ret = IS_ERR(new_file) ? PTR_ERR(new_file) : -ENOENT;
++ if (!new_file || IS_ERR(new_file))
++ goto out_fput_old;
++
++ size = i_size_read(old_file->f_dentry->d_inode);
++ ret = do_cow_splice(old_file, new_file, size);
++ vxdprintk(VXD_CBIT(misc, 2), "do_splice_direct: %d", ret);
++ if (ret < 0) {
++ goto out_fput_both;
++ } else if (ret < size) {
++ ret = -ENOSPC;
++ goto out_fput_both;
++ } else {
++ struct inode *old_inode = old_path.dentry->d_inode;
++ struct inode *new_inode = new_path.dentry->d_inode;
++ struct iattr attr = {
++ .ia_uid = old_inode->i_uid,
++ .ia_gid = old_inode->i_gid,
++ .ia_valid = ATTR_UID | ATTR_GID
++ };
++
++ ret = inode_setattr(new_inode, &attr);
++ if (ret)
++ goto out_fput_both;
++ }
++
++ mutex_lock(&old_path.dentry->d_inode->i_sb->s_vfs_rename_mutex);
++
++ /* drop out late */
++ ret = -ENOENT;
++ if ((redo = d_unhashed(old_path.dentry)))
++ goto out_unlock;
++
++ vxdprintk(VXD_CBIT(misc, 2),
++ "vfs_rename: [%*s:%d] -> [%*s:%d]",
++ new_path.dentry->d_name.len, new_path.dentry->d_name.name,
++ new_path.dentry->d_name.len,
++ old_path.dentry->d_name.len, old_path.dentry->d_name.name,
++ old_path.dentry->d_name.len);
++ ret = vfs_rename(dir_nd.path.dentry->d_inode, new_path.dentry,
++ old_nd.path.dentry->d_parent->d_inode, old_path.dentry);
++ vxdprintk(VXD_CBIT(misc, 2), "vfs_rename: %d", ret);
++ res = new_path.dentry;
++
++out_unlock:
++ mutex_unlock(&old_path.dentry->d_inode->i_sb->s_vfs_rename_mutex);
++
++out_fput_both:
++ vxdprintk(VXD_CBIT(misc, 3),
++ "fput(new_file=%p[#%ld])", new_file,
++ atomic_long_read(&new_file->f_count));
++ fput(new_file);
++
++out_fput_old:
++ vxdprintk(VXD_CBIT(misc, 3),
++ "fput(old_file=%p[#%ld])", old_file,
++ atomic_long_read(&old_file->f_count));
++ fput(old_file);
++
++out_unlock_new:
++ mutex_unlock(&dir->d_inode->i_mutex);
++ if (!ret)
++ goto out_redo;
++
++ /* error path cleanup */
++ vfs_unlink(dir->d_inode, new_path.dentry);
++ dput(new_path.dentry);
++
++out_redo:
++ if (!redo)
++ goto out_rel_both;
++ /* lookup dentry once again */
++ path_put(&old_nd.path);
++ ret = path_lookup(pathname, LOOKUP_FOLLOW, &old_nd);
++ if (ret)
++ goto out_rel_both;
++
++ new_path.dentry = old_nd.path.dentry;
++ vxdprintk(VXD_CBIT(misc, 2),
++ "path_lookup(redo): %p [%.*s:%d]", new_path.dentry,
++ new_path.dentry->d_name.len, new_path.dentry->d_name.name,
++ new_path.dentry->d_name.len);
++ dget(new_path.dentry);
++ res = new_path.dentry;
++
++out_rel_both:
++ path_put(&dir_nd.path);
++out_rel_old:
++ path_put(&old_nd.path);
++out_free_path:
++ kfree(path);
++out:
++ if (ret)
++ res = ERR_PTR(ret);
++ return res;
++}
++
++#endif
++
+ /* get the link contents into pagecache */
+ static char *page_getlink(struct dentry * dentry, struct page **ppage)
+ {
+diff -NurpP --minimal linux-2.6.31.6/fs/namespace.c linux-2.6.31.6-vs2.3.0.36.24/fs/namespace.c
+--- linux-2.6.31.6/fs/namespace.c 2009-09-10 15:26:22.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/namespace.c 2009-09-10 16:11:43.000000000 +0200
+@@ -29,6 +29,11 @@
+ #include <linux/log2.h>
+ #include <linux/idr.h>
+ #include <linux/fs_struct.h>
++#include <linux/vs_base.h>
++#include <linux/vs_context.h>
++#include <linux/vs_tag.h>
++#include <linux/vserver/space.h>
++#include <linux/vserver/global.h>
+ #include <asm/uaccess.h>
+ #include <asm/unistd.h>
+ #include "pnode.h"
+@@ -567,6 +572,7 @@ static struct vfsmount *clone_mnt(struct
+ mnt->mnt_root = dget(root);
+ mnt->mnt_mountpoint = mnt->mnt_root;
+ mnt->mnt_parent = mnt;
++ mnt->mnt_tag = old->mnt_tag;
+
+ if (flag & CL_SLAVE) {
+ list_add(&mnt->mnt_slave, &old->mnt_slave_list);
+@@ -661,6 +667,31 @@ static inline void mangle(struct seq_fil
+ seq_escape(m, s, " \t\n\\");
+ }
+
++static int mnt_is_reachable(struct vfsmount *mnt)
++{
++ struct path root;
++ struct dentry *point;
++ int ret;
++
++ if (mnt == mnt->mnt_ns->root)
++ return 1;
++
++ spin_lock(&vfsmount_lock);
++ root = current->fs->root;
++ point = root.dentry;
++
++ while ((mnt != mnt->mnt_parent) && (mnt != root.mnt)) {
++ point = mnt->mnt_mountpoint;
++ mnt = mnt->mnt_parent;
++ }
++
++ ret = (mnt == root.mnt) && is_subdir(point, root.dentry);
++
++ spin_unlock(&vfsmount_lock);
++
++ return ret;
++}
++
+ /*
+ * Simple .show_options callback for filesystems which don't want to
+ * implement more complex mount option showing.
+@@ -748,6 +779,8 @@ static int show_sb_opts(struct seq_file
+ { MS_SYNCHRONOUS, ",sync" },
+ { MS_DIRSYNC, ",dirsync" },
+ { MS_MANDLOCK, ",mand" },
++ { MS_TAGGED, ",tag" },
++ { MS_NOTAGCHECK, ",notagcheck" },
+ { 0, NULL }
+ };
+ const struct proc_fs_info *fs_infop;
+@@ -795,10 +828,20 @@ static int show_vfsmnt(struct seq_file *
+ int err = 0;
+ struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
+
+- mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none");
+- seq_putc(m, ' ');
+- seq_path(m, &mnt_path, " \t\n\\");
+- seq_putc(m, ' ');
++ if (vx_flags(VXF_HIDE_MOUNT, 0))
++ return SEQ_SKIP;
++ if (!mnt_is_reachable(mnt) && !vx_check(0, VS_WATCH_P))
++ return SEQ_SKIP;
++
++ if (!vx_check(0, VS_ADMIN|VS_WATCH) &&
++ mnt == current->fs->root.mnt) {
++ seq_puts(m, "/dev/root / ");
++ } else {
++ mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none");
++ seq_putc(m, ' ');
++ seq_path(m, &mnt_path, " \t\n\\");
++ seq_putc(m, ' ');
++ }
+ show_type(m, mnt->mnt_sb);
+ seq_puts(m, __mnt_is_readonly(mnt) ? " ro" : " rw");
+ err = show_sb_opts(m, mnt->mnt_sb);
+@@ -828,6 +871,11 @@ static int show_mountinfo(struct seq_fil
+ struct path root = p->root;
+ int err = 0;
+
++ if (vx_flags(VXF_HIDE_MOUNT, 0))
++ return SEQ_SKIP;
++ if (!mnt_is_reachable(mnt) && !vx_check(0, VS_WATCH_P))
++ return SEQ_SKIP;
++
+ seq_printf(m, "%i %i %u:%u ", mnt->mnt_id, mnt->mnt_parent->mnt_id,
+ MAJOR(sb->s_dev), MINOR(sb->s_dev));
+ seq_dentry(m, mnt->mnt_root, " \t\n\\");
+@@ -886,17 +934,27 @@ static int show_vfsstat(struct seq_file
+ struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt };
+ int err = 0;
+
+- /* device */
+- if (mnt->mnt_devname) {
+- seq_puts(m, "device ");
+- mangle(m, mnt->mnt_devname);
+- } else
+- seq_puts(m, "no device");
++ if (vx_flags(VXF_HIDE_MOUNT, 0))
++ return SEQ_SKIP;
++ if (!mnt_is_reachable(mnt) && !vx_check(0, VS_WATCH_P))
++ return SEQ_SKIP;
+
+- /* mount point */
+- seq_puts(m, " mounted on ");
+- seq_path(m, &mnt_path, " \t\n\\");
+- seq_putc(m, ' ');
++ if (!vx_check(0, VS_ADMIN|VS_WATCH) &&
++ mnt == current->fs->root.mnt) {
++ seq_puts(m, "device /dev/root mounted on / ");
++ } else {
++ /* device */
++ if (mnt->mnt_devname) {
++ seq_puts(m, "device ");
++ mangle(m, mnt->mnt_devname);
++ } else
++ seq_puts(m, "no device");
++
++ /* mount point */
++ seq_puts(m, " mounted on ");
++ seq_path(m, &mnt_path, " \t\n\\");
++ seq_putc(m, ' ');
++ }
+
+ /* file system type */
+ seq_puts(m, "with fstype ");
+@@ -1130,7 +1188,7 @@ SYSCALL_DEFINE2(umount, char __user *, n
+ goto dput_and_out;
+
+ retval = -EPERM;
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+ goto dput_and_out;
+
+ retval = do_umount(path.mnt, flags);
+@@ -1156,7 +1214,7 @@ SYSCALL_DEFINE1(oldumount, char __user *
+
+ static int mount_is_safe(struct path *path)
+ {
+- if (capable(CAP_SYS_ADMIN))
++ if (vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+ return 0;
+ return -EPERM;
+ #ifdef notyet
+@@ -1420,7 +1478,7 @@ static int do_change_type(struct path *p
+ int type = flag & ~MS_REC;
+ int err = 0;
+
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_NAMESPACE))
+ return -EPERM;
+
+ if (path->dentry != path->mnt->mnt_root)
+@@ -1447,11 +1505,13 @@ static int do_change_type(struct path *p
+ * do loopback mount.
+ */
+ static int do_loopback(struct path *path, char *old_name,
+- int recurse)
++ tag_t tag, unsigned long flags, int mnt_flags)
+ {
+ struct path old_path;
+ struct vfsmount *mnt = NULL;
+ int err = mount_is_safe(path);
++ int recurse = flags & MS_REC;
++
+ if (err)
+ return err;
+ if (!old_name || !*old_name)
+@@ -1485,6 +1545,7 @@ static int do_loopback(struct path *path
+ spin_unlock(&vfsmount_lock);
+ release_mounts(&umount_list);
+ }
++ mnt->mnt_flags = mnt_flags;
+
+ out:
+ up_write(&namespace_sem);
+@@ -1515,12 +1576,12 @@ static int change_mount_flags(struct vfs
+ * on it - tough luck.
+ */
+ static int do_remount(struct path *path, int flags, int mnt_flags,
+- void *data)
++ void *data, xid_t xid)
+ {
+ int err;
+ struct super_block *sb = path->mnt->mnt_sb;
+
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_REMOUNT))
+ return -EPERM;
+
+ if (!check_mnt(path->mnt))
+@@ -1562,7 +1623,7 @@ static int do_move_mount(struct path *pa
+ struct path old_path, parent_path;
+ struct vfsmount *p;
+ int err = 0;
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+ return -EPERM;
+ if (!old_name || !*old_name)
+ return -EINVAL;
+@@ -1644,7 +1705,7 @@ static int do_new_mount(struct path *pat
+ return -EINVAL;
+
+ /* we need capabilities... */
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+ return -EPERM;
+
+ lock_kernel();
+@@ -1891,6 +1952,7 @@ long do_mount(char *dev_name, char *dir_
+ struct path path;
+ int retval = 0;
+ int mnt_flags = 0;
++ tag_t tag = 0;
+
+ /* Discard magic */
+ if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
+@@ -1910,6 +1972,12 @@ long do_mount(char *dev_name, char *dir_
+ if (!(flags & MS_NOATIME))
+ mnt_flags |= MNT_RELATIME;
+
++ if (dx_parse_tag(data_page, &tag, 1, &mnt_flags, &flags)) {
++ /* FIXME: bind and re-mounts get the tag flag? */
++ if (flags & (MS_BIND|MS_REMOUNT))
++ flags |= MS_TAGID;
++ }
++
+ /* Separate the per-mountpoint flags */
+ if (flags & MS_NOSUID)
+ mnt_flags |= MNT_NOSUID;
+@@ -1926,6 +1994,8 @@ long do_mount(char *dev_name, char *dir_
+ if (flags & MS_RDONLY)
+ mnt_flags |= MNT_READONLY;
+
++ if (!capable(CAP_SYS_ADMIN))
++ mnt_flags |= MNT_NODEV;
+ flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE |
+ MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
+ MS_STRICTATIME);
+@@ -1942,9 +2012,9 @@ long do_mount(char *dev_name, char *dir_
+
+ if (flags & MS_REMOUNT)
+ retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
+- data_page);
++ data_page, tag);
+ else if (flags & MS_BIND)
+- retval = do_loopback(&path, dev_name, flags & MS_REC);
++ retval = do_loopback(&path, dev_name, tag, flags, mnt_flags);
+ else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
+ retval = do_change_type(&path, flags);
+ else if (flags & MS_MOVE)
+@@ -2023,6 +2093,7 @@ static struct mnt_namespace *dup_mnt_ns(
+ q = next_mnt(q, new_ns->root);
+ }
+ up_write(&namespace_sem);
++ atomic_inc(&vs_global_mnt_ns);
+
+ if (rootmnt)
+ mntput(rootmnt);
+@@ -2165,9 +2236,10 @@ SYSCALL_DEFINE2(pivot_root, const char _
+ down_write(&namespace_sem);
+ mutex_lock(&old.dentry->d_inode->i_mutex);
+ error = -EINVAL;
+- if (IS_MNT_SHARED(old.mnt) ||
++ if ((IS_MNT_SHARED(old.mnt) ||
+ IS_MNT_SHARED(new.mnt->mnt_parent) ||
+- IS_MNT_SHARED(root.mnt->mnt_parent))
++ IS_MNT_SHARED(root.mnt->mnt_parent)) &&
++ !vx_flags(VXF_STATE_SETUP, 0))
+ goto out2;
+ if (!check_mnt(root.mnt))
+ goto out2;
+@@ -2303,6 +2375,7 @@ void put_mnt_ns(struct mnt_namespace *ns
+ spin_unlock(&vfsmount_lock);
+ up_write(&namespace_sem);
+ release_mounts(&umount_list);
++ atomic_dec(&vs_global_mnt_ns);
+ kfree(ns);
+ }
+ EXPORT_SYMBOL(put_mnt_ns);
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/client.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/client.c
+--- linux-2.6.31.6/fs/nfs/client.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/client.c 2009-11-12 12:26:38.000000000 +0100
+@@ -732,6 +732,9 @@ static int nfs_init_server_rpcclient(str
+ if (server->flags & NFS_MOUNT_SOFT)
+ server->client->cl_softrtry = 1;
+
++ server->client->cl_tag = 0;
++ if (server->flags & NFS_MOUNT_TAGGED)
++ server->client->cl_tag = 1;
+ return 0;
+ }
+
+@@ -899,6 +902,10 @@ static void nfs_server_set_fsinfo(struct
+ server->acdirmin = server->acdirmax = 0;
+ }
+
++ /* FIXME: needs fsinfo
++ if (server->flags & NFS_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED; */
++
+ server->maxfilesize = fsinfo->maxfilesize;
+
+ /* We're airborne Set socket buffersize */
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/dir.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/dir.c
+--- linux-2.6.31.6/fs/nfs/dir.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/dir.c 2009-11-12 12:26:38.000000000 +0100
+@@ -33,6 +33,7 @@
+ #include <linux/namei.h>
+ #include <linux/mount.h>
+ #include <linux/sched.h>
++#include <linux/vs_tag.h>
+
+ #include "nfs4_fs.h"
+ #include "delegation.h"
+@@ -949,6 +950,7 @@ static struct dentry *nfs_lookup(struct
+ if (IS_ERR(res))
+ goto out_unblock_sillyrename;
+
++ dx_propagate_tag(nd, inode);
+ no_entry:
+ res = d_materialise_unique(dentry, inode);
+ if (res != NULL) {
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/inode.c
+--- linux-2.6.31.6/fs/nfs/inode.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/inode.c 2009-09-10 16:11:43.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include <linux/vfs.h>
+ #include <linux/inet.h>
+ #include <linux/nfs_xdr.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/system.h>
+ #include <asm/uaccess.h>
+@@ -278,6 +279,8 @@ nfs_fhget(struct super_block *sb, struct
+ if (inode->i_state & I_NEW) {
+ struct nfs_inode *nfsi = NFS_I(inode);
+ unsigned long now = jiffies;
++ uid_t uid;
++ gid_t gid;
+
+ /* We set i_ino for the few things that still rely on it,
+ * such as stat(2) */
+@@ -321,8 +324,8 @@ nfs_fhget(struct super_block *sb, struct
+ nfsi->change_attr = 0;
+ inode->i_size = 0;
+ inode->i_nlink = 0;
+- inode->i_uid = -2;
+- inode->i_gid = -2;
++ uid = -2;
++ gid = -2;
+ inode->i_blocks = 0;
+ memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
+
+@@ -341,9 +344,9 @@ nfs_fhget(struct super_block *sb, struct
+ if (fattr->valid & NFS_ATTR_FATTR_NLINK)
+ inode->i_nlink = fattr->nlink;
+ if (fattr->valid & NFS_ATTR_FATTR_OWNER)
+- inode->i_uid = fattr->uid;
++ uid = fattr->uid;
+ if (fattr->valid & NFS_ATTR_FATTR_GROUP)
+- inode->i_gid = fattr->gid;
++ gid = fattr->gid;
+ if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED)
+ inode->i_blocks = fattr->du.nfs2.blocks;
+ if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) {
+@@ -352,6 +355,11 @@ nfs_fhget(struct super_block *sb, struct
+ */
+ inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used);
+ }
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid, 0);
++ /* maybe fattr->xid someday */
++
+ nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
+ nfsi->attrtimeo_timestamp = now;
+ nfsi->access_cache = RB_ROOT;
+@@ -492,6 +500,8 @@ void nfs_setattr_update_inode(struct ino
+ inode->i_uid = attr->ia_uid;
+ if ((attr->ia_valid & ATTR_GID) != 0)
+ inode->i_gid = attr->ia_gid;
++ if ((attr->ia_valid & ATTR_TAG) && IS_TAGGED(inode))
++ inode->i_tag = attr->ia_tag;
+ NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
+ spin_unlock(&inode->i_lock);
+ }
+@@ -902,6 +912,9 @@ static int nfs_check_inode_attributes(st
+ struct nfs_inode *nfsi = NFS_I(inode);
+ loff_t cur_size, new_isize;
+ unsigned long invalid = 0;
++ uid_t uid;
++ gid_t gid;
++ tag_t tag;
+
+
+ /* Has the inode gone and changed behind our back? */
+@@ -925,13 +938,18 @@ static int nfs_check_inode_attributes(st
+ invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE;
+ }
+
++ uid = INOTAG_UID(DX_TAG(inode), fattr->uid, fattr->gid);
++ gid = INOTAG_GID(DX_TAG(inode), fattr->uid, fattr->gid);
++ tag = INOTAG_TAG(DX_TAG(inode), fattr->uid, fattr->gid, 0);
++
+ /* Have any file permissions changed? */
+ if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO))
+ invalid |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
+- if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && inode->i_uid != fattr->uid)
++ if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && uid != fattr->uid)
+ invalid |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
+- if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && inode->i_gid != fattr->gid)
++ if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && gid != fattr->gid)
+ invalid |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
++ /* maybe check for tag too? */
+
+ /* Has the link count changed? */
+ if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink)
+@@ -1145,6 +1163,9 @@ static int nfs_update_inode(struct inode
+ loff_t cur_isize, new_isize;
+ unsigned long invalid = 0;
+ unsigned long now = jiffies;
++ uid_t uid;
++ gid_t gid;
++ tag_t tag;
+
+ dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n",
+ __func__, inode->i_sb->s_id, inode->i_ino,
+@@ -1233,6 +1254,9 @@ static int nfs_update_inode(struct inode
+ }
+ }
+
++ uid = INOTAG_UID(DX_TAG(inode), fattr->uid, fattr->gid);
++ gid = INOTAG_GID(DX_TAG(inode), fattr->uid, fattr->gid);
++ tag = INOTAG_TAG(DX_TAG(inode), fattr->uid, fattr->gid, 0);
+
+ if (fattr->valid & NFS_ATTR_FATTR_ATIME)
+ memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
+@@ -1244,18 +1268,22 @@ static int nfs_update_inode(struct inode
+ }
+ }
+ if (fattr->valid & NFS_ATTR_FATTR_OWNER) {
+- if (inode->i_uid != fattr->uid) {
++ if (uid != fattr->uid) {
+ invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
+- inode->i_uid = fattr->uid;
++ uid = fattr->uid;
+ }
+ }
+ if (fattr->valid & NFS_ATTR_FATTR_GROUP) {
+- if (inode->i_gid != fattr->gid) {
++ if (gid != fattr->gid) {
+ invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
+- inode->i_gid = fattr->gid;
++ gid = fattr->gid;
+ }
+ }
+
++ inode->i_uid = uid;
++ inode->i_gid = gid;
++ inode->i_tag = tag;
++
+ if (fattr->valid & NFS_ATTR_FATTR_NLINK) {
+ if (inode->i_nlink != fattr->nlink) {
+ invalid |= NFS_INO_INVALID_ATTR;
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/nfs3xdr.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/nfs3xdr.c
+--- linux-2.6.31.6/fs/nfs/nfs3xdr.c 2009-06-11 17:13:06.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/nfs3xdr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -22,6 +22,7 @@
+ #include <linux/nfs3.h>
+ #include <linux/nfs_fs.h>
+ #include <linux/nfsacl.h>
++#include <linux/vs_tag.h>
+ #include "internal.h"
+
+ #define NFSDBG_FACILITY NFSDBG_XDR
+@@ -177,7 +178,7 @@ xdr_decode_fattr(__be32 *p, struct nfs_f
+ }
+
+ static inline __be32 *
+-xdr_encode_sattr(__be32 *p, struct iattr *attr)
++xdr_encode_sattr(__be32 *p, struct iattr *attr, int tag)
+ {
+ if (attr->ia_valid & ATTR_MODE) {
+ *p++ = xdr_one;
+@@ -185,15 +186,17 @@ xdr_encode_sattr(__be32 *p, struct iattr
+ } else {
+ *p++ = xdr_zero;
+ }
+- if (attr->ia_valid & ATTR_UID) {
++ if (attr->ia_valid & ATTR_UID ||
++ (tag && (attr->ia_valid & ATTR_TAG))) {
+ *p++ = xdr_one;
+- *p++ = htonl(attr->ia_uid);
++ *p++ = htonl(TAGINO_UID(tag, attr->ia_uid, attr->ia_tag));
+ } else {
+ *p++ = xdr_zero;
+ }
+- if (attr->ia_valid & ATTR_GID) {
++ if (attr->ia_valid & ATTR_GID ||
++ (tag && (attr->ia_valid & ATTR_TAG))) {
+ *p++ = xdr_one;
+- *p++ = htonl(attr->ia_gid);
++ *p++ = htonl(TAGINO_GID(tag, attr->ia_gid, attr->ia_tag));
+ } else {
+ *p++ = xdr_zero;
+ }
+@@ -280,7 +283,8 @@ static int
+ nfs3_xdr_sattrargs(struct rpc_rqst *req, __be32 *p, struct nfs3_sattrargs *args)
+ {
+ p = xdr_encode_fhandle(p, args->fh);
+- p = xdr_encode_sattr(p, args->sattr);
++ p = xdr_encode_sattr(p, args->sattr,
++ req->rq_task->tk_client->cl_tag);
+ *p++ = htonl(args->guard);
+ if (args->guard)
+ p = xdr_encode_time3(p, &args->guardtime);
+@@ -385,7 +389,8 @@ nfs3_xdr_createargs(struct rpc_rqst *req
+ *p++ = args->verifier[0];
+ *p++ = args->verifier[1];
+ } else
+- p = xdr_encode_sattr(p, args->sattr);
++ p = xdr_encode_sattr(p, args->sattr,
++ req->rq_task->tk_client->cl_tag);
+
+ req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
+ return 0;
+@@ -399,7 +404,8 @@ nfs3_xdr_mkdirargs(struct rpc_rqst *req,
+ {
+ p = xdr_encode_fhandle(p, args->fh);
+ p = xdr_encode_array(p, args->name, args->len);
+- p = xdr_encode_sattr(p, args->sattr);
++ p = xdr_encode_sattr(p, args->sattr,
++ req->rq_task->tk_client->cl_tag);
+ req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
+ return 0;
+ }
+@@ -412,7 +418,8 @@ nfs3_xdr_symlinkargs(struct rpc_rqst *re
+ {
+ p = xdr_encode_fhandle(p, args->fromfh);
+ p = xdr_encode_array(p, args->fromname, args->fromlen);
+- p = xdr_encode_sattr(p, args->sattr);
++ p = xdr_encode_sattr(p, args->sattr,
++ req->rq_task->tk_client->cl_tag);
+ *p++ = htonl(args->pathlen);
+ req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
+
+@@ -430,7 +437,8 @@ nfs3_xdr_mknodargs(struct rpc_rqst *req,
+ p = xdr_encode_fhandle(p, args->fh);
+ p = xdr_encode_array(p, args->name, args->len);
+ *p++ = htonl(args->type);
+- p = xdr_encode_sattr(p, args->sattr);
++ p = xdr_encode_sattr(p, args->sattr,
++ req->rq_task->tk_client->cl_tag);
+ if (args->type == NF3CHR || args->type == NF3BLK) {
+ *p++ = htonl(MAJOR(args->rdev));
+ *p++ = htonl(MINOR(args->rdev));
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/nfsroot.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/nfsroot.c
+--- linux-2.6.31.6/fs/nfs/nfsroot.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/nfsroot.c 2009-09-10 16:11:43.000000000 +0200
+@@ -122,12 +122,12 @@ static int mount_port __initdata = 0; /
+ enum {
+ /* Options that take integer arguments */
+ Opt_port, Opt_rsize, Opt_wsize, Opt_timeo, Opt_retrans, Opt_acregmin,
+- Opt_acregmax, Opt_acdirmin, Opt_acdirmax,
++ Opt_acregmax, Opt_acdirmin, Opt_acdirmax, Opt_tagid,
+ /* Options that take no arguments */
+ Opt_soft, Opt_hard, Opt_intr,
+ Opt_nointr, Opt_posix, Opt_noposix, Opt_cto, Opt_nocto, Opt_ac,
+ Opt_noac, Opt_lock, Opt_nolock, Opt_v2, Opt_v3, Opt_udp, Opt_tcp,
+- Opt_acl, Opt_noacl,
++ Opt_acl, Opt_noacl, Opt_tag, Opt_notag,
+ /* Error token */
+ Opt_err
+ };
+@@ -164,6 +164,9 @@ static const match_table_t tokens __init
+ {Opt_tcp, "tcp"},
+ {Opt_acl, "acl"},
+ {Opt_noacl, "noacl"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_err, NULL}
+
+ };
+@@ -275,6 +278,20 @@ static int __init root_nfs_parse(char *n
+ case Opt_noacl:
+ nfs_data.flags |= NFS_MOUNT_NOACL;
+ break;
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ nfs_data.flags |= NFS_MOUNT_TAGGED;
++ break;
++ case Opt_notag:
++ nfs_data.flags &= ~NFS_MOUNT_TAGGED;
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ nfs_data.flags |= NFS_MOUNT_TAGGED;
++ break;
++#endif
+ default:
+ printk(KERN_WARNING "Root-NFS: unknown "
+ "option: %s\n", p);
+diff -NurpP --minimal linux-2.6.31.6/fs/nfs/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/super.c
+--- linux-2.6.31.6/fs/nfs/super.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfs/super.c 2009-11-12 12:26:38.000000000 +0100
+@@ -53,6 +53,7 @@
+ #include <linux/nfs_xdr.h>
+ #include <linux/magic.h>
+ #include <linux/parser.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/system.h>
+ #include <asm/uaccess.h>
+@@ -546,6 +547,7 @@ static void nfs_show_mount_options(struc
+ { NFS_MOUNT_NORDIRPLUS, ",nordirplus", "" },
+ { NFS_MOUNT_UNSHARED, ",nosharecache", "" },
+ { NFS_MOUNT_NORESVPORT, ",noresvport", "" },
++ { NFS_MOUNT_TAGGED, ",tag", "" },
+ { 0, NULL, NULL }
+ };
+ const struct proc_nfs_info *nfs_infop;
+diff -NurpP --minimal linux-2.6.31.6/fs/nfsd/auth.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/auth.c
+--- linux-2.6.31.6/fs/nfsd/auth.c 2009-03-24 14:22:26.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/auth.c 2009-09-10 16:11:43.000000000 +0200
+@@ -10,6 +10,7 @@
+ #include <linux/sunrpc/svcauth.h>
+ #include <linux/nfsd/nfsd.h>
+ #include <linux/nfsd/export.h>
++#include <linux/vs_tag.h>
+ #include "auth.h"
+
+ int nfsexp_flags(struct svc_rqst *rqstp, struct svc_export *exp)
+@@ -42,6 +43,9 @@ int nfsd_setuser(struct svc_rqst *rqstp,
+
+ new->fsuid = rqstp->rq_cred.cr_uid;
+ new->fsgid = rqstp->rq_cred.cr_gid;
++ /* FIXME: this desperately needs a tag :)
++ new->xid = (xid_t)INOTAG_TAG(DX_TAG_NFSD, cred.cr_uid, cred.cr_gid, 0);
++ */
+
+ rqgi = rqstp->rq_cred.cr_group_info;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/nfsd/nfs3xdr.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfs3xdr.c
+--- linux-2.6.31.6/fs/nfsd/nfs3xdr.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfs3xdr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -21,6 +21,7 @@
+ #include <linux/sunrpc/svc.h>
+ #include <linux/nfsd/nfsd.h>
+ #include <linux/nfsd/xdr3.h>
++#include <linux/vs_tag.h>
+ #include "auth.h"
+
+ #define NFSDDBG_FACILITY NFSDDBG_XDR
+@@ -108,6 +109,8 @@ static __be32 *
+ decode_sattr3(__be32 *p, struct iattr *iap)
+ {
+ u32 tmp;
++ uid_t uid = 0;
++ gid_t gid = 0;
+
+ iap->ia_valid = 0;
+
+@@ -117,12 +120,15 @@ decode_sattr3(__be32 *p, struct iattr *i
+ }
+ if (*p++) {
+ iap->ia_valid |= ATTR_UID;
+- iap->ia_uid = ntohl(*p++);
++ uid = ntohl(*p++);
+ }
+ if (*p++) {
+ iap->ia_valid |= ATTR_GID;
+- iap->ia_gid = ntohl(*p++);
++ gid = ntohl(*p++);
+ }
++ iap->ia_uid = INOTAG_UID(DX_TAG_NFSD, uid, gid);
++ iap->ia_gid = INOTAG_GID(DX_TAG_NFSD, uid, gid);
++ iap->ia_tag = INOTAG_TAG(DX_TAG_NFSD, uid, gid, 0);
+ if (*p++) {
+ u64 newsize;
+
+@@ -178,8 +184,12 @@ encode_fattr3(struct svc_rqst *rqstp, __
+ *p++ = htonl(nfs3_ftypes[(stat->mode & S_IFMT) >> 12]);
+ *p++ = htonl((u32) stat->mode);
+ *p++ = htonl((u32) stat->nlink);
+- *p++ = htonl((u32) nfsd_ruid(rqstp, stat->uid));
+- *p++ = htonl((u32) nfsd_rgid(rqstp, stat->gid));
++ *p++ = htonl((u32) nfsd_ruid(rqstp,
++ TAGINO_UID(0 /* FIXME: DX_TAG(dentry->d_inode) */,
++ stat->uid, stat->tag)));
++ *p++ = htonl((u32) nfsd_rgid(rqstp,
++ TAGINO_GID(0 /* FIXME: DX_TAG(dentry->d_inode) */,
++ stat->gid, stat->tag)));
+ if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
+ p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
+ } else {
+diff -NurpP --minimal linux-2.6.31.6/fs/nfsd/nfs4xdr.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfs4xdr.c
+--- linux-2.6.31.6/fs/nfsd/nfs4xdr.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfs4xdr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -57,6 +57,7 @@
+ #include <linux/nfs4_acl.h>
+ #include <linux/sunrpc/gss_api.h>
+ #include <linux/sunrpc/svcauth_gss.h>
++#include <linux/vs_tag.h>
+
+ #define NFSDDBG_FACILITY NFSDDBG_XDR
+
+@@ -2052,14 +2053,18 @@ out_acl:
+ WRITE32(stat.nlink);
+ }
+ if (bmval1 & FATTR4_WORD1_OWNER) {
+- status = nfsd4_encode_user(rqstp, stat.uid, &p, &buflen);
++ status = nfsd4_encode_user(rqstp,
++ TAGINO_UID(DX_TAG(dentry->d_inode),
++ stat.uid, stat.tag), &p, &buflen);
+ if (status == nfserr_resource)
+ goto out_resource;
+ if (status)
+ goto out;
+ }
+ if (bmval1 & FATTR4_WORD1_OWNER_GROUP) {
+- status = nfsd4_encode_group(rqstp, stat.gid, &p, &buflen);
++ status = nfsd4_encode_group(rqstp,
++ TAGINO_GID(DX_TAG(dentry->d_inode),
++ stat.gid, stat.tag), &p, &buflen);
+ if (status == nfserr_resource)
+ goto out_resource;
+ if (status)
+diff -NurpP --minimal linux-2.6.31.6/fs/nfsd/nfsxdr.c linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfsxdr.c
+--- linux-2.6.31.6/fs/nfsd/nfsxdr.c 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/nfsd/nfsxdr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -15,6 +15,7 @@
+ #include <linux/nfsd/nfsd.h>
+ #include <linux/nfsd/xdr.h>
+ #include <linux/mm.h>
++#include <linux/vs_tag.h>
+ #include "auth.h"
+
+ #define NFSDDBG_FACILITY NFSDDBG_XDR
+@@ -98,6 +99,8 @@ static __be32 *
+ decode_sattr(__be32 *p, struct iattr *iap)
+ {
+ u32 tmp, tmp1;
++ uid_t uid = 0;
++ gid_t gid = 0;
+
+ iap->ia_valid = 0;
+
+@@ -111,12 +114,15 @@ decode_sattr(__be32 *p, struct iattr *ia
+ }
+ if ((tmp = ntohl(*p++)) != (u32)-1) {
+ iap->ia_valid |= ATTR_UID;
+- iap->ia_uid = tmp;
++ uid = tmp;
+ }
+ if ((tmp = ntohl(*p++)) != (u32)-1) {
+ iap->ia_valid |= ATTR_GID;
+- iap->ia_gid = tmp;
++ gid = tmp;
+ }
++ iap->ia_uid = INOTAG_UID(DX_TAG_NFSD, uid, gid);
++ iap->ia_gid = INOTAG_GID(DX_TAG_NFSD, uid, gid);
++ iap->ia_tag = INOTAG_TAG(DX_TAG_NFSD, uid, gid, 0);
+ if ((tmp = ntohl(*p++)) != (u32)-1) {
+ iap->ia_valid |= ATTR_SIZE;
+ iap->ia_size = tmp;
+@@ -161,8 +167,10 @@ encode_fattr(struct svc_rqst *rqstp, __b
+ *p++ = htonl(nfs_ftypes[type >> 12]);
+ *p++ = htonl((u32) stat->mode);
+ *p++ = htonl((u32) stat->nlink);
+- *p++ = htonl((u32) nfsd_ruid(rqstp, stat->uid));
+- *p++ = htonl((u32) nfsd_rgid(rqstp, stat->gid));
++ *p++ = htonl((u32) nfsd_ruid(rqstp,
++ TAGINO_UID(DX_TAG(dentry->d_inode), stat->uid, stat->tag)));
++ *p++ = htonl((u32) nfsd_rgid(rqstp,
++ TAGINO_GID(DX_TAG(dentry->d_inode), stat->gid, stat->tag)));
+
+ if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
+ *p++ = htonl(NFS_MAXPATHLEN);
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/dlm/dlmfs.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlm/dlmfs.c
+--- linux-2.6.31.6/fs/ocfs2/dlm/dlmfs.c 2009-03-24 14:22:27.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlm/dlmfs.c 2009-09-10 16:11:43.000000000 +0200
+@@ -43,6 +43,7 @@
+ #include <linux/init.h>
+ #include <linux/string.h>
+ #include <linux/backing-dev.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/uaccess.h>
+
+@@ -341,6 +342,7 @@ static struct inode *dlmfs_get_root_inod
+ inode->i_mode = mode;
+ inode->i_uid = current_fsuid();
+ inode->i_gid = current_fsgid();
++ inode->i_tag = dx_current_fstag(sb);
+ inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info;
+ inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+ inc_nlink(inode);
+@@ -366,6 +368,7 @@ static struct inode *dlmfs_get_inode(str
+ inode->i_mode = mode;
+ inode->i_uid = current_fsuid();
+ inode->i_gid = current_fsgid();
++ inode->i_tag = dx_current_fstag(sb);
+ inode->i_mapping->backing_dev_info = &dlmfs_backing_dev_info;
+ inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/dlmglue.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlmglue.c
+--- linux-2.6.31.6/fs/ocfs2/dlmglue.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlmglue.c 2009-09-10 16:11:43.000000000 +0200
+@@ -1960,6 +1960,7 @@ static void __ocfs2_stuff_meta_lvb(struc
+ lvb->lvb_iclusters = cpu_to_be32(oi->ip_clusters);
+ lvb->lvb_iuid = cpu_to_be32(inode->i_uid);
+ lvb->lvb_igid = cpu_to_be32(inode->i_gid);
++ lvb->lvb_itag = cpu_to_be16(inode->i_tag);
+ lvb->lvb_imode = cpu_to_be16(inode->i_mode);
+ lvb->lvb_inlink = cpu_to_be16(inode->i_nlink);
+ lvb->lvb_iatime_packed =
+@@ -2014,6 +2015,7 @@ static void ocfs2_refresh_inode_from_lvb
+
+ inode->i_uid = be32_to_cpu(lvb->lvb_iuid);
+ inode->i_gid = be32_to_cpu(lvb->lvb_igid);
++ inode->i_tag = be16_to_cpu(lvb->lvb_itag);
+ inode->i_mode = be16_to_cpu(lvb->lvb_imode);
+ inode->i_nlink = be16_to_cpu(lvb->lvb_inlink);
+ ocfs2_unpack_timespec(&inode->i_atime,
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/dlmglue.h linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlmglue.h
+--- linux-2.6.31.6/fs/ocfs2/dlmglue.h 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/dlmglue.h 2009-09-10 16:11:43.000000000 +0200
+@@ -46,7 +46,8 @@ struct ocfs2_meta_lvb {
+ __be16 lvb_inlink;
+ __be32 lvb_iattr;
+ __be32 lvb_igeneration;
+- __be32 lvb_reserved2;
++ __be16 lvb_itag;
++ __be16 lvb_reserved2;
+ };
+
+ #define OCFS2_QINFO_LVB_VERSION 1
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/file.c
+--- linux-2.6.31.6/fs/ocfs2/file.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/file.c 2009-10-06 19:45:13.000000000 +0200
+@@ -914,13 +914,15 @@ int ocfs2_setattr(struct dentry *dentry,
+ mlog(0, "uid change: %d\n", attr->ia_uid);
+ if (attr->ia_valid & ATTR_GID)
+ mlog(0, "gid change: %d\n", attr->ia_gid);
++ if (attr->ia_valid & ATTR_TAG)
++ mlog(0, "tag change: %d\n", attr->ia_tag);
+ if (attr->ia_valid & ATTR_SIZE)
+ mlog(0, "size change...\n");
+ if (attr->ia_valid & (ATTR_ATIME | ATTR_MTIME | ATTR_CTIME))
+ mlog(0, "time change...\n");
+
+ #define OCFS2_VALID_ATTRS (ATTR_ATIME | ATTR_MTIME | ATTR_CTIME | ATTR_SIZE \
+- | ATTR_GID | ATTR_UID | ATTR_MODE)
++ | ATTR_GID | ATTR_UID | ATTR_TAG | ATTR_MODE)
+ if (!(attr->ia_valid & OCFS2_VALID_ATTRS)) {
+ mlog(0, "can't handle attrs: 0x%x\n", attr->ia_valid);
+ return 0;
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/inode.c
+--- linux-2.6.31.6/fs/ocfs2/inode.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/inode.c 2009-10-06 19:45:13.000000000 +0200
+@@ -29,6 +29,7 @@
+ #include <linux/highmem.h>
+ #include <linux/pagemap.h>
+ #include <linux/quotaops.h>
++#include <linux/vs_tag.h>
+
+ #include <asm/byteorder.h>
+
+@@ -78,11 +79,13 @@ void ocfs2_set_inode_flags(struct inode
+ {
+ unsigned int flags = OCFS2_I(inode)->ip_attr;
+
+- inode->i_flags &= ~(S_IMMUTABLE |
++ inode->i_flags &= ~(S_IMMUTABLE | S_IXUNLINK |
+ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+ if (flags & OCFS2_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
++ if (flags & OCFS2_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
+
+ if (flags & OCFS2_SYNC_FL)
+ inode->i_flags |= S_SYNC;
+@@ -92,25 +95,44 @@ void ocfs2_set_inode_flags(struct inode
+ inode->i_flags |= S_NOATIME;
+ if (flags & OCFS2_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
++
++ inode->i_vflags &= ~(V_BARRIER | V_COW);
++
++ if (flags & OCFS2_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ if (flags & OCFS2_COW_FL)
++ inode->i_vflags |= V_COW;
+ }
+
+ /* Propagate flags from i_flags to OCFS2_I(inode)->ip_attr */
+ void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi)
+ {
+ unsigned int flags = oi->vfs_inode.i_flags;
++ unsigned int vflags = oi->vfs_inode.i_vflags;
++
++ oi->ip_attr &= ~(OCFS2_SYNC_FL | OCFS2_APPEND_FL |
++ OCFS2_IMMUTABLE_FL | OCFS2_IXUNLINK_FL |
++ OCFS2_NOATIME_FL | OCFS2_DIRSYNC_FL |
++ OCFS2_BARRIER_FL | OCFS2_COW_FL);
++
++ if (flags & S_IMMUTABLE)
++ oi->ip_attr |= OCFS2_IMMUTABLE_FL;
++ if (flags & S_IXUNLINK)
++ oi->ip_attr |= OCFS2_IXUNLINK_FL;
+
+- oi->ip_attr &= ~(OCFS2_SYNC_FL|OCFS2_APPEND_FL|
+- OCFS2_IMMUTABLE_FL|OCFS2_NOATIME_FL|OCFS2_DIRSYNC_FL);
+ if (flags & S_SYNC)
+ oi->ip_attr |= OCFS2_SYNC_FL;
+ if (flags & S_APPEND)
+ oi->ip_attr |= OCFS2_APPEND_FL;
+- if (flags & S_IMMUTABLE)
+- oi->ip_attr |= OCFS2_IMMUTABLE_FL;
+ if (flags & S_NOATIME)
+ oi->ip_attr |= OCFS2_NOATIME_FL;
+ if (flags & S_DIRSYNC)
+ oi->ip_attr |= OCFS2_DIRSYNC_FL;
++
++ if (vflags & V_BARRIER)
++ oi->ip_attr |= OCFS2_BARRIER_FL;
++ if (vflags & V_COW)
++ oi->ip_attr |= OCFS2_COW_FL;
+ }
+
+ struct inode *ocfs2_ilookup(struct super_block *sb, u64 blkno)
+@@ -245,6 +267,8 @@ void ocfs2_populate_inode(struct inode *
+ struct super_block *sb;
+ struct ocfs2_super *osb;
+ int use_plocks = 1;
++ uid_t uid;
++ gid_t gid;
+
+ mlog_entry("(0x%p, size:%llu)\n", inode,
+ (unsigned long long)le64_to_cpu(fe->i_size));
+@@ -276,8 +300,12 @@ void ocfs2_populate_inode(struct inode *
+ inode->i_generation = le32_to_cpu(fe->i_generation);
+ inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));
+ inode->i_mode = le16_to_cpu(fe->i_mode);
+- inode->i_uid = le32_to_cpu(fe->i_uid);
+- inode->i_gid = le32_to_cpu(fe->i_gid);
++ uid = le32_to_cpu(fe->i_uid);
++ gid = le32_to_cpu(fe->i_gid);
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid,
++ /* le16_to_cpu(raw_inode->i_raw_tag)i */ 0);
+
+ /* Fast symlinks will have i_size but no allocated clusters. */
+ if (S_ISLNK(inode->i_mode) && !fe->i_clusters)
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/inode.h linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/inode.h
+--- linux-2.6.31.6/fs/ocfs2/inode.h 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/inode.h 2009-10-07 01:26:15.000000000 +0200
+@@ -152,6 +152,7 @@ struct buffer_head *ocfs2_bread(struct i
+
+ void ocfs2_set_inode_flags(struct inode *inode);
+ void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi);
++int ocfs2_sync_flags(struct inode *inode, int, int);
+
+ static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode)
+ {
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ioctl.c
+--- linux-2.6.31.6/fs/ocfs2/ioctl.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ioctl.c 2009-10-07 04:20:18.000000000 +0200
+@@ -41,7 +41,41 @@ static int ocfs2_get_inode_attr(struct i
+ return status;
+ }
+
+-static int ocfs2_set_inode_attr(struct inode *inode, unsigned flags,
++int ocfs2_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
++ struct buffer_head *bh = NULL;
++ handle_t *handle = NULL;
++ int status;
++
++ status = ocfs2_inode_lock(inode, &bh, 1);
++ if (status < 0) {
++ mlog_errno(status);
++ return status;
++ }
++ handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
++ if (IS_ERR(handle)) {
++ status = PTR_ERR(handle);
++ mlog_errno(status);
++ goto bail_unlock;
++ }
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ ocfs2_get_inode_flags(OCFS2_I(inode));
++
++ status = ocfs2_mark_inode_dirty(handle, inode, bh);
++ if (status < 0)
++ mlog_errno(status);
++
++ ocfs2_commit_trans(osb, handle);
++bail_unlock:
++ ocfs2_inode_unlock(inode, 1);
++ brelse(bh);
++ return status;
++}
++
++int ocfs2_set_inode_attr(struct inode *inode, unsigned flags,
+ unsigned mask)
+ {
+ struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode);
+@@ -66,6 +100,11 @@ static int ocfs2_set_inode_attr(struct i
+ if (!S_ISDIR(inode->i_mode))
+ flags &= ~OCFS2_DIRSYNC_FL;
+
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ goto bail_unlock;
++ }
++
+ handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
+ if (IS_ERR(handle)) {
+ status = PTR_ERR(handle);
+@@ -107,6 +146,7 @@ bail:
+ return status;
+ }
+
++
+ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ {
+ struct inode *inode = filp->f_path.dentry->d_inode;
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/namei.c
+--- linux-2.6.31.6/fs/ocfs2/namei.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/namei.c 2009-10-06 19:45:13.000000000 +0200
+@@ -41,6 +41,7 @@
+ #include <linux/slab.h>
+ #include <linux/highmem.h>
+ #include <linux/quotaops.h>
++#include <linux/vs_tag.h>
+
+ #define MLOG_MASK_PREFIX ML_NAMEI
+ #include <cluster/masklog.h>
+@@ -478,6 +479,7 @@ static int ocfs2_mknod_locked(struct ocf
+ u64 fe_blkno = 0;
+ u16 suballoc_bit;
+ u16 feat;
++ tag_t tag;
+
+ mlog_entry("(0x%p, 0x%p, %d, %lu, '%.*s')\n", dir, dentry,
+ inode->i_mode, (unsigned long)dev, dentry->d_name.len,
+@@ -524,8 +526,11 @@ static int ocfs2_mknod_locked(struct ocf
+ fe->i_blkno = cpu_to_le64(fe_blkno);
+ fe->i_suballoc_bit = cpu_to_le16(suballoc_bit);
+ fe->i_suballoc_slot = cpu_to_le16(inode_ac->ac_alloc_slot);
+- fe->i_uid = cpu_to_le32(inode->i_uid);
+- fe->i_gid = cpu_to_le32(inode->i_gid);
++
++ tag = dx_current_fstag(osb->sb);
++ fe->i_uid = cpu_to_le32(TAGINO_UID(DX_TAG(inode), inode->i_uid, tag));
++ fe->i_gid = cpu_to_le32(TAGINO_GID(DX_TAG(inode), inode->i_gid, tag));
++ inode->i_tag = tag;
+ fe->i_mode = cpu_to_le16(inode->i_mode);
+ if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
+ fe->id1.dev1.i_rdev = cpu_to_le64(huge_encode_dev(dev));
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/ocfs2_fs.h linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ocfs2_fs.h
+--- linux-2.6.31.6/fs/ocfs2/ocfs2_fs.h 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ocfs2_fs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -225,18 +225,23 @@
+ #define OCFS2_INDEXED_DIR_FL (0x0008)
+
+ /* Inode attributes, keep in sync with EXT2 */
+-#define OCFS2_SECRM_FL (0x00000001) /* Secure deletion */
+-#define OCFS2_UNRM_FL (0x00000002) /* Undelete */
+-#define OCFS2_COMPR_FL (0x00000004) /* Compress file */
+-#define OCFS2_SYNC_FL (0x00000008) /* Synchronous updates */
+-#define OCFS2_IMMUTABLE_FL (0x00000010) /* Immutable file */
+-#define OCFS2_APPEND_FL (0x00000020) /* writes to file may only append */
+-#define OCFS2_NODUMP_FL (0x00000040) /* do not dump file */
+-#define OCFS2_NOATIME_FL (0x00000080) /* do not update atime */
+-#define OCFS2_DIRSYNC_FL (0x00010000) /* dirsync behaviour (directories only) */
++#define OCFS2_SECRM_FL FS_SECRM_FL /* Secure deletion */
++#define OCFS2_UNRM_FL FS_UNRM_FL /* Undelete */
++#define OCFS2_COMPR_FL FS_COMPR_FL /* Compress file */
++#define OCFS2_SYNC_FL FS_SYNC_FL /* Synchronous updates */
++#define OCFS2_IMMUTABLE_FL FS_IMMUTABLE_FL /* Immutable file */
++#define OCFS2_APPEND_FL FS_APPEND_FL /* writes to file may only append */
++#define OCFS2_NODUMP_FL FS_NODUMP_FL /* do not dump file */
++#define OCFS2_NOATIME_FL FS_NOATIME_FL /* do not update atime */
+
+-#define OCFS2_FL_VISIBLE (0x000100FF) /* User visible flags */
+-#define OCFS2_FL_MODIFIABLE (0x000100FF) /* User modifiable flags */
++#define OCFS2_DIRSYNC_FL FS_DIRSYNC_FL /* dirsync behaviour (directories only) */
++#define OCFS2_IXUNLINK_FL FS_IXUNLINK_FL /* Immutable invert on unlink */
++
++#define OCFS2_BARRIER_FL FS_BARRIER_FL /* Barrier for chroot() */
++#define OCFS2_COW_FL FS_COW_FL /* Copy on Write marker */
++
++#define OCFS2_FL_VISIBLE (0x010300FF) /* User visible flags */
++#define OCFS2_FL_MODIFIABLE (0x010300FF) /* User modifiable flags */
+
+ /*
+ * Extent record flags (e_node.leaf.flags)
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/ocfs2.h linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ocfs2.h
+--- linux-2.6.31.6/fs/ocfs2/ocfs2.h 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/ocfs2.h 2009-09-10 16:11:43.000000000 +0200
+@@ -222,6 +222,7 @@ enum ocfs2_mount_options
+ OCFS2_MOUNT_POSIX_ACL = 1 << 8, /* POSIX access control lists */
+ OCFS2_MOUNT_USRQUOTA = 1 << 9, /* We support user quotas */
+ OCFS2_MOUNT_GRPQUOTA = 1 << 10, /* We support group quotas */
++ OCFS2_MOUNT_TAGGED = 1 << 11, /* use tagging */
+ };
+
+ #define OCFS2_OSB_SOFT_RO 0x0001
+diff -NurpP --minimal linux-2.6.31.6/fs/ocfs2/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/super.c
+--- linux-2.6.31.6/fs/ocfs2/super.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/ocfs2/super.c 2009-10-06 22:50:39.000000000 +0200
+@@ -173,6 +173,7 @@ enum {
+ Opt_noacl,
+ Opt_usrquota,
+ Opt_grpquota,
++ Opt_tag, Opt_notag, Opt_tagid,
+ Opt_err,
+ };
+
+@@ -199,6 +200,9 @@ static const match_table_t tokens = {
+ {Opt_noacl, "noacl"},
+ {Opt_usrquota, "usrquota"},
+ {Opt_grpquota, "grpquota"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
++ {Opt_tagid, "tagid=%u"},
+ {Opt_err, NULL}
+ };
+
+@@ -605,6 +609,13 @@ static int ocfs2_remount(struct super_bl
+ goto out;
+ }
+
++ if ((osb->s_mount_opt & OCFS2_MOUNT_TAGGED) !=
++ (parsed_options.mount_opt & OCFS2_MOUNT_TAGGED)) {
++ ret = -EINVAL;
++ mlog(ML_ERROR, "Cannot change tagging on remount\n");
++ goto out;
++ }
++
+ if ((osb->s_mount_opt & OCFS2_MOUNT_HB_LOCAL) !=
+ (parsed_options.mount_opt & OCFS2_MOUNT_HB_LOCAL)) {
+ ret = -EINVAL;
+@@ -1146,6 +1157,9 @@ static int ocfs2_fill_super(struct super
+
+ ocfs2_complete_mount_recovery(osb);
+
++ if (osb->s_mount_opt & OCFS2_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED;
++
+ if (ocfs2_mount_local(osb))
+ snprintf(nodestr, sizeof(nodestr), "local");
+ else
+@@ -1424,6 +1438,20 @@ static int ocfs2_parse_options(struct su
+ printk(KERN_INFO "ocfs2 (no)acl options not supported\n");
+ break;
+ #endif
++#ifndef CONFIG_TAGGING_NONE
++ case Opt_tag:
++ mopt->mount_opt |= OCFS2_MOUNT_TAGGED;
++ break;
++ case Opt_notag:
++ mopt->mount_opt &= ~OCFS2_MOUNT_TAGGED;
++ break;
++#endif
++#ifdef CONFIG_PROPAGATE
++ case Opt_tagid:
++ /* use args[0] */
++ mopt->mount_opt |= OCFS2_MOUNT_TAGGED;
++ break;
++#endif
+ default:
+ mlog(ML_ERROR,
+ "Unrecognized mount option \"%s\" "
+diff -NurpP --minimal linux-2.6.31.6/fs/open.c linux-2.6.31.6-vs2.3.0.36.24/fs/open.c
+--- linux-2.6.31.6/fs/open.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/open.c 2009-10-15 03:54:42.000000000 +0200
+@@ -30,22 +30,30 @@
+ #include <linux/audit.h>
+ #include <linux/falloc.h>
+ #include <linux/fs_struct.h>
++#include <linux/vs_base.h>
++#include <linux/vs_limit.h>
++#include <linux/vs_tag.h>
++#include <linux/vs_cowbl.h>
+
+ int vfs_statfs(struct dentry *dentry, struct kstatfs *buf)
+ {
+ int retval = -ENODEV;
+
+ if (dentry) {
++ struct super_block *sb = dentry->d_sb;
++
+ retval = -ENOSYS;
+- if (dentry->d_sb->s_op->statfs) {
++ if (sb->s_op->statfs) {
+ memset(buf, 0, sizeof(*buf));
+ retval = security_sb_statfs(dentry);
+ if (retval)
+ return retval;
+- retval = dentry->d_sb->s_op->statfs(dentry, buf);
++ retval = sb->s_op->statfs(dentry, buf);
+ if (retval == 0 && buf->f_frsize == 0)
+ buf->f_frsize = buf->f_bsize;
+ }
++ if (!vx_check(0, VS_ADMIN|VS_WATCH))
++ vx_vsi_statfs(sb, buf);
+ }
+ return retval;
+ }
+@@ -639,6 +647,10 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
+ error = user_path_at(dfd, filename, LOOKUP_FOLLOW, &path);
+ if (error)
+ goto out;
++
++ error = cow_check_and_break(&path);
++ if (error)
++ goto dput_and_out;
+ inode = path.dentry->d_inode;
+
+ error = mnt_want_write(path.mnt);
+@@ -672,11 +684,11 @@ static int chown_common(struct dentry *
+ newattrs.ia_valid = ATTR_CTIME;
+ if (user != (uid_t) -1) {
+ newattrs.ia_valid |= ATTR_UID;
+- newattrs.ia_uid = user;
++ newattrs.ia_uid = dx_map_uid(user);
+ }
+ if (group != (gid_t) -1) {
+ newattrs.ia_valid |= ATTR_GID;
+- newattrs.ia_gid = group;
++ newattrs.ia_gid = dx_map_gid(group);
+ }
+ if (!S_ISDIR(inode->i_mode))
+ newattrs.ia_valid |=
+@@ -699,7 +711,11 @@ SYSCALL_DEFINE3(chown, const char __user
+ error = mnt_want_write(path.mnt);
+ if (error)
+ goto out_release;
+- error = chown_common(path.dentry, user, group);
++#ifdef CONFIG_VSERVER_COWBL
++ error = cow_check_and_break(&path);
++ if (!error)
++#endif
++ error = chown_common(path.dentry, user, group);
+ mnt_drop_write(path.mnt);
+ out_release:
+ path_put(&path);
+@@ -724,7 +740,11 @@ SYSCALL_DEFINE5(fchownat, int, dfd, cons
+ error = mnt_want_write(path.mnt);
+ if (error)
+ goto out_release;
+- error = chown_common(path.dentry, user, group);
++#ifdef CONFIG_VSERVER_COWBL
++ error = cow_check_and_break(&path);
++ if (!error)
++#endif
++ error = chown_common(path.dentry, user, group);
+ mnt_drop_write(path.mnt);
+ out_release:
+ path_put(&path);
+@@ -743,7 +763,11 @@ SYSCALL_DEFINE3(lchown, const char __use
+ error = mnt_want_write(path.mnt);
+ if (error)
+ goto out_release;
+- error = chown_common(path.dentry, user, group);
++#ifdef CONFIG_VSERVER_COWBL
++ error = cow_check_and_break(&path);
++ if (!error)
++#endif
++ error = chown_common(path.dentry, user, group);
+ mnt_drop_write(path.mnt);
+ out_release:
+ path_put(&path);
+@@ -987,6 +1011,7 @@ static void __put_unused_fd(struct files
+ __FD_CLR(fd, fdt->open_fds);
+ if (fd < files->next_fd)
+ files->next_fd = fd;
++ vx_openfd_dec(fd);
+ }
+
+ void put_unused_fd(unsigned int fd)
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/array.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/array.c
+--- linux-2.6.31.6/fs/proc/array.c 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/array.c 2009-09-10 16:11:43.000000000 +0200
+@@ -82,6 +82,8 @@
+ #include <linux/pid_namespace.h>
+ #include <linux/ptrace.h>
+ #include <linux/tracehook.h>
++#include <linux/vs_context.h>
++#include <linux/vs_network.h>
+
+ #include <asm/pgtable.h>
+ #include <asm/processor.h>
+@@ -138,8 +140,9 @@ static const char *task_state_array[] =
+ "D (disk sleep)", /* 2 */
+ "T (stopped)", /* 4 */
+ "T (tracing stop)", /* 8 */
+- "Z (zombie)", /* 16 */
+- "X (dead)" /* 32 */
++ "H (on hold)", /* 16 */
++ "Z (zombie)", /* 32 */
++ "X (dead)", /* 64 */
+ };
+
+ static inline const char *get_task_state(struct task_struct *tsk)
+@@ -166,6 +169,9 @@ static inline void task_state(struct seq
+ rcu_read_lock();
+ ppid = pid_alive(p) ?
+ task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;
++ if (unlikely(vx_current_initpid(p->pid)))
++ ppid = 0;
++
+ tpid = 0;
+ if (pid_alive(p)) {
+ struct task_struct *tracer = tracehook_tracer_task(p);
+@@ -281,7 +287,7 @@ static inline void task_sig(struct seq_f
+ }
+
+ static void render_cap_t(struct seq_file *m, const char *header,
+- kernel_cap_t *a)
++ struct vx_info *vxi, kernel_cap_t *a)
+ {
+ unsigned __capi;
+
+@@ -306,10 +312,11 @@ static inline void task_cap(struct seq_f
+ cap_bset = cred->cap_bset;
+ rcu_read_unlock();
+
+- render_cap_t(m, "CapInh:\t", &cap_inheritable);
+- render_cap_t(m, "CapPrm:\t", &cap_permitted);
+- render_cap_t(m, "CapEff:\t", &cap_effective);
+- render_cap_t(m, "CapBnd:\t", &cap_bset);
++ /* FIXME: maybe move the p->vx_info masking to __task_cred() ? */
++ render_cap_t(m, "CapInh:\t", p->vx_info, &cap_inheritable);
++ render_cap_t(m, "CapPrm:\t", p->vx_info, &cap_permitted);
++ render_cap_t(m, "CapEff:\t", p->vx_info, &cap_effective);
++ render_cap_t(m, "CapBnd:\t", p->vx_info, &cap_bset);
+ }
+
+ static inline void task_context_switch_counts(struct seq_file *m,
+@@ -321,6 +328,42 @@ static inline void task_context_switch_c
+ p->nivcsw);
+ }
+
++int proc_pid_nsproxy(struct seq_file *m, struct pid_namespace *ns,
++ struct pid *pid, struct task_struct *task)
++{
++ seq_printf(m, "Proxy:\t%p(%c)\n"
++ "Count:\t%u\n"
++ "uts:\t%p(%c)\n"
++ "ipc:\t%p(%c)\n"
++ "mnt:\t%p(%c)\n"
++ "pid:\t%p(%c)\n"
++ "net:\t%p(%c)\n",
++ task->nsproxy,
++ (task->nsproxy == init_task.nsproxy ? 'I' : '-'),
++ atomic_read(&task->nsproxy->count),
++ task->nsproxy->uts_ns,
++ (task->nsproxy->uts_ns == init_task.nsproxy->uts_ns ? 'I' : '-'),
++ task->nsproxy->ipc_ns,
++ (task->nsproxy->ipc_ns == init_task.nsproxy->ipc_ns ? 'I' : '-'),
++ task->nsproxy->mnt_ns,
++ (task->nsproxy->mnt_ns == init_task.nsproxy->mnt_ns ? 'I' : '-'),
++ task->nsproxy->pid_ns,
++ (task->nsproxy->pid_ns == init_task.nsproxy->pid_ns ? 'I' : '-'),
++ task->nsproxy->net_ns,
++ (task->nsproxy->net_ns == init_task.nsproxy->net_ns ? 'I' : '-'));
++ return 0;
++}
++
++void task_vs_id(struct seq_file *m, struct task_struct *task)
++{
++ if (task_vx_flags(task, VXF_HIDE_VINFO, 0))
++ return;
++
++ seq_printf(m, "VxID: %d\n", vx_task_xid(task));
++ seq_printf(m, "NxID: %d\n", nx_task_nid(task));
++}
++
++
+ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
+ struct pid *pid, struct task_struct *task)
+ {
+@@ -336,6 +379,7 @@ int proc_pid_status(struct seq_file *m,
+ task_sig(m, task);
+ task_cap(m, task);
+ cpuset_task_status_allowed(m, task);
++ task_vs_id(m, task);
+ #if defined(CONFIG_S390)
+ task_show_regs(m, task);
+ #endif
+@@ -452,6 +496,17 @@ static int do_task_stat(struct seq_file
+ /* convert nsec -> ticks */
+ start_time = nsec_to_clock_t(start_time);
+
++ /* fixup start time for virt uptime */
++ if (vx_flags(VXF_VIRT_UPTIME, 0)) {
++ unsigned long long bias =
++ current->vx_info->cvirt.bias_clock;
++
++ if (start_time > bias)
++ start_time -= bias;
++ else
++ start_time = 0;
++ }
++
+ seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu \
+ %lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \
+ %lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld\n",
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/base.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/base.c
+--- linux-2.6.31.6/fs/proc/base.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/base.c 2009-10-03 01:56:26.000000000 +0200
+@@ -81,6 +81,8 @@
+ #include <linux/elf.h>
+ #include <linux/pid_namespace.h>
+ #include <linux/fs_struct.h>
++#include <linux/vs_context.h>
++#include <linux/vs_network.h>
+ #include "internal.h"
+
+ /* NOTE:
+@@ -1032,10 +1034,14 @@ static ssize_t oom_adjust_write(struct f
+ task = get_proc_task(file->f_path.dentry->d_inode);
+ if (!task)
+ return -ESRCH;
+- if (oom_adjust < task->oomkilladj && !capable(CAP_SYS_RESOURCE)) {
++ if (oom_adjust < task->oomkilladj &&
++ !vx_capable(CAP_SYS_RESOURCE, VXC_OOM_ADJUST)) {
+ put_task_struct(task);
+ return -EACCES;
+ }
++ /* prevent guest processes from circumventing the oom killer */
++ if (vx_current_xid() && (oom_adjust == OOM_DISABLE))
++ oom_adjust = OOM_ADJUST_MIN;
+ task->oomkilladj = oom_adjust;
+ put_task_struct(task);
+ if (end - buffer == 0)
+@@ -1074,7 +1080,7 @@ static ssize_t proc_loginuid_write(struc
+ ssize_t length;
+ uid_t loginuid;
+
+- if (!capable(CAP_AUDIT_CONTROL))
++ if (!vx_capable(CAP_AUDIT_CONTROL, VXC_AUDIT_CONTROL))
+ return -EPERM;
+
+ if (current != pid_task(proc_pid(inode), PIDTYPE_PID))
+@@ -1441,6 +1447,8 @@ static struct inode *proc_pid_make_inode
+ inode->i_gid = cred->egid;
+ rcu_read_unlock();
+ }
++ /* procfs is xid tagged */
++ inode->i_tag = (tag_t)vx_task_xid(task);
+ security_task_to_inode(task, inode);
+
+ out:
+@@ -1991,6 +1999,13 @@ static struct dentry *proc_pident_lookup
+ if (!task)
+ goto out_no_task;
+
++ /* TODO: maybe we can come up with a generic approach? */
++ if (task_vx_flags(task, VXF_HIDE_VINFO, 0) &&
++ (dentry->d_name.len == 5) &&
++ (!memcmp(dentry->d_name.name, "vinfo", 5) ||
++ !memcmp(dentry->d_name.name, "ninfo", 5)))
++ goto out;
++
+ /*
+ * Yes, it does not scale. And it should not. Don't add
+ * new entries into /proc/<tgid>/ without very good reasons.
+@@ -2382,7 +2397,7 @@ out_iput:
+ static struct dentry *proc_base_lookup(struct inode *dir, struct dentry *dentry)
+ {
+ struct dentry *error;
+- struct task_struct *task = get_proc_task(dir);
++ struct task_struct *task = get_proc_task_real(dir);
+ const struct pid_entry *p, *last;
+
+ error = ERR_PTR(-ENOENT);
+@@ -2472,6 +2487,9 @@ static int proc_pid_personality(struct s
+ static const struct file_operations proc_task_operations;
+ static const struct inode_operations proc_task_inode_operations;
+
++extern int proc_pid_vx_info(struct task_struct *, char *);
++extern int proc_pid_nx_info(struct task_struct *, char *);
++
+ static const struct pid_entry tgid_base_stuff[] = {
+ DIR("task", S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations),
+ DIR("fd", S_IRUSR|S_IXUSR, proc_fd_inode_operations, proc_fd_operations),
+@@ -2530,6 +2548,8 @@ static const struct pid_entry tgid_base_
+ #ifdef CONFIG_CGROUPS
+ REG("cgroup", S_IRUGO, proc_cgroup_operations),
+ #endif
++ INF("vinfo", S_IRUGO, proc_pid_vx_info),
++ INF("ninfo", S_IRUGO, proc_pid_nx_info),
+ INF("oom_score", S_IRUGO, proc_oom_score),
+ REG("oom_adj", S_IRUGO|S_IWUSR, proc_oom_adjust_operations),
+ #ifdef CONFIG_AUDITSYSCALL
+@@ -2545,6 +2565,7 @@ static const struct pid_entry tgid_base_
+ #ifdef CONFIG_TASK_IO_ACCOUNTING
+ INF("io", S_IRUGO, proc_tgid_io_accounting),
+ #endif
++ ONE("nsproxy", S_IRUGO, proc_pid_nsproxy),
+ };
+
+ static int proc_tgid_base_readdir(struct file * filp,
+@@ -2741,7 +2762,7 @@ retry:
+ iter.task = NULL;
+ pid = find_ge_pid(iter.tgid, ns);
+ if (pid) {
+- iter.tgid = pid_nr_ns(pid, ns);
++ iter.tgid = pid_unmapped_nr_ns(pid, ns);
+ iter.task = pid_task(pid, PIDTYPE_PID);
+ /* What we to know is if the pid we have find is the
+ * pid of a thread_group_leader. Testing for task
+@@ -2771,7 +2792,7 @@ static int proc_pid_fill_cache(struct fi
+ struct tgid_iter iter)
+ {
+ char name[PROC_NUMBUF];
+- int len = snprintf(name, sizeof(name), "%d", iter.tgid);
++ int len = snprintf(name, sizeof(name), "%d", vx_map_tgid(iter.tgid));
+ return proc_fill_cache(filp, dirent, filldir, name, len,
+ proc_pid_instantiate, iter.task, NULL);
+ }
+@@ -2780,7 +2801,7 @@ static int proc_pid_fill_cache(struct fi
+ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
+ {
+ unsigned int nr = filp->f_pos - FIRST_PROCESS_ENTRY;
+- struct task_struct *reaper = get_proc_task(filp->f_path.dentry->d_inode);
++ struct task_struct *reaper = get_proc_task_real(filp->f_path.dentry->d_inode);
+ struct tgid_iter iter;
+ struct pid_namespace *ns;
+
+@@ -2800,6 +2821,8 @@ int proc_pid_readdir(struct file * filp,
+ iter.task;
+ iter.tgid += 1, iter = next_tgid(ns, iter)) {
+ filp->f_pos = iter.tgid + TGID_OFFSET;
++ if (!vx_proc_task_visible(iter.task))
++ continue;
+ if (proc_pid_fill_cache(filp, dirent, filldir, iter) < 0) {
+ put_task_struct(iter.task);
+ goto out;
+@@ -2946,6 +2969,8 @@ static struct dentry *proc_task_lookup(s
+ tid = name_to_int(dentry);
+ if (tid == ~0U)
+ goto out;
++ if (vx_current_initpid(tid))
++ goto out;
+
+ ns = dentry->d_sb->s_fs_info;
+ rcu_read_lock();
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/generic.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/generic.c
+--- linux-2.6.31.6/fs/proc/generic.c 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/generic.c 2009-09-10 16:11:43.000000000 +0200
+@@ -20,6 +20,7 @@
+ #include <linux/bitops.h>
+ #include <linux/spinlock.h>
+ #include <linux/completion.h>
++#include <linux/vserver/inode.h>
+ #include <asm/uaccess.h>
+
+ #include "internal.h"
+@@ -425,6 +426,8 @@ struct dentry *proc_lookup_de(struct pro
+ for (de = de->subdir; de ; de = de->next) {
+ if (de->namelen != dentry->d_name.len)
+ continue;
++ if (!vx_hide_check(0, de->vx_flags))
++ continue;
+ if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
+ unsigned int ino;
+
+@@ -433,6 +436,8 @@ struct dentry *proc_lookup_de(struct pro
+ spin_unlock(&proc_subdir_lock);
+ error = -EINVAL;
+ inode = proc_get_inode(dir->i_sb, ino, de);
++ /* generic proc entries belong to the host */
++ inode->i_tag = 0;
+ goto out_unlock;
+ }
+ }
+@@ -510,6 +515,8 @@ int proc_readdir_de(struct proc_dir_entr
+
+ /* filldir passes info to user space */
+ de_get(de);
++ if (!vx_hide_check(0, de->vx_flags))
++ goto skip;
+ spin_unlock(&proc_subdir_lock);
+ if (filldir(dirent, de->name, de->namelen, filp->f_pos,
+ de->low_ino, de->mode >> 12) < 0) {
+@@ -517,6 +524,7 @@ int proc_readdir_de(struct proc_dir_entr
+ goto out;
+ }
+ spin_lock(&proc_subdir_lock);
++ skip:
+ filp->f_pos++;
+ next = de->next;
+ de_put(de);
+@@ -631,6 +639,7 @@ static struct proc_dir_entry *__proc_cre
+ ent->nlink = nlink;
+ atomic_set(&ent->count, 1);
+ ent->pde_users = 0;
++ ent->vx_flags = IATTR_PROC_DEFAULT;
+ spin_lock_init(&ent->pde_unload_lock);
+ ent->pde_unload_completion = NULL;
+ INIT_LIST_HEAD(&ent->pde_openers);
+@@ -654,7 +663,8 @@ struct proc_dir_entry *proc_symlink(cons
+ kfree(ent->data);
+ kfree(ent);
+ ent = NULL;
+- }
++ } else
++ ent->vx_flags = IATTR_PROC_SYMLINK;
+ } else {
+ kfree(ent);
+ ent = NULL;
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/inode.c
+--- linux-2.6.31.6/fs/proc/inode.c 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/inode.c 2009-09-10 16:11:43.000000000 +0200
+@@ -459,6 +459,8 @@ struct inode *proc_get_inode(struct supe
+ inode->i_uid = de->uid;
+ inode->i_gid = de->gid;
+ }
++ if (de->vx_flags)
++ PROC_I(inode)->vx_flags = de->vx_flags;
+ if (de->size)
+ inode->i_size = de->size;
+ if (de->nlink)
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/internal.h linux-2.6.31.6-vs2.3.0.36.24/fs/proc/internal.h
+--- linux-2.6.31.6/fs/proc/internal.h 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/internal.h 2009-09-10 16:11:43.000000000 +0200
+@@ -10,6 +10,7 @@
+ */
+
+ #include <linux/proc_fs.h>
++#include <linux/vs_pid.h>
+
+ extern struct proc_dir_entry proc_root;
+ #ifdef CONFIG_PROC_SYSCTL
+@@ -51,6 +52,9 @@ extern int proc_pid_status(struct seq_fi
+ struct pid *pid, struct task_struct *task);
+ extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
+ struct pid *pid, struct task_struct *task);
++extern int proc_pid_nsproxy(struct seq_file *m, struct pid_namespace *ns,
++ struct pid *pid, struct task_struct *task);
++
+ extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
+
+ extern const struct file_operations proc_maps_operations;
+@@ -70,11 +74,16 @@ static inline struct pid *proc_pid(struc
+ return PROC_I(inode)->pid;
+ }
+
+-static inline struct task_struct *get_proc_task(struct inode *inode)
++static inline struct task_struct *get_proc_task_real(struct inode *inode)
+ {
+ return get_pid_task(proc_pid(inode), PIDTYPE_PID);
+ }
+
++static inline struct task_struct *get_proc_task(struct inode *inode)
++{
++ return vx_get_proc_task(inode, proc_pid(inode));
++}
++
+ static inline int proc_fd(struct inode *inode)
+ {
+ return PROC_I(inode)->fd;
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/loadavg.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/loadavg.c
+--- linux-2.6.31.6/fs/proc/loadavg.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/loadavg.c 2009-11-05 04:12:09.000000000 +0100
+@@ -12,15 +12,27 @@
+
+ static int loadavg_proc_show(struct seq_file *m, void *v)
+ {
++ unsigned long running;
++ unsigned int threads;
+ unsigned long avnrun[3];
+
+ get_avenrun(avnrun, FIXED_1/200, 0);
+
++ if (vx_flags(VXF_VIRT_LOAD, 0)) {
++ struct vx_info *vxi = current_vx_info();
++
++ running = atomic_read(&vxi->cvirt.nr_running);
++ threads = atomic_read(&vxi->cvirt.nr_threads);
++ } else {
++ running = nr_running();
++ threads = nr_threads;
++ }
++
+ seq_printf(m, "%lu.%02lu %lu.%02lu %lu.%02lu %ld/%d %d\n",
+ LOAD_INT(avnrun[0]), LOAD_FRAC(avnrun[0]),
+ LOAD_INT(avnrun[1]), LOAD_FRAC(avnrun[1]),
+ LOAD_INT(avnrun[2]), LOAD_FRAC(avnrun[2]),
+- nr_running(), nr_threads,
++ running, threads,
+ task_active_pid_ns(current)->last_pid);
+ return 0;
+ }
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/meminfo.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/meminfo.c
+--- linux-2.6.31.6/fs/proc/meminfo.c 2009-09-10 15:26:23.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/meminfo.c 2009-09-10 16:11:43.000000000 +0200
+@@ -41,7 +41,7 @@ static int meminfo_proc_show(struct seq_
+
+ cached = global_page_state(NR_FILE_PAGES) -
+ total_swapcache_pages - i.bufferram;
+- if (cached < 0)
++ if (cached < 0 || vx_flags(VXF_VIRT_MEM, 0))
+ cached = 0;
+
+ get_vmalloc_info(&vmi);
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/root.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/root.c
+--- linux-2.6.31.6/fs/proc/root.c 2009-06-11 17:13:07.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/root.c 2009-09-10 16:11:43.000000000 +0200
+@@ -18,9 +18,14 @@
+ #include <linux/bitops.h>
+ #include <linux/mount.h>
+ #include <linux/pid_namespace.h>
++#include <linux/vserver/inode.h>
+
+ #include "internal.h"
+
++struct proc_dir_entry *proc_virtual;
++
++extern void proc_vx_init(void);
++
+ static int proc_test_super(struct super_block *sb, void *data)
+ {
+ return sb->s_fs_info == data;
+@@ -136,6 +141,7 @@ void __init proc_root_init(void)
+ #endif
+ proc_mkdir("bus", NULL);
+ proc_sys_init();
++ proc_vx_init();
+ }
+
+ static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
+@@ -203,6 +209,7 @@ struct proc_dir_entry proc_root = {
+ .proc_iops = &proc_root_inode_operations,
+ .proc_fops = &proc_root_operations,
+ .parent = &proc_root,
++ .vx_flags = IATTR_ADMIN | IATTR_WATCH,
+ };
+
+ int pid_ns_prepare_proc(struct pid_namespace *ns)
+diff -NurpP --minimal linux-2.6.31.6/fs/proc/uptime.c linux-2.6.31.6-vs2.3.0.36.24/fs/proc/uptime.c
+--- linux-2.6.31.6/fs/proc/uptime.c 2009-11-12 12:10:11.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/proc/uptime.c 2009-10-05 23:35:52.000000000 +0200
+@@ -4,22 +4,22 @@
+ #include <linux/sched.h>
+ #include <linux/seq_file.h>
+ #include <linux/time.h>
+-#include <linux/kernel_stat.h>
++#include <linux/vserver/cvirt.h>
+ #include <asm/cputime.h>
+
+ static int uptime_proc_show(struct seq_file *m, void *v)
+ {
+ struct timespec uptime;
+ struct timespec idle;
+- int i;
+- cputime_t idletime = cputime_zero;
+-
+- for_each_possible_cpu(i)
+- idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle);
++ cputime_t idletime = cputime_add(init_task.utime, init_task.stime);
+
+ do_posix_clock_monotonic_gettime(&uptime);
+ monotonic_to_bootbased(&uptime);
+ cputime_to_timespec(idletime, &idle);
++
++ if (vx_flags(VXF_VIRT_UPTIME, 0))
++ vx_vsi_uptime(&uptime, &idle);
++
+ seq_printf(m, "%lu.%02lu %lu.%02lu\n",
+ (unsigned long) uptime.tv_sec,
+ (uptime.tv_nsec / (NSEC_PER_SEC / 100)),
+diff -NurpP --minimal linux-2.6.31.6/fs/quota/quota.c linux-2.6.31.6-vs2.3.0.36.24/fs/quota/quota.c
+--- linux-2.6.31.6/fs/quota/quota.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/quota/quota.c 2009-09-10 16:11:43.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/capability.h>
+ #include <linux/quotaops.h>
+ #include <linux/types.h>
++#include <linux/vs_context.h>
+
+ /* Check validity of generic quotactl commands */
+ static int generic_quotactl_valid(struct super_block *sb, int type, int cmd,
+@@ -83,11 +84,11 @@ static int generic_quotactl_valid(struct
+ if (cmd == Q_GETQUOTA) {
+ if (((type == USRQUOTA && current_euid() != id) ||
+ (type == GRPQUOTA && !in_egroup_p(id))) &&
+- !capable(CAP_SYS_ADMIN))
++ !vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
+ return -EPERM;
+ }
+ else if (cmd != Q_GETFMT && cmd != Q_SYNC && cmd != Q_GETINFO)
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
+ return -EPERM;
+
+ return 0;
+@@ -135,10 +136,10 @@ static int xqm_quotactl_valid(struct sup
+ if (cmd == Q_XGETQUOTA) {
+ if (((type == XQM_USRQUOTA && current_euid() != id) ||
+ (type == XQM_GRPQUOTA && !in_egroup_p(id))) &&
+- !capable(CAP_SYS_ADMIN))
++ !vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
+ return -EPERM;
+ } else if (cmd != Q_XGETQSTAT && cmd != Q_XQUOTASYNC) {
+- if (!capable(CAP_SYS_ADMIN))
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_QUOTA_CTL))
+ return -EPERM;
+ }
+
+@@ -351,6 +352,46 @@ static int do_quotactl(struct super_bloc
+ return 0;
+ }
+
++#if defined(CONFIG_BLK_DEV_VROOT) || defined(CONFIG_BLK_DEV_VROOT_MODULE)
++
++#include <linux/vroot.h>
++#include <linux/major.h>
++#include <linux/module.h>
++#include <linux/kallsyms.h>
++#include <linux/vserver/debug.h>
++
++static vroot_grb_func *vroot_get_real_bdev = NULL;
++
++static spinlock_t vroot_grb_lock = SPIN_LOCK_UNLOCKED;
++
++int register_vroot_grb(vroot_grb_func *func) {
++ int ret = -EBUSY;
++
++ spin_lock(&vroot_grb_lock);
++ if (!vroot_get_real_bdev) {
++ vroot_get_real_bdev = func;
++ ret = 0;
++ }
++ spin_unlock(&vroot_grb_lock);
++ return ret;
++}
++EXPORT_SYMBOL(register_vroot_grb);
++
++int unregister_vroot_grb(vroot_grb_func *func) {
++ int ret = -EINVAL;
++
++ spin_lock(&vroot_grb_lock);
++ if (vroot_get_real_bdev) {
++ vroot_get_real_bdev = NULL;
++ ret = 0;
++ }
++ spin_unlock(&vroot_grb_lock);
++ return ret;
++}
++EXPORT_SYMBOL(unregister_vroot_grb);
++
++#endif
++
+ /*
+ * look up a superblock on which quota ops will be performed
+ * - use the name of a block device to find the superblock thereon
+@@ -368,6 +409,22 @@ static struct super_block *quotactl_bloc
+ putname(tmp);
+ if (IS_ERR(bdev))
+ return ERR_CAST(bdev);
++#if defined(CONFIG_BLK_DEV_VROOT) || defined(CONFIG_BLK_DEV_VROOT_MODULE)
++ if (bdev && bdev->bd_inode &&
++ imajor(bdev->bd_inode) == VROOT_MAJOR) {
++ struct block_device *bdnew = (void *)-EINVAL;
++
++ if (vroot_get_real_bdev)
++ bdnew = vroot_get_real_bdev(bdev);
++ else
++ vxdprintk(VXD_CBIT(misc, 0),
++ "vroot_get_real_bdev not set");
++ bdput(bdev);
++ if (IS_ERR(bdnew))
++ return ERR_PTR(PTR_ERR(bdnew));
++ bdev = bdnew;
++ }
++#endif
+ sb = get_super(bdev);
+ bdput(bdev);
+ if (!sb)
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/file.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/file.c
+--- linux-2.6.31.6/fs/reiserfs/file.c 2009-06-11 17:13:08.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/file.c 2009-10-07 01:04:14.000000000 +0200
+@@ -307,4 +307,5 @@ const struct inode_operations reiserfs_f
+ .listxattr = reiserfs_listxattr,
+ .removexattr = reiserfs_removexattr,
+ .permission = reiserfs_permission,
++ .sync_flags = reiserfs_sync_flags,
+ };
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/inode.c
+--- linux-2.6.31.6/fs/reiserfs/inode.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/inode.c 2009-10-06 19:45:13.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/writeback.h>
+ #include <linux/quotaops.h>
+ #include <linux/swap.h>
++#include <linux/vs_tag.h>
+
+ int reiserfs_commit_write(struct file *f, struct page *page,
+ unsigned from, unsigned to);
+@@ -1117,6 +1118,8 @@ static void init_inode(struct inode *ino
+ struct buffer_head *bh;
+ struct item_head *ih;
+ __u32 rdev;
++ uid_t uid;
++ gid_t gid;
+ //int version = ITEM_VERSION_1;
+
+ bh = PATH_PLAST_BUFFER(path);
+@@ -1138,12 +1141,13 @@ static void init_inode(struct inode *ino
+ (struct stat_data_v1 *)B_I_PITEM(bh, ih);
+ unsigned long blocks;
+
++ uid = sd_v1_uid(sd);
++ gid = sd_v1_gid(sd);
++
+ set_inode_item_key_version(inode, KEY_FORMAT_3_5);
+ set_inode_sd_version(inode, STAT_DATA_V1);
+ inode->i_mode = sd_v1_mode(sd);
+ inode->i_nlink = sd_v1_nlink(sd);
+- inode->i_uid = sd_v1_uid(sd);
+- inode->i_gid = sd_v1_gid(sd);
+ inode->i_size = sd_v1_size(sd);
+ inode->i_atime.tv_sec = sd_v1_atime(sd);
+ inode->i_mtime.tv_sec = sd_v1_mtime(sd);
+@@ -1185,11 +1189,12 @@ static void init_inode(struct inode *ino
+ // (directories and symlinks)
+ struct stat_data *sd = (struct stat_data *)B_I_PITEM(bh, ih);
+
++ uid = sd_v2_uid(sd);
++ gid = sd_v2_gid(sd);
++
+ inode->i_mode = sd_v2_mode(sd);
+ inode->i_nlink = sd_v2_nlink(sd);
+- inode->i_uid = sd_v2_uid(sd);
+ inode->i_size = sd_v2_size(sd);
+- inode->i_gid = sd_v2_gid(sd);
+ inode->i_mtime.tv_sec = sd_v2_mtime(sd);
+ inode->i_atime.tv_sec = sd_v2_atime(sd);
+ inode->i_ctime.tv_sec = sd_v2_ctime(sd);
+@@ -1219,6 +1224,10 @@ static void init_inode(struct inode *ino
+ sd_attrs_to_i_attrs(sd_v2_attrs(sd), inode);
+ }
+
++ inode->i_uid = INOTAG_UID(DX_TAG(inode), uid, gid);
++ inode->i_gid = INOTAG_GID(DX_TAG(inode), uid, gid);
++ inode->i_tag = INOTAG_TAG(DX_TAG(inode), uid, gid, 0);
++
+ pathrelse(path);
+ if (S_ISREG(inode->i_mode)) {
+ inode->i_op = &reiserfs_file_inode_operations;
+@@ -1241,13 +1250,15 @@ static void init_inode(struct inode *ino
+ static void inode2sd(void *sd, struct inode *inode, loff_t size)
+ {
+ struct stat_data *sd_v2 = (struct stat_data *)sd;
++ uid_t uid = TAGINO_UID(DX_TAG(inode), inode->i_uid, inode->i_tag);
++ gid_t gid = TAGINO_GID(DX_TAG(inode), inode->i_gid, inode->i_tag);
+ __u16 flags;
+
++ set_sd_v2_uid(sd_v2, uid);
++ set_sd_v2_gid(sd_v2, gid);
+ set_sd_v2_mode(sd_v2, inode->i_mode);
+ set_sd_v2_nlink(sd_v2, inode->i_nlink);
+- set_sd_v2_uid(sd_v2, inode->i_uid);
+ set_sd_v2_size(sd_v2, size);
+- set_sd_v2_gid(sd_v2, inode->i_gid);
+ set_sd_v2_mtime(sd_v2, inode->i_mtime.tv_sec);
+ set_sd_v2_atime(sd_v2, inode->i_atime.tv_sec);
+ set_sd_v2_ctime(sd_v2, inode->i_ctime.tv_sec);
+@@ -2828,14 +2839,19 @@ int reiserfs_commit_write(struct file *f
+ void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode)
+ {
+ if (reiserfs_attrs(inode->i_sb)) {
+- if (sd_attrs & REISERFS_SYNC_FL)
+- inode->i_flags |= S_SYNC;
+- else
+- inode->i_flags &= ~S_SYNC;
+ if (sd_attrs & REISERFS_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
+ else
+ inode->i_flags &= ~S_IMMUTABLE;
++ if (sd_attrs & REISERFS_IXUNLINK_FL)
++ inode->i_flags |= S_IXUNLINK;
++ else
++ inode->i_flags &= ~S_IXUNLINK;
++
++ if (sd_attrs & REISERFS_SYNC_FL)
++ inode->i_flags |= S_SYNC;
++ else
++ inode->i_flags &= ~S_SYNC;
+ if (sd_attrs & REISERFS_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+ else
+@@ -2848,6 +2864,15 @@ void sd_attrs_to_i_attrs(__u16 sd_attrs,
+ REISERFS_I(inode)->i_flags |= i_nopack_mask;
+ else
+ REISERFS_I(inode)->i_flags &= ~i_nopack_mask;
++
++ if (sd_attrs & REISERFS_BARRIER_FL)
++ inode->i_vflags |= V_BARRIER;
++ else
++ inode->i_vflags &= ~V_BARRIER;
++ if (sd_attrs & REISERFS_COW_FL)
++ inode->i_vflags |= V_COW;
++ else
++ inode->i_vflags &= ~V_COW;
+ }
+ }
+
+@@ -2858,6 +2883,11 @@ void i_attrs_to_sd_attrs(struct inode *i
+ *sd_attrs |= REISERFS_IMMUTABLE_FL;
+ else
+ *sd_attrs &= ~REISERFS_IMMUTABLE_FL;
++ if (inode->i_flags & S_IXUNLINK)
++ *sd_attrs |= REISERFS_IXUNLINK_FL;
++ else
++ *sd_attrs &= ~REISERFS_IXUNLINK_FL;
++
+ if (inode->i_flags & S_SYNC)
+ *sd_attrs |= REISERFS_SYNC_FL;
+ else
+@@ -2870,6 +2900,15 @@ void i_attrs_to_sd_attrs(struct inode *i
+ *sd_attrs |= REISERFS_NOTAIL_FL;
+ else
+ *sd_attrs &= ~REISERFS_NOTAIL_FL;
++
++ if (inode->i_vflags & V_BARRIER)
++ *sd_attrs |= REISERFS_BARRIER_FL;
++ else
++ *sd_attrs &= ~REISERFS_BARRIER_FL;
++ if (inode->i_vflags & V_COW)
++ *sd_attrs |= REISERFS_COW_FL;
++ else
++ *sd_attrs &= ~REISERFS_COW_FL;
+ }
+ }
+
+@@ -3090,9 +3129,11 @@ int reiserfs_setattr(struct dentry *dent
+ }
+
+ error = inode_change_ok(inode, attr);
++
+ if (!error) {
+ if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+- (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
++ (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid) ||
++ (ia_valid & ATTR_TAG && attr->ia_tag != inode->i_tag)) {
+ error = reiserfs_chown_xattrs(inode, attr);
+
+ if (!error) {
+@@ -3122,6 +3163,9 @@ int reiserfs_setattr(struct dentry *dent
+ inode->i_uid = attr->ia_uid;
+ if (attr->ia_valid & ATTR_GID)
+ inode->i_gid = attr->ia_gid;
++ if ((attr->ia_valid & ATTR_TAG) &&
++ IS_TAGGED(inode))
++ inode->i_tag = attr->ia_tag;
+ mark_inode_dirty(inode);
+ error =
+ journal_end(&th, inode->i_sb, jbegin_count);
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/ioctl.c
+--- linux-2.6.31.6/fs/reiserfs/ioctl.c 2009-06-11 17:13:08.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/ioctl.c 2009-10-12 03:53:52.000000000 +0200
+@@ -7,11 +7,27 @@
+ #include <linux/mount.h>
+ #include <linux/reiserfs_fs.h>
+ #include <linux/time.h>
++#include <linux/mount.h>
+ #include <asm/uaccess.h>
+ #include <linux/pagemap.h>
+ #include <linux/smp_lock.h>
+ #include <linux/compat.h>
+
++
++int reiserfs_sync_flags(struct inode *inode, int flags, int vflags)
++{
++ __u16 sd_attrs = 0;
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++
++ i_attrs_to_sd_attrs(inode, &sd_attrs);
++ REISERFS_I(inode)->i_attrs = sd_attrs;
++ inode->i_ctime = CURRENT_TIME_SEC;
++ mark_inode_dirty(inode);
++ return 0;
++}
++
+ /*
+ ** reiserfs_ioctl - handler for ioctl for inode
+ ** supported commands:
+@@ -23,7 +39,7 @@
+ int reiserfs_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
+ unsigned long arg)
+ {
+- unsigned int flags;
++ unsigned int flags, oldflags;
+ int err = 0;
+
+ switch (cmd) {
+@@ -43,6 +59,7 @@ int reiserfs_ioctl(struct inode *inode,
+
+ flags = REISERFS_I(inode)->i_attrs;
+ i_attrs_to_sd_attrs(inode, (__u16 *) & flags);
++ flags &= REISERFS_FL_USER_VISIBLE;
+ return put_user(flags, (int __user *)arg);
+ case REISERFS_IOC_SETFLAGS:{
+ if (!reiserfs_attrs(inode->i_sb))
+@@ -60,6 +77,10 @@ int reiserfs_ioctl(struct inode *inode,
+ err = -EFAULT;
+ goto setflags_out;
+ }
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -EACCES;
++ }
+ /*
+ * Is it quota file? Do not allow user to mess with it
+ */
+@@ -84,6 +105,10 @@ int reiserfs_ioctl(struct inode *inode,
+ goto setflags_out;
+ }
+ }
++
++ oldflags = REISERFS_I(inode)->i_attrs;
++ flags &= REISERFS_FL_USER_MODIFIABLE;
++ flags |= oldflags & ~REISERFS_FL_USER_MODIFIABLE;
+ sd_attrs_to_i_attrs(flags, inode);
+ REISERFS_I(inode)->i_attrs = flags;
+ inode->i_ctime = CURRENT_TIME_SEC;
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/namei.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/namei.c
+--- linux-2.6.31.6/fs/reiserfs/namei.c 2009-06-11 17:13:08.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/namei.c 2009-10-07 01:09:49.000000000 +0200
+@@ -17,6 +17,7 @@
+ #include <linux/reiserfs_acl.h>
+ #include <linux/reiserfs_xattr.h>
+ #include <linux/quotaops.h>
++#include <linux/vs_tag.h>
+
+ #define INC_DIR_INODE_NLINK(i) if (i->i_nlink != 1) { inc_nlink(i); if (i->i_nlink >= REISERFS_LINK_MAX) i->i_nlink=1; }
+ #define DEC_DIR_INODE_NLINK(i) if (i->i_nlink != 1) drop_nlink(i);
+@@ -354,6 +355,7 @@ static struct dentry *reiserfs_lookup(st
+ if (retval == IO_ERROR) {
+ return ERR_PTR(-EIO);
+ }
++ dx_propagate_tag(nd, inode);
+
+ return d_splice_alias(inode, dentry);
+ }
+@@ -570,6 +572,7 @@ static int new_inode_init(struct inode *
+ } else {
+ inode->i_gid = current_fsgid();
+ }
++ inode->i_tag = dx_current_fstag(inode->i_sb);
+ vfs_dq_init(inode);
+ return 0;
+ }
+@@ -1515,6 +1518,7 @@ const struct inode_operations reiserfs_d
+ .listxattr = reiserfs_listxattr,
+ .removexattr = reiserfs_removexattr,
+ .permission = reiserfs_permission,
++ .sync_flags = reiserfs_sync_flags,
+ };
+
+ /*
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/super.c
+--- linux-2.6.31.6/fs/reiserfs/super.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/super.c 2009-10-07 03:27:01.000000000 +0200
+@@ -884,6 +884,14 @@ static int reiserfs_parse_options(struct
+ {"user_xattr",.setmask = 1 << REISERFS_UNSUPPORTED_OPT},
+ {"nouser_xattr",.clrmask = 1 << REISERFS_UNSUPPORTED_OPT},
+ #endif
++#ifndef CONFIG_TAGGING_NONE
++ {"tagxid",.setmask = 1 << REISERFS_TAGGED},
++ {"tag",.setmask = 1 << REISERFS_TAGGED},
++ {"notag",.clrmask = 1 << REISERFS_TAGGED},
++#endif
++#ifdef CONFIG_PROPAGATE
++ {"tag",.arg_required = 'T',.values = NULL},
++#endif
+ #ifdef CONFIG_REISERFS_FS_POSIX_ACL
+ {"acl",.setmask = 1 << REISERFS_POSIXACL},
+ {"noacl",.clrmask = 1 << REISERFS_POSIXACL},
+@@ -1190,6 +1198,14 @@ static int reiserfs_remount(struct super
+ handle_quota_files(s, qf_names, &qfmt);
+ #endif
+
++ if ((mount_options & (1 << REISERFS_TAGGED)) &&
++ !(s->s_flags & MS_TAGGED)) {
++ reiserfs_warning(s, "super-vs01",
++ "reiserfs: tagging not permitted on remount.");
++ err = -EINVAL;
++ goto out_err;
++ }
++
+ handle_attrs(s);
+
+ /* Add options that are safe here */
+@@ -1652,6 +1668,10 @@ static int reiserfs_fill_super(struct su
+ goto error;
+ }
+
++ /* map mount option tagxid */
++ if (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_TAGGED))
++ s->s_flags |= MS_TAGGED;
++
+ rs = SB_DISK_SUPER_BLOCK(s);
+ /* Let's do basic sanity check to verify that underlying device is not
+ smaller than the filesystem. If the check fails then abort and scream,
+diff -NurpP --minimal linux-2.6.31.6/fs/reiserfs/xattr.c linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/xattr.c
+--- linux-2.6.31.6/fs/reiserfs/xattr.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/reiserfs/xattr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -39,6 +39,7 @@
+ #include <linux/namei.h>
+ #include <linux/errno.h>
+ #include <linux/fs.h>
++#include <linux/mount.h>
+ #include <linux/file.h>
+ #include <linux/pagemap.h>
+ #include <linux/xattr.h>
+diff -NurpP --minimal linux-2.6.31.6/fs/stat.c linux-2.6.31.6-vs2.3.0.36.24/fs/stat.c
+--- linux-2.6.31.6/fs/stat.c 2009-06-11 17:13:08.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/stat.c 2009-09-10 16:11:43.000000000 +0200
+@@ -26,6 +26,7 @@ void generic_fillattr(struct inode *inod
+ stat->nlink = inode->i_nlink;
+ stat->uid = inode->i_uid;
+ stat->gid = inode->i_gid;
++ stat->tag = inode->i_tag;
+ stat->rdev = inode->i_rdev;
+ stat->atime = inode->i_atime;
+ stat->mtime = inode->i_mtime;
+diff -NurpP --minimal linux-2.6.31.6/fs/super.c linux-2.6.31.6-vs2.3.0.36.24/fs/super.c
+--- linux-2.6.31.6/fs/super.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/super.c 2009-09-10 17:00:57.000000000 +0200
+@@ -37,6 +37,9 @@
+ #include <linux/kobject.h>
+ #include <linux/mutex.h>
+ #include <linux/file.h>
++#include <linux/devpts_fs.h>
++#include <linux/proc_fs.h>
++#include <linux/vs_context.h>
+ #include <asm/uaccess.h>
+ #include "internal.h"
+
+@@ -859,12 +862,18 @@ struct vfsmount *
+ vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void *data)
+ {
+ struct vfsmount *mnt;
++ struct super_block *sb;
+ char *secdata = NULL;
+ int error;
+
+ if (!type)
+ return ERR_PTR(-ENODEV);
+
++ error = -EPERM;
++ if ((type->fs_flags & FS_BINARY_MOUNTDATA) &&
++ !vx_capable(CAP_SYS_ADMIN, VXC_BINARY_MOUNT))
++ goto out;
++
+ error = -ENOMEM;
+ mnt = alloc_vfsmnt(name);
+ if (!mnt)
+@@ -883,9 +892,17 @@ vfs_kern_mount(struct file_system_type *
+ error = type->get_sb(type, flags, name, data, mnt);
+ if (error < 0)
+ goto out_free_secdata;
+- BUG_ON(!mnt->mnt_sb);
+
+- error = security_sb_kern_mount(mnt->mnt_sb, flags, secdata);
++ sb = mnt->mnt_sb;
++ BUG_ON(!sb);
++
++ error = -EPERM;
++ if (!vx_capable(CAP_SYS_ADMIN, VXC_BINARY_MOUNT) && !sb->s_bdev &&
++ (sb->s_magic != PROC_SUPER_MAGIC) &&
++ (sb->s_magic != DEVPTS_SUPER_MAGIC))
++ goto out_sb;
++
++ error = security_sb_kern_mount(sb, flags, secdata);
+ if (error)
+ goto out_sb;
+
+diff -NurpP --minimal linux-2.6.31.6/fs/sysfs/mount.c linux-2.6.31.6-vs2.3.0.36.24/fs/sysfs/mount.c
+--- linux-2.6.31.6/fs/sysfs/mount.c 2009-06-11 17:13:08.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/sysfs/mount.c 2009-09-10 16:11:43.000000000 +0200
+@@ -47,7 +47,7 @@ static int sysfs_fill_super(struct super
+
+ sb->s_blocksize = PAGE_CACHE_SIZE;
+ sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
+- sb->s_magic = SYSFS_MAGIC;
++ sb->s_magic = SYSFS_SUPER_MAGIC;
+ sb->s_op = &sysfs_ops;
+ sb->s_time_gran = 1;
+ sysfs_sb = sb;
+diff -NurpP --minimal linux-2.6.31.6/fs/utimes.c linux-2.6.31.6-vs2.3.0.36.24/fs/utimes.c
+--- linux-2.6.31.6/fs/utimes.c 2009-03-24 14:22:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/utimes.c 2009-09-10 16:11:43.000000000 +0200
+@@ -8,6 +8,8 @@
+ #include <linux/stat.h>
+ #include <linux/utime.h>
+ #include <linux/syscalls.h>
++#include <linux/mount.h>
++#include <linux/vs_cowbl.h>
+ #include <asm/uaccess.h>
+ #include <asm/unistd.h>
+
+diff -NurpP --minimal linux-2.6.31.6/fs/xattr.c linux-2.6.31.6-vs2.3.0.36.24/fs/xattr.c
+--- linux-2.6.31.6/fs/xattr.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xattr.c 2009-09-10 16:11:43.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include <linux/module.h>
+ #include <linux/fsnotify.h>
+ #include <linux/audit.h>
++#include <linux/mount.h>
+ #include <asm/uaccess.h>
+
+
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_ioctl.c
+--- linux-2.6.31.6/fs/xfs/linux-2.6/xfs_ioctl.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_ioctl.c 2009-10-07 15:57:55.000000000 +0200
+@@ -34,7 +34,6 @@
+ #include "xfs_dir2_sf.h"
+ #include "xfs_dinode.h"
+ #include "xfs_inode.h"
+-#include "xfs_ioctl.h"
+ #include "xfs_btree.h"
+ #include "xfs_ialloc.h"
+ #include "xfs_rtalloc.h"
+@@ -742,6 +741,10 @@ xfs_merge_ioc_xflags(
+ xflags |= XFS_XFLAG_IMMUTABLE;
+ else
+ xflags &= ~XFS_XFLAG_IMMUTABLE;
++ if (flags & FS_IXUNLINK_FL)
++ xflags |= XFS_XFLAG_IXUNLINK;
++ else
++ xflags &= ~XFS_XFLAG_IXUNLINK;
+ if (flags & FS_APPEND_FL)
+ xflags |= XFS_XFLAG_APPEND;
+ else
+@@ -770,6 +773,8 @@ xfs_di2lxflags(
+
+ if (di_flags & XFS_DIFLAG_IMMUTABLE)
+ flags |= FS_IMMUTABLE_FL;
++ if (di_flags & XFS_DIFLAG_IXUNLINK)
++ flags |= FS_IXUNLINK_FL;
+ if (di_flags & XFS_DIFLAG_APPEND)
+ flags |= FS_APPEND_FL;
+ if (di_flags & XFS_DIFLAG_SYNC)
+@@ -828,6 +833,8 @@ xfs_set_diflags(
+ di_flags = (ip->i_d.di_flags & XFS_DIFLAG_PREALLOC);
+ if (xflags & XFS_XFLAG_IMMUTABLE)
+ di_flags |= XFS_DIFLAG_IMMUTABLE;
++ if (xflags & XFS_XFLAG_IXUNLINK)
++ di_flags |= XFS_DIFLAG_IXUNLINK;
+ if (xflags & XFS_XFLAG_APPEND)
+ di_flags |= XFS_DIFLAG_APPEND;
+ if (xflags & XFS_XFLAG_SYNC)
+@@ -870,6 +877,10 @@ xfs_diflags_to_linux(
+ inode->i_flags |= S_IMMUTABLE;
+ else
+ inode->i_flags &= ~S_IMMUTABLE;
++ if (xflags & XFS_XFLAG_IXUNLINK)
++ inode->i_flags |= S_IXUNLINK;
++ else
++ inode->i_flags &= ~S_IXUNLINK;
+ if (xflags & XFS_XFLAG_APPEND)
+ inode->i_flags |= S_APPEND;
+ else
+@@ -1346,10 +1357,18 @@ xfs_file_ioctl(
+ case XFS_IOC_FSGETXATTRA:
+ return xfs_ioc_fsgetxattr(ip, 1, arg);
+ case XFS_IOC_FSSETXATTR:
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -XFS_ERROR(EACCES);
++ }
+ return xfs_ioc_fssetxattr(ip, filp, arg);
+ case XFS_IOC_GETXFLAGS:
+ return xfs_ioc_getxflags(ip, arg);
+ case XFS_IOC_SETXFLAGS:
++ if (IS_BARRIER(inode)) {
++ vxwprintk_task(1, "messing with the barrier.");
++ return -XFS_ERROR(EACCES);
++ }
+ return xfs_ioc_setxflags(ip, filp, arg);
+
+ case XFS_IOC_FSSETDM: {
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/linux-2.6/xfs_ioctl.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_ioctl.h
+--- linux-2.6.31.6/fs/xfs/linux-2.6/xfs_ioctl.h 2009-03-24 14:22:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_ioctl.h 2009-10-07 15:59:45.000000000 +0200
+@@ -70,6 +70,12 @@ xfs_handle_to_dentry(
+ void __user *uhandle,
+ u32 hlen);
+
++extern int
++xfs_sync_flags(
++ struct inode *inode,
++ int flags,
++ int vflags);
++
+ extern long
+ xfs_file_ioctl(
+ struct file *filp,
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_iops.c
+--- linux-2.6.31.6/fs/xfs/linux-2.6/xfs_iops.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_iops.c 2009-10-07 05:23:00.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include "xfs_attr_sf.h"
+ #include "xfs_dinode.h"
+ #include "xfs_inode.h"
++#include "xfs_ioctl.h"
+ #include "xfs_bmap.h"
+ #include "xfs_btree.h"
+ #include "xfs_ialloc.h"
+@@ -56,6 +57,7 @@
+ #include <linux/security.h>
+ #include <linux/falloc.h>
+ #include <linux/fiemap.h>
++#include <linux/vs_tag.h>
+
+ /*
+ * Bring the atime in the XFS inode uptodate.
+@@ -513,6 +515,7 @@ xfs_vn_getattr(
+ stat->nlink = ip->i_d.di_nlink;
+ stat->uid = ip->i_d.di_uid;
+ stat->gid = ip->i_d.di_gid;
++ stat->tag = ip->i_d.di_tag;
+ stat->ino = ip->i_ino;
+ stat->atime = inode->i_atime;
+ stat->mtime.tv_sec = ip->i_d.di_mtime.t_sec;
+@@ -706,6 +709,7 @@ static const struct inode_operations xfs
+ .listxattr = xfs_vn_listxattr,
+ .fallocate = xfs_vn_fallocate,
+ .fiemap = xfs_vn_fiemap,
++ .sync_flags = xfs_sync_flags,
+ };
+
+ static const struct inode_operations xfs_dir_inode_operations = {
+@@ -731,6 +735,7 @@ static const struct inode_operations xfs
+ .getxattr = generic_getxattr,
+ .removexattr = generic_removexattr,
+ .listxattr = xfs_vn_listxattr,
++ .sync_flags = xfs_sync_flags,
+ };
+
+ static const struct inode_operations xfs_dir_ci_inode_operations = {
+@@ -780,6 +785,10 @@ xfs_diflags_to_iflags(
+ inode->i_flags |= S_IMMUTABLE;
+ else
+ inode->i_flags &= ~S_IMMUTABLE;
++ if (ip->i_d.di_flags & XFS_DIFLAG_IXUNLINK)
++ inode->i_flags |= S_IXUNLINK;
++ else
++ inode->i_flags &= ~S_IXUNLINK;
+ if (ip->i_d.di_flags & XFS_DIFLAG_APPEND)
+ inode->i_flags |= S_APPEND;
+ else
+@@ -792,6 +801,15 @@ xfs_diflags_to_iflags(
+ inode->i_flags |= S_NOATIME;
+ else
+ inode->i_flags &= ~S_NOATIME;
++
++ if (ip->i_d.di_vflags & XFS_DIVFLAG_BARRIER)
++ inode->i_vflags |= V_BARRIER;
++ else
++ inode->i_vflags &= ~V_BARRIER;
++ if (ip->i_d.di_vflags & XFS_DIVFLAG_COW)
++ inode->i_vflags |= V_COW;
++ else
++ inode->i_vflags &= ~V_COW;
+ }
+
+ /*
+@@ -820,6 +838,7 @@ xfs_setup_inode(
+ inode->i_nlink = ip->i_d.di_nlink;
+ inode->i_uid = ip->i_d.di_uid;
+ inode->i_gid = ip->i_d.di_gid;
++ inode->i_tag = ip->i_d.di_tag;
+
+ switch (inode->i_mode & S_IFMT) {
+ case S_IFBLK:
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/linux-2.6/xfs_linux.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_linux.h
+--- linux-2.6.31.6/fs/xfs/linux-2.6/xfs_linux.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_linux.h 2009-09-10 16:11:43.000000000 +0200
+@@ -119,6 +119,7 @@
+
+ #define current_cpu() (raw_smp_processor_id())
+ #define current_pid() (current->pid)
++#define current_fstag(cred,vp) (dx_current_fstag((vp)->i_sb))
+ #define current_test_flags(f) (current->flags & (f))
+ #define current_set_flags_nested(sp, f) \
+ (*(sp) = current->flags, current->flags |= (f))
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/linux-2.6/xfs_super.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_super.c
+--- linux-2.6.31.6/fs/xfs/linux-2.6/xfs_super.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/linux-2.6/xfs_super.c 2009-09-10 17:01:53.000000000 +0200
+@@ -117,6 +117,9 @@ mempool_t *xfs_ioend_pool;
+ #define MNTOPT_DMAPI "dmapi" /* DMI enabled (DMAPI / XDSM) */
+ #define MNTOPT_XDSM "xdsm" /* DMI enabled (DMAPI / XDSM) */
+ #define MNTOPT_DMI "dmi" /* DMI enabled (DMAPI / XDSM) */
++#define MNTOPT_TAGXID "tagxid" /* context tagging for inodes */
++#define MNTOPT_TAGGED "tag" /* context tagging for inodes */
++#define MNTOPT_NOTAGTAG "notag" /* do not use context tagging */
+
+ /*
+ * Table driven mount option parser.
+@@ -125,10 +128,14 @@ mempool_t *xfs_ioend_pool;
+ * in the future, too.
+ */
+ enum {
++ Opt_tag, Opt_notag,
+ Opt_barrier, Opt_nobarrier, Opt_err
+ };
+
+ static const match_table_t tokens = {
++ {Opt_tag, "tagxid"},
++ {Opt_tag, "tag"},
++ {Opt_notag, "notag"},
+ {Opt_barrier, "barrier"},
+ {Opt_nobarrier, "nobarrier"},
+ {Opt_err, NULL}
+@@ -382,6 +389,19 @@ xfs_parseargs(
+ } else if (!strcmp(this_char, "irixsgid")) {
+ cmn_err(CE_WARN,
+ "XFS: irixsgid is now a sysctl(2) variable, option is deprecated.");
++#ifndef CONFIG_TAGGING_NONE
++ } else if (!strcmp(this_char, MNTOPT_TAGGED)) {
++ mp->m_flags |= XFS_MOUNT_TAGGED;
++ } else if (!strcmp(this_char, MNTOPT_NOTAGTAG)) {
++ mp->m_flags &= ~XFS_MOUNT_TAGGED;
++ } else if (!strcmp(this_char, MNTOPT_TAGXID)) {
++ mp->m_flags |= XFS_MOUNT_TAGGED;
++#endif
++#ifdef CONFIG_PROPAGATE
++ } else if (!strcmp(this_char, MNTOPT_TAGGED)) {
++ /* use value */
++ mp->m_flags |= XFS_MOUNT_TAGGED;
++#endif
+ } else {
+ cmn_err(CE_WARN,
+ "XFS: unknown mount option [%s].", this_char);
+@@ -1244,6 +1264,16 @@ xfs_fs_remount(
+ case Opt_nobarrier:
+ mp->m_flags &= ~XFS_MOUNT_BARRIER;
+ break;
++ case Opt_tag:
++ if (!(sb->s_flags & MS_TAGGED)) {
++ printk(KERN_INFO
++ "XFS: %s: tagging not permitted on remount.\n",
++ sb->s_id);
++ return -EINVAL;
++ }
++ break;
++ case Opt_notag:
++ break;
+ default:
+ /*
+ * Logically we would return an error here to prevent
+@@ -1451,6 +1481,9 @@ xfs_fs_fill_super(
+
+ XFS_SEND_MOUNT(mp, DM_RIGHT_NULL, mtpt, mp->m_fsname);
+
++ if (mp->m_flags & XFS_MOUNT_TAGGED)
++ sb->s_flags |= MS_TAGGED;
++
+ sb->s_magic = XFS_SB_MAGIC;
+ sb->s_blocksize = mp->m_sb.sb_blocksize;
+ sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_dinode.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_dinode.h
+--- linux-2.6.31.6/fs/xfs/xfs_dinode.h 2009-06-11 17:13:09.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_dinode.h 2009-09-10 16:11:43.000000000 +0200
+@@ -50,7 +50,9 @@ typedef struct xfs_dinode {
+ __be32 di_gid; /* owner's group id */
+ __be32 di_nlink; /* number of links to file */
+ __be16 di_projid; /* owner's project id */
+- __u8 di_pad[8]; /* unused, zeroed space */
++ __be16 di_tag; /* context tagging */
++ __be16 di_vflags; /* vserver specific flags */
++ __u8 di_pad[4]; /* unused, zeroed space */
+ __be16 di_flushiter; /* incremented on flush */
+ xfs_timestamp_t di_atime; /* time last accessed */
+ xfs_timestamp_t di_mtime; /* time last modified */
+@@ -183,6 +185,8 @@ static inline void xfs_dinode_put_rdev(s
+ #define XFS_DIFLAG_EXTSZINHERIT_BIT 12 /* inherit inode extent size */
+ #define XFS_DIFLAG_NODEFRAG_BIT 13 /* do not reorganize/defragment */
+ #define XFS_DIFLAG_FILESTREAM_BIT 14 /* use filestream allocator */
++#define XFS_DIFLAG_IXUNLINK_BIT 15 /* Immutable inver on unlink */
++
+ #define XFS_DIFLAG_REALTIME (1 << XFS_DIFLAG_REALTIME_BIT)
+ #define XFS_DIFLAG_PREALLOC (1 << XFS_DIFLAG_PREALLOC_BIT)
+ #define XFS_DIFLAG_NEWRTBM (1 << XFS_DIFLAG_NEWRTBM_BIT)
+@@ -198,6 +202,7 @@ static inline void xfs_dinode_put_rdev(s
+ #define XFS_DIFLAG_EXTSZINHERIT (1 << XFS_DIFLAG_EXTSZINHERIT_BIT)
+ #define XFS_DIFLAG_NODEFRAG (1 << XFS_DIFLAG_NODEFRAG_BIT)
+ #define XFS_DIFLAG_FILESTREAM (1 << XFS_DIFLAG_FILESTREAM_BIT)
++#define XFS_DIFLAG_IXUNLINK (1 << XFS_DIFLAG_IXUNLINK_BIT)
+
+ #ifdef CONFIG_XFS_RT
+ #define XFS_IS_REALTIME_INODE(ip) ((ip)->i_d.di_flags & XFS_DIFLAG_REALTIME)
+@@ -210,6 +215,10 @@ static inline void xfs_dinode_put_rdev(s
+ XFS_DIFLAG_IMMUTABLE | XFS_DIFLAG_APPEND | XFS_DIFLAG_SYNC | \
+ XFS_DIFLAG_NOATIME | XFS_DIFLAG_NODUMP | XFS_DIFLAG_RTINHERIT | \
+ XFS_DIFLAG_PROJINHERIT | XFS_DIFLAG_NOSYMLINKS | XFS_DIFLAG_EXTSIZE | \
+- XFS_DIFLAG_EXTSZINHERIT | XFS_DIFLAG_NODEFRAG | XFS_DIFLAG_FILESTREAM)
++ XFS_DIFLAG_EXTSZINHERIT | XFS_DIFLAG_NODEFRAG | XFS_DIFLAG_FILESTREAM | \
++ XFS_DIFLAG_IXUNLINK)
++
++#define XFS_DIVFLAG_BARRIER 0x01
++#define XFS_DIVFLAG_COW 0x02
+
+ #endif /* __XFS_DINODE_H__ */
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_fs.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_fs.h
+--- linux-2.6.31.6/fs/xfs/xfs_fs.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_fs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -67,6 +67,9 @@ struct fsxattr {
+ #define XFS_XFLAG_EXTSZINHERIT 0x00001000 /* inherit inode extent size */
+ #define XFS_XFLAG_NODEFRAG 0x00002000 /* do not defragment */
+ #define XFS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
++#define XFS_XFLAG_IXUNLINK 0x00008000 /* immutable invert on unlink */
++#define XFS_XFLAG_BARRIER 0x10000000 /* chroot() barrier */
++#define XFS_XFLAG_COW 0x20000000 /* copy on write mark */
+ #define XFS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
+
+ /*
+@@ -292,7 +295,8 @@ typedef struct xfs_bstat {
+ __s32 bs_extents; /* number of extents */
+ __u32 bs_gen; /* generation count */
+ __u16 bs_projid; /* project id */
+- unsigned char bs_pad[14]; /* pad space, unused */
++ __u16 bs_tag; /* context tagging */
++ unsigned char bs_pad[12]; /* pad space, unused */
+ __u32 bs_dmevmask; /* DMIG event mask */
+ __u16 bs_dmstate; /* DMIG state info */
+ __u16 bs_aextents; /* attribute number of extents */
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_ialloc.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_ialloc.c
+--- linux-2.6.31.6/fs/xfs/xfs_ialloc.c 2009-06-11 17:13:09.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_ialloc.c 2009-09-10 16:11:43.000000000 +0200
+@@ -41,7 +41,6 @@
+ #include "xfs_error.h"
+ #include "xfs_bmap.h"
+
+-
+ /*
+ * Allocation group level functions.
+ */
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_inode.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_inode.c
+--- linux-2.6.31.6/fs/xfs/xfs_inode.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_inode.c 2009-09-10 16:11:43.000000000 +0200
+@@ -249,6 +249,7 @@ xfs_inotobp(
+ return 0;
+ }
+
++#include <linux/vs_tag.h>
+
+ /*
+ * This routine is called to map an inode to the buffer containing
+@@ -654,15 +655,25 @@ xfs_iformat_btree(
+ void
+ xfs_dinode_from_disk(
+ xfs_icdinode_t *to,
+- xfs_dinode_t *from)
++ xfs_dinode_t *from,
++ int tagged)
+ {
++ uint32_t uid, gid, tag;
++
+ to->di_magic = be16_to_cpu(from->di_magic);
+ to->di_mode = be16_to_cpu(from->di_mode);
+ to->di_version = from ->di_version;
+ to->di_format = from->di_format;
+ to->di_onlink = be16_to_cpu(from->di_onlink);
+- to->di_uid = be32_to_cpu(from->di_uid);
+- to->di_gid = be32_to_cpu(from->di_gid);
++
++ uid = be32_to_cpu(from->di_uid);
++ gid = be32_to_cpu(from->di_gid);
++ tag = be16_to_cpu(from->di_tag);
++
++ to->di_uid = INOTAG_UID(tagged, uid, gid);
++ to->di_gid = INOTAG_GID(tagged, uid, gid);
++ to->di_tag = INOTAG_TAG(tagged, uid, gid, tag);
++
+ to->di_nlink = be32_to_cpu(from->di_nlink);
+ to->di_projid = be16_to_cpu(from->di_projid);
+ memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad));
+@@ -683,21 +694,26 @@ xfs_dinode_from_disk(
+ to->di_dmevmask = be32_to_cpu(from->di_dmevmask);
+ to->di_dmstate = be16_to_cpu(from->di_dmstate);
+ to->di_flags = be16_to_cpu(from->di_flags);
++ to->di_vflags = be16_to_cpu(from->di_vflags);
+ to->di_gen = be32_to_cpu(from->di_gen);
+ }
+
+ void
+ xfs_dinode_to_disk(
+ xfs_dinode_t *to,
+- xfs_icdinode_t *from)
++ xfs_icdinode_t *from,
++ int tagged)
+ {
+ to->di_magic = cpu_to_be16(from->di_magic);
+ to->di_mode = cpu_to_be16(from->di_mode);
+ to->di_version = from ->di_version;
+ to->di_format = from->di_format;
+ to->di_onlink = cpu_to_be16(from->di_onlink);
+- to->di_uid = cpu_to_be32(from->di_uid);
+- to->di_gid = cpu_to_be32(from->di_gid);
++
++ to->di_uid = cpu_to_be32(TAGINO_UID(tagged, from->di_uid, from->di_tag));
++ to->di_gid = cpu_to_be32(TAGINO_GID(tagged, from->di_gid, from->di_tag));
++ to->di_tag = cpu_to_be16(TAGINO_TAG(tagged, from->di_tag));
++
+ to->di_nlink = cpu_to_be32(from->di_nlink);
+ to->di_projid = cpu_to_be16(from->di_projid);
+ memcpy(to->di_pad, from->di_pad, sizeof(to->di_pad));
+@@ -718,12 +734,14 @@ xfs_dinode_to_disk(
+ to->di_dmevmask = cpu_to_be32(from->di_dmevmask);
+ to->di_dmstate = cpu_to_be16(from->di_dmstate);
+ to->di_flags = cpu_to_be16(from->di_flags);
++ to->di_vflags = cpu_to_be16(from->di_vflags);
+ to->di_gen = cpu_to_be32(from->di_gen);
+ }
+
+ STATIC uint
+ _xfs_dic2xflags(
+- __uint16_t di_flags)
++ __uint16_t di_flags,
++ __uint16_t di_vflags)
+ {
+ uint flags = 0;
+
+@@ -734,6 +752,8 @@ _xfs_dic2xflags(
+ flags |= XFS_XFLAG_PREALLOC;
+ if (di_flags & XFS_DIFLAG_IMMUTABLE)
+ flags |= XFS_XFLAG_IMMUTABLE;
++ if (di_flags & XFS_DIFLAG_IXUNLINK)
++ flags |= XFS_XFLAG_IXUNLINK;
+ if (di_flags & XFS_DIFLAG_APPEND)
+ flags |= XFS_XFLAG_APPEND;
+ if (di_flags & XFS_DIFLAG_SYNC)
+@@ -758,6 +778,10 @@ _xfs_dic2xflags(
+ flags |= XFS_XFLAG_FILESTREAM;
+ }
+
++ if (di_vflags & XFS_DIVFLAG_BARRIER)
++ flags |= FS_BARRIER_FL;
++ if (di_vflags & XFS_DIVFLAG_COW)
++ flags |= FS_COW_FL;
+ return flags;
+ }
+
+@@ -767,7 +791,7 @@ xfs_ip2xflags(
+ {
+ xfs_icdinode_t *dic = &ip->i_d;
+
+- return _xfs_dic2xflags(dic->di_flags) |
++ return _xfs_dic2xflags(dic->di_flags, dic->di_vflags) |
+ (XFS_IFORK_Q(ip) ? XFS_XFLAG_HASATTR : 0);
+ }
+
+@@ -775,7 +799,8 @@ uint
+ xfs_dic2xflags(
+ xfs_dinode_t *dip)
+ {
+- return _xfs_dic2xflags(be16_to_cpu(dip->di_flags)) |
++ return _xfs_dic2xflags(be16_to_cpu(dip->di_flags),
++ be16_to_cpu(dip->di_vflags)) |
+ (XFS_DFORK_Q(dip) ? XFS_XFLAG_HASATTR : 0);
+ }
+
+@@ -811,7 +836,6 @@ xfs_iread(
+ if (error)
+ return error;
+ dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset);
+-
+ /*
+ * If we got something that isn't an inode it means someone
+ * (nfs or dmi) has a stale handle.
+@@ -836,7 +860,8 @@ xfs_iread(
+ * Otherwise, just get the truly permanent information.
+ */
+ if (dip->di_mode) {
+- xfs_dinode_from_disk(&ip->i_d, dip);
++ xfs_dinode_from_disk(&ip->i_d, dip,
++ mp->m_flags & XFS_MOUNT_TAGGED);
+ error = xfs_iformat(ip, dip);
+ if (error) {
+ #ifdef DEBUG
+@@ -1036,6 +1061,7 @@ xfs_ialloc(
+ ASSERT(ip->i_d.di_nlink == nlink);
+ ip->i_d.di_uid = current_fsuid();
+ ip->i_d.di_gid = current_fsgid();
++ ip->i_d.di_tag = current_fstag(cr, &ip->i_vnode);
+ ip->i_d.di_projid = prid;
+ memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad));
+
+@@ -1096,6 +1122,7 @@ xfs_ialloc(
+ ip->i_d.di_dmevmask = 0;
+ ip->i_d.di_dmstate = 0;
+ ip->i_d.di_flags = 0;
++ ip->i_d.di_vflags = 0;
+ flags = XFS_ILOG_CORE;
+ switch (mode & S_IFMT) {
+ case S_IFIFO:
+@@ -2172,6 +2199,7 @@ xfs_ifree(
+ }
+ ip->i_d.di_mode = 0; /* mark incore inode as free */
+ ip->i_d.di_flags = 0;
++ ip->i_d.di_vflags = 0;
+ ip->i_d.di_dmevmask = 0;
+ ip->i_d.di_forkoff = 0; /* mark the attr fork not in use */
+ ip->i_df.if_ext_max =
+@@ -3139,7 +3167,8 @@ xfs_iflush_int(
+ * because if the inode is dirty at all the core must
+ * be.
+ */
+- xfs_dinode_to_disk(dip, &ip->i_d);
++ xfs_dinode_to_disk(dip, &ip->i_d,
++ mp->m_flags & XFS_MOUNT_TAGGED);
+
+ /* Wrap, we never let the log put out DI_MAX_FLUSH */
+ if (ip->i_d.di_flushiter == DI_MAX_FLUSH)
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_inode.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_inode.h
+--- linux-2.6.31.6/fs/xfs/xfs_inode.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_inode.h 2009-09-10 16:11:43.000000000 +0200
+@@ -135,7 +135,9 @@ typedef struct xfs_icdinode {
+ __uint32_t di_gid; /* owner's group id */
+ __uint32_t di_nlink; /* number of links to file */
+ __uint16_t di_projid; /* owner's project id */
+- __uint8_t di_pad[8]; /* unused, zeroed space */
++ __uint16_t di_tag; /* context tagging */
++ __uint16_t di_vflags; /* vserver specific flags */
++ __uint8_t di_pad[4]; /* unused, zeroed space */
+ __uint16_t di_flushiter; /* incremented on flush */
+ xfs_ictimestamp_t di_atime; /* time last accessed */
+ xfs_ictimestamp_t di_mtime; /* time last modified */
+@@ -573,9 +575,9 @@ int xfs_itobp(struct xfs_mount *, struc
+ int xfs_iread(struct xfs_mount *, struct xfs_trans *,
+ struct xfs_inode *, xfs_daddr_t, uint);
+ void xfs_dinode_from_disk(struct xfs_icdinode *,
+- struct xfs_dinode *);
++ struct xfs_dinode *, int);
+ void xfs_dinode_to_disk(struct xfs_dinode *,
+- struct xfs_icdinode *);
++ struct xfs_icdinode *, int);
+ void xfs_idestroy_fork(struct xfs_inode *, int);
+ void xfs_idata_realloc(struct xfs_inode *, int, int);
+ void xfs_iroot_realloc(struct xfs_inode *, int, int);
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_itable.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_itable.c
+--- linux-2.6.31.6/fs/xfs/xfs_itable.c 2009-06-11 17:13:09.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_itable.c 2009-09-10 16:11:43.000000000 +0200
+@@ -82,6 +82,7 @@ xfs_bulkstat_one_iget(
+ buf->bs_mode = dic->di_mode;
+ buf->bs_uid = dic->di_uid;
+ buf->bs_gid = dic->di_gid;
++ buf->bs_tag = dic->di_tag;
+ buf->bs_size = dic->di_size;
+ /*
+ * We are reading the atime from the Linux inode because the
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_log_recover.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_log_recover.c
+--- linux-2.6.31.6/fs/xfs/xfs_log_recover.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_log_recover.c 2009-09-10 16:11:43.000000000 +0200
+@@ -2467,7 +2467,8 @@ xlog_recover_do_inode_trans(
+ }
+
+ /* The core is in in-core format */
+- xfs_dinode_to_disk(dip, (xfs_icdinode_t *)item->ri_buf[1].i_addr);
++ xfs_dinode_to_disk(dip, (xfs_icdinode_t *)item->ri_buf[1].i_addr,
++ mp->m_flags & XFS_MOUNT_TAGGED);
+
+ /* the rest is in on-disk format */
+ if (item->ri_buf[1].i_len > sizeof(struct xfs_icdinode)) {
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_mount.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_mount.h
+--- linux-2.6.31.6/fs/xfs/xfs_mount.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_mount.h 2009-09-10 16:11:43.000000000 +0200
+@@ -283,6 +283,7 @@ typedef struct xfs_mount {
+ allocator */
+ #define XFS_MOUNT_NOATTR2 (1ULL << 25) /* disable use of attr2 format */
+
++#define XFS_MOUNT_TAGGED (1ULL << 31) /* context tagging */
+
+ /*
+ * Default minimum read and write sizes.
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_vnodeops.c linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_vnodeops.c
+--- linux-2.6.31.6/fs/xfs/xfs_vnodeops.c 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_vnodeops.c 2009-10-07 15:57:06.000000000 +0200
+@@ -54,6 +54,80 @@
+ #include "xfs_filestream.h"
+ #include "xfs_vnodeops.h"
+
++
++STATIC void
++xfs_get_inode_flags(
++ xfs_inode_t *ip)
++{
++ struct inode *inode = VFS_I(ip);
++ unsigned int flags = inode->i_flags;
++ unsigned int vflags = inode->i_vflags;
++
++ if (flags & S_IMMUTABLE)
++ ip->i_d.di_flags |= XFS_DIFLAG_IMMUTABLE;
++ else
++ ip->i_d.di_flags &= ~XFS_DIFLAG_IMMUTABLE;
++ if (flags & S_IXUNLINK)
++ ip->i_d.di_flags |= XFS_DIFLAG_IXUNLINK;
++ else
++ ip->i_d.di_flags &= ~XFS_DIFLAG_IXUNLINK;
++
++ if (vflags & V_BARRIER)
++ ip->i_d.di_vflags |= XFS_DIVFLAG_BARRIER;
++ else
++ ip->i_d.di_vflags &= ~XFS_DIVFLAG_BARRIER;
++ if (vflags & V_COW)
++ ip->i_d.di_vflags |= XFS_DIVFLAG_COW;
++ else
++ ip->i_d.di_vflags &= ~XFS_DIVFLAG_COW;
++}
++
++int
++xfs_sync_flags(
++ struct inode *inode,
++ int flags,
++ int vflags)
++{
++ struct xfs_inode *ip = XFS_I(inode);
++ struct xfs_mount *mp = ip->i_mount;
++ struct xfs_trans *tp;
++ unsigned int lock_flags = 0;
++ int code;
++
++ tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE);
++ code = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0);
++ if (code)
++ goto error_out;
++
++ lock_flags = XFS_ILOCK_EXCL;
++ xfs_ilock(ip, lock_flags);
++
++ xfs_trans_ijoin(tp, ip, lock_flags);
++ xfs_trans_ihold(tp, ip);
++
++ inode->i_flags = flags;
++ inode->i_vflags = vflags;
++ xfs_get_inode_flags(ip);
++
++ xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
++ xfs_ichgtime(ip, XFS_ICHGTIME_CHG);
++
++ XFS_STATS_INC(xs_ig_attrchg);
++
++ if (mp->m_flags & XFS_MOUNT_WSYNC)
++ xfs_trans_set_sync(tp);
++ code = xfs_trans_commit(tp, 0);
++ xfs_iunlock(ip, lock_flags);
++ return code;
++
++error_out:
++ xfs_trans_cancel(tp, 0);
++ if (lock_flags)
++ xfs_iunlock(ip, lock_flags);
++ return code;
++}
++
++
+ int
+ xfs_setattr(
+ struct xfs_inode *ip,
+@@ -69,6 +143,7 @@ xfs_setattr(
+ uint commit_flags=0;
+ uid_t uid=0, iuid=0;
+ gid_t gid=0, igid=0;
++ tag_t tag=0, itag=0;
+ int timeflags = 0;
+ struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2;
+ int need_iolock = 1;
+@@ -165,7 +240,7 @@ xfs_setattr(
+ /*
+ * Change file ownership. Must be the owner or privileged.
+ */
+- if (mask & (ATTR_UID|ATTR_GID)) {
++ if (mask & (ATTR_UID|ATTR_GID|ATTR_TAG)) {
+ /*
+ * These IDs could have changed since we last looked at them.
+ * But, we're assured that if the ownership did change
+@@ -174,8 +249,10 @@ xfs_setattr(
+ */
+ iuid = ip->i_d.di_uid;
+ igid = ip->i_d.di_gid;
++ itag = ip->i_d.di_tag;
+ gid = (mask & ATTR_GID) ? iattr->ia_gid : igid;
+ uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid;
++ tag = (mask & ATTR_TAG) ? iattr->ia_tag : itag;
+
+ /*
+ * Do a quota reservation only if uid/gid is actually
+@@ -183,7 +260,8 @@ xfs_setattr(
+ */
+ if (XFS_IS_QUOTA_RUNNING(mp) &&
+ ((XFS_IS_UQUOTA_ON(mp) && iuid != uid) ||
+- (XFS_IS_GQUOTA_ON(mp) && igid != gid))) {
++ (XFS_IS_GQUOTA_ON(mp) && igid != gid) ||
++ (XFS_IS_GQUOTA_ON(mp) && itag != tag))) {
+ ASSERT(tp);
+ code = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp,
+ capable(CAP_FOWNER) ?
+@@ -336,7 +414,7 @@ xfs_setattr(
+ /*
+ * Change file ownership. Must be the owner or privileged.
+ */
+- if (mask & (ATTR_UID|ATTR_GID)) {
++ if (mask & (ATTR_UID|ATTR_GID|ATTR_TAG)) {
+ /*
+ * CAP_FSETID overrides the following restrictions:
+ *
+@@ -352,6 +430,10 @@ xfs_setattr(
+ * Change the ownerships and register quota modifications
+ * in the transaction.
+ */
++ if (itag != tag) {
++ ip->i_d.di_tag = tag;
++ inode->i_tag = tag;
++ }
+ if (iuid != uid) {
+ if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) {
+ ASSERT(mask & ATTR_UID);
+diff -NurpP --minimal linux-2.6.31.6/fs/xfs/xfs_vnodeops.h linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_vnodeops.h
+--- linux-2.6.31.6/fs/xfs/xfs_vnodeops.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/fs/xfs/xfs_vnodeops.h 2009-09-10 16:11:43.000000000 +0200
+@@ -14,6 +14,7 @@ struct xfs_inode;
+ struct xfs_iomap;
+
+
++int xfs_sync_xflags(struct xfs_inode *ip);
+ int xfs_setattr(struct xfs_inode *ip, struct iattr *vap, int flags);
+ #define XFS_ATTR_DMI 0x01 /* invocation from a DMI function */
+ #define XFS_ATTR_NONBLOCK 0x02 /* return EAGAIN if operation would block */
+diff -NurpP --minimal linux-2.6.31.6/include/asm-generic/tlb.h linux-2.6.31.6-vs2.3.0.36.24/include/asm-generic/tlb.h
+--- linux-2.6.31.6/include/asm-generic/tlb.h 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/asm-generic/tlb.h 2009-09-10 16:11:43.000000000 +0200
+@@ -14,6 +14,7 @@
+ #define _ASM_GENERIC__TLB_H
+
+ #include <linux/swap.h>
++#include <linux/vs_memory.h>
+ #include <asm/pgalloc.h>
+ #include <asm/tlbflush.h>
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/capability.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/capability.h
+--- linux-2.6.31.6/include/linux/capability.h 2009-06-11 17:13:13.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/capability.h 2009-09-10 16:11:43.000000000 +0200
+@@ -285,6 +285,7 @@ struct cpu_vfs_cap_data {
+ 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
+
+@@ -357,7 +358,13 @@ struct cpu_vfs_cap_data {
+
+ #define CAP_MAC_ADMIN 33
+
+-#define CAP_LAST_CAP CAP_MAC_ADMIN
++/* Allow context manipulations */
++/* Allow changing context info on files */
++
++#define CAP_CONTEXT 34
++
++
++#define CAP_LAST_CAP CAP_CONTEXT
+
+ #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/devpts_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/devpts_fs.h
+--- linux-2.6.31.6/include/linux/devpts_fs.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/devpts_fs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -45,5 +45,4 @@ static inline void devpts_pty_kill(struc
+
+ #endif
+
+-
+ #endif /* _LINUX_DEVPTS_FS_H */
+diff -NurpP --minimal linux-2.6.31.6/include/linux/ext2_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/ext2_fs.h
+--- linux-2.6.31.6/include/linux/ext2_fs.h 2009-03-24 14:22:41.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/ext2_fs.h 2009-10-12 05:20:23.000000000 +0200
+@@ -189,8 +189,12 @@ struct ext2_group_desc
+ #define EXT2_NOTAIL_FL FS_NOTAIL_FL /* file tail should not be merged */
+ #define EXT2_DIRSYNC_FL FS_DIRSYNC_FL /* dirsync behaviour (directories only) */
+ #define EXT2_TOPDIR_FL FS_TOPDIR_FL /* Top of directory hierarchies*/
++#define EXT2_IXUNLINK_FL FS_IXUNLINK_FL /* Immutable invert on unlink */
+ #define EXT2_RESERVED_FL FS_RESERVED_FL /* reserved for ext2 lib */
+
++#define EXT2_BARRIER_FL FS_BARRIER_FL /* Barrier for chroot() */
++#define EXT2_COW_FL FS_COW_FL /* Copy on Write marker */
++
+ #define EXT2_FL_USER_VISIBLE FS_FL_USER_VISIBLE /* User visible flags */
+ #define EXT2_FL_USER_MODIFIABLE FS_FL_USER_MODIFIABLE /* User modifiable flags */
+
+@@ -274,7 +278,8 @@ struct ext2_inode {
+ __u16 i_pad1;
+ __le16 l_i_uid_high; /* these 2 fields */
+ __le16 l_i_gid_high; /* were reserved2[0] */
+- __u32 l_i_reserved2;
++ __le16 l_i_tag; /* Context Tag */
++ __u16 l_i_reserved2;
+ } linux2;
+ struct {
+ __u8 h_i_frag; /* Fragment number */
+@@ -303,6 +308,7 @@ struct ext2_inode {
+ #define i_gid_low i_gid
+ #define i_uid_high osd2.linux2.l_i_uid_high
+ #define i_gid_high osd2.linux2.l_i_gid_high
++#define i_raw_tag osd2.linux2.l_i_tag
+ #define i_reserved2 osd2.linux2.l_i_reserved2
+ #endif
+
+@@ -347,6 +353,7 @@ struct ext2_inode {
+ #define EXT2_MOUNT_USRQUOTA 0x020000 /* user quota */
+ #define EXT2_MOUNT_GRPQUOTA 0x040000 /* group quota */
+ #define EXT2_MOUNT_RESERVATION 0x080000 /* Preallocation */
++#define EXT2_MOUNT_TAGGED (1<<24) /* Enable Context Tags */
+
+
+ #define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt
+diff -NurpP --minimal linux-2.6.31.6/include/linux/ext3_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/ext3_fs.h
+--- linux-2.6.31.6/include/linux/ext3_fs.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/ext3_fs.h 2009-10-12 05:20:40.000000000 +0200
+@@ -173,10 +173,14 @@ struct ext3_group_desc
+ #define EXT3_NOTAIL_FL 0x00008000 /* file tail should not be merged */
+ #define EXT3_DIRSYNC_FL 0x00010000 /* dirsync behaviour (directories only) */
+ #define EXT3_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/
++#define EXT3_IXUNLINK_FL 0x08000000 /* Immutable invert on unlink */
+ #define EXT3_RESERVED_FL 0x80000000 /* reserved for ext3 lib */
+
+-#define EXT3_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */
+-#define EXT3_FL_USER_MODIFIABLE 0x000380FF /* User modifiable flags */
++#define EXT3_BARRIER_FL 0x04000000 /* Barrier for chroot() */
++#define EXT3_COW_FL 0x20000000 /* Copy on Write marker */
++
++#define EXT3_FL_USER_VISIBLE 0x0103DFFF /* User visible flags */
++#define EXT3_FL_USER_MODIFIABLE 0x010380FF /* User modifiable flags */
+
+ /* Flags that should be inherited by new inodes from their parent. */
+ #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\
+@@ -320,7 +324,8 @@ struct ext3_inode {
+ __u16 i_pad1;
+ __le16 l_i_uid_high; /* these 2 fields */
+ __le16 l_i_gid_high; /* were reserved2[0] */
+- __u32 l_i_reserved2;
++ __le16 l_i_tag; /* Context Tag */
++ __u16 l_i_reserved2;
+ } linux2;
+ struct {
+ __u8 h_i_frag; /* Fragment number */
+@@ -351,6 +356,7 @@ struct ext3_inode {
+ #define i_gid_low i_gid
+ #define i_uid_high osd2.linux2.l_i_uid_high
+ #define i_gid_high osd2.linux2.l_i_gid_high
++#define i_raw_tag osd2.linux2.l_i_tag
+ #define i_reserved2 osd2.linux2.l_i_reserved2
+
+ #elif defined(__GNU__)
+@@ -414,6 +420,7 @@ struct ext3_inode {
+ #define EXT3_MOUNT_GRPQUOTA 0x200000 /* "old" group quota */
+ #define EXT3_MOUNT_DATA_ERR_ABORT 0x400000 /* Abort on file data write
+ * error in ordered mode */
++#define EXT3_MOUNT_TAGGED (1<<24) /* Enable Context Tags */
+
+ /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */
+ #ifndef _LINUX_EXT2_FS_H
+@@ -892,6 +899,7 @@ extern void ext3_get_inode_flags(struct
+ extern void ext3_set_aops(struct inode *inode);
+ extern int ext3_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+ u64 start, u64 len);
++extern int ext3_sync_flags(struct inode *, int, int);
+
+ /* ioctl.c */
+ extern long ext3_ioctl(struct file *, unsigned int, unsigned long);
+diff -NurpP --minimal linux-2.6.31.6/include/linux/fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/fs.h
+--- linux-2.6.31.6/include/linux/fs.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/fs.h 2009-10-06 23:35:53.000000000 +0200
+@@ -205,6 +205,9 @@ struct inodes_stat_t {
+ #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
+ #define MS_I_VERSION (1<<23) /* Update inode I_version field */
+ #define MS_STRICTATIME (1<<24) /* Always perform atime updates */
++#define MS_TAGGED (1<<25) /* use generic inode tagging */
++#define MS_TAGID (1<<26) /* use specific tag for this mount */
++#define MS_NOTAGCHECK (1<<27) /* don't check tags */
+ #define MS_ACTIVE (1<<30)
+ #define MS_NOUSER (1<<31)
+
+@@ -231,6 +234,14 @@ struct inodes_stat_t {
+ #define S_NOCMTIME 128 /* Do not update file c/mtime */
+ #define S_SWAPFILE 256 /* Do not truncate: swapon got its bmaps */
+ #define S_PRIVATE 512 /* Inode is fs-internal */
++#define S_IXUNLINK 1024 /* Immutable Invert on unlink */
++
++/* Linux-VServer related Inode flags */
++
++#define V_VALID 1
++#define V_XATTR 2
++#define V_BARRIER 4 /* Barrier for chroot() */
++#define V_COW 8 /* Copy on Write */
+
+ /*
+ * Note that nosuid etc flags are inode-specific: setting some file-system
+@@ -253,12 +264,15 @@ struct inodes_stat_t {
+ #define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
+ ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
+ #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
+-#define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
+-#define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION)
++#define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
++#define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION)
++#define IS_TAGGED(inode) __IS_FLG(inode, MS_TAGGED)
+
+ #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
+ #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
+ #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
++#define IS_IXUNLINK(inode) ((inode)->i_flags & S_IXUNLINK)
++#define IS_IXORUNLINK(inode) ((IS_IXUNLINK(inode) ? S_IMMUTABLE : 0) ^ IS_IMMUTABLE(inode))
+ #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL)
+
+ #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
+@@ -266,6 +280,16 @@ struct inodes_stat_t {
+ #define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
+ #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
+
++#define IS_BARRIER(inode) (S_ISDIR((inode)->i_mode) && ((inode)->i_vflags & V_BARRIER))
++
++#ifdef CONFIG_VSERVER_COWBL
++# define IS_COW(inode) (IS_IXUNLINK(inode) && IS_IMMUTABLE(inode))
++# define IS_COW_LINK(inode) (S_ISREG((inode)->i_mode) && ((inode)->i_nlink > 1))
++#else
++# define IS_COW(inode) (0)
++# define IS_COW_LINK(inode) (0)
++#endif
++
+ /* the read-only stuff doesn't really belong here, but any other place is
+ probably as bad and I don't want to create yet another include file. */
+
+@@ -343,11 +367,14 @@ struct inodes_stat_t {
+ #define FS_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/
+ #define FS_EXTENT_FL 0x00080000 /* Extents */
+ #define FS_DIRECTIO_FL 0x00100000 /* Use direct i/o */
++#define FS_IXUNLINK_FL 0x08000000 /* Immutable invert on unlink */
+ #define FS_RESERVED_FL 0x80000000 /* reserved for ext2 lib */
+
+-#define FS_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */
+-#define FS_FL_USER_MODIFIABLE 0x000380FF /* User modifiable flags */
++#define FS_BARRIER_FL 0x04000000 /* Barrier for chroot() */
++#define FS_COW_FL 0x20000000 /* Copy on Write marker */
+
++#define FS_FL_USER_VISIBLE 0x0103DFFF /* User visible flags */
++#define FS_FL_USER_MODIFIABLE 0x010380FF /* User modifiable flags */
+
+ #define SYNC_FILE_RANGE_WAIT_BEFORE 1
+ #define SYNC_FILE_RANGE_WRITE 2
+@@ -429,6 +456,7 @@ typedef void (dio_iodone_t)(struct kiocb
+ #define ATTR_KILL_PRIV (1 << 14)
+ #define ATTR_OPEN (1 << 15) /* Truncating from open(O_TRUNC) */
+ #define ATTR_TIMES_SET (1 << 16)
++#define ATTR_TAG (1 << 17)
+
+ /*
+ * This is the Inode Attributes structure, used for notify_change(). It
+@@ -444,6 +472,7 @@ struct iattr {
+ umode_t ia_mode;
+ uid_t ia_uid;
+ gid_t ia_gid;
++ tag_t ia_tag;
+ loff_t ia_size;
+ struct timespec ia_atime;
+ struct timespec ia_mtime;
+@@ -457,6 +486,9 @@ struct iattr {
+ struct file *ia_file;
+ };
+
++#define ATTR_FLAG_BARRIER 512 /* Barrier for chroot() */
++#define ATTR_FLAG_IXUNLINK 1024 /* Immutable invert on unlink */
++
+ /*
+ * Includes for diskquotas.
+ */
+@@ -723,7 +755,9 @@ struct inode {
+ unsigned int i_nlink;
+ uid_t i_uid;
+ gid_t i_gid;
++ tag_t i_tag;
+ dev_t i_rdev;
++ dev_t i_mdev;
+ u64 i_version;
+ loff_t i_size;
+ #ifdef __NEED_I_SIZE_ORDERED
+@@ -770,7 +804,8 @@ struct inode {
+ unsigned long i_state;
+ unsigned long dirtied_when; /* jiffies of first dirtying */
+
+- unsigned int i_flags;
++ unsigned short i_flags;
++ unsigned short i_vflags;
+
+ atomic_t i_writecount;
+ #ifdef CONFIG_SECURITY
+@@ -858,12 +893,12 @@ static inline void i_size_write(struct i
+
+ static inline unsigned iminor(const struct inode *inode)
+ {
+- return MINOR(inode->i_rdev);
++ return MINOR(inode->i_mdev);
+ }
+
+ static inline unsigned imajor(const struct inode *inode)
+ {
+- return MAJOR(inode->i_rdev);
++ return MAJOR(inode->i_mdev);
+ }
+
+ extern struct block_device *I_BDEV(struct inode *inode);
+@@ -922,6 +957,7 @@ struct file {
+ loff_t f_pos;
+ struct fown_struct f_owner;
+ const struct cred *f_cred;
++ xid_t f_xid;
+ struct file_ra_state f_ra;
+
+ u64 f_version;
+@@ -1063,6 +1099,7 @@ struct file_lock {
+ struct file *fl_file;
+ loff_t fl_start;
+ loff_t fl_end;
++ xid_t fl_xid;
+
+ struct fasync_struct * fl_fasync; /* for lease break notifications */
+ unsigned long fl_break_time; /* for nonblocking lease breaks */
+@@ -1534,6 +1571,7 @@ struct inode_operations {
+ ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
+ ssize_t (*listxattr) (struct dentry *, char *, size_t);
+ int (*removexattr) (struct dentry *, const char *);
++ int (*sync_flags) (struct inode *, int, int);
+ void (*truncate_range)(struct inode *, loff_t, loff_t);
+ long (*fallocate)(struct inode *inode, int mode, loff_t offset,
+ loff_t len);
+@@ -1554,6 +1592,7 @@ extern ssize_t vfs_readv(struct file *,
+ unsigned long, loff_t *);
+ extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
+ unsigned long, loff_t *);
++ssize_t vfs_sendfile(struct file *, struct file *, loff_t *, size_t, loff_t);
+
+ struct super_operations {
+ struct inode *(*alloc_inode)(struct super_block *sb);
+@@ -2328,6 +2367,7 @@ extern int dcache_dir_open(struct inode
+ extern int dcache_dir_close(struct inode *, struct file *);
+ extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
+ extern int dcache_readdir(struct file *, void *, filldir_t);
++extern int dcache_readdir_filter(struct file *, void *, filldir_t, int (*)(struct dentry *));
+ extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
+ extern int simple_statfs(struct dentry *, struct kstatfs *);
+ extern int simple_link(struct dentry *, struct inode *, struct dentry *);
+diff -NurpP --minimal linux-2.6.31.6/include/linux/gfs2_ondisk.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/gfs2_ondisk.h
+--- linux-2.6.31.6/include/linux/gfs2_ondisk.h 2009-03-24 14:22:41.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/gfs2_ondisk.h 2009-10-07 18:20:44.000000000 +0200
+@@ -235,6 +235,9 @@ enum {
+ gfs2fl_NoAtime = 7,
+ gfs2fl_Sync = 8,
+ gfs2fl_System = 9,
++ gfs2fl_IXUnlink = 16,
++ gfs2fl_Barrier = 17,
++ gfs2fl_Cow = 18,
+ gfs2fl_TruncInProg = 29,
+ gfs2fl_InheritDirectio = 30,
+ gfs2fl_InheritJdata = 31,
+@@ -251,6 +254,9 @@ enum {
+ #define GFS2_DIF_NOATIME 0x00000080
+ #define GFS2_DIF_SYNC 0x00000100
+ #define GFS2_DIF_SYSTEM 0x00000200 /* New in gfs2 */
++#define GFS2_DIF_IXUNLINK 0x00010000
++#define GFS2_DIF_BARRIER 0x00020000
++#define GFS2_DIF_COW 0x00040000
+ #define GFS2_DIF_TRUNC_IN_PROG 0x20000000 /* New in gfs2 */
+ #define GFS2_DIF_INHERIT_DIRECTIO 0x40000000
+ #define GFS2_DIF_INHERIT_JDATA 0x80000000
+diff -NurpP --minimal linux-2.6.31.6/include/linux/if_tun.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/if_tun.h
+--- linux-2.6.31.6/include/linux/if_tun.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/if_tun.h 2009-09-10 16:11:43.000000000 +0200
+@@ -48,6 +48,7 @@
+ #define TUNGETIFF _IOR('T', 210, unsigned int)
+ #define TUNGETSNDBUF _IOR('T', 211, int)
+ #define TUNSETSNDBUF _IOW('T', 212, int)
++#define TUNSETNID _IOW('T', 215, int)
+
+ /* TUNSETIFF ifr flags */
+ #define IFF_TUN 0x0001
+diff -NurpP --minimal linux-2.6.31.6/include/linux/init_task.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/init_task.h
+--- linux-2.6.31.6/include/linux/init_task.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/init_task.h 2009-09-10 17:13:45.000000000 +0200
+@@ -173,6 +173,10 @@ extern struct cred init_cred;
+ INIT_LOCKDEP \
+ INIT_FTRACE_GRAPH \
+ INIT_TRACE_RECURSION \
++ .xid = 0, \
++ .vx_info = NULL, \
++ .nid = 0, \
++ .nx_info = NULL, \
+ }
+
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/interrupt.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/interrupt.h
+--- linux-2.6.31.6/include/linux/interrupt.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/interrupt.h 2009-09-10 16:11:43.000000000 +0200
+@@ -9,8 +9,8 @@
+ #include <linux/cpumask.h>
+ #include <linux/irqreturn.h>
+ #include <linux/irqnr.h>
+-#include <linux/hardirq.h>
+ #include <linux/sched.h>
++#include <linux/hardirq.h>
+ #include <linux/irqflags.h>
+ #include <linux/smp.h>
+ #include <linux/percpu.h>
+diff -NurpP --minimal linux-2.6.31.6/include/linux/ipc.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/ipc.h
+--- linux-2.6.31.6/include/linux/ipc.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/ipc.h 2009-09-10 16:11:43.000000000 +0200
+@@ -93,6 +93,7 @@ struct kern_ipc_perm
+ key_t key;
+ uid_t uid;
+ gid_t gid;
++ xid_t xid;
+ uid_t cuid;
+ gid_t cgid;
+ mode_t mode;
+diff -NurpP --minimal linux-2.6.31.6/include/linux/Kbuild linux-2.6.31.6-vs2.3.0.36.24/include/linux/Kbuild
+--- linux-2.6.31.6/include/linux/Kbuild 2009-09-10 15:26:24.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/Kbuild 2009-09-10 16:11:43.000000000 +0200
+@@ -376,5 +376,8 @@ unifdef-y += xattr.h
+ unifdef-y += xfrm.h
+
+ objhdr-y += version.h
++
++header-y += vserver/
+ header-y += wimax.h
+ header-y += wimax/
++
+diff -NurpP --minimal linux-2.6.31.6/include/linux/loop.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/loop.h
+--- linux-2.6.31.6/include/linux/loop.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/loop.h 2009-09-10 16:11:43.000000000 +0200
+@@ -45,6 +45,7 @@ struct loop_device {
+ struct loop_func_table *lo_encryption;
+ __u32 lo_init[2];
+ uid_t lo_key_owner; /* Who set the key */
++ xid_t lo_xid;
+ int (*ioctl)(struct loop_device *, int cmd,
+ unsigned long arg);
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/magic.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/magic.h
+--- linux-2.6.31.6/include/linux/magic.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/magic.h 2009-09-10 16:11:43.000000000 +0200
+@@ -3,7 +3,7 @@
+
+ #define ADFS_SUPER_MAGIC 0xadf5
+ #define AFFS_SUPER_MAGIC 0xadff
+-#define AFS_SUPER_MAGIC 0x5346414F
++#define AFS_SUPER_MAGIC 0x5346414F
+ #define AUTOFS_SUPER_MAGIC 0x0187
+ #define CODA_SUPER_MAGIC 0x73757245
+ #define CRAMFS_MAGIC 0x28cd3d45 /* some random number */
+@@ -36,6 +36,7 @@
+ #define NFS_SUPER_MAGIC 0x6969
+ #define OPENPROM_SUPER_MAGIC 0x9fa1
+ #define PROC_SUPER_MAGIC 0x9fa0
++#define DEVPTS_SUPER_MAGIC 0x1cd1
+ #define QNX4_SUPER_MAGIC 0x002f /* qnx4 fs detection */
+
+ #define REISERFS_SUPER_MAGIC 0x52654973 /* used by gcc */
+diff -NurpP --minimal linux-2.6.31.6/include/linux/major.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/major.h
+--- linux-2.6.31.6/include/linux/major.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/major.h 2009-09-10 16:11:43.000000000 +0200
+@@ -15,6 +15,7 @@
+ #define HD_MAJOR IDE0_MAJOR
+ #define PTY_SLAVE_MAJOR 3
+ #define TTY_MAJOR 4
++#define VROOT_MAJOR 4
+ #define TTYAUX_MAJOR 5
+ #define LP_MAJOR 6
+ #define VCS_MAJOR 7
+diff -NurpP --minimal linux-2.6.31.6/include/linux/mm_types.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/mm_types.h
+--- linux-2.6.31.6/include/linux/mm_types.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/mm_types.h 2009-09-10 16:11:43.000000000 +0200
+@@ -244,6 +244,7 @@ struct mm_struct {
+
+ /* Architecture-specific MM context */
+ mm_context_t context;
++ struct vx_info *mm_vx_info;
+
+ /* Swap token stuff */
+ /*
+diff -NurpP --minimal linux-2.6.31.6/include/linux/mount.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/mount.h
+--- linux-2.6.31.6/include/linux/mount.h 2009-09-10 15:26:25.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/mount.h 2009-09-10 17:14:39.000000000 +0200
+@@ -36,6 +36,9 @@ struct mnt_namespace;
+ #define MNT_UNBINDABLE 0x2000 /* if the vfsmount is a unbindable mount */
+ #define MNT_PNODE_MASK 0x3000 /* propagation flag mask */
+
++#define MNT_TAGID 0x10000
++#define MNT_NOTAG 0x20000
++
+ struct vfsmount {
+ struct list_head mnt_hash;
+ struct vfsmount *mnt_parent; /* fs we are mounted on */
+@@ -70,6 +73,7 @@ struct vfsmount {
+ #else
+ int mnt_writers;
+ #endif
++ tag_t mnt_tag; /* tagging used for vfsmount */
+ };
+
+ static inline int *get_mnt_writers_ptr(struct vfsmount *mnt)
+diff -NurpP --minimal linux-2.6.31.6/include/linux/net.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/net.h
+--- linux-2.6.31.6/include/linux/net.h 2009-06-11 17:13:15.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/net.h 2009-09-10 16:11:43.000000000 +0200
+@@ -68,6 +68,7 @@ struct net;
+ #define SOCK_NOSPACE 2
+ #define SOCK_PASSCRED 3
+ #define SOCK_PASSSEC 4
++#define SOCK_USER_SOCKET 5
+
+ #ifndef ARCH_HAS_SOCKET_TYPES
+ /**
+diff -NurpP --minimal linux-2.6.31.6/include/linux/nfs_mount.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/nfs_mount.h
+--- linux-2.6.31.6/include/linux/nfs_mount.h 2009-03-24 14:22:43.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/nfs_mount.h 2009-09-10 16:11:43.000000000 +0200
+@@ -63,7 +63,8 @@ struct nfs_mount_data {
+ #define NFS_MOUNT_SECFLAVOUR 0x2000 /* 5 */
+ #define NFS_MOUNT_NORDIRPLUS 0x4000 /* 5 */
+ #define NFS_MOUNT_UNSHARED 0x8000 /* 5 */
+-#define NFS_MOUNT_FLAGMASK 0xFFFF
++#define NFS_MOUNT_TAGGED 0x10000 /* context tagging */
++#define NFS_MOUNT_FLAGMASK 0x1FFFF
+
+ /* The following are for internal use only */
+ #define NFS_MOUNT_LOOKUP_CACHE_NONEG 0x10000
+diff -NurpP --minimal linux-2.6.31.6/include/linux/nsproxy.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/nsproxy.h
+--- linux-2.6.31.6/include/linux/nsproxy.h 2009-06-11 17:13:17.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/nsproxy.h 2009-09-10 16:11:43.000000000 +0200
+@@ -3,6 +3,7 @@
+
+ #include <linux/spinlock.h>
+ #include <linux/sched.h>
++#include <linux/vserver/debug.h>
+
+ struct mnt_namespace;
+ struct uts_namespace;
+@@ -63,22 +64,33 @@ static inline struct nsproxy *task_nspro
+ }
+
+ int copy_namespaces(unsigned long flags, struct task_struct *tsk);
++struct nsproxy *copy_nsproxy(struct nsproxy *orig);
+ void exit_task_namespaces(struct task_struct *tsk);
+ void switch_task_namespaces(struct task_struct *tsk, struct nsproxy *new);
+ void free_nsproxy(struct nsproxy *ns);
+ int unshare_nsproxy_namespaces(unsigned long, struct nsproxy **,
+ struct fs_struct *);
+
+-static inline void put_nsproxy(struct nsproxy *ns)
++#define get_nsproxy(n) __get_nsproxy(n, __FILE__, __LINE__)
++
++static inline void __get_nsproxy(struct nsproxy *ns,
++ const char *_file, int _line)
+ {
+- if (atomic_dec_and_test(&ns->count)) {
+- free_nsproxy(ns);
+- }
++ vxlprintk(VXD_CBIT(space, 0), "get_nsproxy(%p[%u])",
++ ns, atomic_read(&ns->count), _file, _line);
++ atomic_inc(&ns->count);
+ }
+
+-static inline void get_nsproxy(struct nsproxy *ns)
++#define put_nsproxy(n) __put_nsproxy(n, __FILE__, __LINE__)
++
++static inline void __put_nsproxy(struct nsproxy *ns,
++ const char *_file, int _line)
+ {
+- atomic_inc(&ns->count);
++ vxlprintk(VXD_CBIT(space, 0), "put_nsproxy(%p[%u])",
++ ns, atomic_read(&ns->count), _file, _line);
++ if (atomic_dec_and_test(&ns->count)) {
++ free_nsproxy(ns);
++ }
+ }
+
+ #ifdef CONFIG_CGROUP_NS
+diff -NurpP --minimal linux-2.6.31.6/include/linux/pid.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/pid.h
+--- linux-2.6.31.6/include/linux/pid.h 2009-03-24 14:22:43.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/pid.h 2009-09-10 16:11:43.000000000 +0200
+@@ -8,7 +8,8 @@ enum pid_type
+ PIDTYPE_PID,
+ PIDTYPE_PGID,
+ PIDTYPE_SID,
+- PIDTYPE_MAX
++ PIDTYPE_MAX,
++ PIDTYPE_REALPID
+ };
+
+ /*
+@@ -160,6 +161,7 @@ static inline pid_t pid_nr(struct pid *p
+ }
+
+ pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns);
++pid_t pid_unmapped_nr_ns(struct pid *pid, struct pid_namespace *ns);
+ pid_t pid_vnr(struct pid *pid);
+
+ #define do_each_pid_task(pid, type, task) \
+diff -NurpP --minimal linux-2.6.31.6/include/linux/proc_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/proc_fs.h
+--- linux-2.6.31.6/include/linux/proc_fs.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/proc_fs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -56,6 +56,7 @@ struct proc_dir_entry {
+ nlink_t nlink;
+ uid_t uid;
+ gid_t gid;
++ int vx_flags;
+ loff_t size;
+ const struct inode_operations *proc_iops;
+ /*
+@@ -240,12 +241,18 @@ static inline void kclist_add(struct kco
+ extern void kclist_add(struct kcore_list *, void *, size_t);
+ #endif
+
++struct vx_info;
++struct nx_info;
++
+ union proc_op {
+ int (*proc_get_link)(struct inode *, struct path *);
+ int (*proc_read)(struct task_struct *task, char *page);
+ int (*proc_show)(struct seq_file *m,
+ struct pid_namespace *ns, struct pid *pid,
+ struct task_struct *task);
++ int (*proc_vs_read)(char *page);
++ int (*proc_vxi_read)(struct vx_info *vxi, char *page);
++ int (*proc_nxi_read)(struct nx_info *nxi, char *page);
+ };
+
+ struct ctl_table_header;
+@@ -253,6 +260,7 @@ struct ctl_table;
+
+ struct proc_inode {
+ struct pid *pid;
++ int vx_flags;
+ int fd;
+ union proc_op op;
+ struct proc_dir_entry *pde;
+diff -NurpP --minimal linux-2.6.31.6/include/linux/quotaops.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/quotaops.h
+--- linux-2.6.31.6/include/linux/quotaops.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/quotaops.h 2009-10-12 02:07:55.000000000 +0200
+@@ -8,6 +8,7 @@
+ #define _LINUX_QUOTAOPS_
+
+ #include <linux/fs.h>
++#include <linux/vs_dlimit.h>
+
+ static inline struct quota_info *sb_dqopt(struct super_block *sb)
+ {
+@@ -154,10 +155,14 @@ static inline void vfs_dq_init(struct in
+ * a transaction (deadlocks possible otherwise) */
+ static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
+ {
++ if (dl_alloc_space(inode, nr))
++ return 1;
+ if (sb_any_quota_active(inode->i_sb)) {
+ /* Used space is updated in alloc_space() */
+- if (inode->i_sb->dq_op->alloc_space(inode, nr, 1) == NO_QUOTA)
++ if (inode->i_sb->dq_op->alloc_space(inode, nr, 1) == NO_QUOTA) {
++ dl_free_space(inode, nr);
+ return 1;
++ }
+ }
+ else
+ inode_add_bytes(inode, nr);
+@@ -174,10 +179,14 @@ static inline int vfs_dq_prealloc_space(
+
+ static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
+ {
++ if (dl_alloc_space(inode, nr))
++ return 1;
+ if (sb_any_quota_active(inode->i_sb)) {
+ /* Used space is updated in alloc_space() */
+- if (inode->i_sb->dq_op->alloc_space(inode, nr, 0) == NO_QUOTA)
++ if (inode->i_sb->dq_op->alloc_space(inode, nr, 0) == NO_QUOTA) {
++ dl_free_space(inode, nr);
+ return 1;
++ }
+ }
+ else
+ inode_add_bytes(inode, nr);
+@@ -194,20 +203,28 @@ static inline int vfs_dq_alloc_space(str
+
+ static inline int vfs_dq_reserve_space(struct inode *inode, qsize_t nr)
+ {
++ if (dl_reserve_space(inode, nr))
++ return 1;
+ if (sb_any_quota_active(inode->i_sb)) {
+ /* Used space is updated in alloc_space() */
+- if (inode->i_sb->dq_op->reserve_space(inode, nr, 0) == NO_QUOTA)
++ if (inode->i_sb->dq_op->reserve_space(inode, nr, 0) == NO_QUOTA) {
++ dl_release_space(inode, nr);
+ return 1;
++ }
+ }
+ return 0;
+ }
+
+ static inline int vfs_dq_alloc_inode(struct inode *inode)
+ {
++ if (dl_alloc_inode(inode))
++ return 1;
+ if (sb_any_quota_active(inode->i_sb)) {
+ vfs_dq_init(inode);
+- if (inode->i_sb->dq_op->alloc_inode(inode, 1) == NO_QUOTA)
++ if (inode->i_sb->dq_op->alloc_inode(inode, 1) == NO_QUOTA) {
++ dl_free_inode(inode);
+ return 1;
++ }
+ }
+ return 0;
+ }
+@@ -217,9 +234,13 @@ static inline int vfs_dq_alloc_inode(str
+ */
+ static inline int vfs_dq_claim_space(struct inode *inode, qsize_t nr)
+ {
++ if (dl_claim_space(inode, nr))
++ return 1;
+ if (sb_any_quota_active(inode->i_sb)) {
+- if (inode->i_sb->dq_op->claim_space(inode, nr) == NO_QUOTA)
++ if (inode->i_sb->dq_op->claim_space(inode, nr) == NO_QUOTA) {
++ dl_release_space(inode, nr);
+ return 1;
++ }
+ } else
+ inode_add_bytes(inode, nr);
+
+@@ -235,6 +256,7 @@ void vfs_dq_release_reservation_space(st
+ {
+ if (sb_any_quota_active(inode->i_sb))
+ inode->i_sb->dq_op->release_rsv(inode, nr);
++ dl_release_space(inode, nr);
+ }
+
+ static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
+@@ -243,6 +265,7 @@ static inline void vfs_dq_free_space_nod
+ inode->i_sb->dq_op->free_space(inode, nr);
+ else
+ inode_sub_bytes(inode, nr);
++ dl_free_space(inode, nr);
+ }
+
+ static inline void vfs_dq_free_space(struct inode *inode, qsize_t nr)
+@@ -255,6 +278,7 @@ static inline void vfs_dq_free_inode(str
+ {
+ if (sb_any_quota_active(inode->i_sb))
+ inode->i_sb->dq_op->free_inode(inode, 1);
++ dl_free_inode(inode);
+ }
+
+ /* Cannot be called inside a transaction */
+@@ -358,6 +382,8 @@ static inline int vfs_dq_transfer(struct
+
+ static inline int vfs_dq_prealloc_space_nodirty(struct inode *inode, qsize_t nr)
+ {
++ if (dl_alloc_space(inode, nr))
++ return 1;
+ inode_add_bytes(inode, nr);
+ return 0;
+ }
+@@ -371,6 +397,8 @@ static inline int vfs_dq_prealloc_space(
+
+ static inline int vfs_dq_alloc_space_nodirty(struct inode *inode, qsize_t nr)
+ {
++ if (dl_alloc_space(inode, nr))
++ return 1;
+ inode_add_bytes(inode, nr);
+ return 0;
+ }
+@@ -384,22 +412,28 @@ static inline int vfs_dq_alloc_space(str
+
+ static inline int vfs_dq_reserve_space(struct inode *inode, qsize_t nr)
+ {
++ if (dl_reserve_space(inode, nr))
++ return 1;
+ return 0;
+ }
+
+ static inline int vfs_dq_claim_space(struct inode *inode, qsize_t nr)
+ {
++ if (dl_claim_space(inode, nr))
++ return 1;
+ return vfs_dq_alloc_space(inode, nr);
+ }
+
+ static inline
+ int vfs_dq_release_reservation_space(struct inode *inode, qsize_t nr)
+ {
++ dl_release_space(inode, nr);
+ return 0;
+ }
+
+ static inline void vfs_dq_free_space_nodirty(struct inode *inode, qsize_t nr)
+ {
++ dl_free_space(inode, nr);
+ inode_sub_bytes(inode, nr);
+ }
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/reiserfs_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/reiserfs_fs.h
+--- linux-2.6.31.6/include/linux/reiserfs_fs.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/reiserfs_fs.h 2009-10-07 01:27:41.000000000 +0200
+@@ -899,6 +899,11 @@ struct stat_data_v1 {
+ #define REISERFS_COMPR_FL FS_COMPR_FL
+ #define REISERFS_NOTAIL_FL FS_NOTAIL_FL
+
++/* unfortunately reiserfs sdattr is only 16 bit */
++#define REISERFS_IXUNLINK_FL (FS_IXUNLINK_FL >> 16)
++#define REISERFS_BARRIER_FL (FS_BARRIER_FL >> 16)
++#define REISERFS_COW_FL (FS_COW_FL >> 16)
++
+ /* persistent flags that file inherits from the parent directory */
+ #define REISERFS_INHERIT_MASK ( REISERFS_IMMUTABLE_FL | \
+ REISERFS_SYNC_FL | \
+@@ -908,6 +913,9 @@ struct stat_data_v1 {
+ REISERFS_COMPR_FL | \
+ REISERFS_NOTAIL_FL )
+
++#define REISERFS_FL_USER_VISIBLE 0x80FF
++#define REISERFS_FL_USER_MODIFIABLE 0x80FF
++
+ /* Stat Data on disk (reiserfs version of UFS disk inode minus the
+ address blocks) */
+ struct stat_data {
+@@ -1989,6 +1997,7 @@ static inline void reiserfs_update_sd(st
+ void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode);
+ void i_attrs_to_sd_attrs(struct inode *inode, __u16 * sd_attrs);
+ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr);
++int reiserfs_sync_flags(struct inode *inode, int, int);
+
+ /* namei.c */
+ void set_de_name_and_namelen(struct reiserfs_dir_entry *de);
+diff -NurpP --minimal linux-2.6.31.6/include/linux/reiserfs_fs_sb.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/reiserfs_fs_sb.h
+--- linux-2.6.31.6/include/linux/reiserfs_fs_sb.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/reiserfs_fs_sb.h 2009-09-10 16:11:43.000000000 +0200
+@@ -456,6 +456,7 @@ enum reiserfs_mount_options {
+ REISERFS_EXPOSE_PRIVROOT,
+ REISERFS_BARRIER_NONE,
+ REISERFS_BARRIER_FLUSH,
++ REISERFS_TAGGED,
+
+ /* Actions on error */
+ REISERFS_ERROR_PANIC,
+diff -NurpP --minimal linux-2.6.31.6/include/linux/sched.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/sched.h
+--- linux-2.6.31.6/include/linux/sched.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/sched.h 2009-10-06 04:39:26.000000000 +0200
+@@ -383,25 +383,28 @@ extern void arch_unmap_area_topdown(stru
+ * The mm counters are not protected by its page_table_lock,
+ * so must be incremented atomically.
+ */
+-#define set_mm_counter(mm, member, value) atomic_long_set(&(mm)->_##member, value)
+-#define get_mm_counter(mm, member) ((unsigned long)atomic_long_read(&(mm)->_##member))
+-#define add_mm_counter(mm, member, value) atomic_long_add(value, &(mm)->_##member)
+-#define inc_mm_counter(mm, member) atomic_long_inc(&(mm)->_##member)
+-#define dec_mm_counter(mm, member) atomic_long_dec(&(mm)->_##member)
++#define __set_mm_counter(mm, member, value) \
++ atomic_long_set(&(mm)->_##member, value)
++#define get_mm_counter(mm, member) \
++ ((unsigned long)atomic_long_read(&(mm)->_##member))
+
+ #else /* !USE_SPLIT_PTLOCKS */
+ /*
+ * The mm counters are protected by its page_table_lock,
+ * so can be incremented directly.
+ */
+-#define set_mm_counter(mm, member, value) (mm)->_##member = (value)
++#define __set_mm_counter(mm, member, value) (mm)->_##member = (value)
+ #define get_mm_counter(mm, member) ((mm)->_##member)
+-#define add_mm_counter(mm, member, value) (mm)->_##member += (value)
+-#define inc_mm_counter(mm, member) (mm)->_##member++
+-#define dec_mm_counter(mm, member) (mm)->_##member--
+
+ #endif /* !USE_SPLIT_PTLOCKS */
+
++#define set_mm_counter(mm, member, value) \
++ vx_ ## member ## pages_sub((mm), (get_mm_counter(mm, member) - value))
++#define add_mm_counter(mm, member, value) \
++ vx_ ## member ## pages_add((mm), (value))
++#define inc_mm_counter(mm, member) vx_ ## member ## pages_inc((mm))
++#define dec_mm_counter(mm, member) vx_ ## member ## pages_dec((mm))
++
+ #define get_mm_rss(mm) \
+ (get_mm_counter(mm, file_rss) + get_mm_counter(mm, anon_rss))
+ #define update_hiwater_rss(mm) do { \
+@@ -1024,7 +1027,7 @@ struct sched_domain;
+ struct sched_class {
+ const struct sched_class *next;
+
+- void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup);
++ int (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup);
+ void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
+ void (*yield_task) (struct rq *rq);
+
+@@ -1124,6 +1127,7 @@ struct sched_entity {
+ u64 nr_failed_migrations_affine;
+ u64 nr_failed_migrations_running;
+ u64 nr_failed_migrations_hot;
++ u64 nr_failed_migrations_throttled;
+ u64 nr_forced_migrations;
+ u64 nr_forced2_migrations;
+
+@@ -1136,6 +1140,12 @@ struct sched_entity {
+ u64 nr_wakeups_affine_attempts;
+ u64 nr_wakeups_passive;
+ u64 nr_wakeups_idle;
++#ifdef CONFIG_CFS_HARD_LIMITS
++ u64 throttle_start;
++ u64 throttle_max;
++ u64 throttle_count;
++ u64 throttle_sum;
++#endif
+ #endif
+
+ #ifdef CONFIG_FAIR_GROUP_SCHED
+@@ -1335,6 +1345,14 @@ struct task_struct {
+ #endif
+ seccomp_t seccomp;
+
++/* vserver context data */
++ struct vx_info *vx_info;
++ struct nx_info *nx_info;
++
++ xid_t xid;
++ nid_t nid;
++ tag_t tag;
++
+ /* Thread group tracking */
+ u32 parent_exec_id;
+ u32 self_exec_id;
+@@ -1559,6 +1577,11 @@ struct pid_namespace;
+ pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
+ struct pid_namespace *ns);
+
++#include <linux/vserver/base.h>
++#include <linux/vserver/context.h>
++#include <linux/vserver/debug.h>
++#include <linux/vserver/pid.h>
++
+ static inline pid_t task_pid_nr(struct task_struct *tsk)
+ {
+ return tsk->pid;
+@@ -1572,7 +1595,8 @@ static inline pid_t task_pid_nr_ns(struc
+
+ static inline pid_t task_pid_vnr(struct task_struct *tsk)
+ {
+- return __task_pid_nr_ns(tsk, PIDTYPE_PID, NULL);
++ // return __task_pid_nr_ns(tsk, PIDTYPE_PID, NULL);
++ return vx_map_pid(__task_pid_nr_ns(tsk, PIDTYPE_PID, NULL));
+ }
+
+
+@@ -1585,7 +1609,7 @@ pid_t task_tgid_nr_ns(struct task_struct
+
+ static inline pid_t task_tgid_vnr(struct task_struct *tsk)
+ {
+- return pid_vnr(task_tgid(tsk));
++ return vx_map_tgid(pid_vnr(task_tgid(tsk)));
+ }
+
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/shmem_fs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/shmem_fs.h
+--- linux-2.6.31.6/include/linux/shmem_fs.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/shmem_fs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -8,6 +8,9 @@
+
+ #define SHMEM_NR_DIRECT 16
+
++#define TMPFS_SUPER_MAGIC 0x01021994
++
++
+ struct shmem_inode_info {
+ spinlock_t lock;
+ unsigned long flags;
+diff -NurpP --minimal linux-2.6.31.6/include/linux/stat.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/stat.h
+--- linux-2.6.31.6/include/linux/stat.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/stat.h 2009-09-10 16:11:43.000000000 +0200
+@@ -66,6 +66,7 @@ struct kstat {
+ unsigned int nlink;
+ uid_t uid;
+ gid_t gid;
++ tag_t tag;
+ dev_t rdev;
+ loff_t size;
+ struct timespec atime;
+diff -NurpP --minimal linux-2.6.31.6/include/linux/sunrpc/auth.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/sunrpc/auth.h
+--- linux-2.6.31.6/include/linux/sunrpc/auth.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/sunrpc/auth.h 2009-09-10 16:11:43.000000000 +0200
+@@ -25,6 +25,7 @@
+ struct auth_cred {
+ uid_t uid;
+ gid_t gid;
++ tag_t tag;
+ struct group_info *group_info;
+ unsigned char machine_cred : 1;
+ };
+diff -NurpP --minimal linux-2.6.31.6/include/linux/sunrpc/clnt.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/sunrpc/clnt.h
+--- linux-2.6.31.6/include/linux/sunrpc/clnt.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/sunrpc/clnt.h 2009-09-10 16:11:43.000000000 +0200
+@@ -43,7 +43,8 @@ struct rpc_clnt {
+ unsigned int cl_softrtry : 1,/* soft timeouts */
+ cl_discrtry : 1,/* disconnect before retry */
+ cl_autobind : 1,/* use getport() */
+- cl_chatty : 1;/* be verbose */
++ cl_chatty : 1,/* be verbose */
++ cl_tag : 1;/* context tagging */
+
+ struct rpc_rtt * cl_rtt; /* RTO estimator data */
+ const struct rpc_timeout *cl_timeout; /* Timeout strategy */
+diff -NurpP --minimal linux-2.6.31.6/include/linux/syscalls.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/syscalls.h
+--- linux-2.6.31.6/include/linux/syscalls.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/syscalls.h 2009-09-10 16:11:43.000000000 +0200
+@@ -428,6 +428,8 @@ asmlinkage long sys_symlink(const char _
+ asmlinkage long sys_unlink(const char __user *pathname);
+ asmlinkage long sys_rename(const char __user *oldname,
+ const char __user *newname);
++asmlinkage long sys_copyfile(const char __user *from, const char __user *to,
++ umode_t mode);
+ asmlinkage long sys_chmod(const char __user *filename, mode_t mode);
+ asmlinkage long sys_fchmod(unsigned int fd, mode_t mode);
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/sysctl.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/sysctl.h
+--- linux-2.6.31.6/include/linux/sysctl.h 2009-06-11 17:13:18.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/sysctl.h 2009-09-10 16:11:43.000000000 +0200
+@@ -70,6 +70,7 @@ enum
+ CTL_ABI=9, /* Binary emulation */
+ CTL_CPU=10, /* CPU stuff (speed scaling, etc) */
+ CTL_ARLAN=254, /* arlan wireless driver */
++ CTL_VSERVER=4242, /* Linux-VServer debug */
+ CTL_S390DBF=5677, /* s390 debug */
+ CTL_SUNRPC=7249, /* sunrpc debug */
+ CTL_PM=9899, /* frv power management */
+@@ -104,6 +105,7 @@ enum
+
+ KERN_PANIC=15, /* int: panic timeout */
+ KERN_REALROOTDEV=16, /* real root device to mount after initrd */
++ KERN_VSHELPER=17, /* string: path to vshelper policy agent */
+
+ KERN_SPARC_REBOOT=21, /* reboot command on Sparc */
+ KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */
+diff -NurpP --minimal linux-2.6.31.6/include/linux/sysfs.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/sysfs.h
+--- linux-2.6.31.6/include/linux/sysfs.h 2008-12-25 00:26:37.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/sysfs.h 2009-09-10 16:11:43.000000000 +0200
+@@ -17,6 +17,8 @@
+ #include <linux/list.h>
+ #include <asm/atomic.h>
+
++#define SYSFS_SUPER_MAGIC 0x62656572
++
+ struct kobject;
+ struct module;
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/time.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/time.h
+--- linux-2.6.31.6/include/linux/time.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/time.h 2009-09-10 16:11:43.000000000 +0200
+@@ -205,6 +205,9 @@ static __always_inline void timespec_add
+ a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
+ a->tv_nsec = ns;
+ }
++
++#include <linux/vs_time.h>
++
+ #endif /* __KERNEL__ */
+
+ #define NFDBITS __NFDBITS
+diff -NurpP --minimal linux-2.6.31.6/include/linux/types.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/types.h
+--- linux-2.6.31.6/include/linux/types.h 2009-09-10 15:26:26.000000000 +0200
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/types.h 2009-09-10 16:11:43.000000000 +0200
+@@ -37,6 +37,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;
+
+ typedef unsigned long uintptr_t;
+
+diff -NurpP --minimal linux-2.6.31.6/include/linux/vroot.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/vroot.h
+--- linux-2.6.31.6/include/linux/vroot.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/vroot.h 2009-09-10 16:11:43.000000000 +0200
+@@ -0,0 +1,51 @@
++
++/*
++ * include/linux/vroot.h
++ *
++ * written by Herbert Ptzl, 9/11/2002
++ * ported to 2.6 by Herbert Ptzl, 30/12/2004
++ *
++ * Copyright (C) 2002-2007 by Herbert Ptzl.
++ * Redistribution of this file is permitted under the
++ * GNU General Public License.
++ */
++
++#ifndef _LINUX_VROOT_H
++#define _LINUX_VROOT_H
++
++
++#ifdef __KERNEL__
++
++/* Possible states of device */
++enum {
++ Vr_unbound,
++ Vr_bound,
++};
++
++struct vroot_device {
++ int vr_number;
++ int vr_refcnt;
++
++ struct semaphore vr_ctl_mutex;
++ struct block_device *vr_device;
++ int vr_state;
++};
++
++
++typedef struct block_device *(vroot_grb_func)(struct block_device *);
++
++extern int register_vroot_grb(vroot_grb_func *);
++extern int unregister_vroot_grb(vroot_grb_func *);
++
++#endif /* __KERNEL__ */
++
++#define MAX_VROOT_DEFAULT 8
++
++/*
++ * IOCTL commands --- we will commandeer 0x56 ('V')
++ */
++
++#define VROOT_SET_DEV 0x5600
++#define VROOT_CLR_DEV 0x5601
++
++#endif /* _LINUX_VROOT_H */
+diff -NurpP --minimal linux-2.6.31.6/include/linux/vs_base.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_base.h
+--- linux-2.6.31.6/include/linux/vs_base.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_base.h 2009-09-10 16:11:43.000000000 +0200
+@@ -0,0 +1,10 @@
++#ifndef _VS_BASE_H
++#define _VS_BASE_H
++
++#include "vserver/base.h"
++#include "vserver/check.h"
++#include "vserver/debug.h"
++
++#else
++#warning duplicate inclusion
++#endif
+diff -NurpP --minimal linux-2.6.31.6/include/linux/vs_context.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_context.h
+--- linux-2.6.31.6/include/linux/vs_context.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_context.h 2009-09-30 02:28:59.000000000 +0200
+@@ -0,0 +1,242 @@
++#ifndef _VS_CONTEXT_H
++#define _VS_CONTEXT_H
++
++#include "vserver/base.h"
++#include "vserver/check.h"
++#include "vserver/context.h"
++#include "vserver/history.h"
++#include "vserver/debug.h"
++
++#include <linux/sched.h>
++
++
++#define get_vx_info(i) __get_vx_info(i, __FILE__, __LINE__, __HERE__)
++
++static inline struct vx_info *__get_vx_info(struct vx_info *vxi,
++ const char *_file, int _line, void *_here)
++{
++ if (!vxi)
++ return NULL;
++
++ vxlprintk(VXD_CBIT(xid, 2), "get_vx_info(%p[#%d.%d])",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ _file, _line);
++ __vxh_get_vx_info(vxi, _here);
++
++ atomic_inc(&vxi->vx_usecnt);
++ return vxi;
++}
++
++
++extern void free_vx_info(struct vx_info *);
++
++#define put_vx_info(i) __put_vx_info(i, __FILE__, __LINE__, __HERE__)
++
++static inline void __put_vx_info(struct vx_info *vxi,
++ const char *_file, int _line, void *_here)
++{
++ if (!vxi)
++ return;
++
++ vxlprintk(VXD_CBIT(xid, 2), "put_vx_info(%p[#%d.%d])",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ _file, _line);
++ __vxh_put_vx_info(vxi, _here);
++
++ if (atomic_dec_and_test(&vxi->vx_usecnt))
++ free_vx_info(vxi);
++}
++
++
++#define init_vx_info(p, i) \
++ __init_vx_info(p, i, __FILE__, __LINE__, __HERE__)
++
++static inline void __init_vx_info(struct vx_info **vxp, struct vx_info *vxi,
++ const char *_file, int _line, void *_here)
++{
++ if (vxi) {
++ vxlprintk(VXD_CBIT(xid, 3),
++ "init_vx_info(%p[#%d.%d])",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ _file, _line);
++ __vxh_init_vx_info(vxi, vxp, _here);
++
++ atomic_inc(&vxi->vx_usecnt);
++ }
++ *vxp = vxi;
++}
++
++
++#define set_vx_info(p, i) \
++ __set_vx_info(p, i, __FILE__, __LINE__, __HERE__)
++
++static inline void __set_vx_info(struct vx_info **vxp, struct vx_info *vxi,
++ const char *_file, int _line, void *_here)
++{
++ struct vx_info *vxo;
++
++ if (!vxi)
++ return;
++
++ vxlprintk(VXD_CBIT(xid, 3), "set_vx_info(%p[#%d.%d])",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ _file, _line);
++ __vxh_set_vx_info(vxi, vxp, _here);
++
++ atomic_inc(&vxi->vx_usecnt);
++ vxo = xchg(vxp, vxi);
++ BUG_ON(vxo);
++}
++
++
++#define clr_vx_info(p) __clr_vx_info(p, __FILE__, __LINE__, __HERE__)
++
++static inline void __clr_vx_info(struct vx_info **vxp,
++ const char *_file, int _line, void *_here)
++{
++ struct vx_info *vxo;
++
++ vxo = xchg(vxp, NULL);
++ if (!vxo)
++ return;
++
++ vxlprintk(VXD_CBIT(xid, 3), "clr_vx_info(%p[#%d.%d])",
++ vxo, vxo ? vxo->vx_id : 0,
++ vxo ? atomic_read(&vxo->vx_usecnt) : 0,
++ _file, _line);
++ __vxh_clr_vx_info(vxo, vxp, _here);
++
++ if (atomic_dec_and_test(&vxo->vx_usecnt))
++ free_vx_info(vxo);
++}
++
++
++#define claim_vx_info(v, p) \
++ __claim_vx_info(v, p, __FILE__, __LINE__, __HERE__)
++
++static inline void __claim_vx_info(struct vx_info *vxi,
++ struct task_struct *task,
++ const char *_file, int _line, void *_here)
++{
++ vxlprintk(VXD_CBIT(xid, 3), "claim_vx_info(%p[#%d.%d.%d]) %p",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ vxi ? atomic_read(&vxi->vx_tasks) : 0,
++ task, _file, _line);
++ __vxh_claim_vx_info(vxi, task, _here);
++
++ atomic_inc(&vxi->vx_tasks);
++}
++
++
++extern void unhash_vx_info(struct vx_info *);
++
++#define release_vx_info(v, p) \
++ __release_vx_info(v, p, __FILE__, __LINE__, __HERE__)
++
++static inline void __release_vx_info(struct vx_info *vxi,
++ struct task_struct *task,
++ const char *_file, int _line, void *_here)
++{
++ vxlprintk(VXD_CBIT(xid, 3), "release_vx_info(%p[#%d.%d.%d]) %p",
++ vxi, vxi ? vxi->vx_id : 0,
++ vxi ? atomic_read(&vxi->vx_usecnt) : 0,
++ vxi ? atomic_read(&vxi->vx_tasks) : 0,
++ task, _file, _line);
++ __vxh_release_vx_info(vxi, task, _here);
++
++ might_sleep();
++
++ if (atomic_dec_and_test(&vxi->vx_tasks))
++ unhash_vx_info(vxi);
++}
++
++
++#define task_get_vx_info(p) \
++ __task_get_vx_info(p, __FILE__, __LINE__, __HERE__)
++
++static inline struct vx_info *__task_get_vx_info(struct task_struct *p,
++ const char *_file, int _line, void *_here)
++{
++ struct vx_info *vxi;
++
++ task_lock(p);
++ vxlprintk(VXD_CBIT(xid, 5), "task_get_vx_info(%p)",
++ p, _file, _line);
++ vxi = __get_vx_info(p->vx_info, _file, _line, _here);
++ task_unlock(p);
++ return vxi;
++}
++
++
++static inline void __wakeup_vx_info(struct vx_info *vxi)
++{
++ if (waitqueue_active(&vxi->vx_wait))
++ wake_up_interruptible(&vxi->vx_wait);
++}
++
++
++#define enter_vx_info(v, s) __enter_vx_info(v, s, __FILE__, __LINE__)
++
++static inline void __enter_vx_info(struct vx_info *vxi,
++ struct vx_info_save *vxis, const char *_file, int _line)
++{
++ vxlprintk(VXD_CBIT(xid, 5), "enter_vx_info(%p[#%d],%p) %p[#%d,%p]",
++ vxi, vxi ? vxi->vx_id : 0, vxis, current,
++ current->xid, current->vx_info, _file, _line);
++ vxis->vxi = xchg(&current->vx_info, vxi);
++ vxis->xid = current->xid;
++ current->xid = vxi ? vxi->vx_id : 0;
++}
++
++#define leave_vx_info(s) __leave_vx_info(s, __FILE__, __LINE__)
++
++static inline void __leave_vx_info(struct vx_info_save *vxis,
++ const char *_file, int _line)
++{
++ vxlprintk(VXD_CBIT(xid, 5), "leave_vx_info(%p[#%d,%p]) %p[#%d,%p]",
++ vxis, vxis->xid, vxis->vxi, current,
++ current->xid, current->vx_info, _file, _line);
++ (void)xchg(&current->vx_info, vxis->vxi);
++ current->xid = vxis->xid;
++}
++
++
++static inline void __enter_vx_admin(struct vx_info_save *vxis)
++{
++ vxis->vxi = xchg(&current->vx_info, NULL);
++ vxis->xid = xchg(&current->xid, (xid_t)0);
++}
++
++static inline void __leave_vx_admin(struct vx_info_save *vxis)
++{
++ (void)xchg(&current->xid, vxis->xid);
++ (void)xchg(&current->vx_info, vxis->vxi);
++}
++
++#define task_is_init(p) \
++ __task_is_init(p, __FILE__, __LINE__, __HERE__)
++
++static inline int __task_is_init(struct task_struct *p,
++ const char *_file, int _line, void *_here)
++{
++ int is_init = is_global_init(p);
++
++ task_lock(p);
++ if (p->vx_info)
++ is_init = p->vx_info->vx_initpid == p->pid;
++ task_unlock(p);
++ return is_init;
++}
++
++extern void exit_vx_info(struct task_struct *, int);
++extern void exit_vx_info_early(struct task_struct *, int);
++
++
++#else
++#warning duplicate inclusion
++#endif
+diff -NurpP --minimal linux-2.6.31.6/include/linux/vs_cowbl.h linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_cowbl.h
+--- linux-2.6.31.6/include/linux/vs_cowbl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.31.6-vs2.3.0.36.24/include/linux/vs_cowbl.h 2009-09-10 16:11:43.000000000 +0200
+@@ -0,0 +1,47 @@
++#ifndef _VS_COWBL_H
++#define _VS_COWBL_H
++
++#include <linux/fs.h>
++#include <linux/dcache.h>
++#include <linux/namei.h>
++
++extern struct dentry *cow_break_link(const char *pathname);
++
++static inline int cow_check_and_break(struct path *path)
++{
++ struct inode *inode = path->dentry->d_inode;
++ int error = 0;
++
++ /* do we need this check? */
++ if (IS_RDONLY(inode))
++ return -EROFS;
++
++ if (IS_COW(inode)) {
++ if (IS_COW_LINK(inode)) {
++ struct dentry *new_dentry, *old_dentry = path->dentry;
++ char *pp, *buf;