wok-tiny rev 1
Add kernel
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/kernel-isa/receipt Tue Feb 01 09:37:33 2011 +0100 1.3 @@ -0,0 +1,19 @@ 1.4 +# SliTaz package receipt. 1.5 + 1.6 +PACKAGE="kernel-isa" 1.7 +VERSION="2.6.37" 1.8 +CATEGORY="base-system" 1.9 +SHORT_DESC="Kernel i386 with ppp, ne2k-isa, 3c509, ide and ext3" 1.10 +MAINTAINER="devel@slitaz.org" 1.11 +WEB_SITE="http://www.kernel.org/" 1.12 +WANTED="kernel-modular" 1.13 + 1.14 +# Rules to gen a SliTaz package suitable for Tazpkg. 1.15 +genpkg_rules() 1.16 +{ 1.17 + mkdir $fs/boot 1.18 + cp -a $WOK/kernel-modular/linux-$VERSION/$PACKAGE $fs/boot/bzImage 1.19 + cp -a $WOK/kernel-modular/linux-$VERSION/System.map-${PACKAGE#kernel-} $fs/boot/System.map 1.20 + cp -a $WOK/kernel-modular/linux-$VERSION/config-${PACKAGE#kernel-} $fs/boot/config 1.21 +} 1.22 +
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/kernel-lguest/receipt Tue Feb 01 09:37:33 2011 +0100 2.3 @@ -0,0 +1,18 @@ 2.4 +# SliTaz package receipt. 2.5 + 2.6 +PACKAGE="kernel-lguest" 2.7 +VERSION="2.6.37" 2.8 +CATEGORY="base-system" 2.9 +SHORT_DESC="Kernel i686 with ext3 and virtual drivers for ethernet and disk" 2.10 +MAINTAINER="devel@slitaz.org" 2.11 +WEB_SITE="http://www.kernel.org/" 2.12 +WANTED="kernel-modular" 2.13 + 2.14 +# Rules to gen a SliTaz package suitable for Tazpkg. 2.15 +genpkg_rules() 2.16 +{ 2.17 + mkdir $fs/boot 2.18 + cp -a $WOK/kernel-modular/linux-$VERSION/$PACKAGE $fs/boot/bzImage 2.19 + cp -a $WOK/kernel-modular/linux-$VERSION/System.map-${PACKAGE#kernel-} $fs/boot/System.map 2.20 + cp -a $WOK/kernel-modular/linux-$VERSION/config-${PACKAGE#kernel-} $fs/boot/config 2.21 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/kernel-modular/receipt Tue Feb 01 09:37:33 2011 +0100 3.3 @@ -0,0 +1,169 @@ 3.4 +# SliTaz package receipt. 3.5 + 3.6 +PACKAGE="kernel-modular" 3.7 +SOURCE="linux" 3.8 +VERSION="2.6.37" 3.9 +CATEGORY="base-system" 3.10 +SHORT_DESC="The Linux kernel and modules." 3.11 +DEPENDS="depmod" 3.12 +BUILD_DEPENDS="slitaz-toolchain perl git lzma" 3.13 +[ -n "$TARGET" ] && 3.14 +BUILD_DEPENDS="$BUILD_DEPENDS uclibc-cross-compiler-$TARGET" || 3.15 +TARGET="i486" 3.16 +MAINTAINER="devel@slitaz.org" 3.17 +TARBALL="$SOURCE-$VERSION.tar.bz2" 3.18 +WEB_SITE="http://www.kernel.org/" 3.19 +WGET_URL="http://www.eu.kernel.org/pub/linux/kernel/v${VERSION:0:3}/$TARBALL" 3.20 +CONFIG_FILES="/lib/modules/$VERSION-slitaz/modules.dep" 3.21 + 3.22 +# Rules to configure and make the package. 3.23 +compile_rules() 3.24 +{ 3.25 + if [ ! -s $WOK/busybox/busybox*/rootfs.cpio ]; then 3.26 + tazwok cook busybox 3.27 + fi 3.28 + cp $WOK/busybox/busybox*/rootfs.cpio $src 3.29 + 3.30 + # this is code to help update the kernel version faster 3.31 + #for i in $(grep -l 'WANTED="linux"' $WOK/*/receipt) 3.32 + #do 3.33 + # sed -i 's|VERSION="OLDVERSION"|VERSION="NEWVERSION"|g' $i 3.34 + #done 3.35 + local _AUFSVER=`grep ^VERSION= $WOK/aufs/receipt | cut -d "=" -f2 | sed -e 's/"//g'` 3.36 + local AUFSDIR="aufs-${_AUFSVER}" 3.37 + TARBALL=$SOURCES_REPOSITORY/$AUFSDIR.tar.lzma 3.38 + if [ -f $TARBALL ]; then 3.39 + unlzma -c $TARBALL | tar xf - 3.40 + cd $AUFSDIR && git checkout origin/aufs2.1-37 3.41 + cd $WOK/$PACKAGE 3.42 + else 3.43 + # Aufs2 from git repository 3.44 + git clone git://aufs.git.sourceforge.net/gitroot/aufs/aufs2-standalone.git $AUFSDIR 3.45 + tar cf - $AUFSDIR | lzma e $TARBALL -si 3.46 + cd $AUFSDIR && git checkout origin/aufs2.1-37 3.47 + cd $WOK/$PACKAGE 3.48 + fi 3.49 + cp -a $AUFSDIR/Documentation $AUFSDIR/fs $AUFSDIR/include $src 3.50 + cp -a $AUFSDIR/*.patch $WOK/$PACKAGE/stuff 3.51 + # We need the real GNU patch 3.52 + [ -L /usr/bin/patch ] && tazpkg get-install patch --forced 3.53 + cd $src 3.54 + # SliTaz db 3.55 + [ -d slitaz ] && rm -rf slitaz 2> /dev/null 3.56 + mkdir slitaz 3.57 + echo "$WGET_URL" > slitaz/url 3.58 + cp ../stuff/gztazmod.sh ../stuff/list_modules.sh slitaz 3.59 + cp ../stuff/bootloader.sh slitaz 3.60 + # Apply patches 3.61 + while read patch_file; do 3.62 + echo "$patch_file" >> slitaz/patches 3.63 + cp ../stuff/$patch_file slitaz 3.64 + if [ -f done.$patch_file ]; then 3.65 + echo "Skipping $patch_file" 3.66 + continue 3.67 + fi 3.68 + echo "Apply $patch_file" 3.69 + patch -p1 < slitaz/$patch_file || exit 1 3.70 + touch done.$patch_file 3.71 + done <<EOT 3.72 +$SOURCE-diff-$VERSION.u 3.73 +$SOURCE-unlzma-$VERSION.u 3.74 +$SOURCE-header-$VERSION.u 3.75 +$SOURCE-freeinitrd-$VERSION.u 3.76 +aufs2-base.patch 3.77 +aufs2-standalone.patch 3.78 +001-squashfs-decompressors-add-xz-decompressor-module.patch 3.79 +002-squashfs-decompressors-add-boot-time-xz-support.patch 3.80 +003-squashfs-x86-support-xz-compressed-kernel.patch 3.81 +004-squashfs-add-xz-compression-support.patch 3.82 +005-squashfs-add-xz-compression-configuration-option.patch 3.83 +EOT 3.84 + make mrproper 3.85 + cd Documentation/lguest 3.86 +#### make lguest || return 1 3.87 + cd ../.. 3.88 + 3.89 + # Build bzImage without modules first 3.90 + for i in isa lguest ; do 3.91 + cp -f ../stuff/$SOURCE-$VERSION-slitaz.config-$TARGET-$i .config 3.92 + # We can't keep every driver in staging 3.93 + sed -i -e 's/^CONFIG_RTL8192/#&/' \ 3.94 + -e 's/^CONFIG_R8187SE/#&/' \ 3.95 + -e 's/^CONFIG_RT2870/#&/' .config 3.96 + yes '' | make oldconfig 3.97 + make -j 4 bzImage || return 1 3.98 + mv arch/x86/boot/bzImage kernel-$i 3.99 + mv System.map System.map-$i 3.100 + mv .config config-$i 3.101 + done 3.102 + 3.103 + # Build bzImage with modules 3.104 + cp -f ../stuff/$SOURCE-$VERSION-slitaz.config-$TARGET-modular .config 3.105 + make oldconfig 3.106 + ln .config slitaz/config 3.107 + make -j 4 bzImage && 3.108 + make -j 4 modules && 3.109 + make INSTALL_MOD_PATH=$PWD/_pkg modules_install && 3.110 + make INSTALL_HDR_PATH=$PWD/_pkg/usr headers_install && 3.111 + [ -s arch/x86/boot/bzImage ] || return 1 3.112 + mkdir -p $PWD/_pkg/boot 2> /dev/null 3.113 + cp arch/x86/boot/bzImage kernel-modular 3.114 + cp System.map System.map-modular 3.115 + cp .config config-modular 3.116 + mv arch/x86/boot/bzImage $PWD/_pkg/boot/vmlinuz-$VERSION-slitaz 3.117 + # Compress all modules. 3.118 + $WOK/$PACKAGE/stuff/gztazmod.sh $PWD/_pkg/lib/modules/$VERSION-slitaz 3.119 + ln System.map System.map-modules 3.120 + ln Module.symvers Module.symvers-modules 3.121 +} 3.122 + 3.123 +# Rules to gen a SliTaz package suitable for Tazpkg. 3.124 +genpkg_rules() 3.125 +{ 3.126 + mkdir $fs/boot 3.127 + cp -a $_pkg/../$PACKAGE $fs/boot/bzImage 3.128 + cp -a $_pkg/../System.map-${PACKAGE#kernel-} $fs/boot/System.map 3.129 + cp -a $_pkg/../config-${PACKAGE#kernel-} $fs/boot/config 3.130 + # Compress all modules. 3.131 + #./stuff/gztazmod.sh $_pkg/lib/modules/$VERSION-slitaz 3.132 +} 3.133 + 3.134 +# Pre and post install commands for Tazpkg. 3.135 +post_install() 3.136 +{ 3.137 + echo "Processing post-install commands..." 3.138 + chroot "$1/" depmod -a $VERSION-slitaz 3.139 + # GRUB stuff. 3.140 + if [ -f "$1/boot/grub/menu.lst" ]; then 3.141 + root_dev=`cat $1/boot/grub/menu.lst | grep root= | sed 's/.*root=\([^ ]*\).*/\1/' | head -n 1` 3.142 + grub_dev=`cat $1/boot/grub/menu.lst | grep "root (" | head -n 1` 3.143 + # Add new kernel entry in case of upgrade for installed system. 3.144 + if ! grep -q $SOURCE-$VERSION-slitaz $1/boot/grub/menu.lst; then 3.145 + cat >> $1/boot/grub/menu.lst << EOT 3.146 + 3.147 +title SliTaz GNU/Linux (Kernel $VERSION-slitaz) 3.148 +$grub_dev 3.149 +kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev 3.150 +EOT 3.151 + fi 3.152 + # Display information message. 3.153 + cat <<EOT 3.154 +---- 3.155 +GRUB is installed, these tree lines must be in your /boot/grub/menu.lst: 3.156 + 3.157 +title SliTaz GNU/Linux (Kernel $VERSION-slitaz) 3.158 +$grub_dev 3.159 +kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev 3.160 +---- 3.161 +EOT 3.162 + fi 3.163 +} 3.164 + 3.165 +clean_wok() 3.166 +{ 3.167 + #rm -rf aufs2 3.168 + rm stuff/aufs2-base* 3.169 + rm stuff/aufs2-standalone* 3.170 + rm stuff/aufs2-kbuild* 3.171 + rm -rf stuff/tmp 3.172 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/kernel-modular/stuff/001-squashfs-decompressors-add-xz-decompressor-module.patch Tue Feb 01 09:37:33 2011 +0100 4.3 @@ -0,0 +1,3934 @@ 4.4 +From: Lasse Collin <lasse.collin@tukaani.org> 4.5 +Date: Thu, 2 Dec 2010 19:14:19 +0000 (+0200) 4.6 +Subject: Decompressors: Add XZ decompressor module 4.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=3dbc3fe7878e53b43064a12d4ab31ca4c18ce85f 4.8 + 4.9 +Decompressors: Add XZ decompressor module 4.10 + 4.11 +In userspace, the .lzma format has become mostly a legacy 4.12 +file format that got superseded by the .xz format. Similarly, 4.13 +LZMA Utils was superseded by XZ Utils. 4.14 + 4.15 +These patches add support for XZ decompression into 4.16 +the kernel. Most of the code is as is from XZ Embedded 4.17 +<http://tukaani.org/xz/embedded.html>. It was written for 4.18 +the Linux kernel but is usable in other projects too. 4.19 + 4.20 +Advantages of XZ over the current LZMA code in the kernel: 4.21 + - Nice API that can be used by other kernel modules; it's 4.22 + not limited to kernel, initramfs, and initrd decompression. 4.23 + - Integrity check support (CRC32) 4.24 + - BCJ filters improve compression of executable code on 4.25 + certain architectures. These together with LZMA2 can 4.26 + produce a few percent smaller kernel or Squashfs images 4.27 + than plain LZMA without making the decompression slower. 4.28 + 4.29 +This patch: Add the main decompression code (xz_dec), testing 4.30 +module (xz_dec_test), wrapper script (xz_wrap.sh) for the xz 4.31 +command line tool, and documentation. The xz_dec module is 4.32 +enough to have a usable XZ decompressor e.g. for Squashfs. 4.33 + 4.34 +Signed-off-by: Lasse Collin <lasse.collin@tukaani.org> 4.35 +--- 4.36 + 4.37 +diff --git a/Documentation/xz.txt b/Documentation/xz.txt 4.38 +new file mode 100644 4.39 +index 0000000..68329ac 4.40 +--- /dev/null 4.41 ++++ b/Documentation/xz.txt 4.42 +@@ -0,0 +1,122 @@ 4.43 ++ 4.44 ++XZ data compression in Linux 4.45 ++============================ 4.46 ++ 4.47 ++Introduction 4.48 ++ 4.49 ++ XZ is a general purpose data compression format with high compression 4.50 ++ ratio and relatively fast decompression. The primary compression 4.51 ++ algorithm (filter) is LZMA2. Additional filters can be used to improve 4.52 ++ compression ratio even further. E.g. Branch/Call/Jump (BCJ) filters 4.53 ++ improve compression ratio of executable data. 4.54 ++ 4.55 ++ The XZ decompressor in Linux is called XZ Embedded. It supports 4.56 ++ the LZMA2 filter and optionally also BCJ filters. CRC32 is supported 4.57 ++ for integrity checking. The home page of XZ Embedded is at 4.58 ++ <http://tukaani.org/xz/embedded.html>, where you can find the 4.59 ++ latest version and also information about using the code outside 4.60 ++ the Linux kernel. 4.61 ++ 4.62 ++ For userspace, XZ Utils provide a zlib-like compression library 4.63 ++ and a gzip-like command line tool. XZ Utils can be downloaded from 4.64 ++ <http://tukaani.org/xz/>. 4.65 ++ 4.66 ++XZ related components in the kernel 4.67 ++ 4.68 ++ The xz_dec module provides XZ decompressor with single-call (buffer 4.69 ++ to buffer) and multi-call (stateful) APIs. The usage of the xz_dec 4.70 ++ module is documented in include/linux/xz.h. 4.71 ++ 4.72 ++ The xz_dec_test module is for testing xz_dec. xz_dec_test is not 4.73 ++ useful unless you are hacking the XZ decompressor. xz_dec_test 4.74 ++ allocates a char device major dynamically to which one can write 4.75 ++ .xz files from userspace. The decompressed output is thrown away. 4.76 ++ Keep an eye on dmesg to see diagnostics printed by xz_dec_test. 4.77 ++ See the xz_dec_test source code for the details. 4.78 ++ 4.79 ++ For decompressing the kernel image, initramfs, and initrd, there 4.80 ++ is a wrapper function in lib/decompress_unxz.c. Its API is the 4.81 ++ same as in other decompress_*.c files, which is defined in 4.82 ++ include/linux/decompress/generic.h. 4.83 ++ 4.84 ++ scripts/xz_wrap.sh is a wrapper for the xz command line tool found 4.85 ++ from XZ Utils. The wrapper sets compression options to values suitable 4.86 ++ for compressing the kernel image. 4.87 ++ 4.88 ++ For kernel makefiles, two commands are provided for use with 4.89 ++ $(call if_needed). The kernel image should be compressed with 4.90 ++ $(call if_needed,xzkern) which will use a BCJ filter and a big LZMA2 4.91 ++ dictionary. It will also append a four-byte trailer containing the 4.92 ++ uncompressed size of the file, which is needed by the boot code. 4.93 ++ Other things should be compressed with $(call if_needed,xzmisc) 4.94 ++ which will use no BCJ filter and 1 MiB LZMA2 dictionary. 4.95 ++ 4.96 ++Notes on compression options 4.97 ++ 4.98 ++ Since the XZ Embedded supports only streams with no integrity check or 4.99 ++ CRC32, make sure that you don't use some other integrity check type 4.100 ++ when encoding files that are supposed to be decoded by the kernel. With 4.101 ++ liblzma, you need to use either LZMA_CHECK_NONE or LZMA_CHECK_CRC32 4.102 ++ when encoding. With the xz command line tool, use --check=none or 4.103 ++ --check=crc32. 4.104 ++ 4.105 ++ Using CRC32 is strongly recommended unless there is some other layer 4.106 ++ which will verify the integrity of the uncompressed data anyway. 4.107 ++ Double checking the integrity would probably be waste of CPU cycles. 4.108 ++ Note that the headers will always have a CRC32 which will be validated 4.109 ++ by the decoder; you can only change the integrity check type (or 4.110 ++ disable it) for the actual uncompressed data. 4.111 ++ 4.112 ++ In userspace, LZMA2 is typically used with dictionary sizes of several 4.113 ++ megabytes. The decoder needs to have the dictionary in RAM, thus big 4.114 ++ dictionaries cannot be used for files that are intended to be decoded 4.115 ++ by the kernel. 1 MiB is probably the maximum reasonable dictionary 4.116 ++ size for in-kernel use (maybe more is OK for initramfs). The presets 4.117 ++ in XZ Utils may not be optimal when creating files for the kernel, 4.118 ++ so don't hesitate to use custom settings. Example: 4.119 ++ 4.120 ++ xz --check=crc32 --lzma2=dict=512KiB inputfile 4.121 ++ 4.122 ++ An exception to above dictionary size limitation is when the decoder 4.123 ++ is used in single-call mode. Decompressing the kernel itself is an 4.124 ++ example of this situation. In single-call mode, the memory usage 4.125 ++ doesn't depend on the dictionary size, and it is perfectly fine to 4.126 ++ use a big dictionary: for maximum compression, the dictionary should 4.127 ++ be at least as big as the uncompressed data itself. 4.128 ++ 4.129 ++Future plans 4.130 ++ 4.131 ++ Creating a limited XZ encoder may be considered if people think it is 4.132 ++ useful. LZMA2 is slower to compress than e.g. Deflate or LZO even at 4.133 ++ the fastest settings, so it isn't clear if LZMA2 encoder is wanted 4.134 ++ into the kernel. 4.135 ++ 4.136 ++ Support for limited random-access reading is planned for the 4.137 ++ decompression code. I don't know if it could have any use in the 4.138 ++ kernel, but I know that it would be useful in some embedded projects 4.139 ++ outside the Linux kernel. 4.140 ++ 4.141 ++Conformance to the .xz file format specification 4.142 ++ 4.143 ++ There are a couple of corner cases where things have been simplified 4.144 ++ at expense of detecting errors as early as possible. These should not 4.145 ++ matter in practice all, since they don't cause security issues. But 4.146 ++ it is good to know this if testing the code e.g. with the test files 4.147 ++ from XZ Utils. 4.148 ++ 4.149 ++Reporting bugs 4.150 ++ 4.151 ++ Before reporting a bug, please check that it's not fixed already 4.152 ++ at upstream. See <http://tukaani.org/xz/embedded.html> to get the 4.153 ++ latest code. 4.154 ++ 4.155 ++ Report bugs to <lasse.collin@tukaani.org> or visit #tukaani on 4.156 ++ Freenode and talk to Larhzu. I don't actively read LKML or other 4.157 ++ kernel-related mailing lists, so if there's something I should know, 4.158 ++ you should email to me personally or use IRC. 4.159 ++ 4.160 ++ Don't bother Igor Pavlov with questions about the XZ implementation 4.161 ++ in the kernel or about XZ Utils. While these two implementations 4.162 ++ include essential code that is directly based on Igor Pavlov's code, 4.163 ++ these implementations aren't maintained nor supported by him. 4.164 ++ 4.165 +diff --git a/include/linux/xz.h b/include/linux/xz.h 4.166 +new file mode 100644 4.167 +index 0000000..64cffa6 4.168 +--- /dev/null 4.169 ++++ b/include/linux/xz.h 4.170 +@@ -0,0 +1,264 @@ 4.171 ++/* 4.172 ++ * XZ decompressor 4.173 ++ * 4.174 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 4.175 ++ * Igor Pavlov <http://7-zip.org/> 4.176 ++ * 4.177 ++ * This file has been put into the public domain. 4.178 ++ * You can do whatever you want with this file. 4.179 ++ */ 4.180 ++ 4.181 ++#ifndef XZ_H 4.182 ++#define XZ_H 4.183 ++ 4.184 ++#ifdef __KERNEL__ 4.185 ++# include <linux/stddef.h> 4.186 ++# include <linux/types.h> 4.187 ++#else 4.188 ++# include <stddef.h> 4.189 ++# include <stdint.h> 4.190 ++#endif 4.191 ++ 4.192 ++/* In Linux, this is used to make extern functions static when needed. */ 4.193 ++#ifndef XZ_EXTERN 4.194 ++# define XZ_EXTERN extern 4.195 ++#endif 4.196 ++ 4.197 ++/** 4.198 ++ * enum xz_mode - Operation mode 4.199 ++ * 4.200 ++ * @XZ_SINGLE: Single-call mode. This uses less RAM than 4.201 ++ * than multi-call modes, because the LZMA2 4.202 ++ * dictionary doesn't need to be allocated as 4.203 ++ * part of the decoder state. All required data 4.204 ++ * structures are allocated at initialization, 4.205 ++ * so xz_dec_run() cannot return XZ_MEM_ERROR. 4.206 ++ * @XZ_PREALLOC: Multi-call mode with preallocated LZMA2 4.207 ++ * dictionary buffer. All data structures are 4.208 ++ * allocated at initialization, so xz_dec_run() 4.209 ++ * cannot return XZ_MEM_ERROR. 4.210 ++ * @XZ_DYNALLOC: Multi-call mode. The LZMA2 dictionary is 4.211 ++ * allocated once the required size has been 4.212 ++ * parsed from the stream headers. If the 4.213 ++ * allocation fails, xz_dec_run() will return 4.214 ++ * XZ_MEM_ERROR. 4.215 ++ * 4.216 ++ * It is possible to enable support only for a subset of the above 4.217 ++ * modes at compile time by defining XZ_DEC_SINGLE, XZ_DEC_PREALLOC, 4.218 ++ * or XZ_DEC_DYNALLOC. The xz_dec kernel module is always compiled 4.219 ++ * with support for all operation modes, but the preboot code may 4.220 ++ * be built with fewer features to minimize code size. 4.221 ++ */ 4.222 ++enum xz_mode { 4.223 ++ XZ_SINGLE, 4.224 ++ XZ_PREALLOC, 4.225 ++ XZ_DYNALLOC 4.226 ++}; 4.227 ++ 4.228 ++/** 4.229 ++ * enum xz_ret - Return codes 4.230 ++ * @XZ_OK: Everything is OK so far. More input or more 4.231 ++ * output space is required to continue. This 4.232 ++ * return code is possible only in multi-call mode 4.233 ++ * (XZ_PREALLOC or XZ_DYNALLOC). 4.234 ++ * @XZ_STREAM_END: Operation finished successfully. 4.235 ++ * @XZ_UNSUPPORTED_CHECK: Integrity check type is not supported. Decoding 4.236 ++ * is still possible in multi-call mode by simply 4.237 ++ * calling xz_dec_run() again. 4.238 ++ * Note that this return value is used only if 4.239 ++ * XZ_DEC_ANY_CHECK was defined at build time, 4.240 ++ * which is not used in the kernel. Unsupported 4.241 ++ * check types return XZ_OPTIONS_ERROR if 4.242 ++ * XZ_DEC_ANY_CHECK was not defined at build time. 4.243 ++ * @XZ_MEM_ERROR: Allocating memory failed. This return code is 4.244 ++ * possible only if the decoder was initialized 4.245 ++ * with XZ_DYNALLOC. The amount of memory that was 4.246 ++ * tried to be allocated was no more than the 4.247 ++ * dict_max argument given to xz_dec_init(). 4.248 ++ * @XZ_MEMLIMIT_ERROR: A bigger LZMA2 dictionary would be needed than 4.249 ++ * allowed by the dict_max argument given to 4.250 ++ * xz_dec_init(). This return value is possible 4.251 ++ * only in multi-call mode (XZ_PREALLOC or 4.252 ++ * XZ_DYNALLOC); the single-call mode (XZ_SINGLE) 4.253 ++ * ignores the dict_max argument. 4.254 ++ * @XZ_FORMAT_ERROR: File format was not recognized (wrong magic 4.255 ++ * bytes). 4.256 ++ * @XZ_OPTIONS_ERROR: This implementation doesn't support the requested 4.257 ++ * compression options. In the decoder this means 4.258 ++ * that the header CRC32 matches, but the header 4.259 ++ * itself specifies something that we don't support. 4.260 ++ * @XZ_DATA_ERROR: Compressed data is corrupt. 4.261 ++ * @XZ_BUF_ERROR: Cannot make any progress. Details are slightly 4.262 ++ * different between multi-call and single-call 4.263 ++ * mode; more information below. 4.264 ++ * 4.265 ++ * In multi-call mode, XZ_BUF_ERROR is returned when two consecutive calls 4.266 ++ * to XZ code cannot consume any input and cannot produce any new output. 4.267 ++ * This happens when there is no new input available, or the output buffer 4.268 ++ * is full while at least one output byte is still pending. Assuming your 4.269 ++ * code is not buggy, you can get this error only when decoding a compressed 4.270 ++ * stream that is truncated or otherwise corrupt. 4.271 ++ * 4.272 ++ * In single-call mode, XZ_BUF_ERROR is returned only when the output buffer 4.273 ++ * is too small or the compressed input is corrupt in a way that makes the 4.274 ++ * decoder produce more output than the caller expected. When it is 4.275 ++ * (relatively) clear that the compressed input is truncated, XZ_DATA_ERROR 4.276 ++ * is used instead of XZ_BUF_ERROR. 4.277 ++ */ 4.278 ++enum xz_ret { 4.279 ++ XZ_OK, 4.280 ++ XZ_STREAM_END, 4.281 ++ XZ_UNSUPPORTED_CHECK, 4.282 ++ XZ_MEM_ERROR, 4.283 ++ XZ_MEMLIMIT_ERROR, 4.284 ++ XZ_FORMAT_ERROR, 4.285 ++ XZ_OPTIONS_ERROR, 4.286 ++ XZ_DATA_ERROR, 4.287 ++ XZ_BUF_ERROR 4.288 ++}; 4.289 ++ 4.290 ++/** 4.291 ++ * struct xz_buf - Passing input and output buffers to XZ code 4.292 ++ * @in: Beginning of the input buffer. This may be NULL if and only 4.293 ++ * if in_pos is equal to in_size. 4.294 ++ * @in_pos: Current position in the input buffer. This must not exceed 4.295 ++ * in_size. 4.296 ++ * @in_size: Size of the input buffer 4.297 ++ * @out: Beginning of the output buffer. This may be NULL if and only 4.298 ++ * if out_pos is equal to out_size. 4.299 ++ * @out_pos: Current position in the output buffer. This must not exceed 4.300 ++ * out_size. 4.301 ++ * @out_size: Size of the output buffer 4.302 ++ * 4.303 ++ * Only the contents of the output buffer from out[out_pos] onward, and 4.304 ++ * the variables in_pos and out_pos are modified by the XZ code. 4.305 ++ */ 4.306 ++struct xz_buf { 4.307 ++ const uint8_t *in; 4.308 ++ size_t in_pos; 4.309 ++ size_t in_size; 4.310 ++ 4.311 ++ uint8_t *out; 4.312 ++ size_t out_pos; 4.313 ++ size_t out_size; 4.314 ++}; 4.315 ++ 4.316 ++/** 4.317 ++ * struct xz_dec - Opaque type to hold the XZ decoder state 4.318 ++ */ 4.319 ++struct xz_dec; 4.320 ++ 4.321 ++/** 4.322 ++ * xz_dec_init() - Allocate and initialize a XZ decoder state 4.323 ++ * @mode: Operation mode 4.324 ++ * @dict_max: Maximum size of the LZMA2 dictionary (history buffer) for 4.325 ++ * multi-call decoding. This is ignored in single-call mode 4.326 ++ * (mode == XZ_SINGLE). LZMA2 dictionary is always 2^n bytes 4.327 ++ * or 2^n + 2^(n-1) bytes (the latter sizes are less common 4.328 ++ * in practice), so other values for dict_max don't make sense. 4.329 ++ * In the kernel, dictionary sizes of 64 KiB, 128 KiB, 256 KiB, 4.330 ++ * 512 KiB, and 1 MiB are probably the only reasonable values, 4.331 ++ * except for kernel and initramfs images where a bigger 4.332 ++ * dictionary can be fine and useful. 4.333 ++ * 4.334 ++ * Single-call mode (XZ_SINGLE): xz_dec_run() decodes the whole stream at 4.335 ++ * once. The caller must provide enough output space or the decoding will 4.336 ++ * fail. The output space is used as the dictionary buffer, which is why 4.337 ++ * there is no need to allocate the dictionary as part of the decoder's 4.338 ++ * internal state. 4.339 ++ * 4.340 ++ * Because the output buffer is used as the workspace, streams encoded using 4.341 ++ * a big dictionary are not a problem in single-call mode. It is enough that 4.342 ++ * the output buffer is big enough to hold the actual uncompressed data; it 4.343 ++ * can be smaller than the dictionary size stored in the stream headers. 4.344 ++ * 4.345 ++ * Multi-call mode with preallocated dictionary (XZ_PREALLOC): dict_max bytes 4.346 ++ * of memory is preallocated for the LZMA2 dictionary. This way there is no 4.347 ++ * risk that xz_dec_run() could run out of memory, since xz_dec_run() will 4.348 ++ * never allocate any memory. Instead, if the preallocated dictionary is too 4.349 ++ * small for decoding the given input stream, xz_dec_run() will return 4.350 ++ * XZ_MEMLIMIT_ERROR. Thus, it is important to know what kind of data will be 4.351 ++ * decoded to avoid allocating excessive amount of memory for the dictionary. 4.352 ++ * 4.353 ++ * Multi-call mode with dynamically allocated dictionary (XZ_DYNALLOC): 4.354 ++ * dict_max specifies the maximum allowed dictionary size that xz_dec_run() 4.355 ++ * may allocate once it has parsed the dictionary size from the stream 4.356 ++ * headers. This way excessive allocations can be avoided while still 4.357 ++ * limiting the maximum memory usage to a sane value to prevent running the 4.358 ++ * system out of memory when decompressing streams from untrusted sources. 4.359 ++ * 4.360 ++ * On success, xz_dec_init() returns a pointer to struct xz_dec, which is 4.361 ++ * ready to be used with xz_dec_run(). If memory allocation fails, 4.362 ++ * xz_dec_init() returns NULL. 4.363 ++ */ 4.364 ++XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max); 4.365 ++ 4.366 ++/** 4.367 ++ * xz_dec_run() - Run the XZ decoder 4.368 ++ * @s: Decoder state allocated using xz_dec_init() 4.369 ++ * @b: Input and output buffers 4.370 ++ * 4.371 ++ * The possible return values depend on build options and operation mode. 4.372 ++ * See enum xz_ret for details. 4.373 ++ * 4.374 ++ * Note that if an error occurs in single-call mode (return value is not 4.375 ++ * XZ_STREAM_END), b->in_pos and b->out_pos are not modified and the 4.376 ++ * contents of the output buffer from b->out[b->out_pos] onward are 4.377 ++ * undefined. This is true even after XZ_BUF_ERROR, because with some filter 4.378 ++ * chains, there may be a second pass over the output buffer, and this pass 4.379 ++ * cannot be properly done if the output buffer is truncated. Thus, you 4.380 ++ * cannot give the single-call decoder a too small buffer and then expect to 4.381 ++ * get that amount valid data from the beginning of the stream. You must use 4.382 ++ * the multi-call decoder if you don't want to uncompress the whole stream. 4.383 ++ */ 4.384 ++XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b); 4.385 ++ 4.386 ++/** 4.387 ++ * xz_dec_reset() - Reset an already allocated decoder state 4.388 ++ * @s: Decoder state allocated using xz_dec_init() 4.389 ++ * 4.390 ++ * This function can be used to reset the multi-call decoder state without 4.391 ++ * freeing and reallocating memory with xz_dec_end() and xz_dec_init(). 4.392 ++ * 4.393 ++ * In single-call mode, xz_dec_reset() is always called in the beginning of 4.394 ++ * xz_dec_run(). Thus, explicit call to xz_dec_reset() is useful only in 4.395 ++ * multi-call mode. 4.396 ++ */ 4.397 ++XZ_EXTERN void xz_dec_reset(struct xz_dec *s); 4.398 ++ 4.399 ++/** 4.400 ++ * xz_dec_end() - Free the memory allocated for the decoder state 4.401 ++ * @s: Decoder state allocated using xz_dec_init(). If s is NULL, 4.402 ++ * this function does nothing. 4.403 ++ */ 4.404 ++XZ_EXTERN void xz_dec_end(struct xz_dec *s); 4.405 ++ 4.406 ++/* 4.407 ++ * Standalone build (userspace build or in-kernel build for boot time use) 4.408 ++ * needs a CRC32 implementation. For normal in-kernel use, kernel's own 4.409 ++ * CRC32 module is used instead, and users of this module don't need to 4.410 ++ * care about the functions below. 4.411 ++ */ 4.412 ++#ifndef XZ_INTERNAL_CRC32 4.413 ++# ifdef __KERNEL__ 4.414 ++# define XZ_INTERNAL_CRC32 0 4.415 ++# else 4.416 ++# define XZ_INTERNAL_CRC32 1 4.417 ++# endif 4.418 ++#endif 4.419 ++ 4.420 ++#if XZ_INTERNAL_CRC32 4.421 ++/* 4.422 ++ * This must be called before any other xz_* function to initialize 4.423 ++ * the CRC32 lookup table. 4.424 ++ */ 4.425 ++XZ_EXTERN void xz_crc32_init(void); 4.426 ++ 4.427 ++/* 4.428 ++ * Update CRC32 value using the polynomial from IEEE-802.3. To start a new 4.429 ++ * calculation, the third argument must be zero. To continue the calculation, 4.430 ++ * the previously returned value is passed as the third argument. 4.431 ++ */ 4.432 ++XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc); 4.433 ++#endif 4.434 ++#endif 4.435 +diff --git a/lib/Kconfig b/lib/Kconfig 4.436 +index fa9bf2c..6090314 100644 4.437 +--- a/lib/Kconfig 4.438 ++++ b/lib/Kconfig 4.439 +@@ -106,6 +106,8 @@ config LZO_COMPRESS 4.440 + config LZO_DECOMPRESS 4.441 + tristate 4.442 + 4.443 ++source "lib/xz/Kconfig" 4.444 ++ 4.445 + # 4.446 + # These all provide a common interface (hence the apparent duplication with 4.447 + # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.) 4.448 +diff --git a/lib/Makefile b/lib/Makefile 4.449 +index e6a3763..f2f98dd 100644 4.450 +--- a/lib/Makefile 4.451 ++++ b/lib/Makefile 4.452 +@@ -69,6 +69,7 @@ obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ 4.453 + obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ 4.454 + obj-$(CONFIG_LZO_COMPRESS) += lzo/ 4.455 + obj-$(CONFIG_LZO_DECOMPRESS) += lzo/ 4.456 ++obj-$(CONFIG_XZ_DEC) += xz/ 4.457 + obj-$(CONFIG_RAID6_PQ) += raid6/ 4.458 + 4.459 + lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o 4.460 +diff --git a/lib/xz/Kconfig b/lib/xz/Kconfig 4.461 +new file mode 100644 4.462 +index 0000000..e3b6e18 4.463 +--- /dev/null 4.464 ++++ b/lib/xz/Kconfig 4.465 +@@ -0,0 +1,59 @@ 4.466 ++config XZ_DEC 4.467 ++ tristate "XZ decompression support" 4.468 ++ select CRC32 4.469 ++ help 4.470 ++ LZMA2 compression algorithm and BCJ filters are supported using 4.471 ++ the .xz file format as the container. For integrity checking, 4.472 ++ CRC32 is supported. See Documentation/xz.txt for more information. 4.473 ++ 4.474 ++config XZ_DEC_X86 4.475 ++ bool "x86 BCJ filter decoder" if EMBEDDED 4.476 ++ default y 4.477 ++ depends on XZ_DEC 4.478 ++ select XZ_DEC_BCJ 4.479 ++ 4.480 ++config XZ_DEC_POWERPC 4.481 ++ bool "PowerPC BCJ filter decoder" if EMBEDDED 4.482 ++ default y 4.483 ++ depends on XZ_DEC 4.484 ++ select XZ_DEC_BCJ 4.485 ++ 4.486 ++config XZ_DEC_IA64 4.487 ++ bool "IA-64 BCJ filter decoder" if EMBEDDED 4.488 ++ default y 4.489 ++ depends on XZ_DEC 4.490 ++ select XZ_DEC_BCJ 4.491 ++ 4.492 ++config XZ_DEC_ARM 4.493 ++ bool "ARM BCJ filter decoder" if EMBEDDED 4.494 ++ default y 4.495 ++ depends on XZ_DEC 4.496 ++ select XZ_DEC_BCJ 4.497 ++ 4.498 ++config XZ_DEC_ARMTHUMB 4.499 ++ bool "ARM-Thumb BCJ filter decoder" if EMBEDDED 4.500 ++ default y 4.501 ++ depends on XZ_DEC 4.502 ++ select XZ_DEC_BCJ 4.503 ++ 4.504 ++config XZ_DEC_SPARC 4.505 ++ bool "SPARC BCJ filter decoder" if EMBEDDED 4.506 ++ default y 4.507 ++ depends on XZ_DEC 4.508 ++ select XZ_DEC_BCJ 4.509 ++ 4.510 ++config XZ_DEC_BCJ 4.511 ++ bool 4.512 ++ default n 4.513 ++ 4.514 ++config XZ_DEC_TEST 4.515 ++ tristate "XZ decompressor tester" 4.516 ++ default n 4.517 ++ depends on XZ_DEC 4.518 ++ help 4.519 ++ This allows passing .xz files to the in-kernel XZ decoder via 4.520 ++ a character special file. It calculates CRC32 of the decompressed 4.521 ++ data and writes diagnostics to the system log. 4.522 ++ 4.523 ++ Unless you are developing the XZ decoder, you don't need this 4.524 ++ and should say N. 4.525 +diff --git a/lib/xz/Makefile b/lib/xz/Makefile 4.526 +new file mode 100644 4.527 +index 0000000..a7fa769 4.528 +--- /dev/null 4.529 ++++ b/lib/xz/Makefile 4.530 +@@ -0,0 +1,5 @@ 4.531 ++obj-$(CONFIG_XZ_DEC) += xz_dec.o 4.532 ++xz_dec-y := xz_dec_syms.o xz_dec_stream.o xz_dec_lzma2.o 4.533 ++xz_dec-$(CONFIG_XZ_DEC_BCJ) += xz_dec_bcj.o 4.534 ++ 4.535 ++obj-$(CONFIG_XZ_DEC_TEST) += xz_dec_test.o 4.536 +diff --git a/lib/xz/xz_crc32.c b/lib/xz/xz_crc32.c 4.537 +new file mode 100644 4.538 +index 0000000..34532d1 4.539 +--- /dev/null 4.540 ++++ b/lib/xz/xz_crc32.c 4.541 +@@ -0,0 +1,59 @@ 4.542 ++/* 4.543 ++ * CRC32 using the polynomial from IEEE-802.3 4.544 ++ * 4.545 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 4.546 ++ * Igor Pavlov <http://7-zip.org/> 4.547 ++ * 4.548 ++ * This file has been put into the public domain. 4.549 ++ * You can do whatever you want with this file. 4.550 ++ */ 4.551 ++ 4.552 ++/* 4.553 ++ * This is not the fastest implementation, but it is pretty compact. 4.554 ++ * The fastest versions of xz_crc32() on modern CPUs without hardware 4.555 ++ * accelerated CRC instruction are 3-5 times as fast as this version, 4.556 ++ * but they are bigger and use more memory for the lookup table. 4.557 ++ */ 4.558 ++ 4.559 ++#include "xz_private.h" 4.560 ++ 4.561 ++/* 4.562 ++ * STATIC_RW_DATA is used in the pre-boot environment on some architectures. 4.563 ++ * See <linux/decompress/mm.h> for details. 4.564 ++ */ 4.565 ++#ifndef STATIC_RW_DATA 4.566 ++# define STATIC_RW_DATA static 4.567 ++#endif 4.568 ++ 4.569 ++STATIC_RW_DATA uint32_t xz_crc32_table[256]; 4.570 ++ 4.571 ++XZ_EXTERN void xz_crc32_init(void) 4.572 ++{ 4.573 ++ const uint32_t poly = 0xEDB88320; 4.574 ++ 4.575 ++ uint32_t i; 4.576 ++ uint32_t j; 4.577 ++ uint32_t r; 4.578 ++ 4.579 ++ for (i = 0; i < 256; ++i) { 4.580 ++ r = i; 4.581 ++ for (j = 0; j < 8; ++j) 4.582 ++ r = (r >> 1) ^ (poly & ~((r & 1) - 1)); 4.583 ++ 4.584 ++ xz_crc32_table[i] = r; 4.585 ++ } 4.586 ++ 4.587 ++ return; 4.588 ++} 4.589 ++ 4.590 ++XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc) 4.591 ++{ 4.592 ++ crc = ~crc; 4.593 ++ 4.594 ++ while (size != 0) { 4.595 ++ crc = xz_crc32_table[*buf++ ^ (crc & 0xFF)] ^ (crc >> 8); 4.596 ++ --size; 4.597 ++ } 4.598 ++ 4.599 ++ return ~crc; 4.600 ++} 4.601 +diff --git a/lib/xz/xz_dec_bcj.c b/lib/xz/xz_dec_bcj.c 4.602 +new file mode 100644 4.603 +index 0000000..e51e255 4.604 +--- /dev/null 4.605 ++++ b/lib/xz/xz_dec_bcj.c 4.606 +@@ -0,0 +1,561 @@ 4.607 ++/* 4.608 ++ * Branch/Call/Jump (BCJ) filter decoders 4.609 ++ * 4.610 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 4.611 ++ * Igor Pavlov <http://7-zip.org/> 4.612 ++ * 4.613 ++ * This file has been put into the public domain. 4.614 ++ * You can do whatever you want with this file. 4.615 ++ */ 4.616 ++ 4.617 ++#include "xz_private.h" 4.618 ++ 4.619 ++/* 4.620 ++ * The rest of the file is inside this ifdef. It makes things a little more 4.621 ++ * convenient when building without support for any BCJ filters. 4.622 ++ */ 4.623 ++#ifdef XZ_DEC_BCJ 4.624 ++ 4.625 ++struct xz_dec_bcj { 4.626 ++ /* Type of the BCJ filter being used */ 4.627 ++ enum { 4.628 ++ BCJ_X86 = 4, /* x86 or x86-64 */ 4.629 ++ BCJ_POWERPC = 5, /* Big endian only */ 4.630 ++ BCJ_IA64 = 6, /* Big or little endian */ 4.631 ++ BCJ_ARM = 7, /* Little endian only */ 4.632 ++ BCJ_ARMTHUMB = 8, /* Little endian only */ 4.633 ++ BCJ_SPARC = 9 /* Big or little endian */ 4.634 ++ } type; 4.635 ++ 4.636 ++ /* 4.637 ++ * Return value of the next filter in the chain. We need to preserve 4.638 ++ * this information across calls, because we must not call the next 4.639 ++ * filter anymore once it has returned XZ_STREAM_END. 4.640 ++ */ 4.641 ++ enum xz_ret ret; 4.642 ++ 4.643 ++ /* True if we are operating in single-call mode. */ 4.644 ++ bool single_call; 4.645 ++ 4.646 ++ /* 4.647 ++ * Absolute position relative to the beginning of the uncompressed 4.648 ++ * data (in a single .xz Block). We care only about the lowest 32 4.649 ++ * bits so this doesn't need to be uint64_t even with big files. 4.650 ++ */ 4.651 ++ uint32_t pos; 4.652 ++ 4.653 ++ /* x86 filter state */ 4.654 ++ uint32_t x86_prev_mask; 4.655 ++ 4.656 ++ /* Temporary space to hold the variables from struct xz_buf */ 4.657 ++ uint8_t *out; 4.658 ++ size_t out_pos; 4.659 ++ size_t out_size; 4.660 ++ 4.661 ++ struct { 4.662 ++ /* Amount of already filtered data in the beginning of buf */ 4.663 ++ size_t filtered; 4.664 ++ 4.665 ++ /* Total amount of data currently stored in buf */ 4.666 ++ size_t size; 4.667 ++ 4.668 ++ /* 4.669 ++ * Buffer to hold a mix of filtered and unfiltered data. This 4.670 ++ * needs to be big enough to hold Alignment + 2 * Look-ahead: 4.671 ++ * 4.672 ++ * Type Alignment Look-ahead 4.673 ++ * x86 1 4 4.674 ++ * PowerPC 4 0 4.675 ++ * IA-64 16 0 4.676 ++ * ARM 4 0 4.677 ++ * ARM-Thumb 2 2 4.678 ++ * SPARC 4 0 4.679 ++ */ 4.680 ++ uint8_t buf[16]; 4.681 ++ } temp; 4.682 ++}; 4.683 ++ 4.684 ++#ifdef XZ_DEC_X86 4.685 ++/* 4.686 ++ * This is used to test the most significant byte of a memory address 4.687 ++ * in an x86 instruction. 4.688 ++ */ 4.689 ++static inline int bcj_x86_test_msbyte(uint8_t b) 4.690 ++{ 4.691 ++ return b == 0x00 || b == 0xFF; 4.692 ++} 4.693 ++ 4.694 ++static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.695 ++{ 4.696 ++ static const bool mask_to_allowed_status[8] 4.697 ++ = { true, true, true, false, true, false, false, false }; 4.698 ++ 4.699 ++ static const uint8_t mask_to_bit_num[8] = { 0, 1, 2, 2, 3, 3, 3, 3 }; 4.700 ++ 4.701 ++ size_t i; 4.702 ++ size_t prev_pos = (size_t)-1; 4.703 ++ uint32_t prev_mask = s->x86_prev_mask; 4.704 ++ uint32_t src; 4.705 ++ uint32_t dest; 4.706 ++ uint32_t j; 4.707 ++ uint8_t b; 4.708 ++ 4.709 ++ if (size <= 4) 4.710 ++ return 0; 4.711 ++ 4.712 ++ size -= 4; 4.713 ++ for (i = 0; i < size; ++i) { 4.714 ++ if ((buf[i] & 0xFE) != 0xE8) 4.715 ++ continue; 4.716 ++ 4.717 ++ prev_pos = i - prev_pos; 4.718 ++ if (prev_pos > 3) { 4.719 ++ prev_mask = 0; 4.720 ++ } else { 4.721 ++ prev_mask = (prev_mask << (prev_pos - 1)) & 7; 4.722 ++ if (prev_mask != 0) { 4.723 ++ b = buf[i + 4 - mask_to_bit_num[prev_mask]]; 4.724 ++ if (!mask_to_allowed_status[prev_mask] 4.725 ++ || bcj_x86_test_msbyte(b)) { 4.726 ++ prev_pos = i; 4.727 ++ prev_mask = (prev_mask << 1) | 1; 4.728 ++ continue; 4.729 ++ } 4.730 ++ } 4.731 ++ } 4.732 ++ 4.733 ++ prev_pos = i; 4.734 ++ 4.735 ++ if (bcj_x86_test_msbyte(buf[i + 4])) { 4.736 ++ src = get_unaligned_le32(buf + i + 1); 4.737 ++ while (true) { 4.738 ++ dest = src - (s->pos + (uint32_t)i + 5); 4.739 ++ if (prev_mask == 0) 4.740 ++ break; 4.741 ++ 4.742 ++ j = mask_to_bit_num[prev_mask] * 8; 4.743 ++ b = (uint8_t)(dest >> (24 - j)); 4.744 ++ if (!bcj_x86_test_msbyte(b)) 4.745 ++ break; 4.746 ++ 4.747 ++ src = dest ^ (((uint32_t)1 << (32 - j)) - 1); 4.748 ++ } 4.749 ++ 4.750 ++ dest &= 0x01FFFFFF; 4.751 ++ dest |= (uint32_t)0 - (dest & 0x01000000); 4.752 ++ put_unaligned_le32(dest, buf + i + 1); 4.753 ++ i += 4; 4.754 ++ } else { 4.755 ++ prev_mask = (prev_mask << 1) | 1; 4.756 ++ } 4.757 ++ } 4.758 ++ 4.759 ++ prev_pos = i - prev_pos; 4.760 ++ s->x86_prev_mask = prev_pos > 3 ? 0 : prev_mask << (prev_pos - 1); 4.761 ++ return i; 4.762 ++} 4.763 ++#endif 4.764 ++ 4.765 ++#ifdef XZ_DEC_POWERPC 4.766 ++static size_t bcj_powerpc(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.767 ++{ 4.768 ++ size_t i; 4.769 ++ uint32_t instr; 4.770 ++ 4.771 ++ for (i = 0; i + 4 <= size; i += 4) { 4.772 ++ instr = get_unaligned_be32(buf + i); 4.773 ++ if ((instr & 0xFC000003) == 0x48000001) { 4.774 ++ instr &= 0x03FFFFFC; 4.775 ++ instr -= s->pos + (uint32_t)i; 4.776 ++ instr &= 0x03FFFFFC; 4.777 ++ instr |= 0x48000001; 4.778 ++ put_unaligned_be32(instr, buf + i); 4.779 ++ } 4.780 ++ } 4.781 ++ 4.782 ++ return i; 4.783 ++} 4.784 ++#endif 4.785 ++ 4.786 ++#ifdef XZ_DEC_IA64 4.787 ++static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.788 ++{ 4.789 ++ static const uint8_t branch_table[32] = { 4.790 ++ 0, 0, 0, 0, 0, 0, 0, 0, 4.791 ++ 0, 0, 0, 0, 0, 0, 0, 0, 4.792 ++ 4, 4, 6, 6, 0, 0, 7, 7, 4.793 ++ 4, 4, 0, 0, 4, 4, 0, 0 4.794 ++ }; 4.795 ++ 4.796 ++ /* 4.797 ++ * The local variables take a little bit stack space, but it's less 4.798 ++ * than what LZMA2 decoder takes, so it doesn't make sense to reduce 4.799 ++ * stack usage here without doing that for the LZMA2 decoder too. 4.800 ++ */ 4.801 ++ 4.802 ++ /* Loop counters */ 4.803 ++ size_t i; 4.804 ++ size_t j; 4.805 ++ 4.806 ++ /* Instruction slot (0, 1, or 2) in the 128-bit instruction word */ 4.807 ++ uint32_t slot; 4.808 ++ 4.809 ++ /* Bitwise offset of the instruction indicated by slot */ 4.810 ++ uint32_t bit_pos; 4.811 ++ 4.812 ++ /* bit_pos split into byte and bit parts */ 4.813 ++ uint32_t byte_pos; 4.814 ++ uint32_t bit_res; 4.815 ++ 4.816 ++ /* Address part of an instruction */ 4.817 ++ uint32_t addr; 4.818 ++ 4.819 ++ /* Mask used to detect which instructions to convert */ 4.820 ++ uint32_t mask; 4.821 ++ 4.822 ++ /* 41-bit instruction stored somewhere in the lowest 48 bits */ 4.823 ++ uint64_t instr; 4.824 ++ 4.825 ++ /* Instruction normalized with bit_res for easier manipulation */ 4.826 ++ uint64_t norm; 4.827 ++ 4.828 ++ for (i = 0; i + 16 <= size; i += 16) { 4.829 ++ mask = branch_table[buf[i] & 0x1F]; 4.830 ++ for (slot = 0, bit_pos = 5; slot < 3; ++slot, bit_pos += 41) { 4.831 ++ if (((mask >> slot) & 1) == 0) 4.832 ++ continue; 4.833 ++ 4.834 ++ byte_pos = bit_pos >> 3; 4.835 ++ bit_res = bit_pos & 7; 4.836 ++ instr = 0; 4.837 ++ for (j = 0; j < 6; ++j) 4.838 ++ instr |= (uint64_t)(buf[i + j + byte_pos]) 4.839 ++ << (8 * j); 4.840 ++ 4.841 ++ norm = instr >> bit_res; 4.842 ++ 4.843 ++ if (((norm >> 37) & 0x0F) == 0x05 4.844 ++ && ((norm >> 9) & 0x07) == 0) { 4.845 ++ addr = (norm >> 13) & 0x0FFFFF; 4.846 ++ addr |= ((uint32_t)(norm >> 36) & 1) << 20; 4.847 ++ addr <<= 4; 4.848 ++ addr -= s->pos + (uint32_t)i; 4.849 ++ addr >>= 4; 4.850 ++ 4.851 ++ norm &= ~((uint64_t)0x8FFFFF << 13); 4.852 ++ norm |= (uint64_t)(addr & 0x0FFFFF) << 13; 4.853 ++ norm |= (uint64_t)(addr & 0x100000) 4.854 ++ << (36 - 20); 4.855 ++ 4.856 ++ instr &= (1 << bit_res) - 1; 4.857 ++ instr |= norm << bit_res; 4.858 ++ 4.859 ++ for (j = 0; j < 6; j++) 4.860 ++ buf[i + j + byte_pos] 4.861 ++ = (uint8_t)(instr >> (8 * j)); 4.862 ++ } 4.863 ++ } 4.864 ++ } 4.865 ++ 4.866 ++ return i; 4.867 ++} 4.868 ++#endif 4.869 ++ 4.870 ++#ifdef XZ_DEC_ARM 4.871 ++static size_t bcj_arm(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.872 ++{ 4.873 ++ size_t i; 4.874 ++ uint32_t addr; 4.875 ++ 4.876 ++ for (i = 0; i + 4 <= size; i += 4) { 4.877 ++ if (buf[i + 3] == 0xEB) { 4.878 ++ addr = (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8) 4.879 ++ | ((uint32_t)buf[i + 2] << 16); 4.880 ++ addr <<= 2; 4.881 ++ addr -= s->pos + (uint32_t)i + 8; 4.882 ++ addr >>= 2; 4.883 ++ buf[i] = (uint8_t)addr; 4.884 ++ buf[i + 1] = (uint8_t)(addr >> 8); 4.885 ++ buf[i + 2] = (uint8_t)(addr >> 16); 4.886 ++ } 4.887 ++ } 4.888 ++ 4.889 ++ return i; 4.890 ++} 4.891 ++#endif 4.892 ++ 4.893 ++#ifdef XZ_DEC_ARMTHUMB 4.894 ++static size_t bcj_armthumb(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.895 ++{ 4.896 ++ size_t i; 4.897 ++ uint32_t addr; 4.898 ++ 4.899 ++ for (i = 0; i + 4 <= size; i += 2) { 4.900 ++ if ((buf[i + 1] & 0xF8) == 0xF0 4.901 ++ && (buf[i + 3] & 0xF8) == 0xF8) { 4.902 ++ addr = (((uint32_t)buf[i + 1] & 0x07) << 19) 4.903 ++ | ((uint32_t)buf[i] << 11) 4.904 ++ | (((uint32_t)buf[i + 3] & 0x07) << 8) 4.905 ++ | (uint32_t)buf[i + 2]; 4.906 ++ addr <<= 1; 4.907 ++ addr -= s->pos + (uint32_t)i + 4; 4.908 ++ addr >>= 1; 4.909 ++ buf[i + 1] = (uint8_t)(0xF0 | ((addr >> 19) & 0x07)); 4.910 ++ buf[i] = (uint8_t)(addr >> 11); 4.911 ++ buf[i + 3] = (uint8_t)(0xF8 | ((addr >> 8) & 0x07)); 4.912 ++ buf[i + 2] = (uint8_t)addr; 4.913 ++ i += 2; 4.914 ++ } 4.915 ++ } 4.916 ++ 4.917 ++ return i; 4.918 ++} 4.919 ++#endif 4.920 ++ 4.921 ++#ifdef XZ_DEC_SPARC 4.922 ++static size_t bcj_sparc(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 4.923 ++{ 4.924 ++ size_t i; 4.925 ++ uint32_t instr; 4.926 ++ 4.927 ++ for (i = 0; i + 4 <= size; i += 4) { 4.928 ++ instr = get_unaligned_be32(buf + i); 4.929 ++ if ((instr >> 22) == 0x100 || (instr >> 22) == 0x1FF) { 4.930 ++ instr <<= 2; 4.931 ++ instr -= s->pos + (uint32_t)i; 4.932 ++ instr >>= 2; 4.933 ++ instr = ((uint32_t)0x40000000 - (instr & 0x400000)) 4.934 ++ | 0x40000000 | (instr & 0x3FFFFF); 4.935 ++ put_unaligned_be32(instr, buf + i); 4.936 ++ } 4.937 ++ } 4.938 ++ 4.939 ++ return i; 4.940 ++} 4.941 ++#endif 4.942 ++ 4.943 ++/* 4.944 ++ * Apply the selected BCJ filter. Update *pos and s->pos to match the amount 4.945 ++ * of data that got filtered. 4.946 ++ * 4.947 ++ * NOTE: This is implemented as a switch statement to avoid using function 4.948 ++ * pointers, which could be problematic in the kernel boot code, which must 4.949 ++ * avoid pointers to static data (at least on x86). 4.950 ++ */ 4.951 ++static void bcj_apply(struct xz_dec_bcj *s, 4.952 ++ uint8_t *buf, size_t *pos, size_t size) 4.953 ++{ 4.954 ++ size_t filtered; 4.955 ++ 4.956 ++ buf += *pos; 4.957 ++ size -= *pos; 4.958 ++ 4.959 ++ switch (s->type) { 4.960 ++#ifdef XZ_DEC_X86 4.961 ++ case BCJ_X86: 4.962 ++ filtered = bcj_x86(s, buf, size); 4.963 ++ break; 4.964 ++#endif 4.965 ++#ifdef XZ_DEC_POWERPC 4.966 ++ case BCJ_POWERPC: 4.967 ++ filtered = bcj_powerpc(s, buf, size); 4.968 ++ break; 4.969 ++#endif 4.970 ++#ifdef XZ_DEC_IA64 4.971 ++ case BCJ_IA64: 4.972 ++ filtered = bcj_ia64(s, buf, size); 4.973 ++ break; 4.974 ++#endif 4.975 ++#ifdef XZ_DEC_ARM 4.976 ++ case BCJ_ARM: 4.977 ++ filtered = bcj_arm(s, buf, size); 4.978 ++ break; 4.979 ++#endif 4.980 ++#ifdef XZ_DEC_ARMTHUMB 4.981 ++ case BCJ_ARMTHUMB: 4.982 ++ filtered = bcj_armthumb(s, buf, size); 4.983 ++ break; 4.984 ++#endif 4.985 ++#ifdef XZ_DEC_SPARC 4.986 ++ case BCJ_SPARC: 4.987 ++ filtered = bcj_sparc(s, buf, size); 4.988 ++ break; 4.989 ++#endif 4.990 ++ default: 4.991 ++ /* Never reached but silence compiler warnings. */ 4.992 ++ filtered = 0; 4.993 ++ break; 4.994 ++ } 4.995 ++ 4.996 ++ *pos += filtered; 4.997 ++ s->pos += filtered; 4.998 ++} 4.999 ++ 4.1000 ++/* 4.1001 ++ * Flush pending filtered data from temp to the output buffer. 4.1002 ++ * Move the remaining mixture of possibly filtered and unfiltered 4.1003 ++ * data to the beginning of temp. 4.1004 ++ */ 4.1005 ++static void bcj_flush(struct xz_dec_bcj *s, struct xz_buf *b) 4.1006 ++{ 4.1007 ++ size_t copy_size; 4.1008 ++ 4.1009 ++ copy_size = min_t(size_t, s->temp.filtered, b->out_size - b->out_pos); 4.1010 ++ memcpy(b->out + b->out_pos, s->temp.buf, copy_size); 4.1011 ++ b->out_pos += copy_size; 4.1012 ++ 4.1013 ++ s->temp.filtered -= copy_size; 4.1014 ++ s->temp.size -= copy_size; 4.1015 ++ memmove(s->temp.buf, s->temp.buf + copy_size, s->temp.size); 4.1016 ++} 4.1017 ++ 4.1018 ++/* 4.1019 ++ * The BCJ filter functions are primitive in sense that they process the 4.1020 ++ * data in chunks of 1-16 bytes. To hide this issue, this function does 4.1021 ++ * some buffering. 4.1022 ++ */ 4.1023 ++XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, 4.1024 ++ struct xz_dec_lzma2 *lzma2, 4.1025 ++ struct xz_buf *b) 4.1026 ++{ 4.1027 ++ size_t out_start; 4.1028 ++ 4.1029 ++ /* 4.1030 ++ * Flush pending already filtered data to the output buffer. Return 4.1031 ++ * immediatelly if we couldn't flush everything, or if the next 4.1032 ++ * filter in the chain had already returned XZ_STREAM_END. 4.1033 ++ */ 4.1034 ++ if (s->temp.filtered > 0) { 4.1035 ++ bcj_flush(s, b); 4.1036 ++ if (s->temp.filtered > 0) 4.1037 ++ return XZ_OK; 4.1038 ++ 4.1039 ++ if (s->ret == XZ_STREAM_END) 4.1040 ++ return XZ_STREAM_END; 4.1041 ++ } 4.1042 ++ 4.1043 ++ /* 4.1044 ++ * If we have more output space than what is currently pending in 4.1045 ++ * temp, copy the unfiltered data from temp to the output buffer 4.1046 ++ * and try to fill the output buffer by decoding more data from the 4.1047 ++ * next filter in the chain. Apply the BCJ filter on the new data 4.1048 ++ * in the output buffer. If everything cannot be filtered, copy it 4.1049 ++ * to temp and rewind the output buffer position accordingly. 4.1050 ++ */ 4.1051 ++ if (s->temp.size < b->out_size - b->out_pos) { 4.1052 ++ out_start = b->out_pos; 4.1053 ++ memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size); 4.1054 ++ b->out_pos += s->temp.size; 4.1055 ++ 4.1056 ++ s->ret = xz_dec_lzma2_run(lzma2, b); 4.1057 ++ if (s->ret != XZ_STREAM_END 4.1058 ++ && (s->ret != XZ_OK || s->single_call)) 4.1059 ++ return s->ret; 4.1060 ++ 4.1061 ++ bcj_apply(s, b->out, &out_start, b->out_pos); 4.1062 ++ 4.1063 ++ /* 4.1064 ++ * As an exception, if the next filter returned XZ_STREAM_END, 4.1065 ++ * we can do that too, since the last few bytes that remain 4.1066 ++ * unfiltered are meant to remain unfiltered. 4.1067 ++ */ 4.1068 ++ if (s->ret == XZ_STREAM_END) 4.1069 ++ return XZ_STREAM_END; 4.1070 ++ 4.1071 ++ s->temp.size = b->out_pos - out_start; 4.1072 ++ b->out_pos -= s->temp.size; 4.1073 ++ memcpy(s->temp.buf, b->out + b->out_pos, s->temp.size); 4.1074 ++ } 4.1075 ++ 4.1076 ++ /* 4.1077 ++ * If we have unfiltered data in temp, try to fill by decoding more 4.1078 ++ * data from the next filter. Apply the BCJ filter on temp. Then we 4.1079 ++ * hopefully can fill the actual output buffer by copying filtered 4.1080 ++ * data from temp. A mix of filtered and unfiltered data may be left 4.1081 ++ * in temp; it will be taken care on the next call to this function. 4.1082 ++ */ 4.1083 ++ if (s->temp.size > 0) { 4.1084 ++ /* Make b->out{,_pos,_size} temporarily point to s->temp. */ 4.1085 ++ s->out = b->out; 4.1086 ++ s->out_pos = b->out_pos; 4.1087 ++ s->out_size = b->out_size; 4.1088 ++ b->out = s->temp.buf; 4.1089 ++ b->out_pos = s->temp.size; 4.1090 ++ b->out_size = sizeof(s->temp.buf); 4.1091 ++ 4.1092 ++ s->ret = xz_dec_lzma2_run(lzma2, b); 4.1093 ++ 4.1094 ++ s->temp.size = b->out_pos; 4.1095 ++ b->out = s->out; 4.1096 ++ b->out_pos = s->out_pos; 4.1097 ++ b->out_size = s->out_size; 4.1098 ++ 4.1099 ++ if (s->ret != XZ_OK && s->ret != XZ_STREAM_END) 4.1100 ++ return s->ret; 4.1101 ++ 4.1102 ++ bcj_apply(s, s->temp.buf, &s->temp.filtered, s->temp.size); 4.1103 ++ 4.1104 ++ /* 4.1105 ++ * If the next filter returned XZ_STREAM_END, we mark that 4.1106 ++ * everything is filtered, since the last unfiltered bytes 4.1107 ++ * of the stream are meant to be left as is. 4.1108 ++ */ 4.1109 ++ if (s->ret == XZ_STREAM_END) 4.1110 ++ s->temp.filtered = s->temp.size; 4.1111 ++ 4.1112 ++ bcj_flush(s, b); 4.1113 ++ if (s->temp.filtered > 0) 4.1114 ++ return XZ_OK; 4.1115 ++ } 4.1116 ++ 4.1117 ++ return s->ret; 4.1118 ++} 4.1119 ++ 4.1120 ++XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call) 4.1121 ++{ 4.1122 ++ struct xz_dec_bcj *s = kmalloc(sizeof(*s), GFP_KERNEL); 4.1123 ++ if (s != NULL) 4.1124 ++ s->single_call = single_call; 4.1125 ++ 4.1126 ++ return s; 4.1127 ++} 4.1128 ++ 4.1129 ++XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id) 4.1130 ++{ 4.1131 ++ switch (id) { 4.1132 ++#ifdef XZ_DEC_X86 4.1133 ++ case BCJ_X86: 4.1134 ++#endif 4.1135 ++#ifdef XZ_DEC_POWERPC 4.1136 ++ case BCJ_POWERPC: 4.1137 ++#endif 4.1138 ++#ifdef XZ_DEC_IA64 4.1139 ++ case BCJ_IA64: 4.1140 ++#endif 4.1141 ++#ifdef XZ_DEC_ARM 4.1142 ++ case BCJ_ARM: 4.1143 ++#endif 4.1144 ++#ifdef XZ_DEC_ARMTHUMB 4.1145 ++ case BCJ_ARMTHUMB: 4.1146 ++#endif 4.1147 ++#ifdef XZ_DEC_SPARC 4.1148 ++ case BCJ_SPARC: 4.1149 ++#endif 4.1150 ++ break; 4.1151 ++ 4.1152 ++ default: 4.1153 ++ /* Unsupported Filter ID */ 4.1154 ++ return XZ_OPTIONS_ERROR; 4.1155 ++ } 4.1156 ++ 4.1157 ++ s->type = id; 4.1158 ++ s->ret = XZ_OK; 4.1159 ++ s->pos = 0; 4.1160 ++ s->x86_prev_mask = 0; 4.1161 ++ s->temp.filtered = 0; 4.1162 ++ s->temp.size = 0; 4.1163 ++ 4.1164 ++ return XZ_OK; 4.1165 ++} 4.1166 ++ 4.1167 ++#endif 4.1168 +diff --git a/lib/xz/xz_dec_lzma2.c b/lib/xz/xz_dec_lzma2.c 4.1169 +new file mode 100644 4.1170 +index 0000000..ea5fa4f 4.1171 +--- /dev/null 4.1172 ++++ b/lib/xz/xz_dec_lzma2.c 4.1173 +@@ -0,0 +1,1171 @@ 4.1174 ++/* 4.1175 ++ * LZMA2 decoder 4.1176 ++ * 4.1177 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 4.1178 ++ * Igor Pavlov <http://7-zip.org/> 4.1179 ++ * 4.1180 ++ * This file has been put into the public domain. 4.1181 ++ * You can do whatever you want with this file. 4.1182 ++ */ 4.1183 ++ 4.1184 ++#include "xz_private.h" 4.1185 ++#include "xz_lzma2.h" 4.1186 ++ 4.1187 ++/* 4.1188 ++ * Range decoder initialization eats the first five bytes of each LZMA chunk. 4.1189 ++ */ 4.1190 ++#define RC_INIT_BYTES 5 4.1191 ++ 4.1192 ++/* 4.1193 ++ * Minimum number of usable input buffer to safely decode one LZMA symbol. 4.1194 ++ * The worst case is that we decode 22 bits using probabilities and 26 4.1195 ++ * direct bits. This may decode at maximum of 20 bytes of input. However, 4.1196 ++ * lzma_main() does an extra normalization before returning, thus we 4.1197 ++ * need to put 21 here. 4.1198 ++ */ 4.1199 ++#define LZMA_IN_REQUIRED 21 4.1200 ++ 4.1201 ++/* 4.1202 ++ * Dictionary (history buffer) 4.1203 ++ * 4.1204 ++ * These are always true: 4.1205 ++ * start <= pos <= full <= end 4.1206 ++ * pos <= limit <= end 4.1207 ++ * 4.1208 ++ * In multi-call mode, also these are true: 4.1209 ++ * end == size 4.1210 ++ * size <= size_max 4.1211 ++ * allocated <= size 4.1212 ++ * 4.1213 ++ * Most of these variables are size_t to support single-call mode, 4.1214 ++ * in which the dictionary variables address the actual output 4.1215 ++ * buffer directly. 4.1216 ++ */ 4.1217 ++struct dictionary { 4.1218 ++ /* Beginning of the history buffer */ 4.1219 ++ uint8_t *buf; 4.1220 ++ 4.1221 ++ /* Old position in buf (before decoding more data) */ 4.1222 ++ size_t start; 4.1223 ++ 4.1224 ++ /* Position in buf */ 4.1225 ++ size_t pos; 4.1226 ++ 4.1227 ++ /* 4.1228 ++ * How full dictionary is. This is used to detect corrupt input that 4.1229 ++ * would read beyond the beginning of the uncompressed stream. 4.1230 ++ */ 4.1231 ++ size_t full; 4.1232 ++ 4.1233 ++ /* Write limit; we don't write to buf[limit] or later bytes. */ 4.1234 ++ size_t limit; 4.1235 ++ 4.1236 ++ /* 4.1237 ++ * End of the dictionary buffer. In multi-call mode, this is 4.1238 ++ * the same as the dictionary size. In single-call mode, this 4.1239 ++ * indicates the size of the output buffer. 4.1240 ++ */ 4.1241 ++ size_t end; 4.1242 ++ 4.1243 ++ /* 4.1244 ++ * Size of the dictionary as specified in Block Header. This is used 4.1245 ++ * together with "full" to detect corrupt input that would make us 4.1246 ++ * read beyond the beginning of the uncompressed stream. 4.1247 ++ */ 4.1248 ++ uint32_t size; 4.1249 ++ 4.1250 ++ /* 4.1251 ++ * Maximum allowed dictionary size in multi-call mode. 4.1252 ++ * This is ignored in single-call mode. 4.1253 ++ */ 4.1254 ++ uint32_t size_max; 4.1255 ++ 4.1256 ++ /* 4.1257 ++ * Amount of memory currently allocated for the dictionary. 4.1258 ++ * This is used only with XZ_DYNALLOC. (With XZ_PREALLOC, 4.1259 ++ * size_max is always the same as the allocated size.) 4.1260 ++ */ 4.1261 ++ uint32_t allocated; 4.1262 ++ 4.1263 ++ /* Operation mode */ 4.1264 ++ enum xz_mode mode; 4.1265 ++}; 4.1266 ++ 4.1267 ++/* Range decoder */ 4.1268 ++struct rc_dec { 4.1269 ++ uint32_t range; 4.1270 ++ uint32_t code; 4.1271 ++ 4.1272 ++ /* 4.1273 ++ * Number of initializing bytes remaining to be read 4.1274 ++ * by rc_read_init(). 4.1275 ++ */ 4.1276 ++ uint32_t init_bytes_left; 4.1277 ++ 4.1278 ++ /* 4.1279 ++ * Buffer from which we read our input. It can be either 4.1280 ++ * temp.buf or the caller-provided input buffer. 4.1281 ++ */ 4.1282 ++ const uint8_t *in; 4.1283 ++ size_t in_pos; 4.1284 ++ size_t in_limit; 4.1285 ++}; 4.1286 ++ 4.1287 ++/* Probabilities for a length decoder. */ 4.1288 ++struct lzma_len_dec { 4.1289 ++ /* Probability of match length being at least 10 */ 4.1290 ++ uint16_t choice; 4.1291 ++ 4.1292 ++ /* Probability of match length being at least 18 */ 4.1293 ++ uint16_t choice2; 4.1294 ++ 4.1295 ++ /* Probabilities for match lengths 2-9 */ 4.1296 ++ uint16_t low[POS_STATES_MAX][LEN_LOW_SYMBOLS]; 4.1297 ++ 4.1298 ++ /* Probabilities for match lengths 10-17 */ 4.1299 ++ uint16_t mid[POS_STATES_MAX][LEN_MID_SYMBOLS]; 4.1300 ++ 4.1301 ++ /* Probabilities for match lengths 18-273 */ 4.1302 ++ uint16_t high[LEN_HIGH_SYMBOLS]; 4.1303 ++}; 4.1304 ++ 4.1305 ++struct lzma_dec { 4.1306 ++ /* Distances of latest four matches */ 4.1307 ++ uint32_t rep0; 4.1308 ++ uint32_t rep1; 4.1309 ++ uint32_t rep2; 4.1310 ++ uint32_t rep3; 4.1311 ++ 4.1312 ++ /* Types of the most recently seen LZMA symbols */ 4.1313 ++ enum lzma_state state; 4.1314 ++ 4.1315 ++ /* 4.1316 ++ * Length of a match. This is updated so that dict_repeat can 4.1317 ++ * be called again to finish repeating the whole match. 4.1318 ++ */ 4.1319 ++ uint32_t len; 4.1320 ++ 4.1321 ++ /* 4.1322 ++ * LZMA properties or related bit masks (number of literal 4.1323 ++ * context bits, a mask dervied from the number of literal 4.1324 ++ * position bits, and a mask dervied from the number 4.1325 ++ * position bits) 4.1326 ++ */ 4.1327 ++ uint32_t lc; 4.1328 ++ uint32_t literal_pos_mask; /* (1 << lp) - 1 */ 4.1329 ++ uint32_t pos_mask; /* (1 << pb) - 1 */ 4.1330 ++ 4.1331 ++ /* If 1, it's a match. Otherwise it's a single 8-bit literal. */ 4.1332 ++ uint16_t is_match[STATES][POS_STATES_MAX]; 4.1333 ++ 4.1334 ++ /* If 1, it's a repeated match. The distance is one of rep0 .. rep3. */ 4.1335 ++ uint16_t is_rep[STATES]; 4.1336 ++ 4.1337 ++ /* 4.1338 ++ * If 0, distance of a repeated match is rep0. 4.1339 ++ * Otherwise check is_rep1. 4.1340 ++ */ 4.1341 ++ uint16_t is_rep0[STATES]; 4.1342 ++ 4.1343 ++ /* 4.1344 ++ * If 0, distance of a repeated match is rep1. 4.1345 ++ * Otherwise check is_rep2. 4.1346 ++ */ 4.1347 ++ uint16_t is_rep1[STATES]; 4.1348 ++ 4.1349 ++ /* If 0, distance of a repeated match is rep2. Otherwise it is rep3. */ 4.1350 ++ uint16_t is_rep2[STATES]; 4.1351 ++ 4.1352 ++ /* 4.1353 ++ * If 1, the repeated match has length of one byte. Otherwise 4.1354 ++ * the length is decoded from rep_len_decoder. 4.1355 ++ */ 4.1356 ++ uint16_t is_rep0_long[STATES][POS_STATES_MAX]; 4.1357 ++ 4.1358 ++ /* 4.1359 ++ * Probability tree for the highest two bits of the match 4.1360 ++ * distance. There is a separate probability tree for match 4.1361 ++ * lengths of 2 (i.e. MATCH_LEN_MIN), 3, 4, and [5, 273]. 4.1362 ++ */ 4.1363 ++ uint16_t dist_slot[DIST_STATES][DIST_SLOTS]; 4.1364 ++ 4.1365 ++ /* 4.1366 ++ * Probility trees for additional bits for match distance 4.1367 ++ * when the distance is in the range [4, 127]. 4.1368 ++ */ 4.1369 ++ uint16_t dist_special[FULL_DISTANCES - DIST_MODEL_END]; 4.1370 ++ 4.1371 ++ /* 4.1372 ++ * Probability tree for the lowest four bits of a match 4.1373 ++ * distance that is equal to or greater than 128. 4.1374 ++ */ 4.1375 ++ uint16_t dist_align[ALIGN_SIZE]; 4.1376 ++ 4.1377 ++ /* Length of a normal match */ 4.1378 ++ struct lzma_len_dec match_len_dec; 4.1379 ++ 4.1380 ++ /* Length of a repeated match */ 4.1381 ++ struct lzma_len_dec rep_len_dec; 4.1382 ++ 4.1383 ++ /* Probabilities of literals */ 4.1384 ++ uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE]; 4.1385 ++}; 4.1386 ++ 4.1387 ++struct lzma2_dec { 4.1388 ++ /* Position in xz_dec_lzma2_run(). */ 4.1389 ++ enum lzma2_seq { 4.1390 ++ SEQ_CONTROL, 4.1391 ++ SEQ_UNCOMPRESSED_1, 4.1392 ++ SEQ_UNCOMPRESSED_2, 4.1393 ++ SEQ_COMPRESSED_0, 4.1394 ++ SEQ_COMPRESSED_1, 4.1395 ++ SEQ_PROPERTIES, 4.1396 ++ SEQ_LZMA_PREPARE, 4.1397 ++ SEQ_LZMA_RUN, 4.1398 ++ SEQ_COPY 4.1399 ++ } sequence; 4.1400 ++ 4.1401 ++ /* Next position after decoding the compressed size of the chunk. */ 4.1402 ++ enum lzma2_seq next_sequence; 4.1403 ++ 4.1404 ++ /* Uncompressed size of LZMA chunk (2 MiB at maximum) */ 4.1405 ++ uint32_t uncompressed; 4.1406 ++ 4.1407 ++ /* 4.1408 ++ * Compressed size of LZMA chunk or compressed/uncompressed 4.1409 ++ * size of uncompressed chunk (64 KiB at maximum) 4.1410 ++ */ 4.1411 ++ uint32_t compressed; 4.1412 ++ 4.1413 ++ /* 4.1414 ++ * True if dictionary reset is needed. This is false before 4.1415 ++ * the first chunk (LZMA or uncompressed). 4.1416 ++ */ 4.1417 ++ bool need_dict_reset; 4.1418 ++ 4.1419 ++ /* 4.1420 ++ * True if new LZMA properties are needed. This is false 4.1421 ++ * before the first LZMA chunk. 4.1422 ++ */ 4.1423 ++ bool need_props; 4.1424 ++}; 4.1425 ++ 4.1426 ++struct xz_dec_lzma2 { 4.1427 ++ /* 4.1428 ++ * The order below is important on x86 to reduce code size and 4.1429 ++ * it shouldn't hurt on other platforms. Everything up to and 4.1430 ++ * including lzma.pos_mask are in the first 128 bytes on x86-32, 4.1431 ++ * which allows using smaller instructions to access those 4.1432 ++ * variables. On x86-64, fewer variables fit into the first 128 4.1433 ++ * bytes, but this is still the best order without sacrificing 4.1434 ++ * the readability by splitting the structures. 4.1435 ++ */ 4.1436 ++ struct rc_dec rc; 4.1437 ++ struct dictionary dict; 4.1438 ++ struct lzma2_dec lzma2; 4.1439 ++ struct lzma_dec lzma; 4.1440 ++ 4.1441 ++ /* 4.1442 ++ * Temporary buffer which holds small number of input bytes between 4.1443 ++ * decoder calls. See lzma2_lzma() for details. 4.1444 ++ */ 4.1445 ++ struct { 4.1446 ++ uint32_t size; 4.1447 ++ uint8_t buf[3 * LZMA_IN_REQUIRED]; 4.1448 ++ } temp; 4.1449 ++}; 4.1450 ++ 4.1451 ++/************** 4.1452 ++ * Dictionary * 4.1453 ++ **************/ 4.1454 ++ 4.1455 ++/* 4.1456 ++ * Reset the dictionary state. When in single-call mode, set up the beginning 4.1457 ++ * of the dictionary to point to the actual output buffer. 4.1458 ++ */ 4.1459 ++static void dict_reset(struct dictionary *dict, struct xz_buf *b) 4.1460 ++{ 4.1461 ++ if (DEC_IS_SINGLE(dict->mode)) { 4.1462 ++ dict->buf = b->out + b->out_pos; 4.1463 ++ dict->end = b->out_size - b->out_pos; 4.1464 ++ } 4.1465 ++ 4.1466 ++ dict->start = 0; 4.1467 ++ dict->pos = 0; 4.1468 ++ dict->limit = 0; 4.1469 ++ dict->full = 0; 4.1470 ++} 4.1471 ++ 4.1472 ++/* Set dictionary write limit */ 4.1473 ++static void dict_limit(struct dictionary *dict, size_t out_max) 4.1474 ++{ 4.1475 ++ if (dict->end - dict->pos <= out_max) 4.1476 ++ dict->limit = dict->end; 4.1477 ++ else 4.1478 ++ dict->limit = dict->pos + out_max; 4.1479 ++} 4.1480 ++ 4.1481 ++/* Return true if at least one byte can be written into the dictionary. */ 4.1482 ++static inline bool dict_has_space(const struct dictionary *dict) 4.1483 ++{ 4.1484 ++ return dict->pos < dict->limit; 4.1485 ++} 4.1486 ++ 4.1487 ++/* 4.1488 ++ * Get a byte from the dictionary at the given distance. The distance is 4.1489 ++ * assumed to valid, or as a special case, zero when the dictionary is 4.1490 ++ * still empty. This special case is needed for single-call decoding to 4.1491 ++ * avoid writing a '\0' to the end of the destination buffer. 4.1492 ++ */ 4.1493 ++static inline uint32_t dict_get(const struct dictionary *dict, uint32_t dist) 4.1494 ++{ 4.1495 ++ size_t offset = dict->pos - dist - 1; 4.1496 ++ 4.1497 ++ if (dist >= dict->pos) 4.1498 ++ offset += dict->end; 4.1499 ++ 4.1500 ++ return dict->full > 0 ? dict->buf[offset] : 0; 4.1501 ++} 4.1502 ++ 4.1503 ++/* 4.1504 ++ * Put one byte into the dictionary. It is assumed that there is space for it. 4.1505 ++ */ 4.1506 ++static inline void dict_put(struct dictionary *dict, uint8_t byte) 4.1507 ++{ 4.1508 ++ dict->buf[dict->pos++] = byte; 4.1509 ++ 4.1510 ++ if (dict->full < dict->pos) 4.1511 ++ dict->full = dict->pos; 4.1512 ++} 4.1513 ++ 4.1514 ++/* 4.1515 ++ * Repeat given number of bytes from the given distance. If the distance is 4.1516 ++ * invalid, false is returned. On success, true is returned and *len is 4.1517 ++ * updated to indicate how many bytes were left to be repeated. 4.1518 ++ */ 4.1519 ++static bool dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist) 4.1520 ++{ 4.1521 ++ size_t back; 4.1522 ++ uint32_t left; 4.1523 ++ 4.1524 ++ if (dist >= dict->full || dist >= dict->size) 4.1525 ++ return false; 4.1526 ++ 4.1527 ++ left = min_t(size_t, dict->limit - dict->pos, *len); 4.1528 ++ *len -= left; 4.1529 ++ 4.1530 ++ back = dict->pos - dist - 1; 4.1531 ++ if (dist >= dict->pos) 4.1532 ++ back += dict->end; 4.1533 ++ 4.1534 ++ do { 4.1535 ++ dict->buf[dict->pos++] = dict->buf[back++]; 4.1536 ++ if (back == dict->end) 4.1537 ++ back = 0; 4.1538 ++ } while (--left > 0); 4.1539 ++ 4.1540 ++ if (dict->full < dict->pos) 4.1541 ++ dict->full = dict->pos; 4.1542 ++ 4.1543 ++ return true; 4.1544 ++} 4.1545 ++ 4.1546 ++/* Copy uncompressed data as is from input to dictionary and output buffers. */ 4.1547 ++static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b, 4.1548 ++ uint32_t *left) 4.1549 ++{ 4.1550 ++ size_t copy_size; 4.1551 ++ 4.1552 ++ while (*left > 0 && b->in_pos < b->in_size 4.1553 ++ && b->out_pos < b->out_size) { 4.1554 ++ copy_size = min(b->in_size - b->in_pos, 4.1555 ++ b->out_size - b->out_pos); 4.1556 ++ if (copy_size > dict->end - dict->pos) 4.1557 ++ copy_size = dict->end - dict->pos; 4.1558 ++ if (copy_size > *left) 4.1559 ++ copy_size = *left; 4.1560 ++ 4.1561 ++ *left -= copy_size; 4.1562 ++ 4.1563 ++ memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size); 4.1564 ++ dict->pos += copy_size; 4.1565 ++ 4.1566 ++ if (dict->full < dict->pos) 4.1567 ++ dict->full = dict->pos; 4.1568 ++ 4.1569 ++ if (DEC_IS_MULTI(dict->mode)) { 4.1570 ++ if (dict->pos == dict->end) 4.1571 ++ dict->pos = 0; 4.1572 ++ 4.1573 ++ memcpy(b->out + b->out_pos, b->in + b->in_pos, 4.1574 ++ copy_size); 4.1575 ++ } 4.1576 ++ 4.1577 ++ dict->start = dict->pos; 4.1578 ++ 4.1579 ++ b->out_pos += copy_size; 4.1580 ++ b->in_pos += copy_size; 4.1581 ++ } 4.1582 ++} 4.1583 ++ 4.1584 ++/* 4.1585 ++ * Flush pending data from dictionary to b->out. It is assumed that there is 4.1586 ++ * enough space in b->out. This is guaranteed because caller uses dict_limit() 4.1587 ++ * before decoding data into the dictionary. 4.1588 ++ */ 4.1589 ++static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b) 4.1590 ++{ 4.1591 ++ size_t copy_size = dict->pos - dict->start; 4.1592 ++ 4.1593 ++ if (DEC_IS_MULTI(dict->mode)) { 4.1594 ++ if (dict->pos == dict->end) 4.1595 ++ dict->pos = 0; 4.1596 ++ 4.1597 ++ memcpy(b->out + b->out_pos, dict->buf + dict->start, 4.1598 ++ copy_size); 4.1599 ++ } 4.1600 ++ 4.1601 ++ dict->start = dict->pos; 4.1602 ++ b->out_pos += copy_size; 4.1603 ++ return copy_size; 4.1604 ++} 4.1605 ++ 4.1606 ++/***************** 4.1607 ++ * Range decoder * 4.1608 ++ *****************/ 4.1609 ++ 4.1610 ++/* Reset the range decoder. */ 4.1611 ++static void rc_reset(struct rc_dec *rc) 4.1612 ++{ 4.1613 ++ rc->range = (uint32_t)-1; 4.1614 ++ rc->code = 0; 4.1615 ++ rc->init_bytes_left = RC_INIT_BYTES; 4.1616 ++} 4.1617 ++ 4.1618 ++/* 4.1619 ++ * Read the first five initial bytes into rc->code if they haven't been 4.1620 ++ * read already. (Yes, the first byte gets completely ignored.) 4.1621 ++ */ 4.1622 ++static bool rc_read_init(struct rc_dec *rc, struct xz_buf *b) 4.1623 ++{ 4.1624 ++ while (rc->init_bytes_left > 0) { 4.1625 ++ if (b->in_pos == b->in_size) 4.1626 ++ return false; 4.1627 ++ 4.1628 ++ rc->code = (rc->code << 8) + b->in[b->in_pos++]; 4.1629 ++ --rc->init_bytes_left; 4.1630 ++ } 4.1631 ++ 4.1632 ++ return true; 4.1633 ++} 4.1634 ++ 4.1635 ++/* Return true if there may not be enough input for the next decoding loop. */ 4.1636 ++static inline bool rc_limit_exceeded(const struct rc_dec *rc) 4.1637 ++{ 4.1638 ++ return rc->in_pos > rc->in_limit; 4.1639 ++} 4.1640 ++ 4.1641 ++/* 4.1642 ++ * Return true if it is possible (from point of view of range decoder) that 4.1643 ++ * we have reached the end of the LZMA chunk. 4.1644 ++ */ 4.1645 ++static inline bool rc_is_finished(const struct rc_dec *rc) 4.1646 ++{ 4.1647 ++ return rc->code == 0; 4.1648 ++} 4.1649 ++ 4.1650 ++/* Read the next input byte if needed. */ 4.1651 ++static __always_inline void rc_normalize(struct rc_dec *rc) 4.1652 ++{ 4.1653 ++ if (rc->range < RC_TOP_VALUE) { 4.1654 ++ rc->range <<= RC_SHIFT_BITS; 4.1655 ++ rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++]; 4.1656 ++ } 4.1657 ++} 4.1658 ++ 4.1659 ++/* 4.1660 ++ * Decode one bit. In some versions, this function has been splitted in three 4.1661 ++ * functions so that the compiler is supposed to be able to more easily avoid 4.1662 ++ * an extra branch. In this particular version of the LZMA decoder, this 4.1663 ++ * doesn't seem to be a good idea (tested with GCC 3.3.6, 3.4.6, and 4.3.3 4.1664 ++ * on x86). Using a non-splitted version results in nicer looking code too. 4.1665 ++ * 4.1666 ++ * NOTE: This must return an int. Do not make it return a bool or the speed 4.1667 ++ * of the code generated by GCC 3.x decreases 10-15 %. (GCC 4.3 doesn't care, 4.1668 ++ * and it generates 10-20 % faster code than GCC 3.x from this file anyway.) 4.1669 ++ */ 4.1670 ++static __always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob) 4.1671 ++{ 4.1672 ++ uint32_t bound; 4.1673 ++ int bit; 4.1674 ++ 4.1675 ++ rc_normalize(rc); 4.1676 ++ bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob; 4.1677 ++ if (rc->code < bound) { 4.1678 ++ rc->range = bound; 4.1679 ++ *prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS; 4.1680 ++ bit = 0; 4.1681 ++ } else { 4.1682 ++ rc->range -= bound; 4.1683 ++ rc->code -= bound; 4.1684 ++ *prob -= *prob >> RC_MOVE_BITS; 4.1685 ++ bit = 1; 4.1686 ++ } 4.1687 ++ 4.1688 ++ return bit; 4.1689 ++} 4.1690 ++ 4.1691 ++/* Decode a bittree starting from the most significant bit. */ 4.1692 ++static __always_inline uint32_t rc_bittree(struct rc_dec *rc, 4.1693 ++ uint16_t *probs, uint32_t limit) 4.1694 ++{ 4.1695 ++ uint32_t symbol = 1; 4.1696 ++ 4.1697 ++ do { 4.1698 ++ if (rc_bit(rc, &probs[symbol])) 4.1699 ++ symbol = (symbol << 1) + 1; 4.1700 ++ else 4.1701 ++ symbol <<= 1; 4.1702 ++ } while (symbol < limit); 4.1703 ++ 4.1704 ++ return symbol; 4.1705 ++} 4.1706 ++ 4.1707 ++/* Decode a bittree starting from the least significant bit. */ 4.1708 ++static __always_inline void rc_bittree_reverse(struct rc_dec *rc, 4.1709 ++ uint16_t *probs, 4.1710 ++ uint32_t *dest, uint32_t limit) 4.1711 ++{ 4.1712 ++ uint32_t symbol = 1; 4.1713 ++ uint32_t i = 0; 4.1714 ++ 4.1715 ++ do { 4.1716 ++ if (rc_bit(rc, &probs[symbol])) { 4.1717 ++ symbol = (symbol << 1) + 1; 4.1718 ++ *dest += 1 << i; 4.1719 ++ } else { 4.1720 ++ symbol <<= 1; 4.1721 ++ } 4.1722 ++ } while (++i < limit); 4.1723 ++} 4.1724 ++ 4.1725 ++/* Decode direct bits (fixed fifty-fifty probability) */ 4.1726 ++static inline void rc_direct(struct rc_dec *rc, uint32_t *dest, uint32_t limit) 4.1727 ++{ 4.1728 ++ uint32_t mask; 4.1729 ++ 4.1730 ++ do { 4.1731 ++ rc_normalize(rc); 4.1732 ++ rc->range >>= 1; 4.1733 ++ rc->code -= rc->range; 4.1734 ++ mask = (uint32_t)0 - (rc->code >> 31); 4.1735 ++ rc->code += rc->range & mask; 4.1736 ++ *dest = (*dest << 1) + (mask + 1); 4.1737 ++ } while (--limit > 0); 4.1738 ++} 4.1739 ++ 4.1740 ++/******** 4.1741 ++ * LZMA * 4.1742 ++ ********/ 4.1743 ++ 4.1744 ++/* Get pointer to literal coder probability array. */ 4.1745 ++static uint16_t *lzma_literal_probs(struct xz_dec_lzma2 *s) 4.1746 ++{ 4.1747 ++ uint32_t prev_byte = dict_get(&s->dict, 0); 4.1748 ++ uint32_t low = prev_byte >> (8 - s->lzma.lc); 4.1749 ++ uint32_t high = (s->dict.pos & s->lzma.literal_pos_mask) << s->lzma.lc; 4.1750 ++ return s->lzma.literal[low + high]; 4.1751 ++} 4.1752 ++ 4.1753 ++/* Decode a literal (one 8-bit byte) */ 4.1754 ++static void lzma_literal(struct xz_dec_lzma2 *s) 4.1755 ++{ 4.1756 ++ uint16_t *probs; 4.1757 ++ uint32_t symbol; 4.1758 ++ uint32_t match_byte; 4.1759 ++ uint32_t match_bit; 4.1760 ++ uint32_t offset; 4.1761 ++ uint32_t i; 4.1762 ++ 4.1763 ++ probs = lzma_literal_probs(s); 4.1764 ++ 4.1765 ++ if (lzma_state_is_literal(s->lzma.state)) { 4.1766 ++ symbol = rc_bittree(&s->rc, probs, 0x100); 4.1767 ++ } else { 4.1768 ++ symbol = 1; 4.1769 ++ match_byte = dict_get(&s->dict, s->lzma.rep0) << 1; 4.1770 ++ offset = 0x100; 4.1771 ++ 4.1772 ++ do { 4.1773 ++ match_bit = match_byte & offset; 4.1774 ++ match_byte <<= 1; 4.1775 ++ i = offset + match_bit + symbol; 4.1776 ++ 4.1777 ++ if (rc_bit(&s->rc, &probs[i])) { 4.1778 ++ symbol = (symbol << 1) + 1; 4.1779 ++ offset &= match_bit; 4.1780 ++ } else { 4.1781 ++ symbol <<= 1; 4.1782 ++ offset &= ~match_bit; 4.1783 ++ } 4.1784 ++ } while (symbol < 0x100); 4.1785 ++ } 4.1786 ++ 4.1787 ++ dict_put(&s->dict, (uint8_t)symbol); 4.1788 ++ lzma_state_literal(&s->lzma.state); 4.1789 ++} 4.1790 ++ 4.1791 ++/* Decode the length of the match into s->lzma.len. */ 4.1792 ++static void lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l, 4.1793 ++ uint32_t pos_state) 4.1794 ++{ 4.1795 ++ uint16_t *probs; 4.1796 ++ uint32_t limit; 4.1797 ++ 4.1798 ++ if (!rc_bit(&s->rc, &l->choice)) { 4.1799 ++ probs = l->low[pos_state]; 4.1800 ++ limit = LEN_LOW_SYMBOLS; 4.1801 ++ s->lzma.len = MATCH_LEN_MIN; 4.1802 ++ } else { 4.1803 ++ if (!rc_bit(&s->rc, &l->choice2)) { 4.1804 ++ probs = l->mid[pos_state]; 4.1805 ++ limit = LEN_MID_SYMBOLS; 4.1806 ++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS; 4.1807 ++ } else { 4.1808 ++ probs = l->high; 4.1809 ++ limit = LEN_HIGH_SYMBOLS; 4.1810 ++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS 4.1811 ++ + LEN_MID_SYMBOLS; 4.1812 ++ } 4.1813 ++ } 4.1814 ++ 4.1815 ++ s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit; 4.1816 ++} 4.1817 ++ 4.1818 ++/* Decode a match. The distance will be stored in s->lzma.rep0. */ 4.1819 ++static void lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state) 4.1820 ++{ 4.1821 ++ uint16_t *probs; 4.1822 ++ uint32_t dist_slot; 4.1823 ++ uint32_t limit; 4.1824 ++ 4.1825 ++ lzma_state_match(&s->lzma.state); 4.1826 ++ 4.1827 ++ s->lzma.rep3 = s->lzma.rep2; 4.1828 ++ s->lzma.rep2 = s->lzma.rep1; 4.1829 ++ s->lzma.rep1 = s->lzma.rep0; 4.1830 ++ 4.1831 ++ lzma_len(s, &s->lzma.match_len_dec, pos_state); 4.1832 ++ 4.1833 ++ probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)]; 4.1834 ++ dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS; 4.1835 ++ 4.1836 ++ if (dist_slot < DIST_MODEL_START) { 4.1837 ++ s->lzma.rep0 = dist_slot; 4.1838 ++ } else { 4.1839 ++ limit = (dist_slot >> 1) - 1; 4.1840 ++ s->lzma.rep0 = 2 + (dist_slot & 1); 4.1841 ++ 4.1842 ++ if (dist_slot < DIST_MODEL_END) { 4.1843 ++ s->lzma.rep0 <<= limit; 4.1844 ++ probs = s->lzma.dist_special + s->lzma.rep0 4.1845 ++ - dist_slot - 1; 4.1846 ++ rc_bittree_reverse(&s->rc, probs, 4.1847 ++ &s->lzma.rep0, limit); 4.1848 ++ } else { 4.1849 ++ rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS); 4.1850 ++ s->lzma.rep0 <<= ALIGN_BITS; 4.1851 ++ rc_bittree_reverse(&s->rc, s->lzma.dist_align, 4.1852 ++ &s->lzma.rep0, ALIGN_BITS); 4.1853 ++ } 4.1854 ++ } 4.1855 ++} 4.1856 ++ 4.1857 ++/* 4.1858 ++ * Decode a repeated match. The distance is one of the four most recently 4.1859 ++ * seen matches. The distance will be stored in s->lzma.rep0. 4.1860 ++ */ 4.1861 ++static void lzma_rep_match(struct xz_dec_lzma2 *s, uint32_t pos_state) 4.1862 ++{ 4.1863 ++ uint32_t tmp; 4.1864 ++ 4.1865 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) { 4.1866 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[ 4.1867 ++ s->lzma.state][pos_state])) { 4.1868 ++ lzma_state_short_rep(&s->lzma.state); 4.1869 ++ s->lzma.len = 1; 4.1870 ++ return; 4.1871 ++ } 4.1872 ++ } else { 4.1873 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) { 4.1874 ++ tmp = s->lzma.rep1; 4.1875 ++ } else { 4.1876 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) { 4.1877 ++ tmp = s->lzma.rep2; 4.1878 ++ } else { 4.1879 ++ tmp = s->lzma.rep3; 4.1880 ++ s->lzma.rep3 = s->lzma.rep2; 4.1881 ++ } 4.1882 ++ 4.1883 ++ s->lzma.rep2 = s->lzma.rep1; 4.1884 ++ } 4.1885 ++ 4.1886 ++ s->lzma.rep1 = s->lzma.rep0; 4.1887 ++ s->lzma.rep0 = tmp; 4.1888 ++ } 4.1889 ++ 4.1890 ++ lzma_state_long_rep(&s->lzma.state); 4.1891 ++ lzma_len(s, &s->lzma.rep_len_dec, pos_state); 4.1892 ++} 4.1893 ++ 4.1894 ++/* LZMA decoder core */ 4.1895 ++static bool lzma_main(struct xz_dec_lzma2 *s) 4.1896 ++{ 4.1897 ++ uint32_t pos_state; 4.1898 ++ 4.1899 ++ /* 4.1900 ++ * If the dictionary was reached during the previous call, try to 4.1901 ++ * finish the possibly pending repeat in the dictionary. 4.1902 ++ */ 4.1903 ++ if (dict_has_space(&s->dict) && s->lzma.len > 0) 4.1904 ++ dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0); 4.1905 ++ 4.1906 ++ /* 4.1907 ++ * Decode more LZMA symbols. One iteration may consume up to 4.1908 ++ * LZMA_IN_REQUIRED - 1 bytes. 4.1909 ++ */ 4.1910 ++ while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) { 4.1911 ++ pos_state = s->dict.pos & s->lzma.pos_mask; 4.1912 ++ 4.1913 ++ if (!rc_bit(&s->rc, &s->lzma.is_match[ 4.1914 ++ s->lzma.state][pos_state])) { 4.1915 ++ lzma_literal(s); 4.1916 ++ } else { 4.1917 ++ if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state])) 4.1918 ++ lzma_rep_match(s, pos_state); 4.1919 ++ else 4.1920 ++ lzma_match(s, pos_state); 4.1921 ++ 4.1922 ++ if (!dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0)) 4.1923 ++ return false; 4.1924 ++ } 4.1925 ++ } 4.1926 ++ 4.1927 ++ /* 4.1928 ++ * Having the range decoder always normalized when we are outside 4.1929 ++ * this function makes it easier to correctly handle end of the chunk. 4.1930 ++ */ 4.1931 ++ rc_normalize(&s->rc); 4.1932 ++ 4.1933 ++ return true; 4.1934 ++} 4.1935 ++ 4.1936 ++/* 4.1937 ++ * Reset the LZMA decoder and range decoder state. Dictionary is nore reset 4.1938 ++ * here, because LZMA state may be reset without resetting the dictionary. 4.1939 ++ */ 4.1940 ++static void lzma_reset(struct xz_dec_lzma2 *s) 4.1941 ++{ 4.1942 ++ uint16_t *probs; 4.1943 ++ size_t i; 4.1944 ++ 4.1945 ++ s->lzma.state = STATE_LIT_LIT; 4.1946 ++ s->lzma.rep0 = 0; 4.1947 ++ s->lzma.rep1 = 0; 4.1948 ++ s->lzma.rep2 = 0; 4.1949 ++ s->lzma.rep3 = 0; 4.1950 ++ 4.1951 ++ /* 4.1952 ++ * All probabilities are initialized to the same value. This hack 4.1953 ++ * makes the code smaller by avoiding a separate loop for each 4.1954 ++ * probability array. 4.1955 ++ * 4.1956 ++ * This could be optimized so that only that part of literal 4.1957 ++ * probabilities that are actually required. In the common case 4.1958 ++ * we would write 12 KiB less. 4.1959 ++ */ 4.1960 ++ probs = s->lzma.is_match[0]; 4.1961 ++ for (i = 0; i < PROBS_TOTAL; ++i) 4.1962 ++ probs[i] = RC_BIT_MODEL_TOTAL / 2; 4.1963 ++ 4.1964 ++ rc_reset(&s->rc); 4.1965 ++} 4.1966 ++ 4.1967 ++/* 4.1968 ++ * Decode and validate LZMA properties (lc/lp/pb) and calculate the bit masks 4.1969 ++ * from the decoded lp and pb values. On success, the LZMA decoder state is 4.1970 ++ * reset and true is returned. 4.1971 ++ */ 4.1972 ++static bool lzma_props(struct xz_dec_lzma2 *s, uint8_t props) 4.1973 ++{ 4.1974 ++ if (props > (4 * 5 + 4) * 9 + 8) 4.1975 ++ return false; 4.1976 ++ 4.1977 ++ s->lzma.pos_mask = 0; 4.1978 ++ while (props >= 9 * 5) { 4.1979 ++ props -= 9 * 5; 4.1980 ++ ++s->lzma.pos_mask; 4.1981 ++ } 4.1982 ++ 4.1983 ++ s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1; 4.1984 ++ 4.1985 ++ s->lzma.literal_pos_mask = 0; 4.1986 ++ while (props >= 9) { 4.1987 ++ props -= 9; 4.1988 ++ ++s->lzma.literal_pos_mask; 4.1989 ++ } 4.1990 ++ 4.1991 ++ s->lzma.lc = props; 4.1992 ++ 4.1993 ++ if (s->lzma.lc + s->lzma.literal_pos_mask > 4) 4.1994 ++ return false; 4.1995 ++ 4.1996 ++ s->lzma.literal_pos_mask = (1 << s->lzma.literal_pos_mask) - 1; 4.1997 ++ 4.1998 ++ lzma_reset(s); 4.1999 ++ 4.2000 ++ return true; 4.2001 ++} 4.2002 ++ 4.2003 ++/********* 4.2004 ++ * LZMA2 * 4.2005 ++ *********/ 4.2006 ++ 4.2007 ++/* 4.2008 ++ * The LZMA decoder assumes that if the input limit (s->rc.in_limit) hasn't 4.2009 ++ * been exceeded, it is safe to read up to LZMA_IN_REQUIRED bytes. This 4.2010 ++ * wrapper function takes care of making the LZMA decoder's assumption safe. 4.2011 ++ * 4.2012 ++ * As long as there is plenty of input left to be decoded in the current LZMA 4.2013 ++ * chunk, we decode directly from the caller-supplied input buffer until 4.2014 ++ * there's LZMA_IN_REQUIRED bytes left. Those remaining bytes are copied into 4.2015 ++ * s->temp.buf, which (hopefully) gets filled on the next call to this 4.2016 ++ * function. We decode a few bytes from the temporary buffer so that we can 4.2017 ++ * continue decoding from the caller-supplied input buffer again. 4.2018 ++ */ 4.2019 ++static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b) 4.2020 ++{ 4.2021 ++ size_t in_avail; 4.2022 ++ uint32_t tmp; 4.2023 ++ 4.2024 ++ in_avail = b->in_size - b->in_pos; 4.2025 ++ if (s->temp.size > 0 || s->lzma2.compressed == 0) { 4.2026 ++ tmp = 2 * LZMA_IN_REQUIRED - s->temp.size; 4.2027 ++ if (tmp > s->lzma2.compressed - s->temp.size) 4.2028 ++ tmp = s->lzma2.compressed - s->temp.size; 4.2029 ++ if (tmp > in_avail) 4.2030 ++ tmp = in_avail; 4.2031 ++ 4.2032 ++ memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp); 4.2033 ++ 4.2034 ++ if (s->temp.size + tmp == s->lzma2.compressed) { 4.2035 ++ memzero(s->temp.buf + s->temp.size + tmp, 4.2036 ++ sizeof(s->temp.buf) 4.2037 ++ - s->temp.size - tmp); 4.2038 ++ s->rc.in_limit = s->temp.size + tmp; 4.2039 ++ } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) { 4.2040 ++ s->temp.size += tmp; 4.2041 ++ b->in_pos += tmp; 4.2042 ++ return true; 4.2043 ++ } else { 4.2044 ++ s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED; 4.2045 ++ } 4.2046 ++ 4.2047 ++ s->rc.in = s->temp.buf; 4.2048 ++ s->rc.in_pos = 0; 4.2049 ++ 4.2050 ++ if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp) 4.2051 ++ return false; 4.2052 ++ 4.2053 ++ s->lzma2.compressed -= s->rc.in_pos; 4.2054 ++ 4.2055 ++ if (s->rc.in_pos < s->temp.size) { 4.2056 ++ s->temp.size -= s->rc.in_pos; 4.2057 ++ memmove(s->temp.buf, s->temp.buf + s->rc.in_pos, 4.2058 ++ s->temp.size); 4.2059 ++ return true; 4.2060 ++ } 4.2061 ++ 4.2062 ++ b->in_pos += s->rc.in_pos - s->temp.size; 4.2063 ++ s->temp.size = 0; 4.2064 ++ } 4.2065 ++ 4.2066 ++ in_avail = b->in_size - b->in_pos; 4.2067 ++ if (in_avail >= LZMA_IN_REQUIRED) { 4.2068 ++ s->rc.in = b->in; 4.2069 ++ s->rc.in_pos = b->in_pos; 4.2070 ++ 4.2071 ++ if (in_avail >= s->lzma2.compressed + LZMA_IN_REQUIRED) 4.2072 ++ s->rc.in_limit = b->in_pos + s->lzma2.compressed; 4.2073 ++ else 4.2074 ++ s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED; 4.2075 ++ 4.2076 ++ if (!lzma_main(s)) 4.2077 ++ return false; 4.2078 ++ 4.2079 ++ in_avail = s->rc.in_pos - b->in_pos; 4.2080 ++ if (in_avail > s->lzma2.compressed) 4.2081 ++ return false; 4.2082 ++ 4.2083 ++ s->lzma2.compressed -= in_avail; 4.2084 ++ b->in_pos = s->rc.in_pos; 4.2085 ++ } 4.2086 ++ 4.2087 ++ in_avail = b->in_size - b->in_pos; 4.2088 ++ if (in_avail < LZMA_IN_REQUIRED) { 4.2089 ++ if (in_avail > s->lzma2.compressed) 4.2090 ++ in_avail = s->lzma2.compressed; 4.2091 ++ 4.2092 ++ memcpy(s->temp.buf, b->in + b->in_pos, in_avail); 4.2093 ++ s->temp.size = in_avail; 4.2094 ++ b->in_pos += in_avail; 4.2095 ++ } 4.2096 ++ 4.2097 ++ return true; 4.2098 ++} 4.2099 ++ 4.2100 ++/* 4.2101 ++ * Take care of the LZMA2 control layer, and forward the job of actual LZMA 4.2102 ++ * decoding or copying of uncompressed chunks to other functions. 4.2103 ++ */ 4.2104 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, 4.2105 ++ struct xz_buf *b) 4.2106 ++{ 4.2107 ++ uint32_t tmp; 4.2108 ++ 4.2109 ++ while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) { 4.2110 ++ switch (s->lzma2.sequence) { 4.2111 ++ case SEQ_CONTROL: 4.2112 ++ /* 4.2113 ++ * LZMA2 control byte 4.2114 ++ * 4.2115 ++ * Exact values: 4.2116 ++ * 0x00 End marker 4.2117 ++ * 0x01 Dictionary reset followed by 4.2118 ++ * an uncompressed chunk 4.2119 ++ * 0x02 Uncompressed chunk (no dictionary reset) 4.2120 ++ * 4.2121 ++ * Highest three bits (s->control & 0xE0): 4.2122 ++ * 0xE0 Dictionary reset, new properties and state 4.2123 ++ * reset, followed by LZMA compressed chunk 4.2124 ++ * 0xC0 New properties and state reset, followed 4.2125 ++ * by LZMA compressed chunk (no dictionary 4.2126 ++ * reset) 4.2127 ++ * 0xA0 State reset using old properties, 4.2128 ++ * followed by LZMA compressed chunk (no 4.2129 ++ * dictionary reset) 4.2130 ++ * 0x80 LZMA chunk (no dictionary or state reset) 4.2131 ++ * 4.2132 ++ * For LZMA compressed chunks, the lowest five bits 4.2133 ++ * (s->control & 1F) are the highest bits of the 4.2134 ++ * uncompressed size (bits 16-20). 4.2135 ++ * 4.2136 ++ * A new LZMA2 stream must begin with a dictionary 4.2137 ++ * reset. The first LZMA chunk must set new 4.2138 ++ * properties and reset the LZMA state. 4.2139 ++ * 4.2140 ++ * Values that don't match anything described above 4.2141 ++ * are invalid and we return XZ_DATA_ERROR. 4.2142 ++ */ 4.2143 ++ tmp = b->in[b->in_pos++]; 4.2144 ++ 4.2145 ++ if (tmp >= 0xE0 || tmp == 0x01) { 4.2146 ++ s->lzma2.need_props = true; 4.2147 ++ s->lzma2.need_dict_reset = false; 4.2148 ++ dict_reset(&s->dict, b); 4.2149 ++ } else if (s->lzma2.need_dict_reset) { 4.2150 ++ return XZ_DATA_ERROR; 4.2151 ++ } 4.2152 ++ 4.2153 ++ if (tmp >= 0x80) { 4.2154 ++ s->lzma2.uncompressed = (tmp & 0x1F) << 16; 4.2155 ++ s->lzma2.sequence = SEQ_UNCOMPRESSED_1; 4.2156 ++ 4.2157 ++ if (tmp >= 0xC0) { 4.2158 ++ /* 4.2159 ++ * When there are new properties, 4.2160 ++ * state reset is done at 4.2161 ++ * SEQ_PROPERTIES. 4.2162 ++ */ 4.2163 ++ s->lzma2.need_props = false; 4.2164 ++ s->lzma2.next_sequence 4.2165 ++ = SEQ_PROPERTIES; 4.2166 ++ 4.2167 ++ } else if (s->lzma2.need_props) { 4.2168 ++ return XZ_DATA_ERROR; 4.2169 ++ 4.2170 ++ } else { 4.2171 ++ s->lzma2.next_sequence 4.2172 ++ = SEQ_LZMA_PREPARE; 4.2173 ++ if (tmp >= 0xA0) 4.2174 ++ lzma_reset(s); 4.2175 ++ } 4.2176 ++ } else { 4.2177 ++ if (tmp == 0x00) 4.2178 ++ return XZ_STREAM_END; 4.2179 ++ 4.2180 ++ if (tmp > 0x02) 4.2181 ++ return XZ_DATA_ERROR; 4.2182 ++ 4.2183 ++ s->lzma2.sequence = SEQ_COMPRESSED_0; 4.2184 ++ s->lzma2.next_sequence = SEQ_COPY; 4.2185 ++ } 4.2186 ++ 4.2187 ++ break; 4.2188 ++ 4.2189 ++ case SEQ_UNCOMPRESSED_1: 4.2190 ++ s->lzma2.uncompressed 4.2191 ++ += (uint32_t)b->in[b->in_pos++] << 8; 4.2192 ++ s->lzma2.sequence = SEQ_UNCOMPRESSED_2; 4.2193 ++ break; 4.2194 ++ 4.2195 ++ case SEQ_UNCOMPRESSED_2: 4.2196 ++ s->lzma2.uncompressed 4.2197 ++ += (uint32_t)b->in[b->in_pos++] + 1; 4.2198 ++ s->lzma2.sequence = SEQ_COMPRESSED_0; 4.2199 ++ break; 4.2200 ++ 4.2201 ++ case SEQ_COMPRESSED_0: 4.2202 ++ s->lzma2.compressed 4.2203 ++ = (uint32_t)b->in[b->in_pos++] << 8; 4.2204 ++ s->lzma2.sequence = SEQ_COMPRESSED_1; 4.2205 ++ break; 4.2206 ++ 4.2207 ++ case SEQ_COMPRESSED_1: 4.2208 ++ s->lzma2.compressed 4.2209 ++ += (uint32_t)b->in[b->in_pos++] + 1; 4.2210 ++ s->lzma2.sequence = s->lzma2.next_sequence; 4.2211 ++ break; 4.2212 ++ 4.2213 ++ case SEQ_PROPERTIES: 4.2214 ++ if (!lzma_props(s, b->in[b->in_pos++])) 4.2215 ++ return XZ_DATA_ERROR; 4.2216 ++ 4.2217 ++ s->lzma2.sequence = SEQ_LZMA_PREPARE; 4.2218 ++ 4.2219 ++ case SEQ_LZMA_PREPARE: 4.2220 ++ if (s->lzma2.compressed < RC_INIT_BYTES) 4.2221 ++ return XZ_DATA_ERROR; 4.2222 ++ 4.2223 ++ if (!rc_read_init(&s->rc, b)) 4.2224 ++ return XZ_OK; 4.2225 ++ 4.2226 ++ s->lzma2.compressed -= RC_INIT_BYTES; 4.2227 ++ s->lzma2.sequence = SEQ_LZMA_RUN; 4.2228 ++ 4.2229 ++ case SEQ_LZMA_RUN: 4.2230 ++ /* 4.2231 ++ * Set dictionary limit to indicate how much we want 4.2232 ++ * to be encoded at maximum. Decode new data into the 4.2233 ++ * dictionary. Flush the new data from dictionary to 4.2234 ++ * b->out. Check if we finished decoding this chunk. 4.2235 ++ * In case the dictionary got full but we didn't fill 4.2236 ++ * the output buffer yet, we may run this loop 4.2237 ++ * multiple times without changing s->lzma2.sequence. 4.2238 ++ */ 4.2239 ++ dict_limit(&s->dict, min_t(size_t, 4.2240 ++ b->out_size - b->out_pos, 4.2241 ++ s->lzma2.uncompressed)); 4.2242 ++ if (!lzma2_lzma(s, b)) 4.2243 ++ return XZ_DATA_ERROR; 4.2244 ++ 4.2245 ++ s->lzma2.uncompressed -= dict_flush(&s->dict, b); 4.2246 ++ 4.2247 ++ if (s->lzma2.uncompressed == 0) { 4.2248 ++ if (s->lzma2.compressed > 0 || s->lzma.len > 0 4.2249 ++ || !rc_is_finished(&s->rc)) 4.2250 ++ return XZ_DATA_ERROR; 4.2251 ++ 4.2252 ++ rc_reset(&s->rc); 4.2253 ++ s->lzma2.sequence = SEQ_CONTROL; 4.2254 ++ 4.2255 ++ } else if (b->out_pos == b->out_size 4.2256 ++ || (b->in_pos == b->in_size 4.2257 ++ && s->temp.size 4.2258 ++ < s->lzma2.compressed)) { 4.2259 ++ return XZ_OK; 4.2260 ++ } 4.2261 ++ 4.2262 ++ break; 4.2263 ++ 4.2264 ++ case SEQ_COPY: 4.2265 ++ dict_uncompressed(&s->dict, b, &s->lzma2.compressed); 4.2266 ++ if (s->lzma2.compressed > 0) 4.2267 ++ return XZ_OK; 4.2268 ++ 4.2269 ++ s->lzma2.sequence = SEQ_CONTROL; 4.2270 ++ break; 4.2271 ++ } 4.2272 ++ } 4.2273 ++ 4.2274 ++ return XZ_OK; 4.2275 ++} 4.2276 ++ 4.2277 ++XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, 4.2278 ++ uint32_t dict_max) 4.2279 ++{ 4.2280 ++ struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL); 4.2281 ++ if (s == NULL) 4.2282 ++ return NULL; 4.2283 ++ 4.2284 ++ s->dict.mode = mode; 4.2285 ++ s->dict.size_max = dict_max; 4.2286 ++ 4.2287 ++ if (DEC_IS_PREALLOC(mode)) { 4.2288 ++ s->dict.buf = vmalloc(dict_max); 4.2289 ++ if (s->dict.buf == NULL) { 4.2290 ++ kfree(s); 4.2291 ++ return NULL; 4.2292 ++ } 4.2293 ++ } else if (DEC_IS_DYNALLOC(mode)) { 4.2294 ++ s->dict.buf = NULL; 4.2295 ++ s->dict.allocated = 0; 4.2296 ++ } 4.2297 ++ 4.2298 ++ return s; 4.2299 ++} 4.2300 ++ 4.2301 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props) 4.2302 ++{ 4.2303 ++ /* This limits dictionary size to 3 GiB to keep parsing simpler. */ 4.2304 ++ if (props > 39) 4.2305 ++ return XZ_OPTIONS_ERROR; 4.2306 ++ 4.2307 ++ s->dict.size = 2 + (props & 1); 4.2308 ++ s->dict.size <<= (props >> 1) + 11; 4.2309 ++ 4.2310 ++ if (DEC_IS_MULTI(s->dict.mode)) { 4.2311 ++ if (s->dict.size > s->dict.size_max) 4.2312 ++ return XZ_MEMLIMIT_ERROR; 4.2313 ++ 4.2314 ++ s->dict.end = s->dict.size; 4.2315 ++ 4.2316 ++ if (DEC_IS_DYNALLOC(s->dict.mode)) { 4.2317 ++ if (s->dict.allocated < s->dict.size) { 4.2318 ++ vfree(s->dict.buf); 4.2319 ++ s->dict.buf = vmalloc(s->dict.size); 4.2320 ++ if (s->dict.buf == NULL) { 4.2321 ++ s->dict.allocated = 0; 4.2322 ++ return XZ_MEM_ERROR; 4.2323 ++ } 4.2324 ++ } 4.2325 ++ } 4.2326 ++ } 4.2327 ++ 4.2328 ++ s->lzma.len = 0; 4.2329 ++ 4.2330 ++ s->lzma2.sequence = SEQ_CONTROL; 4.2331 ++ s->lzma2.need_dict_reset = true; 4.2332 ++ 4.2333 ++ s->temp.size = 0; 4.2334 ++ 4.2335 ++ return XZ_OK; 4.2336 ++} 4.2337 ++ 4.2338 ++XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s) 4.2339 ++{ 4.2340 ++ if (DEC_IS_MULTI(s->dict.mode)) 4.2341 ++ vfree(s->dict.buf); 4.2342 ++ 4.2343 ++ kfree(s); 4.2344 ++} 4.2345 +diff --git a/lib/xz/xz_dec_stream.c b/lib/xz/xz_dec_stream.c 4.2346 +new file mode 100644 4.2347 +index 0000000..ac809b1 4.2348 +--- /dev/null 4.2349 ++++ b/lib/xz/xz_dec_stream.c 4.2350 +@@ -0,0 +1,821 @@ 4.2351 ++/* 4.2352 ++ * .xz Stream decoder 4.2353 ++ * 4.2354 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 4.2355 ++ * 4.2356 ++ * This file has been put into the public domain. 4.2357 ++ * You can do whatever you want with this file. 4.2358 ++ */ 4.2359 ++ 4.2360 ++#include "xz_private.h" 4.2361 ++#include "xz_stream.h" 4.2362 ++ 4.2363 ++/* Hash used to validate the Index field */ 4.2364 ++struct xz_dec_hash { 4.2365 ++ vli_type unpadded; 4.2366 ++ vli_type uncompressed; 4.2367 ++ uint32_t crc32; 4.2368 ++}; 4.2369 ++ 4.2370 ++struct xz_dec { 4.2371 ++ /* Position in dec_main() */ 4.2372 ++ enum { 4.2373 ++ SEQ_STREAM_HEADER, 4.2374 ++ SEQ_BLOCK_START, 4.2375 ++ SEQ_BLOCK_HEADER, 4.2376 ++ SEQ_BLOCK_UNCOMPRESS, 4.2377 ++ SEQ_BLOCK_PADDING, 4.2378 ++ SEQ_BLOCK_CHECK, 4.2379 ++ SEQ_INDEX, 4.2380 ++ SEQ_INDEX_PADDING, 4.2381 ++ SEQ_INDEX_CRC32, 4.2382 ++ SEQ_STREAM_FOOTER 4.2383 ++ } sequence; 4.2384 ++ 4.2385 ++ /* Position in variable-length integers and Check fields */ 4.2386 ++ uint32_t pos; 4.2387 ++ 4.2388 ++ /* Variable-length integer decoded by dec_vli() */ 4.2389 ++ vli_type vli; 4.2390 ++ 4.2391 ++ /* Saved in_pos and out_pos */ 4.2392 ++ size_t in_start; 4.2393 ++ size_t out_start; 4.2394 ++ 4.2395 ++ /* CRC32 value in Block or Index */ 4.2396 ++ uint32_t crc32; 4.2397 ++ 4.2398 ++ /* Type of the integrity check calculated from uncompressed data */ 4.2399 ++ enum xz_check check_type; 4.2400 ++ 4.2401 ++ /* Operation mode */ 4.2402 ++ enum xz_mode mode; 4.2403 ++ 4.2404 ++ /* 4.2405 ++ * True if the next call to xz_dec_run() is allowed to return 4.2406 ++ * XZ_BUF_ERROR. 4.2407 ++ */ 4.2408 ++ bool allow_buf_error; 4.2409 ++ 4.2410 ++ /* Information stored in Block Header */ 4.2411 ++ struct { 4.2412 ++ /* 4.2413 ++ * Value stored in the Compressed Size field, or 4.2414 ++ * VLI_UNKNOWN if Compressed Size is not present. 4.2415 ++ */ 4.2416 ++ vli_type compressed; 4.2417 ++ 4.2418 ++ /* 4.2419 ++ * Value stored in the Uncompressed Size field, or 4.2420 ++ * VLI_UNKNOWN if Uncompressed Size is not present. 4.2421 ++ */ 4.2422 ++ vli_type uncompressed; 4.2423 ++ 4.2424 ++ /* Size of the Block Header field */ 4.2425 ++ uint32_t size; 4.2426 ++ } block_header; 4.2427 ++ 4.2428 ++ /* Information collected when decoding Blocks */ 4.2429 ++ struct { 4.2430 ++ /* Observed compressed size of the current Block */ 4.2431 ++ vli_type compressed; 4.2432 ++ 4.2433 ++ /* Observed uncompressed size of the current Block */ 4.2434 ++ vli_type uncompressed; 4.2435 ++ 4.2436 ++ /* Number of Blocks decoded so far */ 4.2437 ++ vli_type count; 4.2438 ++ 4.2439 ++ /* 4.2440 ++ * Hash calculated from the Block sizes. This is used to 4.2441 ++ * validate the Index field. 4.2442 ++ */ 4.2443 ++ struct xz_dec_hash hash; 4.2444 ++ } block; 4.2445 ++ 4.2446 ++ /* Variables needed when verifying the Index field */ 4.2447 ++ struct { 4.2448 ++ /* Position in dec_index() */ 4.2449 ++ enum { 4.2450 ++ SEQ_INDEX_COUNT, 4.2451 ++ SEQ_INDEX_UNPADDED, 4.2452 ++ SEQ_INDEX_UNCOMPRESSED 4.2453 ++ } sequence; 4.2454 ++ 4.2455 ++ /* Size of the Index in bytes */ 4.2456 ++ vli_type size; 4.2457 ++ 4.2458 ++ /* Number of Records (matches block.count in valid files) */ 4.2459 ++ vli_type count; 4.2460 ++ 4.2461 ++ /* 4.2462 ++ * Hash calculated from the Records (matches block.hash in 4.2463 ++ * valid files). 4.2464 ++ */ 4.2465 ++ struct xz_dec_hash hash; 4.2466 ++ } index; 4.2467 ++ 4.2468 ++ /* 4.2469 ++ * Temporary buffer needed to hold Stream Header, Block Header, 4.2470 ++ * and Stream Footer. The Block Header is the biggest (1 KiB) 4.2471 ++ * so we reserve space according to that. buf[] has to be aligned 4.2472 ++ * to a multiple of four bytes; the size_t variables before it 4.2473 ++ * should guarantee this. 4.2474 ++ */ 4.2475 ++ struct { 4.2476 ++ size_t pos; 4.2477 ++ size_t size; 4.2478 ++ uint8_t buf[1024]; 4.2479 ++ } temp; 4.2480 ++ 4.2481 ++ struct xz_dec_lzma2 *lzma2; 4.2482 ++ 4.2483 ++#ifdef XZ_DEC_BCJ 4.2484 ++ struct xz_dec_bcj *bcj; 4.2485 ++ bool bcj_active; 4.2486 ++#endif 4.2487 ++}; 4.2488 ++ 4.2489 ++#ifdef XZ_DEC_ANY_CHECK 4.2490 ++/* Sizes of the Check field with different Check IDs */ 4.2491 ++static const uint8_t check_sizes[16] = { 4.2492 ++ 0, 4.2493 ++ 4, 4, 4, 4.2494 ++ 8, 8, 8, 4.2495 ++ 16, 16, 16, 4.2496 ++ 32, 32, 32, 4.2497 ++ 64, 64, 64 4.2498 ++}; 4.2499 ++#endif 4.2500 ++ 4.2501 ++/* 4.2502 ++ * Fill s->temp by copying data starting from b->in[b->in_pos]. Caller 4.2503 ++ * must have set s->temp.pos to indicate how much data we are supposed 4.2504 ++ * to copy into s->temp.buf. Return true once s->temp.pos has reached 4.2505 ++ * s->temp.size. 4.2506 ++ */ 4.2507 ++static bool fill_temp(struct xz_dec *s, struct xz_buf *b) 4.2508 ++{ 4.2509 ++ size_t copy_size = min_t(size_t, 4.2510 ++ b->in_size - b->in_pos, s->temp.size - s->temp.pos); 4.2511 ++ 4.2512 ++ memcpy(s->temp.buf + s->temp.pos, b->in + b->in_pos, copy_size); 4.2513 ++ b->in_pos += copy_size; 4.2514 ++ s->temp.pos += copy_size; 4.2515 ++ 4.2516 ++ if (s->temp.pos == s->temp.size) { 4.2517 ++ s->temp.pos = 0; 4.2518 ++ return true; 4.2519 ++ } 4.2520 ++ 4.2521 ++ return false; 4.2522 ++} 4.2523 ++ 4.2524 ++/* Decode a variable-length integer (little-endian base-128 encoding) */ 4.2525 ++static enum xz_ret dec_vli(struct xz_dec *s, const uint8_t *in, 4.2526 ++ size_t *in_pos, size_t in_size) 4.2527 ++{ 4.2528 ++ uint8_t byte; 4.2529 ++ 4.2530 ++ if (s->pos == 0) 4.2531 ++ s->vli = 0; 4.2532 ++ 4.2533 ++ while (*in_pos < in_size) { 4.2534 ++ byte = in[*in_pos]; 4.2535 ++ ++*in_pos; 4.2536 ++ 4.2537 ++ s->vli |= (vli_type)(byte & 0x7F) << s->pos; 4.2538 ++ 4.2539 ++ if ((byte & 0x80) == 0) { 4.2540 ++ /* Don't allow non-minimal encodings. */ 4.2541 ++ if (byte == 0 && s->pos != 0) 4.2542 ++ return XZ_DATA_ERROR; 4.2543 ++ 4.2544 ++ s->pos = 0; 4.2545 ++ return XZ_STREAM_END; 4.2546 ++ } 4.2547 ++ 4.2548 ++ s->pos += 7; 4.2549 ++ if (s->pos == 7 * VLI_BYTES_MAX) 4.2550 ++ return XZ_DATA_ERROR; 4.2551 ++ } 4.2552 ++ 4.2553 ++ return XZ_OK; 4.2554 ++} 4.2555 ++ 4.2556 ++/* 4.2557 ++ * Decode the Compressed Data field from a Block. Update and validate 4.2558 ++ * the observed compressed and uncompressed sizes of the Block so that 4.2559 ++ * they don't exceed the values possibly stored in the Block Header 4.2560 ++ * (validation assumes that no integer overflow occurs, since vli_type 4.2561 ++ * is normally uint64_t). Update the CRC32 if presence of the CRC32 4.2562 ++ * field was indicated in Stream Header. 4.2563 ++ * 4.2564 ++ * Once the decoding is finished, validate that the observed sizes match 4.2565 ++ * the sizes possibly stored in the Block Header. Update the hash and 4.2566 ++ * Block count, which are later used to validate the Index field. 4.2567 ++ */ 4.2568 ++static enum xz_ret dec_block(struct xz_dec *s, struct xz_buf *b) 4.2569 ++{ 4.2570 ++ enum xz_ret ret; 4.2571 ++ 4.2572 ++ s->in_start = b->in_pos; 4.2573 ++ s->out_start = b->out_pos; 4.2574 ++ 4.2575 ++#ifdef XZ_DEC_BCJ 4.2576 ++ if (s->bcj_active) 4.2577 ++ ret = xz_dec_bcj_run(s->bcj, s->lzma2, b); 4.2578 ++ else 4.2579 ++#endif 4.2580 ++ ret = xz_dec_lzma2_run(s->lzma2, b); 4.2581 ++ 4.2582 ++ s->block.compressed += b->in_pos - s->in_start; 4.2583 ++ s->block.uncompressed += b->out_pos - s->out_start; 4.2584 ++ 4.2585 ++ /* 4.2586 ++ * There is no need to separately check for VLI_UNKNOWN, since 4.2587 ++ * the observed sizes are always smaller than VLI_UNKNOWN. 4.2588 ++ */ 4.2589 ++ if (s->block.compressed > s->block_header.compressed 4.2590 ++ || s->block.uncompressed 4.2591 ++ > s->block_header.uncompressed) 4.2592 ++ return XZ_DATA_ERROR; 4.2593 ++ 4.2594 ++ if (s->check_type == XZ_CHECK_CRC32) 4.2595 ++ s->crc32 = xz_crc32(b->out + s->out_start, 4.2596 ++ b->out_pos - s->out_start, s->crc32); 4.2597 ++ 4.2598 ++ if (ret == XZ_STREAM_END) { 4.2599 ++ if (s->block_header.compressed != VLI_UNKNOWN 4.2600 ++ && s->block_header.compressed 4.2601 ++ != s->block.compressed) 4.2602 ++ return XZ_DATA_ERROR; 4.2603 ++ 4.2604 ++ if (s->block_header.uncompressed != VLI_UNKNOWN 4.2605 ++ && s->block_header.uncompressed 4.2606 ++ != s->block.uncompressed) 4.2607 ++ return XZ_DATA_ERROR; 4.2608 ++ 4.2609 ++ s->block.hash.unpadded += s->block_header.size 4.2610 ++ + s->block.compressed; 4.2611 ++ 4.2612 ++#ifdef XZ_DEC_ANY_CHECK 4.2613 ++ s->block.hash.unpadded += check_sizes[s->check_type]; 4.2614 ++#else 4.2615 ++ if (s->check_type == XZ_CHECK_CRC32) 4.2616 ++ s->block.hash.unpadded += 4; 4.2617 ++#endif 4.2618 ++ 4.2619 ++ s->block.hash.uncompressed += s->block.uncompressed; 4.2620 ++ s->block.hash.crc32 = xz_crc32( 4.2621 ++ (const uint8_t *)&s->block.hash, 4.2622 ++ sizeof(s->block.hash), s->block.hash.crc32); 4.2623 ++ 4.2624 ++ ++s->block.count; 4.2625 ++ } 4.2626 ++ 4.2627 ++ return ret; 4.2628 ++} 4.2629 ++ 4.2630 ++/* Update the Index size and the CRC32 value. */ 4.2631 ++static void index_update(struct xz_dec *s, const struct xz_buf *b) 4.2632 ++{ 4.2633 ++ size_t in_used = b->in_pos - s->in_start; 4.2634 ++ s->index.size += in_used; 4.2635 ++ s->crc32 = xz_crc32(b->in + s->in_start, in_used, s->crc32); 4.2636 ++} 4.2637 ++ 4.2638 ++/* 4.2639 ++ * Decode the Number of Records, Unpadded Size, and Uncompressed Size 4.2640 ++ * fields from the Index field. That is, Index Padding and CRC32 are not 4.2641 ++ * decoded by this function. 4.2642 ++ * 4.2643 ++ * This can return XZ_OK (more input needed), XZ_STREAM_END (everything 4.2644 ++ * successfully decoded), or XZ_DATA_ERROR (input is corrupt). 4.2645 ++ */ 4.2646 ++static enum xz_ret dec_index(struct xz_dec *s, struct xz_buf *b) 4.2647 ++{ 4.2648 ++ enum xz_ret ret; 4.2649 ++ 4.2650 ++ do { 4.2651 ++ ret = dec_vli(s, b->in, &b->in_pos, b->in_size); 4.2652 ++ if (ret != XZ_STREAM_END) { 4.2653 ++ index_update(s, b); 4.2654 ++ return ret; 4.2655 ++ } 4.2656 ++ 4.2657 ++ switch (s->index.sequence) { 4.2658 ++ case SEQ_INDEX_COUNT: 4.2659 ++ s->index.count = s->vli; 4.2660 ++ 4.2661 ++ /* 4.2662 ++ * Validate that the Number of Records field 4.2663 ++ * indicates the same number of Records as 4.2664 ++ * there were Blocks in the Stream. 4.2665 ++ */ 4.2666 ++ if (s->index.count != s->block.count) 4.2667 ++ return XZ_DATA_ERROR; 4.2668 ++ 4.2669 ++ s->index.sequence = SEQ_INDEX_UNPADDED; 4.2670 ++ break; 4.2671 ++ 4.2672 ++ case SEQ_INDEX_UNPADDED: 4.2673 ++ s->index.hash.unpadded += s->vli; 4.2674 ++ s->index.sequence = SEQ_INDEX_UNCOMPRESSED; 4.2675 ++ break; 4.2676 ++ 4.2677 ++ case SEQ_INDEX_UNCOMPRESSED: 4.2678 ++ s->index.hash.uncompressed += s->vli; 4.2679 ++ s->index.hash.crc32 = xz_crc32( 4.2680 ++ (const uint8_t *)&s->index.hash, 4.2681 ++ sizeof(s->index.hash), 4.2682 ++ s->index.hash.crc32); 4.2683 ++ --s->index.count; 4.2684 ++ s->index.sequence = SEQ_INDEX_UNPADDED; 4.2685 ++ break; 4.2686 ++ } 4.2687 ++ } while (s->index.count > 0); 4.2688 ++ 4.2689 ++ return XZ_STREAM_END; 4.2690 ++} 4.2691 ++ 4.2692 ++/* 4.2693 ++ * Validate that the next four input bytes match the value of s->crc32. 4.2694 ++ * s->pos must be zero when starting to validate the first byte. 4.2695 ++ */ 4.2696 ++static enum xz_ret crc32_validate(struct xz_dec *s, struct xz_buf *b) 4.2697 ++{ 4.2698 ++ do { 4.2699 ++ if (b->in_pos == b->in_size) 4.2700 ++ return XZ_OK; 4.2701 ++ 4.2702 ++ if (((s->crc32 >> s->pos) & 0xFF) != b->in[b->in_pos++]) 4.2703 ++ return XZ_DATA_ERROR; 4.2704 ++ 4.2705 ++ s->pos += 8; 4.2706 ++ 4.2707 ++ } while (s->pos < 32); 4.2708 ++ 4.2709 ++ s->crc32 = 0; 4.2710 ++ s->pos = 0; 4.2711 ++ 4.2712 ++ return XZ_STREAM_END; 4.2713 ++} 4.2714 ++ 4.2715 ++#ifdef XZ_DEC_ANY_CHECK 4.2716 ++/* 4.2717 ++ * Skip over the Check field when the Check ID is not supported. 4.2718 ++ * Returns true once the whole Check field has been skipped over. 4.2719 ++ */ 4.2720 ++static bool check_skip(struct xz_dec *s, struct xz_buf *b) 4.2721 ++{ 4.2722 ++ while (s->pos < check_sizes[s->check_type]) { 4.2723 ++ if (b->in_pos == b->in_size) 4.2724 ++ return false; 4.2725 ++ 4.2726 ++ ++b->in_pos; 4.2727 ++ ++s->pos; 4.2728 ++ } 4.2729 ++ 4.2730 ++ s->pos = 0; 4.2731 ++ 4.2732 ++ return true; 4.2733 ++} 4.2734 ++#endif 4.2735 ++ 4.2736 ++/* Decode the Stream Header field (the first 12 bytes of the .xz Stream). */ 4.2737 ++static enum xz_ret dec_stream_header(struct xz_dec *s) 4.2738 ++{ 4.2739 ++ if (!memeq(s->temp.buf, HEADER_MAGIC, HEADER_MAGIC_SIZE)) 4.2740 ++ return XZ_FORMAT_ERROR; 4.2741 ++ 4.2742 ++ if (xz_crc32(s->temp.buf + HEADER_MAGIC_SIZE, 2, 0) 4.2743 ++ != get_le32(s->temp.buf + HEADER_MAGIC_SIZE + 2)) 4.2744 ++ return XZ_DATA_ERROR; 4.2745 ++ 4.2746 ++ if (s->temp.buf[HEADER_MAGIC_SIZE] != 0) 4.2747 ++ return XZ_OPTIONS_ERROR; 4.2748 ++ 4.2749 ++ /* 4.2750 ++ * Of integrity checks, we support only none (Check ID = 0) and 4.2751 ++ * CRC32 (Check ID = 1). However, if XZ_DEC_ANY_CHECK is defined, 4.2752 ++ * we will accept other check types too, but then the check won't 4.2753 ++ * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given. 4.2754 ++ */ 4.2755 ++ s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1]; 4.2756 ++ 4.2757 ++#ifdef XZ_DEC_ANY_CHECK 4.2758 ++ if (s->check_type > XZ_CHECK_MAX) 4.2759 ++ return XZ_OPTIONS_ERROR; 4.2760 ++ 4.2761 ++ if (s->check_type > XZ_CHECK_CRC32) 4.2762 ++ return XZ_UNSUPPORTED_CHECK; 4.2763 ++#else 4.2764 ++ if (s->check_type > XZ_CHECK_CRC32) 4.2765 ++ return XZ_OPTIONS_ERROR; 4.2766 ++#endif 4.2767 ++ 4.2768 ++ return XZ_OK; 4.2769 ++} 4.2770 ++ 4.2771 ++/* Decode the Stream Footer field (the last 12 bytes of the .xz Stream) */ 4.2772 ++static enum xz_ret dec_stream_footer(struct xz_dec *s) 4.2773 ++{ 4.2774 ++ if (!memeq(s->temp.buf + 10, FOOTER_MAGIC, FOOTER_MAGIC_SIZE)) 4.2775 ++ return XZ_DATA_ERROR; 4.2776 ++ 4.2777 ++ if (xz_crc32(s->temp.buf + 4, 6, 0) != get_le32(s->temp.buf)) 4.2778 ++ return XZ_DATA_ERROR; 4.2779 ++ 4.2780 ++ /* 4.2781 ++ * Validate Backward Size. Note that we never added the size of the 4.2782 ++ * Index CRC32 field to s->index.size, thus we use s->index.size / 4 4.2783 ++ * instead of s->index.size / 4 - 1. 4.2784 ++ */ 4.2785 ++ if ((s->index.size >> 2) != get_le32(s->temp.buf + 4)) 4.2786 ++ return XZ_DATA_ERROR; 4.2787 ++ 4.2788 ++ if (s->temp.buf[8] != 0 || s->temp.buf[9] != s->check_type) 4.2789 ++ return XZ_DATA_ERROR; 4.2790 ++ 4.2791 ++ /* 4.2792 ++ * Use XZ_STREAM_END instead of XZ_OK to be more convenient 4.2793 ++ * for the caller. 4.2794 ++ */ 4.2795 ++ return XZ_STREAM_END; 4.2796 ++} 4.2797 ++ 4.2798 ++/* Decode the Block Header and initialize the filter chain. */ 4.2799 ++static enum xz_ret dec_block_header(struct xz_dec *s) 4.2800 ++{ 4.2801 ++ enum xz_ret ret; 4.2802 ++ 4.2803 ++ /* 4.2804 ++ * Validate the CRC32. We know that the temp buffer is at least 4.2805 ++ * eight bytes so this is safe. 4.2806 ++ */ 4.2807 ++ s->temp.size -= 4; 4.2808 ++ if (xz_crc32(s->temp.buf, s->temp.size, 0) 4.2809 ++ != get_le32(s->temp.buf + s->temp.size)) 4.2810 ++ return XZ_DATA_ERROR; 4.2811 ++ 4.2812 ++ s->temp.pos = 2; 4.2813 ++ 4.2814 ++ /* 4.2815 ++ * Catch unsupported Block Flags. We support only one or two filters 4.2816 ++ * in the chain, so we catch that with the same test. 4.2817 ++ */ 4.2818 ++#ifdef XZ_DEC_BCJ 4.2819 ++ if (s->temp.buf[1] & 0x3E) 4.2820 ++#else 4.2821 ++ if (s->temp.buf[1] & 0x3F) 4.2822 ++#endif 4.2823 ++ return XZ_OPTIONS_ERROR; 4.2824 ++ 4.2825 ++ /* Compressed Size */ 4.2826 ++ if (s->temp.buf[1] & 0x40) { 4.2827 ++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size) 4.2828 ++ != XZ_STREAM_END) 4.2829 ++ return XZ_DATA_ERROR; 4.2830 ++ 4.2831 ++ s->block_header.compressed = s->vli; 4.2832 ++ } else { 4.2833 ++ s->block_header.compressed = VLI_UNKNOWN; 4.2834 ++ } 4.2835 ++ 4.2836 ++ /* Uncompressed Size */ 4.2837 ++ if (s->temp.buf[1] & 0x80) { 4.2838 ++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size) 4.2839 ++ != XZ_STREAM_END) 4.2840 ++ return XZ_DATA_ERROR; 4.2841 ++ 4.2842 ++ s->block_header.uncompressed = s->vli; 4.2843 ++ } else { 4.2844 ++ s->block_header.uncompressed = VLI_UNKNOWN; 4.2845 ++ } 4.2846 ++ 4.2847 ++#ifdef XZ_DEC_BCJ 4.2848 ++ /* If there are two filters, the first one must be a BCJ filter. */ 4.2849 ++ s->bcj_active = s->temp.buf[1] & 0x01; 4.2850 ++ if (s->bcj_active) { 4.2851 ++ if (s->temp.size - s->temp.pos < 2) 4.2852 ++ return XZ_OPTIONS_ERROR; 4.2853 ++ 4.2854 ++ ret = xz_dec_bcj_reset(s->bcj, s->temp.buf[s->temp.pos++]); 4.2855 ++ if (ret != XZ_OK) 4.2856 ++ return ret; 4.2857 ++ 4.2858 ++ /* 4.2859 ++ * We don't support custom start offset, 4.2860 ++ * so Size of Properties must be zero. 4.2861 ++ */ 4.2862 ++ if (s->temp.buf[s->temp.pos++] != 0x00) 4.2863 ++ return XZ_OPTIONS_ERROR; 4.2864 ++ } 4.2865 ++#endif 4.2866 ++ 4.2867 ++ /* Valid Filter Flags always take at least two bytes. */ 4.2868 ++ if (s->temp.size - s->temp.pos < 2) 4.2869 ++ return XZ_DATA_ERROR; 4.2870 ++ 4.2871 ++ /* Filter ID = LZMA2 */ 4.2872 ++ if (s->temp.buf[s->temp.pos++] != 0x21) 4.2873 ++ return XZ_OPTIONS_ERROR; 4.2874 ++ 4.2875 ++ /* Size of Properties = 1-byte Filter Properties */ 4.2876 ++ if (s->temp.buf[s->temp.pos++] != 0x01) 4.2877 ++ return XZ_OPTIONS_ERROR; 4.2878 ++ 4.2879 ++ /* Filter Properties contains LZMA2 dictionary size. */ 4.2880 ++ if (s->temp.size - s->temp.pos < 1) 4.2881 ++ return XZ_DATA_ERROR; 4.2882 ++ 4.2883 ++ ret = xz_dec_lzma2_reset(s->lzma2, s->temp.buf[s->temp.pos++]); 4.2884 ++ if (ret != XZ_OK) 4.2885 ++ return ret; 4.2886 ++ 4.2887 ++ /* The rest must be Header Padding. */ 4.2888 ++ while (s->temp.pos < s->temp.size) 4.2889 ++ if (s->temp.buf[s->temp.pos++] != 0x00) 4.2890 ++ return XZ_OPTIONS_ERROR; 4.2891 ++ 4.2892 ++ s->temp.pos = 0; 4.2893 ++ s->block.compressed = 0; 4.2894 ++ s->block.uncompressed = 0; 4.2895 ++ 4.2896 ++ return XZ_OK; 4.2897 ++} 4.2898 ++ 4.2899 ++static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b) 4.2900 ++{ 4.2901 ++ enum xz_ret ret; 4.2902 ++ 4.2903 ++ /* 4.2904 ++ * Store the start position for the case when we are in the middle 4.2905 ++ * of the Index field. 4.2906 ++ */ 4.2907 ++ s->in_start = b->in_pos; 4.2908 ++ 4.2909 ++ while (true) { 4.2910 ++ switch (s->sequence) { 4.2911 ++ case SEQ_STREAM_HEADER: 4.2912 ++ /* 4.2913 ++ * Stream Header is copied to s->temp, and then 4.2914 ++ * decoded from there. This way if the caller 4.2915 ++ * gives us only little input at a time, we can 4.2916 ++ * still keep the Stream Header decoding code 4.2917 ++ * simple. Similar approach is used in many places 4.2918 ++ * in this file. 4.2919 ++ */ 4.2920 ++ if (!fill_temp(s, b)) 4.2921 ++ return XZ_OK; 4.2922 ++ 4.2923 ++ /* 4.2924 ++ * If dec_stream_header() returns 4.2925 ++ * XZ_UNSUPPORTED_CHECK, it is still possible 4.2926 ++ * to continue decoding if working in multi-call 4.2927 ++ * mode. Thus, update s->sequence before calling 4.2928 ++ * dec_stream_header(). 4.2929 ++ */ 4.2930 ++ s->sequence = SEQ_BLOCK_START; 4.2931 ++ 4.2932 ++ ret = dec_stream_header(s); 4.2933 ++ if (ret != XZ_OK) 4.2934 ++ return ret; 4.2935 ++ 4.2936 ++ case SEQ_BLOCK_START: 4.2937 ++ /* We need one byte of input to continue. */ 4.2938 ++ if (b->in_pos == b->in_size) 4.2939 ++ return XZ_OK; 4.2940 ++ 4.2941 ++ /* See if this is the beginning of the Index field. */ 4.2942 ++ if (b->in[b->in_pos] == 0) { 4.2943 ++ s->in_start = b->in_pos++; 4.2944 ++ s->sequence = SEQ_INDEX; 4.2945 ++ break; 4.2946 ++ } 4.2947 ++ 4.2948 ++ /* 4.2949 ++ * Calculate the size of the Block Header and 4.2950 ++ * prepare to decode it. 4.2951 ++ */ 4.2952 ++ s->block_header.size 4.2953 ++ = ((uint32_t)b->in[b->in_pos] + 1) * 4; 4.2954 ++ 4.2955 ++ s->temp.size = s->block_header.size; 4.2956 ++ s->temp.pos = 0; 4.2957 ++ s->sequence = SEQ_BLOCK_HEADER; 4.2958 ++ 4.2959 ++ case SEQ_BLOCK_HEADER: 4.2960 ++ if (!fill_temp(s, b)) 4.2961 ++ return XZ_OK; 4.2962 ++ 4.2963 ++ ret = dec_block_header(s); 4.2964 ++ if (ret != XZ_OK) 4.2965 ++ return ret; 4.2966 ++ 4.2967 ++ s->sequence = SEQ_BLOCK_UNCOMPRESS; 4.2968 ++ 4.2969 ++ case SEQ_BLOCK_UNCOMPRESS: 4.2970 ++ ret = dec_block(s, b); 4.2971 ++ if (ret != XZ_STREAM_END) 4.2972 ++ return ret; 4.2973 ++ 4.2974 ++ s->sequence = SEQ_BLOCK_PADDING; 4.2975 ++ 4.2976 ++ case SEQ_BLOCK_PADDING: 4.2977 ++ /* 4.2978 ++ * Size of Compressed Data + Block Padding 4.2979 ++ * must be a multiple of four. We don't need 4.2980 ++ * s->block.compressed for anything else 4.2981 ++ * anymore, so we use it here to test the size 4.2982 ++ * of the Block Padding field. 4.2983 ++ */ 4.2984 ++ while (s->block.compressed & 3) { 4.2985 ++ if (b->in_pos == b->in_size) 4.2986 ++ return XZ_OK; 4.2987 ++ 4.2988 ++ if (b->in[b->in_pos++] != 0) 4.2989 ++ return XZ_DATA_ERROR; 4.2990 ++ 4.2991 ++ ++s->block.compressed; 4.2992 ++ } 4.2993 ++ 4.2994 ++ s->sequence = SEQ_BLOCK_CHECK; 4.2995 ++ 4.2996 ++ case SEQ_BLOCK_CHECK: 4.2997 ++ if (s->check_type == XZ_CHECK_CRC32) { 4.2998 ++ ret = crc32_validate(s, b); 4.2999 ++ if (ret != XZ_STREAM_END) 4.3000 ++ return ret; 4.3001 ++ } 4.3002 ++#ifdef XZ_DEC_ANY_CHECK 4.3003 ++ else if (!check_skip(s, b)) { 4.3004 ++ return XZ_OK; 4.3005 ++ } 4.3006 ++#endif 4.3007 ++ 4.3008 ++ s->sequence = SEQ_BLOCK_START; 4.3009 ++ break; 4.3010 ++ 4.3011 ++ case SEQ_INDEX: 4.3012 ++ ret = dec_index(s, b); 4.3013 ++ if (ret != XZ_STREAM_END) 4.3014 ++ return ret; 4.3015 ++ 4.3016 ++ s->sequence = SEQ_INDEX_PADDING; 4.3017 ++ 4.3018 ++ case SEQ_INDEX_PADDING: 4.3019 ++ while ((s->index.size + (b->in_pos - s->in_start)) 4.3020 ++ & 3) { 4.3021 ++ if (b->in_pos == b->in_size) { 4.3022 ++ index_update(s, b); 4.3023 ++ return XZ_OK; 4.3024 ++ } 4.3025 ++ 4.3026 ++ if (b->in[b->in_pos++] != 0) 4.3027 ++ return XZ_DATA_ERROR; 4.3028 ++ } 4.3029 ++ 4.3030 ++ /* Finish the CRC32 value and Index size. */ 4.3031 ++ index_update(s, b); 4.3032 ++ 4.3033 ++ /* Compare the hashes to validate the Index field. */ 4.3034 ++ if (!memeq(&s->block.hash, &s->index.hash, 4.3035 ++ sizeof(s->block.hash))) 4.3036 ++ return XZ_DATA_ERROR; 4.3037 ++ 4.3038 ++ s->sequence = SEQ_INDEX_CRC32; 4.3039 ++ 4.3040 ++ case SEQ_INDEX_CRC32: 4.3041 ++ ret = crc32_validate(s, b); 4.3042 ++ if (ret != XZ_STREAM_END) 4.3043 ++ return ret; 4.3044 ++ 4.3045 ++ s->temp.size = STREAM_HEADER_SIZE; 4.3046 ++ s->sequence = SEQ_STREAM_FOOTER; 4.3047 ++ 4.3048 ++ case SEQ_STREAM_FOOTER: 4.3049 ++ if (!fill_temp(s, b)) 4.3050 ++ return XZ_OK; 4.3051 ++ 4.3052 ++ return dec_stream_footer(s); 4.3053 ++ } 4.3054 ++ } 4.3055 ++ 4.3056 ++ /* Never reached */ 4.3057 ++} 4.3058 ++ 4.3059 ++/* 4.3060 ++ * xz_dec_run() is a wrapper for dec_main() to handle some special cases in 4.3061 ++ * multi-call and single-call decoding. 4.3062 ++ * 4.3063 ++ * In multi-call mode, we must return XZ_BUF_ERROR when it seems clear that we 4.3064 ++ * are not going to make any progress anymore. This is to prevent the caller 4.3065 ++ * from calling us infinitely when the input file is truncated or otherwise 4.3066 ++ * corrupt. Since zlib-style API allows that the caller fills the input buffer 4.3067 ++ * only when the decoder doesn't produce any new output, we have to be careful 4.3068 ++ * to avoid returning XZ_BUF_ERROR too easily: XZ_BUF_ERROR is returned only 4.3069 ++ * after the second consecutive call to xz_dec_run() that makes no progress. 4.3070 ++ * 4.3071 ++ * In single-call mode, if we couldn't decode everything and no error 4.3072 ++ * occurred, either the input is truncated or the output buffer is too small. 4.3073 ++ * Since we know that the last input byte never produces any output, we know 4.3074 ++ * that if all the input was consumed and decoding wasn't finished, the file 4.3075 ++ * must be corrupt. Otherwise the output buffer has to be too small or the 4.3076 ++ * file is corrupt in a way that decoding it produces too big output. 4.3077 ++ * 4.3078 ++ * If single-call decoding fails, we reset b->in_pos and b->out_pos back to 4.3079 ++ * their original values. This is because with some filter chains there won't 4.3080 ++ * be any valid uncompressed data in the output buffer unless the decoding 4.3081 ++ * actually succeeds (that's the price to pay of using the output buffer as 4.3082 ++ * the workspace). 4.3083 ++ */ 4.3084 ++XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b) 4.3085 ++{ 4.3086 ++ size_t in_start; 4.3087 ++ size_t out_start; 4.3088 ++ enum xz_ret ret; 4.3089 ++ 4.3090 ++ if (DEC_IS_SINGLE(s->mode)) 4.3091 ++ xz_dec_reset(s); 4.3092 ++ 4.3093 ++ in_start = b->in_pos; 4.3094 ++ out_start = b->out_pos; 4.3095 ++ ret = dec_main(s, b); 4.3096 ++ 4.3097 ++ if (DEC_IS_SINGLE(s->mode)) { 4.3098 ++ if (ret == XZ_OK) 4.3099 ++ ret = b->in_pos == b->in_size 4.3100 ++ ? XZ_DATA_ERROR : XZ_BUF_ERROR; 4.3101 ++ 4.3102 ++ if (ret != XZ_STREAM_END) { 4.3103 ++ b->in_pos = in_start; 4.3104 ++ b->out_pos = out_start; 4.3105 ++ } 4.3106 ++ 4.3107 ++ } else if (ret == XZ_OK && in_start == b->in_pos 4.3108 ++ && out_start == b->out_pos) { 4.3109 ++ if (s->allow_buf_error) 4.3110 ++ ret = XZ_BUF_ERROR; 4.3111 ++ 4.3112 ++ s->allow_buf_error = true; 4.3113 ++ } else { 4.3114 ++ s->allow_buf_error = false; 4.3115 ++ } 4.3116 ++ 4.3117 ++ return ret; 4.3118 ++} 4.3119 ++ 4.3120 ++XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max) 4.3121 ++{ 4.3122 ++ struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL); 4.3123 ++ if (s == NULL) 4.3124 ++ return NULL; 4.3125 ++ 4.3126 ++ s->mode = mode; 4.3127 ++ 4.3128 ++#ifdef XZ_DEC_BCJ 4.3129 ++ s->bcj = xz_dec_bcj_create(DEC_IS_SINGLE(mode)); 4.3130 ++ if (s->bcj == NULL) 4.3131 ++ goto error_bcj; 4.3132 ++#endif 4.3133 ++ 4.3134 ++ s->lzma2 = xz_dec_lzma2_create(mode, dict_max); 4.3135 ++ if (s->lzma2 == NULL) 4.3136 ++ goto error_lzma2; 4.3137 ++ 4.3138 ++ xz_dec_reset(s); 4.3139 ++ return s; 4.3140 ++ 4.3141 ++error_lzma2: 4.3142 ++#ifdef XZ_DEC_BCJ 4.3143 ++ xz_dec_bcj_end(s->bcj); 4.3144 ++error_bcj: 4.3145 ++#endif 4.3146 ++ kfree(s); 4.3147 ++ return NULL; 4.3148 ++} 4.3149 ++ 4.3150 ++XZ_EXTERN void xz_dec_reset(struct xz_dec *s) 4.3151 ++{ 4.3152 ++ s->sequence = SEQ_STREAM_HEADER; 4.3153 ++ s->allow_buf_error = false; 4.3154 ++ s->pos = 0; 4.3155 ++ s->crc32 = 0; 4.3156 ++ memzero(&s->block, sizeof(s->block)); 4.3157 ++ memzero(&s->index, sizeof(s->index)); 4.3158 ++ s->temp.pos = 0; 4.3159 ++ s->temp.size = STREAM_HEADER_SIZE; 4.3160 ++} 4.3161 ++ 4.3162 ++XZ_EXTERN void xz_dec_end(struct xz_dec *s) 4.3163 ++{ 4.3164 ++ if (s != NULL) { 4.3165 ++ xz_dec_lzma2_end(s->lzma2); 4.3166 ++#ifdef XZ_DEC_BCJ 4.3167 ++ xz_dec_bcj_end(s->bcj); 4.3168 ++#endif 4.3169 ++ kfree(s); 4.3170 ++ } 4.3171 ++} 4.3172 +diff --git a/lib/xz/xz_dec_syms.c b/lib/xz/xz_dec_syms.c 4.3173 +new file mode 100644 4.3174 +index 0000000..32eb3c0 4.3175 +--- /dev/null 4.3176 ++++ b/lib/xz/xz_dec_syms.c 4.3177 +@@ -0,0 +1,26 @@ 4.3178 ++/* 4.3179 ++ * XZ decoder module information 4.3180 ++ * 4.3181 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 4.3182 ++ * 4.3183 ++ * This file has been put into the public domain. 4.3184 ++ * You can do whatever you want with this file. 4.3185 ++ */ 4.3186 ++ 4.3187 ++#include <linux/module.h> 4.3188 ++#include <linux/xz.h> 4.3189 ++ 4.3190 ++EXPORT_SYMBOL(xz_dec_init); 4.3191 ++EXPORT_SYMBOL(xz_dec_reset); 4.3192 ++EXPORT_SYMBOL(xz_dec_run); 4.3193 ++EXPORT_SYMBOL(xz_dec_end); 4.3194 ++ 4.3195 ++MODULE_DESCRIPTION("XZ decompressor"); 4.3196 ++MODULE_VERSION("1.0"); 4.3197 ++MODULE_AUTHOR("Lasse Collin <lasse.collin@tukaani.org> and Igor Pavlov"); 4.3198 ++ 4.3199 ++/* 4.3200 ++ * This code is in the public domain, but in Linux it's simplest to just 4.3201 ++ * say it's GPL and consider the authors as the copyright holders. 4.3202 ++ */ 4.3203 ++MODULE_LICENSE("GPL"); 4.3204 +diff --git a/lib/xz/xz_dec_test.c b/lib/xz/xz_dec_test.c 4.3205 +new file mode 100644 4.3206 +index 0000000..da28a19 4.3207 +--- /dev/null 4.3208 ++++ b/lib/xz/xz_dec_test.c 4.3209 +@@ -0,0 +1,220 @@ 4.3210 ++/* 4.3211 ++ * XZ decoder tester 4.3212 ++ * 4.3213 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 4.3214 ++ * 4.3215 ++ * This file has been put into the public domain. 4.3216 ++ * You can do whatever you want with this file. 4.3217 ++ */ 4.3218 ++ 4.3219 ++#include <linux/kernel.h> 4.3220 ++#include <linux/module.h> 4.3221 ++#include <linux/fs.h> 4.3222 ++#include <linux/uaccess.h> 4.3223 ++#include <linux/crc32.h> 4.3224 ++#include <linux/xz.h> 4.3225 ++ 4.3226 ++/* Maximum supported dictionary size */ 4.3227 ++#define DICT_MAX (1 << 20) 4.3228 ++ 4.3229 ++/* Device name to pass to register_chrdev(). */ 4.3230 ++#define DEVICE_NAME "xz_dec_test" 4.3231 ++ 4.3232 ++/* Dynamically allocated device major number */ 4.3233 ++static int device_major; 4.3234 ++ 4.3235 ++/* 4.3236 ++ * We reuse the same decoder state, and thus can decode only one 4.3237 ++ * file at a time. 4.3238 ++ */ 4.3239 ++static bool device_is_open; 4.3240 ++ 4.3241 ++/* XZ decoder state */ 4.3242 ++static struct xz_dec *state; 4.3243 ++ 4.3244 ++/* 4.3245 ++ * Return value of xz_dec_run(). We need to avoid calling xz_dec_run() after 4.3246 ++ * it has returned XZ_STREAM_END, so we make this static. 4.3247 ++ */ 4.3248 ++static enum xz_ret ret; 4.3249 ++ 4.3250 ++/* 4.3251 ++ * Input and output buffers. The input buffer is used as a temporary safe 4.3252 ++ * place for the data coming from the userspace. 4.3253 ++ */ 4.3254 ++static uint8_t buffer_in[1024]; 4.3255 ++static uint8_t buffer_out[1024]; 4.3256 ++ 4.3257 ++/* 4.3258 ++ * Structure to pass the input and output buffers to the XZ decoder. 4.3259 ++ * A few of the fields are never modified so we initialize them here. 4.3260 ++ */ 4.3261 ++static struct xz_buf buffers = { 4.3262 ++ .in = buffer_in, 4.3263 ++ .out = buffer_out, 4.3264 ++ .out_size = sizeof(buffer_out) 4.3265 ++}; 4.3266 ++ 4.3267 ++/* 4.3268 ++ * CRC32 of uncompressed data. This is used to give the user a simple way 4.3269 ++ * to check that the decoder produces correct output. 4.3270 ++ */ 4.3271 ++static uint32_t crc; 4.3272 ++ 4.3273 ++static int xz_dec_test_open(struct inode *i, struct file *f) 4.3274 ++{ 4.3275 ++ if (device_is_open) 4.3276 ++ return -EBUSY; 4.3277 ++ 4.3278 ++ device_is_open = true; 4.3279 ++ 4.3280 ++ xz_dec_reset(state); 4.3281 ++ ret = XZ_OK; 4.3282 ++ crc = 0xFFFFFFFF; 4.3283 ++ 4.3284 ++ buffers.in_pos = 0; 4.3285 ++ buffers.in_size = 0; 4.3286 ++ buffers.out_pos = 0; 4.3287 ++ 4.3288 ++ printk(KERN_INFO DEVICE_NAME ": opened\n"); 4.3289 ++ return 0; 4.3290 ++} 4.3291 ++ 4.3292 ++static int xz_dec_test_release(struct inode *i, struct file *f) 4.3293 ++{ 4.3294 ++ device_is_open = false; 4.3295 ++ 4.3296 ++ if (ret == XZ_OK) 4.3297 ++ printk(KERN_INFO DEVICE_NAME ": input was truncated\n"); 4.3298 ++ 4.3299 ++ printk(KERN_INFO DEVICE_NAME ": closed\n"); 4.3300 ++ return 0; 4.3301 ++} 4.3302 ++ 4.3303 ++/* 4.3304 ++ * Decode the data given to us from the userspace. CRC32 of the uncompressed 4.3305 ++ * data is calculated and is printed at the end of successful decoding. The 4.3306 ++ * uncompressed data isn't stored anywhere for further use. 4.3307 ++ * 4.3308 ++ * The .xz file must have exactly one Stream and no Stream Padding. The data 4.3309 ++ * after the first Stream is considered to be garbage. 4.3310 ++ */ 4.3311 ++static ssize_t xz_dec_test_write(struct file *file, const char __user *buf, 4.3312 ++ size_t size, loff_t *pos) 4.3313 ++{ 4.3314 ++ size_t remaining; 4.3315 ++ 4.3316 ++ if (ret != XZ_OK) { 4.3317 ++ if (size > 0) 4.3318 ++ printk(KERN_INFO DEVICE_NAME ": %zu bytes of " 4.3319 ++ "garbage at the end of the file\n", 4.3320 ++ size); 4.3321 ++ 4.3322 ++ return -ENOSPC; 4.3323 ++ } 4.3324 ++ 4.3325 ++ printk(KERN_INFO DEVICE_NAME ": decoding %zu bytes of input\n", 4.3326 ++ size); 4.3327 ++ 4.3328 ++ remaining = size; 4.3329 ++ while ((remaining > 0 || buffers.out_pos == buffers.out_size) 4.3330 ++ && ret == XZ_OK) { 4.3331 ++ if (buffers.in_pos == buffers.in_size) { 4.3332 ++ buffers.in_pos = 0; 4.3333 ++ buffers.in_size = min(remaining, sizeof(buffer_in)); 4.3334 ++ if (copy_from_user(buffer_in, buf, buffers.in_size)) 4.3335 ++ return -EFAULT; 4.3336 ++ 4.3337 ++ buf += buffers.in_size; 4.3338 ++ remaining -= buffers.in_size; 4.3339 ++ } 4.3340 ++ 4.3341 ++ buffers.out_pos = 0; 4.3342 ++ ret = xz_dec_run(state, &buffers); 4.3343 ++ crc = crc32(crc, buffer_out, buffers.out_pos); 4.3344 ++ } 4.3345 ++ 4.3346 ++ switch (ret) { 4.3347 ++ case XZ_OK: 4.3348 ++ printk(KERN_INFO DEVICE_NAME ": XZ_OK\n"); 4.3349 ++ return size; 4.3350 ++ 4.3351 ++ case XZ_STREAM_END: 4.3352 ++ printk(KERN_INFO DEVICE_NAME ": XZ_STREAM_END, " 4.3353 ++ "CRC32 = 0x%08X\n", ~crc); 4.3354 ++ return size - remaining - (buffers.in_size - buffers.in_pos); 4.3355 ++ 4.3356 ++ case XZ_MEMLIMIT_ERROR: 4.3357 ++ printk(KERN_INFO DEVICE_NAME ": XZ_MEMLIMIT_ERROR\n"); 4.3358 ++ break; 4.3359 ++ 4.3360 ++ case XZ_FORMAT_ERROR: 4.3361 ++ printk(KERN_INFO DEVICE_NAME ": XZ_FORMAT_ERROR\n"); 4.3362 ++ break; 4.3363 ++ 4.3364 ++ case XZ_OPTIONS_ERROR: 4.3365 ++ printk(KERN_INFO DEVICE_NAME ": XZ_OPTIONS_ERROR\n"); 4.3366 ++ break; 4.3367 ++ 4.3368 ++ case XZ_DATA_ERROR: 4.3369 ++ printk(KERN_INFO DEVICE_NAME ": XZ_DATA_ERROR\n"); 4.3370 ++ break; 4.3371 ++ 4.3372 ++ case XZ_BUF_ERROR: 4.3373 ++ printk(KERN_INFO DEVICE_NAME ": XZ_BUF_ERROR\n"); 4.3374 ++ break; 4.3375 ++ 4.3376 ++ default: 4.3377 ++ printk(KERN_INFO DEVICE_NAME ": Bug detected!\n"); 4.3378 ++ break; 4.3379 ++ } 4.3380 ++ 4.3381 ++ return -EIO; 4.3382 ++} 4.3383 ++ 4.3384 ++/* Allocate the XZ decoder state and register the character device. */ 4.3385 ++static int __init xz_dec_test_init(void) 4.3386 ++{ 4.3387 ++ static const struct file_operations fileops = { 4.3388 ++ .owner = THIS_MODULE, 4.3389 ++ .open = &xz_dec_test_open, 4.3390 ++ .release = &xz_dec_test_release, 4.3391 ++ .write = &xz_dec_test_write 4.3392 ++ }; 4.3393 ++ 4.3394 ++ state = xz_dec_init(XZ_PREALLOC, DICT_MAX); 4.3395 ++ if (state == NULL) 4.3396 ++ return -ENOMEM; 4.3397 ++ 4.3398 ++ device_major = register_chrdev(0, DEVICE_NAME, &fileops); 4.3399 ++ if (device_major < 0) { 4.3400 ++ xz_dec_end(state); 4.3401 ++ return device_major; 4.3402 ++ } 4.3403 ++ 4.3404 ++ printk(KERN_INFO DEVICE_NAME ": module loaded\n"); 4.3405 ++ printk(KERN_INFO DEVICE_NAME ": Create a device node with " 4.3406 ++ "'mknod " DEVICE_NAME " c %d 0' and write .xz files " 4.3407 ++ "to it.\n", device_major); 4.3408 ++ return 0; 4.3409 ++} 4.3410 ++ 4.3411 ++static void __exit xz_dec_test_exit(void) 4.3412 ++{ 4.3413 ++ unregister_chrdev(device_major, DEVICE_NAME); 4.3414 ++ xz_dec_end(state); 4.3415 ++ printk(KERN_INFO DEVICE_NAME ": module unloaded\n"); 4.3416 ++} 4.3417 ++ 4.3418 ++module_init(xz_dec_test_init); 4.3419 ++module_exit(xz_dec_test_exit); 4.3420 ++ 4.3421 ++MODULE_DESCRIPTION("XZ decompressor tester"); 4.3422 ++MODULE_VERSION("1.0"); 4.3423 ++MODULE_AUTHOR("Lasse Collin <lasse.collin@tukaani.org>"); 4.3424 ++ 4.3425 ++/* 4.3426 ++ * This code is in the public domain, but in Linux it's simplest to just 4.3427 ++ * say it's GPL and consider the authors as the copyright holders. 4.3428 ++ */ 4.3429 ++MODULE_LICENSE("GPL"); 4.3430 +diff --git a/lib/xz/xz_lzma2.h b/lib/xz/xz_lzma2.h 4.3431 +new file mode 100644 4.3432 +index 0000000..071d67b 4.3433 +--- /dev/null 4.3434 ++++ b/lib/xz/xz_lzma2.h 4.3435 +@@ -0,0 +1,204 @@ 4.3436 ++/* 4.3437 ++ * LZMA2 definitions 4.3438 ++ * 4.3439 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 4.3440 ++ * Igor Pavlov <http://7-zip.org/> 4.3441 ++ * 4.3442 ++ * This file has been put into the public domain. 4.3443 ++ * You can do whatever you want with this file. 4.3444 ++ */ 4.3445 ++ 4.3446 ++#ifndef XZ_LZMA2_H 4.3447 ++#define XZ_LZMA2_H 4.3448 ++ 4.3449 ++/* Range coder constants */ 4.3450 ++#define RC_SHIFT_BITS 8 4.3451 ++#define RC_TOP_BITS 24 4.3452 ++#define RC_TOP_VALUE (1 << RC_TOP_BITS) 4.3453 ++#define RC_BIT_MODEL_TOTAL_BITS 11 4.3454 ++#define RC_BIT_MODEL_TOTAL (1 << RC_BIT_MODEL_TOTAL_BITS) 4.3455 ++#define RC_MOVE_BITS 5 4.3456 ++ 4.3457 ++/* 4.3458 ++ * Maximum number of position states. A position state is the lowest pb 4.3459 ++ * number of bits of the current uncompressed offset. In some places there 4.3460 ++ * are different sets of probabilities for different position states. 4.3461 ++ */ 4.3462 ++#define POS_STATES_MAX (1 << 4) 4.3463 ++ 4.3464 ++/* 4.3465 ++ * This enum is used to track which LZMA symbols have occurred most recently 4.3466 ++ * and in which order. This information is used to predict the next symbol. 4.3467 ++ * 4.3468 ++ * Symbols: 4.3469 ++ * - Literal: One 8-bit byte 4.3470 ++ * - Match: Repeat a chunk of data at some distance 4.3471 ++ * - Long repeat: Multi-byte match at a recently seen distance 4.3472 ++ * - Short repeat: One-byte repeat at a recently seen distance 4.3473 ++ * 4.3474 ++ * The symbol names are in from STATE_oldest_older_previous. REP means 4.3475 ++ * either short or long repeated match, and NONLIT means any non-literal. 4.3476 ++ */ 4.3477 ++enum lzma_state { 4.3478 ++ STATE_LIT_LIT, 4.3479 ++ STATE_MATCH_LIT_LIT, 4.3480 ++ STATE_REP_LIT_LIT, 4.3481 ++ STATE_SHORTREP_LIT_LIT, 4.3482 ++ STATE_MATCH_LIT, 4.3483 ++ STATE_REP_LIT, 4.3484 ++ STATE_SHORTREP_LIT, 4.3485 ++ STATE_LIT_MATCH, 4.3486 ++ STATE_LIT_LONGREP, 4.3487 ++ STATE_LIT_SHORTREP, 4.3488 ++ STATE_NONLIT_MATCH, 4.3489 ++ STATE_NONLIT_REP 4.3490 ++}; 4.3491 ++ 4.3492 ++/* Total number of states */ 4.3493 ++#define STATES 12 4.3494 ++ 4.3495 ++/* The lowest 7 states indicate that the previous state was a literal. */ 4.3496 ++#define LIT_STATES 7 4.3497 ++ 4.3498 ++/* Indicate that the latest symbol was a literal. */ 4.3499 ++static inline void lzma_state_literal(enum lzma_state *state) 4.3500 ++{ 4.3501 ++ if (*state <= STATE_SHORTREP_LIT_LIT) 4.3502 ++ *state = STATE_LIT_LIT; 4.3503 ++ else if (*state <= STATE_LIT_SHORTREP) 4.3504 ++ *state -= 3; 4.3505 ++ else 4.3506 ++ *state -= 6; 4.3507 ++} 4.3508 ++ 4.3509 ++/* Indicate that the latest symbol was a match. */ 4.3510 ++static inline void lzma_state_match(enum lzma_state *state) 4.3511 ++{ 4.3512 ++ *state = *state < LIT_STATES ? STATE_LIT_MATCH : STATE_NONLIT_MATCH; 4.3513 ++} 4.3514 ++ 4.3515 ++/* Indicate that the latest state was a long repeated match. */ 4.3516 ++static inline void lzma_state_long_rep(enum lzma_state *state) 4.3517 ++{ 4.3518 ++ *state = *state < LIT_STATES ? STATE_LIT_LONGREP : STATE_NONLIT_REP; 4.3519 ++} 4.3520 ++ 4.3521 ++/* Indicate that the latest symbol was a short match. */ 4.3522 ++static inline void lzma_state_short_rep(enum lzma_state *state) 4.3523 ++{ 4.3524 ++ *state = *state < LIT_STATES ? STATE_LIT_SHORTREP : STATE_NONLIT_REP; 4.3525 ++} 4.3526 ++ 4.3527 ++/* Test if the previous symbol was a literal. */ 4.3528 ++static inline bool lzma_state_is_literal(enum lzma_state state) 4.3529 ++{ 4.3530 ++ return state < LIT_STATES; 4.3531 ++} 4.3532 ++ 4.3533 ++/* Each literal coder is divided in three sections: 4.3534 ++ * - 0x001-0x0FF: Without match byte 4.3535 ++ * - 0x101-0x1FF: With match byte; match bit is 0 4.3536 ++ * - 0x201-0x2FF: With match byte; match bit is 1 4.3537 ++ * 4.3538 ++ * Match byte is used when the previous LZMA symbol was something else than 4.3539 ++ * a literal (that is, it was some kind of match). 4.3540 ++ */ 4.3541 ++#define LITERAL_CODER_SIZE 0x300 4.3542 ++ 4.3543 ++/* Maximum number of literal coders */ 4.3544 ++#define LITERAL_CODERS_MAX (1 << 4) 4.3545 ++ 4.3546 ++/* Minimum length of a match is two bytes. */ 4.3547 ++#define MATCH_LEN_MIN 2 4.3548 ++ 4.3549 ++/* Match length is encoded with 4, 5, or 10 bits. 4.3550 ++ * 4.3551 ++ * Length Bits 4.3552 ++ * 2-9 4 = Choice=0 + 3 bits 4.3553 ++ * 10-17 5 = Choice=1 + Choice2=0 + 3 bits 4.3554 ++ * 18-273 10 = Choice=1 + Choice2=1 + 8 bits 4.3555 ++ */ 4.3556 ++#define LEN_LOW_BITS 3 4.3557 ++#define LEN_LOW_SYMBOLS (1 << LEN_LOW_BITS) 4.3558 ++#define LEN_MID_BITS 3 4.3559 ++#define LEN_MID_SYMBOLS (1 << LEN_MID_BITS) 4.3560 ++#define LEN_HIGH_BITS 8 4.3561 ++#define LEN_HIGH_SYMBOLS (1 << LEN_HIGH_BITS) 4.3562 ++#define LEN_SYMBOLS (LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS + LEN_HIGH_SYMBOLS) 4.3563 ++ 4.3564 ++/* 4.3565 ++ * Maximum length of a match is 273 which is a result of the encoding 4.3566 ++ * described above. 4.3567 ++ */ 4.3568 ++#define MATCH_LEN_MAX (MATCH_LEN_MIN + LEN_SYMBOLS - 1) 4.3569 ++ 4.3570 ++/* 4.3571 ++ * Different sets of probabilities are used for match distances that have 4.3572 ++ * very short match length: Lengths of 2, 3, and 4 bytes have a separate 4.3573 ++ * set of probabilities for each length. The matches with longer length 4.3574 ++ * use a shared set of probabilities. 4.3575 ++ */ 4.3576 ++#define DIST_STATES 4 4.3577 ++ 4.3578 ++/* 4.3579 ++ * Get the index of the appropriate probability array for decoding 4.3580 ++ * the distance slot. 4.3581 ++ */ 4.3582 ++static inline uint32_t lzma_get_dist_state(uint32_t len) 4.3583 ++{ 4.3584 ++ return len < DIST_STATES + MATCH_LEN_MIN 4.3585 ++ ? len - MATCH_LEN_MIN : DIST_STATES - 1; 4.3586 ++} 4.3587 ++ 4.3588 ++/* 4.3589 ++ * The highest two bits of a 32-bit match distance are encoded using six bits. 4.3590 ++ * This six-bit value is called a distance slot. This way encoding a 32-bit 4.3591 ++ * value takes 6-36 bits, larger values taking more bits. 4.3592 ++ */ 4.3593 ++#define DIST_SLOT_BITS 6 4.3594 ++#define DIST_SLOTS (1 << DIST_SLOT_BITS) 4.3595 ++ 4.3596 ++/* Match distances up to 127 are fully encoded using probabilities. Since 4.3597 ++ * the highest two bits (distance slot) are always encoded using six bits, 4.3598 ++ * the distances 0-3 don't need any additional bits to encode, since the 4.3599 ++ * distance slot itself is the same as the actual distance. DIST_MODEL_START 4.3600 ++ * indicates the first distance slot where at least one additional bit is 4.3601 ++ * needed. 4.3602 ++ */ 4.3603 ++#define DIST_MODEL_START 4 4.3604 ++ 4.3605 ++/* 4.3606 ++ * Match distances greater than 127 are encoded in three pieces: 4.3607 ++ * - distance slot: the highest two bits 4.3608 ++ * - direct bits: 2-26 bits below the highest two bits 4.3609 ++ * - alignment bits: four lowest bits 4.3610 ++ * 4.3611 ++ * Direct bits don't use any probabilities. 4.3612 ++ * 4.3613 ++ * The distance slot value of 14 is for distances 128-191. 4.3614 ++ */ 4.3615 ++#define DIST_MODEL_END 14 4.3616 ++ 4.3617 ++/* Distance slots that indicate a distance <= 127. */ 4.3618 ++#define FULL_DISTANCES_BITS (DIST_MODEL_END / 2) 4.3619 ++#define FULL_DISTANCES (1 << FULL_DISTANCES_BITS) 4.3620 ++ 4.3621 ++/* 4.3622 ++ * For match distances greater than 127, only the highest two bits and the 4.3623 ++ * lowest four bits (alignment) is encoded using probabilities. 4.3624 ++ */ 4.3625 ++#define ALIGN_BITS 4 4.3626 ++#define ALIGN_SIZE (1 << ALIGN_BITS) 4.3627 ++#define ALIGN_MASK (ALIGN_SIZE - 1) 4.3628 ++ 4.3629 ++/* Total number of all probability variables */ 4.3630 ++#define PROBS_TOTAL (1846 + LITERAL_CODERS_MAX * LITERAL_CODER_SIZE) 4.3631 ++ 4.3632 ++/* 4.3633 ++ * LZMA remembers the four most recent match distances. Reusing these 4.3634 ++ * distances tends to take less space than re-encoding the actual 4.3635 ++ * distance value. 4.3636 ++ */ 4.3637 ++#define REPS 4 4.3638 ++ 4.3639 ++#endif 4.3640 +diff --git a/lib/xz/xz_private.h b/lib/xz/xz_private.h 4.3641 +new file mode 100644 4.3642 +index 0000000..a65633e 4.3643 +--- /dev/null 4.3644 ++++ b/lib/xz/xz_private.h 4.3645 +@@ -0,0 +1,156 @@ 4.3646 ++/* 4.3647 ++ * Private includes and definitions 4.3648 ++ * 4.3649 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 4.3650 ++ * 4.3651 ++ * This file has been put into the public domain. 4.3652 ++ * You can do whatever you want with this file. 4.3653 ++ */ 4.3654 ++ 4.3655 ++#ifndef XZ_PRIVATE_H 4.3656 ++#define XZ_PRIVATE_H 4.3657 ++ 4.3658 ++#ifdef __KERNEL__ 4.3659 ++# include <linux/xz.h> 4.3660 ++# include <asm/byteorder.h> 4.3661 ++# include <asm/unaligned.h> 4.3662 ++ /* XZ_PREBOOT may be defined only via decompress_unxz.c. */ 4.3663 ++# ifndef XZ_PREBOOT 4.3664 ++# include <linux/slab.h> 4.3665 ++# include <linux/vmalloc.h> 4.3666 ++# include <linux/string.h> 4.3667 ++# ifdef CONFIG_XZ_DEC_X86 4.3668 ++# define XZ_DEC_X86 4.3669 ++# endif 4.3670 ++# ifdef CONFIG_XZ_DEC_POWERPC 4.3671 ++# define XZ_DEC_POWERPC 4.3672 ++# endif 4.3673 ++# ifdef CONFIG_XZ_DEC_IA64 4.3674 ++# define XZ_DEC_IA64 4.3675 ++# endif 4.3676 ++# ifdef CONFIG_XZ_DEC_ARM 4.3677 ++# define XZ_DEC_ARM 4.3678 ++# endif 4.3679 ++# ifdef CONFIG_XZ_DEC_ARMTHUMB 4.3680 ++# define XZ_DEC_ARMTHUMB 4.3681 ++# endif 4.3682 ++# ifdef CONFIG_XZ_DEC_SPARC 4.3683 ++# define XZ_DEC_SPARC 4.3684 ++# endif 4.3685 ++# define memeq(a, b, size) (memcmp(a, b, size) == 0) 4.3686 ++# define memzero(buf, size) memset(buf, 0, size) 4.3687 ++# endif 4.3688 ++# define get_le32(p) le32_to_cpup((const uint32_t *)(p)) 4.3689 ++#else 4.3690 ++ /* 4.3691 ++ * For userspace builds, use a separate header to define the required 4.3692 ++ * macros and functions. This makes it easier to adapt the code into 4.3693 ++ * different environments and avoids clutter in the Linux kernel tree. 4.3694 ++ */ 4.3695 ++# include "xz_config.h" 4.3696 ++#endif 4.3697 ++ 4.3698 ++/* If no specific decoding mode is requested, enable support for all modes. */ 4.3699 ++#if !defined(XZ_DEC_SINGLE) && !defined(XZ_DEC_PREALLOC) \ 4.3700 ++ && !defined(XZ_DEC_DYNALLOC) 4.3701 ++# define XZ_DEC_SINGLE 4.3702 ++# define XZ_DEC_PREALLOC 4.3703 ++# define XZ_DEC_DYNALLOC 4.3704 ++#endif 4.3705 ++ 4.3706 ++/* 4.3707 ++ * The DEC_IS_foo(mode) macros are used in "if" statements. If only some 4.3708 ++ * of the supported modes are enabled, these macros will evaluate to true or 4.3709 ++ * false at compile time and thus allow the compiler to omit unneeded code. 4.3710 ++ */ 4.3711 ++#ifdef XZ_DEC_SINGLE 4.3712 ++# define DEC_IS_SINGLE(mode) ((mode) == XZ_SINGLE) 4.3713 ++#else 4.3714 ++# define DEC_IS_SINGLE(mode) (false) 4.3715 ++#endif 4.3716 ++ 4.3717 ++#ifdef XZ_DEC_PREALLOC 4.3718 ++# define DEC_IS_PREALLOC(mode) ((mode) == XZ_PREALLOC) 4.3719 ++#else 4.3720 ++# define DEC_IS_PREALLOC(mode) (false) 4.3721 ++#endif 4.3722 ++ 4.3723 ++#ifdef XZ_DEC_DYNALLOC 4.3724 ++# define DEC_IS_DYNALLOC(mode) ((mode) == XZ_DYNALLOC) 4.3725 ++#else 4.3726 ++# define DEC_IS_DYNALLOC(mode) (false) 4.3727 ++#endif 4.3728 ++ 4.3729 ++#if !defined(XZ_DEC_SINGLE) 4.3730 ++# define DEC_IS_MULTI(mode) (true) 4.3731 ++#elif defined(XZ_DEC_PREALLOC) || defined(XZ_DEC_DYNALLOC) 4.3732 ++# define DEC_IS_MULTI(mode) ((mode) != XZ_SINGLE) 4.3733 ++#else 4.3734 ++# define DEC_IS_MULTI(mode) (false) 4.3735 ++#endif 4.3736 ++ 4.3737 ++/* 4.3738 ++ * If any of the BCJ filter decoders are wanted, define XZ_DEC_BCJ. 4.3739 ++ * XZ_DEC_BCJ is used to enable generic support for BCJ decoders. 4.3740 ++ */ 4.3741 ++#ifndef XZ_DEC_BCJ 4.3742 ++# if defined(XZ_DEC_X86) || defined(XZ_DEC_POWERPC) \ 4.3743 ++ || defined(XZ_DEC_IA64) || defined(XZ_DEC_ARM) \ 4.3744 ++ || defined(XZ_DEC_ARM) || defined(XZ_DEC_ARMTHUMB) \ 4.3745 ++ || defined(XZ_DEC_SPARC) 4.3746 ++# define XZ_DEC_BCJ 4.3747 ++# endif 4.3748 ++#endif 4.3749 ++ 4.3750 ++/* 4.3751 ++ * Allocate memory for LZMA2 decoder. xz_dec_lzma2_reset() must be used 4.3752 ++ * before calling xz_dec_lzma2_run(). 4.3753 ++ */ 4.3754 ++XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, 4.3755 ++ uint32_t dict_max); 4.3756 ++ 4.3757 ++/* 4.3758 ++ * Decode the LZMA2 properties (one byte) and reset the decoder. Return 4.3759 ++ * XZ_OK on success, XZ_MEMLIMIT_ERROR if the preallocated dictionary is not 4.3760 ++ * big enough, and XZ_OPTIONS_ERROR if props indicates something that this 4.3761 ++ * decoder doesn't support. 4.3762 ++ */ 4.3763 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, 4.3764 ++ uint8_t props); 4.3765 ++ 4.3766 ++/* Decode raw LZMA2 stream from b->in to b->out. */ 4.3767 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, 4.3768 ++ struct xz_buf *b); 4.3769 ++ 4.3770 ++/* Free the memory allocated for the LZMA2 decoder. */ 4.3771 ++XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s); 4.3772 ++ 4.3773 ++#ifdef XZ_DEC_BCJ 4.3774 ++/* 4.3775 ++ * Allocate memory for BCJ decoders. xz_dec_bcj_reset() must be used before 4.3776 ++ * calling xz_dec_bcj_run(). 4.3777 ++ */ 4.3778 ++XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call); 4.3779 ++ 4.3780 ++/* 4.3781 ++ * Decode the Filter ID of a BCJ filter. This implementation doesn't 4.3782 ++ * support custom start offsets, so no decoding of Filter Properties 4.3783 ++ * is needed. Returns XZ_OK if the given Filter ID is supported. 4.3784 ++ * Otherwise XZ_OPTIONS_ERROR is returned. 4.3785 ++ */ 4.3786 ++XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id); 4.3787 ++ 4.3788 ++/* 4.3789 ++ * Decode raw BCJ + LZMA2 stream. This must be used only if there actually is 4.3790 ++ * a BCJ filter in the chain. If the chain has only LZMA2, xz_dec_lzma2_run() 4.3791 ++ * must be called directly. 4.3792 ++ */ 4.3793 ++XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, 4.3794 ++ struct xz_dec_lzma2 *lzma2, 4.3795 ++ struct xz_buf *b); 4.3796 ++ 4.3797 ++/* Free the memory allocated for the BCJ filters. */ 4.3798 ++#define xz_dec_bcj_end(s) kfree(s) 4.3799 ++#endif 4.3800 ++ 4.3801 ++#endif 4.3802 +diff --git a/lib/xz/xz_stream.h b/lib/xz/xz_stream.h 4.3803 +new file mode 100644 4.3804 +index 0000000..66cb5a7 4.3805 +--- /dev/null 4.3806 ++++ b/lib/xz/xz_stream.h 4.3807 +@@ -0,0 +1,62 @@ 4.3808 ++/* 4.3809 ++ * Definitions for handling the .xz file format 4.3810 ++ * 4.3811 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 4.3812 ++ * 4.3813 ++ * This file has been put into the public domain. 4.3814 ++ * You can do whatever you want with this file. 4.3815 ++ */ 4.3816 ++ 4.3817 ++#ifndef XZ_STREAM_H 4.3818 ++#define XZ_STREAM_H 4.3819 ++ 4.3820 ++#if defined(__KERNEL__) && !XZ_INTERNAL_CRC32 4.3821 ++# include <linux/crc32.h> 4.3822 ++# undef crc32 4.3823 ++# define xz_crc32(buf, size, crc) \ 4.3824 ++ (~crc32_le(~(uint32_t)(crc), buf, size)) 4.3825 ++#endif 4.3826 ++ 4.3827 ++/* 4.3828 ++ * See the .xz file format specification at 4.3829 ++ * http://tukaani.org/xz/xz-file-format.txt 4.3830 ++ * to understand the container format. 4.3831 ++ */ 4.3832 ++ 4.3833 ++#define STREAM_HEADER_SIZE 12 4.3834 ++ 4.3835 ++#define HEADER_MAGIC "\3757zXZ" 4.3836 ++#define HEADER_MAGIC_SIZE 6 4.3837 ++ 4.3838 ++#define FOOTER_MAGIC "YZ" 4.3839 ++#define FOOTER_MAGIC_SIZE 2 4.3840 ++ 4.3841 ++/* 4.3842 ++ * Variable-length integer can hold a 63-bit unsigned integer or a special 4.3843 ++ * value indicating that the value is unknown. 4.3844 ++ * 4.3845 ++ * Experimental: vli_type can be defined to uint32_t to save a few bytes 4.3846 ++ * in code size (no effect on speed). Doing so limits the uncompressed and 4.3847 ++ * compressed size of the file to less than 256 MiB and may also weaken 4.3848 ++ * error detection slightly. 4.3849 ++ */ 4.3850 ++typedef uint64_t vli_type; 4.3851 ++ 4.3852 ++#define VLI_MAX ((vli_type)-1 / 2) 4.3853 ++#define VLI_UNKNOWN ((vli_type)-1) 4.3854 ++ 4.3855 ++/* Maximum encoded size of a VLI */ 4.3856 ++#define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7) 4.3857 ++ 4.3858 ++/* Integrity Check types */ 4.3859 ++enum xz_check { 4.3860 ++ XZ_CHECK_NONE = 0, 4.3861 ++ XZ_CHECK_CRC32 = 1, 4.3862 ++ XZ_CHECK_CRC64 = 4, 4.3863 ++ XZ_CHECK_SHA256 = 10 4.3864 ++}; 4.3865 ++ 4.3866 ++/* Maximum possible Check ID */ 4.3867 ++#define XZ_CHECK_MAX 15 4.3868 ++ 4.3869 ++#endif 4.3870 +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib 4.3871 +index 54fd1b7..b862007 100644 4.3872 +--- a/scripts/Makefile.lib 4.3873 ++++ b/scripts/Makefile.lib 4.3874 +@@ -246,6 +246,34 @@ cmd_lzo = (cat $(filter-out FORCE,$^) | \ 4.3875 + lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 4.3876 + (rm -f $@ ; false) 4.3877 + 4.3878 ++# XZ 4.3879 ++# --------------------------------------------------------------------------- 4.3880 ++# Use xzkern to compress the kernel image and xzmisc to compress other things. 4.3881 ++# 4.3882 ++# xzkern uses a big LZMA2 dictionary since it doesn't increase memory usage 4.3883 ++# of the kernel decompressor. A BCJ filter is used if it is available for 4.3884 ++# the target architecture. xzkern also appends uncompressed size of the data 4.3885 ++# using size_append. The .xz format has the size information available at 4.3886 ++# the end of the file too, but it's in more complex format and it's good to 4.3887 ++# avoid changing the part of the boot code that reads the uncompressed size. 4.3888 ++# Note that the bytes added by size_append will make the xz tool think that 4.3889 ++# the file is corrupt. This is expected. 4.3890 ++# 4.3891 ++# xzmisc doesn't use size_append, so it can be used to create normal .xz 4.3892 ++# files. xzmisc uses smaller LZMA2 dictionary than xzkern, because a very 4.3893 ++# big dictionary would increase the memory usage too much in the multi-call 4.3894 ++# decompression mode. A BCJ filter isn't used either. 4.3895 ++quiet_cmd_xzkern = XZKERN $@ 4.3896 ++cmd_xzkern = (cat $(filter-out FORCE,$^) | \ 4.3897 ++ sh $(srctree)/scripts/xz_wrap.sh && \ 4.3898 ++ $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 4.3899 ++ (rm -f $@ ; false) 4.3900 ++ 4.3901 ++quiet_cmd_xzmisc = XZMISC $@ 4.3902 ++cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ 4.3903 ++ xz --check=crc32 --lzma2=dict=1MiB) > $@ || \ 4.3904 ++ (rm -f $@ ; false) 4.3905 ++ 4.3906 + # misc stuff 4.3907 + # --------------------------------------------------------------------------- 4.3908 + quote:=" 4.3909 +diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh 4.3910 +new file mode 100644 4.3911 +index 0000000..17a5798 4.3912 +--- /dev/null 4.3913 ++++ b/scripts/xz_wrap.sh 4.3914 +@@ -0,0 +1,23 @@ 4.3915 ++#!/bin/sh 4.3916 ++# 4.3917 ++# This is a wrapper for xz to compress the kernel image using appropriate 4.3918 ++# compression options depending on the architecture. 4.3919 ++# 4.3920 ++# Author: Lasse Collin <lasse.collin@tukaani.org> 4.3921 ++# 4.3922 ++# This file has been put into the public domain. 4.3923 ++# You can do whatever you want with this file. 4.3924 ++# 4.3925 ++ 4.3926 ++BCJ= 4.3927 ++LZMA2OPTS= 4.3928 ++ 4.3929 ++case $ARCH in 4.3930 ++ x86|x86_64) BCJ=--x86 ;; 4.3931 ++ powerpc) BCJ=--powerpc ;; 4.3932 ++ ia64) BCJ=--ia64; LZMA2OPTS=pb=4 ;; 4.3933 ++ arm) BCJ=--arm ;; 4.3934 ++ sparc) BCJ=--sparc ;; 4.3935 ++esac 4.3936 ++ 4.3937 ++exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/kernel-modular/stuff/002-squashfs-decompressors-add-boot-time-xz-support.patch Tue Feb 01 09:37:33 2011 +0100 5.3 @@ -0,0 +1,638 @@ 5.4 +From: Lasse Collin <lasse.collin@tukaani.org> 5.5 +Date: Thu, 2 Dec 2010 19:14:37 +0000 (+0200) 5.6 +Subject: Decompressors: Add boot-time XZ support 5.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=c64bc9a229b46db75d7761601dd8ca25385a7780 5.8 + 5.9 +Decompressors: Add boot-time XZ support 5.10 + 5.11 +This implements the API defined in <linux/decompress/generic.h> 5.12 +which is used for kernel, initramfs, and initrd decompression. 5.13 +This patch together with the first patch is enough for 5.14 +XZ-compressed initramfs and initrd; XZ-compressed kernel will 5.15 +need arch-specific changes. 5.16 + 5.17 +In contrast to other initramfs compression methods, support for 5.18 +XZ-compressed initramfs is not enabled by default in usr/Kconfig. 5.19 +This is primarily due to the Kconfig options of the xz_dec 5.20 +module. It can be good to require that xz_dec is enabled 5.21 +separately so the user can select only the BCJ filters he needs 5.22 +when EMBEDDED=y. 5.23 + 5.24 +The buffering requirements described in decompress_unxz.c are 5.25 +stricter than with gzip, so the relevant changes should be done 5.26 +to the arch-specific code when adding support for XZ-compressed 5.27 +kernel. Similarly, the heap size in arch-specific pre-boot code 5.28 +may need to be increased (30 KiB is enough). 5.29 + 5.30 +The XZ decompressor needs memmove(), memeq() (memcmp() == 0), 5.31 +and memzero() (memset(ptr, 0, size)), which aren't available in 5.32 +all arch-specific pre-boot environments. I'm including simple 5.33 +versions in decompress_unxz.c, but a cleaner solution would 5.34 +naturally be nicer. 5.35 + 5.36 +Signed-off-by: Lasse Collin <lasse.collin@tukaani.org> 5.37 +--- 5.38 + 5.39 +diff --git a/include/linux/decompress/unxz.h b/include/linux/decompress/unxz.h 5.40 +new file mode 100644 5.41 +index 0000000..41728fc 5.42 +--- /dev/null 5.43 ++++ b/include/linux/decompress/unxz.h 5.44 +@@ -0,0 +1,19 @@ 5.45 ++/* 5.46 ++ * Wrapper for decompressing XZ-compressed kernel, initramfs, and initrd 5.47 ++ * 5.48 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 5.49 ++ * 5.50 ++ * This file has been put into the public domain. 5.51 ++ * You can do whatever you want with this file. 5.52 ++ */ 5.53 ++ 5.54 ++#ifndef DECOMPRESS_UNXZ_H 5.55 ++#define DECOMPRESS_UNXZ_H 5.56 ++ 5.57 ++int unxz(unsigned char *in, int in_size, 5.58 ++ int (*fill)(void *dest, unsigned int size), 5.59 ++ int (*flush)(void *src, unsigned int size), 5.60 ++ unsigned char *out, int *in_used, 5.61 ++ void (*error)(char *x)); 5.62 ++ 5.63 ++#endif 5.64 +diff --git a/init/Kconfig b/init/Kconfig 5.65 +index 2de5b1c..d9fbb0f 100644 5.66 +--- a/init/Kconfig 5.67 ++++ b/init/Kconfig 5.68 +@@ -123,13 +123,16 @@ config HAVE_KERNEL_BZIP2 5.69 + config HAVE_KERNEL_LZMA 5.70 + bool 5.71 + 5.72 ++config HAVE_KERNEL_XZ 5.73 ++ bool 5.74 ++ 5.75 + config HAVE_KERNEL_LZO 5.76 + bool 5.77 + 5.78 + choice 5.79 + prompt "Kernel compression mode" 5.80 + default KERNEL_GZIP 5.81 +- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO 5.82 ++ depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO 5.83 + help 5.84 + The linux kernel is a kind of self-extracting executable. 5.85 + Several compression algorithms are available, which differ 5.86 +@@ -174,6 +177,21 @@ config KERNEL_LZMA 5.87 + two. Compression is slowest. The kernel size is about 33% 5.88 + smaller with LZMA in comparison to gzip. 5.89 + 5.90 ++config KERNEL_XZ 5.91 ++ bool "XZ" 5.92 ++ depends on HAVE_KERNEL_XZ 5.93 ++ help 5.94 ++ XZ uses the LZMA2 algorithm and instruction set specific 5.95 ++ BCJ filters which can improve compression ratio of executable 5.96 ++ code. The size of the kernel is about 30% smaller with XZ in 5.97 ++ comparison to gzip. On architectures for which there is a BCJ 5.98 ++ filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ 5.99 ++ will create a few percent smaller kernel than plain LZMA. 5.100 ++ 5.101 ++ The speed is about the same as with LZMA: The decompression 5.102 ++ speed of XZ is better than that of bzip2 but worse than gzip 5.103 ++ and LZO. Compression is slow. 5.104 ++ 5.105 + config KERNEL_LZO 5.106 + bool "LZO" 5.107 + depends on HAVE_KERNEL_LZO 5.108 +diff --git a/lib/Kconfig b/lib/Kconfig 5.109 +index 6090314..45960e1 100644 5.110 +--- a/lib/Kconfig 5.111 ++++ b/lib/Kconfig 5.112 +@@ -122,6 +122,9 @@ config DECOMPRESS_BZIP2 5.113 + config DECOMPRESS_LZMA 5.114 + tristate 5.115 + 5.116 ++config DECOMPRESS_XZ 5.117 ++ tristate 5.118 ++ 5.119 + config DECOMPRESS_LZO 5.120 + select LZO_DECOMPRESS 5.121 + tristate 5.122 +diff --git a/lib/Makefile b/lib/Makefile 5.123 +index f2f98dd..06e3d8a 100644 5.124 +--- a/lib/Makefile 5.125 ++++ b/lib/Makefile 5.126 +@@ -75,6 +75,7 @@ obj-$(CONFIG_RAID6_PQ) += raid6/ 5.127 + lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o 5.128 + lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o 5.129 + lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o 5.130 ++lib-$(CONFIG_DECOMPRESS_XZ) += decompress_unxz.o 5.131 + lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o 5.132 + 5.133 + obj-$(CONFIG_TEXTSEARCH) += textsearch.o 5.134 +diff --git a/lib/decompress.c b/lib/decompress.c 5.135 +index a760681..3d766b7 100644 5.136 +--- a/lib/decompress.c 5.137 ++++ b/lib/decompress.c 5.138 +@@ -8,6 +8,7 @@ 5.139 + 5.140 + #include <linux/decompress/bunzip2.h> 5.141 + #include <linux/decompress/unlzma.h> 5.142 ++#include <linux/decompress/unxz.h> 5.143 + #include <linux/decompress/inflate.h> 5.144 + #include <linux/decompress/unlzo.h> 5.145 + 5.146 +@@ -23,6 +24,9 @@ 5.147 + #ifndef CONFIG_DECOMPRESS_LZMA 5.148 + # define unlzma NULL 5.149 + #endif 5.150 ++#ifndef CONFIG_DECOMPRESS_XZ 5.151 ++# define unxz NULL 5.152 ++#endif 5.153 + #ifndef CONFIG_DECOMPRESS_LZO 5.154 + # define unlzo NULL 5.155 + #endif 5.156 +@@ -36,6 +40,7 @@ static const struct compress_format { 5.157 + { {037, 0236}, "gzip", gunzip }, 5.158 + { {0x42, 0x5a}, "bzip2", bunzip2 }, 5.159 + { {0x5d, 0x00}, "lzma", unlzma }, 5.160 ++ { {0xfd, 0x37}, "xz", unxz }, 5.161 + { {0x89, 0x4c}, "lzo", unlzo }, 5.162 + { {0, 0}, NULL, NULL } 5.163 + }; 5.164 +diff --git a/lib/decompress_unxz.c b/lib/decompress_unxz.c 5.165 +new file mode 100644 5.166 +index 0000000..cecd23d 5.167 +--- /dev/null 5.168 ++++ b/lib/decompress_unxz.c 5.169 +@@ -0,0 +1,397 @@ 5.170 ++/* 5.171 ++ * Wrapper for decompressing XZ-compressed kernel, initramfs, and initrd 5.172 ++ * 5.173 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 5.174 ++ * 5.175 ++ * This file has been put into the public domain. 5.176 ++ * You can do whatever you want with this file. 5.177 ++ */ 5.178 ++ 5.179 ++/* 5.180 ++ * Important notes about in-place decompression 5.181 ++ * 5.182 ++ * At least on x86, the kernel is decompressed in place: the compressed data 5.183 ++ * is placed to the end of the output buffer, and the decompressor overwrites 5.184 ++ * most of the compressed data. There must be enough safety margin to 5.185 ++ * guarantee that the write position is always behind the read position. 5.186 ++ * 5.187 ++ * The safety margin for XZ with LZMA2 or BCJ+LZMA2 is calculated below. 5.188 ++ * Note that the margin with XZ is bigger than with Deflate (gzip)! 5.189 ++ * 5.190 ++ * The worst case for in-place decompression is that the beginning of 5.191 ++ * the file is compressed extremely well, and the rest of the file is 5.192 ++ * uncompressible. Thus, we must look for worst-case expansion when the 5.193 ++ * compressor is encoding uncompressible data. 5.194 ++ * 5.195 ++ * The structure of the .xz file in case of a compresed kernel is as follows. 5.196 ++ * Sizes (as bytes) of the fields are in parenthesis. 5.197 ++ * 5.198 ++ * Stream Header (12) 5.199 ++ * Block Header: 5.200 ++ * Block Header (8-12) 5.201 ++ * Compressed Data (N) 5.202 ++ * Block Padding (0-3) 5.203 ++ * CRC32 (4) 5.204 ++ * Index (8-20) 5.205 ++ * Stream Footer (12) 5.206 ++ * 5.207 ++ * Normally there is exactly one Block, but let's assume that there are 5.208 ++ * 2-4 Blocks just in case. Because Stream Header and also Block Header 5.209 ++ * of the first Block don't make the decompressor produce any uncompressed 5.210 ++ * data, we can ignore them from our calculations. Block Headers of possible 5.211 ++ * additional Blocks have to be taken into account still. With these 5.212 ++ * assumptions, it is safe to assume that the total header overhead is 5.213 ++ * less than 128 bytes. 5.214 ++ * 5.215 ++ * Compressed Data contains LZMA2 or BCJ+LZMA2 encoded data. Since BCJ 5.216 ++ * doesn't change the size of the data, it is enough to calculate the 5.217 ++ * safety margin for LZMA2. 5.218 ++ * 5.219 ++ * LZMA2 stores the data in chunks. Each chunk has a header whose size is 5.220 ++ * a maximum of 6 bytes, but to get round 2^n numbers, let's assume that 5.221 ++ * the maximum chunk header size is 8 bytes. After the chunk header, there 5.222 ++ * may be up to 64 KiB of actual payload in the chunk. Often the payload is 5.223 ++ * quite a bit smaller though; to be safe, let's assume that an average 5.224 ++ * chunk has only 32 KiB of payload. 5.225 ++ * 5.226 ++ * The maximum uncompressed size of the payload is 2 MiB. The minimum 5.227 ++ * uncompressed size of the payload is in practice never less than the 5.228 ++ * payload size itself. The LZMA2 format would allow uncompressed size 5.229 ++ * to be less than the payload size, but no sane compressor creates such 5.230 ++ * files. LZMA2 supports storing uncompressible data in uncompressed form, 5.231 ++ * so there's never a need to create payloads whose uncompressed size is 5.232 ++ * smaller than the compressed size. 5.233 ++ * 5.234 ++ * The assumption, that the uncompressed size of the payload is never 5.235 ++ * smaller than the payload itself, is valid only when talking about 5.236 ++ * the payload as a whole. It is possible that the payload has parts where 5.237 ++ * the decompressor consumes more input than it produces output. Calculating 5.238 ++ * the worst case for this would be tricky. Instead of trying to do that, 5.239 ++ * let's simply make sure that the decompressor never overwrites any bytes 5.240 ++ * of the payload which it is currently reading. 5.241 ++ * 5.242 ++ * Now we have enough information to calculate the safety margin. We need 5.243 ++ * - 128 bytes for the .xz file format headers; 5.244 ++ * - 8 bytes per every 32 KiB of uncompressed size (one LZMA2 chunk header 5.245 ++ * per chunk, each chunk having average payload size of 32 KiB); and 5.246 ++ * - 64 KiB (biggest possible LZMA2 chunk payload size) to make sure that 5.247 ++ * the decompressor never overwrites anything from the LZMA2 chunk 5.248 ++ * payload it is currently reading. 5.249 ++ * 5.250 ++ * We get the following formula: 5.251 ++ * 5.252 ++ * safety_margin = 128 + uncompressed_size * 8 / 32768 + 65536 5.253 ++ * = 128 + (uncompressed_size >> 12) + 65536 5.254 ++ * 5.255 ++ * For comparision, according to arch/x86/boot/compressed/misc.c, the 5.256 ++ * equivalent formula for Deflate is this: 5.257 ++ * 5.258 ++ * safety_margin = 18 + (uncompressed_size >> 12) + 32768 5.259 ++ * 5.260 ++ * Thus, when updating Deflate-only in-place kernel decompressor to 5.261 ++ * support XZ, the fixed overhead has to be increased from 18+32768 bytes 5.262 ++ * to 128+65536 bytes. 5.263 ++ */ 5.264 ++ 5.265 ++/* 5.266 ++ * STATIC is defined to "static" if we are being built for kernel 5.267 ++ * decompression (pre-boot code). <linux/decompress/mm.h> will define 5.268 ++ * STATIC to empty if it wasn't already defined. Since we will need to 5.269 ++ * know later if we are being used for kernel decompression, we define 5.270 ++ * XZ_PREBOOT here. 5.271 ++ */ 5.272 ++#ifdef STATIC 5.273 ++# define XZ_PREBOOT 5.274 ++#endif 5.275 ++#ifdef __KERNEL__ 5.276 ++# include <linux/decompress/mm.h> 5.277 ++#endif 5.278 ++#define XZ_EXTERN STATIC 5.279 ++ 5.280 ++#ifndef XZ_PREBOOT 5.281 ++# include <linux/slab.h> 5.282 ++# include <linux/xz.h> 5.283 ++#else 5.284 ++/* 5.285 ++ * Use the internal CRC32 code instead of kernel's CRC32 module, which 5.286 ++ * is not available in early phase of booting. 5.287 ++ */ 5.288 ++#define XZ_INTERNAL_CRC32 1 5.289 ++ 5.290 ++/* 5.291 ++ * For boot time use, we enable only the BCJ filter of the current 5.292 ++ * architecture or none if no BCJ filter is available for the architecture. 5.293 ++ */ 5.294 ++#ifdef CONFIG_X86 5.295 ++# define XZ_DEC_X86 5.296 ++#endif 5.297 ++#ifdef CONFIG_PPC 5.298 ++# define XZ_DEC_POWERPC 5.299 ++#endif 5.300 ++#ifdef CONFIG_ARM 5.301 ++# define XZ_DEC_ARM 5.302 ++#endif 5.303 ++#ifdef CONFIG_IA64 5.304 ++# define XZ_DEC_IA64 5.305 ++#endif 5.306 ++#ifdef CONFIG_SPARC 5.307 ++# define XZ_DEC_SPARC 5.308 ++#endif 5.309 ++ 5.310 ++/* 5.311 ++ * This will get the basic headers so that memeq() and others 5.312 ++ * can be defined. 5.313 ++ */ 5.314 ++#include "xz/xz_private.h" 5.315 ++ 5.316 ++/* 5.317 ++ * Replace the normal allocation functions with the versions from 5.318 ++ * <linux/decompress/mm.h>. vfree() needs to support vfree(NULL) 5.319 ++ * when XZ_DYNALLOC is used, but the pre-boot free() doesn't support it. 5.320 ++ * Workaround it here because the other decompressors don't need it. 5.321 ++ */ 5.322 ++#undef kmalloc 5.323 ++#undef kfree 5.324 ++#undef vmalloc 5.325 ++#undef vfree 5.326 ++#define kmalloc(size, flags) malloc(size) 5.327 ++#define kfree(ptr) free(ptr) 5.328 ++#define vmalloc(size) malloc(size) 5.329 ++#define vfree(ptr) do { if (ptr != NULL) free(ptr); } while (0) 5.330 ++ 5.331 ++/* 5.332 ++ * FIXME: Not all basic memory functions are provided in architecture-specific 5.333 ++ * files (yet). We define our own versions here for now, but this should be 5.334 ++ * only a temporary solution. 5.335 ++ * 5.336 ++ * memeq and memzero are not used much and any remotely sane implementation 5.337 ++ * is fast enough. memcpy/memmove speed matters in multi-call mode, but 5.338 ++ * the kernel image is decompressed in single-call mode, in which only 5.339 ++ * memcpy speed can matter and only if there is a lot of uncompressible data 5.340 ++ * (LZMA2 stores uncompressible chunks in uncompressed form). Thus, the 5.341 ++ * functions below should just be kept small; it's probably not worth 5.342 ++ * optimizing for speed. 5.343 ++ */ 5.344 ++ 5.345 ++#ifndef memeq 5.346 ++static bool memeq(const void *a, const void *b, size_t size) 5.347 ++{ 5.348 ++ const uint8_t *x = a; 5.349 ++ const uint8_t *y = b; 5.350 ++ size_t i; 5.351 ++ 5.352 ++ for (i = 0; i < size; ++i) 5.353 ++ if (x[i] != y[i]) 5.354 ++ return false; 5.355 ++ 5.356 ++ return true; 5.357 ++} 5.358 ++#endif 5.359 ++ 5.360 ++#ifndef memzero 5.361 ++static void memzero(void *buf, size_t size) 5.362 ++{ 5.363 ++ uint8_t *b = buf; 5.364 ++ uint8_t *e = b + size; 5.365 ++ 5.366 ++ while (b != e) 5.367 ++ *b++ = '\0'; 5.368 ++} 5.369 ++#endif 5.370 ++ 5.371 ++#ifndef memmove 5.372 ++/* Not static to avoid a conflict with the prototype in the Linux headers. */ 5.373 ++void *memmove(void *dest, const void *src, size_t size) 5.374 ++{ 5.375 ++ uint8_t *d = dest; 5.376 ++ const uint8_t *s = src; 5.377 ++ size_t i; 5.378 ++ 5.379 ++ if (d < s) { 5.380 ++ for (i = 0; i < size; ++i) 5.381 ++ d[i] = s[i]; 5.382 ++ } else if (d > s) { 5.383 ++ i = size; 5.384 ++ while (i-- > 0) 5.385 ++ d[i] = s[i]; 5.386 ++ } 5.387 ++ 5.388 ++ return dest; 5.389 ++} 5.390 ++#endif 5.391 ++ 5.392 ++/* 5.393 ++ * Since we need memmove anyway, would use it as memcpy too. 5.394 ++ * Commented out for now to avoid breaking things. 5.395 ++ */ 5.396 ++/* 5.397 ++#ifndef memcpy 5.398 ++# define memcpy memmove 5.399 ++#endif 5.400 ++*/ 5.401 ++ 5.402 ++#include "xz/xz_crc32.c" 5.403 ++#include "xz/xz_dec_stream.c" 5.404 ++#include "xz/xz_dec_lzma2.c" 5.405 ++#include "xz/xz_dec_bcj.c" 5.406 ++ 5.407 ++#endif /* XZ_PREBOOT */ 5.408 ++ 5.409 ++/* Size of the input and output buffers in multi-call mode */ 5.410 ++#define XZ_IOBUF_SIZE 4096 5.411 ++ 5.412 ++/* 5.413 ++ * This function implements the API defined in <linux/decompress/generic.h>. 5.414 ++ * 5.415 ++ * This wrapper will automatically choose single-call or multi-call mode 5.416 ++ * of the native XZ decoder API. The single-call mode can be used only when 5.417 ++ * both input and output buffers are available as a single chunk, i.e. when 5.418 ++ * fill() and flush() won't be used. 5.419 ++ */ 5.420 ++STATIC int INIT unxz(unsigned char *in, int in_size, 5.421 ++ int (*fill)(void *dest, unsigned int size), 5.422 ++ int (*flush)(void *src, unsigned int size), 5.423 ++ unsigned char *out, int *in_used, 5.424 ++ void (*error)(char *x)) 5.425 ++{ 5.426 ++ struct xz_buf b; 5.427 ++ struct xz_dec *s; 5.428 ++ enum xz_ret ret; 5.429 ++ bool must_free_in = false; 5.430 ++ 5.431 ++#if XZ_INTERNAL_CRC32 5.432 ++ xz_crc32_init(); 5.433 ++#endif 5.434 ++ 5.435 ++ if (in_used != NULL) 5.436 ++ *in_used = 0; 5.437 ++ 5.438 ++ if (fill == NULL && flush == NULL) 5.439 ++ s = xz_dec_init(XZ_SINGLE, 0); 5.440 ++ else 5.441 ++ s = xz_dec_init(XZ_DYNALLOC, (uint32_t)-1); 5.442 ++ 5.443 ++ if (s == NULL) 5.444 ++ goto error_alloc_state; 5.445 ++ 5.446 ++ if (flush == NULL) { 5.447 ++ b.out = out; 5.448 ++ b.out_size = (size_t)-1; 5.449 ++ } else { 5.450 ++ b.out_size = XZ_IOBUF_SIZE; 5.451 ++ b.out = malloc(XZ_IOBUF_SIZE); 5.452 ++ if (b.out == NULL) 5.453 ++ goto error_alloc_out; 5.454 ++ } 5.455 ++ 5.456 ++ if (in == NULL) { 5.457 ++ must_free_in = true; 5.458 ++ in = malloc(XZ_IOBUF_SIZE); 5.459 ++ if (in == NULL) 5.460 ++ goto error_alloc_in; 5.461 ++ } 5.462 ++ 5.463 ++ b.in = in; 5.464 ++ b.in_pos = 0; 5.465 ++ b.in_size = in_size; 5.466 ++ b.out_pos = 0; 5.467 ++ 5.468 ++ if (fill == NULL && flush == NULL) { 5.469 ++ ret = xz_dec_run(s, &b); 5.470 ++ } else { 5.471 ++ do { 5.472 ++ if (b.in_pos == b.in_size && fill != NULL) { 5.473 ++ if (in_used != NULL) 5.474 ++ *in_used += b.in_pos; 5.475 ++ 5.476 ++ b.in_pos = 0; 5.477 ++ 5.478 ++ in_size = fill(in, XZ_IOBUF_SIZE); 5.479 ++ if (in_size < 0) { 5.480 ++ /* 5.481 ++ * This isn't an optimal error code 5.482 ++ * but it probably isn't worth making 5.483 ++ * a new one either. 5.484 ++ */ 5.485 ++ ret = XZ_BUF_ERROR; 5.486 ++ break; 5.487 ++ } 5.488 ++ 5.489 ++ b.in_size = in_size; 5.490 ++ } 5.491 ++ 5.492 ++ ret = xz_dec_run(s, &b); 5.493 ++ 5.494 ++ if (flush != NULL && (b.out_pos == b.out_size 5.495 ++ || (ret != XZ_OK && b.out_pos > 0))) { 5.496 ++ /* 5.497 ++ * Setting ret here may hide an error 5.498 ++ * returned by xz_dec_run(), but probably 5.499 ++ * it's not too bad. 5.500 ++ */ 5.501 ++ if (flush(b.out, b.out_pos) != (int)b.out_pos) 5.502 ++ ret = XZ_BUF_ERROR; 5.503 ++ 5.504 ++ b.out_pos = 0; 5.505 ++ } 5.506 ++ } while (ret == XZ_OK); 5.507 ++ 5.508 ++ if (must_free_in) 5.509 ++ free(in); 5.510 ++ 5.511 ++ if (flush != NULL) 5.512 ++ free(b.out); 5.513 ++ } 5.514 ++ 5.515 ++ if (in_used != NULL) 5.516 ++ *in_used += b.in_pos; 5.517 ++ 5.518 ++ xz_dec_end(s); 5.519 ++ 5.520 ++ switch (ret) { 5.521 ++ case XZ_STREAM_END: 5.522 ++ return 0; 5.523 ++ 5.524 ++ case XZ_MEM_ERROR: 5.525 ++ /* This can occur only in multi-call mode. */ 5.526 ++ error("XZ decompressor ran out of memory"); 5.527 ++ break; 5.528 ++ 5.529 ++ case XZ_FORMAT_ERROR: 5.530 ++ error("Input is not in the XZ format (wrong magic bytes)"); 5.531 ++ break; 5.532 ++ 5.533 ++ case XZ_OPTIONS_ERROR: 5.534 ++ error("Input was encoded with settings that are not " 5.535 ++ "supported by this XZ decoder"); 5.536 ++ break; 5.537 ++ 5.538 ++ case XZ_DATA_ERROR: 5.539 ++ case XZ_BUF_ERROR: 5.540 ++ error("XZ-compressed data is corrupt"); 5.541 ++ break; 5.542 ++ 5.543 ++ default: 5.544 ++ error("Bug in the XZ decompressor"); 5.545 ++ break; 5.546 ++ } 5.547 ++ 5.548 ++ return -1; 5.549 ++ 5.550 ++error_alloc_in: 5.551 ++ if (flush != NULL) 5.552 ++ free(b.out); 5.553 ++ 5.554 ++error_alloc_out: 5.555 ++ xz_dec_end(s); 5.556 ++ 5.557 ++error_alloc_state: 5.558 ++ error("XZ decompressor ran out of memory"); 5.559 ++ return -1; 5.560 ++} 5.561 ++ 5.562 ++/* 5.563 ++ * This macro is used by architecture-specific files to decompress 5.564 ++ * the kernel image. 5.565 ++ */ 5.566 ++#define decompress unxz 5.567 +diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh 5.568 +index 5958fff..55caecd 100644 5.569 +--- a/scripts/gen_initramfs_list.sh 5.570 ++++ b/scripts/gen_initramfs_list.sh 5.571 +@@ -243,6 +243,8 @@ case "$arg" in 5.572 + echo "$output_file" | grep -q "\.gz$" && compr="gzip -9 -f" 5.573 + echo "$output_file" | grep -q "\.bz2$" && compr="bzip2 -9 -f" 5.574 + echo "$output_file" | grep -q "\.lzma$" && compr="lzma -9 -f" 5.575 ++ echo "$output_file" | grep -q "\.xz$" && \ 5.576 ++ compr="xz --check=crc32 --lzma2=dict=1MiB" 5.577 + echo "$output_file" | grep -q "\.lzo$" && compr="lzop -9 -f" 5.578 + echo "$output_file" | grep -q "\.cpio$" && compr="cat" 5.579 + shift 5.580 +diff --git a/usr/Kconfig b/usr/Kconfig 5.581 +index e2721f5..9f51a29 100644 5.582 +--- a/usr/Kconfig 5.583 ++++ b/usr/Kconfig 5.584 +@@ -72,6 +72,18 @@ config RD_LZMA 5.585 + Support loading of a LZMA encoded initial ramdisk or cpio buffer 5.586 + If unsure, say N. 5.587 + 5.588 ++config RD_XZ 5.589 ++ bool "Support initial ramdisks compressed using XZ" 5.590 ++ depends on BLK_DEV_INITRD && XZ_DEC=y 5.591 ++ select DECOMPRESS_XZ 5.592 ++ help 5.593 ++ Support loading of a XZ encoded initial ramdisk or cpio buffer. 5.594 ++ 5.595 ++ If this option is inactive, say Y to "XZ decompression support" 5.596 ++ under "Library routines" first. 5.597 ++ 5.598 ++ If unsure, say N. 5.599 ++ 5.600 + config RD_LZO 5.601 + bool "Support initial ramdisks compressed using LZO" if EMBEDDED 5.602 + default !EMBEDDED 5.603 +@@ -139,6 +151,15 @@ config INITRAMFS_COMPRESSION_LZMA 5.604 + three. Compression is slowest. The initramfs size is about 33% 5.605 + smaller with LZMA in comparison to gzip. 5.606 + 5.607 ++config INITRAMFS_COMPRESSION_XZ 5.608 ++ bool "XZ" 5.609 ++ depends on RD_XZ 5.610 ++ help 5.611 ++ XZ uses the LZMA2 algorithm. The initramfs size is about 30% 5.612 ++ smaller with XZ in comparison to gzip. Decompression speed 5.613 ++ is better than that of bzip2 but worse than gzip and LZO. 5.614 ++ Compression is slow. 5.615 ++ 5.616 + config INITRAMFS_COMPRESSION_LZO 5.617 + bool "LZO" 5.618 + depends on RD_LZO 5.619 +diff --git a/usr/Makefile b/usr/Makefile 5.620 +index 6b4b6da..5845a13 100644 5.621 +--- a/usr/Makefile 5.622 ++++ b/usr/Makefile 5.623 +@@ -15,6 +15,9 @@ suffix_$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) = .bz2 5.624 + # Lzma 5.625 + suffix_$(CONFIG_INITRAMFS_COMPRESSION_LZMA) = .lzma 5.626 + 5.627 ++# XZ 5.628 ++suffix_$(CONFIG_INITRAMFS_COMPRESSION_XZ) = .xz 5.629 ++ 5.630 + # Lzo 5.631 + suffix_$(CONFIG_INITRAMFS_COMPRESSION_LZO) = .lzo 5.632 + 5.633 +@@ -48,7 +51,7 @@ endif 5.634 + quiet_cmd_initfs = GEN $@ 5.635 + cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input) 5.636 + 5.637 +-targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 initramfs_data.cpio.lzma initramfs_data.cpio.lzo initramfs_data.cpio 5.638 ++targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 initramfs_data.cpio.lzma initramfs_data.cpio.xz initramfs_data.cpio.lzo initramfs_data.cpio 5.639 + # do not try to update files included in initramfs 5.640 + $(deps_initramfs): ; 5.641 +
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/kernel-modular/stuff/003-squashfs-x86-support-xz-compressed-kernel.patch Tue Feb 01 09:37:33 2011 +0100 6.3 @@ -0,0 +1,128 @@ 6.4 +From: Lasse Collin <lasse.collin@tukaani.org> 6.5 +Date: Thu, 2 Dec 2010 19:14:57 +0000 (+0200) 6.6 +Subject: x86: Support XZ-compressed kernel 6.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=d4ad78414e5312126127b1f88cdaf8584af3eef1 6.8 + 6.9 +x86: Support XZ-compressed kernel 6.10 + 6.11 +This integrates the XZ decompression code to the x86 6.12 +pre-boot code. 6.13 + 6.14 +mkpiggy.c is updated to reserve about 32 KiB more buffer safety 6.15 +margin for kernel decompression. It is done unconditionally for 6.16 +all decompressors to keep the code simpler. 6.17 + 6.18 +The XZ decompressor needs around 30 KiB of heap, so the heap size 6.19 +is increased to 32 KiB on both x86-32 and x86-64. 6.20 + 6.21 +Documentation/x86/boot.txt is updated to list the XZ magic number. 6.22 + 6.23 +With the x86 BCJ filter in XZ, XZ-compressed x86 kernel tends to be 6.24 +a few percent smaller than the equivalent LZMA-compressed kernel. 6.25 + 6.26 +Signed-off-by: Lasse Collin <lasse.collin@tukaani.org> 6.27 +--- 6.28 + 6.29 +diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt 6.30 +index 30b43e1..3988cde 100644 6.31 +--- a/Documentation/x86/boot.txt 6.32 ++++ b/Documentation/x86/boot.txt 6.33 +@@ -621,9 +621,9 @@ Protocol: 2.08+ 6.34 + The payload may be compressed. The format of both the compressed and 6.35 + uncompressed data should be determined using the standard magic 6.36 + numbers. The currently supported compression formats are gzip 6.37 +- (magic numbers 1F 8B or 1F 9E), bzip2 (magic number 42 5A) and LZMA 6.38 +- (magic number 5D 00). The uncompressed payload is currently always ELF 6.39 +- (magic number 7F 45 4C 46). 6.40 ++ (magic numbers 1F 8B or 1F 9E), bzip2 (magic number 42 5A), LZMA 6.41 ++ (magic number 5D 00), and XZ (magic number FD 37). The uncompressed 6.42 ++ payload is currently always ELF (magic number 7F 45 4C 46). 6.43 + 6.44 + Field name: payload_length 6.45 + Type: read 6.46 +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig 6.47 +index cea0cd9..f3db0d7 100644 6.48 +--- a/arch/x86/Kconfig 6.49 ++++ b/arch/x86/Kconfig 6.50 +@@ -51,6 +51,7 @@ config X86 6.51 + select HAVE_KERNEL_GZIP 6.52 + select HAVE_KERNEL_BZIP2 6.53 + select HAVE_KERNEL_LZMA 6.54 ++ select HAVE_KERNEL_XZ 6.55 + select HAVE_KERNEL_LZO 6.56 + select HAVE_HW_BREAKPOINT 6.57 + select HAVE_MIXED_BREAKPOINTS_REGS 6.58 +diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile 6.59 +index 0c22955..09664ef 100644 6.60 +--- a/arch/x86/boot/compressed/Makefile 6.61 ++++ b/arch/x86/boot/compressed/Makefile 6.62 +@@ -4,7 +4,7 @@ 6.63 + # create a compressed vmlinux image from the original vmlinux 6.64 + # 6.65 + 6.66 +-targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.lzo head_$(BITS).o misc.o string.o cmdline.o early_serial_console.o piggy.o 6.67 ++targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo head_$(BITS).o misc.o string.o cmdline.o early_serial_console.o piggy.o 6.68 + 6.69 + KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 6.70 + KBUILD_CFLAGS += -fno-strict-aliasing -fPIC 6.71 +@@ -49,12 +49,15 @@ $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE 6.72 + $(call if_changed,bzip2) 6.73 + $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE 6.74 + $(call if_changed,lzma) 6.75 ++$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE 6.76 ++ $(call if_changed,xzkern) 6.77 + $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE 6.78 + $(call if_changed,lzo) 6.79 + 6.80 + suffix-$(CONFIG_KERNEL_GZIP) := gz 6.81 + suffix-$(CONFIG_KERNEL_BZIP2) := bz2 6.82 + suffix-$(CONFIG_KERNEL_LZMA) := lzma 6.83 ++suffix-$(CONFIG_KERNEL_XZ) := xz 6.84 + suffix-$(CONFIG_KERNEL_LZO) := lzo 6.85 + 6.86 + quiet_cmd_mkpiggy = MKPIGGY $@ 6.87 +diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c 6.88 +index 8f7bef8..6d4cab7 100644 6.89 +--- a/arch/x86/boot/compressed/misc.c 6.90 ++++ b/arch/x86/boot/compressed/misc.c 6.91 +@@ -139,6 +139,10 @@ static int lines, cols; 6.92 + #include "../../../../lib/decompress_unlzma.c" 6.93 + #endif 6.94 + 6.95 ++#ifdef CONFIG_KERNEL_XZ 6.96 ++#include "../../../../lib/decompress_unxz.c" 6.97 ++#endif 6.98 ++ 6.99 + #ifdef CONFIG_KERNEL_LZO 6.100 + #include "../../../../lib/decompress_unlzo.c" 6.101 + #endif 6.102 +diff --git a/arch/x86/boot/compressed/mkpiggy.c b/arch/x86/boot/compressed/mkpiggy.c 6.103 +index 5c22812..646aa78 100644 6.104 +--- a/arch/x86/boot/compressed/mkpiggy.c 6.105 ++++ b/arch/x86/boot/compressed/mkpiggy.c 6.106 +@@ -74,7 +74,7 @@ int main(int argc, char *argv[]) 6.107 + 6.108 + offs = (olen > ilen) ? olen - ilen : 0; 6.109 + offs += olen >> 12; /* Add 8 bytes for each 32K block */ 6.110 +- offs += 32*1024 + 18; /* Add 32K + 18 bytes slack */ 6.111 ++ offs += 64*1024 + 128; /* Add 64K + 128 bytes slack */ 6.112 + offs = (offs+4095) & ~4095; /* Round to a 4K boundary */ 6.113 + 6.114 + printf(".section \".rodata..compressed\",\"a\",@progbits\n"); 6.115 +diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h 6.116 +index 3b62ab5..5e1a2ee 100644 6.117 +--- a/arch/x86/include/asm/boot.h 6.118 ++++ b/arch/x86/include/asm/boot.h 6.119 +@@ -32,11 +32,7 @@ 6.120 + #define BOOT_HEAP_SIZE 0x400000 6.121 + #else /* !CONFIG_KERNEL_BZIP2 */ 6.122 + 6.123 +-#ifdef CONFIG_X86_64 6.124 +-#define BOOT_HEAP_SIZE 0x7000 6.125 +-#else 6.126 +-#define BOOT_HEAP_SIZE 0x4000 6.127 +-#endif 6.128 ++#define BOOT_HEAP_SIZE 0x8000 6.129 + 6.130 + #endif /* !CONFIG_KERNEL_BZIP2 */ 6.131 +
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/kernel-modular/stuff/004-squashfs-add-xz-compression-support.patch Tue Feb 01 09:37:33 2011 +0100 7.3 @@ -0,0 +1,183 @@ 7.4 +From: Phillip Lougher <phillip@lougher.demon.co.uk> 7.5 +Date: Thu, 9 Dec 2010 02:02:29 +0000 (+0000) 7.6 +Subject: Squashfs: add XZ compression support 7.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=d3e6969b9ff1f3a3c6bf3da71433c77046aa80e4 7.8 + 7.9 +Squashfs: add XZ compression support 7.10 + 7.11 +Add XZ decompressor wrapper code. 7.12 + 7.13 +Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk> 7.14 +--- 7.15 + 7.16 +diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h 7.17 +index c5137fc..39533fe 100644 7.18 +--- a/fs/squashfs/squashfs_fs.h 7.19 ++++ b/fs/squashfs/squashfs_fs.h 7.20 +@@ -238,6 +238,7 @@ struct meta_index { 7.21 + #define ZLIB_COMPRESSION 1 7.22 + #define LZMA_COMPRESSION 2 7.23 + #define LZO_COMPRESSION 3 7.24 ++#define XZ_COMPRESSION 4 7.25 + 7.26 + struct squashfs_super_block { 7.27 + __le32 s_magic; 7.28 +diff --git a/fs/squashfs/xz_wrapper.c b/fs/squashfs/xz_wrapper.c 7.29 +new file mode 100644 7.30 +index 0000000..053fe35 7.31 +--- /dev/null 7.32 ++++ b/fs/squashfs/xz_wrapper.c 7.33 +@@ -0,0 +1,153 @@ 7.34 ++/* 7.35 ++ * Squashfs - a compressed read only filesystem for Linux 7.36 ++ * 7.37 ++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 7.38 ++ * Phillip Lougher <phillip@lougher.demon.co.uk> 7.39 ++ * 7.40 ++ * This program is free software; you can redistribute it and/or 7.41 ++ * modify it under the terms of the GNU General Public License 7.42 ++ * as published by the Free Software Foundation; either version 2, 7.43 ++ * or (at your option) any later version. 7.44 ++ * 7.45 ++ * This program is distributed in the hope that it will be useful, 7.46 ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of 7.47 ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 7.48 ++ * GNU General Public License for more details. 7.49 ++ * 7.50 ++ * You should have received a copy of the GNU General Public License 7.51 ++ * along with this program; if not, write to the Free Software 7.52 ++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 7.53 ++ * 7.54 ++ * xz_wrapper.c 7.55 ++ */ 7.56 ++ 7.57 ++ 7.58 ++#include <linux/mutex.h> 7.59 ++#include <linux/buffer_head.h> 7.60 ++#include <linux/slab.h> 7.61 ++#include <linux/xz.h> 7.62 ++ 7.63 ++#include "squashfs_fs.h" 7.64 ++#include "squashfs_fs_sb.h" 7.65 ++#include "squashfs_fs_i.h" 7.66 ++#include "squashfs.h" 7.67 ++#include "decompressor.h" 7.68 ++ 7.69 ++struct squashfs_xz { 7.70 ++ struct xz_dec *state; 7.71 ++ struct xz_buf buf; 7.72 ++}; 7.73 ++ 7.74 ++static void *squashfs_xz_init(struct squashfs_sb_info *msblk) 7.75 ++{ 7.76 ++ int block_size = max_t(int, msblk->block_size, SQUASHFS_METADATA_SIZE); 7.77 ++ 7.78 ++ struct squashfs_xz *stream = kmalloc(sizeof(*stream), GFP_KERNEL); 7.79 ++ if (stream == NULL) 7.80 ++ goto failed; 7.81 ++ stream->state = xz_dec_init(XZ_PREALLOC, block_size); 7.82 ++ if (stream->state == NULL) 7.83 ++ goto failed; 7.84 ++ 7.85 ++ return stream; 7.86 ++ 7.87 ++failed: 7.88 ++ ERROR("Failed to allocate xz workspace\n"); 7.89 ++ kfree(stream); 7.90 ++ return NULL; 7.91 ++} 7.92 ++ 7.93 ++ 7.94 ++static void squashfs_xz_free(void *strm) 7.95 ++{ 7.96 ++ struct squashfs_xz *stream = strm; 7.97 ++ 7.98 ++ if (stream) { 7.99 ++ xz_dec_end(stream->state); 7.100 ++ kfree(stream); 7.101 ++ } 7.102 ++} 7.103 ++ 7.104 ++ 7.105 ++static int squashfs_xz_uncompress(struct squashfs_sb_info *msblk, void **buffer, 7.106 ++ struct buffer_head **bh, int b, int offset, int length, int srclength, 7.107 ++ int pages) 7.108 ++{ 7.109 ++ enum xz_ret xz_err; 7.110 ++ int avail, total = 0, k = 0, page = 0; 7.111 ++ struct squashfs_xz *stream = msblk->stream; 7.112 ++ 7.113 ++ mutex_lock(&msblk->read_data_mutex); 7.114 ++ 7.115 ++ xz_dec_reset(stream->state); 7.116 ++ stream->buf.in_pos = 0; 7.117 ++ stream->buf.in_size = 0; 7.118 ++ stream->buf.out_pos = 0; 7.119 ++ stream->buf.out_size = PAGE_CACHE_SIZE; 7.120 ++ stream->buf.out = buffer[page++]; 7.121 ++ 7.122 ++ do { 7.123 ++ if (stream->buf.in_pos == stream->buf.in_size && k < b) { 7.124 ++ avail = min(length, msblk->devblksize - offset); 7.125 ++ length -= avail; 7.126 ++ wait_on_buffer(bh[k]); 7.127 ++ if (!buffer_uptodate(bh[k])) 7.128 ++ goto release_mutex; 7.129 ++ 7.130 ++ if (avail == 0) { 7.131 ++ offset = 0; 7.132 ++ put_bh(bh[k++]); 7.133 ++ continue; 7.134 ++ } 7.135 ++ 7.136 ++ stream->buf.in = bh[k]->b_data + offset; 7.137 ++ stream->buf.in_size = avail; 7.138 ++ stream->buf.in_pos = 0; 7.139 ++ offset = 0; 7.140 ++ } 7.141 ++ 7.142 ++ if (stream->buf.out_pos == stream->buf.out_size 7.143 ++ && page < pages) { 7.144 ++ stream->buf.out = buffer[page++]; 7.145 ++ stream->buf.out_pos = 0; 7.146 ++ total += PAGE_CACHE_SIZE; 7.147 ++ } 7.148 ++ 7.149 ++ xz_err = xz_dec_run(stream->state, &stream->buf); 7.150 ++ 7.151 ++ if (stream->buf.in_pos == stream->buf.in_size && k < b) 7.152 ++ put_bh(bh[k++]); 7.153 ++ } while (xz_err == XZ_OK); 7.154 ++ 7.155 ++ if (xz_err != XZ_STREAM_END) { 7.156 ++ ERROR("xz_dec_run error, data probably corrupt\n"); 7.157 ++ goto release_mutex; 7.158 ++ } 7.159 ++ 7.160 ++ if (k < b) { 7.161 ++ ERROR("xz_uncompress error, input remaining\n"); 7.162 ++ goto release_mutex; 7.163 ++ } 7.164 ++ 7.165 ++ total += stream->buf.out_pos; 7.166 ++ mutex_unlock(&msblk->read_data_mutex); 7.167 ++ return total; 7.168 ++ 7.169 ++release_mutex: 7.170 ++ mutex_unlock(&msblk->read_data_mutex); 7.171 ++ 7.172 ++ for (; k < b; k++) 7.173 ++ put_bh(bh[k]); 7.174 ++ 7.175 ++ return -EIO; 7.176 ++} 7.177 ++ 7.178 ++const struct squashfs_decompressor squashfs_xz_comp_ops = { 7.179 ++ .init = squashfs_xz_init, 7.180 ++ .free = squashfs_xz_free, 7.181 ++ .decompress = squashfs_xz_uncompress, 7.182 ++ .id = XZ_COMPRESSION, 7.183 ++ .name = "xz", 7.184 ++ .supported = 1 7.185 ++}; 7.186 ++
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 8.2 +++ b/kernel-modular/stuff/005-squashfs-add-xz-compression-configuration-option.patch Tue Feb 01 09:37:33 2011 +0100 8.3 @@ -0,0 +1,86 @@ 8.4 +From: Phillip Lougher <phillip@lougher.demon.co.uk> 8.5 +Date: Thu, 9 Dec 2010 02:08:31 +0000 (+0000) 8.6 +Subject: Squashfs: Add XZ compression configuration option 8.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=e23d468968e608de27328888240de27d7582ad52 8.8 + 8.9 +Squashfs: Add XZ compression configuration option 8.10 + 8.11 +Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk> 8.12 +--- 8.13 + 8.14 +diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig 8.15 +index e5f63da..e96d99a 100644 8.16 +--- a/fs/squashfs/Kconfig 8.17 ++++ b/fs/squashfs/Kconfig 8.18 +@@ -53,6 +53,22 @@ config SQUASHFS_LZO 8.19 + 8.20 + If unsure, say N. 8.21 + 8.22 ++config SQUASHFS_XZ 8.23 ++ bool "Include support for XZ compressed file systems" 8.24 ++ depends on SQUASHFS 8.25 ++ default n 8.26 ++ select XZ_DEC 8.27 ++ help 8.28 ++ Saying Y here includes support for reading Squashfs file systems 8.29 ++ compressed with XZ compresssion. XZ gives better compression than 8.30 ++ the default zlib compression, at the expense of greater CPU and 8.31 ++ memory overhead. 8.32 ++ 8.33 ++ XZ is not the standard compression used in Squashfs and so most 8.34 ++ file systems will be readable without selecting this option. 8.35 ++ 8.36 ++ If unsure, say N. 8.37 ++ 8.38 + config SQUASHFS_EMBEDDED 8.39 + bool "Additional option for memory-constrained systems" 8.40 + depends on SQUASHFS 8.41 +diff --git a/fs/squashfs/Makefile b/fs/squashfs/Makefile 8.42 +index 7672bac..cecf2be 100644 8.43 +--- a/fs/squashfs/Makefile 8.44 ++++ b/fs/squashfs/Makefile 8.45 +@@ -7,3 +7,4 @@ squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o 8.46 + squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o 8.47 + squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o 8.48 + squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o 8.49 ++squashfs-$(CONFIG_SQUASHFS_XZ) += xz_wrapper.o 8.50 +diff --git a/fs/squashfs/decompressor.c b/fs/squashfs/decompressor.c 8.51 +index 24af9ce..ac333b8 100644 8.52 +--- a/fs/squashfs/decompressor.c 8.53 ++++ b/fs/squashfs/decompressor.c 8.54 +@@ -46,6 +46,12 @@ static const struct squashfs_decompressor squashfs_lzo_unsupported_comp_ops = { 8.55 + }; 8.56 + #endif 8.57 + 8.58 ++#ifndef CONFIG_SQUASHFS_XZ 8.59 ++static const struct squashfs_decompressor squashfs_xz_unsupported_comp_ops = { 8.60 ++ NULL, NULL, NULL, XZ_COMPRESSION, "xz", 0 8.61 ++}; 8.62 ++#endif 8.63 ++ 8.64 + static const struct squashfs_decompressor squashfs_unknown_comp_ops = { 8.65 + NULL, NULL, NULL, 0, "unknown", 0 8.66 + }; 8.67 +@@ -58,6 +64,11 @@ static const struct squashfs_decompressor *decompressor[] = { 8.68 + #else 8.69 + &squashfs_lzo_unsupported_comp_ops, 8.70 + #endif 8.71 ++#ifdef CONFIG_SQUASHFS_XZ 8.72 ++ &squashfs_xz_comp_ops, 8.73 ++#else 8.74 ++ &squashfs_xz_unsupported_comp_ops, 8.75 ++#endif 8.76 + &squashfs_unknown_comp_ops 8.77 + }; 8.78 + 8.79 +diff --git a/fs/squashfs/squashfs.h b/fs/squashfs/squashfs.h 8.80 +index 5d45569..1096e2e 100644 8.81 +--- a/fs/squashfs/squashfs.h 8.82 ++++ b/fs/squashfs/squashfs.h 8.83 +@@ -107,3 +107,6 @@ extern const struct squashfs_decompressor squashfs_zlib_comp_ops; 8.84 + 8.85 + /* lzo_wrapper.c */ 8.86 + extern const struct squashfs_decompressor squashfs_lzo_comp_ops; 8.87 ++ 8.88 ++/* xz_wrapper.c */ 8.89 ++extern const struct squashfs_decompressor squashfs_xz_comp_ops;
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/kernel-modular/stuff/aufs2-2.6.36-fix.patch Tue Feb 01 09:37:33 2011 +0100 9.3 @@ -0,0 +1,130 @@ 9.4 +diff --git a/fs/file_table.c b/fs/file_table.c 9.5 +index a04bdd8..fbf8908 100644 9.6 +--- a/fs/file_table.c 9.7 ++++ b/fs/file_table.c 9.8 +@@ -20,7 +20,6 @@ 9.9 + #include <linux/cdev.h> 9.10 + #include <linux/fsnotify.h> 9.11 + #include <linux/sysctl.h> 9.12 +-#include <linux/lglock.h> 9.13 + #include <linux/percpu_counter.h> 9.14 + #include <linux/percpu.h> 9.15 + #include <linux/ima.h> 9.16 +@@ -34,7 +33,6 @@ struct files_stat_struct files_stat = { 9.17 + .max_files = NR_FILE 9.18 + }; 9.19 + 9.20 +-DECLARE_LGLOCK(files_lglock); 9.21 + DEFINE_LGLOCK(files_lglock); 9.22 + 9.23 + /* SLAB cache for file structures */ 9.24 +@@ -394,37 +392,6 @@ void file_sb_list_del(struct file *file) 9.25 + } 9.26 + } 9.27 + 9.28 +-#ifdef CONFIG_SMP 9.29 +- 9.30 +-/* 9.31 +- * These macros iterate all files on all CPUs for a given superblock. 9.32 +- * files_lglock must be held globally. 9.33 +- */ 9.34 +-#define do_file_list_for_each_entry(__sb, __file) \ 9.35 +-{ \ 9.36 +- int i; \ 9.37 +- for_each_possible_cpu(i) { \ 9.38 +- struct list_head *list; \ 9.39 +- list = per_cpu_ptr((__sb)->s_files, i); \ 9.40 +- list_for_each_entry((__file), list, f_u.fu_list) 9.41 +- 9.42 +-#define while_file_list_for_each_entry \ 9.43 +- } \ 9.44 +-} 9.45 +- 9.46 +-#else 9.47 +- 9.48 +-#define do_file_list_for_each_entry(__sb, __file) \ 9.49 +-{ \ 9.50 +- struct list_head *list; \ 9.51 +- list = &(sb)->s_files; \ 9.52 +- list_for_each_entry((__file), list, f_u.fu_list) 9.53 +- 9.54 +-#define while_file_list_for_each_entry \ 9.55 +-} 9.56 +- 9.57 +-#endif 9.58 +- 9.59 + int fs_may_remount_ro(struct super_block *sb) 9.60 + { 9.61 + struct file *file; 9.62 +diff --git a/fs/statfs.c b/fs/statfs.c 9.63 +index 30ea8c8..9025c98 100644 9.64 +--- a/fs/statfs.c 9.65 ++++ b/fs/statfs.c 9.66 +@@ -61,6 +61,7 @@ int statfs_by_dentry(struct dentry *dentry, struct kstatfs *buf) 9.67 + buf->f_frsize = buf->f_bsize; 9.68 + return retval; 9.69 + } 9.70 ++EXPORT_SYMBOL(statfs_by_dentry); 9.71 + 9.72 + int vfs_statfs(struct path *path, struct kstatfs *buf) 9.73 + { 9.74 +diff --git a/include/linux/fs.h b/include/linux/fs.h 9.75 +index 63d069b..741d296 100644 9.76 +--- a/include/linux/fs.h 9.77 ++++ b/include/linux/fs.h 9.78 +@@ -9,6 +9,7 @@ 9.79 + #include <linux/limits.h> 9.80 + #include <linux/ioctl.h> 9.81 + #include <linux/blk_types.h> 9.82 ++#include <linux/lglock.h> 9.83 + 9.84 + /* 9.85 + * It's silly to have NR_OPEN bigger than NR_FILE, but you can change 9.86 +@@ -1814,6 +1815,7 @@ extern struct vfsmount *collect_mounts(struct path *); 9.87 + extern void drop_collected_mounts(struct vfsmount *); 9.88 + extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, 9.89 + struct vfsmount *); 9.90 ++extern int statfs_by_dentry(struct dentry *dentry, struct kstatfs *buf); 9.91 + extern int vfs_statfs(struct path *, struct kstatfs *); 9.92 + extern int statfs_by_dentry(struct dentry *, struct kstatfs *); 9.93 + extern int freeze_super(struct super_block *super); 9.94 +@@ -2481,5 +2483,39 @@ int __init get_filesystem_list(char *buf); 9.95 + #define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \ 9.96 + (flag & FMODE_NONOTIFY))) 9.97 + 9.98 ++ 9.99 ++DECLARE_LGLOCK(files_lglock); 9.100 ++ 9.101 ++#ifdef CONFIG_SMP 9.102 ++ 9.103 ++/* 9.104 ++ * These macros iterate all files on all CPUs for a given superblock. 9.105 ++ * files_lglock must be held globally. 9.106 ++ */ 9.107 ++#define do_file_list_for_each_entry(__sb, __file) \ 9.108 ++{ \ 9.109 ++ int i; \ 9.110 ++ for_each_possible_cpu(i) { \ 9.111 ++ struct list_head *list; \ 9.112 ++ list = per_cpu_ptr((__sb)->s_files, i); \ 9.113 ++ list_for_each_entry((__file), list, f_u.fu_list) 9.114 ++ 9.115 ++#define while_file_list_for_each_entry \ 9.116 ++ } \ 9.117 ++} 9.118 ++ 9.119 ++#else 9.120 ++ 9.121 ++#define do_file_list_for_each_entry(__sb, __file) \ 9.122 ++{ \ 9.123 ++ struct list_head *list; \ 9.124 ++ list = &(sb)->s_files; \ 9.125 ++ list_for_each_entry((__file), list, f_u.fu_list) 9.126 ++ 9.127 ++#define while_file_list_for_each_entry \ 9.128 ++} 9.129 ++ 9.130 ++#endif 9.131 ++ 9.132 + #endif /* __KERNEL__ */ 9.133 + #endif /* _LINUX_FS_H */
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/kernel-modular/stuff/aufs2-base.patch Tue Feb 01 09:37:33 2011 +0100 10.3 @@ -0,0 +1,78 @@ 10.4 +aufs2.1 base patch for linux-2.6.37 10.5 + 10.6 +diff --git a/fs/namei.c b/fs/namei.c 10.7 +index 4ff7ca5..a8c583f 100644 10.8 +--- a/fs/namei.c 10.9 ++++ b/fs/namei.c 10.10 +@@ -1161,12 +1161,12 @@ out: 10.11 + * needs parent already locked. Doesn't follow mounts. 10.12 + * SMP-safe. 10.13 + */ 10.14 +-static struct dentry *lookup_hash(struct nameidata *nd) 10.15 ++struct dentry *lookup_hash(struct nameidata *nd) 10.16 + { 10.17 + return __lookup_hash(&nd->last, nd->path.dentry, nd); 10.18 + } 10.19 + 10.20 +-static int __lookup_one_len(const char *name, struct qstr *this, 10.21 ++int __lookup_one_len(const char *name, struct qstr *this, 10.22 + struct dentry *base, int len) 10.23 + { 10.24 + unsigned long hash; 10.25 +diff --git a/fs/splice.c b/fs/splice.c 10.26 +index ce2f025..ff0ae69 100644 10.27 +--- a/fs/splice.c 10.28 ++++ b/fs/splice.c 10.29 +@@ -1092,8 +1092,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); 10.30 + /* 10.31 + * Attempt to initiate a splice from pipe to file. 10.32 + */ 10.33 +-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 10.34 +- loff_t *ppos, size_t len, unsigned int flags) 10.35 ++long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 10.36 ++ loff_t *ppos, size_t len, unsigned int flags) 10.37 + { 10.38 + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, 10.39 + loff_t *, size_t, unsigned int); 10.40 +@@ -1120,9 +1120,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 10.41 + /* 10.42 + * Attempt to initiate a splice from a file to a pipe. 10.43 + */ 10.44 +-static long do_splice_to(struct file *in, loff_t *ppos, 10.45 +- struct pipe_inode_info *pipe, size_t len, 10.46 +- unsigned int flags) 10.47 ++long do_splice_to(struct file *in, loff_t *ppos, 10.48 ++ struct pipe_inode_info *pipe, size_t len, 10.49 ++ unsigned int flags) 10.50 + { 10.51 + ssize_t (*splice_read)(struct file *, loff_t *, 10.52 + struct pipe_inode_info *, size_t, unsigned int); 10.53 +diff --git a/include/linux/namei.h b/include/linux/namei.h 10.54 +index 05b441d..91bc74e 100644 10.55 +--- a/include/linux/namei.h 10.56 ++++ b/include/linux/namei.h 10.57 +@@ -73,6 +73,9 @@ extern int vfs_path_lookup(struct dentry *, struct vfsmount *, 10.58 + extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, 10.59 + int (*open)(struct inode *, struct file *)); 10.60 + 10.61 ++extern struct dentry *lookup_hash(struct nameidata *nd); 10.62 ++extern int __lookup_one_len(const char *name, struct qstr *this, 10.63 ++ struct dentry *base, int len); 10.64 + extern struct dentry *lookup_one_len(const char *, struct dentry *, int); 10.65 + 10.66 + extern int follow_down(struct path *); 10.67 +diff --git a/include/linux/splice.h b/include/linux/splice.h 10.68 +index 997c3b4..be9a153 100644 10.69 +--- a/include/linux/splice.h 10.70 ++++ b/include/linux/splice.h 10.71 +@@ -89,4 +89,10 @@ extern int splice_grow_spd(struct pipe_inode_info *, struct splice_pipe_desc *); 10.72 + extern void splice_shrink_spd(struct pipe_inode_info *, 10.73 + struct splice_pipe_desc *); 10.74 + 10.75 ++extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 10.76 ++ loff_t *ppos, size_t len, unsigned int flags); 10.77 ++extern long do_splice_to(struct file *in, loff_t *ppos, 10.78 ++ struct pipe_inode_info *pipe, size_t len, 10.79 ++ unsigned int flags); 10.80 ++ 10.81 + #endif
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/kernel-modular/stuff/aufs2-kbuild.patch Tue Feb 01 09:37:33 2011 +0100 11.3 @@ -0,0 +1,35 @@ 11.4 +aufs2.1 kbuild patch for linux-2.6.37 11.5 + 11.6 +diff --git a/fs/Kconfig b/fs/Kconfig 11.7 +index 771f457..bb1a52f 100644 11.8 +--- a/fs/Kconfig 11.9 ++++ b/fs/Kconfig 11.10 +@@ -191,6 +191,7 @@ source "fs/romfs/Kconfig" 11.11 + source "fs/sysv/Kconfig" 11.12 + source "fs/ufs/Kconfig" 11.13 + source "fs/exofs/Kconfig" 11.14 ++source "fs/aufs/Kconfig" 11.15 + 11.16 + endif # MISC_FILESYSTEMS 11.17 + 11.18 +diff --git a/fs/Makefile b/fs/Makefile 11.19 +index a7f7cef..95dd4d3 100644 11.20 +--- a/fs/Makefile 11.21 ++++ b/fs/Makefile 11.22 +@@ -121,3 +121,4 @@ obj-$(CONFIG_BTRFS_FS) += btrfs/ 11.23 + obj-$(CONFIG_GFS2_FS) += gfs2/ 11.24 + obj-$(CONFIG_EXOFS_FS) += exofs/ 11.25 + obj-$(CONFIG_CEPH_FS) += ceph/ 11.26 ++obj-$(CONFIG_AUFS_FS) += aufs/ 11.27 +diff --git a/include/linux/Kbuild b/include/linux/Kbuild 11.28 +index 97319a8..7ebb4b4 100644 11.29 +--- a/include/linux/Kbuild 11.30 ++++ b/include/linux/Kbuild 11.31 +@@ -60,6 +60,7 @@ header-y += atmppp.h 11.32 + header-y += atmsap.h 11.33 + header-y += atmsvc.h 11.34 + header-y += audit.h 11.35 ++header-y += aufs_type.h 11.36 + header-y += auto_fs.h 11.37 + header-y += auto_fs4.h 11.38 + header-y += auxvec.h
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/kernel-modular/stuff/aufs2-module-2.6.36.patch Tue Feb 01 09:37:33 2011 +0100 12.3 @@ -0,0 +1,47 @@ 12.4 +diff --git a/ubuntu/aufs/branch.c b/ubuntu/aufs/branch.c 12.5 +index cd4463c..ff6b158 100644 12.6 +--- a/fs/aufs/branch.c 12.7 ++++ b/fs/aufs/branch.c 12.8 +@@ -22,6 +22,8 @@ 12.9 + 12.10 + #include <linux/file.h> 12.11 + #include <linux/statfs.h> 12.12 ++#include <linux/lglock.h> 12.13 ++#include <linux/percpu.h> 12.14 + #include "aufs.h" 12.15 + 12.16 + /* 12.17 +@@ -851,7 +853,8 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 12.18 + goto out; 12.19 + 12.20 + /* no need file_list_lock() since sbinfo is locked? defered? */ 12.21 +- list_for_each_entry(file, &sb->s_files, f_u.fu_list) { 12.22 ++ lg_global_lock(files_lglock); 12.23 ++ do_file_list_for_each_entry(sb, file) { 12.24 + if (special_file(file->f_dentry->d_inode->i_mode)) 12.25 + continue; 12.26 + 12.27 +@@ -861,6 +864,7 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 12.28 + err = -EBUSY; 12.29 + FiMustNoWaiters(file); 12.30 + fi_read_unlock(file); 12.31 ++ lg_global_unlock(files_lglock); 12.32 + goto out_free; 12.33 + } 12.34 + 12.35 +@@ -889,10 +893,13 @@ static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) 12.36 + if (p) { 12.37 + a = p; 12.38 + a[n++] = hf; 12.39 +- } else 12.40 ++ } else { 12.41 ++ lg_global_unlock(files_lglock); 12.42 + goto out_free; 12.43 ++ } 12.44 + } 12.45 +- } 12.46 ++ } while_file_list_for_each_entry; 12.47 ++ lg_global_unlock(files_lglock); 12.48 + 12.49 + err = 0; 12.50 + if (n)
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/kernel-modular/stuff/aufs2-standalone.patch Tue Feb 01 09:37:33 2011 +0100 13.3 @@ -0,0 +1,289 @@ 13.4 +aufs2.1 standalone patch for linux-2.6.37 13.5 + 13.6 +diff --git a/fs/file_table.c b/fs/file_table.c 13.7 +index c3dee38..f529e4d 100644 13.8 +--- a/fs/file_table.c 13.9 ++++ b/fs/file_table.c 13.10 +@@ -393,6 +393,8 @@ void file_sb_list_del(struct file *file) 13.11 + } 13.12 + } 13.13 + 13.14 ++EXPORT_SYMBOL(file_sb_list_del); 13.15 ++ 13.16 + #ifdef CONFIG_SMP 13.17 + 13.18 + /* 13.19 +diff --git a/fs/inode.c b/fs/inode.c 13.20 +index ae2727a..2c8071a 100644 13.21 +--- a/fs/inode.c 13.22 ++++ b/fs/inode.c 13.23 +@@ -82,6 +82,7 @@ static struct hlist_head *inode_hashtable __read_mostly; 13.24 + * the i_state of an inode while it is in use.. 13.25 + */ 13.26 + DEFINE_SPINLOCK(inode_lock); 13.27 ++EXPORT_SYMBOL(inode_lock); 13.28 + 13.29 + /* 13.30 + * iprune_sem provides exclusion between the kswapd or try_to_free_pages 13.31 +diff --git a/fs/namei.c b/fs/namei.c 13.32 +index a8c583f..b020c45 100644 13.33 +--- a/fs/namei.c 13.34 ++++ b/fs/namei.c 13.35 +@@ -347,6 +347,7 @@ int deny_write_access(struct file * file) 13.36 + 13.37 + return 0; 13.38 + } 13.39 ++EXPORT_SYMBOL(deny_write_access); 13.40 + 13.41 + /** 13.42 + * path_get - get a reference to a path 13.43 +@@ -1165,6 +1166,7 @@ struct dentry *lookup_hash(struct nameidata *nd) 13.44 + { 13.45 + return __lookup_hash(&nd->last, nd->path.dentry, nd); 13.46 + } 13.47 ++EXPORT_SYMBOL(lookup_hash); 13.48 + 13.49 + int __lookup_one_len(const char *name, struct qstr *this, 13.50 + struct dentry *base, int len) 13.51 +@@ -1187,6 +1189,7 @@ int __lookup_one_len(const char *name, struct qstr *this, 13.52 + this->hash = end_name_hash(hash); 13.53 + return 0; 13.54 + } 13.55 ++EXPORT_SYMBOL(__lookup_one_len); 13.56 + 13.57 + /** 13.58 + * lookup_one_len - filesystem helper to lookup single pathname component 13.59 +diff --git a/fs/namespace.c b/fs/namespace.c 13.60 +index 3dbfc07..3998762 100644 13.61 +--- a/fs/namespace.c 13.62 ++++ b/fs/namespace.c 13.63 +@@ -1321,6 +1321,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, 13.64 + } 13.65 + return 0; 13.66 + } 13.67 ++EXPORT_SYMBOL(iterate_mounts); 13.68 + 13.69 + static void cleanup_group_ids(struct vfsmount *mnt, struct vfsmount *end) 13.70 + { 13.71 +diff --git a/fs/notify/group.c b/fs/notify/group.c 13.72 +index d309f38..f0e9568 100644 13.73 +--- a/fs/notify/group.c 13.74 ++++ b/fs/notify/group.c 13.75 +@@ -22,6 +22,7 @@ 13.76 + #include <linux/srcu.h> 13.77 + #include <linux/rculist.h> 13.78 + #include <linux/wait.h> 13.79 ++#include <linux/module.h> 13.80 + 13.81 + #include <linux/fsnotify_backend.h> 13.82 + #include "fsnotify.h" 13.83 +@@ -70,6 +71,7 @@ void fsnotify_put_group(struct fsnotify_group *group) 13.84 + if (atomic_dec_and_test(&group->refcnt)) 13.85 + fsnotify_destroy_group(group); 13.86 + } 13.87 ++EXPORT_SYMBOL(fsnotify_put_group); 13.88 + 13.89 + /* 13.90 + * Create a new fsnotify_group and hold a reference for the group returned. 13.91 +@@ -102,3 +104,4 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) 13.92 + 13.93 + return group; 13.94 + } 13.95 ++EXPORT_SYMBOL(fsnotify_alloc_group); 13.96 +diff --git a/fs/notify/mark.c b/fs/notify/mark.c 13.97 +index 325185e..adede09 100644 13.98 +--- a/fs/notify/mark.c 13.99 ++++ b/fs/notify/mark.c 13.100 +@@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) 13.101 + if (atomic_dec_and_test(&mark->refcnt)) 13.102 + mark->free_mark(mark); 13.103 + } 13.104 ++EXPORT_SYMBOL(fsnotify_put_mark); 13.105 + 13.106 + /* 13.107 + * Any time a mark is getting freed we end up here. 13.108 +@@ -190,6 +191,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark) 13.109 + if (unlikely(atomic_dec_and_test(&group->num_marks))) 13.110 + fsnotify_final_destroy_group(group); 13.111 + } 13.112 ++EXPORT_SYMBOL(fsnotify_destroy_mark); 13.113 + 13.114 + void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask) 13.115 + { 13.116 +@@ -277,6 +279,7 @@ err: 13.117 + 13.118 + return ret; 13.119 + } 13.120 ++EXPORT_SYMBOL(fsnotify_add_mark); 13.121 + 13.122 + /* 13.123 + * clear any marks in a group in which mark->flags & flags is true 13.124 +@@ -332,6 +335,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, 13.125 + atomic_set(&mark->refcnt, 1); 13.126 + mark->free_mark = free_mark; 13.127 + } 13.128 ++EXPORT_SYMBOL(fsnotify_init_mark); 13.129 + 13.130 + static int fsnotify_mark_destroy(void *ignored) 13.131 + { 13.132 +diff --git a/fs/open.c b/fs/open.c 13.133 +index 4197b9e..912817a 100644 13.134 +--- a/fs/open.c 13.135 ++++ b/fs/open.c 13.136 +@@ -60,6 +60,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, 13.137 + mutex_unlock(&dentry->d_inode->i_mutex); 13.138 + return ret; 13.139 + } 13.140 ++EXPORT_SYMBOL(do_truncate); 13.141 + 13.142 + static long do_sys_truncate(const char __user *pathname, loff_t length) 13.143 + { 13.144 +diff --git a/fs/splice.c b/fs/splice.c 13.145 +index ff0ae69..1c9e9b0 100644 13.146 +--- a/fs/splice.c 13.147 ++++ b/fs/splice.c 13.148 +@@ -1116,6 +1116,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 13.149 + 13.150 + return splice_write(pipe, out, ppos, len, flags); 13.151 + } 13.152 ++EXPORT_SYMBOL(do_splice_from); 13.153 + 13.154 + /* 13.155 + * Attempt to initiate a splice from a file to a pipe. 13.156 +@@ -1142,6 +1143,7 @@ long do_splice_to(struct file *in, loff_t *ppos, 13.157 + 13.158 + return splice_read(in, ppos, pipe, len, flags); 13.159 + } 13.160 ++EXPORT_SYMBOL(do_splice_to); 13.161 + 13.162 + /** 13.163 + * splice_direct_to_actor - splices data directly between two non-pipes 13.164 +diff --git a/security/commoncap.c b/security/commoncap.c 13.165 +index 64c2ed9..e58b5d8 100644 13.166 +--- a/security/commoncap.c 13.167 ++++ b/security/commoncap.c 13.168 +@@ -929,3 +929,4 @@ int cap_file_mmap(struct file *file, unsigned long reqprot, 13.169 + } 13.170 + return ret; 13.171 + } 13.172 ++EXPORT_SYMBOL(cap_file_mmap); 13.173 +diff --git a/security/device_cgroup.c b/security/device_cgroup.c 13.174 +index 8d9c48f..29108aa 100644 13.175 +--- a/security/device_cgroup.c 13.176 ++++ b/security/device_cgroup.c 13.177 +@@ -515,6 +515,7 @@ found: 13.178 + 13.179 + return -EPERM; 13.180 + } 13.181 ++EXPORT_SYMBOL(devcgroup_inode_permission); 13.182 + 13.183 + int devcgroup_inode_mknod(int mode, dev_t dev) 13.184 + { 13.185 +diff --git a/security/security.c b/security/security.c 13.186 +index 1b798d3..3b7d2ca 100644 13.187 +--- a/security/security.c 13.188 ++++ b/security/security.c 13.189 +@@ -360,6 +360,7 @@ int security_path_mkdir(struct path *dir, struct dentry *dentry, int mode) 13.190 + return 0; 13.191 + return security_ops->path_mkdir(dir, dentry, mode); 13.192 + } 13.193 ++EXPORT_SYMBOL(security_path_mkdir); 13.194 + 13.195 + int security_path_rmdir(struct path *dir, struct dentry *dentry) 13.196 + { 13.197 +@@ -367,6 +368,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) 13.198 + return 0; 13.199 + return security_ops->path_rmdir(dir, dentry); 13.200 + } 13.201 ++EXPORT_SYMBOL(security_path_rmdir); 13.202 + 13.203 + int security_path_unlink(struct path *dir, struct dentry *dentry) 13.204 + { 13.205 +@@ -374,6 +376,7 @@ int security_path_unlink(struct path *dir, struct dentry *dentry) 13.206 + return 0; 13.207 + return security_ops->path_unlink(dir, dentry); 13.208 + } 13.209 ++EXPORT_SYMBOL(security_path_unlink); 13.210 + 13.211 + int security_path_symlink(struct path *dir, struct dentry *dentry, 13.212 + const char *old_name) 13.213 +@@ -382,6 +385,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, 13.214 + return 0; 13.215 + return security_ops->path_symlink(dir, dentry, old_name); 13.216 + } 13.217 ++EXPORT_SYMBOL(security_path_symlink); 13.218 + 13.219 + int security_path_link(struct dentry *old_dentry, struct path *new_dir, 13.220 + struct dentry *new_dentry) 13.221 +@@ -390,6 +394,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, 13.222 + return 0; 13.223 + return security_ops->path_link(old_dentry, new_dir, new_dentry); 13.224 + } 13.225 ++EXPORT_SYMBOL(security_path_link); 13.226 + 13.227 + int security_path_rename(struct path *old_dir, struct dentry *old_dentry, 13.228 + struct path *new_dir, struct dentry *new_dentry) 13.229 +@@ -400,6 +405,7 @@ int security_path_rename(struct path *old_dir, struct dentry *old_dentry, 13.230 + return security_ops->path_rename(old_dir, old_dentry, new_dir, 13.231 + new_dentry); 13.232 + } 13.233 ++EXPORT_SYMBOL(security_path_rename); 13.234 + 13.235 + int security_path_truncate(struct path *path) 13.236 + { 13.237 +@@ -407,6 +413,7 @@ int security_path_truncate(struct path *path) 13.238 + return 0; 13.239 + return security_ops->path_truncate(path); 13.240 + } 13.241 ++EXPORT_SYMBOL(security_path_truncate); 13.242 + 13.243 + int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, 13.244 + mode_t mode) 13.245 +@@ -415,6 +422,7 @@ int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt, 13.246 + return 0; 13.247 + return security_ops->path_chmod(dentry, mnt, mode); 13.248 + } 13.249 ++EXPORT_SYMBOL(security_path_chmod); 13.250 + 13.251 + int security_path_chown(struct path *path, uid_t uid, gid_t gid) 13.252 + { 13.253 +@@ -422,6 +430,7 @@ int security_path_chown(struct path *path, uid_t uid, gid_t gid) 13.254 + return 0; 13.255 + return security_ops->path_chown(path, uid, gid); 13.256 + } 13.257 ++EXPORT_SYMBOL(security_path_chown); 13.258 + 13.259 + int security_path_chroot(struct path *path) 13.260 + { 13.261 +@@ -498,6 +507,7 @@ int security_inode_readlink(struct dentry *dentry) 13.262 + return 0; 13.263 + return security_ops->inode_readlink(dentry); 13.264 + } 13.265 ++EXPORT_SYMBOL(security_inode_readlink); 13.266 + 13.267 + int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) 13.268 + { 13.269 +@@ -512,6 +522,7 @@ int security_inode_permission(struct inode *inode, int mask) 13.270 + return 0; 13.271 + return security_ops->inode_permission(inode, mask); 13.272 + } 13.273 ++EXPORT_SYMBOL(security_inode_permission); 13.274 + 13.275 + int security_inode_setattr(struct dentry *dentry, struct iattr *attr) 13.276 + { 13.277 +@@ -611,6 +622,7 @@ int security_file_permission(struct file *file, int mask) 13.278 + 13.279 + return fsnotify_perm(file, mask); 13.280 + } 13.281 ++EXPORT_SYMBOL(security_file_permission); 13.282 + 13.283 + int security_file_alloc(struct file *file) 13.284 + { 13.285 +@@ -638,6 +650,7 @@ int security_file_mmap(struct file *file, unsigned long reqprot, 13.286 + return ret; 13.287 + return ima_file_mmap(file, prot); 13.288 + } 13.289 ++EXPORT_SYMBOL(security_file_mmap); 13.290 + 13.291 + int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot, 13.292 + unsigned long prot)
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/kernel-modular/stuff/bootloader.sh Tue Feb 01 09:37:33 2011 +0100 14.3 @@ -0,0 +1,218 @@ 14.4 +#!/bin/sh 14.5 +# 14.6 +# This script creates a floppy image set from a linux bzImage and can merge 14.7 +# a cmdline and/or one or more initramfs. 14.8 +# The total size can not exceed 15M because INT 15H function 87H limitations. 14.9 +# 14.10 +# (C) 2009 Pascal Bellard - GNU General Public License v3. 14.11 + 14.12 +usage() 14.13 +{ 14.14 +cat <<EOT 14.15 +Usage: $0 bzImage [--prefix image_prefix] [--cmdline 'args'] 14.16 + [--rdev device] [--video mode] [--flags rootflags] [--tracks cnt] 14.17 + [--format 1440|1680|1920|2880 ] [--initrd initrdfile]... 14.18 + 14.19 +Default values: --format 1440 --tracks 80 --prefix floppy. 14.20 + 14.21 +Example: 14.22 +$0 /boot/vmlinuz-2.6.30.6 --rdev /dev/ram0 --video -3 --cmdline 'rw lang=fr_FR kmap=fr-latin1 laptop autologin' --initrd /boot/rootfs.gz --initrd ./myconfig.gz 14.23 +EOT 14.24 +exit 1 14.25 +} 14.26 + 14.27 +KERNEL="" 14.28 +INITRD="" 14.29 +CMDLINE="" 14.30 +PREFIX="floppy." 14.31 +FORMAT="1440" 14.32 +RDEV="" 14.33 +VIDEO="" 14.34 +FLAGS="" 14.35 +TRACKS="" 14.36 +DEBUG="" 14.37 +while [ -n "$1" ]; do 14.38 + case "$1" in 14.39 + --c*|-c*) CMDLINE="$2"; shift;; 14.40 + --i*|-i*) INITRD="$INITRD $2"; shift;; 14.41 + --p*|-p*) PREFIX="$2"; shift;; 14.42 + --fo*|-f*) FORMAT="$2"; shift;; 14.43 + --fl*) FLAGS="$2"; shift;; # 1 read-only, 0 read-write 14.44 + --r*|-r*) RDEV="$2"; shift;; # /dev/??? 14.45 + --v*|-v*) VIDEO="$2"; shift;; # -3 .. n 14.46 + --t*|-t*) TRACKS="$2"; shift;; # likely 81 .. 84 14.47 + --debug) DEBUG="1";; 14.48 + *) KERNEL="$1";; 14.49 + esac 14.50 + shift 14.51 +done 14.52 +[ -n "$KERNEL" -a -f "$KERNEL" ] || usage 14.53 +if [ -n "$TRACKS" ]; then 14.54 + if [ $(( $FORMAT % $TRACKS )) -ne 0 ]; then 14.55 + echo "Invalid track count for format $FORMAT." 14.56 + usage 14.57 + fi 14.58 +fi 14.59 + 14.60 +# write a 16 bits data 14.61 +# usage: store16 offset data16 file 14.62 +store16() 14.63 +{ 14.64 + echo $(( $2 + 0x10000 )) | \ 14.65 + awk '{ printf "\\\\x%02X\\\\x%02X",$1%256,($1/256)%256 }' | \ 14.66 + xargs echo -en | \ 14.67 + dd bs=2 conv=notrunc of=$3 seek=$(( $1 / 2 )) 2> /dev/null 14.68 + [ -n "$DEBUG" ] && printf "store16(%04X) = %04X\n" $1 $2 1>&2 14.69 +} 14.70 + 14.71 +# write a 32 bits data 14.72 +# usage: storelong offset data32 file 14.73 +storelong() 14.74 +{ 14.75 + echo $2 | awk '{ printf "\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X", 14.76 + $1%256,($1/256)%256,($1/256/256)%256,($1/256/256/256)%256 }' | \ 14.77 + xargs echo -en | \ 14.78 + dd bs=4 conv=notrunc of=$3 seek=$(( $1 / 4 )) 2> /dev/null 14.79 + [ -n "$DEBUG" ] && printf "storelong(%04X) = %08X\n" $1 $2 1>&2 14.80 +} 14.81 + 14.82 +# read a 32 bits data 14.83 +# usage: getlong offset file 14.84 +getlong() 14.85 +{ 14.86 + dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \ 14.87 + hexdump -e '"" 1/4 "%d" "\n"' 14.88 +} 14.89 + 14.90 +floppyset() 14.91 +{ 14.92 + # bzImage offsets 14.93 + CylinderCount=496 14.94 + SetupSzOfs=497 14.95 + FlagsOfs=498 14.96 + SyssizeOfs=500 14.97 + VideoModeOfs=506 14.98 + RootDevOfs=508 14.99 + CodeAdrOfs=0x214 14.100 + RamfsAdrOfs=0x218 14.101 + RamfsLenOfs=0x21C 14.102 + ArgPtrOfs=0x228 14.103 + 14.104 + # boot+setup address 14.105 + SetupBase=0x90000 14.106 + 14.107 + stacktop=0x9E00 14.108 + 14.109 + bs=/tmp/bs$$ 14.110 + 14.111 + # Get and patch boot sector 14.112 + # See http://hg.slitaz.org/wok/raw-file/711d076b277c/linux/stuff/linux-header-2.6.34.u 14.113 + dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null 14.114 + uudecode <<EOT | dd of=$bs conv=notrunc 2> /dev/null 14.115 +begin-base64 644 - 14.116 +/L+6nWgAkAcGF4n8McC5HQDzq1sfD6mg8X1ABlfFd3ixBvOlZWaPR3gGH8ZF 14.117 ++D/6l1hB6DQBvgACA3QO6HYBWwseKAJ0LFNH6AoBXuhmAbAgzRCwCM0QTuhl 14.118 +ATwIdAOIBK05NigCdPDoPgE8CnXgiHz+ieb/TBD/TBi/9AGBTRz/gMdFMACc 14.119 +sBCxBUi0k4lEHLABiUQUmGaY0+BIZgMFZtPoaAAQB7+AACn4nHMCAccx21BW 14.120 +6J4AXrkAgLSH/kQczRVYnXfcoRoCvxwCsQk4RBxyuJPNE+oAACCQsEYoyL7b 14.121 +AejSAF3rI4D5E3IEOMF3a4D+AnIEOOZ3bGCB/QAGdCoGUlFTlrQCULEGtQTB 14.122 +xQSwDyHoBJAnFEAn6IwA/s117LAgzRDitOiWAJjNE2FSUCjIdwKwAZg5+HIC 14.123 +ifhQtALNE5VeWFpyoJVBjuGAxwJPdFFOdfSM4ZU4wXVFiMj+xrEBOOZ1O4j0 14.124 +/sW2AID9UHIwOi7wAXIqtQBgvt4B/kQMU+gxAFvoOAB1FlKYzRO4AQLNE1rQ 14.125 +1Dpk/nXqRgjkdeVh64sWB7AxLAO0DrsHAM0QPA1088OwDejv/6wIwHX4w79s 14.126 +BLFbZQINuA0BZToNdArNFnT0mM0Wju9Hw1g6AEluc2VydCBkaXNrIDEuBw0A 14.127 +AA== 14.128 +==== 14.129 +EOT 14.130 + 14.131 + # Get setup 14.132 + setupsz=$(getlong $SetupSzOfs $bs) 14.133 + setupszb=$(( $setupsz & 255 )) 14.134 + dd if=$KERNEL bs=512 skip=1 count=$setupszb 2> /dev/null >> $bs 14.135 + 14.136 + if [ -n "$TRACKS" ]; then 14.137 + [ -n "$DEBUG" ] && echo -n "--tracks " 1>&2 14.138 + n=$(getlong $CylinderCount $bs) 14.139 + store16 $CylinderCount $(( ($n & -256) + $TRACKS )) $bs 14.140 + fi 14.141 + if [ -n "$FLAGS" ]; then 14.142 + [ -n "$DEBUG" ] && echo -n "--flags " 1>&2 14.143 + store16 $FlagsOfs $FLAGS $bs 14.144 + fi 14.145 + if [ -n "$VIDEO" ]; then 14.146 + [ -n "$DEBUG" ] && echo -n "--video " 1>&2 14.147 + store16 $VideoModeOfs $VIDEO $bs 14.148 + fi 14.149 + if [ -n "$RDEV" ]; then 14.150 + [ -n "$DEBUG" ] && echo -n "--rdev " 1>&2 14.151 + n=$(stat -c '0x%02t%02T' $RDEV 2> /dev/null) 14.152 + [ -n "$n" ] || n=$RDEV 14.153 + store16 $RootDevOfs $n $bs 14.154 + fi 14.155 + 14.156 + # Store cmdline after setup 14.157 + if [ -n "$CMDLINE" ]; then 14.158 + [ -n "$DEBUG" ] && echo -n "--cmdline '$CMDLINE' " 1>&2 14.159 + echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs 14.160 + storelong $ArgPtrOfs $(( $SetupBase + $stacktop )) $bs 14.161 + fi 14.162 + 14.163 + # Compute initramfs size 14.164 + initrdlen=0 14.165 + padding=0 14.166 + for i in $( echo $INITRD | sed 's/,/ /' ); do 14.167 + [ -s "$i" ] || continue 14.168 + [ -n "$DEBUG" ] && echo "--initrd $i " 1>&2 14.169 + initrdlen=$(( $initrdlen + $padding )) 14.170 + padding=$(stat -c %s $i) 14.171 + initrdlen=$(( $initrdlen + $padding )) 14.172 + padding=$(( 4096 - ($padding & 4095) )) 14.173 + [ $padding -eq 4096 ] && padding=0 14.174 + done 14.175 + Ksize=$(( $(getlong $SyssizeOfs $bs)*16 )) 14.176 + Kpad=$(( (($Ksize+4095)/4096)*4096 - Ksize )) 14.177 + if [ $initrdlen -ne 0 ]; then 14.178 + [ -n "$DEBUG" ] && echo "initrdlen = $initrdlen " 1>&2 14.179 + Kbase=$(getlong $CodeAdrOfs $bs) 14.180 + storelong $RamfsAdrOfs \ 14.181 + $(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs 14.182 + storelong $RamfsLenOfs $(( ($initrdlen + 3) & -4 )) $bs 14.183 + fi 14.184 + 14.185 + # Output boot sector + setup + cmdline 14.186 + dd if=$bs 2> /dev/null 14.187 + 14.188 + # Output kernel code 14.189 + dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null 14.190 + 14.191 + # Pad to next sector 14.192 + Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) )) 14.193 + [ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null 14.194 + 14.195 + # Output initramfs 14.196 + padding=0 14.197 + for i in $( echo $INITRD | sed 's/,/ /' ); do 14.198 + [ -s "$i" ] || continue 14.199 + [ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding 2> /dev/null 14.200 + dd if=$i 2> /dev/null 14.201 + padding=$(( 4 - ($(stat -c %s $i) & 3) )) 14.202 + [ $padding -eq 4 ] && padding=0 14.203 + done 14.204 + 14.205 + # Cleanup 14.206 + rm -f $bs 14.207 +} 14.208 + 14.209 +if [ "$FORMAT" == "0" ]; then # unsplitted 14.210 + floppyset > $PREFIX 14.211 + exit 14.212 +fi 14.213 +floppyset | split -b ${FORMAT}k /dev/stdin floppy$$ 14.214 +i=1 14.215 +ls floppy$$* | while read file ; do 14.216 + output=$PREFIX$(printf "%03d" $i) 14.217 + cat $file /dev/zero | dd bs=1k count=$FORMAT conv=sync of=$output 2> /dev/null 14.218 + echo $output 14.219 + rm -f $file 14.220 + i=$(( $i + 1 )) 14.221 +done
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/kernel-modular/stuff/check_modules.sh Tue Feb 01 09:37:33 2011 +0100 15.3 @@ -0,0 +1,51 @@ 15.4 +#!/bin/sh 15.5 +# Echo any module in kernel .config that's not added to one of linux-* pkgs 15.6 +# (c) SliTaz - GNU General Public License. 15.7 +# 20090618 <jozee@slitaz.org> 15.8 +# 20100528 <pankso@slitaz.org> 15.9 +# 15.10 +. /etc/tazwok.conf 15.11 +VERSION=`grep ^VERSION= $WOK/linux/receipt | cut -d "=" -f2 | sed -e 's/"//g'` 15.12 +src="$WOK/linux/linux-$VERSION" 15.13 + 15.14 +cd $src 15.15 +mkdir -p ../stuff/tmp 15.16 +rm -f ../stuff/tmp/* 15.17 + 15.18 +echo -e "\nChecking for modules selected in .config but not in linux-* pkgs" 15.19 +echo "======================================================================" 15.20 + 15.21 +# create a packaged modules list 15.22 +cat ../stuff/modules-"$VERSION".list >> ../stuff/tmp/pkgs-modules-"$VERSION".list 15.23 + 15.24 +for i in $(cd $WOK; ls -d linux-*) 15.25 +do 15.26 + tazpath="taz/$i-$VERSION" 15.27 + for j in $(cat $WOK/$i/$tazpath/files.list | grep ".ko.gz") 15.28 + do 15.29 + basename $j >> ../stuff/tmp/pkgs-modules-"$VERSION".list 15.30 + done 15.31 +done 15.32 +# get the original list in .config 15.33 +for i in $(find $_pkg -iname "*.ko.gz") 15.34 +do 15.35 + basename $i >> ../stuff/tmp/originial-"$VERSION".list 15.36 +done 15.37 +# compare original .config and pkged modules 15.38 +for i in $(cat ../stuff/tmp/originial-$VERSION.list) 15.39 +do 15.40 + if ! grep -qs "$i" ../stuff/tmp/pkgs-modules-"$VERSION".list ; then 15.41 + modpath=`find $_pkg -iname "$i"` 15.42 + echo "Orphan module: $i" 15.43 + echo "$i : $modpath" >> ../stuff/tmp/unpackaged-modules-"$VERSION".list 15.44 + fi 15.45 +done 15.46 +if [ -f ../stuff/tmp/unpackaged-modules-"$VERSION".list ]; then 15.47 + echo "======================================================================" 15.48 + echo -e "Check linux/stuff/tmp/unpackaged-modules-$VERSION.list for mod path\n" 15.49 +else 15.50 + echo -e "\nAll modules are packaged\n" 15.51 + echo "======================================================================" 15.52 + echo "" 15.53 + rm -rf ../stuff/tmp 15.54 +fi
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 16.2 +++ b/kernel-modular/stuff/gztazmod.sh Tue Feb 01 09:37:33 2011 +0100 16.3 @@ -0,0 +1,67 @@ 16.4 +#!/bin/sh 16.5 +# gztazmod.sh: Compress Linux kernel modules for SliTaz GNU/Linux. 16.6 +# 2007/10/04 <pankso@slitaz.org> - GNU General Public License. 16.7 +# 16.8 + 16.9 +# We do our work in the kernel version modules directory. 16.10 +if [ -z "$1" ] ; then 16.11 + echo "" 16.12 + echo -e "\033[1musage:\033[0m `basename $0` path/to/kernel-version" 16.13 + echo "" 16.14 + exit 1 16.15 +fi 16.16 + 16.17 +if [ ! -r "$1" ] ; then 16.18 + echo "" 16.19 + echo -e "Error : $1 does not exist." 16.20 + echo "" 16.21 + exit 1 16.22 +fi 16.23 + 16.24 +cd $1 16.25 + 16.26 +# Status functions. 16.27 +status() 16.28 +{ 16.29 + local CHECK=$? 16.30 + echo -en "\\033[70G[ " 16.31 + if [ $CHECK = 0 ]; then 16.32 + echo -en "\\033[1;33mOK" 16.33 + else 16.34 + echo -en "\\033[1;31mFailed" 16.35 + fi 16.36 + echo -e "\\033[0;39m ]" 16.37 +} 16.38 + 16.39 +# Script start. 16.40 +echo "" 16.41 +echo "Starting gztazmod.sh to build compressed kernel modules... " 16.42 +echo "" 16.43 + 16.44 +# Find all modules. 16.45 +echo -n "Searching all modules to compress them... " 16.46 +find . -name "*.ko" -exec lzma e '{}' '{}'.gz \; 2> /dev/null 16.47 +status 16.48 +find . -name "*.ko" -exec rm '{}' \; 16.49 + 16.50 +# Build a new temporary modules.dep. 16.51 +echo -n "Building tmp.dep... " 16.52 +sed 's/\.ko.gz/.ko/g' modules.dep > tmp.dep 16.53 +sed -i 's/\.ko.gz/.ko/g' tmp.dep 16.54 +sed -i 's/\.ko/.ko.gz/g' tmp.dep 16.55 +status 16.56 + 16.57 +# Destroy original modules.dep 16.58 +echo -n "Destroying modules.dep... " 16.59 +rm modules.dep 16.60 +status 16.61 + 16.62 +# Remove tmp.dep to modules.dep. 16.63 +echo -n "Removing tmp.dep to modules.dep... " 16.64 +mv tmp.dep modules.dep 16.65 +status 16.66 + 16.67 +# Script end. 16.68 +echo "" 16.69 +echo "Kernel modules `basename $1` are ready." 16.70 +echo ""
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 17.2 +++ b/kernel-modular/stuff/linux-2.6.37-slitaz.config-i486-isa Tue Feb 01 09:37:33 2011 +0100 17.3 @@ -0,0 +1,923 @@ 17.4 +# 17.5 +# Automatically generated make config: don't edit 17.6 +# Linux/i386 2.6.37 Kernel Configuration 17.7 +# Sun Jan 30 23:08:13 2011 17.8 +# 17.9 +# CONFIG_64BIT is not set 17.10 +CONFIG_X86_32=y 17.11 +# CONFIG_X86_64 is not set 17.12 +CONFIG_X86=y 17.13 +CONFIG_INSTRUCTION_DECODER=y 17.14 +CONFIG_OUTPUT_FORMAT="elf32-i386" 17.15 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" 17.16 +CONFIG_GENERIC_CMOS_UPDATE=y 17.17 +CONFIG_CLOCKSOURCE_WATCHDOG=y 17.18 +CONFIG_GENERIC_CLOCKEVENTS=y 17.19 +CONFIG_LOCKDEP_SUPPORT=y 17.20 +CONFIG_STACKTRACE_SUPPORT=y 17.21 +CONFIG_HAVE_LATENCYTOP_SUPPORT=y 17.22 +CONFIG_MMU=y 17.23 +CONFIG_ZONE_DMA=y 17.24 +# CONFIG_NEED_DMA_MAP_STATE is not set 17.25 +CONFIG_NEED_SG_DMA_LENGTH=y 17.26 +CONFIG_GENERIC_ISA_DMA=y 17.27 +CONFIG_GENERIC_IOMAP=y 17.28 +CONFIG_GENERIC_HWEIGHT=y 17.29 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 17.30 +CONFIG_RWSEM_GENERIC_SPINLOCK=y 17.31 +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 17.32 +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 17.33 +CONFIG_GENERIC_CALIBRATE_DELAY=y 17.34 +# CONFIG_GENERIC_TIME_VSYSCALL is not set 17.35 +CONFIG_ARCH_HAS_CPU_RELAX=y 17.36 +CONFIG_ARCH_HAS_DEFAULT_IDLE=y 17.37 +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 17.38 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y 17.39 +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 17.40 +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 17.41 +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 17.42 +CONFIG_ARCH_HIBERNATION_POSSIBLE=y 17.43 +CONFIG_ARCH_SUSPEND_POSSIBLE=y 17.44 +# CONFIG_ZONE_DMA32 is not set 17.45 +CONFIG_ARCH_POPULATES_NODE_MAP=y 17.46 +# CONFIG_AUDIT_ARCH is not set 17.47 +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 17.48 +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 17.49 +CONFIG_X86_32_LAZY_GS=y 17.50 +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" 17.51 +CONFIG_KTIME_SCALAR=y 17.52 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 17.53 +CONFIG_CONSTRUCTORS=y 17.54 +CONFIG_HAVE_IRQ_WORK=y 17.55 +CONFIG_IRQ_WORK=y 17.56 + 17.57 +# 17.58 +# General setup 17.59 +# 17.60 +CONFIG_EXPERIMENTAL=y 17.61 +CONFIG_BROKEN_ON_SMP=y 17.62 +CONFIG_INIT_ENV_ARG_LIMIT=32 17.63 +CONFIG_CROSS_COMPILE="" 17.64 +CONFIG_LOCALVERSION="-slitaz" 17.65 +# CONFIG_LOCALVERSION_AUTO is not set 17.66 +CONFIG_HAVE_KERNEL_GZIP=y 17.67 +CONFIG_HAVE_KERNEL_BZIP2=y 17.68 +CONFIG_HAVE_KERNEL_LZMA=y 17.69 +CONFIG_HAVE_KERNEL_XZ=y 17.70 +CONFIG_HAVE_KERNEL_LZO=y 17.71 +# CONFIG_KERNEL_GZIP is not set 17.72 +# CONFIG_KERNEL_BZIP2 is not set 17.73 +CONFIG_KERNEL_LZMA=y 17.74 +# CONFIG_KERNEL_XZ is not set 17.75 +# CONFIG_KERNEL_LZO is not set 17.76 +# CONFIG_SWAP is not set 17.77 +CONFIG_SYSVIPC=y 17.78 +CONFIG_SYSVIPC_SYSCTL=y 17.79 +# CONFIG_POSIX_MQUEUE is not set 17.80 +# CONFIG_BSD_PROCESS_ACCT is not set 17.81 +# CONFIG_TASKSTATS is not set 17.82 +# CONFIG_AUDIT is not set 17.83 +CONFIG_HAVE_GENERIC_HARDIRQS=y 17.84 + 17.85 +# 17.86 +# IRQ subsystem 17.87 +# 17.88 +CONFIG_GENERIC_HARDIRQS=y 17.89 +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 17.90 +# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 17.91 +CONFIG_HAVE_SPARSE_IRQ=y 17.92 +CONFIG_GENERIC_IRQ_PROBE=y 17.93 +# CONFIG_GENERIC_PENDING_IRQ is not set 17.94 +# CONFIG_AUTO_IRQ_AFFINITY is not set 17.95 +# CONFIG_IRQ_PER_CPU is not set 17.96 +# CONFIG_HARDIRQS_SW_RESEND is not set 17.97 +# CONFIG_SPARSE_IRQ is not set 17.98 + 17.99 +# 17.100 +# RCU Subsystem 17.101 +# 17.102 +CONFIG_TINY_RCU=y 17.103 +# CONFIG_PREEMPT_RCU is not set 17.104 +# CONFIG_TREE_RCU_TRACE is not set 17.105 +CONFIG_IKCONFIG=y 17.106 +CONFIG_IKCONFIG_PROC=y 17.107 +CONFIG_LOG_BUF_SHIFT=12 17.108 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y 17.109 +# CONFIG_NAMESPACES is not set 17.110 +# CONFIG_RELAY is not set 17.111 +CONFIG_BLK_DEV_INITRD=y 17.112 +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" 17.113 +CONFIG_INITRAMFS_ROOT_UID=0 17.114 +CONFIG_INITRAMFS_ROOT_GID=0 17.115 +CONFIG_RD_GZIP=y 17.116 +# CONFIG_RD_BZIP2 is not set 17.117 +CONFIG_RD_LZMA=y 17.118 +# CONFIG_RD_LZO is not set 17.119 +CONFIG_INITRAMFS_COMPRESSION_NONE=y 17.120 +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set 17.121 +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set 17.122 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 17.123 +CONFIG_SYSCTL=y 17.124 +CONFIG_ANON_INODES=y 17.125 +CONFIG_EMBEDDED=y 17.126 +# CONFIG_UID16 is not set 17.127 +# CONFIG_SYSCTL_SYSCALL is not set 17.128 +# CONFIG_KALLSYMS is not set 17.129 +# CONFIG_HOTPLUG is not set 17.130 +CONFIG_PRINTK=y 17.131 +# CONFIG_BUG is not set 17.132 +# CONFIG_ELF_CORE is not set 17.133 +CONFIG_PCSPKR_PLATFORM=y 17.134 +# CONFIG_BASE_FULL is not set 17.135 +CONFIG_FUTEX=y 17.136 +# CONFIG_EPOLL is not set 17.137 +# CONFIG_SIGNALFD is not set 17.138 +# CONFIG_TIMERFD is not set 17.139 +# CONFIG_EVENTFD is not set 17.140 +# CONFIG_SHMEM is not set 17.141 +# CONFIG_AIO is not set 17.142 +CONFIG_HAVE_PERF_EVENTS=y 17.143 + 17.144 +# 17.145 +# Kernel Performance Events And Counters 17.146 +# 17.147 +CONFIG_PERF_EVENTS=y 17.148 +# CONFIG_PERF_COUNTERS is not set 17.149 +# CONFIG_VM_EVENT_COUNTERS is not set 17.150 +CONFIG_COMPAT_BRK=y 17.151 +# CONFIG_SLAB is not set 17.152 +# CONFIG_SLUB is not set 17.153 +CONFIG_SLOB=y 17.154 +# CONFIG_PROFILING is not set 17.155 +CONFIG_HAVE_OPROFILE=y 17.156 +# CONFIG_JUMP_LABEL is not set 17.157 +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 17.158 +CONFIG_HAVE_IOREMAP_PROT=y 17.159 +CONFIG_HAVE_KPROBES=y 17.160 +CONFIG_HAVE_KRETPROBES=y 17.161 +CONFIG_HAVE_OPTPROBES=y 17.162 +CONFIG_HAVE_ARCH_TRACEHOOK=y 17.163 +CONFIG_HAVE_DMA_ATTRS=y 17.164 +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y 17.165 +CONFIG_HAVE_DMA_API_DEBUG=y 17.166 +CONFIG_HAVE_HW_BREAKPOINT=y 17.167 +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 17.168 +CONFIG_HAVE_USER_RETURN_NOTIFIER=y 17.169 +CONFIG_HAVE_PERF_EVENTS_NMI=y 17.170 +CONFIG_HAVE_ARCH_JUMP_LABEL=y 17.171 + 17.172 +# 17.173 +# GCOV-based kernel profiling 17.174 +# 17.175 +CONFIG_HAVE_GENERIC_DMA_COHERENT=y 17.176 +CONFIG_RT_MUTEXES=y 17.177 +CONFIG_BASE_SMALL=1 17.178 +# CONFIG_MODULES is not set 17.179 +CONFIG_BLOCK=y 17.180 +# CONFIG_LBDAF is not set 17.181 +# CONFIG_BLK_DEV_BSG is not set 17.182 +# CONFIG_BLK_DEV_INTEGRITY is not set 17.183 + 17.184 +# 17.185 +# IO Schedulers 17.186 +# 17.187 +CONFIG_IOSCHED_NOOP=y 17.188 +# CONFIG_IOSCHED_DEADLINE is not set 17.189 +# CONFIG_IOSCHED_CFQ is not set 17.190 +CONFIG_DEFAULT_NOOP=y 17.191 +CONFIG_DEFAULT_IOSCHED="noop" 17.192 +# CONFIG_INLINE_SPIN_TRYLOCK is not set 17.193 +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set 17.194 +# CONFIG_INLINE_SPIN_LOCK is not set 17.195 +# CONFIG_INLINE_SPIN_LOCK_BH is not set 17.196 +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set 17.197 +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set 17.198 +CONFIG_INLINE_SPIN_UNLOCK=y 17.199 +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set 17.200 +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 17.201 +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set 17.202 +# CONFIG_INLINE_READ_TRYLOCK is not set 17.203 +# CONFIG_INLINE_READ_LOCK is not set 17.204 +# CONFIG_INLINE_READ_LOCK_BH is not set 17.205 +# CONFIG_INLINE_READ_LOCK_IRQ is not set 17.206 +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set 17.207 +CONFIG_INLINE_READ_UNLOCK=y 17.208 +# CONFIG_INLINE_READ_UNLOCK_BH is not set 17.209 +CONFIG_INLINE_READ_UNLOCK_IRQ=y 17.210 +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set 17.211 +# CONFIG_INLINE_WRITE_TRYLOCK is not set 17.212 +# CONFIG_INLINE_WRITE_LOCK is not set 17.213 +# CONFIG_INLINE_WRITE_LOCK_BH is not set 17.214 +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set 17.215 +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set 17.216 +CONFIG_INLINE_WRITE_UNLOCK=y 17.217 +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set 17.218 +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 17.219 +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set 17.220 +# CONFIG_MUTEX_SPIN_ON_OWNER is not set 17.221 +# CONFIG_FREEZER is not set 17.222 + 17.223 +# 17.224 +# Processor type and features 17.225 +# 17.226 +# CONFIG_NO_HZ is not set 17.227 +# CONFIG_HIGH_RES_TIMERS is not set 17.228 +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 17.229 +# CONFIG_SMP is not set 17.230 +# CONFIG_X86_EXTENDED_PLATFORM is not set 17.231 +CONFIG_SCHED_OMIT_FRAME_POINTER=y 17.232 +# CONFIG_PARAVIRT_GUEST is not set 17.233 +CONFIG_NO_BOOTMEM=y 17.234 +# CONFIG_MEMTEST is not set 17.235 +CONFIG_M386=y 17.236 +# CONFIG_M486 is not set 17.237 +# CONFIG_M586 is not set 17.238 +# CONFIG_M586TSC is not set 17.239 +# CONFIG_M586MMX is not set 17.240 +# CONFIG_M686 is not set 17.241 +# CONFIG_MPENTIUMII is not set 17.242 +# CONFIG_MPENTIUMIII is not set 17.243 +# CONFIG_MPENTIUMM is not set 17.244 +# CONFIG_MPENTIUM4 is not set 17.245 +# CONFIG_MK6 is not set 17.246 +# CONFIG_MK7 is not set 17.247 +# CONFIG_MK8 is not set 17.248 +# CONFIG_MCRUSOE is not set 17.249 +# CONFIG_MEFFICEON is not set 17.250 +# CONFIG_MWINCHIPC6 is not set 17.251 +# CONFIG_MWINCHIP3D is not set 17.252 +# CONFIG_MGEODEGX1 is not set 17.253 +# CONFIG_MGEODE_LX is not set 17.254 +# CONFIG_MCYRIXIII is not set 17.255 +# CONFIG_MVIAC3_2 is not set 17.256 +# CONFIG_MVIAC7 is not set 17.257 +# CONFIG_MCORE2 is not set 17.258 +# CONFIG_MATOM is not set 17.259 +# CONFIG_X86_GENERIC is not set 17.260 +CONFIG_X86_CPU=y 17.261 +CONFIG_X86_INTERNODE_CACHE_SHIFT=4 17.262 +# CONFIG_X86_CMPXCHG is not set 17.263 +CONFIG_X86_L1_CACHE_SHIFT=4 17.264 +# CONFIG_X86_PPRO_FENCE is not set 17.265 +CONFIG_X86_F00F_BUG=y 17.266 +CONFIG_X86_INVD_BUG=y 17.267 +CONFIG_X86_MINIMUM_CPU_FAMILY=3 17.268 +# CONFIG_PROCESSOR_SELECT is not set 17.269 +CONFIG_CPU_SUP_INTEL=y 17.270 +CONFIG_CPU_SUP_CYRIX_32=y 17.271 +CONFIG_CPU_SUP_AMD=y 17.272 +CONFIG_CPU_SUP_CENTAUR=y 17.273 +CONFIG_CPU_SUP_TRANSMETA_32=y 17.274 +CONFIG_CPU_SUP_UMC_32=y 17.275 +# CONFIG_HPET_TIMER is not set 17.276 +# CONFIG_DMI is not set 17.277 +# CONFIG_IOMMU_HELPER is not set 17.278 +# CONFIG_IOMMU_API is not set 17.279 +CONFIG_NR_CPUS=1 17.280 +# CONFIG_IRQ_TIME_ACCOUNTING is not set 17.281 +CONFIG_PREEMPT_NONE=y 17.282 +# CONFIG_PREEMPT_VOLUNTARY is not set 17.283 +# CONFIG_PREEMPT is not set 17.284 +# CONFIG_X86_UP_APIC is not set 17.285 +# CONFIG_X86_MCE is not set 17.286 +# CONFIG_VM86 is not set 17.287 +# CONFIG_TOSHIBA is not set 17.288 +# CONFIG_I8K is not set 17.289 +# CONFIG_X86_REBOOTFIXUPS is not set 17.290 +# CONFIG_MICROCODE is not set 17.291 +# CONFIG_X86_MSR is not set 17.292 +# CONFIG_X86_CPUID is not set 17.293 +CONFIG_NOHIGHMEM=y 17.294 +# CONFIG_HIGHMEM4G is not set 17.295 +CONFIG_VMSPLIT_3G=y 17.296 +# CONFIG_VMSPLIT_3G_OPT is not set 17.297 +# CONFIG_VMSPLIT_2G is not set 17.298 +# CONFIG_VMSPLIT_2G_OPT is not set 17.299 +# CONFIG_VMSPLIT_1G is not set 17.300 +CONFIG_PAGE_OFFSET=0xC0000000 17.301 +# CONFIG_X86_PAE is not set 17.302 +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 17.303 +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set 17.304 +CONFIG_ARCH_FLATMEM_ENABLE=y 17.305 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 17.306 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 17.307 +CONFIG_ILLEGAL_POINTER_VALUE=0 17.308 +CONFIG_SELECT_MEMORY_MODEL=y 17.309 +CONFIG_FLATMEM_MANUAL=y 17.310 +# CONFIG_SPARSEMEM_MANUAL is not set 17.311 +CONFIG_FLATMEM=y 17.312 +CONFIG_FLAT_NODE_MEM_MAP=y 17.313 +CONFIG_SPARSEMEM_STATIC=y 17.314 +CONFIG_HAVE_MEMBLOCK=y 17.315 +CONFIG_PAGEFLAGS_EXTENDED=y 17.316 +CONFIG_SPLIT_PTLOCK_CPUS=4 17.317 +# CONFIG_PHYS_ADDR_T_64BIT is not set 17.318 +CONFIG_ZONE_DMA_FLAG=1 17.319 +CONFIG_BOUNCE=y 17.320 +CONFIG_VIRT_TO_BUS=y 17.321 +# CONFIG_KSM is not set 17.322 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 17.323 +CONFIG_NEED_PER_CPU_KM=y 17.324 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 17.325 +CONFIG_X86_RESERVE_LOW=64 17.326 +CONFIG_MATH_EMULATION=y 17.327 +# CONFIG_MTRR is not set 17.328 +# CONFIG_SECCOMP is not set 17.329 +# CONFIG_CC_STACKPROTECTOR is not set 17.330 +CONFIG_HZ_100=y 17.331 +# CONFIG_HZ_250 is not set 17.332 +# CONFIG_HZ_300 is not set 17.333 +# CONFIG_HZ_1000 is not set 17.334 +CONFIG_HZ=100 17.335 +# CONFIG_SCHED_HRTICK is not set 17.336 +# CONFIG_KEXEC is not set 17.337 +CONFIG_PHYSICAL_START=0x100000 17.338 +# CONFIG_RELOCATABLE is not set 17.339 +CONFIG_PHYSICAL_ALIGN=0x100000 17.340 +# CONFIG_COMPAT_VDSO is not set 17.341 +# CONFIG_CMDLINE_BOOL is not set 17.342 + 17.343 +# 17.344 +# Power management and ACPI options 17.345 +# 17.346 +# CONFIG_PM is not set 17.347 +# CONFIG_SFI is not set 17.348 + 17.349 +# 17.350 +# CPU Frequency scaling 17.351 +# 17.352 +# CONFIG_CPU_FREQ is not set 17.353 +# CONFIG_CPU_IDLE is not set 17.354 + 17.355 +# 17.356 +# Bus options (PCI etc.) 17.357 +# 17.358 +# CONFIG_PCI is not set 17.359 +# CONFIG_ARCH_SUPPORTS_MSI is not set 17.360 +CONFIG_ISA_DMA_API=y 17.361 +CONFIG_ISA=y 17.362 +# CONFIG_EISA is not set 17.363 +# CONFIG_MCA is not set 17.364 +# CONFIG_SCx200 is not set 17.365 +# CONFIG_OLPC is not set 17.366 +# CONFIG_OLPC_OPENFIRMWARE is not set 17.367 + 17.368 +# 17.369 +# Executable file formats / Emulations 17.370 +# 17.371 +CONFIG_BINFMT_ELF=y 17.372 +CONFIG_HAVE_AOUT=y 17.373 +# CONFIG_BINFMT_AOUT is not set 17.374 +# CONFIG_BINFMT_MISC is not set 17.375 +CONFIG_HAVE_ATOMIC_IOMAP=y 17.376 +CONFIG_HAVE_TEXT_POKE_SMP=y 17.377 +CONFIG_NET=y 17.378 + 17.379 +# 17.380 +# Networking options 17.381 +# 17.382 +CONFIG_PACKET=y 17.383 +CONFIG_UNIX=y 17.384 +# CONFIG_NET_KEY is not set 17.385 +CONFIG_INET=y 17.386 +# CONFIG_IP_MULTICAST is not set 17.387 +# CONFIG_IP_ADVANCED_ROUTER is not set 17.388 +CONFIG_IP_FIB_HASH=y 17.389 +# CONFIG_IP_PNP is not set 17.390 +# CONFIG_NET_IPIP is not set 17.391 +# CONFIG_NET_IPGRE_DEMUX is not set 17.392 +# CONFIG_ARPD is not set 17.393 +# CONFIG_SYN_COOKIES is not set 17.394 +# CONFIG_INET_AH is not set 17.395 +# CONFIG_INET_ESP is not set 17.396 +# CONFIG_INET_IPCOMP is not set 17.397 +# CONFIG_INET_XFRM_TUNNEL is not set 17.398 +# CONFIG_INET_TUNNEL is not set 17.399 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 17.400 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set 17.401 +# CONFIG_INET_XFRM_MODE_BEET is not set 17.402 +# CONFIG_INET_LRO is not set 17.403 +# CONFIG_INET_DIAG is not set 17.404 +# CONFIG_TCP_CONG_ADVANCED is not set 17.405 +CONFIG_TCP_CONG_CUBIC=y 17.406 +CONFIG_DEFAULT_TCP_CONG="cubic" 17.407 +# CONFIG_TCP_MD5SIG is not set 17.408 +# CONFIG_IPV6 is not set 17.409 +# CONFIG_NETWORK_SECMARK is not set 17.410 +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set 17.411 +# CONFIG_NETFILTER is not set 17.412 +# CONFIG_IP_DCCP is not set 17.413 +# CONFIG_IP_SCTP is not set 17.414 +# CONFIG_RDS is not set 17.415 +# CONFIG_TIPC is not set 17.416 +# CONFIG_ATM is not set 17.417 +# CONFIG_L2TP is not set 17.418 +# CONFIG_BRIDGE is not set 17.419 +# CONFIG_NET_DSA is not set 17.420 +# CONFIG_VLAN_8021Q is not set 17.421 +# CONFIG_DECNET is not set 17.422 +# CONFIG_LLC2 is not set 17.423 +# CONFIG_IPX is not set 17.424 +# CONFIG_ATALK is not set 17.425 +# CONFIG_X25 is not set 17.426 +# CONFIG_LAPB is not set 17.427 +# CONFIG_ECONET is not set 17.428 +# CONFIG_WAN_ROUTER is not set 17.429 +# CONFIG_PHONET is not set 17.430 +# CONFIG_IEEE802154 is not set 17.431 +# CONFIG_NET_SCHED is not set 17.432 +# CONFIG_DCB is not set 17.433 + 17.434 +# 17.435 +# Network testing 17.436 +# 17.437 +# CONFIG_NET_PKTGEN is not set 17.438 +# CONFIG_HAMRADIO is not set 17.439 +# CONFIG_CAN is not set 17.440 +# CONFIG_IRDA is not set 17.441 +# CONFIG_BT is not set 17.442 +# CONFIG_AF_RXRPC is not set 17.443 +# CONFIG_WIRELESS is not set 17.444 +# CONFIG_WIMAX is not set 17.445 +# CONFIG_RFKILL is not set 17.446 +# CONFIG_NET_9P is not set 17.447 +# CONFIG_CAIF is not set 17.448 +# CONFIG_CEPH_LIB is not set 17.449 + 17.450 +# 17.451 +# Device Drivers 17.452 +# 17.453 + 17.454 +# 17.455 +# Generic Driver Options 17.456 +# 17.457 +CONFIG_STANDALONE=y 17.458 +CONFIG_PREVENT_FIRMWARE_BUILD=y 17.459 +CONFIG_FW_LOADER=y 17.460 +CONFIG_FIRMWARE_IN_KERNEL=y 17.461 +CONFIG_EXTRA_FIRMWARE="" 17.462 +# CONFIG_SYS_HYPERVISOR is not set 17.463 +# CONFIG_CONNECTOR is not set 17.464 +# CONFIG_MTD is not set 17.465 +# CONFIG_PARPORT is not set 17.466 +# CONFIG_PNP is not set 17.467 +CONFIG_BLK_DEV=y 17.468 +CONFIG_BLK_DEV_FD=y 17.469 +# CONFIG_BLK_DEV_XD is not set 17.470 +# CONFIG_BLK_DEV_COW_COMMON is not set 17.471 +# CONFIG_BLK_DEV_LOOP is not set 17.472 + 17.473 +# 17.474 +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected 17.475 +# 17.476 +# CONFIG_BLK_DEV_NBD is not set 17.477 +# CONFIG_BLK_DEV_RAM is not set 17.478 +# CONFIG_CDROM_PKTCDVD is not set 17.479 +# CONFIG_ATA_OVER_ETH is not set 17.480 +# CONFIG_BLK_DEV_HD is not set 17.481 +# CONFIG_BLK_DEV_RBD is not set 17.482 +# CONFIG_MISC_DEVICES is not set 17.483 +CONFIG_HAVE_IDE=y 17.484 +CONFIG_IDE=y 17.485 + 17.486 +# 17.487 +# Please see Documentation/ide/ide.txt for help/info on IDE drives 17.488 +# 17.489 +# CONFIG_BLK_DEV_IDE_SATA is not set 17.490 +# CONFIG_IDE_GD is not set 17.491 +# CONFIG_BLK_DEV_IDECD is not set 17.492 +# CONFIG_BLK_DEV_IDETAPE is not set 17.493 +# CONFIG_IDE_TASK_IOCTL is not set 17.494 +# CONFIG_IDE_PROC_FS is not set 17.495 + 17.496 +# 17.497 +# IDE chipset support/bugfixes 17.498 +# 17.499 +CONFIG_IDE_GENERIC=y 17.500 +# CONFIG_BLK_DEV_PLATFORM is not set 17.501 +# CONFIG_BLK_DEV_CMD640 is not set 17.502 + 17.503 +# 17.504 +# Other IDE chipsets support 17.505 +# 17.506 + 17.507 +# 17.508 +# Note: most of these also require special kernel boot parameters 17.509 +# 17.510 +# CONFIG_BLK_DEV_4DRIVES is not set 17.511 +# CONFIG_BLK_DEV_ALI14XX is not set 17.512 +# CONFIG_BLK_DEV_DTC2278 is not set 17.513 +# CONFIG_BLK_DEV_HT6560B is not set 17.514 +# CONFIG_BLK_DEV_QD65XX is not set 17.515 +# CONFIG_BLK_DEV_UMC8672 is not set 17.516 +# CONFIG_BLK_DEV_IDEDMA is not set 17.517 + 17.518 +# 17.519 +# SCSI device support 17.520 +# 17.521 +CONFIG_SCSI_MOD=y 17.522 +# CONFIG_RAID_ATTRS is not set 17.523 +# CONFIG_SCSI is not set 17.524 +# CONFIG_SCSI_DMA is not set 17.525 +# CONFIG_SCSI_NETLINK is not set 17.526 +# CONFIG_ATA is not set 17.527 +# CONFIG_MD is not set 17.528 +# CONFIG_MACINTOSH_DRIVERS is not set 17.529 +CONFIG_NETDEVICES=y 17.530 +# CONFIG_DUMMY is not set 17.531 +# CONFIG_BONDING is not set 17.532 +# CONFIG_MACVLAN is not set 17.533 +# CONFIG_EQUALIZER is not set 17.534 +# CONFIG_TUN is not set 17.535 +# CONFIG_VETH is not set 17.536 +# CONFIG_ARCNET is not set 17.537 +# CONFIG_MII is not set 17.538 +# CONFIG_PHYLIB is not set 17.539 +CONFIG_NET_ETHERNET=y 17.540 +CONFIG_NET_VENDOR_3COM=y 17.541 +# CONFIG_EL1 is not set 17.542 +# CONFIG_EL2 is not set 17.543 +# CONFIG_ELPLUS is not set 17.544 +# CONFIG_EL16 is not set 17.545 +CONFIG_EL3=y 17.546 +# CONFIG_3C515 is not set 17.547 +# CONFIG_LANCE is not set 17.548 +# CONFIG_NET_VENDOR_SMC is not set 17.549 +# CONFIG_ETHOC is not set 17.550 +# CONFIG_NET_VENDOR_RACAL is not set 17.551 +# CONFIG_DNET is not set 17.552 +# CONFIG_AT1700 is not set 17.553 +# CONFIG_DEPCA is not set 17.554 +# CONFIG_HP100 is not set 17.555 +CONFIG_NET_ISA=y 17.556 +# CONFIG_E2100 is not set 17.557 +# CONFIG_EWRK3 is not set 17.558 +# CONFIG_EEXPRESS is not set 17.559 +# CONFIG_EEXPRESS_PRO is not set 17.560 +# CONFIG_HPLAN_PLUS is not set 17.561 +# CONFIG_HPLAN is not set 17.562 +# CONFIG_LP486E is not set 17.563 +# CONFIG_ETH16I is not set 17.564 +CONFIG_NE2000=y 17.565 +# CONFIG_ZNET is not set 17.566 +# CONFIG_SEEQ8005 is not set 17.567 +# CONFIG_IBM_NEW_EMAC_ZMII is not set 17.568 +# CONFIG_IBM_NEW_EMAC_RGMII is not set 17.569 +# CONFIG_IBM_NEW_EMAC_TAH is not set 17.570 +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 17.571 +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set 17.572 +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 17.573 +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 17.574 +# CONFIG_NET_PCI is not set 17.575 +# CONFIG_B44 is not set 17.576 +# CONFIG_CS89x0 is not set 17.577 +# CONFIG_KS8851_MLL is not set 17.578 +# CONFIG_NETDEV_1000 is not set 17.579 +# CONFIG_NETDEV_10000 is not set 17.580 +# CONFIG_TR is not set 17.581 +# CONFIG_WLAN is not set 17.582 + 17.583 +# 17.584 +# Enable WiMAX (Networking options) to see the WiMAX drivers 17.585 +# 17.586 +# CONFIG_WAN is not set 17.587 + 17.588 +# 17.589 +# CAIF transport drivers 17.590 +# 17.591 +CONFIG_PPP=y 17.592 +# CONFIG_PPP_MULTILINK is not set 17.593 +# CONFIG_PPP_FILTER is not set 17.594 +CONFIG_PPP_ASYNC=y 17.595 +# CONFIG_PPP_SYNC_TTY is not set 17.596 +CONFIG_PPP_DEFLATE=y 17.597 +# CONFIG_PPP_BSDCOMP is not set 17.598 +# CONFIG_PPP_MPPE is not set 17.599 +CONFIG_PPPOE=y 17.600 +# CONFIG_SLIP is not set 17.601 +CONFIG_SLHC=y 17.602 +# CONFIG_NETCONSOLE is not set 17.603 +# CONFIG_NETPOLL is not set 17.604 +# CONFIG_NET_POLL_CONTROLLER is not set 17.605 +# CONFIG_ISDN is not set 17.606 +# CONFIG_PHONE is not set 17.607 + 17.608 +# 17.609 +# Input device support 17.610 +# 17.611 +CONFIG_INPUT=y 17.612 +# CONFIG_INPUT_FF_MEMLESS is not set 17.613 +# CONFIG_INPUT_POLLDEV is not set 17.614 +# CONFIG_INPUT_SPARSEKMAP is not set 17.615 + 17.616 +# 17.617 +# Userland interfaces 17.618 +# 17.619 +# CONFIG_INPUT_MOUSEDEV is not set 17.620 +# CONFIG_INPUT_JOYDEV is not set 17.621 +# CONFIG_INPUT_EVDEV is not set 17.622 +# CONFIG_INPUT_EVBUG is not set 17.623 + 17.624 +# 17.625 +# Input Device Drivers 17.626 +# 17.627 +CONFIG_INPUT_KEYBOARD=y 17.628 +CONFIG_KEYBOARD_ATKBD=y 17.629 +# CONFIG_KEYBOARD_LKKBD is not set 17.630 +# CONFIG_KEYBOARD_NEWTON is not set 17.631 +# CONFIG_KEYBOARD_OPENCORES is not set 17.632 +# CONFIG_KEYBOARD_STOWAWAY is not set 17.633 +# CONFIG_KEYBOARD_SUNKBD is not set 17.634 +# CONFIG_KEYBOARD_XTKBD is not set 17.635 +# CONFIG_INPUT_MOUSE is not set 17.636 +# CONFIG_INPUT_JOYSTICK is not set 17.637 +# CONFIG_INPUT_TABLET is not set 17.638 +# CONFIG_INPUT_TOUCHSCREEN is not set 17.639 +# CONFIG_INPUT_MISC is not set 17.640 + 17.641 +# 17.642 +# Hardware I/O ports 17.643 +# 17.644 +CONFIG_SERIO=y 17.645 +CONFIG_SERIO_I8042=y 17.646 +# CONFIG_SERIO_SERPORT is not set 17.647 +# CONFIG_SERIO_CT82C710 is not set 17.648 +CONFIG_SERIO_LIBPS2=y 17.649 +# CONFIG_SERIO_RAW is not set 17.650 +# CONFIG_SERIO_ALTERA_PS2 is not set 17.651 +# CONFIG_SERIO_PS2MULT is not set 17.652 +# CONFIG_GAMEPORT is not set 17.653 + 17.654 +# 17.655 +# Character devices 17.656 +# 17.657 +CONFIG_VT=y 17.658 +CONFIG_CONSOLE_TRANSLATIONS=y 17.659 +CONFIG_VT_CONSOLE=y 17.660 +CONFIG_HW_CONSOLE=y 17.661 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 17.662 +# CONFIG_DEVKMEM is not set 17.663 +# CONFIG_SERIAL_NONSTANDARD is not set 17.664 +# CONFIG_N_GSM is not set 17.665 + 17.666 +# 17.667 +# Serial drivers 17.668 +# 17.669 +CONFIG_SERIAL_8250=y 17.670 +# CONFIG_SERIAL_8250_CONSOLE is not set 17.671 +CONFIG_FIX_EARLYCON_MEM=y 17.672 +CONFIG_SERIAL_8250_NR_UARTS=2 17.673 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 17.674 +# CONFIG_SERIAL_8250_EXTENDED is not set 17.675 + 17.676 +# 17.677 +# Non-8250 serial port support 17.678 +# 17.679 +CONFIG_SERIAL_CORE=y 17.680 +# CONFIG_SERIAL_TIMBERDALE is not set 17.681 +# CONFIG_SERIAL_ALTERA_JTAGUART is not set 17.682 +# CONFIG_SERIAL_ALTERA_UART is not set 17.683 +CONFIG_UNIX98_PTYS=y 17.684 +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 17.685 +# CONFIG_LEGACY_PTYS is not set 17.686 +# CONFIG_TTY_PRINTK is not set 17.687 +# CONFIG_IPMI_HANDLER is not set 17.688 +# CONFIG_HW_RANDOM is not set 17.689 +# CONFIG_NVRAM is not set 17.690 +# CONFIG_RTC is not set 17.691 +# CONFIG_GEN_RTC is not set 17.692 +# CONFIG_DTLK is not set 17.693 +# CONFIG_R3964 is not set 17.694 +# CONFIG_MWAVE is not set 17.695 +# CONFIG_PC8736x_GPIO is not set 17.696 +# CONFIG_NSC_GPIO is not set 17.697 +# CONFIG_CS5535_GPIO is not set 17.698 +# CONFIG_RAW_DRIVER is not set 17.699 +# CONFIG_HANGCHECK_TIMER is not set 17.700 +# CONFIG_TCG_TPM is not set 17.701 +# CONFIG_TELCLOCK is not set 17.702 +CONFIG_DEVPORT=y 17.703 +# CONFIG_RAMOOPS is not set 17.704 +# CONFIG_I2C is not set 17.705 +# CONFIG_SPI is not set 17.706 + 17.707 +# 17.708 +# PPS support 17.709 +# 17.710 +# CONFIG_PPS is not set 17.711 +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 17.712 +# CONFIG_GPIOLIB is not set 17.713 +# CONFIG_W1 is not set 17.714 +# CONFIG_POWER_SUPPLY is not set 17.715 +# CONFIG_HWMON is not set 17.716 +# CONFIG_THERMAL is not set 17.717 +# CONFIG_WATCHDOG is not set 17.718 +CONFIG_SSB_POSSIBLE=y 17.719 + 17.720 +# 17.721 +# Sonics Silicon Backplane 17.722 +# 17.723 +# CONFIG_SSB is not set 17.724 +# CONFIG_MFD_SUPPORT is not set 17.725 +# CONFIG_REGULATOR is not set 17.726 +# CONFIG_MEDIA_SUPPORT is not set 17.727 + 17.728 +# 17.729 +# Graphics support 17.730 +# 17.731 +# CONFIG_DRM is not set 17.732 +# CONFIG_VGASTATE is not set 17.733 +# CONFIG_VIDEO_OUTPUT_CONTROL is not set 17.734 +# CONFIG_FB is not set 17.735 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 17.736 + 17.737 +# 17.738 +# Display device support 17.739 +# 17.740 +# CONFIG_DISPLAY_SUPPORT is not set 17.741 + 17.742 +# 17.743 +# Console display driver support 17.744 +# 17.745 +CONFIG_VGA_CONSOLE=y 17.746 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 17.747 +# CONFIG_MDA_CONSOLE is not set 17.748 +CONFIG_DUMMY_CONSOLE=y 17.749 +# CONFIG_SOUND is not set 17.750 +# CONFIG_HID_SUPPORT is not set 17.751 +# CONFIG_USB_SUPPORT is not set 17.752 +# CONFIG_MMC is not set 17.753 +# CONFIG_MEMSTICK is not set 17.754 +# CONFIG_NEW_LEDS is not set 17.755 +# CONFIG_ACCESSIBILITY is not set 17.756 +# CONFIG_EDAC is not set 17.757 +# CONFIG_RTC_CLASS is not set 17.758 +# CONFIG_DMADEVICES is not set 17.759 +# CONFIG_AUXDISPLAY is not set 17.760 +# CONFIG_UIO is not set 17.761 +# CONFIG_STAGING is not set 17.762 +# CONFIG_X86_PLATFORM_DEVICES is not set 17.763 + 17.764 +# 17.765 +# Firmware Drivers 17.766 +# 17.767 +# CONFIG_EDD is not set 17.768 +# CONFIG_FIRMWARE_MEMMAP is not set 17.769 +# CONFIG_DELL_RBU is not set 17.770 +# CONFIG_DCDBAS is not set 17.771 +# CONFIG_ISCSI_IBFT_FIND is not set 17.772 + 17.773 +# 17.774 +# File systems 17.775 +# 17.776 +# CONFIG_EXT2_FS is not set 17.777 +CONFIG_EXT3_FS=y 17.778 +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 17.779 +# CONFIG_EXT3_FS_XATTR is not set 17.780 +# CONFIG_EXT4_FS is not set 17.781 +CONFIG_JBD=y 17.782 +# CONFIG_REISERFS_FS is not set 17.783 +# CONFIG_JFS_FS is not set 17.784 +# CONFIG_FS_POSIX_ACL is not set 17.785 +# CONFIG_XFS_FS is not set 17.786 +# CONFIG_BTRFS_FS is not set 17.787 +# CONFIG_NILFS2_FS is not set 17.788 +# CONFIG_FILE_LOCKING is not set 17.789 +# CONFIG_FSNOTIFY is not set 17.790 +# CONFIG_DNOTIFY is not set 17.791 +# CONFIG_INOTIFY_USER is not set 17.792 +# CONFIG_FANOTIFY is not set 17.793 +# CONFIG_QUOTA is not set 17.794 +# CONFIG_QUOTACTL is not set 17.795 +# CONFIG_AUTOFS4_FS is not set 17.796 +# CONFIG_FUSE_FS is not set 17.797 + 17.798 +# 17.799 +# Caches 17.800 +# 17.801 +# CONFIG_FSCACHE is not set 17.802 + 17.803 +# 17.804 +# CD-ROM/DVD Filesystems 17.805 +# 17.806 +# CONFIG_ISO9660_FS is not set 17.807 +# CONFIG_UDF_FS is not set 17.808 + 17.809 +# 17.810 +# DOS/FAT/NT Filesystems 17.811 +# 17.812 +# CONFIG_MSDOS_FS is not set 17.813 +# CONFIG_VFAT_FS is not set 17.814 +# CONFIG_NTFS_FS is not set 17.815 + 17.816 +# 17.817 +# Pseudo filesystems 17.818 +# 17.819 +CONFIG_PROC_FS=y 17.820 +# CONFIG_PROC_KCORE is not set 17.821 +CONFIG_PROC_SYSCTL=y 17.822 +# CONFIG_PROC_PAGE_MONITOR is not set 17.823 +# CONFIG_SYSFS is not set 17.824 +# CONFIG_HUGETLBFS is not set 17.825 +# CONFIG_HUGETLB_PAGE is not set 17.826 +# CONFIG_MISC_FILESYSTEMS is not set 17.827 +# CONFIG_NETWORK_FILESYSTEMS is not set 17.828 + 17.829 +# 17.830 +# Partition Types 17.831 +# 17.832 +# CONFIG_PARTITION_ADVANCED is not set 17.833 +CONFIG_MSDOS_PARTITION=y 17.834 +# CONFIG_NLS is not set 17.835 + 17.836 +# 17.837 +# Kernel hacking 17.838 +# 17.839 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 17.840 +# CONFIG_PRINTK_TIME is not set 17.841 +# CONFIG_ENABLE_WARN_DEPRECATED is not set 17.842 +# CONFIG_ENABLE_MUST_CHECK is not set 17.843 +CONFIG_FRAME_WARN=1024 17.844 +# CONFIG_MAGIC_SYSRQ is not set 17.845 +# CONFIG_STRIP_ASM_SYMS is not set 17.846 +# CONFIG_UNUSED_SYMBOLS is not set 17.847 +# CONFIG_DEBUG_FS is not set 17.848 +# CONFIG_HEADERS_CHECK is not set 17.849 +# CONFIG_DEBUG_KERNEL is not set 17.850 +# CONFIG_HARDLOCKUP_DETECTOR is not set 17.851 +CONFIG_BKL=y 17.852 +# CONFIG_SPARSE_RCU_POINTER is not set 17.853 +# CONFIG_DEBUG_MEMORY_INIT is not set 17.854 +CONFIG_ARCH_WANT_FRAME_POINTERS=y 17.855 +# CONFIG_FRAME_POINTER is not set 17.856 +# CONFIG_SYSCTL_SYSCALL_CHECK is not set 17.857 +CONFIG_USER_STACKTRACE_SUPPORT=y 17.858 +CONFIG_HAVE_FUNCTION_TRACER=y 17.859 +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 17.860 +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y 17.861 +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 17.862 +CONFIG_HAVE_DYNAMIC_FTRACE=y 17.863 +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 17.864 +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 17.865 +CONFIG_HAVE_C_RECORDMCOUNT=y 17.866 +CONFIG_TRACING_SUPPORT=y 17.867 +# CONFIG_FTRACE is not set 17.868 +# CONFIG_DMA_API_DEBUG is not set 17.869 +# CONFIG_ATOMIC64_SELFTEST is not set 17.870 +# CONFIG_SAMPLES is not set 17.871 +CONFIG_HAVE_ARCH_KGDB=y 17.872 +CONFIG_HAVE_ARCH_KMEMCHECK=y 17.873 +# CONFIG_STRICT_DEVMEM is not set 17.874 +# CONFIG_X86_VERBOSE_BOOTUP is not set 17.875 +# CONFIG_EARLY_PRINTK is not set 17.876 +# CONFIG_DOUBLEFAULT is not set 17.877 +# CONFIG_IOMMU_STRESS is not set 17.878 +CONFIG_HAVE_MMIOTRACE_SUPPORT=y 17.879 +CONFIG_IO_DELAY_TYPE_0X80=0 17.880 +CONFIG_IO_DELAY_TYPE_0XED=1 17.881 +CONFIG_IO_DELAY_TYPE_UDELAY=2 17.882 +CONFIG_IO_DELAY_TYPE_NONE=3 17.883 +CONFIG_IO_DELAY_0X80=y 17.884 +# CONFIG_IO_DELAY_0XED is not set 17.885 +# CONFIG_IO_DELAY_UDELAY is not set 17.886 +# CONFIG_IO_DELAY_NONE is not set 17.887 +CONFIG_DEFAULT_IO_DELAY_TYPE=0 17.888 +CONFIG_OPTIMIZE_INLINING=y 17.889 + 17.890 +# 17.891 +# Security options 17.892 +# 17.893 +# CONFIG_KEYS is not set 17.894 +# CONFIG_SECURITY_DMESG_RESTRICT is not set 17.895 +# CONFIG_SECURITYFS is not set 17.896 +CONFIG_DEFAULT_SECURITY_DAC=y 17.897 +CONFIG_DEFAULT_SECURITY="" 17.898 +# CONFIG_CRYPTO is not set 17.899 +CONFIG_HAVE_KVM=y 17.900 +# CONFIG_VIRTUALIZATION is not set 17.901 +# CONFIG_BINARY_PRINTF is not set 17.902 + 17.903 +# 17.904 +# Library routines 17.905 +# 17.906 +CONFIG_BITREVERSE=y 17.907 +CONFIG_GENERIC_FIND_FIRST_BIT=y 17.908 +CONFIG_GENERIC_FIND_NEXT_BIT=y 17.909 +CONFIG_GENERIC_FIND_LAST_BIT=y 17.910 +CONFIG_CRC_CCITT=y 17.911 +# CONFIG_CRC16 is not set 17.912 +# CONFIG_CRC_T10DIF is not set 17.913 +# CONFIG_CRC_ITU_T is not set 17.914 +CONFIG_CRC32=y 17.915 +# CONFIG_CRC7 is not set 17.916 +# CONFIG_LIBCRC32C is not set 17.917 +CONFIG_ZLIB_INFLATE=y 17.918 +CONFIG_ZLIB_DEFLATE=y 17.919 +# CONFIG_XZ_DEC is not set 17.920 +# CONFIG_XZ_DEC_BCJ is not set 17.921 +CONFIG_DECOMPRESS_GZIP=y 17.922 +CONFIG_DECOMPRESS_LZMA=y 17.923 +CONFIG_HAS_IOMEM=y 17.924 +CONFIG_HAS_IOPORT=y 17.925 +CONFIG_HAS_DMA=y 17.926 +CONFIG_NLATTR=y
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/kernel-modular/stuff/linux-2.6.37-slitaz.config-i486-lguest Tue Feb 01 09:37:33 2011 +0100 18.3 @@ -0,0 +1,858 @@ 18.4 +# 18.5 +# Automatically generated make config: don't edit 18.6 +# Linux/i386 2.6.37 Kernel Configuration 18.7 +# Sun Jan 30 23:06:32 2011 18.8 +# 18.9 +# CONFIG_64BIT is not set 18.10 +CONFIG_X86_32=y 18.11 +# CONFIG_X86_64 is not set 18.12 +CONFIG_X86=y 18.13 +CONFIG_INSTRUCTION_DECODER=y 18.14 +CONFIG_OUTPUT_FORMAT="elf32-i386" 18.15 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" 18.16 +CONFIG_GENERIC_CMOS_UPDATE=y 18.17 +CONFIG_CLOCKSOURCE_WATCHDOG=y 18.18 +CONFIG_GENERIC_CLOCKEVENTS=y 18.19 +CONFIG_LOCKDEP_SUPPORT=y 18.20 +CONFIG_STACKTRACE_SUPPORT=y 18.21 +CONFIG_HAVE_LATENCYTOP_SUPPORT=y 18.22 +CONFIG_MMU=y 18.23 +CONFIG_ZONE_DMA=y 18.24 +# CONFIG_NEED_DMA_MAP_STATE is not set 18.25 +CONFIG_NEED_SG_DMA_LENGTH=y 18.26 +CONFIG_GENERIC_ISA_DMA=y 18.27 +CONFIG_GENERIC_IOMAP=y 18.28 +CONFIG_GENERIC_HWEIGHT=y 18.29 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 18.30 +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set 18.31 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y 18.32 +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 18.33 +CONFIG_GENERIC_CALIBRATE_DELAY=y 18.34 +# CONFIG_GENERIC_TIME_VSYSCALL is not set 18.35 +CONFIG_ARCH_HAS_CPU_RELAX=y 18.36 +CONFIG_ARCH_HAS_DEFAULT_IDLE=y 18.37 +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 18.38 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y 18.39 +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 18.40 +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 18.41 +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 18.42 +CONFIG_ARCH_HIBERNATION_POSSIBLE=y 18.43 +CONFIG_ARCH_SUSPEND_POSSIBLE=y 18.44 +# CONFIG_ZONE_DMA32 is not set 18.45 +CONFIG_ARCH_POPULATES_NODE_MAP=y 18.46 +# CONFIG_AUDIT_ARCH is not set 18.47 +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 18.48 +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 18.49 +CONFIG_X86_32_LAZY_GS=y 18.50 +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" 18.51 +CONFIG_KTIME_SCALAR=y 18.52 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18.53 +CONFIG_CONSTRUCTORS=y 18.54 +CONFIG_HAVE_IRQ_WORK=y 18.55 +CONFIG_IRQ_WORK=y 18.56 + 18.57 +# 18.58 +# General setup 18.59 +# 18.60 +CONFIG_EXPERIMENTAL=y 18.61 +CONFIG_BROKEN_ON_SMP=y 18.62 +CONFIG_INIT_ENV_ARG_LIMIT=32 18.63 +CONFIG_CROSS_COMPILE="" 18.64 +CONFIG_LOCALVERSION="-slitaz" 18.65 +# CONFIG_LOCALVERSION_AUTO is not set 18.66 +CONFIG_HAVE_KERNEL_GZIP=y 18.67 +CONFIG_HAVE_KERNEL_BZIP2=y 18.68 +CONFIG_HAVE_KERNEL_LZMA=y 18.69 +CONFIG_HAVE_KERNEL_XZ=y 18.70 +CONFIG_HAVE_KERNEL_LZO=y 18.71 +# CONFIG_KERNEL_GZIP is not set 18.72 +# CONFIG_KERNEL_BZIP2 is not set 18.73 +CONFIG_KERNEL_LZMA=y 18.74 +# CONFIG_KERNEL_XZ is not set 18.75 +# CONFIG_KERNEL_LZO is not set 18.76 +# CONFIG_SWAP is not set 18.77 +CONFIG_SYSVIPC=y 18.78 +CONFIG_SYSVIPC_SYSCTL=y 18.79 +# CONFIG_POSIX_MQUEUE is not set 18.80 +# CONFIG_BSD_PROCESS_ACCT is not set 18.81 +# CONFIG_TASKSTATS is not set 18.82 +# CONFIG_AUDIT is not set 18.83 +CONFIG_HAVE_GENERIC_HARDIRQS=y 18.84 + 18.85 +# 18.86 +# IRQ subsystem 18.87 +# 18.88 +CONFIG_GENERIC_HARDIRQS=y 18.89 +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 18.90 +# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 18.91 +CONFIG_HAVE_SPARSE_IRQ=y 18.92 +CONFIG_GENERIC_IRQ_PROBE=y 18.93 +# CONFIG_GENERIC_PENDING_IRQ is not set 18.94 +# CONFIG_AUTO_IRQ_AFFINITY is not set 18.95 +# CONFIG_IRQ_PER_CPU is not set 18.96 +# CONFIG_HARDIRQS_SW_RESEND is not set 18.97 +# CONFIG_SPARSE_IRQ is not set 18.98 + 18.99 +# 18.100 +# RCU Subsystem 18.101 +# 18.102 +CONFIG_TINY_RCU=y 18.103 +# CONFIG_PREEMPT_RCU is not set 18.104 +# CONFIG_TREE_RCU_TRACE is not set 18.105 +CONFIG_IKCONFIG=y 18.106 +CONFIG_IKCONFIG_PROC=y 18.107 +CONFIG_LOG_BUF_SHIFT=12 18.108 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y 18.109 +# CONFIG_NAMESPACES is not set 18.110 +# CONFIG_RELAY is not set 18.111 +CONFIG_BLK_DEV_INITRD=y 18.112 +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" 18.113 +CONFIG_INITRAMFS_ROOT_UID=0 18.114 +CONFIG_INITRAMFS_ROOT_GID=0 18.115 +CONFIG_RD_GZIP=y 18.116 +# CONFIG_RD_BZIP2 is not set 18.117 +CONFIG_RD_LZMA=y 18.118 +# CONFIG_RD_LZO is not set 18.119 +CONFIG_INITRAMFS_COMPRESSION_NONE=y 18.120 +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set 18.121 +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set 18.122 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 18.123 +CONFIG_SYSCTL=y 18.124 +CONFIG_ANON_INODES=y 18.125 +CONFIG_EMBEDDED=y 18.126 +# CONFIG_UID16 is not set 18.127 +# CONFIG_SYSCTL_SYSCALL is not set 18.128 +# CONFIG_KALLSYMS is not set 18.129 +# CONFIG_HOTPLUG is not set 18.130 +CONFIG_PRINTK=y 18.131 +# CONFIG_BUG is not set 18.132 +# CONFIG_ELF_CORE is not set 18.133 +CONFIG_PCSPKR_PLATFORM=y 18.134 +# CONFIG_BASE_FULL is not set 18.135 +CONFIG_FUTEX=y 18.136 +# CONFIG_EPOLL is not set 18.137 +# CONFIG_SIGNALFD is not set 18.138 +# CONFIG_TIMERFD is not set 18.139 +# CONFIG_EVENTFD is not set 18.140 +# CONFIG_SHMEM is not set 18.141 +# CONFIG_AIO is not set 18.142 +CONFIG_HAVE_PERF_EVENTS=y 18.143 + 18.144 +# 18.145 +# Kernel Performance Events And Counters 18.146 +# 18.147 +CONFIG_PERF_EVENTS=y 18.148 +# CONFIG_PERF_COUNTERS is not set 18.149 +# CONFIG_VM_EVENT_COUNTERS is not set 18.150 +CONFIG_COMPAT_BRK=y 18.151 +# CONFIG_SLAB is not set 18.152 +# CONFIG_SLUB is not set 18.153 +CONFIG_SLOB=y 18.154 +# CONFIG_PROFILING is not set 18.155 +CONFIG_HAVE_OPROFILE=y 18.156 +# CONFIG_JUMP_LABEL is not set 18.157 +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 18.158 +CONFIG_HAVE_IOREMAP_PROT=y 18.159 +CONFIG_HAVE_KPROBES=y 18.160 +CONFIG_HAVE_KRETPROBES=y 18.161 +CONFIG_HAVE_OPTPROBES=y 18.162 +CONFIG_HAVE_ARCH_TRACEHOOK=y 18.163 +CONFIG_HAVE_DMA_ATTRS=y 18.164 +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y 18.165 +CONFIG_HAVE_DMA_API_DEBUG=y 18.166 +CONFIG_HAVE_HW_BREAKPOINT=y 18.167 +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 18.168 +CONFIG_HAVE_USER_RETURN_NOTIFIER=y 18.169 +CONFIG_HAVE_PERF_EVENTS_NMI=y 18.170 +CONFIG_HAVE_ARCH_JUMP_LABEL=y 18.171 + 18.172 +# 18.173 +# GCOV-based kernel profiling 18.174 +# 18.175 +CONFIG_HAVE_GENERIC_DMA_COHERENT=y 18.176 +CONFIG_RT_MUTEXES=y 18.177 +CONFIG_BASE_SMALL=1 18.178 +# CONFIG_MODULES is not set 18.179 +CONFIG_BLOCK=y 18.180 +# CONFIG_LBDAF is not set 18.181 +# CONFIG_BLK_DEV_BSG is not set 18.182 +# CONFIG_BLK_DEV_INTEGRITY is not set 18.183 + 18.184 +# 18.185 +# IO Schedulers 18.186 +# 18.187 +CONFIG_IOSCHED_NOOP=y 18.188 +# CONFIG_IOSCHED_DEADLINE is not set 18.189 +# CONFIG_IOSCHED_CFQ is not set 18.190 +CONFIG_DEFAULT_NOOP=y 18.191 +CONFIG_DEFAULT_IOSCHED="noop" 18.192 +# CONFIG_INLINE_SPIN_TRYLOCK is not set 18.193 +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set 18.194 +# CONFIG_INLINE_SPIN_LOCK is not set 18.195 +# CONFIG_INLINE_SPIN_LOCK_BH is not set 18.196 +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set 18.197 +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set 18.198 +CONFIG_INLINE_SPIN_UNLOCK=y 18.199 +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set 18.200 +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 18.201 +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set 18.202 +# CONFIG_INLINE_READ_TRYLOCK is not set 18.203 +# CONFIG_INLINE_READ_LOCK is not set 18.204 +# CONFIG_INLINE_READ_LOCK_BH is not set 18.205 +# CONFIG_INLINE_READ_LOCK_IRQ is not set 18.206 +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set 18.207 +CONFIG_INLINE_READ_UNLOCK=y 18.208 +# CONFIG_INLINE_READ_UNLOCK_BH is not set 18.209 +CONFIG_INLINE_READ_UNLOCK_IRQ=y 18.210 +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set 18.211 +# CONFIG_INLINE_WRITE_TRYLOCK is not set 18.212 +# CONFIG_INLINE_WRITE_LOCK is not set 18.213 +# CONFIG_INLINE_WRITE_LOCK_BH is not set 18.214 +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set 18.215 +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set 18.216 +CONFIG_INLINE_WRITE_UNLOCK=y 18.217 +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set 18.218 +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 18.219 +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set 18.220 +# CONFIG_MUTEX_SPIN_ON_OWNER is not set 18.221 +# CONFIG_FREEZER is not set 18.222 + 18.223 +# 18.224 +# Processor type and features 18.225 +# 18.226 +CONFIG_TICK_ONESHOT=y 18.227 +CONFIG_NO_HZ=y 18.228 +# CONFIG_HIGH_RES_TIMERS is not set 18.229 +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 18.230 +# CONFIG_SMP is not set 18.231 +# CONFIG_X86_EXTENDED_PLATFORM is not set 18.232 +CONFIG_SCHED_OMIT_FRAME_POINTER=y 18.233 +CONFIG_PARAVIRT_GUEST=y 18.234 +# CONFIG_XEN_PRIVILEGED_GUEST is not set 18.235 +CONFIG_KVM_CLOCK=y 18.236 +CONFIG_KVM_GUEST=y 18.237 +CONFIG_LGUEST_GUEST=y 18.238 +CONFIG_PARAVIRT=y 18.239 +CONFIG_PARAVIRT_CLOCK=y 18.240 +CONFIG_NO_BOOTMEM=y 18.241 +# CONFIG_MEMTEST is not set 18.242 +# CONFIG_M386 is not set 18.243 +# CONFIG_M486 is not set 18.244 +# CONFIG_M586 is not set 18.245 +# CONFIG_M586TSC is not set 18.246 +# CONFIG_M586MMX is not set 18.247 +# CONFIG_M686 is not set 18.248 +# CONFIG_MPENTIUMII is not set 18.249 +CONFIG_MPENTIUMIII=y 18.250 +# CONFIG_MPENTIUMM is not set 18.251 +# CONFIG_MPENTIUM4 is not set 18.252 +# CONFIG_MK6 is not set 18.253 +# CONFIG_MK7 is not set 18.254 +# CONFIG_MK8 is not set 18.255 +# CONFIG_MCRUSOE is not set 18.256 +# CONFIG_MEFFICEON is not set 18.257 +# CONFIG_MWINCHIPC6 is not set 18.258 +# CONFIG_MWINCHIP3D is not set 18.259 +# CONFIG_MGEODEGX1 is not set 18.260 +# CONFIG_MGEODE_LX is not set 18.261 +# CONFIG_MCYRIXIII is not set 18.262 +# CONFIG_MVIAC3_2 is not set 18.263 +# CONFIG_MVIAC7 is not set 18.264 +# CONFIG_MCORE2 is not set 18.265 +# CONFIG_MATOM is not set 18.266 +CONFIG_X86_GENERIC=y 18.267 +CONFIG_X86_CPU=y 18.268 +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 18.269 +CONFIG_X86_CMPXCHG=y 18.270 +CONFIG_X86_L1_CACHE_SHIFT=6 18.271 +CONFIG_X86_XADD=y 18.272 +CONFIG_X86_WP_WORKS_OK=y 18.273 +CONFIG_X86_INVLPG=y 18.274 +CONFIG_X86_BSWAP=y 18.275 +CONFIG_X86_POPAD_OK=y 18.276 +CONFIG_X86_INTEL_USERCOPY=y 18.277 +CONFIG_X86_USE_PPRO_CHECKSUM=y 18.278 +CONFIG_X86_TSC=y 18.279 +CONFIG_X86_CMPXCHG64=y 18.280 +CONFIG_X86_CMOV=y 18.281 +CONFIG_X86_MINIMUM_CPU_FAMILY=5 18.282 +CONFIG_X86_DEBUGCTLMSR=y 18.283 +# CONFIG_PROCESSOR_SELECT is not set 18.284 +CONFIG_CPU_SUP_INTEL=y 18.285 +CONFIG_CPU_SUP_CYRIX_32=y 18.286 +CONFIG_CPU_SUP_AMD=y 18.287 +CONFIG_CPU_SUP_CENTAUR=y 18.288 +CONFIG_CPU_SUP_TRANSMETA_32=y 18.289 +CONFIG_CPU_SUP_UMC_32=y 18.290 +# CONFIG_HPET_TIMER is not set 18.291 +# CONFIG_DMI is not set 18.292 +# CONFIG_IOMMU_HELPER is not set 18.293 +# CONFIG_IOMMU_API is not set 18.294 +CONFIG_NR_CPUS=1 18.295 +# CONFIG_IRQ_TIME_ACCOUNTING is not set 18.296 +CONFIG_PREEMPT_NONE=y 18.297 +# CONFIG_PREEMPT_VOLUNTARY is not set 18.298 +# CONFIG_PREEMPT is not set 18.299 +# CONFIG_X86_UP_APIC is not set 18.300 +# CONFIG_X86_MCE is not set 18.301 +# CONFIG_VM86 is not set 18.302 +# CONFIG_TOSHIBA is not set 18.303 +# CONFIG_I8K is not set 18.304 +# CONFIG_X86_REBOOTFIXUPS is not set 18.305 +# CONFIG_MICROCODE is not set 18.306 +# CONFIG_X86_MSR is not set 18.307 +# CONFIG_X86_CPUID is not set 18.308 +CONFIG_NOHIGHMEM=y 18.309 +# CONFIG_HIGHMEM4G is not set 18.310 +# CONFIG_HIGHMEM64G is not set 18.311 +CONFIG_VMSPLIT_3G=y 18.312 +# CONFIG_VMSPLIT_3G_OPT is not set 18.313 +# CONFIG_VMSPLIT_2G is not set 18.314 +# CONFIG_VMSPLIT_2G_OPT is not set 18.315 +# CONFIG_VMSPLIT_1G is not set 18.316 +CONFIG_PAGE_OFFSET=0xC0000000 18.317 +# CONFIG_X86_PAE is not set 18.318 +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 18.319 +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set 18.320 +CONFIG_ARCH_FLATMEM_ENABLE=y 18.321 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 18.322 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 18.323 +CONFIG_ILLEGAL_POINTER_VALUE=0 18.324 +CONFIG_SELECT_MEMORY_MODEL=y 18.325 +CONFIG_FLATMEM_MANUAL=y 18.326 +# CONFIG_SPARSEMEM_MANUAL is not set 18.327 +CONFIG_FLATMEM=y 18.328 +CONFIG_FLAT_NODE_MEM_MAP=y 18.329 +CONFIG_SPARSEMEM_STATIC=y 18.330 +CONFIG_HAVE_MEMBLOCK=y 18.331 +CONFIG_PAGEFLAGS_EXTENDED=y 18.332 +CONFIG_SPLIT_PTLOCK_CPUS=4 18.333 +# CONFIG_PHYS_ADDR_T_64BIT is not set 18.334 +CONFIG_ZONE_DMA_FLAG=1 18.335 +CONFIG_BOUNCE=y 18.336 +CONFIG_VIRT_TO_BUS=y 18.337 +# CONFIG_KSM is not set 18.338 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 18.339 +CONFIG_NEED_PER_CPU_KM=y 18.340 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 18.341 +CONFIG_X86_RESERVE_LOW=64 18.342 +# CONFIG_MATH_EMULATION is not set 18.343 +# CONFIG_MTRR is not set 18.344 +# CONFIG_SECCOMP is not set 18.345 +# CONFIG_CC_STACKPROTECTOR is not set 18.346 +CONFIG_HZ_100=y 18.347 +# CONFIG_HZ_250 is not set 18.348 +# CONFIG_HZ_300 is not set 18.349 +# CONFIG_HZ_1000 is not set 18.350 +CONFIG_HZ=100 18.351 +# CONFIG_SCHED_HRTICK is not set 18.352 +# CONFIG_KEXEC is not set 18.353 +CONFIG_PHYSICAL_START=0x100000 18.354 +# CONFIG_RELOCATABLE is not set 18.355 +CONFIG_PHYSICAL_ALIGN=0x100000 18.356 +# CONFIG_COMPAT_VDSO is not set 18.357 +# CONFIG_CMDLINE_BOOL is not set 18.358 + 18.359 +# 18.360 +# Power management and ACPI options 18.361 +# 18.362 +# CONFIG_PM is not set 18.363 +# CONFIG_SFI is not set 18.364 + 18.365 +# 18.366 +# CPU Frequency scaling 18.367 +# 18.368 +# CONFIG_CPU_FREQ is not set 18.369 +# CONFIG_CPU_IDLE is not set 18.370 + 18.371 +# 18.372 +# Bus options (PCI etc.) 18.373 +# 18.374 +# CONFIG_PCI is not set 18.375 +# CONFIG_ARCH_SUPPORTS_MSI is not set 18.376 +CONFIG_ISA_DMA_API=y 18.377 +# CONFIG_ISA is not set 18.378 +# CONFIG_MCA is not set 18.379 +# CONFIG_SCx200 is not set 18.380 +# CONFIG_OLPC is not set 18.381 +# CONFIG_OLPC_OPENFIRMWARE is not set 18.382 + 18.383 +# 18.384 +# Executable file formats / Emulations 18.385 +# 18.386 +CONFIG_BINFMT_ELF=y 18.387 +CONFIG_HAVE_AOUT=y 18.388 +# CONFIG_BINFMT_AOUT is not set 18.389 +# CONFIG_BINFMT_MISC is not set 18.390 +CONFIG_HAVE_ATOMIC_IOMAP=y 18.391 +CONFIG_HAVE_TEXT_POKE_SMP=y 18.392 +CONFIG_NET=y 18.393 + 18.394 +# 18.395 +# Networking options 18.396 +# 18.397 +CONFIG_PACKET=y 18.398 +CONFIG_UNIX=y 18.399 +# CONFIG_NET_KEY is not set 18.400 +CONFIG_INET=y 18.401 +# CONFIG_IP_MULTICAST is not set 18.402 +# CONFIG_IP_ADVANCED_ROUTER is not set 18.403 +CONFIG_IP_FIB_HASH=y 18.404 +# CONFIG_IP_PNP is not set 18.405 +# CONFIG_NET_IPIP is not set 18.406 +# CONFIG_NET_IPGRE_DEMUX is not set 18.407 +# CONFIG_ARPD is not set 18.408 +# CONFIG_SYN_COOKIES is not set 18.409 +# CONFIG_INET_AH is not set 18.410 +# CONFIG_INET_ESP is not set 18.411 +# CONFIG_INET_IPCOMP is not set 18.412 +# CONFIG_INET_XFRM_TUNNEL is not set 18.413 +# CONFIG_INET_TUNNEL is not set 18.414 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 18.415 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set 18.416 +# CONFIG_INET_XFRM_MODE_BEET is not set 18.417 +# CONFIG_INET_LRO is not set 18.418 +# CONFIG_INET_DIAG is not set 18.419 +# CONFIG_TCP_CONG_ADVANCED is not set 18.420 +CONFIG_TCP_CONG_CUBIC=y 18.421 +CONFIG_DEFAULT_TCP_CONG="cubic" 18.422 +# CONFIG_TCP_MD5SIG is not set 18.423 +# CONFIG_IPV6 is not set 18.424 +# CONFIG_NETWORK_SECMARK is not set 18.425 +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set 18.426 +# CONFIG_NETFILTER is not set 18.427 +# CONFIG_IP_DCCP is not set 18.428 +# CONFIG_IP_SCTP is not set 18.429 +# CONFIG_RDS is not set 18.430 +# CONFIG_TIPC is not set 18.431 +# CONFIG_ATM is not set 18.432 +# CONFIG_L2TP is not set 18.433 +# CONFIG_BRIDGE is not set 18.434 +# CONFIG_NET_DSA is not set 18.435 +# CONFIG_VLAN_8021Q is not set 18.436 +# CONFIG_DECNET is not set 18.437 +# CONFIG_LLC2 is not set 18.438 +# CONFIG_IPX is not set 18.439 +# CONFIG_ATALK is not set 18.440 +# CONFIG_X25 is not set 18.441 +# CONFIG_LAPB is not set 18.442 +# CONFIG_ECONET is not set 18.443 +# CONFIG_WAN_ROUTER is not set 18.444 +# CONFIG_PHONET is not set 18.445 +# CONFIG_IEEE802154 is not set 18.446 +# CONFIG_NET_SCHED is not set 18.447 +# CONFIG_DCB is not set 18.448 + 18.449 +# 18.450 +# Network testing 18.451 +# 18.452 +# CONFIG_NET_PKTGEN is not set 18.453 +# CONFIG_HAMRADIO is not set 18.454 +# CONFIG_CAN is not set 18.455 +# CONFIG_IRDA is not set 18.456 +# CONFIG_BT is not set 18.457 +# CONFIG_AF_RXRPC is not set 18.458 +# CONFIG_WIRELESS is not set 18.459 +# CONFIG_WIMAX is not set 18.460 +# CONFIG_RFKILL is not set 18.461 +# CONFIG_NET_9P is not set 18.462 +# CONFIG_CAIF is not set 18.463 +# CONFIG_CEPH_LIB is not set 18.464 + 18.465 +# 18.466 +# Device Drivers 18.467 +# 18.468 + 18.469 +# 18.470 +# Generic Driver Options 18.471 +# 18.472 +CONFIG_STANDALONE=y 18.473 +CONFIG_PREVENT_FIRMWARE_BUILD=y 18.474 +CONFIG_FW_LOADER=y 18.475 +CONFIG_FIRMWARE_IN_KERNEL=y 18.476 +CONFIG_EXTRA_FIRMWARE="" 18.477 +# CONFIG_SYS_HYPERVISOR is not set 18.478 +# CONFIG_CONNECTOR is not set 18.479 +# CONFIG_MTD is not set 18.480 +# CONFIG_PARPORT is not set 18.481 +CONFIG_BLK_DEV=y 18.482 +# CONFIG_BLK_DEV_FD is not set 18.483 +# CONFIG_BLK_DEV_COW_COMMON is not set 18.484 +CONFIG_BLK_DEV_LOOP=y 18.485 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set 18.486 + 18.487 +# 18.488 +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected 18.489 +# 18.490 +# CONFIG_BLK_DEV_NBD is not set 18.491 +# CONFIG_BLK_DEV_RAM is not set 18.492 +# CONFIG_CDROM_PKTCDVD is not set 18.493 +# CONFIG_ATA_OVER_ETH is not set 18.494 +CONFIG_VIRTIO_BLK=y 18.495 +# CONFIG_BLK_DEV_HD is not set 18.496 +# CONFIG_BLK_DEV_RBD is not set 18.497 +# CONFIG_MISC_DEVICES is not set 18.498 +CONFIG_HAVE_IDE=y 18.499 +# CONFIG_IDE is not set 18.500 + 18.501 +# 18.502 +# SCSI device support 18.503 +# 18.504 +CONFIG_SCSI_MOD=y 18.505 +# CONFIG_RAID_ATTRS is not set 18.506 +# CONFIG_SCSI is not set 18.507 +# CONFIG_SCSI_DMA is not set 18.508 +# CONFIG_SCSI_NETLINK is not set 18.509 +# CONFIG_ATA is not set 18.510 +# CONFIG_MD is not set 18.511 +# CONFIG_MACINTOSH_DRIVERS is not set 18.512 +CONFIG_NETDEVICES=y 18.513 +# CONFIG_DUMMY is not set 18.514 +# CONFIG_BONDING is not set 18.515 +# CONFIG_MACVLAN is not set 18.516 +# CONFIG_EQUALIZER is not set 18.517 +# CONFIG_TUN is not set 18.518 +# CONFIG_VETH is not set 18.519 +# CONFIG_MII is not set 18.520 +# CONFIG_PHYLIB is not set 18.521 +# CONFIG_NET_ETHERNET is not set 18.522 +# CONFIG_NETDEV_1000 is not set 18.523 +# CONFIG_NETDEV_10000 is not set 18.524 +# CONFIG_WLAN is not set 18.525 + 18.526 +# 18.527 +# Enable WiMAX (Networking options) to see the WiMAX drivers 18.528 +# 18.529 +# CONFIG_WAN is not set 18.530 + 18.531 +# 18.532 +# CAIF transport drivers 18.533 +# 18.534 +# CONFIG_PPP is not set 18.535 +# CONFIG_SLIP is not set 18.536 +# CONFIG_NETCONSOLE is not set 18.537 +# CONFIG_NETPOLL is not set 18.538 +# CONFIG_NET_POLL_CONTROLLER is not set 18.539 +CONFIG_VIRTIO_NET=y 18.540 +# CONFIG_ISDN is not set 18.541 +# CONFIG_PHONE is not set 18.542 + 18.543 +# 18.544 +# Input device support 18.545 +# 18.546 +CONFIG_INPUT=y 18.547 +# CONFIG_INPUT_FF_MEMLESS is not set 18.548 +# CONFIG_INPUT_POLLDEV is not set 18.549 +# CONFIG_INPUT_SPARSEKMAP is not set 18.550 + 18.551 +# 18.552 +# Userland interfaces 18.553 +# 18.554 +# CONFIG_INPUT_MOUSEDEV is not set 18.555 +# CONFIG_INPUT_JOYDEV is not set 18.556 +# CONFIG_INPUT_EVDEV is not set 18.557 +# CONFIG_INPUT_EVBUG is not set 18.558 + 18.559 +# 18.560 +# Input Device Drivers 18.561 +# 18.562 +CONFIG_INPUT_KEYBOARD=y 18.563 +CONFIG_KEYBOARD_ATKBD=y 18.564 +# CONFIG_KEYBOARD_LKKBD is not set 18.565 +# CONFIG_KEYBOARD_NEWTON is not set 18.566 +# CONFIG_KEYBOARD_OPENCORES is not set 18.567 +# CONFIG_KEYBOARD_STOWAWAY is not set 18.568 +# CONFIG_KEYBOARD_SUNKBD is not set 18.569 +# CONFIG_KEYBOARD_XTKBD is not set 18.570 +# CONFIG_INPUT_MOUSE is not set 18.571 +# CONFIG_INPUT_JOYSTICK is not set 18.572 +# CONFIG_INPUT_TABLET is not set 18.573 +# CONFIG_INPUT_TOUCHSCREEN is not set 18.574 +# CONFIG_INPUT_MISC is not set 18.575 + 18.576 +# 18.577 +# Hardware I/O ports 18.578 +# 18.579 +CONFIG_SERIO=y 18.580 +CONFIG_SERIO_I8042=y 18.581 +# CONFIG_SERIO_SERPORT is not set 18.582 +# CONFIG_SERIO_CT82C710 is not set 18.583 +CONFIG_SERIO_LIBPS2=y 18.584 +# CONFIG_SERIO_RAW is not set 18.585 +# CONFIG_SERIO_ALTERA_PS2 is not set 18.586 +# CONFIG_SERIO_PS2MULT is not set 18.587 +# CONFIG_GAMEPORT is not set 18.588 + 18.589 +# 18.590 +# Character devices 18.591 +# 18.592 +CONFIG_VT=y 18.593 +CONFIG_CONSOLE_TRANSLATIONS=y 18.594 +CONFIG_VT_CONSOLE=y 18.595 +CONFIG_HW_CONSOLE=y 18.596 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 18.597 +# CONFIG_DEVKMEM is not set 18.598 +# CONFIG_SERIAL_NONSTANDARD is not set 18.599 +# CONFIG_N_GSM is not set 18.600 + 18.601 +# 18.602 +# Serial drivers 18.603 +# 18.604 +CONFIG_SERIAL_8250=y 18.605 +# CONFIG_SERIAL_8250_CONSOLE is not set 18.606 +CONFIG_FIX_EARLYCON_MEM=y 18.607 +CONFIG_SERIAL_8250_NR_UARTS=2 18.608 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 18.609 +# CONFIG_SERIAL_8250_EXTENDED is not set 18.610 + 18.611 +# 18.612 +# Non-8250 serial port support 18.613 +# 18.614 +CONFIG_SERIAL_CORE=y 18.615 +# CONFIG_SERIAL_TIMBERDALE is not set 18.616 +# CONFIG_SERIAL_ALTERA_JTAGUART is not set 18.617 +# CONFIG_SERIAL_ALTERA_UART is not set 18.618 +CONFIG_UNIX98_PTYS=y 18.619 +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 18.620 +# CONFIG_LEGACY_PTYS is not set 18.621 +# CONFIG_TTY_PRINTK is not set 18.622 +CONFIG_HVC_DRIVER=y 18.623 +CONFIG_VIRTIO_CONSOLE=y 18.624 +# CONFIG_IPMI_HANDLER is not set 18.625 +# CONFIG_HW_RANDOM is not set 18.626 +# CONFIG_NVRAM is not set 18.627 +# CONFIG_RTC is not set 18.628 +# CONFIG_GEN_RTC is not set 18.629 +# CONFIG_R3964 is not set 18.630 +# CONFIG_MWAVE is not set 18.631 +# CONFIG_PC8736x_GPIO is not set 18.632 +# CONFIG_NSC_GPIO is not set 18.633 +# CONFIG_CS5535_GPIO is not set 18.634 +# CONFIG_RAW_DRIVER is not set 18.635 +# CONFIG_HANGCHECK_TIMER is not set 18.636 +# CONFIG_TCG_TPM is not set 18.637 +# CONFIG_TELCLOCK is not set 18.638 +# CONFIG_RAMOOPS is not set 18.639 +# CONFIG_I2C is not set 18.640 +# CONFIG_SPI is not set 18.641 + 18.642 +# 18.643 +# PPS support 18.644 +# 18.645 +# CONFIG_PPS is not set 18.646 +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 18.647 +# CONFIG_GPIOLIB is not set 18.648 +# CONFIG_W1 is not set 18.649 +# CONFIG_POWER_SUPPLY is not set 18.650 +# CONFIG_HWMON is not set 18.651 +# CONFIG_THERMAL is not set 18.652 +# CONFIG_WATCHDOG is not set 18.653 +CONFIG_SSB_POSSIBLE=y 18.654 + 18.655 +# 18.656 +# Sonics Silicon Backplane 18.657 +# 18.658 +# CONFIG_SSB is not set 18.659 +# CONFIG_MFD_SUPPORT is not set 18.660 +# CONFIG_REGULATOR is not set 18.661 +# CONFIG_MEDIA_SUPPORT is not set 18.662 + 18.663 +# 18.664 +# Graphics support 18.665 +# 18.666 +# CONFIG_DRM is not set 18.667 +# CONFIG_VGASTATE is not set 18.668 +# CONFIG_VIDEO_OUTPUT_CONTROL is not set 18.669 +# CONFIG_FB is not set 18.670 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 18.671 + 18.672 +# 18.673 +# Display device support 18.674 +# 18.675 +# CONFIG_DISPLAY_SUPPORT is not set 18.676 + 18.677 +# 18.678 +# Console display driver support 18.679 +# 18.680 +CONFIG_VGA_CONSOLE=y 18.681 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 18.682 +CONFIG_DUMMY_CONSOLE=y 18.683 +# CONFIG_SOUND is not set 18.684 +# CONFIG_HID_SUPPORT is not set 18.685 +# CONFIG_USB_SUPPORT is not set 18.686 +# CONFIG_MMC is not set 18.687 +# CONFIG_MEMSTICK is not set 18.688 +# CONFIG_NEW_LEDS is not set 18.689 +# CONFIG_ACCESSIBILITY is not set 18.690 +# CONFIG_EDAC is not set 18.691 +# CONFIG_RTC_CLASS is not set 18.692 +# CONFIG_DMADEVICES is not set 18.693 +# CONFIG_AUXDISPLAY is not set 18.694 +# CONFIG_UIO is not set 18.695 +# CONFIG_STAGING is not set 18.696 +# CONFIG_X86_PLATFORM_DEVICES is not set 18.697 + 18.698 +# 18.699 +# Firmware Drivers 18.700 +# 18.701 +# CONFIG_EDD is not set 18.702 +# CONFIG_FIRMWARE_MEMMAP is not set 18.703 +# CONFIG_DELL_RBU is not set 18.704 +# CONFIG_DCDBAS is not set 18.705 +# CONFIG_ISCSI_IBFT_FIND is not set 18.706 + 18.707 +# 18.708 +# File systems 18.709 +# 18.710 +# CONFIG_EXT2_FS is not set 18.711 +CONFIG_EXT3_FS=y 18.712 +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 18.713 +# CONFIG_EXT3_FS_XATTR is not set 18.714 +# CONFIG_EXT4_FS is not set 18.715 +CONFIG_JBD=y 18.716 +# CONFIG_REISERFS_FS is not set 18.717 +# CONFIG_JFS_FS is not set 18.718 +# CONFIG_FS_POSIX_ACL is not set 18.719 +# CONFIG_XFS_FS is not set 18.720 +# CONFIG_BTRFS_FS is not set 18.721 +# CONFIG_NILFS2_FS is not set 18.722 +# CONFIG_FILE_LOCKING is not set 18.723 +# CONFIG_FSNOTIFY is not set 18.724 +# CONFIG_DNOTIFY is not set 18.725 +# CONFIG_INOTIFY_USER is not set 18.726 +# CONFIG_FANOTIFY is not set 18.727 +# CONFIG_QUOTA is not set 18.728 +# CONFIG_QUOTACTL is not set 18.729 +# CONFIG_AUTOFS4_FS is not set 18.730 +# CONFIG_FUSE_FS is not set 18.731 + 18.732 +# 18.733 +# Caches 18.734 +# 18.735 +# CONFIG_FSCACHE is not set 18.736 + 18.737 +# 18.738 +# CD-ROM/DVD Filesystems 18.739 +# 18.740 +# CONFIG_ISO9660_FS is not set 18.741 +# CONFIG_UDF_FS is not set 18.742 + 18.743 +# 18.744 +# DOS/FAT/NT Filesystems 18.745 +# 18.746 +# CONFIG_MSDOS_FS is not set 18.747 +# CONFIG_VFAT_FS is not set 18.748 +# CONFIG_NTFS_FS is not set 18.749 + 18.750 +# 18.751 +# Pseudo filesystems 18.752 +# 18.753 +CONFIG_PROC_FS=y 18.754 +# CONFIG_PROC_KCORE is not set 18.755 +CONFIG_PROC_SYSCTL=y 18.756 +# CONFIG_PROC_PAGE_MONITOR is not set 18.757 +# CONFIG_SYSFS is not set 18.758 +# CONFIG_HUGETLBFS is not set 18.759 +# CONFIG_HUGETLB_PAGE is not set 18.760 +# CONFIG_MISC_FILESYSTEMS is not set 18.761 +# CONFIG_NETWORK_FILESYSTEMS is not set 18.762 + 18.763 +# 18.764 +# Partition Types 18.765 +# 18.766 +# CONFIG_PARTITION_ADVANCED is not set 18.767 +CONFIG_MSDOS_PARTITION=y 18.768 +# CONFIG_NLS is not set 18.769 + 18.770 +# 18.771 +# Kernel hacking 18.772 +# 18.773 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 18.774 +# CONFIG_PRINTK_TIME is not set 18.775 +# CONFIG_ENABLE_WARN_DEPRECATED is not set 18.776 +# CONFIG_ENABLE_MUST_CHECK is not set 18.777 +CONFIG_FRAME_WARN=1024 18.778 +# CONFIG_MAGIC_SYSRQ is not set 18.779 +# CONFIG_STRIP_ASM_SYMS is not set 18.780 +# CONFIG_UNUSED_SYMBOLS is not set 18.781 +# CONFIG_DEBUG_FS is not set 18.782 +# CONFIG_HEADERS_CHECK is not set 18.783 +# CONFIG_DEBUG_KERNEL is not set 18.784 +# CONFIG_HARDLOCKUP_DETECTOR is not set 18.785 +CONFIG_BKL=y 18.786 +# CONFIG_SPARSE_RCU_POINTER is not set 18.787 +# CONFIG_DEBUG_MEMORY_INIT is not set 18.788 +CONFIG_ARCH_WANT_FRAME_POINTERS=y 18.789 +# CONFIG_FRAME_POINTER is not set 18.790 +# CONFIG_SYSCTL_SYSCALL_CHECK is not set 18.791 +CONFIG_USER_STACKTRACE_SUPPORT=y 18.792 +CONFIG_HAVE_FUNCTION_TRACER=y 18.793 +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 18.794 +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y 18.795 +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 18.796 +CONFIG_HAVE_DYNAMIC_FTRACE=y 18.797 +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 18.798 +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 18.799 +CONFIG_HAVE_C_RECORDMCOUNT=y 18.800 +CONFIG_TRACING_SUPPORT=y 18.801 +# CONFIG_FTRACE is not set 18.802 +# CONFIG_DMA_API_DEBUG is not set 18.803 +# CONFIG_ATOMIC64_SELFTEST is not set 18.804 +# CONFIG_SAMPLES is not set 18.805 +CONFIG_HAVE_ARCH_KGDB=y 18.806 +CONFIG_HAVE_ARCH_KMEMCHECK=y 18.807 +# CONFIG_STRICT_DEVMEM is not set 18.808 +# CONFIG_X86_VERBOSE_BOOTUP is not set 18.809 +# CONFIG_EARLY_PRINTK is not set 18.810 +# CONFIG_DOUBLEFAULT is not set 18.811 +# CONFIG_IOMMU_STRESS is not set 18.812 +CONFIG_HAVE_MMIOTRACE_SUPPORT=y 18.813 +CONFIG_IO_DELAY_TYPE_0X80=0 18.814 +CONFIG_IO_DELAY_TYPE_0XED=1 18.815 +CONFIG_IO_DELAY_TYPE_UDELAY=2 18.816 +CONFIG_IO_DELAY_TYPE_NONE=3 18.817 +CONFIG_IO_DELAY_0X80=y 18.818 +# CONFIG_IO_DELAY_0XED is not set 18.819 +# CONFIG_IO_DELAY_UDELAY is not set 18.820 +# CONFIG_IO_DELAY_NONE is not set 18.821 +CONFIG_DEFAULT_IO_DELAY_TYPE=0 18.822 +CONFIG_OPTIMIZE_INLINING=y 18.823 + 18.824 +# 18.825 +# Security options 18.826 +# 18.827 +# CONFIG_KEYS is not set 18.828 +# CONFIG_SECURITY_DMESG_RESTRICT is not set 18.829 +# CONFIG_SECURITYFS is not set 18.830 +CONFIG_DEFAULT_SECURITY_DAC=y 18.831 +CONFIG_DEFAULT_SECURITY="" 18.832 +# CONFIG_CRYPTO is not set 18.833 +CONFIG_HAVE_KVM=y 18.834 +# CONFIG_VIRTUALIZATION is not set 18.835 +CONFIG_VIRTIO=y 18.836 +CONFIG_VIRTIO_RING=y 18.837 +# CONFIG_BINARY_PRINTF is not set 18.838 + 18.839 +# 18.840 +# Library routines 18.841 +# 18.842 +CONFIG_BITREVERSE=y 18.843 +CONFIG_GENERIC_FIND_FIRST_BIT=y 18.844 +CONFIG_GENERIC_FIND_NEXT_BIT=y 18.845 +CONFIG_GENERIC_FIND_LAST_BIT=y 18.846 +CONFIG_CRC_CCITT=y 18.847 +# CONFIG_CRC16 is not set 18.848 +# CONFIG_CRC_T10DIF is not set 18.849 +# CONFIG_CRC_ITU_T is not set 18.850 +CONFIG_CRC32=y 18.851 +# CONFIG_CRC7 is not set 18.852 +# CONFIG_LIBCRC32C is not set 18.853 +CONFIG_ZLIB_INFLATE=y 18.854 +# CONFIG_XZ_DEC is not set 18.855 +# CONFIG_XZ_DEC_BCJ is not set 18.856 +CONFIG_DECOMPRESS_GZIP=y 18.857 +CONFIG_DECOMPRESS_LZMA=y 18.858 +CONFIG_HAS_IOMEM=y 18.859 +CONFIG_HAS_IOPORT=y 18.860 +CONFIG_HAS_DMA=y 18.861 +CONFIG_NLATTR=y
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 19.2 +++ b/kernel-modular/stuff/linux-2.6.37-slitaz.config-i486-modular Tue Feb 01 09:37:33 2011 +0100 19.3 @@ -0,0 +1,4737 @@ 19.4 +# 19.5 +# Automatically generated make config: don't edit 19.6 +# Linux/i386 2.6.37 Kernel Configuration 19.7 +# Mon Jan 31 15:19:41 2011 19.8 +# 19.9 +# CONFIG_64BIT is not set 19.10 +CONFIG_X86_32=y 19.11 +# CONFIG_X86_64 is not set 19.12 +CONFIG_X86=y 19.13 +CONFIG_INSTRUCTION_DECODER=y 19.14 +CONFIG_OUTPUT_FORMAT="elf32-i386" 19.15 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" 19.16 +CONFIG_GENERIC_CMOS_UPDATE=y 19.17 +CONFIG_CLOCKSOURCE_WATCHDOG=y 19.18 +CONFIG_GENERIC_CLOCKEVENTS=y 19.19 +CONFIG_LOCKDEP_SUPPORT=y 19.20 +CONFIG_STACKTRACE_SUPPORT=y 19.21 +CONFIG_HAVE_LATENCYTOP_SUPPORT=y 19.22 +CONFIG_MMU=y 19.23 +CONFIG_ZONE_DMA=y 19.24 +# CONFIG_NEED_DMA_MAP_STATE is not set 19.25 +CONFIG_NEED_SG_DMA_LENGTH=y 19.26 +CONFIG_GENERIC_ISA_DMA=y 19.27 +CONFIG_GENERIC_IOMAP=y 19.28 +CONFIG_GENERIC_HWEIGHT=y 19.29 +CONFIG_GENERIC_GPIO=y 19.30 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 19.31 +CONFIG_RWSEM_GENERIC_SPINLOCK=y 19.32 +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 19.33 +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 19.34 +CONFIG_GENERIC_CALIBRATE_DELAY=y 19.35 +# CONFIG_GENERIC_TIME_VSYSCALL is not set 19.36 +CONFIG_ARCH_HAS_CPU_RELAX=y 19.37 +CONFIG_ARCH_HAS_DEFAULT_IDLE=y 19.38 +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 19.39 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y 19.40 +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 19.41 +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 19.42 +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 19.43 +CONFIG_ARCH_HIBERNATION_POSSIBLE=y 19.44 +CONFIG_ARCH_SUSPEND_POSSIBLE=y 19.45 +# CONFIG_ZONE_DMA32 is not set 19.46 +CONFIG_ARCH_POPULATES_NODE_MAP=y 19.47 +# CONFIG_AUDIT_ARCH is not set 19.48 +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 19.49 +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 19.50 +CONFIG_X86_32_LAZY_GS=y 19.51 +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" 19.52 +CONFIG_KTIME_SCALAR=y 19.53 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 19.54 +CONFIG_CONSTRUCTORS=y 19.55 +CONFIG_HAVE_IRQ_WORK=y 19.56 +CONFIG_IRQ_WORK=y 19.57 + 19.58 +# 19.59 +# General setup 19.60 +# 19.61 +CONFIG_EXPERIMENTAL=y 19.62 +CONFIG_BROKEN_ON_SMP=y 19.63 +CONFIG_INIT_ENV_ARG_LIMIT=32 19.64 +CONFIG_CROSS_COMPILE="" 19.65 +CONFIG_LOCALVERSION="-slitaz" 19.66 +# CONFIG_LOCALVERSION_AUTO is not set 19.67 +CONFIG_HAVE_KERNEL_GZIP=y 19.68 +CONFIG_HAVE_KERNEL_BZIP2=y 19.69 +CONFIG_HAVE_KERNEL_LZMA=y 19.70 +CONFIG_HAVE_KERNEL_XZ=y 19.71 +CONFIG_HAVE_KERNEL_LZO=y 19.72 +# CONFIG_KERNEL_GZIP is not set 19.73 +# CONFIG_KERNEL_BZIP2 is not set 19.74 +CONFIG_KERNEL_LZMA=y 19.75 +# CONFIG_KERNEL_XZ is not set 19.76 +# CONFIG_KERNEL_LZO is not set 19.77 +# CONFIG_SWAP is not set 19.78 +CONFIG_SYSVIPC=y 19.79 +CONFIG_SYSVIPC_SYSCTL=y 19.80 +# CONFIG_POSIX_MQUEUE is not set 19.81 +# CONFIG_BSD_PROCESS_ACCT is not set 19.82 +# CONFIG_TASKSTATS is not set 19.83 +# CONFIG_AUDIT is not set 19.84 +CONFIG_HAVE_GENERIC_HARDIRQS=y 19.85 + 19.86 +# 19.87 +# IRQ subsystem 19.88 +# 19.89 +CONFIG_GENERIC_HARDIRQS=y 19.90 +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 19.91 +# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 19.92 +CONFIG_HAVE_SPARSE_IRQ=y 19.93 +CONFIG_GENERIC_IRQ_PROBE=y 19.94 +# CONFIG_GENERIC_PENDING_IRQ is not set 19.95 +# CONFIG_AUTO_IRQ_AFFINITY is not set 19.96 +# CONFIG_IRQ_PER_CPU is not set 19.97 +# CONFIG_HARDIRQS_SW_RESEND is not set 19.98 +# CONFIG_SPARSE_IRQ is not set 19.99 + 19.100 +# 19.101 +# RCU Subsystem 19.102 +# 19.103 +CONFIG_TINY_RCU=y 19.104 +# CONFIG_PREEMPT_RCU is not set 19.105 +# CONFIG_TREE_RCU_TRACE is not set 19.106 +CONFIG_IKCONFIG=y 19.107 +CONFIG_IKCONFIG_PROC=y 19.108 +CONFIG_LOG_BUF_SHIFT=12 19.109 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y 19.110 +# CONFIG_CGROUPS is not set 19.111 +# CONFIG_NAMESPACES is not set 19.112 +# CONFIG_SYSFS_DEPRECATED is not set 19.113 +# CONFIG_RELAY is not set 19.114 +CONFIG_BLK_DEV_INITRD=y 19.115 +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" 19.116 +CONFIG_INITRAMFS_ROOT_UID=0 19.117 +CONFIG_INITRAMFS_ROOT_GID=0 19.118 +CONFIG_RD_GZIP=y 19.119 +# CONFIG_RD_BZIP2 is not set 19.120 +CONFIG_RD_LZMA=y 19.121 +# CONFIG_RD_LZO is not set 19.122 +CONFIG_INITRAMFS_COMPRESSION_NONE=y 19.123 +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set 19.124 +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set 19.125 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 19.126 +CONFIG_SYSCTL=y 19.127 +CONFIG_ANON_INODES=y 19.128 +CONFIG_EMBEDDED=y 19.129 +# CONFIG_UID16 is not set 19.130 +# CONFIG_SYSCTL_SYSCALL is not set 19.131 +# CONFIG_KALLSYMS is not set 19.132 +# CONFIG_HOTPLUG is not set 19.133 +CONFIG_PRINTK=y 19.134 +# CONFIG_BUG is not set 19.135 +# CONFIG_ELF_CORE is not set 19.136 +CONFIG_PCSPKR_PLATFORM=y 19.137 +# CONFIG_BASE_FULL is not set 19.138 +CONFIG_FUTEX=y 19.139 +# CONFIG_EPOLL is not set 19.140 +# CONFIG_SIGNALFD is not set 19.141 +# CONFIG_TIMERFD is not set 19.142 +CONFIG_EVENTFD=y 19.143 +# CONFIG_SHMEM is not set 19.144 +# CONFIG_AIO is not set 19.145 +CONFIG_HAVE_PERF_EVENTS=y 19.146 + 19.147 +# 19.148 +# Kernel Performance Events And Counters 19.149 +# 19.150 +CONFIG_PERF_EVENTS=y 19.151 +# CONFIG_PERF_COUNTERS is not set 19.152 +# CONFIG_VM_EVENT_COUNTERS is not set 19.153 +CONFIG_PCI_QUIRKS=y 19.154 +CONFIG_COMPAT_BRK=y 19.155 +# CONFIG_SLAB is not set 19.156 +# CONFIG_SLUB is not set 19.157 +CONFIG_SLOB=y 19.158 +# CONFIG_PROFILING is not set 19.159 +CONFIG_HAVE_OPROFILE=y 19.160 +# CONFIG_KPROBES is not set 19.161 +# CONFIG_JUMP_LABEL is not set 19.162 +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 19.163 +CONFIG_USER_RETURN_NOTIFIER=y 19.164 +CONFIG_HAVE_IOREMAP_PROT=y 19.165 +CONFIG_HAVE_KPROBES=y 19.166 +CONFIG_HAVE_KRETPROBES=y 19.167 +CONFIG_HAVE_OPTPROBES=y 19.168 +CONFIG_HAVE_ARCH_TRACEHOOK=y 19.169 +CONFIG_HAVE_DMA_ATTRS=y 19.170 +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y 19.171 +CONFIG_HAVE_DMA_API_DEBUG=y 19.172 +CONFIG_HAVE_HW_BREAKPOINT=y 19.173 +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 19.174 +CONFIG_HAVE_USER_RETURN_NOTIFIER=y 19.175 +CONFIG_HAVE_PERF_EVENTS_NMI=y 19.176 +CONFIG_HAVE_ARCH_JUMP_LABEL=y 19.177 + 19.178 +# 19.179 +# GCOV-based kernel profiling 19.180 +# 19.181 +CONFIG_HAVE_GENERIC_DMA_COHERENT=y 19.182 +CONFIG_RT_MUTEXES=y 19.183 +CONFIG_BASE_SMALL=1 19.184 +CONFIG_MODULES=y 19.185 +# CONFIG_MODULE_FORCE_LOAD is not set 19.186 +CONFIG_MODULE_UNLOAD=y 19.187 +# CONFIG_MODULE_FORCE_UNLOAD is not set 19.188 +# CONFIG_MODVERSIONS is not set 19.189 +# CONFIG_MODULE_SRCVERSION_ALL is not set 19.190 +CONFIG_BLOCK=y 19.191 +# CONFIG_LBDAF is not set 19.192 +CONFIG_BLK_DEV_BSG=y 19.193 +# CONFIG_BLK_DEV_INTEGRITY is not set 19.194 + 19.195 +# 19.196 +# IO Schedulers 19.197 +# 19.198 +CONFIG_IOSCHED_NOOP=y 19.199 +# CONFIG_IOSCHED_DEADLINE is not set 19.200 +# CONFIG_IOSCHED_CFQ is not set 19.201 +CONFIG_DEFAULT_NOOP=y 19.202 +CONFIG_DEFAULT_IOSCHED="noop" 19.203 +CONFIG_PREEMPT_NOTIFIERS=y 19.204 +# CONFIG_INLINE_SPIN_TRYLOCK is not set 19.205 +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set 19.206 +# CONFIG_INLINE_SPIN_LOCK is not set 19.207 +# CONFIG_INLINE_SPIN_LOCK_BH is not set 19.208 +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set 19.209 +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set 19.210 +CONFIG_INLINE_SPIN_UNLOCK=y 19.211 +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set 19.212 +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 19.213 +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set 19.214 +# CONFIG_INLINE_READ_TRYLOCK is not set 19.215 +# CONFIG_INLINE_READ_LOCK is not set 19.216 +# CONFIG_INLINE_READ_LOCK_BH is not set 19.217 +# CONFIG_INLINE_READ_LOCK_IRQ is not set 19.218 +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set 19.219 +CONFIG_INLINE_READ_UNLOCK=y 19.220 +# CONFIG_INLINE_READ_UNLOCK_BH is not set 19.221 +CONFIG_INLINE_READ_UNLOCK_IRQ=y 19.222 +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set 19.223 +# CONFIG_INLINE_WRITE_TRYLOCK is not set 19.224 +# CONFIG_INLINE_WRITE_LOCK is not set 19.225 +# CONFIG_INLINE_WRITE_LOCK_BH is not set 19.226 +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set 19.227 +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set 19.228 +CONFIG_INLINE_WRITE_UNLOCK=y 19.229 +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set 19.230 +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 19.231 +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set 19.232 +# CONFIG_MUTEX_SPIN_ON_OWNER is not set 19.233 +# CONFIG_FREEZER is not set 19.234 + 19.235 +# 19.236 +# Processor type and features 19.237 +# 19.238 +# CONFIG_NO_HZ is not set 19.239 +# CONFIG_HIGH_RES_TIMERS is not set 19.240 +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 19.241 +# CONFIG_SMP is not set 19.242 +# CONFIG_X86_EXTENDED_PLATFORM is not set 19.243 +CONFIG_SCHED_OMIT_FRAME_POINTER=y 19.244 +# CONFIG_PARAVIRT_GUEST is not set 19.245 +CONFIG_NO_BOOTMEM=y 19.246 +# CONFIG_MEMTEST is not set 19.247 +CONFIG_M386=y 19.248 +# CONFIG_M486 is not set 19.249 +# CONFIG_M586 is not set 19.250 +# CONFIG_M586TSC is not set 19.251 +# CONFIG_M586MMX is not set 19.252 +# CONFIG_M686 is not set 19.253 +# CONFIG_MPENTIUMII is not set 19.254 +# CONFIG_MPENTIUMIII is not set 19.255 +# CONFIG_MPENTIUMM is not set 19.256 +# CONFIG_MPENTIUM4 is not set 19.257 +# CONFIG_MK6 is not set 19.258 +# CONFIG_MK7 is not set 19.259 +# CONFIG_MK8 is not set 19.260 +# CONFIG_MCRUSOE is not set 19.261 +# CONFIG_MEFFICEON is not set 19.262 +# CONFIG_MWINCHIPC6 is not set 19.263 +# CONFIG_MWINCHIP3D is not set 19.264 +# CONFIG_MGEODEGX1 is not set 19.265 +# CONFIG_MGEODE_LX is not set 19.266 +# CONFIG_MCYRIXIII is not set 19.267 +# CONFIG_MVIAC3_2 is not set 19.268 +# CONFIG_MVIAC7 is not set 19.269 +# CONFIG_MCORE2 is not set 19.270 +# CONFIG_MATOM is not set 19.271 +# CONFIG_X86_GENERIC is not set 19.272 +CONFIG_X86_CPU=y 19.273 +CONFIG_X86_INTERNODE_CACHE_SHIFT=4 19.274 +# CONFIG_X86_CMPXCHG is not set 19.275 +CONFIG_X86_L1_CACHE_SHIFT=4 19.276 +# CONFIG_X86_PPRO_FENCE is not set 19.277 +CONFIG_X86_F00F_BUG=y 19.278 +CONFIG_X86_INVD_BUG=y 19.279 +CONFIG_X86_MINIMUM_CPU_FAMILY=3 19.280 +# CONFIG_PROCESSOR_SELECT is not set 19.281 +CONFIG_CPU_SUP_INTEL=y 19.282 +CONFIG_CPU_SUP_CYRIX_32=y 19.283 +CONFIG_CPU_SUP_AMD=y 19.284 +CONFIG_CPU_SUP_CENTAUR=y 19.285 +CONFIG_CPU_SUP_TRANSMETA_32=y 19.286 +CONFIG_CPU_SUP_UMC_32=y 19.287 +# CONFIG_HPET_TIMER is not set 19.288 +# CONFIG_DMI is not set 19.289 +# CONFIG_IOMMU_HELPER is not set 19.290 +# CONFIG_IOMMU_API is not set 19.291 +CONFIG_NR_CPUS=1 19.292 +# CONFIG_IRQ_TIME_ACCOUNTING is not set 19.293 +CONFIG_PREEMPT_NONE=y 19.294 +# CONFIG_PREEMPT_VOLUNTARY is not set 19.295 +# CONFIG_PREEMPT is not set 19.296 +# CONFIG_X86_UP_APIC is not set 19.297 +# CONFIG_X86_MCE is not set 19.298 +# CONFIG_VM86 is not set 19.299 +# CONFIG_TOSHIBA is not set 19.300 +# CONFIG_I8K is not set 19.301 +# CONFIG_X86_REBOOTFIXUPS is not set 19.302 +# CONFIG_MICROCODE is not set 19.303 +# CONFIG_X86_MSR is not set 19.304 +# CONFIG_X86_CPUID is not set 19.305 +CONFIG_NOHIGHMEM=y 19.306 +# CONFIG_HIGHMEM4G is not set 19.307 +CONFIG_VMSPLIT_3G=y 19.308 +# CONFIG_VMSPLIT_3G_OPT is not set 19.309 +# CONFIG_VMSPLIT_2G is not set 19.310 +# CONFIG_VMSPLIT_2G_OPT is not set 19.311 +# CONFIG_VMSPLIT_1G is not set 19.312 +CONFIG_PAGE_OFFSET=0xC0000000 19.313 +# CONFIG_X86_PAE is not set 19.314 +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 19.315 +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set 19.316 +CONFIG_ARCH_FLATMEM_ENABLE=y 19.317 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 19.318 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 19.319 +CONFIG_ILLEGAL_POINTER_VALUE=0 19.320 +CONFIG_SELECT_MEMORY_MODEL=y 19.321 +CONFIG_FLATMEM_MANUAL=y 19.322 +# CONFIG_SPARSEMEM_MANUAL is not set 19.323 +CONFIG_FLATMEM=y 19.324 +CONFIG_FLAT_NODE_MEM_MAP=y 19.325 +CONFIG_SPARSEMEM_STATIC=y 19.326 +CONFIG_HAVE_MEMBLOCK=y 19.327 +CONFIG_PAGEFLAGS_EXTENDED=y 19.328 +CONFIG_SPLIT_PTLOCK_CPUS=4 19.329 +# CONFIG_PHYS_ADDR_T_64BIT is not set 19.330 +CONFIG_ZONE_DMA_FLAG=1 19.331 +CONFIG_BOUNCE=y 19.332 +CONFIG_VIRT_TO_BUS=y 19.333 +CONFIG_MMU_NOTIFIER=y 19.334 +# CONFIG_KSM is not set 19.335 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 19.336 +CONFIG_NEED_PER_CPU_KM=y 19.337 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 19.338 +CONFIG_X86_RESERVE_LOW=64 19.339 +CONFIG_MATH_EMULATION=y 19.340 +# CONFIG_MTRR is not set 19.341 +# CONFIG_SECCOMP is not set 19.342 +# CONFIG_CC_STACKPROTECTOR is not set 19.343 +CONFIG_HZ_100=y 19.344 +# CONFIG_HZ_250 is not set 19.345 +# CONFIG_HZ_300 is not set 19.346 +# CONFIG_HZ_1000 is not set 19.347 +CONFIG_HZ=100 19.348 +# CONFIG_SCHED_HRTICK is not set 19.349 +# CONFIG_KEXEC is not set 19.350 +CONFIG_PHYSICAL_START=0x100000 19.351 +# CONFIG_RELOCATABLE is not set 19.352 +CONFIG_PHYSICAL_ALIGN=0x100000 19.353 +# CONFIG_COMPAT_VDSO is not set 19.354 +# CONFIG_CMDLINE_BOOL is not set 19.355 + 19.356 +# 19.357 +# Power management and ACPI options 19.358 +# 19.359 +# CONFIG_PM is not set 19.360 +# CONFIG_SFI is not set 19.361 + 19.362 +# 19.363 +# CPU Frequency scaling 19.364 +# 19.365 +# CONFIG_CPU_FREQ is not set 19.366 +# CONFIG_CPU_IDLE is not set 19.367 + 19.368 +# 19.369 +# Bus options (PCI etc.) 19.370 +# 19.371 +CONFIG_PCI=y 19.372 +# CONFIG_PCI_GOBIOS is not set 19.373 +# CONFIG_PCI_GOMMCONFIG is not set 19.374 +# CONFIG_PCI_GODIRECT is not set 19.375 +CONFIG_PCI_GOANY=y 19.376 +CONFIG_PCI_BIOS=y 19.377 +CONFIG_PCI_DIRECT=y 19.378 +CONFIG_PCI_DOMAINS=y 19.379 +# CONFIG_PCI_CNB20LE_QUIRK is not set 19.380 +# CONFIG_PCIEPORTBUS is not set 19.381 +# CONFIG_ARCH_SUPPORTS_MSI is not set 19.382 +# CONFIG_PCI_STUB is not set 19.383 +# CONFIG_PCI_IOV is not set 19.384 +CONFIG_ISA_DMA_API=y 19.385 +CONFIG_ISA=y 19.386 +# CONFIG_EISA is not set 19.387 +# CONFIG_MCA is not set 19.388 +# CONFIG_SCx200 is not set 19.389 +# CONFIG_OLPC is not set 19.390 +# CONFIG_OLPC_OPENFIRMWARE is not set 19.391 +CONFIG_AMD_NB=y 19.392 + 19.393 +# 19.394 +# Executable file formats / Emulations 19.395 +# 19.396 +CONFIG_BINFMT_ELF=y 19.397 +CONFIG_HAVE_AOUT=y 19.398 +CONFIG_BINFMT_AOUT=m 19.399 +CONFIG_BINFMT_MISC=m 19.400 +CONFIG_HAVE_ATOMIC_IOMAP=y 19.401 +CONFIG_HAVE_TEXT_POKE_SMP=y 19.402 +CONFIG_NET=y 19.403 + 19.404 +# 19.405 +# Networking options 19.406 +# 19.407 +CONFIG_PACKET=y 19.408 +CONFIG_UNIX=y 19.409 +CONFIG_XFRM=y 19.410 +# CONFIG_XFRM_USER is not set 19.411 +# CONFIG_XFRM_SUB_POLICY is not set 19.412 +# CONFIG_XFRM_MIGRATE is not set 19.413 +# CONFIG_XFRM_STATISTICS is not set 19.414 +CONFIG_XFRM_IPCOMP=m 19.415 +# CONFIG_NET_KEY is not set 19.416 +CONFIG_INET=y 19.417 +# CONFIG_IP_MULTICAST is not set 19.418 +# CONFIG_IP_ADVANCED_ROUTER is not set 19.419 +CONFIG_IP_FIB_HASH=y 19.420 +# CONFIG_IP_PNP is not set 19.421 +CONFIG_NET_IPIP=m 19.422 +# CONFIG_NET_IPGRE_DEMUX is not set 19.423 +# CONFIG_ARPD is not set 19.424 +# CONFIG_SYN_COOKIES is not set 19.425 +CONFIG_INET_AH=m 19.426 +CONFIG_INET_ESP=m 19.427 +CONFIG_INET_IPCOMP=m 19.428 +CONFIG_INET_XFRM_TUNNEL=m 19.429 +CONFIG_INET_TUNNEL=m 19.430 +CONFIG_INET_XFRM_MODE_TRANSPORT=m 19.431 +CONFIG_INET_XFRM_MODE_TUNNEL=m 19.432 +CONFIG_INET_XFRM_MODE_BEET=m 19.433 +CONFIG_INET_LRO=y 19.434 +# CONFIG_INET_DIAG is not set 19.435 +# CONFIG_TCP_CONG_ADVANCED is not set 19.436 +CONFIG_TCP_CONG_CUBIC=y 19.437 +CONFIG_DEFAULT_TCP_CONG="cubic" 19.438 +# CONFIG_TCP_MD5SIG is not set 19.439 +CONFIG_IPV6=m 19.440 +# CONFIG_IPV6_PRIVACY is not set 19.441 +# CONFIG_IPV6_ROUTER_PREF is not set 19.442 +# CONFIG_IPV6_OPTIMISTIC_DAD is not set 19.443 +CONFIG_INET6_AH=m 19.444 +CONFIG_INET6_ESP=m 19.445 +CONFIG_INET6_IPCOMP=m 19.446 +# CONFIG_IPV6_MIP6 is not set 19.447 +CONFIG_INET6_XFRM_TUNNEL=m 19.448 +CONFIG_INET6_TUNNEL=m 19.449 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m 19.450 +CONFIG_INET6_XFRM_MODE_TUNNEL=m 19.451 +CONFIG_INET6_XFRM_MODE_BEET=m 19.452 +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 19.453 +CONFIG_IPV6_SIT=m 19.454 +# CONFIG_IPV6_SIT_6RD is not set 19.455 +CONFIG_IPV6_NDISC_NODETYPE=y 19.456 +CONFIG_IPV6_TUNNEL=m 19.457 +# CONFIG_IPV6_MULTIPLE_TABLES is not set 19.458 +# CONFIG_IPV6_MROUTE is not set 19.459 +# CONFIG_NETWORK_SECMARK is not set 19.460 +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set 19.461 +CONFIG_NETFILTER=y 19.462 +# CONFIG_NETFILTER_DEBUG is not set 19.463 +CONFIG_NETFILTER_ADVANCED=y 19.464 +CONFIG_BRIDGE_NETFILTER=y 19.465 + 19.466 +# 19.467 +# Core Netfilter Configuration 19.468 +# 19.469 +CONFIG_NETFILTER_NETLINK=m 19.470 +CONFIG_NETFILTER_NETLINK_QUEUE=m 19.471 +CONFIG_NETFILTER_NETLINK_LOG=m 19.472 +CONFIG_NF_CONNTRACK=m 19.473 +CONFIG_NF_CONNTRACK_MARK=y 19.474 +CONFIG_NF_CONNTRACK_EVENTS=y 19.475 +CONFIG_NF_CT_PROTO_DCCP=m 19.476 +CONFIG_NF_CT_PROTO_GRE=m 19.477 +CONFIG_NF_CT_PROTO_SCTP=m 19.478 +CONFIG_NF_CT_PROTO_UDPLITE=m 19.479 +CONFIG_NF_CONNTRACK_AMANDA=m 19.480 +CONFIG_NF_CONNTRACK_FTP=m 19.481 +CONFIG_NF_CONNTRACK_H323=m 19.482 +CONFIG_NF_CONNTRACK_IRC=m 19.483 +CONFIG_NF_CONNTRACK_NETBIOS_NS=m 19.484 +CONFIG_NF_CONNTRACK_PPTP=m 19.485 +CONFIG_NF_CONNTRACK_SANE=m 19.486 +CONFIG_NF_CONNTRACK_SIP=m 19.487 +CONFIG_NF_CONNTRACK_TFTP=m 19.488 +CONFIG_NF_CT_NETLINK=m 19.489 +# CONFIG_NETFILTER_TPROXY is not set 19.490 +CONFIG_NETFILTER_XTABLES=m 19.491 + 19.492 +# 19.493 +# Xtables combined modules 19.494 +# 19.495 +CONFIG_NETFILTER_XT_MARK=m 19.496 +CONFIG_NETFILTER_XT_CONNMARK=m 19.497 + 19.498 +# 19.499 +# Xtables targets 19.500 +# 19.501 +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set 19.502 +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 19.503 +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 19.504 +# CONFIG_NETFILTER_XT_TARGET_CT is not set 19.505 +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 19.506 +CONFIG_NETFILTER_XT_TARGET_HL=m 19.507 +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set 19.508 +# CONFIG_NETFILTER_XT_TARGET_LED is not set 19.509 +CONFIG_NETFILTER_XT_TARGET_MARK=m 19.510 +CONFIG_NETFILTER_XT_TARGET_NFLOG=m 19.511 +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 19.512 +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 19.513 +CONFIG_NETFILTER_XT_TARGET_RATEEST=m 19.514 +# CONFIG_NETFILTER_XT_TARGET_TEE is not set 19.515 +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set 19.516 +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 19.517 +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set 19.518 + 19.519 +# 19.520 +# Xtables matches 19.521 +# 19.522 +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m 19.523 +CONFIG_NETFILTER_XT_MATCH_COMMENT=m 19.524 +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 19.525 +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 19.526 +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 19.527 +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 19.528 +# CONFIG_NETFILTER_XT_MATCH_CPU is not set 19.529 +CONFIG_NETFILTER_XT_MATCH_DCCP=m 19.530 +CONFIG_NETFILTER_XT_MATCH_DSCP=m 19.531 +CONFIG_NETFILTER_XT_MATCH_ESP=m 19.532 +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 19.533 +CONFIG_NETFILTER_XT_MATCH_HELPER=m 19.534 +CONFIG_NETFILTER_XT_MATCH_HL=m 19.535 +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 19.536 +# CONFIG_NETFILTER_XT_MATCH_IPVS is not set 19.537 +CONFIG_NETFILTER_XT_MATCH_LENGTH=m 19.538 +CONFIG_NETFILTER_XT_MATCH_LIMIT=m 19.539 +CONFIG_NETFILTER_XT_MATCH_MAC=m 19.540 +CONFIG_NETFILTER_XT_MATCH_MARK=m 19.541 +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 19.542 +CONFIG_NETFILTER_XT_MATCH_OSF=m 19.543 +CONFIG_NETFILTER_XT_MATCH_OWNER=m 19.544 +CONFIG_NETFILTER_XT_MATCH_POLICY=m 19.545 +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set 19.546 +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 19.547 +CONFIG_NETFILTER_XT_MATCH_QUOTA=m 19.548 +CONFIG_NETFILTER_XT_MATCH_RATEEST=m 19.549 +CONFIG_NETFILTER_XT_MATCH_REALM=m 19.550 +CONFIG_NETFILTER_XT_MATCH_RECENT=m 19.551 +CONFIG_NETFILTER_XT_MATCH_SCTP=m 19.552 +CONFIG_NETFILTER_XT_MATCH_STATE=m 19.553 +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 19.554 +CONFIG_NETFILTER_XT_MATCH_STRING=m 19.555 +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 19.556 +CONFIG_NETFILTER_XT_MATCH_TIME=m 19.557 +CONFIG_NETFILTER_XT_MATCH_U32=m 19.558 +CONFIG_IP_VS=m 19.559 +CONFIG_IP_VS_IPV6=y 19.560 +# CONFIG_IP_VS_DEBUG is not set 19.561 +CONFIG_IP_VS_TAB_BITS=12 19.562 + 19.563 +# 19.564 +# IPVS transport protocol load balancing support 19.565 +# 19.566 +CONFIG_IP_VS_PROTO_TCP=y 19.567 +CONFIG_IP_VS_PROTO_UDP=y 19.568 +CONFIG_IP_VS_PROTO_AH_ESP=y 19.569 +CONFIG_IP_VS_PROTO_ESP=y 19.570 +CONFIG_IP_VS_PROTO_AH=y 19.571 +CONFIG_IP_VS_PROTO_SCTP=y 19.572 + 19.573 +# 19.574 +# IPVS scheduler 19.575 +# 19.576 +CONFIG_IP_VS_RR=m 19.577 +CONFIG_IP_VS_WRR=m 19.578 +CONFIG_IP_VS_LC=m 19.579 +CONFIG_IP_VS_WLC=m 19.580 +CONFIG_IP_VS_LBLC=m 19.581 +CONFIG_IP_VS_LBLCR=m 19.582 +CONFIG_IP_VS_DH=m 19.583 +CONFIG_IP_VS_SH=m 19.584 +CONFIG_IP_VS_SED=m 19.585 +CONFIG_IP_VS_NQ=m 19.586 + 19.587 +# 19.588 +# IPVS application helper 19.589 +# 19.590 +CONFIG_IP_VS_FTP=m 19.591 +CONFIG_IP_VS_NFCT=y 19.592 +# CONFIG_IP_VS_PE_SIP is not set 19.593 + 19.594 +# 19.595 +# IP: Netfilter Configuration 19.596 +# 19.597 +CONFIG_NF_DEFRAG_IPV4=m 19.598 +CONFIG_NF_CONNTRACK_IPV4=m 19.599 +CONFIG_NF_CONNTRACK_PROC_COMPAT=y 19.600 +CONFIG_IP_NF_QUEUE=m 19.601 +CONFIG_IP_NF_IPTABLES=m 19.602 +CONFIG_IP_NF_MATCH_ADDRTYPE=m 19.603 +CONFIG_IP_NF_MATCH_AH=m 19.604 +CONFIG_IP_NF_MATCH_ECN=m 19.605 +CONFIG_IP_NF_MATCH_TTL=m 19.606 +CONFIG_IP_NF_FILTER=m 19.607 +CONFIG_IP_NF_TARGET_REJECT=m 19.608 +CONFIG_IP_NF_TARGET_LOG=m 19.609 +CONFIG_IP_NF_TARGET_ULOG=m 19.610 +CONFIG_NF_NAT=m 19.611 +CONFIG_NF_NAT_NEEDED=y 19.612 +CONFIG_IP_NF_TARGET_MASQUERADE=m 19.613 +CONFIG_IP_NF_TARGET_NETMAP=m 19.614 +CONFIG_IP_NF_TARGET_REDIRECT=m 19.615 +CONFIG_NF_NAT_SNMP_BASIC=m 19.616 +CONFIG_NF_NAT_PROTO_DCCP=m 19.617 +CONFIG_NF_NAT_PROTO_GRE=m 19.618 +CONFIG_NF_NAT_PROTO_UDPLITE=m 19.619 +CONFIG_NF_NAT_PROTO_SCTP=m 19.620 +CONFIG_NF_NAT_FTP=m 19.621 +CONFIG_NF_NAT_IRC=m 19.622 +CONFIG_NF_NAT_TFTP=m 19.623 +CONFIG_NF_NAT_AMANDA=m 19.624 +CONFIG_NF_NAT_PPTP=m 19.625 +CONFIG_NF_NAT_H323=m 19.626 +CONFIG_NF_NAT_SIP=m 19.627 +CONFIG_IP_NF_MANGLE=m 19.628 +CONFIG_IP_NF_TARGET_CLUSTERIP=m 19.629 +CONFIG_IP_NF_TARGET_ECN=m 19.630 +CONFIG_IP_NF_TARGET_TTL=m 19.631 +CONFIG_IP_NF_RAW=m 19.632 +CONFIG_IP_NF_ARPTABLES=m 19.633 +CONFIG_IP_NF_ARPFILTER=m 19.634 +CONFIG_IP_NF_ARP_MANGLE=m 19.635 + 19.636 +# 19.637 +# IPv6: Netfilter Configuration 19.638 +# 19.639 +CONFIG_NF_DEFRAG_IPV6=m 19.640 +CONFIG_NF_CONNTRACK_IPV6=m 19.641 +CONFIG_IP6_NF_QUEUE=m 19.642 +CONFIG_IP6_NF_IPTABLES=m 19.643 +CONFIG_IP6_NF_MATCH_AH=m 19.644 +CONFIG_IP6_NF_MATCH_EUI64=m 19.645 +CONFIG_IP6_NF_MATCH_FRAG=m 19.646 +CONFIG_IP6_NF_MATCH_OPTS=m 19.647 +CONFIG_IP6_NF_MATCH_HL=m 19.648 +CONFIG_IP6_NF_MATCH_IPV6HEADER=m 19.649 +CONFIG_IP6_NF_MATCH_MH=m 19.650 +CONFIG_IP6_NF_MATCH_RT=m 19.651 +CONFIG_IP6_NF_TARGET_HL=m 19.652 +CONFIG_IP6_NF_TARGET_LOG=m 19.653 +CONFIG_IP6_NF_FILTER=m 19.654 +CONFIG_IP6_NF_TARGET_REJECT=m 19.655 +CONFIG_IP6_NF_MANGLE=m 19.656 +CONFIG_IP6_NF_RAW=m 19.657 +# CONFIG_BRIDGE_NF_EBTABLES is not set 19.658 +# CONFIG_IP_DCCP is not set 19.659 +CONFIG_IP_SCTP=m 19.660 +# CONFIG_SCTP_DBG_MSG is not set 19.661 +# CONFIG_SCTP_DBG_OBJCNT is not set 19.662 +# CONFIG_SCTP_HMAC_NONE is not set 19.663 +# CONFIG_SCTP_HMAC_SHA1 is not set 19.664 +CONFIG_SCTP_HMAC_MD5=y 19.665 +# CONFIG_RDS is not set 19.666 +# CONFIG_TIPC is not set 19.667 +# CONFIG_ATM is not set 19.668 +# CONFIG_L2TP is not set 19.669 +CONFIG_STP=m 19.670 +CONFIG_BRIDGE=m 19.671 +CONFIG_BRIDGE_IGMP_SNOOPING=y 19.672 +# CONFIG_NET_DSA is not set 19.673 +CONFIG_VLAN_8021Q=m 19.674 +# CONFIG_VLAN_8021Q_GVRP is not set 19.675 +# CONFIG_DECNET is not set 19.676 +CONFIG_LLC=m 19.677 +# CONFIG_LLC2 is not set 19.678 +CONFIG_IPX=m 19.679 +# CONFIG_IPX_INTERN is not set 19.680 +CONFIG_ATALK=m 19.681 +CONFIG_DEV_APPLETALK=m 19.682 +# CONFIG_LTPC is not set 19.683 +# CONFIG_COPS is not set 19.684 +CONFIG_IPDDP=m 19.685 +CONFIG_IPDDP_ENCAP=y 19.686 +CONFIG_IPDDP_DECAP=y 19.687 +# CONFIG_X25 is not set 19.688 +# CONFIG_LAPB is not set 19.689 +# CONFIG_ECONET is not set 19.690 +# CONFIG_WAN_ROUTER is not set 19.691 +CONFIG_PHONET=m 19.692 +# CONFIG_PHONET_PIPECTRLR is not set 19.693 +# CONFIG_IEEE802154 is not set 19.694 +CONFIG_NET_SCHED=y 19.695 + 19.696 +# 19.697 +# Queueing/Scheduling 19.698 +# 19.699 +CONFIG_NET_SCH_CBQ=m 19.700 +CONFIG_NET_SCH_HTB=m 19.701 +CONFIG_NET_SCH_HFSC=m 19.702 +CONFIG_NET_SCH_PRIO=m 19.703 +CONFIG_NET_SCH_MULTIQ=m 19.704 +CONFIG_NET_SCH_RED=m 19.705 +CONFIG_NET_SCH_SFQ=m 19.706 +CONFIG_NET_SCH_TEQL=m 19.707 +CONFIG_NET_SCH_TBF=m 19.708 +CONFIG_NET_SCH_GRED=m 19.709 +CONFIG_NET_SCH_DSMARK=m 19.710 +CONFIG_NET_SCH_NETEM=m 19.711 +CONFIG_NET_SCH_DRR=m 19.712 +# CONFIG_NET_SCH_INGRESS is not set 19.713 + 19.714 +# 19.715 +# Classification 19.716 +# 19.717 +CONFIG_NET_CLS=y 19.718 +CONFIG_NET_CLS_BASIC=m 19.719 +CONFIG_NET_CLS_TCINDEX=m 19.720 +CONFIG_NET_CLS_ROUTE4=m 19.721 +CONFIG_NET_CLS_ROUTE=y 19.722 +CONFIG_NET_CLS_FW=m 19.723 +CONFIG_NET_CLS_U32=m 19.724 +CONFIG_CLS_U32_PERF=y 19.725 +CONFIG_CLS_U32_MARK=y 19.726 +CONFIG_NET_CLS_RSVP=m 19.727 +CONFIG_NET_CLS_RSVP6=m 19.728 +CONFIG_NET_CLS_FLOW=m 19.729 +CONFIG_NET_EMATCH=y 19.730 +CONFIG_NET_EMATCH_STACK=32 19.731 +CONFIG_NET_EMATCH_CMP=m 19.732 +CONFIG_NET_EMATCH_NBYTE=m 19.733 +CONFIG_NET_EMATCH_U32=m 19.734 +CONFIG_NET_EMATCH_META=m 19.735 +CONFIG_NET_EMATCH_TEXT=m 19.736 +CONFIG_NET_CLS_ACT=y 19.737 +CONFIG_NET_ACT_POLICE=m 19.738 +CONFIG_NET_ACT_GACT=m 19.739 +# CONFIG_GACT_PROB is not set 19.740 +CONFIG_NET_ACT_MIRRED=m 19.741 +CONFIG_NET_ACT_IPT=m 19.742 +CONFIG_NET_ACT_NAT=m 19.743 +CONFIG_NET_ACT_PEDIT=m 19.744 +CONFIG_NET_ACT_SIMP=m 19.745 +CONFIG_NET_ACT_SKBEDIT=m 19.746 +# CONFIG_NET_ACT_CSUM is not set 19.747 +CONFIG_NET_CLS_IND=y 19.748 +CONFIG_NET_SCH_FIFO=y 19.749 +# CONFIG_DCB is not set 19.750 +CONFIG_DNS_RESOLVER=m 19.751 + 19.752 +# 19.753 +# Network testing 19.754 +# 19.755 +# CONFIG_NET_PKTGEN is not set 19.756 +# CONFIG_HAMRADIO is not set 19.757 +# CONFIG_CAN is not set 19.758 +CONFIG_IRDA=m 19.759 + 19.760 +# 19.761 +# IrDA protocols 19.762 +# 19.763 +CONFIG_IRLAN=m 19.764 +CONFIG_IRNET=m 19.765 +CONFIG_IRCOMM=m 19.766 +CONFIG_IRDA_ULTRA=y 19.767 + 19.768 +# 19.769 +# IrDA options 19.770 +# 19.771 +CONFIG_IRDA_CACHE_LAST_LSAP=y 19.772 +CONFIG_IRDA_FAST_RR=y 19.773 +# CONFIG_IRDA_DEBUG is not set 19.774 + 19.775 +# 19.776 +# Infrared-port device drivers 19.777 +# 19.778 + 19.779 +# 19.780 +# SIR device drivers 19.781 +# 19.782 +CONFIG_IRTTY_SIR=m 19.783 + 19.784 +# 19.785 +# Dongle support 19.786 +# 19.787 +CONFIG_DONGLE=y 19.788 +CONFIG_ESI_DONGLE=m 19.789 +CONFIG_ACTISYS_DONGLE=m 19.790 +CONFIG_TEKRAM_DONGLE=m 19.791 +CONFIG_TOIM3232_DONGLE=m 19.792 +CONFIG_LITELINK_DONGLE=m 19.793 +CONFIG_MA600_DONGLE=m 19.794 +CONFIG_GIRBIL_DONGLE=m 19.795 +CONFIG_MCP2120_DONGLE=m 19.796 +CONFIG_OLD_BELKIN_DONGLE=m 19.797 +CONFIG_ACT200L_DONGLE=m 19.798 +# CONFIG_KINGSUN_DONGLE is not set 19.799 +# CONFIG_KSDAZZLE_DONGLE is not set 19.800 +# CONFIG_KS959_DONGLE is not set 19.801 + 19.802 +# 19.803 +# FIR device drivers 19.804 +# 19.805 +# CONFIG_USB_IRDA is not set 19.806 +# CONFIG_SIGMATEL_FIR is not set 19.807 +CONFIG_NSC_FIR=m 19.808 +CONFIG_WINBOND_FIR=m 19.809 +CONFIG_TOSHIBA_FIR=m 19.810 +CONFIG_SMC_IRCC_FIR=m 19.811 +CONFIG_ALI_FIR=m 19.812 +CONFIG_VLSI_FIR=m 19.813 +CONFIG_VIA_FIR=m 19.814 +# CONFIG_MCS_FIR is not set 19.815 +CONFIG_BT=m 19.816 +CONFIG_BT_L2CAP=m 19.817 +CONFIG_BT_SCO=m 19.818 +CONFIG_BT_RFCOMM=m 19.819 +CONFIG_BT_RFCOMM_TTY=y 19.820 +CONFIG_BT_BNEP=m 19.821 +CONFIG_BT_BNEP_MC_FILTER=y 19.822 +CONFIG_BT_BNEP_PROTO_FILTER=y 19.823 +# CONFIG_BT_CMTP is not set 19.824 +CONFIG_BT_HIDP=m 19.825 + 19.826 +# 19.827 +# Bluetooth device drivers 19.828 +# 19.829 +# CONFIG_BT_HCIBTUSB is not set 19.830 +# CONFIG_BT_HCIBTSDIO is not set 19.831 +CONFIG_BT_HCIUART=m 19.832 +CONFIG_BT_HCIUART_H4=y 19.833 +CONFIG_BT_HCIUART_BCSP=y 19.834 +# CONFIG_BT_HCIUART_ATH3K is not set 19.835 +CONFIG_BT_HCIUART_LL=y 19.836 +# CONFIG_BT_HCIBCM203X is not set 19.837 +# CONFIG_BT_HCIBPA10X is not set 19.838 +# CONFIG_BT_HCIBFUSB is not set 19.839 +CONFIG_BT_HCIVHCI=m 19.840 +CONFIG_BT_MRVL=m 19.841 +# CONFIG_BT_MRVL_SDIO is not set 19.842 +CONFIG_AF_RXRPC=m 19.843 +# CONFIG_AF_RXRPC_DEBUG is not set 19.844 +# CONFIG_RXKAD is not set 19.845 +CONFIG_WIRELESS=y 19.846 +CONFIG_WIRELESS_EXT=y 19.847 +CONFIG_WEXT_CORE=y 19.848 +CONFIG_WEXT_PROC=y 19.849 +CONFIG_WEXT_SPY=y 19.850 +CONFIG_WEXT_PRIV=y 19.851 +CONFIG_CFG80211=m 19.852 +# CONFIG_NL80211_TESTMODE is not set 19.853 +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set 19.854 +# CONFIG_CFG80211_REG_DEBUG is not set 19.855 +CONFIG_CFG80211_DEFAULT_PS=y 19.856 +# CONFIG_CFG80211_INTERNAL_REGDB is not set 19.857 +CONFIG_CFG80211_WEXT=y 19.858 +CONFIG_WIRELESS_EXT_SYSFS=y 19.859 +CONFIG_LIB80211=m 19.860 +CONFIG_LIB80211_CRYPT_WEP=m 19.861 +CONFIG_LIB80211_CRYPT_CCMP=m 19.862 +CONFIG_LIB80211_CRYPT_TKIP=m 19.863 +# CONFIG_LIB80211_DEBUG is not set 19.864 +CONFIG_MAC80211=m 19.865 +CONFIG_MAC80211_HAS_RC=y 19.866 +CONFIG_MAC80211_RC_PID=y 19.867 +CONFIG_MAC80211_RC_MINSTREL=y 19.868 +CONFIG_MAC80211_RC_MINSTREL_HT=y 19.869 +# CONFIG_MAC80211_RC_DEFAULT_PID is not set 19.870 +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y 19.871 +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" 19.872 +CONFIG_MAC80211_MESH=y 19.873 +CONFIG_MAC80211_LEDS=y 19.874 +# CONFIG_MAC80211_DEBUG_MENU is not set 19.875 +CONFIG_WIMAX=m 19.876 +CONFIG_WIMAX_DEBUG_LEVEL=8 19.877 +CONFIG_RFKILL=m 19.878 +CONFIG_RFKILL_LEDS=y 19.879 +CONFIG_RFKILL_INPUT=y 19.880 +# CONFIG_NET_9P is not set 19.881 +# CONFIG_CAIF is not set 19.882 +CONFIG_CEPH_LIB=m 19.883 +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set 19.884 + 19.885 +# 19.886 +# Device Drivers 19.887 +# 19.888 + 19.889 +# 19.890 +# Generic Driver Options 19.891 +# 19.892 +CONFIG_STANDALONE=y 19.893 +CONFIG_PREVENT_FIRMWARE_BUILD=y 19.894 +CONFIG_FW_LOADER=m 19.895 +CONFIG_FIRMWARE_IN_KERNEL=y 19.896 +CONFIG_EXTRA_FIRMWARE="" 19.897 +# CONFIG_SYS_HYPERVISOR is not set 19.898 +CONFIG_CONNECTOR=m 19.899 +CONFIG_MTD=m 19.900 +# CONFIG_MTD_DEBUG is not set 19.901 +# CONFIG_MTD_TESTS is not set 19.902 +CONFIG_MTD_CONCAT=m 19.903 +CONFIG_MTD_PARTITIONS=y 19.904 +# CONFIG_MTD_REDBOOT_PARTS is not set 19.905 +# CONFIG_MTD_AR7_PARTS is not set 19.906 + 19.907 +# 19.908 +# User Modules And Translation Layers 19.909 +# 19.910 +CONFIG_MTD_CHAR=m 19.911 +CONFIG_HAVE_MTD_OTP=y 19.912 +CONFIG_MTD_BLKDEVS=m 19.913 +CONFIG_MTD_BLOCK=m 19.914 +CONFIG_MTD_BLOCK_RO=m 19.915 +CONFIG_FTL=m 19.916 +CONFIG_NFTL=m 19.917 +CONFIG_NFTL_RW=y 19.918 +CONFIG_INFTL=m 19.919 +CONFIG_RFD_FTL=m 19.920 +CONFIG_SSFDC=m 19.921 +# CONFIG_SM_FTL is not set 19.922 +CONFIG_MTD_OOPS=m 19.923 + 19.924 +# 19.925 +# RAM/ROM/Flash chip drivers 19.926 +# 19.927 +CONFIG_MTD_CFI=m 19.928 +CONFIG_MTD_JEDECPROBE=m 19.929 +CONFIG_MTD_GEN_PROBE=m 19.930 +# CONFIG_MTD_CFI_ADV_OPTIONS is not set 19.931 +CONFIG_MTD_MAP_BANK_WIDTH_1=y 19.932 +CONFIG_MTD_MAP_BANK_WIDTH_2=y 19.933 +CONFIG_MTD_MAP_BANK_WIDTH_4=y 19.934 +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 19.935 +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 19.936 +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 19.937 +CONFIG_MTD_CFI_I1=y 19.938 +CONFIG_MTD_CFI_I2=y 19.939 +# CONFIG_MTD_CFI_I4 is not set 19.940 +# CONFIG_MTD_CFI_I8 is not set 19.941 +CONFIG_MTD_CFI_INTELEXT=m 19.942 +CONFIG_MTD_CFI_AMDSTD=m 19.943 +CONFIG_MTD_CFI_STAA=m 19.944 +CONFIG_MTD_CFI_UTIL=m 19.945 +CONFIG_MTD_RAM=m 19.946 +CONFIG_MTD_ROM=m 19.947 +CONFIG_MTD_ABSENT=m 19.948 + 19.949 +# 19.950 +# Mapping drivers for chip access 19.951 +# 19.952 +CONFIG_MTD_COMPLEX_MAPPINGS=y 19.953 +CONFIG_MTD_PHYSMAP=m 19.954 +CONFIG_MTD_PHYSMAP_COMPAT=y 19.955 +CONFIG_MTD_PHYSMAP_START=0x8000000 19.956 +CONFIG_MTD_PHYSMAP_LEN=0 19.957 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 19.958 +CONFIG_MTD_SC520CDP=m 19.959 +CONFIG_MTD_NETSC520=m 19.960 +CONFIG_MTD_TS5500=m 19.961 +CONFIG_MTD_SBC_GXX=m 19.962 +CONFIG_MTD_AMD76XROM=m 19.963 +CONFIG_MTD_ICHXROM=m 19.964 +CONFIG_MTD_ESB2ROM=m 19.965 +CONFIG_MTD_CK804XROM=m 19.966 +CONFIG_MTD_SCB2_FLASH=m 19.967 +CONFIG_MTD_NETtel=m 19.968 +CONFIG_MTD_L440GX=m 19.969 +CONFIG_MTD_PCI=m 19.970 +# CONFIG_MTD_GPIO_ADDR is not set 19.971 +CONFIG_MTD_INTEL_VR_NOR=m 19.972 +CONFIG_MTD_PLATRAM=m 19.973 + 19.974 +# 19.975 +# Self-contained MTD device drivers 19.976 +# 19.977 +CONFIG_MTD_PMC551=m 19.978 +# CONFIG_MTD_PMC551_BUGFIX is not set 19.979 +# CONFIG_MTD_PMC551_DEBUG is not set 19.980 +# CONFIG_MTD_DATAFLASH is not set 19.981 +# CONFIG_MTD_M25P80 is not set 19.982 +# CONFIG_MTD_SST25L is not set 19.983 +CONFIG_MTD_SLRAM=m 19.984 +CONFIG_MTD_PHRAM=m 19.985 +CONFIG_MTD_MTDRAM=m 19.986 +CONFIG_MTDRAM_TOTAL_SIZE=4096 19.987 +CONFIG_MTDRAM_ERASE_SIZE=128 19.988 +CONFIG_MTD_BLOCK2MTD=m 19.989 + 19.990 +# 19.991 +# Disk-On-Chip Device Drivers 19.992 +# 19.993 +CONFIG_MTD_DOC2000=m 19.994 +CONFIG_MTD_DOC2001=m 19.995 +CONFIG_MTD_DOC2001PLUS=m 19.996 +CONFIG_MTD_DOCPROBE=m 19.997 +CONFIG_MTD_DOCECC=m 19.998 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set 19.999 +CONFIG_MTD_DOCPROBE_ADDRESS=0 19.1000 +CONFIG_MTD_NAND_ECC=m 19.1001 +# CONFIG_MTD_NAND_ECC_SMC is not set 19.1002 +CONFIG_MTD_NAND=m 19.1003 +# CONFIG_MTD_NAND_VERIFY_WRITE is not set 19.1004 +# CONFIG_MTD_SM_COMMON is not set 19.1005 +# CONFIG_MTD_NAND_MUSEUM_IDS is not set 19.1006 +# CONFIG_MTD_NAND_DENALI is not set 19.1007 +CONFIG_MTD_NAND_IDS=m 19.1008 +# CONFIG_MTD_NAND_RICOH is not set 19.1009 +CONFIG_MTD_NAND_DISKONCHIP=m 19.1010 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set 19.1011 +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 19.1012 +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set 19.1013 +CONFIG_MTD_NAND_CAFE=m 19.1014 +CONFIG_MTD_NAND_CS553X=m 19.1015 +CONFIG_MTD_NAND_NANDSIM=m 19.1016 +CONFIG_MTD_NAND_PLATFORM=m 19.1017 +# CONFIG_MTD_ALAUDA is not set 19.1018 +CONFIG_MTD_ONENAND=m 19.1019 +CONFIG_MTD_ONENAND_VERIFY_WRITE=y 19.1020 +CONFIG_MTD_ONENAND_GENERIC=m 19.1021 +CONFIG_MTD_ONENAND_OTP=y 19.1022 +CONFIG_MTD_ONENAND_2X_PROGRAM=y 19.1023 +CONFIG_MTD_ONENAND_SIM=m 19.1024 + 19.1025 +# 19.1026 +# LPDDR flash memory drivers 19.1027 +# 19.1028 +CONFIG_MTD_LPDDR=m 19.1029 +CONFIG_MTD_QINFO_PROBE=m 19.1030 +CONFIG_MTD_UBI=m 19.1031 +CONFIG_MTD_UBI_WL_THRESHOLD=4096 19.1032 +CONFIG_MTD_UBI_BEB_RESERVE=1 19.1033 +CONFIG_MTD_UBI_GLUEBI=m 19.1034 + 19.1035 +# 19.1036 +# UBI debugging options 19.1037 +# 19.1038 +# CONFIG_MTD_UBI_DEBUG is not set 19.1039 +CONFIG_PARPORT=m 19.1040 +CONFIG_PARPORT_PC=m 19.1041 +CONFIG_PARPORT_SERIAL=m 19.1042 +CONFIG_PARPORT_PC_FIFO=y 19.1043 +CONFIG_PARPORT_PC_SUPERIO=y 19.1044 +# CONFIG_PARPORT_GSC is not set 19.1045 +CONFIG_PARPORT_AX88796=m 19.1046 +CONFIG_PARPORT_1284=y 19.1047 +CONFIG_PARPORT_NOT_PC=y 19.1048 +CONFIG_PNP=y 19.1049 +CONFIG_PNP_DEBUG_MESSAGES=y 19.1050 + 19.1051 +# 19.1052 +# Protocols 19.1053 +# 19.1054 +CONFIG_ISAPNP=y 19.1055 +# CONFIG_PNPBIOS is not set 19.1056 +# CONFIG_PNPACPI is not set 19.1057 +CONFIG_BLK_DEV=y 19.1058 +CONFIG_BLK_DEV_FD=m 19.1059 +# CONFIG_BLK_DEV_XD is not set 19.1060 +CONFIG_PARIDE=m 19.1061 + 19.1062 +# 19.1063 +# Parallel IDE high-level drivers 19.1064 +# 19.1065 +CONFIG_PARIDE_PD=m 19.1066 +CONFIG_PARIDE_PCD=m 19.1067 +CONFIG_PARIDE_PF=m 19.1068 +CONFIG_PARIDE_PT=m 19.1069 +CONFIG_PARIDE_PG=m 19.1070 + 19.1071 +# 19.1072 +# Parallel IDE protocol modules 19.1073 +# 19.1074 +CONFIG_PARIDE_ATEN=m 19.1075 +CONFIG_PARIDE_BPCK=m 19.1076 +CONFIG_PARIDE_BPCK6=m 19.1077 +CONFIG_PARIDE_COMM=m 19.1078 +CONFIG_PARIDE_DSTR=m 19.1079 +CONFIG_PARIDE_FIT2=m 19.1080 +CONFIG_PARIDE_FIT3=m 19.1081 +CONFIG_PARIDE_EPAT=m 19.1082 +CONFIG_PARIDE_EPATC8=y 19.1083 +CONFIG_PARIDE_EPIA=m 19.1084 +CONFIG_PARIDE_FRIQ=m 19.1085 +CONFIG_PARIDE_FRPW=m 19.1086 +CONFIG_PARIDE_KBIC=m 19.1087 +CONFIG_PARIDE_KTTI=m 19.1088 +CONFIG_PARIDE_ON20=m 19.1089 +CONFIG_PARIDE_ON26=m 19.1090 +CONFIG_BLK_CPQ_DA=m 19.1091 +CONFIG_BLK_CPQ_CISS_DA=m 19.1092 +CONFIG_CISS_SCSI_TAPE=y 19.1093 +CONFIG_BLK_DEV_DAC960=m 19.1094 +CONFIG_BLK_DEV_UMEM=m 19.1095 +# CONFIG_BLK_DEV_COW_COMMON is not set 19.1096 +CONFIG_BLK_DEV_LOOP=m 19.1097 +CONFIG_BLK_DEV_CRYPTOLOOP=m 19.1098 +CONFIG_BLK_DEV_DRBD=m 19.1099 +# CONFIG_DRBD_FAULT_INJECTION is not set 19.1100 +CONFIG_BLK_DEV_NBD=m 19.1101 +# CONFIG_BLK_DEV_OSD is not set 19.1102 +CONFIG_BLK_DEV_SX8=m 19.1103 +CONFIG_BLK_DEV_UB=m 19.1104 +CONFIG_BLK_DEV_RAM=m 19.1105 +CONFIG_BLK_DEV_RAM_COUNT=16 19.1106 +CONFIG_BLK_DEV_RAM_SIZE=4096 19.1107 +CONFIG_BLK_DEV_XIP=y 19.1108 +CONFIG_CDROM_PKTCDVD=m 19.1109 +CONFIG_CDROM_PKTCDVD_BUFFERS=8 19.1110 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set 19.1111 +CONFIG_ATA_OVER_ETH=m 19.1112 +# CONFIG_VIRTIO_BLK is not set 19.1113 +# CONFIG_BLK_DEV_HD is not set 19.1114 +# CONFIG_BLK_DEV_RBD is not set 19.1115 +CONFIG_MISC_DEVICES=y 19.1116 +# CONFIG_AD525X_DPOT is not set 19.1117 +CONFIG_IBM_ASM=m 19.1118 +CONFIG_PHANTOM=m 19.1119 +CONFIG_SGI_IOC4=m 19.1120 +CONFIG_TIFM_CORE=m 19.1121 +CONFIG_TIFM_7XX1=m 19.1122 +CONFIG_ICS932S401=m 19.1123 +CONFIG_ENCLOSURE_SERVICES=m 19.1124 +CONFIG_CS5535_MFGPT=m 19.1125 +CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7 19.1126 +CONFIG_CS5535_CLOCK_EVENT_SRC=m 19.1127 +CONFIG_HP_ILO=m 19.1128 +# CONFIG_APDS9802ALS is not set 19.1129 +# CONFIG_ISL29003 is not set 19.1130 +# CONFIG_ISL29020 is not set 19.1131 +# CONFIG_SENSORS_TSL2550 is not set 19.1132 +# CONFIG_SENSORS_BH1780 is not set 19.1133 +# CONFIG_SENSORS_BH1770 is not set 19.1134 +# CONFIG_SENSORS_APDS990X is not set 19.1135 +# CONFIG_HMC6352 is not set 19.1136 +CONFIG_DS1682=m 19.1137 +# CONFIG_TI_DAC7512 is not set 19.1138 +CONFIG_VMWARE_BALLOON=m 19.1139 +# CONFIG_BMP085 is not set 19.1140 +# CONFIG_PCH_PHUB is not set 19.1141 +CONFIG_C2PORT=m 19.1142 +CONFIG_C2PORT_DURAMAR_2150=m 19.1143 + 19.1144 +# 19.1145 +# EEPROM support 19.1146 +# 19.1147 +# CONFIG_EEPROM_AT24 is not set 19.1148 +# CONFIG_EEPROM_AT25 is not set 19.1149 +# CONFIG_EEPROM_LEGACY is not set 19.1150 +# CONFIG_EEPROM_MAX6875 is not set 19.1151 +CONFIG_EEPROM_93CX6=m 19.1152 +CONFIG_CB710_CORE=m 19.1153 +# CONFIG_CB710_DEBUG is not set 19.1154 +CONFIG_CB710_DEBUG_ASSUMPTIONS=y 19.1155 +# CONFIG_IWMC3200TOP is not set 19.1156 + 19.1157 +# 19.1158 +# Texas Instruments shared transport line discipline 19.1159 +# 19.1160 +# CONFIG_TI_ST is not set 19.1161 +CONFIG_HAVE_IDE=y 19.1162 +# CONFIG_IDE is not set 19.1163 + 19.1164 +# 19.1165 +# SCSI device support 19.1166 +# 19.1167 +CONFIG_SCSI_MOD=m 19.1168 +CONFIG_RAID_ATTRS=m 19.1169 +CONFIG_SCSI=m 19.1170 +CONFIG_SCSI_DMA=y 19.1171 +CONFIG_SCSI_TGT=m 19.1172 +CONFIG_SCSI_NETLINK=y 19.1173 +CONFIG_SCSI_PROC_FS=y 19.1174 + 19.1175 +# 19.1176 +# SCSI support type (disk, tape, CD-ROM) 19.1177 +# 19.1178 +CONFIG_BLK_DEV_SD=m 19.1179 +CONFIG_CHR_DEV_ST=m 19.1180 +CONFIG_CHR_DEV_OSST=m 19.1181 +CONFIG_BLK_DEV_SR=m 19.1182 +CONFIG_BLK_DEV_SR_VENDOR=y 19.1183 +CONFIG_CHR_DEV_SG=m 19.1184 +CONFIG_CHR_DEV_SCH=m 19.1185 +CONFIG_SCSI_ENCLOSURE=m 19.1186 +CONFIG_SCSI_MULTI_LUN=y 19.1187 +# CONFIG_SCSI_CONSTANTS is not set 19.1188 +# CONFIG_SCSI_LOGGING is not set 19.1189 +CONFIG_SCSI_SCAN_ASYNC=y 19.1190 +CONFIG_SCSI_WAIT_SCAN=m 19.1191 + 19.1192 +# 19.1193 +# SCSI Transports 19.1194 +# 19.1195 +CONFIG_SCSI_SPI_ATTRS=m 19.1196 +CONFIG_SCSI_FC_ATTRS=m 19.1197 +CONFIG_SCSI_FC_TGT_ATTRS=y 19.1198 +CONFIG_SCSI_ISCSI_ATTRS=m 19.1199 +CONFIG_SCSI_SAS_ATTRS=m 19.1200 +CONFIG_SCSI_SAS_LIBSAS=m 19.1201 +CONFIG_SCSI_SAS_ATA=y 19.1202 +CONFIG_SCSI_SAS_HOST_SMP=y 19.1203 +CONFIG_SCSI_SAS_LIBSAS_DEBUG=y 19.1204 +CONFIG_SCSI_SRP_ATTRS=m 19.1205 +CONFIG_SCSI_SRP_TGT_ATTRS=y 19.1206 +CONFIG_SCSI_LOWLEVEL=y 19.1207 +CONFIG_ISCSI_TCP=m 19.1208 +CONFIG_ISCSI_BOOT_SYSFS=m 19.1209 +CONFIG_SCSI_CXGB3_ISCSI=m 19.1210 +# CONFIG_SCSI_CXGB4_ISCSI is not set 19.1211 +CONFIG_SCSI_BNX2_ISCSI=m 19.1212 +CONFIG_BE2ISCSI=m 19.1213 +CONFIG_BLK_DEV_3W_XXXX_RAID=m 19.1214 +CONFIG_SCSI_HPSA=m 19.1215 +CONFIG_SCSI_3W_9XXX=m 19.1216 +CONFIG_SCSI_3W_SAS=m 19.1217 +CONFIG_SCSI_7000FASST=m 19.1218 +CONFIG_SCSI_ACARD=m 19.1219 +CONFIG_SCSI_AHA152X=m 19.1220 +CONFIG_SCSI_AHA1542=m 19.1221 +CONFIG_SCSI_AACRAID=m 19.1222 +CONFIG_SCSI_AIC7XXX=m 19.1223 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 19.1224 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 19.1225 +CONFIG_AIC7XXX_DEBUG_ENABLE=y 19.1226 +CONFIG_AIC7XXX_DEBUG_MASK=0 19.1227 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 19.1228 +# CONFIG_SCSI_AIC7XXX_OLD is not set 19.1229 +CONFIG_SCSI_AIC79XX=m 19.1230 +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 19.1231 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 19.1232 +CONFIG_AIC79XX_DEBUG_ENABLE=y 19.1233 +CONFIG_AIC79XX_DEBUG_MASK=0 19.1234 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y 19.1235 +CONFIG_SCSI_AIC94XX=m 19.1236 +CONFIG_AIC94XX_DEBUG=y 19.1237 +CONFIG_SCSI_MVSAS=m 19.1238 +CONFIG_SCSI_MVSAS_DEBUG=y 19.1239 +CONFIG_SCSI_DPT_I2O=m 19.1240 +CONFIG_SCSI_ADVANSYS=m 19.1241 +CONFIG_SCSI_IN2000=m 19.1242 +CONFIG_SCSI_ARCMSR=m 19.1243 +CONFIG_MEGARAID_NEWGEN=y 19.1244 +CONFIG_MEGARAID_MM=m 19.1245 +CONFIG_MEGARAID_MAILBOX=m 19.1246 +CONFIG_MEGARAID_LEGACY=m 19.1247 +CONFIG_MEGARAID_SAS=m 19.1248 +CONFIG_SCSI_MPT2SAS=m 19.1249 +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 19.1250 +CONFIG_SCSI_MPT2SAS_LOGGING=y 19.1251 +CONFIG_SCSI_HPTIOP=m 19.1252 +CONFIG_SCSI_BUSLOGIC=m 19.1253 +CONFIG_SCSI_FLASHPOINT=y 19.1254 +CONFIG_VMWARE_PVSCSI=m 19.1255 +CONFIG_LIBFC=m 19.1256 +CONFIG_LIBFCOE=m 19.1257 +CONFIG_FCOE=m 19.1258 +CONFIG_FCOE_FNIC=m 19.1259 +CONFIG_SCSI_DMX3191D=m 19.1260 +CONFIG_SCSI_DTC3280=m 19.1261 +CONFIG_SCSI_EATA=m 19.1262 +CONFIG_SCSI_EATA_TAGGED_QUEUE=y 19.1263 +CONFIG_SCSI_EATA_LINKED_COMMANDS=y 19.1264 +CONFIG_SCSI_EATA_MAX_TAGS=16 19.1265 +CONFIG_SCSI_FUTURE_DOMAIN=m 19.1266 +CONFIG_SCSI_GDTH=m 19.1267 +CONFIG_SCSI_GENERIC_NCR5380=m 19.1268 +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m 19.1269 +CONFIG_SCSI_GENERIC_NCR53C400=y 19.1270 +CONFIG_SCSI_IPS=m 19.1271 +CONFIG_SCSI_INITIO=m 19.1272 +CONFIG_SCSI_INIA100=m 19.1273 +CONFIG_SCSI_PPA=m 19.1274 +CONFIG_SCSI_IMM=m 19.1275 +CONFIG_SCSI_IZIP_EPP16=y 19.1276 +CONFIG_SCSI_IZIP_SLOW_CTR=y 19.1277 +CONFIG_SCSI_NCR53C406A=m 19.1278 +CONFIG_SCSI_STEX=m 19.1279 +CONFIG_SCSI_SYM53C8XX_2=m 19.1280 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 19.1281 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 19.1282 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 19.1283 +CONFIG_SCSI_SYM53C8XX_MMIO=y 19.1284 +# CONFIG_SCSI_IPR is not set 19.1285 +CONFIG_SCSI_PAS16=m 19.1286 +CONFIG_SCSI_QLOGIC_FAS=m 19.1287 +CONFIG_SCSI_QLOGIC_1280=m 19.1288 +CONFIG_SCSI_QLA_FC=m 19.1289 +CONFIG_SCSI_QLA_ISCSI=m 19.1290 +CONFIG_SCSI_LPFC=m 19.1291 +CONFIG_SCSI_SYM53C416=m 19.1292 +CONFIG_SCSI_DC395x=m 19.1293 +CONFIG_SCSI_DC390T=m 19.1294 +CONFIG_SCSI_T128=m 19.1295 +CONFIG_SCSI_U14_34F=m 19.1296 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y 19.1297 +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y 19.1298 +CONFIG_SCSI_U14_34F_MAX_TAGS=8 19.1299 +CONFIG_SCSI_ULTRASTOR=m 19.1300 +CONFIG_SCSI_NSP32=m 19.1301 +CONFIG_SCSI_DEBUG=m 19.1302 +CONFIG_SCSI_PMCRAID=m 19.1303 +CONFIG_SCSI_PM8001=m 19.1304 +CONFIG_SCSI_SRP=m 19.1305 +CONFIG_SCSI_BFA_FC=m 19.1306 +CONFIG_SCSI_DH=m 19.1307 +CONFIG_SCSI_DH_RDAC=m 19.1308 +CONFIG_SCSI_DH_HP_SW=m 19.1309 +CONFIG_SCSI_DH_EMC=m 19.1310 +CONFIG_SCSI_DH_ALUA=m 19.1311 +CONFIG_SCSI_OSD_INITIATOR=m 19.1312 +CONFIG_SCSI_OSD_ULD=m 19.1313 +CONFIG_SCSI_OSD_DPRINT_SENSE=1 19.1314 +CONFIG_SCSI_OSD_DEBUG=y 19.1315 +CONFIG_ATA=m 19.1316 +# CONFIG_ATA_NONSTANDARD is not set 19.1317 +CONFIG_ATA_VERBOSE_ERROR=y 19.1318 +CONFIG_SATA_PMP=y 19.1319 + 19.1320 +# 19.1321 +# Controllers with non-SFF native interface 19.1322 +# 19.1323 +CONFIG_SATA_AHCI=m 19.1324 +# CONFIG_SATA_AHCI_PLATFORM is not set 19.1325 +CONFIG_SATA_INIC162X=m 19.1326 +CONFIG_SATA_SIL24=m 19.1327 +CONFIG_ATA_SFF=y 19.1328 + 19.1329 +# 19.1330 +# SFF controllers with custom DMA interface 19.1331 +# 19.1332 +CONFIG_PDC_ADMA=m 19.1333 +CONFIG_SATA_QSTOR=m 19.1334 +CONFIG_SATA_SX4=m 19.1335 +CONFIG_ATA_BMDMA=y 19.1336 + 19.1337 +# 19.1338 +# SATA SFF controllers with BMDMA 19.1339 +# 19.1340 +CONFIG_ATA_PIIX=m 19.1341 +CONFIG_SATA_MV=m 19.1342 +CONFIG_SATA_NV=m 19.1343 +CONFIG_SATA_PROMISE=m 19.1344 +CONFIG_SATA_SIL=m 19.1345 +CONFIG_SATA_SIS=m 19.1346 +CONFIG_SATA_SVW=m 19.1347 +CONFIG_SATA_ULI=m 19.1348 +CONFIG_SATA_VIA=m 19.1349 +CONFIG_SATA_VITESSE=m 19.1350 + 19.1351 +# 19.1352 +# PATA SFF controllers with BMDMA 19.1353 +# 19.1354 +CONFIG_PATA_ALI=m 19.1355 +CONFIG_PATA_AMD=m 19.1356 +CONFIG_PATA_ARTOP=m 19.1357 +CONFIG_PATA_ATIIXP=m 19.1358 +CONFIG_PATA_ATP867X=m 19.1359 +CONFIG_PATA_CMD64X=m 19.1360 +CONFIG_PATA_CS5520=m 19.1361 +CONFIG_PATA_CS5530=m 19.1362 +CONFIG_PATA_CS5535=m 19.1363 +CONFIG_PATA_CS5536=m 19.1364 +CONFIG_PATA_CYPRESS=m 19.1365 +CONFIG_PATA_EFAR=m 19.1366 +CONFIG_PATA_HPT366=m 19.1367 +CONFIG_PATA_HPT37X=m 19.1368 +CONFIG_PATA_HPT3X2N=m 19.1369 +CONFIG_PATA_HPT3X3=m 19.1370 +CONFIG_PATA_HPT3X3_DMA=y 19.1371 +CONFIG_PATA_IT8213=m 19.1372 +CONFIG_PATA_IT821X=m 19.1373 +CONFIG_PATA_JMICRON=m 19.1374 +CONFIG_PATA_MARVELL=m 19.1375 +CONFIG_PATA_NETCELL=m 19.1376 +CONFIG_PATA_NINJA32=m 19.1377 +CONFIG_PATA_NS87415=m 19.1378 +CONFIG_PATA_OLDPIIX=m 19.1379 +CONFIG_PATA_OPTIDMA=m 19.1380 +CONFIG_PATA_PDC2027X=m 19.1381 +CONFIG_PATA_PDC_OLD=m 19.1382 +CONFIG_PATA_RADISYS=m 19.1383 +CONFIG_PATA_RDC=m 19.1384 +CONFIG_PATA_SC1200=m 19.1385 +CONFIG_PATA_SCH=m 19.1386 +CONFIG_PATA_SERVERWORKS=m 19.1387 +CONFIG_PATA_SIL680=m 19.1388 +CONFIG_PATA_SIS=m 19.1389 +CONFIG_PATA_TOSHIBA=m 19.1390 +CONFIG_PATA_TRIFLEX=m 19.1391 +CONFIG_PATA_VIA=m 19.1392 +CONFIG_PATA_WINBOND=m 19.1393 + 19.1394 +# 19.1395 +# PIO-only SFF controllers 19.1396 +# 19.1397 +CONFIG_PATA_CMD640_PCI=m 19.1398 +CONFIG_PATA_ISAPNP=m 19.1399 +CONFIG_PATA_MPIIX=m 19.1400 +CONFIG_PATA_NS87410=m 19.1401 +CONFIG_PATA_OPTI=m 19.1402 +CONFIG_PATA_PLATFORM=m 19.1403 +CONFIG_PATA_QDI=m 19.1404 +CONFIG_PATA_RZ1000=m 19.1405 +CONFIG_PATA_WINBOND_VLB=m 19.1406 + 19.1407 +# 19.1408 +# Generic fallback / legacy drivers 19.1409 +# 19.1410 +CONFIG_ATA_GENERIC=m 19.1411 +CONFIG_PATA_LEGACY=m 19.1412 +CONFIG_MD=y 19.1413 +CONFIG_BLK_DEV_MD=m 19.1414 +CONFIG_MD_LINEAR=m 19.1415 +CONFIG_MD_RAID0=m 19.1416 +CONFIG_MD_RAID1=m 19.1417 +CONFIG_MD_RAID10=m 19.1418 +CONFIG_MD_RAID456=m 19.1419 +CONFIG_MD_MULTIPATH=m 19.1420 +CONFIG_MD_FAULTY=m 19.1421 +CONFIG_BLK_DEV_DM=m 19.1422 +# CONFIG_DM_DEBUG is not set 19.1423 +CONFIG_DM_CRYPT=m 19.1424 +CONFIG_DM_SNAPSHOT=m 19.1425 +CONFIG_DM_MIRROR=m 19.1426 +CONFIG_DM_LOG_USERSPACE=m 19.1427 +CONFIG_DM_ZERO=m 19.1428 +CONFIG_DM_MULTIPATH=m 19.1429 +CONFIG_DM_MULTIPATH_QL=m 19.1430 +CONFIG_DM_MULTIPATH_ST=m 19.1431 +CONFIG_DM_DELAY=m 19.1432 +CONFIG_DM_UEVENT=y 19.1433 +CONFIG_FUSION=y 19.1434 +CONFIG_FUSION_SPI=m 19.1435 +CONFIG_FUSION_FC=m 19.1436 +CONFIG_FUSION_SAS=m 19.1437 +CONFIG_FUSION_MAX_SGE=128 19.1438 +CONFIG_FUSION_CTL=m 19.1439 +CONFIG_FUSION_LAN=m 19.1440 +CONFIG_FUSION_LOGGING=y 19.1441 + 19.1442 +# 19.1443 +# IEEE 1394 (FireWire) support 19.1444 +# 19.1445 +CONFIG_FIREWIRE=m 19.1446 +CONFIG_FIREWIRE_OHCI=m 19.1447 +CONFIG_FIREWIRE_OHCI_DEBUG=y 19.1448 +CONFIG_FIREWIRE_SBP2=m 19.1449 +CONFIG_FIREWIRE_NET=m 19.1450 +# CONFIG_FIREWIRE_NOSY is not set 19.1451 +CONFIG_I2O=m 19.1452 +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y 19.1453 +CONFIG_I2O_EXT_ADAPTEC=y 19.1454 +CONFIG_I2O_CONFIG=m 19.1455 +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set 19.1456 +CONFIG_I2O_BUS=m 19.1457 +CONFIG_I2O_BLOCK=m 19.1458 +CONFIG_I2O_SCSI=m 19.1459 +CONFIG_I2O_PROC=m 19.1460 +CONFIG_MACINTOSH_DRIVERS=y 19.1461 +CONFIG_MAC_EMUMOUSEBTN=m 19.1462 +CONFIG_NETDEVICES=y 19.1463 +CONFIG_IFB=m 19.1464 +CONFIG_DUMMY=m 19.1465 +CONFIG_BONDING=m 19.1466 +CONFIG_MACVLAN=m 19.1467 +CONFIG_MACVTAP=m 19.1468 +CONFIG_EQUALIZER=m 19.1469 +CONFIG_TUN=m 19.1470 +CONFIG_VETH=m 19.1471 +CONFIG_NET_SB1000=m 19.1472 +CONFIG_ARCNET=m 19.1473 +CONFIG_ARCNET_1201=m 19.1474 +CONFIG_ARCNET_1051=m 19.1475 +CONFIG_ARCNET_RAW=m 19.1476 +CONFIG_ARCNET_CAP=m 19.1477 +CONFIG_ARCNET_COM90xx=m 19.1478 +CONFIG_ARCNET_COM90xxIO=m 19.1479 +CONFIG_ARCNET_RIM_I=m 19.1480 +CONFIG_ARCNET_COM20020=m 19.1481 +CONFIG_ARCNET_COM20020_ISA=m 19.1482 +CONFIG_ARCNET_COM20020_PCI=m 19.1483 +CONFIG_MII=m 19.1484 +CONFIG_PHYLIB=m 19.1485 + 19.1486 +# 19.1487 +# MII PHY device drivers 19.1488 +# 19.1489 +CONFIG_MARVELL_PHY=m 19.1490 +CONFIG_DAVICOM_PHY=m 19.1491 +CONFIG_QSEMI_PHY=m 19.1492 +CONFIG_LXT_PHY=m 19.1493 +CONFIG_CICADA_PHY=m 19.1494 +CONFIG_VITESSE_PHY=m 19.1495 +CONFIG_SMSC_PHY=m 19.1496 +CONFIG_BROADCOM_PHY=m 19.1497 +# CONFIG_BCM63XX_PHY is not set 19.1498 +CONFIG_ICPLUS_PHY=m 19.1499 +CONFIG_REALTEK_PHY=m 19.1500 +CONFIG_NATIONAL_PHY=m 19.1501 +CONFIG_STE10XP=m 19.1502 +CONFIG_LSI_ET1011C_PHY=m 19.1503 +CONFIG_MICREL_PHY=m 19.1504 +CONFIG_MDIO_BITBANG=m 19.1505 +CONFIG_MDIO_GPIO=m 19.1506 +CONFIG_NET_ETHERNET=y 19.1507 +CONFIG_HAPPYMEAL=m 19.1508 +CONFIG_SUNGEM=m 19.1509 +CONFIG_CASSINI=m 19.1510 +CONFIG_NET_VENDOR_3COM=y 19.1511 +CONFIG_EL1=m 19.1512 +CONFIG_EL2=m 19.1513 +CONFIG_ELPLUS=m 19.1514 +CONFIG_EL16=m 19.1515 +CONFIG_EL3=m 19.1516 +CONFIG_3C515=m 19.1517 +CONFIG_VORTEX=m 19.1518 +CONFIG_TYPHOON=m 19.1519 +CONFIG_LANCE=m 19.1520 +CONFIG_NET_VENDOR_SMC=y 19.1521 +CONFIG_WD80x3=m 19.1522 +CONFIG_ULTRA=m 19.1523 +CONFIG_SMC9194=m 19.1524 +CONFIG_ENC28J60=m 19.1525 +CONFIG_ENC28J60_WRITEVERIFY=y 19.1526 +CONFIG_ETHOC=m 19.1527 +CONFIG_NET_VENDOR_RACAL=y 19.1528 +CONFIG_NI5010=m 19.1529 +CONFIG_NI52=m 19.1530 +CONFIG_NI65=m 19.1531 +CONFIG_DNET=m 19.1532 +CONFIG_NET_TULIP=y 19.1533 +CONFIG_DE2104X=m 19.1534 +CONFIG_DE2104X_DSL=0 19.1535 +CONFIG_TULIP=m 19.1536 +# CONFIG_TULIP_MWI is not set 19.1537 +# CONFIG_TULIP_MMIO is not set 19.1538 +# CONFIG_TULIP_NAPI is not set 19.1539 +CONFIG_DE4X5=m 19.1540 +CONFIG_WINBOND_840=m 19.1541 +CONFIG_DM9102=m 19.1542 +CONFIG_ULI526X=m 19.1543 +CONFIG_AT1700=m 19.1544 +CONFIG_DEPCA=m 19.1545 +CONFIG_HP100=m 19.1546 +CONFIG_NET_ISA=y 19.1547 +CONFIG_E2100=m 19.1548 +CONFIG_EWRK3=m 19.1549 +CONFIG_EEXPRESS=m 19.1550 +CONFIG_EEXPRESS_PRO=m 19.1551 +CONFIG_HPLAN_PLUS=m 19.1552 +CONFIG_HPLAN=m 19.1553 +CONFIG_LP486E=m 19.1554 +CONFIG_ETH16I=m 19.1555 +CONFIG_NE2000=m 19.1556 +CONFIG_ZNET=m 19.1557 +CONFIG_SEEQ8005=m 19.1558 +# CONFIG_IBM_NEW_EMAC_ZMII is not set 19.1559 +# CONFIG_IBM_NEW_EMAC_RGMII is not set 19.1560 +# CONFIG_IBM_NEW_EMAC_TAH is not set 19.1561 +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 19.1562 +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set 19.1563 +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 19.1564 +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 19.1565 +CONFIG_NET_PCI=y 19.1566 +CONFIG_PCNET32=m 19.1567 +CONFIG_AMD8111_ETH=m 19.1568 +CONFIG_ADAPTEC_STARFIRE=m 19.1569 +CONFIG_AC3200=m 19.1570 +CONFIG_KSZ884X_PCI=m 19.1571 +CONFIG_APRICOT=m 19.1572 +CONFIG_B44=m 19.1573 +CONFIG_B44_PCI_AUTOSELECT=y 19.1574 +CONFIG_B44_PCICORE_AUTOSELECT=y 19.1575 +CONFIG_B44_PCI=y 19.1576 +CONFIG_FORCEDETH=m 19.1577 +CONFIG_CS89x0=m 19.1578 +CONFIG_E100=m 19.1579 +CONFIG_FEALNX=m 19.1580 +CONFIG_NATSEMI=m 19.1581 +CONFIG_NE2K_PCI=m 19.1582 +CONFIG_8139CP=m 19.1583 +CONFIG_8139TOO=m 19.1584 +CONFIG_8139TOO_PIO=y 19.1585 +# CONFIG_8139TOO_TUNE_TWISTER is not set 19.1586 +# CONFIG_8139TOO_8129 is not set 19.1587 +# CONFIG_8139_OLD_RX_RESET is not set 19.1588 +CONFIG_R6040=m 19.1589 +CONFIG_SIS900=m 19.1590 +CONFIG_EPIC100=m 19.1591 +CONFIG_SMSC9420=m 19.1592 +CONFIG_SUNDANCE=m 19.1593 +# CONFIG_SUNDANCE_MMIO is not set 19.1594 +CONFIG_TLAN=m 19.1595 +CONFIG_KS8842=m 19.1596 +CONFIG_KS8851=m 19.1597 +CONFIG_KS8851_MLL=m 19.1598 +CONFIG_VIA_RHINE=m 19.1599 +# CONFIG_VIA_RHINE_MMIO is not set 19.1600 +CONFIG_SC92031=m 19.1601 +CONFIG_NET_POCKET=y 19.1602 +CONFIG_ATP=m 19.1603 +CONFIG_DE600=m 19.1604 +CONFIG_DE620=m 19.1605 +CONFIG_ATL2=m 19.1606 +CONFIG_NETDEV_1000=y 19.1607 +CONFIG_ACENIC=m 19.1608 +# CONFIG_ACENIC_OMIT_TIGON_I is not set 19.1609 +CONFIG_DL2K=m 19.1610 +CONFIG_E1000=m 19.1611 +CONFIG_E1000E=m 19.1612 +CONFIG_IP1000=m 19.1613 +CONFIG_IGB=m 19.1614 +CONFIG_IGB_DCA=y 19.1615 +CONFIG_IGBVF=m 19.1616 +CONFIG_NS83820=m 19.1617 +CONFIG_HAMACHI=m 19.1618 +CONFIG_YELLOWFIN=m 19.1619 +CONFIG_R8169=m 19.1620 +CONFIG_R8169_VLAN=y 19.1621 +CONFIG_SIS190=m 19.1622 +CONFIG_SKGE=m 19.1623 +CONFIG_SKY2=m 19.1624 +CONFIG_VIA_VELOCITY=m 19.1625 +CONFIG_TIGON3=m 19.1626 +CONFIG_BNX2=m 19.1627 +CONFIG_CNIC=m 19.1628 +CONFIG_QLA3XXX=m 19.1629 +CONFIG_ATL1=m 19.1630 +CONFIG_ATL1E=m 19.1631 +CONFIG_ATL1C=m 19.1632 +CONFIG_JME=m 19.1633 +# CONFIG_STMMAC_ETH is not set 19.1634 +# CONFIG_PCH_GBE is not set 19.1635 +CONFIG_NETDEV_10000=y 19.1636 +CONFIG_MDIO=m 19.1637 +CONFIG_CHELSIO_T1=m 19.1638 +CONFIG_CHELSIO_T1_1G=y 19.1639 +CONFIG_CHELSIO_T3_DEPENDS=y 19.1640 +CONFIG_CHELSIO_T3=m 19.1641 +CONFIG_CHELSIO_T4_DEPENDS=y 19.1642 +CONFIG_CHELSIO_T4=m 19.1643 +CONFIG_CHELSIO_T4VF_DEPENDS=y 19.1644 +# CONFIG_CHELSIO_T4VF is not set 19.1645 +CONFIG_ENIC=m 19.1646 +CONFIG_IXGBE=m 19.1647 +CONFIG_IXGBE_DCA=y 19.1648 +CONFIG_IXGB=m 19.1649 +CONFIG_S2IO=m 19.1650 +CONFIG_VXGE=m 19.1651 +CONFIG_VXGE_DEBUG_TRACE_ALL=y 19.1652 +CONFIG_MYRI10GE=m 19.1653 +CONFIG_MYRI10GE_DCA=y 19.1654 +CONFIG_NETXEN_NIC=m 19.1655 +CONFIG_NIU=m 19.1656 +CONFIG_MLX4_EN=m 19.1657 +CONFIG_MLX4_CORE=m 19.1658 +CONFIG_MLX4_DEBUG=y 19.1659 +CONFIG_TEHUTI=m 19.1660 +CONFIG_BNX2X=m 19.1661 +CONFIG_QLCNIC=m 19.1662 +CONFIG_QLGE=m 19.1663 +# CONFIG_BNA is not set 19.1664 +CONFIG_SFC=m 19.1665 +CONFIG_SFC_MTD=y 19.1666 +CONFIG_BE2NET=m 19.1667 +CONFIG_TR=m 19.1668 +CONFIG_IBMTR=m 19.1669 +CONFIG_IBMOL=m 19.1670 +CONFIG_IBMLS=m 19.1671 +CONFIG_3C359=m 19.1672 +CONFIG_TMS380TR=m 19.1673 +CONFIG_TMSPCI=m 19.1674 +CONFIG_SKISA=m 19.1675 +CONFIG_PROTEON=m 19.1676 +CONFIG_ABYSS=m 19.1677 +CONFIG_SMCTR=m 19.1678 +CONFIG_WLAN=y 19.1679 +CONFIG_LIBERTAS_THINFIRM=m 19.1680 +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set 19.1681 +CONFIG_LIBERTAS_THINFIRM_USB=m 19.1682 +CONFIG_AIRO=m 19.1683 +CONFIG_ATMEL=m 19.1684 +CONFIG_PCI_ATMEL=m 19.1685 +CONFIG_AT76C50X_USB=m 19.1686 +CONFIG_PRISM54=m 19.1687 +CONFIG_USB_ZD1201=m 19.1688 +CONFIG_USB_NET_RNDIS_WLAN=m 19.1689 +CONFIG_RTL8180=m 19.1690 +CONFIG_RTL8187=m 19.1691 +CONFIG_RTL8187_LEDS=y 19.1692 +CONFIG_ADM8211=m 19.1693 +CONFIG_MAC80211_HWSIM=m 19.1694 +CONFIG_MWL8K=m 19.1695 +CONFIG_ATH_COMMON=m 19.1696 +# CONFIG_ATH_DEBUG is not set 19.1697 +# CONFIG_ATH5K is not set 19.1698 +# CONFIG_ATH9K is not set 19.1699 +# CONFIG_ATH9K_HTC is not set 19.1700 +# CONFIG_AR9170_USB is not set 19.1701 +# CONFIG_CARL9170 is not set 19.1702 +CONFIG_B43=m 19.1703 +CONFIG_B43_PCI_AUTOSELECT=y 19.1704 +CONFIG_B43_PCICORE_AUTOSELECT=y 19.1705 +# CONFIG_B43_SDIO is not set 19.1706 +CONFIG_B43_PIO=y 19.1707 +CONFIG_B43_PHY_LP=y 19.1708 +CONFIG_B43_LEDS=y 19.1709 +CONFIG_B43_HWRNG=y 19.1710 +# CONFIG_B43_DEBUG is not set 19.1711 +CONFIG_B43LEGACY=m 19.1712 +CONFIG_B43LEGACY_PCI_AUTOSELECT=y 19.1713 +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y 19.1714 +CONFIG_B43LEGACY_LEDS=y 19.1715 +CONFIG_B43LEGACY_HWRNG=y 19.1716 +CONFIG_B43LEGACY_DEBUG=y 19.1717 +CONFIG_B43LEGACY_DMA=y 19.1718 +CONFIG_B43LEGACY_PIO=y 19.1719 +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y 19.1720 +# CONFIG_B43LEGACY_DMA_MODE is not set 19.1721 +# CONFIG_B43LEGACY_PIO_MODE is not set 19.1722 +CONFIG_HOSTAP=m 19.1723 +CONFIG_HOSTAP_FIRMWARE=y 19.1724 +CONFIG_HOSTAP_FIRMWARE_NVRAM=y 19.1725 +CONFIG_HOSTAP_PLX=m 19.1726 +CONFIG_HOSTAP_PCI=m 19.1727 +CONFIG_IPW2100=m 19.1728 +CONFIG_IPW2100_MONITOR=y 19.1729 +# CONFIG_IPW2100_DEBUG is not set 19.1730 +CONFIG_IPW2200=m 19.1731 +CONFIG_IPW2200_MONITOR=y 19.1732 +CONFIG_IPW2200_RADIOTAP=y 19.1733 +CONFIG_IPW2200_PROMISCUOUS=y 19.1734 +CONFIG_IPW2200_QOS=y 19.1735 +# CONFIG_IPW2200_DEBUG is not set 19.1736 +CONFIG_LIBIPW=m 19.1737 +# CONFIG_LIBIPW_DEBUG is not set 19.1738 +CONFIG_IWLWIFI=m 19.1739 + 19.1740 +# 19.1741 +# Debugging Options 19.1742 +# 19.1743 +# CONFIG_IWLWIFI_DEBUG is not set 19.1744 +CONFIG_IWLAGN=m 19.1745 +CONFIG_IWL4965=y 19.1746 +CONFIG_IWL5000=y 19.1747 +CONFIG_IWL3945=m 19.1748 +# CONFIG_IWM is not set 19.1749 +CONFIG_LIBERTAS=m 19.1750 +CONFIG_LIBERTAS_USB=m 19.1751 +# CONFIG_LIBERTAS_SDIO is not set 19.1752 +CONFIG_LIBERTAS_SPI=m 19.1753 +# CONFIG_LIBERTAS_DEBUG is not set 19.1754 +CONFIG_LIBERTAS_MESH=y 19.1755 +CONFIG_HERMES=m 19.1756 +# CONFIG_HERMES_PRISM is not set 19.1757 +CONFIG_HERMES_CACHE_FW_ON_INIT=y 19.1758 +CONFIG_PLX_HERMES=m 19.1759 +CONFIG_TMD_HERMES=m 19.1760 +CONFIG_NORTEL_HERMES=m 19.1761 +# CONFIG_ORINOCO_USB is not set 19.1762 +CONFIG_P54_COMMON=m 19.1763 +CONFIG_P54_USB=m 19.1764 +CONFIG_P54_PCI=m 19.1765 +CONFIG_P54_SPI=m 19.1766 +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set 19.1767 +CONFIG_P54_LEDS=y 19.1768 +CONFIG_RT2X00=m 19.1769 +CONFIG_RT2400PCI=m 19.1770 +CONFIG_RT2500PCI=m 19.1771 +CONFIG_RT61PCI=m 19.1772 +CONFIG_RT2800PCI_PCI=y 19.1773 +CONFIG_RT2800PCI=m 19.1774 +CONFIG_RT2800PCI_RT30XX=y 19.1775 +CONFIG_RT2800PCI_RT35XX=y 19.1776 +# CONFIG_RT2500USB is not set 19.1777 +# CONFIG_RT73USB is not set 19.1778 +# CONFIG_RT2800USB is not set 19.1779 +CONFIG_RT2800_LIB=m 19.1780 +CONFIG_RT2X00_LIB_PCI=m 19.1781 +CONFIG_RT2X00_LIB=m 19.1782 +CONFIG_RT2X00_LIB_HT=y 19.1783 +CONFIG_RT2X00_LIB_FIRMWARE=y 19.1784 +CONFIG_RT2X00_LIB_CRYPTO=y 19.1785 +CONFIG_RT2X00_LIB_LEDS=y 19.1786 +# CONFIG_RT2X00_DEBUG is not set 19.1787 +CONFIG_WL1251=m 19.1788 +CONFIG_WL1251_SPI=m 19.1789 +# CONFIG_WL1251_SDIO is not set 19.1790 +CONFIG_WL12XX=m 19.1791 +CONFIG_WL1271=m 19.1792 +# CONFIG_WL1271_SPI is not set 19.1793 +# CONFIG_WL1271_SDIO is not set 19.1794 +CONFIG_ZD1211RW=m 19.1795 +# CONFIG_ZD1211RW_DEBUG is not set 19.1796 + 19.1797 +# 19.1798 +# WiMAX Wireless Broadband devices 19.1799 +# 19.1800 +CONFIG_WIMAX_I2400M=m 19.1801 +CONFIG_WIMAX_I2400M_USB=m 19.1802 +# CONFIG_WIMAX_I2400M_SDIO is not set 19.1803 +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 19.1804 + 19.1805 +# 19.1806 +# USB Network Adapters 19.1807 +# 19.1808 +CONFIG_USB_CATC=m 19.1809 +CONFIG_USB_KAWETH=m 19.1810 +CONFIG_USB_PEGASUS=m 19.1811 +CONFIG_USB_RTL8150=m 19.1812 +CONFIG_USB_USBNET=m 19.1813 +CONFIG_USB_NET_AX8817X=m 19.1814 +CONFIG_USB_NET_CDCETHER=m 19.1815 +CONFIG_USB_NET_CDC_EEM=m 19.1816 +CONFIG_USB_NET_DM9601=m 19.1817 +CONFIG_USB_NET_SMSC75XX=m 19.1818 +CONFIG_USB_NET_SMSC95XX=m 19.1819 +CONFIG_USB_NET_GL620A=m 19.1820 +CONFIG_USB_NET_NET1080=m 19.1821 +CONFIG_USB_NET_PLUSB=m 19.1822 +CONFIG_USB_NET_MCS7830=m 19.1823 +CONFIG_USB_NET_RNDIS_HOST=m 19.1824 +CONFIG_USB_NET_CDC_SUBSET=m 19.1825 +CONFIG_USB_ALI_M5632=y 19.1826 +CONFIG_USB_AN2720=y 19.1827 +CONFIG_USB_BELKIN=y 19.1828 +CONFIG_USB_ARMLINUX=y 19.1829 +CONFIG_USB_EPSON2888=y 19.1830 +CONFIG_USB_KC2190=y 19.1831 +CONFIG_USB_NET_ZAURUS=m 19.1832 +# CONFIG_USB_NET_CX82310_ETH is not set 19.1833 +CONFIG_USB_HSO=m 19.1834 +CONFIG_USB_NET_INT51X1=m 19.1835 +CONFIG_USB_CDC_PHONET=m 19.1836 +CONFIG_USB_IPHETH=m 19.1837 +CONFIG_USB_SIERRA_NET=m 19.1838 +CONFIG_WAN=y 19.1839 +CONFIG_HOSTESS_SV11=m 19.1840 +CONFIG_COSA=m 19.1841 +CONFIG_LANMEDIA=m 19.1842 +CONFIG_SEALEVEL_4021=m 19.1843 +CONFIG_HDLC=m 19.1844 +CONFIG_HDLC_RAW=m 19.1845 +CONFIG_HDLC_RAW_ETH=m 19.1846 +CONFIG_HDLC_CISCO=m 19.1847 +CONFIG_HDLC_FR=m 19.1848 +CONFIG_HDLC_PPP=m 19.1849 + 19.1850 +# 19.1851 +# X.25/LAPB support is disabled 19.1852 +# 19.1853 +CONFIG_PCI200SYN=m 19.1854 +CONFIG_WANXL=m 19.1855 +CONFIG_PC300TOO=m 19.1856 +CONFIG_N2=m 19.1857 +CONFIG_C101=m 19.1858 +CONFIG_FARSYNC=m 19.1859 +CONFIG_DSCC4=m 19.1860 +CONFIG_DSCC4_PCISYNC=y 19.1861 +CONFIG_DSCC4_PCI_RST=y 19.1862 +CONFIG_DLCI=m 19.1863 +CONFIG_DLCI_MAX=8 19.1864 +CONFIG_SDLA=m 19.1865 +CONFIG_SBNI=m 19.1866 +CONFIG_SBNI_MULTILINE=y 19.1867 + 19.1868 +# 19.1869 +# CAIF transport drivers 19.1870 +# 19.1871 +CONFIG_FDDI=m 19.1872 +CONFIG_DEFXX=m 19.1873 +# CONFIG_DEFXX_MMIO is not set 19.1874 +CONFIG_SKFP=m 19.1875 +CONFIG_HIPPI=y 19.1876 +CONFIG_ROADRUNNER=m 19.1877 +CONFIG_ROADRUNNER_LARGE_RINGS=y 19.1878 +CONFIG_PLIP=m 19.1879 +CONFIG_PPP=m 19.1880 +CONFIG_PPP_MULTILINK=y 19.1881 +CONFIG_PPP_FILTER=y 19.1882 +CONFIG_PPP_ASYNC=m 19.1883 +CONFIG_PPP_SYNC_TTY=m 19.1884 +CONFIG_PPP_DEFLATE=m 19.1885 +CONFIG_PPP_BSDCOMP=m 19.1886 +CONFIG_PPP_MPPE=m 19.1887 +CONFIG_PPPOE=m 19.1888 +CONFIG_SLIP=m 19.1889 +CONFIG_SLIP_COMPRESSED=y 19.1890 +CONFIG_SLHC=m 19.1891 +CONFIG_SLIP_SMART=y 19.1892 +CONFIG_SLIP_MODE_SLIP6=y 19.1893 +CONFIG_NET_FC=y 19.1894 +# CONFIG_NETCONSOLE is not set 19.1895 +# CONFIG_NETPOLL is not set 19.1896 +# CONFIG_NET_POLL_CONTROLLER is not set 19.1897 +# CONFIG_VIRTIO_NET is not set 19.1898 +CONFIG_VMXNET3=m 19.1899 +CONFIG_ISDN=y 19.1900 +CONFIG_ISDN_I4L=m 19.1901 +# CONFIG_ISDN_PPP is not set 19.1902 +# CONFIG_ISDN_AUDIO is not set 19.1903 + 19.1904 +# 19.1905 +# ISDN feature submodules 19.1906 +# 19.1907 +# CONFIG_ISDN_DRV_LOOP is not set 19.1908 +# CONFIG_ISDN_DIVERSION is not set 19.1909 + 19.1910 +# 19.1911 +# ISDN4Linux hardware drivers 19.1912 +# 19.1913 + 19.1914 +# 19.1915 +# Passive cards 19.1916 +# 19.1917 +# CONFIG_ISDN_DRV_HISAX is not set 19.1918 + 19.1919 +# 19.1920 +# Active cards 19.1921 +# 19.1922 +# CONFIG_ISDN_DRV_ICN is not set 19.1923 +# CONFIG_ISDN_DRV_PCBIT is not set 19.1924 +# CONFIG_ISDN_DRV_SC is not set 19.1925 +# CONFIG_ISDN_DRV_ACT2000 is not set 19.1926 +CONFIG_ISDN_CAPI=m 19.1927 +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y 19.1928 +CONFIG_CAPI_TRACE=y 19.1929 +CONFIG_ISDN_CAPI_MIDDLEWARE=y 19.1930 +CONFIG_ISDN_CAPI_CAPI20=m 19.1931 +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y 19.1932 +CONFIG_ISDN_CAPI_CAPIFS=m 19.1933 +CONFIG_ISDN_CAPI_CAPIDRV=m 19.1934 + 19.1935 +# 19.1936 +# CAPI hardware drivers 19.1937 +# 19.1938 +CONFIG_CAPI_AVM=y 19.1939 +CONFIG_ISDN_DRV_AVMB1_B1ISA=m 19.1940 +CONFIG_ISDN_DRV_AVMB1_B1PCI=m 19.1941 +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y 19.1942 +CONFIG_ISDN_DRV_AVMB1_T1ISA=m 19.1943 +CONFIG_ISDN_DRV_AVMB1_T1PCI=m 19.1944 +CONFIG_ISDN_DRV_AVMB1_C4=m 19.1945 +CONFIG_CAPI_EICON=y 19.1946 +CONFIG_ISDN_DIVAS=m 19.1947 +CONFIG_ISDN_DIVAS_BRIPCI=y 19.1948 +CONFIG_ISDN_DIVAS_PRIPCI=y 19.1949 +CONFIG_ISDN_DIVAS_DIVACAPI=m 19.1950 +CONFIG_ISDN_DIVAS_USERIDI=m 19.1951 +CONFIG_ISDN_DIVAS_MAINT=m 19.1952 +CONFIG_ISDN_DRV_GIGASET=m 19.1953 +CONFIG_GIGASET_CAPI=y 19.1954 +# CONFIG_GIGASET_I4L is not set 19.1955 +# CONFIG_GIGASET_DUMMYLL is not set 19.1956 +CONFIG_GIGASET_BASE=m 19.1957 +CONFIG_GIGASET_M105=m 19.1958 +CONFIG_GIGASET_M101=m 19.1959 +# CONFIG_GIGASET_DEBUG is not set 19.1960 +CONFIG_HYSDN=m 19.1961 +CONFIG_HYSDN_CAPI=y 19.1962 +CONFIG_MISDN=m 19.1963 +CONFIG_MISDN_DSP=m 19.1964 +CONFIG_MISDN_L1OIP=m 19.1965 + 19.1966 +# 19.1967 +# mISDN hardware drivers 19.1968 +# 19.1969 +CONFIG_MISDN_HFCPCI=m 19.1970 +CONFIG_MISDN_HFCMULTI=m 19.1971 +CONFIG_MISDN_HFCUSB=m 19.1972 +CONFIG_MISDN_AVMFRITZ=m 19.1973 +CONFIG_MISDN_SPEEDFAX=m 19.1974 +CONFIG_MISDN_INFINEON=m 19.1975 +CONFIG_MISDN_W6692=m 19.1976 +CONFIG_MISDN_NETJET=m 19.1977 +CONFIG_MISDN_IPAC=m 19.1978 +CONFIG_MISDN_ISAR=m 19.1979 +CONFIG_ISDN_HDLC=m 19.1980 +CONFIG_PHONE=m 19.1981 +CONFIG_PHONE_IXJ=m 19.1982 + 19.1983 +# 19.1984 +# Input device support 19.1985 +# 19.1986 +CONFIG_INPUT=y 19.1987 +CONFIG_INPUT_FF_MEMLESS=m 19.1988 +CONFIG_INPUT_POLLDEV=m 19.1989 +CONFIG_INPUT_SPARSEKMAP=m 19.1990 + 19.1991 +# 19.1992 +# Userland interfaces 19.1993 +# 19.1994 +CONFIG_INPUT_MOUSEDEV=m 19.1995 +CONFIG_INPUT_MOUSEDEV_PSAUX=y 19.1996 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 19.1997 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 19.1998 +CONFIG_INPUT_JOYDEV=m 19.1999 +CONFIG_INPUT_EVDEV=m 19.2000 +CONFIG_INPUT_EVBUG=m 19.2001 + 19.2002 +# 19.2003 +# Input Device Drivers 19.2004 +# 19.2005 +CONFIG_INPUT_KEYBOARD=y 19.2006 +CONFIG_KEYBOARD_ADP5588=m 19.2007 +CONFIG_KEYBOARD_ATKBD=y 19.2008 +# CONFIG_KEYBOARD_QT2160 is not set 19.2009 +CONFIG_KEYBOARD_LKKBD=m 19.2010 +CONFIG_KEYBOARD_GPIO=m 19.2011 +# CONFIG_KEYBOARD_GPIO_POLLED is not set 19.2012 +# CONFIG_KEYBOARD_TCA6416 is not set 19.2013 +CONFIG_KEYBOARD_MATRIX=m 19.2014 +CONFIG_KEYBOARD_LM8323=m 19.2015 +CONFIG_KEYBOARD_MAX7359=m 19.2016 +# CONFIG_KEYBOARD_MCS is not set 19.2017 +CONFIG_KEYBOARD_NEWTON=m 19.2018 +CONFIG_KEYBOARD_OPENCORES=m 19.2019 +CONFIG_KEYBOARD_STOWAWAY=m 19.2020 +CONFIG_KEYBOARD_SUNKBD=m 19.2021 +CONFIG_KEYBOARD_XTKBD=m 19.2022 +CONFIG_INPUT_MOUSE=y 19.2023 +CONFIG_MOUSE_PS2=m 19.2024 +CONFIG_MOUSE_PS2_ALPS=y 19.2025 +CONFIG_MOUSE_PS2_LOGIPS2PP=y 19.2026 +CONFIG_MOUSE_PS2_SYNAPTICS=y 19.2027 +CONFIG_MOUSE_PS2_TRACKPOINT=y 19.2028 +CONFIG_MOUSE_PS2_ELANTECH=y 19.2029 +CONFIG_MOUSE_PS2_SENTELIC=y 19.2030 +CONFIG_MOUSE_PS2_TOUCHKIT=y 19.2031 +CONFIG_MOUSE_SERIAL=m 19.2032 +CONFIG_MOUSE_APPLETOUCH=m 19.2033 +CONFIG_MOUSE_BCM5974=m 19.2034 +CONFIG_MOUSE_INPORT=m 19.2035 +CONFIG_MOUSE_ATIXL=y 19.2036 +CONFIG_MOUSE_LOGIBM=m 19.2037 +CONFIG_MOUSE_PC110PAD=m 19.2038 +CONFIG_MOUSE_VSXXXAA=m 19.2039 +CONFIG_MOUSE_GPIO=m 19.2040 +CONFIG_MOUSE_SYNAPTICS_I2C=m 19.2041 +CONFIG_INPUT_JOYSTICK=y 19.2042 +CONFIG_JOYSTICK_ANALOG=m 19.2043 +CONFIG_JOYSTICK_A3D=m 19.2044 +CONFIG_JOYSTICK_ADI=m 19.2045 +CONFIG_JOYSTICK_COBRA=m 19.2046 +CONFIG_JOYSTICK_GF2K=m 19.2047 +CONFIG_JOYSTICK_GRIP=m 19.2048 +CONFIG_JOYSTICK_GRIP_MP=m 19.2049 +CONFIG_JOYSTICK_GUILLEMOT=m 19.2050 +CONFIG_JOYSTICK_INTERACT=m 19.2051 +CONFIG_JOYSTICK_SIDEWINDER=m 19.2052 +CONFIG_JOYSTICK_TMDC=m 19.2053 +CONFIG_JOYSTICK_IFORCE=m 19.2054 +CONFIG_JOYSTICK_IFORCE_USB=y 19.2055 +CONFIG_JOYSTICK_IFORCE_232=y 19.2056 +CONFIG_JOYSTICK_WARRIOR=m 19.2057 +CONFIG_JOYSTICK_MAGELLAN=m 19.2058 +CONFIG_JOYSTICK_SPACEORB=m 19.2059 +CONFIG_JOYSTICK_SPACEBALL=m 19.2060 +CONFIG_JOYSTICK_STINGER=m 19.2061 +CONFIG_JOYSTICK_TWIDJOY=m 19.2062 +CONFIG_JOYSTICK_ZHENHUA=m 19.2063 +CONFIG_JOYSTICK_DB9=m 19.2064 +CONFIG_JOYSTICK_GAMECON=m 19.2065 +CONFIG_JOYSTICK_TURBOGRAFX=m 19.2066 +CONFIG_JOYSTICK_JOYDUMP=m 19.2067 +CONFIG_JOYSTICK_XPAD=m 19.2068 +CONFIG_JOYSTICK_XPAD_FF=y 19.2069 +CONFIG_JOYSTICK_XPAD_LEDS=y 19.2070 +CONFIG_INPUT_TABLET=y 19.2071 +CONFIG_TABLET_USB_ACECAD=m 19.2072 +CONFIG_TABLET_USB_AIPTEK=m 19.2073 +CONFIG_TABLET_USB_GTCO=m 19.2074 +# CONFIG_TABLET_USB_HANWANG is not set 19.2075 +CONFIG_TABLET_USB_KBTAB=m 19.2076 +CONFIG_TABLET_USB_WACOM=m 19.2077 +CONFIG_INPUT_TOUCHSCREEN=y 19.2078 +CONFIG_TOUCHSCREEN_ADS7846=m 19.2079 +CONFIG_TOUCHSCREEN_AD7877=m 19.2080 +CONFIG_TOUCHSCREEN_AD7879=m 19.2081 +CONFIG_TOUCHSCREEN_AD7879_I2C=m 19.2082 +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set 19.2083 +# CONFIG_TOUCHSCREEN_BU21013 is not set 19.2084 +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set 19.2085 +CONFIG_TOUCHSCREEN_DYNAPRO=m 19.2086 +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set 19.2087 +CONFIG_TOUCHSCREEN_EETI=m 19.2088 +CONFIG_TOUCHSCREEN_FUJITSU=m 19.2089 +CONFIG_TOUCHSCREEN_GUNZE=m 19.2090 +CONFIG_TOUCHSCREEN_ELO=m 19.2091 +CONFIG_TOUCHSCREEN_WACOM_W8001=m 19.2092 +CONFIG_TOUCHSCREEN_MCS5000=m 19.2093 +CONFIG_TOUCHSCREEN_MTOUCH=m 19.2094 +CONFIG_TOUCHSCREEN_INEXIO=m 19.2095 +CONFIG_TOUCHSCREEN_MK712=m 19.2096 +CONFIG_TOUCHSCREEN_HTCPEN=m 19.2097 +CONFIG_TOUCHSCREEN_PENMOUNT=m 19.2098 +# CONFIG_TOUCHSCREEN_QT602240 is not set 19.2099 +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m 19.2100 +CONFIG_TOUCHSCREEN_TOUCHWIN=m 19.2101 +# CONFIG_TOUCHSCREEN_UCB1400 is not set 19.2102 +CONFIG_TOUCHSCREEN_WM97XX=m 19.2103 +CONFIG_TOUCHSCREEN_WM9705=y 19.2104 +CONFIG_TOUCHSCREEN_WM9712=y 19.2105 +CONFIG_TOUCHSCREEN_WM9713=y 19.2106 +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m 19.2107 +CONFIG_TOUCHSCREEN_USB_EGALAX=y 19.2108 +CONFIG_TOUCHSCREEN_USB_PANJIT=y 19.2109 +CONFIG_TOUCHSCREEN_USB_3M=y 19.2110 +CONFIG_TOUCHSCREEN_USB_ITM=y 19.2111 +CONFIG_TOUCHSCREEN_USB_ETURBO=y 19.2112 +CONFIG_TOUCHSCREEN_USB_GUNZE=y 19.2113 +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y 19.2114 +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y 19.2115 +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y 19.2116 +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y 19.2117 +CONFIG_TOUCHSCREEN_USB_GOTOP=y 19.2118 +CONFIG_TOUCHSCREEN_USB_JASTEC=y 19.2119 +CONFIG_TOUCHSCREEN_USB_E2I=y 19.2120 +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y 19.2121 +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y 19.2122 +CONFIG_TOUCHSCREEN_USB_NEXIO=y 19.2123 +CONFIG_TOUCHSCREEN_TOUCHIT213=m 19.2124 +CONFIG_TOUCHSCREEN_TSC2007=m 19.2125 +CONFIG_TOUCHSCREEN_PCAP=m 19.2126 +# CONFIG_TOUCHSCREEN_TPS6507X is not set 19.2127 +CONFIG_INPUT_MISC=y 19.2128 +# CONFIG_INPUT_AD714X is not set 19.2129 +CONFIG_INPUT_PCSPKR=m 19.2130 +CONFIG_INPUT_APANEL=m 19.2131 +CONFIG_INPUT_WISTRON_BTNS=m 19.2132 +CONFIG_INPUT_ATI_REMOTE=m 19.2133 +CONFIG_INPUT_ATI_REMOTE2=m 19.2134 +CONFIG_INPUT_KEYSPAN_REMOTE=m 19.2135 +CONFIG_INPUT_POWERMATE=m 19.2136 +CONFIG_INPUT_YEALINK=m 19.2137 +CONFIG_INPUT_CM109=m 19.2138 +CONFIG_INPUT_UINPUT=m 19.2139 +CONFIG_INPUT_WINBOND_CIR=m 19.2140 +CONFIG_INPUT_PCF50633_PMU=m 19.2141 +# CONFIG_INPUT_PCF8574 is not set 19.2142 +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m 19.2143 +CONFIG_INPUT_PCAP=m 19.2144 +# CONFIG_INPUT_ADXL34X is not set 19.2145 + 19.2146 +# 19.2147 +# Hardware I/O ports 19.2148 +# 19.2149 +CONFIG_SERIO=y 19.2150 +CONFIG_SERIO_I8042=y 19.2151 +CONFIG_SERIO_SERPORT=m 19.2152 +CONFIG_SERIO_CT82C710=m 19.2153 +CONFIG_SERIO_PARKBD=m 19.2154 +CONFIG_SERIO_PCIPS2=m 19.2155 +CONFIG_SERIO_LIBPS2=y 19.2156 +CONFIG_SERIO_RAW=m 19.2157 +CONFIG_SERIO_ALTERA_PS2=m 19.2158 +# CONFIG_SERIO_PS2MULT is not set 19.2159 +CONFIG_GAMEPORT=m 19.2160 +CONFIG_GAMEPORT_NS558=m 19.2161 +CONFIG_GAMEPORT_L4=m 19.2162 +CONFIG_GAMEPORT_EMU10K1=m 19.2163 +CONFIG_GAMEPORT_FM801=m 19.2164 + 19.2165 +# 19.2166 +# Character devices 19.2167 +# 19.2168 +CONFIG_VT=y 19.2169 +CONFIG_CONSOLE_TRANSLATIONS=y 19.2170 +CONFIG_VT_CONSOLE=y 19.2171 +CONFIG_HW_CONSOLE=y 19.2172 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 19.2173 +# CONFIG_DEVKMEM is not set 19.2174 +# CONFIG_SERIAL_NONSTANDARD is not set 19.2175 +# CONFIG_N_GSM is not set 19.2176 +CONFIG_NOZOMI=m 19.2177 + 19.2178 +# 19.2179 +# Serial drivers 19.2180 +# 19.2181 +CONFIG_SERIAL_8250=m 19.2182 +CONFIG_FIX_EARLYCON_MEM=y 19.2183 +CONFIG_SERIAL_8250_PCI=m 19.2184 +CONFIG_SERIAL_8250_PNP=m 19.2185 +CONFIG_SERIAL_8250_NR_UARTS=2 19.2186 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 19.2187 +CONFIG_SERIAL_8250_EXTENDED=y 19.2188 +CONFIG_SERIAL_8250_MANY_PORTS=y 19.2189 +CONFIG_SERIAL_8250_FOURPORT=m 19.2190 +CONFIG_SERIAL_8250_ACCENT=m 19.2191 +CONFIG_SERIAL_8250_BOCA=m 19.2192 +CONFIG_SERIAL_8250_EXAR_ST16C554=m 19.2193 +CONFIG_SERIAL_8250_HUB6=m 19.2194 +CONFIG_SERIAL_8250_SHARE_IRQ=y 19.2195 +CONFIG_SERIAL_8250_DETECT_IRQ=y 19.2196 +CONFIG_SERIAL_8250_RSA=y 19.2197 + 19.2198 +# 19.2199 +# Non-8250 serial port support 19.2200 +# 19.2201 +CONFIG_SERIAL_MAX3100=m 19.2202 +# CONFIG_SERIAL_MAX3107 is not set 19.2203 +# CONFIG_SERIAL_MRST_MAX3110 is not set 19.2204 +# CONFIG_SERIAL_MFD_HSU is not set 19.2205 +CONFIG_SERIAL_UARTLITE=m 19.2206 +CONFIG_SERIAL_CORE=m 19.2207 +CONFIG_SERIAL_JSM=m 19.2208 +CONFIG_SERIAL_TIMBERDALE=m 19.2209 +# CONFIG_SERIAL_ALTERA_JTAGUART is not set 19.2210 +# CONFIG_SERIAL_ALTERA_UART is not set 19.2211 +CONFIG_UNIX98_PTYS=y 19.2212 +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 19.2213 +# CONFIG_LEGACY_PTYS is not set 19.2214 +# CONFIG_TTY_PRINTK is not set 19.2215 +CONFIG_PRINTER=m 19.2216 +CONFIG_LP_CONSOLE=y 19.2217 +CONFIG_PPDEV=m 19.2218 +CONFIG_HVC_DRIVER=y 19.2219 +# CONFIG_VIRTIO_CONSOLE is not set 19.2220 +CONFIG_IPMI_HANDLER=m 19.2221 +# CONFIG_IPMI_PANIC_EVENT is not set 19.2222 +CONFIG_IPMI_DEVICE_INTERFACE=m 19.2223 +CONFIG_IPMI_SI=m 19.2224 +CONFIG_IPMI_WATCHDOG=m 19.2225 +CONFIG_IPMI_POWEROFF=m 19.2226 +CONFIG_HW_RANDOM=m 19.2227 +CONFIG_HW_RANDOM_TIMERIOMEM=m 19.2228 +CONFIG_HW_RANDOM_INTEL=m 19.2229 +CONFIG_HW_RANDOM_AMD=m 19.2230 +CONFIG_HW_RANDOM_GEODE=m 19.2231 +CONFIG_HW_RANDOM_VIA=m 19.2232 +# CONFIG_HW_RANDOM_VIRTIO is not set 19.2233 +CONFIG_NVRAM=m 19.2234 +CONFIG_DTLK=m 19.2235 +CONFIG_R3964=m 19.2236 +CONFIG_APPLICOM=m 19.2237 +CONFIG_SONYPI=m 19.2238 +CONFIG_MWAVE=m 19.2239 +CONFIG_PC8736x_GPIO=m 19.2240 +CONFIG_NSC_GPIO=m 19.2241 +CONFIG_CS5535_GPIO=m 19.2242 +CONFIG_RAW_DRIVER=m 19.2243 +CONFIG_MAX_RAW_DEVS=256 19.2244 +CONFIG_HANGCHECK_TIMER=m 19.2245 +CONFIG_TCG_TPM=m 19.2246 +CONFIG_TCG_TIS=m 19.2247 +CONFIG_TCG_NSC=m 19.2248 +CONFIG_TCG_ATMEL=m 19.2249 +CONFIG_TCG_INFINEON=m 19.2250 +CONFIG_TELCLOCK=m 19.2251 +CONFIG_DEVPORT=y 19.2252 +# CONFIG_RAMOOPS is not set 19.2253 +CONFIG_I2C=m 19.2254 +CONFIG_I2C_BOARDINFO=y 19.2255 +CONFIG_I2C_COMPAT=y 19.2256 +CONFIG_I2C_CHARDEV=m 19.2257 +# CONFIG_I2C_MUX is not set 19.2258 +CONFIG_I2C_HELPER_AUTO=y 19.2259 +CONFIG_I2C_SMBUS=m 19.2260 +CONFIG_I2C_ALGOBIT=m 19.2261 +CONFIG_I2C_ALGOPCF=m 19.2262 +CONFIG_I2C_ALGOPCA=m 19.2263 + 19.2264 +# 19.2265 +# I2C Hardware Bus support 19.2266 +# 19.2267 + 19.2268 +# 19.2269 +# PC SMBus host controller drivers 19.2270 +# 19.2271 +CONFIG_I2C_ALI1535=m 19.2272 +CONFIG_I2C_ALI1563=m 19.2273 +CONFIG_I2C_ALI15X3=m 19.2274 +CONFIG_I2C_AMD756=m 19.2275 +CONFIG_I2C_AMD756_S4882=m 19.2276 +CONFIG_I2C_AMD8111=m 19.2277 +CONFIG_I2C_I801=m 19.2278 +CONFIG_I2C_ISCH=m 19.2279 +CONFIG_I2C_PIIX4=m 19.2280 +CONFIG_I2C_NFORCE2=m 19.2281 +CONFIG_I2C_NFORCE2_S4985=m 19.2282 +CONFIG_I2C_SIS5595=m 19.2283 +CONFIG_I2C_SIS630=m 19.2284 +CONFIG_I2C_SIS96X=m 19.2285 +CONFIG_I2C_VIA=m 19.2286 +CONFIG_I2C_VIAPRO=m 19.2287 + 19.2288 +# 19.2289 +# I2C system bus drivers (mostly embedded / system-on-chip) 19.2290 +# 19.2291 +# CONFIG_I2C_GPIO is not set 19.2292 +# CONFIG_I2C_INTEL_MID is not set 19.2293 +CONFIG_I2C_OCORES=m 19.2294 +CONFIG_I2C_PCA_PLATFORM=m 19.2295 +CONFIG_I2C_SIMTEC=m 19.2296 +CONFIG_I2C_XILINX=m 19.2297 + 19.2298 +# 19.2299 +# External I2C/SMBus adapter drivers 19.2300 +# 19.2301 +CONFIG_I2C_PARPORT=m 19.2302 +# CONFIG_I2C_PARPORT_LIGHT is not set 19.2303 +CONFIG_I2C_TAOS_EVM=m 19.2304 +# CONFIG_I2C_TINY_USB is not set 19.2305 + 19.2306 +# 19.2307 +# Other I2C/SMBus bus drivers 19.2308 +# 19.2309 +CONFIG_I2C_ELEKTOR=m 19.2310 +CONFIG_I2C_PCA_ISA=m 19.2311 +CONFIG_I2C_STUB=m 19.2312 +CONFIG_SCx200_ACB=m 19.2313 +# CONFIG_I2C_DEBUG_CORE is not set 19.2314 +# CONFIG_I2C_DEBUG_ALGO is not set 19.2315 +# CONFIG_I2C_DEBUG_BUS is not set 19.2316 +CONFIG_SPI=y 19.2317 +CONFIG_SPI_MASTER=y 19.2318 + 19.2319 +# 19.2320 +# SPI Master Controller Drivers 19.2321 +# 19.2322 +CONFIG_SPI_BITBANG=m 19.2323 +CONFIG_SPI_BUTTERFLY=m 19.2324 +# CONFIG_SPI_GPIO is not set 19.2325 +CONFIG_SPI_LM70_LLP=m 19.2326 +# CONFIG_SPI_TOPCLIFF_PCH is not set 19.2327 +CONFIG_SPI_XILINX=m 19.2328 +CONFIG_SPI_XILINX_PLTFM=m 19.2329 +CONFIG_SPI_DESIGNWARE=m 19.2330 +CONFIG_SPI_DW_PCI=m 19.2331 + 19.2332 +# 19.2333 +# SPI Protocol Masters 19.2334 +# 19.2335 +CONFIG_SPI_SPIDEV=m 19.2336 +# CONFIG_SPI_TLE62X0 is not set 19.2337 + 19.2338 +# 19.2339 +# PPS support 19.2340 +# 19.2341 +CONFIG_PPS=m 19.2342 +# CONFIG_PPS_DEBUG is not set 19.2343 + 19.2344 +# 19.2345 +# PPS clients support 19.2346 +# 19.2347 +CONFIG_PPS_CLIENT_KTIMER=m 19.2348 +CONFIG_PPS_CLIENT_LDISC=m 19.2349 +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 19.2350 +CONFIG_GPIOLIB=y 19.2351 +# CONFIG_GPIO_SYSFS is not set 19.2352 +CONFIG_GPIO_MAX730X=m 19.2353 + 19.2354 +# 19.2355 +# Memory mapped GPIO expanders: 19.2356 +# 19.2357 +# CONFIG_GPIO_BASIC_MMIO is not set 19.2358 +CONFIG_GPIO_IT8761E=m 19.2359 +CONFIG_GPIO_SCH=m 19.2360 +# CONFIG_GPIO_VX855 is not set 19.2361 + 19.2362 +# 19.2363 +# I2C GPIO expanders: 19.2364 +# 19.2365 +CONFIG_GPIO_MAX7300=m 19.2366 +CONFIG_GPIO_MAX732X=m 19.2367 +CONFIG_GPIO_PCA953X=m 19.2368 +CONFIG_GPIO_PCF857X=m 19.2369 +CONFIG_GPIO_ADP5588=m 19.2370 + 19.2371 +# 19.2372 +# PCI GPIO expanders: 19.2373 +# 19.2374 +CONFIG_GPIO_CS5535=m 19.2375 +CONFIG_GPIO_LANGWELL=y 19.2376 +# CONFIG_GPIO_PCH is not set 19.2377 +CONFIG_GPIO_TIMBERDALE=y 19.2378 +# CONFIG_GPIO_RDC321X is not set 19.2379 + 19.2380 +# 19.2381 +# SPI GPIO expanders: 19.2382 +# 19.2383 +CONFIG_GPIO_MAX7301=m 19.2384 +CONFIG_GPIO_MCP23S08=m 19.2385 +CONFIG_GPIO_MC33880=m 19.2386 +# CONFIG_GPIO_74X164 is not set 19.2387 + 19.2388 +# 19.2389 +# AC97 GPIO expanders: 19.2390 +# 19.2391 +# CONFIG_GPIO_UCB1400 is not set 19.2392 + 19.2393 +# 19.2394 +# MODULbus GPIO expanders: 19.2395 +# 19.2396 +CONFIG_W1=m 19.2397 +CONFIG_W1_CON=y 19.2398 + 19.2399 +# 19.2400 +# 1-wire Bus Masters 19.2401 +# 19.2402 +CONFIG_W1_MASTER_MATROX=m 19.2403 +CONFIG_W1_MASTER_DS2490=m 19.2404 +CONFIG_W1_MASTER_DS2482=m 19.2405 +CONFIG_W1_MASTER_GPIO=m 19.2406 + 19.2407 +# 19.2408 +# 1-wire Slaves 19.2409 +# 19.2410 +CONFIG_W1_SLAVE_THERM=m 19.2411 +CONFIG_W1_SLAVE_SMEM=m 19.2412 +CONFIG_W1_SLAVE_DS2431=m 19.2413 +CONFIG_W1_SLAVE_DS2433=m 19.2414 +CONFIG_W1_SLAVE_DS2433_CRC=y 19.2415 +CONFIG_W1_SLAVE_DS2760=m 19.2416 +CONFIG_W1_SLAVE_BQ27000=m 19.2417 +CONFIG_POWER_SUPPLY=m 19.2418 +# CONFIG_POWER_SUPPLY_DEBUG is not set 19.2419 +CONFIG_PDA_POWER=m 19.2420 +# CONFIG_TEST_POWER is not set 19.2421 +CONFIG_BATTERY_DS2760=m 19.2422 +CONFIG_BATTERY_DS2782=m 19.2423 +# CONFIG_BATTERY_BQ20Z75 is not set 19.2424 +CONFIG_BATTERY_BQ27x00=m 19.2425 +CONFIG_BATTERY_MAX17040=m 19.2426 +CONFIG_CHARGER_PCF50633=m 19.2427 +# CONFIG_CHARGER_ISP1704 is not set 19.2428 +CONFIG_HWMON=m 19.2429 +CONFIG_HWMON_VID=m 19.2430 +# CONFIG_HWMON_DEBUG_CHIP is not set 19.2431 + 19.2432 +# 19.2433 +# Native drivers 19.2434 +# 19.2435 +CONFIG_SENSORS_ABITUGURU=m 19.2436 +CONFIG_SENSORS_ABITUGURU3=m 19.2437 +CONFIG_SENSORS_AD7414=m 19.2438 +CONFIG_SENSORS_AD7418=m 19.2439 +CONFIG_SENSORS_ADCXX=m 19.2440 +CONFIG_SENSORS_ADM1021=m 19.2441 +CONFIG_SENSORS_ADM1025=m 19.2442 +CONFIG_SENSORS_ADM1026=m 19.2443 +CONFIG_SENSORS_ADM1029=m 19.2444 +CONFIG_SENSORS_ADM1031=m 19.2445 +CONFIG_SENSORS_ADM9240=m 19.2446 +CONFIG_SENSORS_ADT7411=m 19.2447 +CONFIG_SENSORS_ADT7462=m 19.2448 +CONFIG_SENSORS_ADT7470=m 19.2449 +CONFIG_SENSORS_ADT7475=m 19.2450 +CONFIG_SENSORS_ASC7621=m 19.2451 +CONFIG_SENSORS_K8TEMP=m 19.2452 +CONFIG_SENSORS_K10TEMP=m 19.2453 +CONFIG_SENSORS_ASB100=m 19.2454 +CONFIG_SENSORS_ATXP1=m 19.2455 +CONFIG_SENSORS_DS1621=m 19.2456 +CONFIG_SENSORS_I5K_AMB=m 19.2457 +CONFIG_SENSORS_F71805F=m 19.2458 +CONFIG_SENSORS_F71882FG=m 19.2459 +CONFIG_SENSORS_F75375S=m 19.2460 +CONFIG_SENSORS_FSCHMD=m 19.2461 +CONFIG_SENSORS_G760A=m 19.2462 +CONFIG_SENSORS_GL518SM=m 19.2463 +CONFIG_SENSORS_GL520SM=m 19.2464 +# CONFIG_SENSORS_GPIO_FAN is not set 19.2465 +CONFIG_SENSORS_CORETEMP=m 19.2466 +# CONFIG_SENSORS_PKGTEMP is not set 19.2467 +CONFIG_SENSORS_IBMAEM=m 19.2468 +CONFIG_SENSORS_IBMPEX=m 19.2469 +CONFIG_SENSORS_IT87=m 19.2470 +# CONFIG_SENSORS_JC42 is not set 19.2471 +CONFIG_SENSORS_LM63=m 19.2472 +CONFIG_SENSORS_LM70=m 19.2473 +CONFIG_SENSORS_LM73=m 19.2474 +CONFIG_SENSORS_LM75=m 19.2475 +CONFIG_SENSORS_LM77=m 19.2476 +CONFIG_SENSORS_LM78=m 19.2477 +CONFIG_SENSORS_LM80=m 19.2478 +CONFIG_SENSORS_LM83=m 19.2479 +CONFIG_SENSORS_LM85=m 19.2480 +CONFIG_SENSORS_LM87=m 19.2481 +CONFIG_SENSORS_LM90=m 19.2482 +CONFIG_SENSORS_LM92=m 19.2483 +CONFIG_SENSORS_LM93=m 19.2484 +CONFIG_SENSORS_LTC4215=m 19.2485 +CONFIG_SENSORS_LTC4245=m 19.2486 +# CONFIG_SENSORS_LTC4261 is not set 19.2487 +CONFIG_SENSORS_LM95241=m 19.2488 +CONFIG_SENSORS_MAX1111=m 19.2489 +CONFIG_SENSORS_MAX1619=m 19.2490 +CONFIG_SENSORS_MAX6650=m 19.2491 +CONFIG_SENSORS_PC87360=m 19.2492 +CONFIG_SENSORS_PC87427=m 19.2493 +CONFIG_SENSORS_PCF8591=m 19.2494 +CONFIG_SENSORS_SHT15=m 19.2495 +CONFIG_SENSORS_SIS5595=m 19.2496 +# CONFIG_SENSORS_SMM665 is not set 19.2497 +CONFIG_SENSORS_DME1737=m 19.2498 +# CONFIG_SENSORS_EMC1403 is not set 19.2499 +# CONFIG_SENSORS_EMC2103 is not set 19.2500 +CONFIG_SENSORS_SMSC47M1=m 19.2501 +CONFIG_SENSORS_SMSC47M192=m 19.2502 +CONFIG_SENSORS_SMSC47B397=m 19.2503 +CONFIG_SENSORS_ADS7828=m 19.2504 +# CONFIG_SENSORS_ADS7871 is not set 19.2505 +CONFIG_SENSORS_AMC6821=m 19.2506 +CONFIG_SENSORS_THMC50=m 19.2507 +# CONFIG_SENSORS_TMP102 is not set 19.2508 +CONFIG_SENSORS_TMP401=m 19.2509 +CONFIG_SENSORS_TMP421=m 19.2510 +CONFIG_SENSORS_VIA_CPUTEMP=m 19.2511 +CONFIG_SENSORS_VIA686A=m 19.2512 +CONFIG_SENSORS_VT1211=m 19.2513 +CONFIG_SENSORS_VT8231=m 19.2514 +CONFIG_SENSORS_W83781D=m 19.2515 +CONFIG_SENSORS_W83791D=m 19.2516 +CONFIG_SENSORS_W83792D=m 19.2517 +CONFIG_SENSORS_W83793=m 19.2518 +# CONFIG_SENSORS_W83795 is not set 19.2519 +CONFIG_SENSORS_W83L785TS=m 19.2520 +CONFIG_SENSORS_W83L786NG=m 19.2521 +CONFIG_SENSORS_W83627HF=m 19.2522 +CONFIG_SENSORS_W83627EHF=m 19.2523 +CONFIG_SENSORS_LIS3_SPI=m 19.2524 +CONFIG_SENSORS_LIS3_I2C=m 19.2525 +CONFIG_SENSORS_APPLESMC=m 19.2526 +CONFIG_THERMAL=m 19.2527 +CONFIG_THERMAL_HWMON=y 19.2528 +CONFIG_WATCHDOG=y 19.2529 +# CONFIG_WATCHDOG_NOWAYOUT is not set 19.2530 + 19.2531 +# 19.2532 +# Watchdog Device Drivers 19.2533 +# 19.2534 +CONFIG_SOFT_WATCHDOG=m 19.2535 +CONFIG_ACQUIRE_WDT=m 19.2536 +CONFIG_ADVANTECH_WDT=m 19.2537 +CONFIG_ALIM1535_WDT=m 19.2538 +CONFIG_ALIM7101_WDT=m 19.2539 +# CONFIG_F71808E_WDT is not set 19.2540 +CONFIG_GEODE_WDT=m 19.2541 +CONFIG_SC520_WDT=m 19.2542 +CONFIG_SBC_FITPC2_WATCHDOG=m 19.2543 +CONFIG_EUROTECH_WDT=m 19.2544 +CONFIG_IB700_WDT=m 19.2545 +CONFIG_IBMASR=m 19.2546 +CONFIG_WAFER_WDT=m 19.2547 +CONFIG_I6300ESB_WDT=m 19.2548 +CONFIG_ITCO_WDT=m 19.2549 +CONFIG_ITCO_VENDOR_SUPPORT=y 19.2550 +CONFIG_IT8712F_WDT=m 19.2551 +CONFIG_IT87_WDT=m 19.2552 +CONFIG_HP_WATCHDOG=m 19.2553 +# CONFIG_HPWDT_NMI_DECODING is not set 19.2554 +CONFIG_SC1200_WDT=m 19.2555 +CONFIG_PC87413_WDT=m 19.2556 +CONFIG_60XX_WDT=m 19.2557 +CONFIG_SBC8360_WDT=m 19.2558 +CONFIG_SBC7240_WDT=m 19.2559 +CONFIG_CPU5_WDT=m 19.2560 +CONFIG_SMSC_SCH311X_WDT=m 19.2561 +CONFIG_SMSC37B787_WDT=m 19.2562 +CONFIG_W83627HF_WDT=m 19.2563 +CONFIG_W83697HF_WDT=m 19.2564 +CONFIG_W83697UG_WDT=m 19.2565 +CONFIG_W83877F_WDT=m 19.2566 +CONFIG_W83977F_WDT=m 19.2567 +CONFIG_MACHZ_WDT=m 19.2568 +CONFIG_SBC_EPX_C3_WATCHDOG=m 19.2569 + 19.2570 +# 19.2571 +# ISA-based Watchdog Cards 19.2572 +# 19.2573 +CONFIG_PCWATCHDOG=m 19.2574 +CONFIG_MIXCOMWD=m 19.2575 +CONFIG_WDT=m 19.2576 + 19.2577 +# 19.2578 +# PCI-based Watchdog Cards 19.2579 +# 19.2580 +CONFIG_PCIPCWATCHDOG=m 19.2581 +CONFIG_WDTPCI=m 19.2582 + 19.2583 +# 19.2584 +# USB-based Watchdog Cards 19.2585 +# 19.2586 +CONFIG_USBPCWATCHDOG=m 19.2587 +CONFIG_SSB_POSSIBLE=y 19.2588 + 19.2589 +# 19.2590 +# Sonics Silicon Backplane 19.2591 +# 19.2592 +CONFIG_SSB=m 19.2593 +CONFIG_SSB_SPROM=y 19.2594 +CONFIG_SSB_BLOCKIO=y 19.2595 +CONFIG_SSB_PCIHOST_POSSIBLE=y 19.2596 +CONFIG_SSB_PCIHOST=y 19.2597 +CONFIG_SSB_B43_PCI_BRIDGE=y 19.2598 +CONFIG_SSB_SDIOHOST_POSSIBLE=y 19.2599 +# CONFIG_SSB_SDIOHOST is not set 19.2600 +# CONFIG_SSB_SILENT is not set 19.2601 +# CONFIG_SSB_DEBUG is not set 19.2602 +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y 19.2603 +CONFIG_SSB_DRIVER_PCICORE=y 19.2604 +CONFIG_MFD_SUPPORT=y 19.2605 +CONFIG_MFD_CORE=m 19.2606 +CONFIG_MFD_SM501=m 19.2607 +CONFIG_MFD_SM501_GPIO=y 19.2608 +CONFIG_HTC_PASIC3=m 19.2609 +CONFIG_UCB1400_CORE=m 19.2610 +CONFIG_TPS65010=m 19.2611 +# CONFIG_TPS6507X is not set 19.2612 +# CONFIG_MFD_TMIO is not set 19.2613 +CONFIG_MFD_WM8400=m 19.2614 +# CONFIG_MFD_WM831X_SPI is not set 19.2615 +CONFIG_MFD_PCF50633=m 19.2616 +# CONFIG_MFD_MC13XXX is not set 19.2617 +CONFIG_PCF50633_ADC=m 19.2618 +CONFIG_PCF50633_GPIO=m 19.2619 +# CONFIG_ABX500_CORE is not set 19.2620 +CONFIG_EZX_PCAP=y 19.2621 +CONFIG_MFD_TIMBERDALE=m 19.2622 +CONFIG_LPC_SCH=m 19.2623 +# CONFIG_MFD_RDC321X is not set 19.2624 +# CONFIG_MFD_JANZ_CMODIO is not set 19.2625 +# CONFIG_MFD_VX855 is not set 19.2626 +CONFIG_REGULATOR=y 19.2627 +# CONFIG_REGULATOR_DEBUG is not set 19.2628 +# CONFIG_REGULATOR_DUMMY is not set 19.2629 +CONFIG_REGULATOR_FIXED_VOLTAGE=m 19.2630 +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m 19.2631 +CONFIG_REGULATOR_USERSPACE_CONSUMER=m 19.2632 +CONFIG_REGULATOR_BQ24022=m 19.2633 +CONFIG_REGULATOR_MAX1586=m 19.2634 +CONFIG_REGULATOR_MAX8649=m 19.2635 +CONFIG_REGULATOR_MAX8660=m 19.2636 +# CONFIG_REGULATOR_MAX8952 is not set 19.2637 +CONFIG_REGULATOR_WM8400=m 19.2638 +CONFIG_REGULATOR_PCF50633=m 19.2639 +CONFIG_REGULATOR_LP3971=m 19.2640 +# CONFIG_REGULATOR_LP3972 is not set 19.2641 +CONFIG_REGULATOR_PCAP=m 19.2642 +CONFIG_REGULATOR_TPS65023=m 19.2643 +CONFIG_REGULATOR_TPS6507X=m 19.2644 +# CONFIG_REGULATOR_ISL6271A is not set 19.2645 +# CONFIG_REGULATOR_AD5398 is not set 19.2646 +CONFIG_MEDIA_SUPPORT=m 19.2647 + 19.2648 +# 19.2649 +# Multimedia core support 19.2650 +# 19.2651 +CONFIG_VIDEO_DEV=m 19.2652 +CONFIG_VIDEO_V4L2_COMMON=m 19.2653 +CONFIG_VIDEO_ALLOW_V4L1=y 19.2654 +CONFIG_VIDEO_V4L1_COMPAT=y 19.2655 +CONFIG_DVB_CORE=m 19.2656 +CONFIG_VIDEO_MEDIA=m 19.2657 + 19.2658 +# 19.2659 +# Multimedia drivers 19.2660 +# 19.2661 +CONFIG_VIDEO_SAA7146=m 19.2662 +CONFIG_VIDEO_SAA7146_VV=m 19.2663 +CONFIG_IR_CORE=m 19.2664 +CONFIG_VIDEO_IR=m 19.2665 +CONFIG_LIRC=m 19.2666 +CONFIG_RC_MAP=m 19.2667 +CONFIG_IR_NEC_DECODER=m 19.2668 +CONFIG_IR_RC5_DECODER=m 19.2669 +CONFIG_IR_RC6_DECODER=m 19.2670 +CONFIG_IR_JVC_DECODER=m 19.2671 +CONFIG_IR_SONY_DECODER=m 19.2672 +CONFIG_IR_RC5_SZ_DECODER=m 19.2673 +CONFIG_IR_LIRC_CODEC=m 19.2674 +# CONFIG_IR_ENE is not set 19.2675 +# CONFIG_IR_IMON is not set 19.2676 +# CONFIG_IR_MCEUSB is not set 19.2677 +# CONFIG_IR_NUVOTON is not set 19.2678 +# CONFIG_IR_STREAMZAP is not set 19.2679 +CONFIG_MEDIA_ATTACH=y 19.2680 +CONFIG_MEDIA_TUNER=m 19.2681 +CONFIG_MEDIA_TUNER_CUSTOMISE=y 19.2682 + 19.2683 +# 19.2684 +# Customize TV tuners 19.2685 +# 19.2686 +CONFIG_MEDIA_TUNER_SIMPLE=m 19.2687 +CONFIG_MEDIA_TUNER_TDA8290=m 19.2688 +CONFIG_MEDIA_TUNER_TDA827X=m 19.2689 +CONFIG_MEDIA_TUNER_TDA18271=m 19.2690 +CONFIG_MEDIA_TUNER_TDA9887=m 19.2691 +CONFIG_MEDIA_TUNER_TEA5761=m 19.2692 +CONFIG_MEDIA_TUNER_TEA5767=m 19.2693 +CONFIG_MEDIA_TUNER_MT20XX=m 19.2694 +CONFIG_MEDIA_TUNER_MT2060=m 19.2695 +CONFIG_MEDIA_TUNER_MT2266=m 19.2696 +CONFIG_MEDIA_TUNER_MT2131=m 19.2697 +CONFIG_MEDIA_TUNER_QT1010=m 19.2698 +CONFIG_MEDIA_TUNER_XC2028=m 19.2699 +CONFIG_MEDIA_TUNER_XC5000=m 19.2700 +CONFIG_MEDIA_TUNER_MXL5005S=m 19.2701 +CONFIG_MEDIA_TUNER_MXL5007T=m 19.2702 +CONFIG_MEDIA_TUNER_MC44S803=m 19.2703 +CONFIG_MEDIA_TUNER_MAX2165=m 19.2704 +CONFIG_MEDIA_TUNER_TDA18218=m 19.2705 +CONFIG_VIDEO_V4L2=m 19.2706 +CONFIG_VIDEO_V4L1=m 19.2707 +CONFIG_VIDEOBUF_GEN=m 19.2708 +CONFIG_VIDEOBUF_DMA_SG=m 19.2709 +CONFIG_VIDEOBUF_VMALLOC=m 19.2710 +CONFIG_VIDEOBUF_DVB=m 19.2711 +CONFIG_VIDEO_BTCX=m 19.2712 +CONFIG_VIDEO_TVEEPROM=m 19.2713 +CONFIG_VIDEO_TUNER=m 19.2714 +CONFIG_VIDEO_CAPTURE_DRIVERS=y 19.2715 +# CONFIG_VIDEO_ADV_DEBUG is not set 19.2716 +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set 19.2717 +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 19.2718 +CONFIG_VIDEO_IR_I2C=m 19.2719 + 19.2720 +# 19.2721 +# Audio decoders 19.2722 +# 19.2723 +CONFIG_VIDEO_TVAUDIO=m 19.2724 +CONFIG_VIDEO_TDA7432=m 19.2725 +CONFIG_VIDEO_TDA9840=m 19.2726 +CONFIG_VIDEO_TEA6415C=m 19.2727 +CONFIG_VIDEO_TEA6420=m 19.2728 +CONFIG_VIDEO_MSP3400=m 19.2729 +CONFIG_VIDEO_CS5345=m 19.2730 +CONFIG_VIDEO_CS53L32A=m 19.2731 +CONFIG_VIDEO_M52790=m 19.2732 +CONFIG_VIDEO_WM8775=m 19.2733 +CONFIG_VIDEO_WM8739=m 19.2734 +CONFIG_VIDEO_VP27SMPX=m 19.2735 + 19.2736 +# 19.2737 +# RDS decoders 19.2738 +# 19.2739 +CONFIG_VIDEO_SAA6588=m 19.2740 + 19.2741 +# 19.2742 +# Video decoders 19.2743 +# 19.2744 +CONFIG_VIDEO_BT819=m 19.2745 +CONFIG_VIDEO_BT856=m 19.2746 +CONFIG_VIDEO_BT866=m 19.2747 +CONFIG_VIDEO_KS0127=m 19.2748 +CONFIG_VIDEO_OV7670=m 19.2749 +CONFIG_VIDEO_SAA7110=m 19.2750 +CONFIG_VIDEO_SAA711X=m 19.2751 +CONFIG_VIDEO_SAA717X=m 19.2752 +CONFIG_VIDEO_VPX3220=m 19.2753 + 19.2754 +# 19.2755 +# Video and audio decoders 19.2756 +# 19.2757 +CONFIG_VIDEO_CX25840=m 19.2758 + 19.2759 +# 19.2760 +# MPEG video encoders 19.2761 +# 19.2762 +CONFIG_VIDEO_CX2341X=m 19.2763 + 19.2764 +# 19.2765 +# Video encoders 19.2766 +# 19.2767 +CONFIG_VIDEO_SAA7127=m 19.2768 +CONFIG_VIDEO_SAA7185=m 19.2769 +CONFIG_VIDEO_ADV7170=m 19.2770 +CONFIG_VIDEO_ADV7175=m 19.2771 + 19.2772 +# 19.2773 +# Video improvement chips 19.2774 +# 19.2775 +CONFIG_VIDEO_UPD64031A=m 19.2776 +CONFIG_VIDEO_UPD64083=m 19.2777 +CONFIG_VIDEO_VIVI=m 19.2778 +CONFIG_VIDEO_BT848=m 19.2779 +CONFIG_VIDEO_BT848_DVB=y 19.2780 +CONFIG_VIDEO_PMS=m 19.2781 +CONFIG_VIDEO_BWQCAM=m 19.2782 +CONFIG_VIDEO_CQCAM=m 19.2783 +CONFIG_VIDEO_W9966=m 19.2784 +# CONFIG_VIDEO_CPIA2 is not set 19.2785 +CONFIG_VIDEO_ZORAN=m 19.2786 +CONFIG_VIDEO_ZORAN_DC30=m 19.2787 +CONFIG_VIDEO_ZORAN_ZR36060=m 19.2788 +CONFIG_VIDEO_ZORAN_BUZ=m 19.2789 +CONFIG_VIDEO_ZORAN_DC10=m 19.2790 +CONFIG_VIDEO_ZORAN_LML33=m 19.2791 +CONFIG_VIDEO_ZORAN_LML33R10=m 19.2792 +CONFIG_VIDEO_ZORAN_AVS6EYES=m 19.2793 +CONFIG_VIDEO_SAA7134=m 19.2794 +# CONFIG_VIDEO_SAA7134_ALSA is not set 19.2795 +CONFIG_VIDEO_SAA7134_RC=y 19.2796 +CONFIG_VIDEO_SAA7134_DVB=m 19.2797 +CONFIG_VIDEO_MXB=m 19.2798 +CONFIG_VIDEO_HEXIUM_ORION=m 19.2799 +CONFIG_VIDEO_HEXIUM_GEMINI=m 19.2800 +CONFIG_VIDEO_CX88=m 19.2801 +# CONFIG_VIDEO_CX88_ALSA is not set 19.2802 +CONFIG_VIDEO_CX88_BLACKBIRD=m 19.2803 +CONFIG_VIDEO_CX88_DVB=m 19.2804 +CONFIG_VIDEO_CX88_MPEG=m 19.2805 +CONFIG_VIDEO_CX88_VP3054=m 19.2806 +CONFIG_VIDEO_CX23885=m 19.2807 +# CONFIG_VIDEO_AU0828 is not set 19.2808 +CONFIG_VIDEO_IVTV=m 19.2809 +# CONFIG_VIDEO_FB_IVTV is not set 19.2810 +CONFIG_VIDEO_CX18=m 19.2811 +# CONFIG_VIDEO_CX18_ALSA is not set 19.2812 +CONFIG_VIDEO_SAA7164=m 19.2813 +CONFIG_VIDEO_CAFE_CCIC=m 19.2814 +# CONFIG_VIDEO_SR030PC30 is not set 19.2815 +# CONFIG_VIDEO_VIA_CAMERA is not set 19.2816 +CONFIG_SOC_CAMERA=m 19.2817 +# CONFIG_SOC_CAMERA_IMX074 is not set 19.2818 +# CONFIG_SOC_CAMERA_MT9M001 is not set 19.2819 +# CONFIG_SOC_CAMERA_MT9M111 is not set 19.2820 +# CONFIG_SOC_CAMERA_MT9T031 is not set 19.2821 +# CONFIG_SOC_CAMERA_MT9T112 is not set 19.2822 +# CONFIG_SOC_CAMERA_MT9V022 is not set 19.2823 +# CONFIG_SOC_CAMERA_RJ54N1 is not set 19.2824 +# CONFIG_SOC_CAMERA_TW9910 is not set 19.2825 +# CONFIG_SOC_CAMERA_PLATFORM is not set 19.2826 +# CONFIG_SOC_CAMERA_OV6650 is not set 19.2827 +# CONFIG_SOC_CAMERA_OV772X is not set 19.2828 +# CONFIG_SOC_CAMERA_OV9640 is not set 19.2829 +CONFIG_V4L_USB_DRIVERS=y 19.2830 +# CONFIG_USB_VIDEO_CLASS is not set 19.2831 +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y 19.2832 +CONFIG_USB_GSPCA=m 19.2833 +# CONFIG_USB_M5602 is not set 19.2834 +# CONFIG_USB_STV06XX is not set 19.2835 +# CONFIG_USB_GL860 is not set 19.2836 +# CONFIG_USB_GSPCA_BENQ is not set 19.2837 +# CONFIG_USB_GSPCA_CONEX is not set 19.2838 +# CONFIG_USB_GSPCA_CPIA1 is not set 19.2839 +# CONFIG_USB_GSPCA_ETOMS is not set 19.2840 +# CONFIG_USB_GSPCA_FINEPIX is not set 19.2841 +# CONFIG_USB_GSPCA_JEILINJ is not set 19.2842 +# CONFIG_USB_GSPCA_KONICA is not set 19.2843 +# CONFIG_USB_GSPCA_MARS is not set 19.2844 +# CONFIG_USB_GSPCA_MR97310A is not set 19.2845 +# CONFIG_USB_GSPCA_OV519 is not set 19.2846 +# CONFIG_USB_GSPCA_OV534 is not set 19.2847 +# CONFIG_USB_GSPCA_OV534_9 is not set 19.2848 +# CONFIG_USB_GSPCA_PAC207 is not set 19.2849 +# CONFIG_USB_GSPCA_PAC7302 is not set 19.2850 +# CONFIG_USB_GSPCA_PAC7311 is not set 19.2851 +# CONFIG_USB_GSPCA_SN9C2028 is not set 19.2852 +# CONFIG_USB_GSPCA_SN9C20X is not set 19.2853 +# CONFIG_USB_GSPCA_SONIXB is not set 19.2854 +# CONFIG_USB_GSPCA_SONIXJ is not set 19.2855 +# CONFIG_USB_GSPCA_SPCA500 is not set 19.2856 +# CONFIG_USB_GSPCA_SPCA501 is not set 19.2857 +# CONFIG_USB_GSPCA_SPCA505 is not set 19.2858 +# CONFIG_USB_GSPCA_SPCA506 is not set 19.2859 +# CONFIG_USB_GSPCA_SPCA508 is not set 19.2860 +# CONFIG_USB_GSPCA_SPCA561 is not set 19.2861 +# CONFIG_USB_GSPCA_SPCA1528 is not set 19.2862 +# CONFIG_USB_GSPCA_SQ905 is not set 19.2863 +# CONFIG_USB_GSPCA_SQ905C is not set 19.2864 +# CONFIG_USB_GSPCA_SQ930X is not set 19.2865 +# CONFIG_USB_GSPCA_STK014 is not set 19.2866 +# CONFIG_USB_GSPCA_STV0680 is not set 19.2867 +# CONFIG_USB_GSPCA_SUNPLUS is not set 19.2868 +# CONFIG_USB_GSPCA_T613 is not set 19.2869 +# CONFIG_USB_GSPCA_TV8532 is not set 19.2870 +# CONFIG_USB_GSPCA_VC032X is not set 19.2871 +# CONFIG_USB_GSPCA_XIRLINK_CIT is not set 19.2872 +# CONFIG_USB_GSPCA_ZC3XX is not set 19.2873 +# CONFIG_VIDEO_PVRUSB2 is not set 19.2874 +# CONFIG_VIDEO_HDPVR is not set 19.2875 +# CONFIG_VIDEO_EM28XX is not set 19.2876 +# CONFIG_VIDEO_TLG2300 is not set 19.2877 +# CONFIG_VIDEO_CX231XX is not set 19.2878 +# CONFIG_VIDEO_USBVISION is not set 19.2879 +# CONFIG_USB_VICAM is not set 19.2880 +# CONFIG_USB_IBMCAM is not set 19.2881 +# CONFIG_USB_KONICAWC is not set 19.2882 +# CONFIG_USB_ET61X251 is not set 19.2883 +# CONFIG_USB_SE401 is not set 19.2884 +# CONFIG_USB_SN9C102 is not set 19.2885 +# CONFIG_USB_PWC is not set 19.2886 +# CONFIG_USB_ZR364XX is not set 19.2887 +# CONFIG_USB_STKWEBCAM is not set 19.2888 +# CONFIG_USB_S2255 is not set 19.2889 +# CONFIG_V4L_MEM2MEM_DRIVERS is not set 19.2890 +CONFIG_RADIO_ADAPTERS=y 19.2891 +CONFIG_RADIO_CADET=m 19.2892 +CONFIG_RADIO_RTRACK=m 19.2893 +CONFIG_RADIO_RTRACK2=m 19.2894 +CONFIG_RADIO_AZTECH=m 19.2895 +CONFIG_RADIO_GEMTEK=m 19.2896 +CONFIG_RADIO_GEMTEK_PCI=m 19.2897 +CONFIG_RADIO_MAXIRADIO=m 19.2898 +CONFIG_RADIO_MAESTRO=m 19.2899 +# CONFIG_RADIO_MIROPCM20 is not set 19.2900 +CONFIG_RADIO_SF16FMI=m 19.2901 +CONFIG_RADIO_SF16FMR2=m 19.2902 +CONFIG_RADIO_TERRATEC=m 19.2903 +CONFIG_RADIO_TRUST=m 19.2904 +CONFIG_RADIO_TYPHOON=m 19.2905 +CONFIG_RADIO_ZOLTRIX=m 19.2906 +CONFIG_I2C_SI4713=m 19.2907 +CONFIG_RADIO_SI4713=m 19.2908 +# CONFIG_USB_DSBR is not set 19.2909 +CONFIG_RADIO_SI470X=y 19.2910 +# CONFIG_USB_SI470X is not set 19.2911 +CONFIG_I2C_SI470X=m 19.2912 +# CONFIG_USB_MR800 is not set 19.2913 +CONFIG_RADIO_TEA5764=m 19.2914 +CONFIG_RADIO_SAA7706H=m 19.2915 +CONFIG_RADIO_TEF6862=m 19.2916 +CONFIG_RADIO_TIMBERDALE=m 19.2917 +CONFIG_DVB_MAX_ADAPTERS=8 19.2918 +CONFIG_DVB_DYNAMIC_MINORS=y 19.2919 +CONFIG_DVB_CAPTURE_DRIVERS=y 19.2920 + 19.2921 +# 19.2922 +# Supported SAA7146 based PCI Adapters 19.2923 +# 19.2924 +CONFIG_TTPCI_EEPROM=m 19.2925 +CONFIG_DVB_AV7110=m 19.2926 +CONFIG_DVB_AV7110_OSD=y 19.2927 +CONFIG_DVB_BUDGET_CORE=m 19.2928 +CONFIG_DVB_BUDGET=m 19.2929 +CONFIG_DVB_BUDGET_CI=m 19.2930 +CONFIG_DVB_BUDGET_AV=m 19.2931 +CONFIG_DVB_BUDGET_PATCH=m 19.2932 + 19.2933 +# 19.2934 +# Supported USB Adapters 19.2935 +# 19.2936 +# CONFIG_DVB_USB is not set 19.2937 +# CONFIG_DVB_TTUSB_BUDGET is not set 19.2938 +# CONFIG_DVB_TTUSB_DEC is not set 19.2939 +CONFIG_SMS_SIANO_MDTV=m 19.2940 + 19.2941 +# 19.2942 +# Siano module components 19.2943 +# 19.2944 +# CONFIG_SMS_USB_DRV is not set 19.2945 +# CONFIG_SMS_SDIO_DRV is not set 19.2946 + 19.2947 +# 19.2948 +# Supported FlexCopII (B2C2) Adapters 19.2949 +# 19.2950 +CONFIG_DVB_B2C2_FLEXCOP=m 19.2951 +CONFIG_DVB_B2C2_FLEXCOP_PCI=m 19.2952 +# CONFIG_DVB_B2C2_FLEXCOP_USB is not set 19.2953 +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set 19.2954 + 19.2955 +# 19.2956 +# Supported BT878 Adapters 19.2957 +# 19.2958 +CONFIG_DVB_BT8XX=m 19.2959 + 19.2960 +# 19.2961 +# Supported Pluto2 Adapters 19.2962 +# 19.2963 +CONFIG_DVB_PLUTO2=m 19.2964 + 19.2965 +# 19.2966 +# Supported SDMC DM1105 Adapters 19.2967 +# 19.2968 +CONFIG_DVB_DM1105=m 19.2969 +CONFIG_DVB_FIREDTV=m 19.2970 +CONFIG_DVB_FIREDTV_FIREWIRE=y 19.2971 +# CONFIG_DVB_FIREDTV_IEEE1394 is not set 19.2972 +CONFIG_DVB_FIREDTV_INPUT=y 19.2973 + 19.2974 +# 19.2975 +# Supported Earthsoft PT1 Adapters 19.2976 +# 19.2977 +CONFIG_DVB_PT1=m 19.2978 + 19.2979 +# 19.2980 +# Supported Mantis Adapters 19.2981 +# 19.2982 +CONFIG_MANTIS_CORE=m 19.2983 +CONFIG_DVB_MANTIS=m 19.2984 +CONFIG_DVB_HOPPER=m 19.2985 + 19.2986 +# 19.2987 +# Supported nGene Adapters 19.2988 +# 19.2989 +CONFIG_DVB_NGENE=m 19.2990 + 19.2991 +# 19.2992 +# Supported DVB Frontends 19.2993 +# 19.2994 +# CONFIG_DVB_FE_CUSTOMISE is not set 19.2995 + 19.2996 +# 19.2997 +# Multistandard (satellite) frontends 19.2998 +# 19.2999 +CONFIG_DVB_STB0899=m 19.3000 +CONFIG_DVB_STB6100=m 19.3001 +CONFIG_DVB_STV090x=m 19.3002 +CONFIG_DVB_STV6110x=m 19.3003 + 19.3004 +# 19.3005 +# DVB-S (satellite) frontends 19.3006 +# 19.3007 +CONFIG_DVB_CX24110=m 19.3008 +CONFIG_DVB_CX24123=m 19.3009 +CONFIG_DVB_MT312=m 19.3010 +CONFIG_DVB_ZL10036=m 19.3011 +CONFIG_DVB_ZL10039=m 19.3012 +CONFIG_DVB_S5H1420=m 19.3013 +CONFIG_DVB_STV0288=m 19.3014 +CONFIG_DVB_STB6000=m 19.3015 +CONFIG_DVB_STV0299=m 19.3016 +CONFIG_DVB_STV6110=m 19.3017 +CONFIG_DVB_STV0900=m 19.3018 +CONFIG_DVB_TDA8083=m 19.3019 +CONFIG_DVB_TDA10086=m 19.3020 +CONFIG_DVB_TDA8261=m 19.3021 +CONFIG_DVB_VES1X93=m 19.3022 +CONFIG_DVB_TUNER_ITD1000=m 19.3023 +CONFIG_DVB_TUNER_CX24113=m 19.3024 +CONFIG_DVB_TDA826X=m 19.3025 +CONFIG_DVB_TUA6100=m 19.3026 +CONFIG_DVB_CX24116=m 19.3027 +CONFIG_DVB_SI21XX=m 19.3028 +CONFIG_DVB_DS3000=m 19.3029 +CONFIG_DVB_MB86A16=m 19.3030 + 19.3031 +# 19.3032 +# DVB-T (terrestrial) frontends 19.3033 +# 19.3034 +CONFIG_DVB_SP8870=m 19.3035 +CONFIG_DVB_SP887X=m 19.3036 +CONFIG_DVB_CX22702=m 19.3037 +CONFIG_DVB_L64781=m 19.3038 +CONFIG_DVB_TDA1004X=m 19.3039 +CONFIG_DVB_NXT6000=m 19.3040 +CONFIG_DVB_MT352=m 19.3041 +CONFIG_DVB_ZL10353=m 19.3042 +CONFIG_DVB_DIB7000P=m 19.3043 +CONFIG_DVB_TDA10048=m 19.3044 + 19.3045 +# 19.3046 +# DVB-C (cable) frontends 19.3047 +# 19.3048 +CONFIG_DVB_VES1820=m 19.3049 +CONFIG_DVB_TDA10021=m 19.3050 +CONFIG_DVB_TDA10023=m 19.3051 +CONFIG_DVB_STV0297=m 19.3052 + 19.3053 +# 19.3054 +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends 19.3055 +# 19.3056 +CONFIG_DVB_NXT200X=m 19.3057 +CONFIG_DVB_OR51211=m 19.3058 +CONFIG_DVB_OR51132=m 19.3059 +CONFIG_DVB_BCM3510=m 19.3060 +CONFIG_DVB_LGDT330X=m 19.3061 +CONFIG_DVB_LGDT3305=m 19.3062 +CONFIG_DVB_S5H1409=m 19.3063 +CONFIG_DVB_S5H1411=m 19.3064 + 19.3065 +# 19.3066 +# ISDB-T (terrestrial) frontends 19.3067 +# 19.3068 + 19.3069 +# 19.3070 +# Digital terrestrial only tuners/PLL 19.3071 +# 19.3072 +CONFIG_DVB_PLL=m 19.3073 + 19.3074 +# 19.3075 +# SEC control devices for DVB-S 19.3076 +# 19.3077 +CONFIG_DVB_LNBP21=m 19.3078 +CONFIG_DVB_ISL6405=m 19.3079 +CONFIG_DVB_ISL6421=m 19.3080 +CONFIG_DVB_ISL6423=m 19.3081 +CONFIG_DVB_TDA665x=m 19.3082 + 19.3083 +# 19.3084 +# Tools to develop new frontends 19.3085 +# 19.3086 +# CONFIG_DVB_DUMMY_FE is not set 19.3087 +CONFIG_DAB=y 19.3088 +CONFIG_USB_DABUSB=m 19.3089 + 19.3090 +# 19.3091 +# Graphics support 19.3092 +# 19.3093 +CONFIG_AGP=m 19.3094 +CONFIG_AGP_ALI=m 19.3095 +CONFIG_AGP_ATI=m 19.3096 +CONFIG_AGP_AMD=m 19.3097 +CONFIG_AGP_AMD64=m 19.3098 +CONFIG_AGP_INTEL=m 19.3099 +CONFIG_AGP_NVIDIA=m 19.3100 +CONFIG_AGP_SIS=m 19.3101 +CONFIG_AGP_SWORKS=m 19.3102 +CONFIG_AGP_VIA=m 19.3103 +CONFIG_AGP_EFFICEON=m 19.3104 +CONFIG_VGA_ARB=y 19.3105 +CONFIG_VGA_ARB_MAX_GPUS=16 19.3106 +CONFIG_DRM=m 19.3107 +CONFIG_DRM_KMS_HELPER=m 19.3108 +CONFIG_DRM_TTM=m 19.3109 +# CONFIG_DRM_TDFX is not set 19.3110 +# CONFIG_DRM_R128 is not set 19.3111 +# CONFIG_DRM_RADEON is not set 19.3112 +# CONFIG_DRM_I810 is not set 19.3113 +# CONFIG_DRM_MGA is not set 19.3114 +# CONFIG_DRM_SIS is not set 19.3115 +# CONFIG_DRM_VIA is not set 19.3116 +# CONFIG_DRM_SAVAGE is not set 19.3117 +CONFIG_STUB_POULSBO=m 19.3118 +CONFIG_VGASTATE=m 19.3119 +CONFIG_VIDEO_OUTPUT_CONTROL=m 19.3120 +CONFIG_FB=m 19.3121 +CONFIG_FIRMWARE_EDID=y 19.3122 +CONFIG_FB_DDC=m 19.3123 +# CONFIG_FB_BOOT_VESA_SUPPORT is not set 19.3124 +CONFIG_FB_CFB_FILLRECT=m 19.3125 +CONFIG_FB_CFB_COPYAREA=m 19.3126 +CONFIG_FB_CFB_IMAGEBLIT=m 19.3127 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 19.3128 +CONFIG_FB_SYS_FILLRECT=m 19.3129 +CONFIG_FB_SYS_COPYAREA=m 19.3130 +CONFIG_FB_SYS_IMAGEBLIT=m 19.3131 +CONFIG_FB_FOREIGN_ENDIAN=y 19.3132 +CONFIG_FB_BOTH_ENDIAN=y 19.3133 +# CONFIG_FB_BIG_ENDIAN is not set 19.3134 +# CONFIG_FB_LITTLE_ENDIAN is not set 19.3135 +CONFIG_FB_SYS_FOPS=m 19.3136 +CONFIG_FB_DEFERRED_IO=y 19.3137 +CONFIG_FB_HECUBA=m 19.3138 +CONFIG_FB_SVGALIB=m 19.3139 +# CONFIG_FB_MACMODES is not set 19.3140 +CONFIG_FB_BACKLIGHT=y 19.3141 +CONFIG_FB_MODE_HELPERS=y 19.3142 +CONFIG_FB_TILEBLITTING=y 19.3143 + 19.3144 +# 19.3145 +# Frame buffer hardware drivers 19.3146 +# 19.3147 +CONFIG_FB_CIRRUS=m 19.3148 +CONFIG_FB_PM2=m 19.3149 +CONFIG_FB_PM2_FIFO_DISCONNECT=y 19.3150 +CONFIG_FB_CYBER2000=m 19.3151 +CONFIG_FB_ARC=m 19.3152 +CONFIG_FB_VGA16=m 19.3153 +CONFIG_FB_UVESA=m 19.3154 +CONFIG_FB_N411=m 19.3155 +CONFIG_FB_HGA=m 19.3156 +CONFIG_FB_HGA_ACCEL=y 19.3157 +CONFIG_FB_S1D13XXX=m 19.3158 +CONFIG_FB_NVIDIA=m 19.3159 +CONFIG_FB_NVIDIA_I2C=y 19.3160 +CONFIG_FB_NVIDIA_DEBUG=y 19.3161 +CONFIG_FB_NVIDIA_BACKLIGHT=y 19.3162 +CONFIG_FB_RIVA=m 19.3163 +CONFIG_FB_RIVA_I2C=y 19.3164 +# CONFIG_FB_RIVA_DEBUG is not set 19.3165 +CONFIG_FB_RIVA_BACKLIGHT=y 19.3166 +# CONFIG_FB_I810 is not set 19.3167 +CONFIG_FB_LE80578=m 19.3168 +CONFIG_FB_CARILLO_RANCH=m 19.3169 +CONFIG_FB_INTEL=m 19.3170 +# CONFIG_FB_INTEL_DEBUG is not set 19.3171 +CONFIG_FB_INTEL_I2C=y 19.3172 +CONFIG_FB_MATROX=m 19.3173 +CONFIG_FB_MATROX_MILLENIUM=y 19.3174 +CONFIG_FB_MATROX_MYSTIQUE=y 19.3175 +CONFIG_FB_MATROX_G=y 19.3176 +CONFIG_FB_MATROX_I2C=m 19.3177 +CONFIG_FB_MATROX_MAVEN=m 19.3178 +CONFIG_FB_RADEON=m 19.3179 +CONFIG_FB_RADEON_I2C=y 19.3180 +CONFIG_FB_RADEON_BACKLIGHT=y 19.3181 +# CONFIG_FB_RADEON_DEBUG is not set 19.3182 +CONFIG_FB_ATY128=m 19.3183 +CONFIG_FB_ATY128_BACKLIGHT=y 19.3184 +CONFIG_FB_ATY=m 19.3185 +CONFIG_FB_ATY_CT=y 19.3186 +CONFIG_FB_ATY_GENERIC_LCD=y 19.3187 +CONFIG_FB_ATY_GX=y 19.3188 +CONFIG_FB_ATY_BACKLIGHT=y 19.3189 +CONFIG_FB_S3=m 19.3190 +CONFIG_FB_SAVAGE=m 19.3191 +CONFIG_FB_SAVAGE_I2C=y 19.3192 +CONFIG_FB_SAVAGE_ACCEL=y 19.3193 +CONFIG_FB_SIS=m 19.3194 +CONFIG_FB_SIS_300=y 19.3195 +CONFIG_FB_SIS_315=y 19.3196 +CONFIG_FB_VIA=m 19.3197 +# CONFIG_FB_VIA_DIRECT_PROCFS is not set 19.3198 +CONFIG_FB_NEOMAGIC=m 19.3199 +CONFIG_FB_KYRO=m 19.3200 +CONFIG_FB_3DFX=m 19.3201 +CONFIG_FB_3DFX_ACCEL=y 19.3202 +CONFIG_FB_3DFX_I2C=y 19.3203 +CONFIG_FB_VOODOO1=m 19.3204 +CONFIG_FB_VT8623=m 19.3205 +CONFIG_FB_TRIDENT=m 19.3206 +CONFIG_FB_ARK=m 19.3207 +CONFIG_FB_PM3=m 19.3208 +CONFIG_FB_CARMINE=m 19.3209 +CONFIG_FB_CARMINE_DRAM_EVAL=y 19.3210 +# CONFIG_CARMINE_DRAM_CUSTOM is not set 19.3211 +CONFIG_FB_GEODE=y 19.3212 +CONFIG_FB_GEODE_LX=m 19.3213 +CONFIG_FB_GEODE_GX=m 19.3214 +CONFIG_FB_GEODE_GX1=m 19.3215 +CONFIG_FB_TMIO=m 19.3216 +CONFIG_FB_TMIO_ACCELL=y 19.3217 +CONFIG_FB_SM501=m 19.3218 +CONFIG_FB_VIRTUAL=m 19.3219 +CONFIG_FB_METRONOME=m 19.3220 +CONFIG_FB_MB862XX=m 19.3221 +CONFIG_FB_MB862XX_PCI_GDC=y 19.3222 +CONFIG_FB_BROADSHEET=m 19.3223 +CONFIG_BACKLIGHT_LCD_SUPPORT=y 19.3224 +CONFIG_LCD_CLASS_DEVICE=m 19.3225 +CONFIG_LCD_L4F00242T03=m 19.3226 +CONFIG_LCD_LMS283GF05=m 19.3227 +CONFIG_LCD_LTV350QV=m 19.3228 +CONFIG_LCD_ILI9320=m 19.3229 +CONFIG_LCD_TDO24M=m 19.3230 +CONFIG_LCD_VGG2432A4=m 19.3231 +CONFIG_LCD_PLATFORM=m 19.3232 +# CONFIG_LCD_S6E63M0 is not set 19.3233 +CONFIG_BACKLIGHT_CLASS_DEVICE=m 19.3234 +CONFIG_BACKLIGHT_GENERIC=m 19.3235 +CONFIG_BACKLIGHT_PROGEAR=m 19.3236 +CONFIG_BACKLIGHT_CARILLO_RANCH=m 19.3237 +CONFIG_BACKLIGHT_MBP_NVIDIA=m 19.3238 +CONFIG_BACKLIGHT_SAHARA=m 19.3239 +# CONFIG_BACKLIGHT_ADP8860 is not set 19.3240 +# CONFIG_BACKLIGHT_PCF50633 is not set 19.3241 + 19.3242 +# 19.3243 +# Display device support 19.3244 +# 19.3245 +CONFIG_DISPLAY_SUPPORT=m 19.3246 + 19.3247 +# 19.3248 +# Display hardware drivers 19.3249 +# 19.3250 + 19.3251 +# 19.3252 +# Console display driver support 19.3253 +# 19.3254 +CONFIG_VGA_CONSOLE=y 19.3255 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 19.3256 +CONFIG_MDA_CONSOLE=m 19.3257 +CONFIG_DUMMY_CONSOLE=y 19.3258 +CONFIG_FRAMEBUFFER_CONSOLE=m 19.3259 +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y 19.3260 +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y 19.3261 +# CONFIG_FONTS is not set 19.3262 +CONFIG_FONT_8x8=y 19.3263 +CONFIG_FONT_8x16=y 19.3264 +# CONFIG_LOGO is not set 19.3265 +CONFIG_SOUND=m 19.3266 +CONFIG_SOUND_OSS_CORE=y 19.3267 +CONFIG_SOUND_OSS_CORE_PRECLAIM=y 19.3268 +CONFIG_SND=m 19.3269 +CONFIG_SND_TIMER=m 19.3270 +CONFIG_SND_PCM=m 19.3271 +CONFIG_SND_HWDEP=m 19.3272 +CONFIG_SND_RAWMIDI=m 19.3273 +CONFIG_SND_JACK=y 19.3274 +CONFIG_SND_SEQUENCER=m 19.3275 +CONFIG_SND_SEQ_DUMMY=m 19.3276 +CONFIG_SND_OSSEMUL=y 19.3277 +CONFIG_SND_MIXER_OSS=m 19.3278 +CONFIG_SND_PCM_OSS=m 19.3279 +CONFIG_SND_PCM_OSS_PLUGINS=y 19.3280 +CONFIG_SND_SEQUENCER_OSS=y 19.3281 +CONFIG_SND_DYNAMIC_MINORS=y 19.3282 +CONFIG_SND_SUPPORT_OLD_API=y 19.3283 +CONFIG_SND_VERBOSE_PROCFS=y 19.3284 +# CONFIG_SND_VERBOSE_PRINTK is not set 19.3285 +# CONFIG_SND_DEBUG is not set 19.3286 +CONFIG_SND_VMASTER=y 19.3287 +CONFIG_SND_DMA_SGBUF=y 19.3288 +CONFIG_SND_RAWMIDI_SEQ=m 19.3289 +CONFIG_SND_OPL3_LIB_SEQ=m 19.3290 +CONFIG_SND_OPL4_LIB_SEQ=m 19.3291 +CONFIG_SND_SBAWE_SEQ=m 19.3292 +CONFIG_SND_EMU10K1_SEQ=m 19.3293 +CONFIG_SND_MPU401_UART=m 19.3294 +CONFIG_SND_OPL3_LIB=m 19.3295 +CONFIG_SND_OPL4_LIB=m 19.3296 +CONFIG_SND_VX_LIB=m 19.3297 +CONFIG_SND_AC97_CODEC=m 19.3298 +CONFIG_SND_DRIVERS=y 19.3299 +CONFIG_SND_DUMMY=m 19.3300 +# CONFIG_SND_ALOOP is not set 19.3301 +CONFIG_SND_VIRMIDI=m 19.3302 +CONFIG_SND_MTPAV=m 19.3303 +CONFIG_SND_MTS64=m 19.3304 +CONFIG_SND_SERIAL_U16550=m 19.3305 +CONFIG_SND_MPU401=m 19.3306 +CONFIG_SND_PORTMAN2X4=m 19.3307 +# CONFIG_SND_AC97_POWER_SAVE is not set 19.3308 +CONFIG_SND_WSS_LIB=m 19.3309 +CONFIG_SND_SB_COMMON=m 19.3310 +CONFIG_SND_SB8_DSP=m 19.3311 +CONFIG_SND_SB16_DSP=m 19.3312 +CONFIG_SND_ISA=y 19.3313 +CONFIG_SND_ADLIB=m 19.3314 +CONFIG_SND_AD1816A=m 19.3315 +CONFIG_SND_AD1848=m 19.3316 +CONFIG_SND_ALS100=m 19.3317 +# CONFIG_SND_AZT1605 is not set 19.3318 +# CONFIG_SND_AZT2316 is not set 19.3319 +CONFIG_SND_AZT2320=m 19.3320 +CONFIG_SND_CMI8330=m 19.3321 +CONFIG_SND_CS4231=m 19.3322 +CONFIG_SND_CS4236=m 19.3323 +CONFIG_SND_ES1688=m 19.3324 +CONFIG_SND_ES18XX=m 19.3325 +CONFIG_SND_SC6000=m 19.3326 +CONFIG_SND_GUSCLASSIC=m 19.3327 +CONFIG_SND_GUSEXTREME=m 19.3328 +CONFIG_SND_GUSMAX=m 19.3329 +CONFIG_SND_INTERWAVE=m 19.3330 +CONFIG_SND_INTERWAVE_STB=m 19.3331 +CONFIG_SND_JAZZ16=m 19.3332 +CONFIG_SND_OPL3SA2=m 19.3333 +CONFIG_SND_OPTI92X_AD1848=m 19.3334 +CONFIG_SND_OPTI92X_CS4231=m 19.3335 +CONFIG_SND_OPTI93X=m 19.3336 +CONFIG_SND_MIRO=m 19.3337 +CONFIG_SND_SB8=m 19.3338 +CONFIG_SND_SB16=m 19.3339 +CONFIG_SND_SBAWE=m 19.3340 +CONFIG_SND_SB16_CSP=y 19.3341 +CONFIG_SND_SSCAPE=m 19.3342 +CONFIG_SND_WAVEFRONT=m 19.3343 +CONFIG_SND_MSND_PINNACLE=m 19.3344 +CONFIG_SND_MSND_CLASSIC=m 19.3345 +CONFIG_SND_PCI=y 19.3346 +CONFIG_SND_AD1889=m 19.3347 +CONFIG_SND_ALS300=m 19.3348 +CONFIG_SND_ALS4000=m 19.3349 +CONFIG_SND_ALI5451=m 19.3350 +# CONFIG_SND_ASIHPI is not set 19.3351 +CONFIG_SND_ATIIXP=m 19.3352 +CONFIG_SND_ATIIXP_MODEM=m 19.3353 +CONFIG_SND_AU8810=m 19.3354 +CONFIG_SND_AU8820=m 19.3355 +CONFIG_SND_AU8830=m 19.3356 +CONFIG_SND_AW2=m 19.3357 +CONFIG_SND_AZT3328=m 19.3358 +CONFIG_SND_BT87X=m 19.3359 +# CONFIG_SND_BT87X_OVERCLOCK is not set 19.3360 +CONFIG_SND_CA0106=m 19.3361 +CONFIG_SND_CMIPCI=m 19.3362 +CONFIG_SND_OXYGEN_LIB=m 19.3363 +CONFIG_SND_OXYGEN=m 19.3364 +CONFIG_SND_CS4281=m 19.3365 +CONFIG_SND_CS46XX=m 19.3366 +CONFIG_SND_CS46XX_NEW_DSP=y 19.3367 +CONFIG_SND_CS5530=m 19.3368 +CONFIG_SND_CS5535AUDIO=m 19.3369 +CONFIG_SND_CTXFI=m 19.3370 +CONFIG_SND_DARLA20=m 19.3371 +CONFIG_SND_GINA20=m 19.3372 +CONFIG_SND_LAYLA20=m 19.3373 +CONFIG_SND_DARLA24=m 19.3374 +CONFIG_SND_GINA24=m 19.3375 +CONFIG_SND_LAYLA24=m 19.3376 +CONFIG_SND_MONA=m 19.3377 +CONFIG_SND_MIA=m 19.3378 +CONFIG_SND_ECHO3G=m 19.3379 +CONFIG_SND_INDIGO=m 19.3380 +CONFIG_SND_INDIGOIO=m 19.3381 +CONFIG_SND_INDIGODJ=m 19.3382 +CONFIG_SND_INDIGOIOX=m 19.3383 +CONFIG_SND_INDIGODJX=m 19.3384 +CONFIG_SND_EMU10K1=m 19.3385 +CONFIG_SND_EMU10K1X=m 19.3386 +CONFIG_SND_ENS1370=m 19.3387 +CONFIG_SND_ENS1371=m 19.3388 +CONFIG_SND_ES1938=m 19.3389 +CONFIG_SND_ES1968=m 19.3390 +# CONFIG_SND_ES1968_INPUT is not set 19.3391 +CONFIG_SND_FM801=m 19.3392 +# CONFIG_SND_FM801_TEA575X_BOOL is not set 19.3393 +CONFIG_SND_HDA_INTEL=m 19.3394 +# CONFIG_SND_HDA_HWDEP is not set 19.3395 +# CONFIG_SND_HDA_INPUT_BEEP is not set 19.3396 +# CONFIG_SND_HDA_INPUT_JACK is not set 19.3397 +# CONFIG_SND_HDA_PATCH_LOADER is not set 19.3398 +CONFIG_SND_HDA_CODEC_REALTEK=y 19.3399 +CONFIG_SND_HDA_CODEC_ANALOG=y 19.3400 +CONFIG_SND_HDA_CODEC_SIGMATEL=y 19.3401 +CONFIG_SND_HDA_CODEC_VIA=y 19.3402 +CONFIG_SND_HDA_CODEC_HDMI=y 19.3403 +CONFIG_SND_HDA_CODEC_CIRRUS=y 19.3404 +CONFIG_SND_HDA_CODEC_CONEXANT=y 19.3405 +CONFIG_SND_HDA_CODEC_CA0110=y 19.3406 +CONFIG_SND_HDA_CODEC_CMEDIA=y 19.3407 +CONFIG_SND_HDA_CODEC_SI3054=y 19.3408 +CONFIG_SND_HDA_GENERIC=y 19.3409 +# CONFIG_SND_HDA_POWER_SAVE is not set 19.3410 +CONFIG_SND_HDSP=m 19.3411 +CONFIG_SND_HDSPM=m 19.3412 +CONFIG_SND_HIFIER=m 19.3413 +CONFIG_SND_ICE1712=m 19.3414 +CONFIG_SND_ICE1724=m 19.3415 +CONFIG_SND_INTEL8X0=m 19.3416 +CONFIG_SND_INTEL8X0M=m 19.3417 +CONFIG_SND_KORG1212=m 19.3418 +CONFIG_SND_LX6464ES=m 19.3419 +CONFIG_SND_MAESTRO3=m 19.3420 +# CONFIG_SND_MAESTRO3_INPUT is not set 19.3421 +CONFIG_SND_MIXART=m 19.3422 +CONFIG_SND_NM256=m 19.3423 +CONFIG_SND_PCXHR=m 19.3424 +CONFIG_SND_RIPTIDE=m 19.3425 +CONFIG_SND_RME32=m 19.3426 +CONFIG_SND_RME96=m 19.3427 +CONFIG_SND_RME9652=m 19.3428 +CONFIG_SND_SIS7019=m 19.3429 +CONFIG_SND_SONICVIBES=m 19.3430 +CONFIG_SND_TRIDENT=m 19.3431 +CONFIG_SND_VIA82XX=m 19.3432 +CONFIG_SND_VIA82XX_MODEM=m 19.3433 +CONFIG_SND_VIRTUOSO=m 19.3434 +CONFIG_SND_VX222=m 19.3435 +CONFIG_SND_YMFPCI=m 19.3436 +CONFIG_SND_SPI=y 19.3437 +CONFIG_SND_USB=y 19.3438 +CONFIG_SND_USB_AUDIO=m 19.3439 +CONFIG_SND_USB_UA101=m 19.3440 +CONFIG_SND_USB_USX2Y=m 19.3441 +CONFIG_SND_USB_CAIAQ=m 19.3442 +CONFIG_SND_USB_CAIAQ_INPUT=y 19.3443 +CONFIG_SND_USB_US122L=m 19.3444 +CONFIG_SND_SOC=m 19.3445 +CONFIG_SND_SOC_I2C_AND_SPI=m 19.3446 +CONFIG_SND_SOC_ALL_CODECS=m 19.3447 +CONFIG_SND_SOC_WM_HUBS=m 19.3448 +CONFIG_SND_SOC_AD1836=m 19.3449 +CONFIG_SND_SOC_AD193X=m 19.3450 +CONFIG_SND_SOC_AD73311=m 19.3451 +CONFIG_SND_SOC_ADS117X=m 19.3452 +CONFIG_SND_SOC_AK4104=m 19.3453 +CONFIG_SND_SOC_AK4535=m 19.3454 +CONFIG_SND_SOC_AK4642=m 19.3455 +CONFIG_SND_SOC_AK4671=m 19.3456 +CONFIG_SND_SOC_CS42L51=m 19.3457 +CONFIG_SND_SOC_CS4270=m 19.3458 +CONFIG_SND_SOC_CX20442=m 19.3459 +CONFIG_SND_SOC_L3=m 19.3460 +CONFIG_SND_SOC_DA7210=m 19.3461 +CONFIG_SND_SOC_MAX98088=m 19.3462 +CONFIG_SND_SOC_PCM3008=m 19.3463 +CONFIG_SND_SOC_SPDIF=m 19.3464 +CONFIG_SND_SOC_SSM2602=m 19.3465 +CONFIG_SND_SOC_TLV320AIC23=m 19.3466 +CONFIG_SND_SOC_TLV320AIC26=m 19.3467 +CONFIG_SND_SOC_TLV320AIC3X=m 19.3468 +CONFIG_SND_SOC_TLV320DAC33=m 19.3469 +CONFIG_SND_SOC_UDA134X=m 19.3470 +CONFIG_SND_SOC_UDA1380=m 19.3471 +CONFIG_SND_SOC_WM8400=m 19.3472 +CONFIG_SND_SOC_WM8510=m 19.3473 +CONFIG_SND_SOC_WM8523=m 19.3474 +CONFIG_SND_SOC_WM8580=m 19.3475 +CONFIG_SND_SOC_WM8711=m 19.3476 +CONFIG_SND_SOC_WM8727=m 19.3477 +CONFIG_SND_SOC_WM8728=m 19.3478 +CONFIG_SND_SOC_WM8731=m 19.3479 +CONFIG_SND_SOC_WM8741=m 19.3480 +CONFIG_SND_SOC_WM8750=m 19.3481 +CONFIG_SND_SOC_WM8753=m 19.3482 +CONFIG_SND_SOC_WM8776=m 19.3483 +CONFIG_SND_SOC_WM8804=m 19.3484 +CONFIG_SND_SOC_WM8900=m 19.3485 +CONFIG_SND_SOC_WM8903=m 19.3486 +CONFIG_SND_SOC_WM8904=m 19.3487 +CONFIG_SND_SOC_WM8940=m 19.3488 +CONFIG_SND_SOC_WM8955=m 19.3489 +CONFIG_SND_SOC_WM8960=m 19.3490 +CONFIG_SND_SOC_WM8961=m 19.3491 +CONFIG_SND_SOC_WM8962=m 19.3492 +CONFIG_SND_SOC_WM8971=m 19.3493 +CONFIG_SND_SOC_WM8974=m 19.3494 +CONFIG_SND_SOC_WM8978=m 19.3495 +CONFIG_SND_SOC_WM8985=m 19.3496 +CONFIG_SND_SOC_WM8988=m 19.3497 +CONFIG_SND_SOC_WM8990=m 19.3498 +CONFIG_SND_SOC_WM8993=m 19.3499 +CONFIG_SND_SOC_WM9081=m 19.3500 +CONFIG_SND_SOC_MAX9877=m 19.3501 +CONFIG_SND_SOC_TPA6130A2=m 19.3502 +CONFIG_SND_SOC_WM2000=m 19.3503 +CONFIG_SND_SOC_WM9090=m 19.3504 +# CONFIG_SOUND_PRIME is not set 19.3505 +CONFIG_AC97_BUS=m 19.3506 +CONFIG_HID_SUPPORT=y 19.3507 +CONFIG_HID=y 19.3508 +CONFIG_HIDRAW=y 19.3509 + 19.3510 +# 19.3511 +# USB Input Devices 19.3512 +# 19.3513 +CONFIG_USB_HID=m 19.3514 +CONFIG_HID_PID=y 19.3515 +CONFIG_USB_HIDDEV=y 19.3516 + 19.3517 +# 19.3518 +# USB HID Boot Protocol drivers 19.3519 +# 19.3520 +CONFIG_USB_KBD=m 19.3521 +CONFIG_USB_MOUSE=m 19.3522 + 19.3523 +# 19.3524 +# Special HID drivers 19.3525 +# 19.3526 +CONFIG_HID_3M_PCT=m 19.3527 +CONFIG_HID_A4TECH=m 19.3528 +# CONFIG_HID_ACRUX_FF is not set 19.3529 +CONFIG_HID_APPLE=m 19.3530 +CONFIG_HID_BELKIN=m 19.3531 +# CONFIG_HID_CANDO is not set 19.3532 +CONFIG_HID_CHERRY=m 19.3533 +CONFIG_HID_CHICONY=m 19.3534 +# CONFIG_HID_PRODIKEYS is not set 19.3535 +CONFIG_HID_CYPRESS=m 19.3536 +CONFIG_HID_DRAGONRISE=m 19.3537 +CONFIG_DRAGONRISE_FF=y 19.3538 +# CONFIG_HID_EGALAX is not set 19.3539 +# CONFIG_HID_ELECOM is not set 19.3540 +CONFIG_HID_EZKEY=m 19.3541 +CONFIG_HID_KYE=m 19.3542 +# CONFIG_HID_UCLOGIC is not set 19.3543 +# CONFIG_HID_WALTOP is not set 19.3544 +CONFIG_HID_GYRATION=m 19.3545 +CONFIG_HID_TWINHAN=m 19.3546 +CONFIG_HID_KENSINGTON=m 19.3547 +CONFIG_HID_LOGITECH=m 19.3548 +CONFIG_LOGITECH_FF=y 19.3549 +CONFIG_LOGIRUMBLEPAD2_FF=y 19.3550 +CONFIG_LOGIG940_FF=y 19.3551 +# CONFIG_LOGIWII_FF is not set 19.3552 +CONFIG_HID_MAGICMOUSE=m 19.3553 +CONFIG_HID_MICROSOFT=m 19.3554 +CONFIG_HID_MOSART=m 19.3555 +CONFIG_HID_MONTEREY=m 19.3556 +CONFIG_HID_NTRIG=m 19.3557 +CONFIG_HID_ORTEK=m 19.3558 +CONFIG_HID_PANTHERLORD=m 19.3559 +CONFIG_PANTHERLORD_FF=y 19.3560 +CONFIG_HID_PETALYNX=m 19.3561 +# CONFIG_HID_PICOLCD is not set 19.3562 +CONFIG_HID_QUANTA=m 19.3563 +# CONFIG_HID_ROCCAT is not set 19.3564 +# CONFIG_HID_ROCCAT_KONE is not set 19.3565 +# CONFIG_HID_ROCCAT_PYRA is not set 19.3566 +CONFIG_HID_SAMSUNG=m 19.3567 +CONFIG_HID_SONY=m 19.3568 +CONFIG_HID_STANTUM=m 19.3569 +CONFIG_HID_SUNPLUS=m 19.3570 +CONFIG_HID_GREENASIA=m 19.3571 +CONFIG_GREENASIA_FF=y 19.3572 +CONFIG_HID_SMARTJOYPLUS=m 19.3573 +CONFIG_SMARTJOYPLUS_FF=y 19.3574 +CONFIG_HID_TOPSEED=m 19.3575 +CONFIG_HID_THRUSTMASTER=m 19.3576 +# CONFIG_THRUSTMASTER_FF is not set 19.3577 +CONFIG_HID_WACOM=m 19.3578 +# CONFIG_HID_WACOM_POWER_SUPPLY is not set 19.3579 +CONFIG_HID_ZEROPLUS=m 19.3580 +CONFIG_ZEROPLUS_FF=y 19.3581 +# CONFIG_HID_ZYDACRON is not set 19.3582 +CONFIG_USB_SUPPORT=y 19.3583 +CONFIG_USB_ARCH_HAS_HCD=y 19.3584 +CONFIG_USB_ARCH_HAS_OHCI=y 19.3585 +CONFIG_USB_ARCH_HAS_EHCI=y 19.3586 +CONFIG_USB=m 19.3587 +# CONFIG_USB_DEBUG is not set 19.3588 +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set 19.3589 + 19.3590 +# 19.3591 +# Miscellaneous USB options 19.3592 +# 19.3593 +# CONFIG_USB_DEVICEFS is not set 19.3594 +CONFIG_USB_DEVICE_CLASS=y 19.3595 +CONFIG_USB_DYNAMIC_MINORS=y 19.3596 +# CONFIG_USB_OTG_WHITELIST is not set 19.3597 +# CONFIG_USB_OTG_BLACKLIST_HUB is not set 19.3598 +CONFIG_USB_MON=m 19.3599 +CONFIG_USB_WUSB=m 19.3600 +CONFIG_USB_WUSB_CBAF=m 19.3601 +# CONFIG_USB_WUSB_CBAF_DEBUG is not set 19.3602 + 19.3603 +# 19.3604 +# USB Host Controller Drivers 19.3605 +# 19.3606 +CONFIG_USB_C67X00_HCD=m 19.3607 +CONFIG_USB_XHCI_HCD=m 19.3608 +CONFIG_USB_XHCI_HCD_DEBUGGING=y 19.3609 +CONFIG_USB_EHCI_HCD=m 19.3610 +CONFIG_USB_EHCI_ROOT_HUB_TT=y 19.3611 +CONFIG_USB_EHCI_TT_NEWSCHED=y 19.3612 +CONFIG_USB_OXU210HP_HCD=m 19.3613 +CONFIG_USB_ISP116X_HCD=m 19.3614 +CONFIG_USB_ISP1760_HCD=m 19.3615 +CONFIG_USB_ISP1362_HCD=m 19.3616 +CONFIG_USB_OHCI_HCD=m 19.3617 +CONFIG_USB_OHCI_HCD_SSB=y 19.3618 +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 19.3619 +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 19.3620 +CONFIG_USB_OHCI_LITTLE_ENDIAN=y 19.3621 +CONFIG_USB_UHCI_HCD=m 19.3622 +# CONFIG_USB_U132_HCD is not set 19.3623 +CONFIG_USB_SL811_HCD=m 19.3624 +CONFIG_USB_R8A66597_HCD=m 19.3625 +CONFIG_USB_WHCI_HCD=m 19.3626 +CONFIG_USB_HWA_HCD=m 19.3627 + 19.3628 +# 19.3629 +# USB Device Class drivers 19.3630 +# 19.3631 +CONFIG_USB_ACM=m 19.3632 +CONFIG_USB_PRINTER=m 19.3633 +CONFIG_USB_WDM=m 19.3634 +CONFIG_USB_TMC=m 19.3635 + 19.3636 +# 19.3637 +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may 19.3638 +# 19.3639 + 19.3640 +# 19.3641 +# also be needed; see USB_STORAGE Help for more info 19.3642 +# 19.3643 +CONFIG_USB_STORAGE=m 19.3644 +# CONFIG_USB_STORAGE_DEBUG is not set 19.3645 +CONFIG_USB_STORAGE_DATAFAB=m 19.3646 +CONFIG_USB_STORAGE_FREECOM=m 19.3647 +CONFIG_USB_STORAGE_ISD200=m 19.3648 +CONFIG_USB_STORAGE_USBAT=m 19.3649 +CONFIG_USB_STORAGE_SDDR09=m 19.3650 +CONFIG_USB_STORAGE_SDDR55=m 19.3651 +CONFIG_USB_STORAGE_JUMPSHOT=m 19.3652 +CONFIG_USB_STORAGE_ALAUDA=m 19.3653 +CONFIG_USB_STORAGE_ONETOUCH=m 19.3654 +CONFIG_USB_STORAGE_KARMA=m 19.3655 +CONFIG_USB_STORAGE_CYPRESS_ATACB=m 19.3656 +# CONFIG_USB_UAS is not set 19.3657 +# CONFIG_USB_LIBUSUAL is not set 19.3658 + 19.3659 +# 19.3660 +# USB Imaging devices 19.3661 +# 19.3662 +CONFIG_USB_MDC800=m 19.3663 +CONFIG_USB_MICROTEK=m 19.3664 + 19.3665 +# 19.3666 +# USB port drivers 19.3667 +# 19.3668 +CONFIG_USB_USS720=m 19.3669 +CONFIG_USB_SERIAL=m 19.3670 +# CONFIG_USB_EZUSB is not set 19.3671 +# CONFIG_USB_SERIAL_GENERIC is not set 19.3672 +# CONFIG_USB_SERIAL_AIRCABLE is not set 19.3673 +# CONFIG_USB_SERIAL_ARK3116 is not set 19.3674 +# CONFIG_USB_SERIAL_BELKIN is not set 19.3675 +# CONFIG_USB_SERIAL_CH341 is not set 19.3676 +# CONFIG_USB_SERIAL_WHITEHEAT is not set 19.3677 +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set 19.3678 +# CONFIG_USB_SERIAL_CP210X is not set 19.3679 +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set 19.3680 +# CONFIG_USB_SERIAL_EMPEG is not set 19.3681 +# CONFIG_USB_SERIAL_FTDI_SIO is not set 19.3682 +# CONFIG_USB_SERIAL_FUNSOFT is not set 19.3683 +# CONFIG_USB_SERIAL_VISOR is not set 19.3684 +# CONFIG_USB_SERIAL_IPAQ is not set 19.3685 +# CONFIG_USB_SERIAL_IR is not set 19.3686 +# CONFIG_USB_SERIAL_EDGEPORT is not set 19.3687 +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set 19.3688 +# CONFIG_USB_SERIAL_GARMIN is not set 19.3689 +# CONFIG_USB_SERIAL_IPW is not set 19.3690 +# CONFIG_USB_SERIAL_IUU is not set 19.3691 +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set 19.3692 +# CONFIG_USB_SERIAL_KEYSPAN is not set 19.3693 +# CONFIG_USB_SERIAL_KLSI is not set 19.3694 +# CONFIG_USB_SERIAL_KOBIL_SCT is not set 19.3695 +# CONFIG_USB_SERIAL_MCT_U232 is not set 19.3696 +# CONFIG_USB_SERIAL_MOS7720 is not set 19.3697 +# CONFIG_USB_SERIAL_MOS7840 is not set 19.3698 +# CONFIG_USB_SERIAL_MOTOROLA is not set 19.3699 +# CONFIG_USB_SERIAL_NAVMAN is not set 19.3700 +# CONFIG_USB_SERIAL_PL2303 is not set 19.3701 +# CONFIG_USB_SERIAL_OTI6858 is not set 19.3702 +# CONFIG_USB_SERIAL_QCAUX is not set 19.3703 +# CONFIG_USB_SERIAL_QUALCOMM is not set 19.3704 +# CONFIG_USB_SERIAL_SPCP8X5 is not set 19.3705 +# CONFIG_USB_SERIAL_HP4X is not set 19.3706 +# CONFIG_USB_SERIAL_SAFE is not set 19.3707 +# CONFIG_USB_SERIAL_SAMBA is not set 19.3708 +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set 19.3709 +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 19.3710 +# CONFIG_USB_SERIAL_SYMBOL is not set 19.3711 +# CONFIG_USB_SERIAL_TI is not set 19.3712 +# CONFIG_USB_SERIAL_CYBERJACK is not set 19.3713 +# CONFIG_USB_SERIAL_XIRCOM is not set 19.3714 +# CONFIG_USB_SERIAL_OPTION is not set 19.3715 +# CONFIG_USB_SERIAL_OMNINET is not set 19.3716 +# CONFIG_USB_SERIAL_OPTICON is not set 19.3717 +# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set 19.3718 +# CONFIG_USB_SERIAL_ZIO is not set 19.3719 +# CONFIG_USB_SERIAL_SSU100 is not set 19.3720 +# CONFIG_USB_SERIAL_DEBUG is not set 19.3721 + 19.3722 +# 19.3723 +# USB Miscellaneous drivers 19.3724 +# 19.3725 +CONFIG_USB_EMI62=m 19.3726 +CONFIG_USB_EMI26=m 19.3727 +CONFIG_USB_ADUTUX=m 19.3728 +CONFIG_USB_SEVSEG=m 19.3729 +CONFIG_USB_RIO500=m 19.3730 +CONFIG_USB_LEGOTOWER=m 19.3731 +CONFIG_USB_LCD=m 19.3732 +CONFIG_USB_LED=m 19.3733 +CONFIG_USB_CYPRESS_CY7C63=m 19.3734 +CONFIG_USB_CYTHERM=m 19.3735 +CONFIG_USB_IDMOUSE=m 19.3736 +CONFIG_USB_FTDI_ELAN=m 19.3737 +CONFIG_USB_APPLEDISPLAY=m 19.3738 +CONFIG_USB_SISUSBVGA=m 19.3739 +CONFIG_USB_SISUSBVGA_CON=y 19.3740 +CONFIG_USB_LD=m 19.3741 +CONFIG_USB_TRANCEVIBRATOR=m 19.3742 +CONFIG_USB_IOWARRIOR=m 19.3743 +CONFIG_USB_TEST=m 19.3744 +CONFIG_USB_ISIGHTFW=m 19.3745 +# CONFIG_USB_YUREX is not set 19.3746 +CONFIG_USB_GADGET=m 19.3747 +# CONFIG_USB_GADGET_DEBUG_FILES is not set 19.3748 +CONFIG_USB_GADGET_VBUS_DRAW=2 19.3749 +CONFIG_USB_GADGET_SELECTED=y 19.3750 +CONFIG_USB_GADGET_R8A66597=y 19.3751 +CONFIG_USB_R8A66597=m 19.3752 +# CONFIG_USB_GADGET_M66592 is not set 19.3753 +# CONFIG_USB_GADGET_AMD5536UDC is not set 19.3754 +# CONFIG_USB_GADGET_CI13XXX is not set 19.3755 +# CONFIG_USB_GADGET_NET2280 is not set 19.3756 +# CONFIG_USB_GADGET_GOKU is not set 19.3757 +# CONFIG_USB_GADGET_LANGWELL is not set 19.3758 +# CONFIG_USB_GADGET_DUMMY_HCD is not set 19.3759 +CONFIG_USB_GADGET_DUALSPEED=y 19.3760 +# CONFIG_USB_ZERO is not set 19.3761 +# CONFIG_USB_AUDIO is not set 19.3762 +# CONFIG_USB_ETH is not set 19.3763 +# CONFIG_USB_GADGETFS is not set 19.3764 +# CONFIG_USB_FUNCTIONFS is not set 19.3765 +# CONFIG_USB_FILE_STORAGE is not set 19.3766 +# CONFIG_USB_MASS_STORAGE is not set 19.3767 +# CONFIG_USB_G_SERIAL is not set 19.3768 +# CONFIG_USB_MIDI_GADGET is not set 19.3769 +# CONFIG_USB_G_PRINTER is not set 19.3770 +# CONFIG_USB_CDC_COMPOSITE is not set 19.3771 +# CONFIG_USB_G_NOKIA is not set 19.3772 +# CONFIG_USB_G_MULTI is not set 19.3773 +# CONFIG_USB_G_HID is not set 19.3774 +# CONFIG_USB_G_DBGP is not set 19.3775 +# CONFIG_USB_G_WEBCAM is not set 19.3776 + 19.3777 +# 19.3778 +# OTG and related infrastructure 19.3779 +# 19.3780 +CONFIG_USB_OTG_UTILS=y 19.3781 +CONFIG_USB_GPIO_VBUS=m 19.3782 +CONFIG_NOP_USB_XCEIV=m 19.3783 +CONFIG_UWB=m 19.3784 +CONFIG_UWB_HWA=m 19.3785 +CONFIG_UWB_WHCI=m 19.3786 +CONFIG_UWB_I1480U=m 19.3787 +CONFIG_MMC=m 19.3788 +# CONFIG_MMC_DEBUG is not set 19.3789 +# CONFIG_MMC_UNSAFE_RESUME is not set 19.3790 + 19.3791 +# 19.3792 +# MMC/SD/SDIO Card Drivers 19.3793 +# 19.3794 +CONFIG_MMC_BLOCK=m 19.3795 +CONFIG_MMC_BLOCK_MINORS=8 19.3796 +CONFIG_MMC_BLOCK_BOUNCE=y 19.3797 +CONFIG_SDIO_UART=m 19.3798 +CONFIG_MMC_TEST=m 19.3799 + 19.3800 +# 19.3801 +# MMC/SD/SDIO Host Controller Drivers 19.3802 +# 19.3803 +CONFIG_MMC_SDHCI=m 19.3804 +CONFIG_MMC_SDHCI_PCI=m 19.3805 +CONFIG_MMC_RICOH_MMC=y 19.3806 +CONFIG_MMC_SDHCI_PLTFM=m 19.3807 +CONFIG_MMC_WBSD=m 19.3808 +CONFIG_MMC_TIFM_SD=m 19.3809 +CONFIG_MMC_SPI=m 19.3810 +CONFIG_MMC_CB710=m 19.3811 +CONFIG_MMC_VIA_SDMMC=m 19.3812 +# CONFIG_MMC_USHC is not set 19.3813 +CONFIG_MEMSTICK=m 19.3814 +# CONFIG_MEMSTICK_DEBUG is not set 19.3815 + 19.3816 +# 19.3817 +# MemoryStick drivers 19.3818 +# 19.3819 +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set 19.3820 +CONFIG_MSPRO_BLOCK=m 19.3821 + 19.3822 +# 19.3823 +# MemoryStick Host Controller Drivers 19.3824 +# 19.3825 +CONFIG_MEMSTICK_TIFM_MS=m 19.3826 +CONFIG_MEMSTICK_JMICRON_38X=m 19.3827 +CONFIG_NEW_LEDS=y 19.3828 +CONFIG_LEDS_CLASS=y 19.3829 + 19.3830 +# 19.3831 +# LED drivers 19.3832 +# 19.3833 +# CONFIG_LEDS_NET5501 is not set 19.3834 +CONFIG_LEDS_ALIX2=m 19.3835 +CONFIG_LEDS_PCA9532=m 19.3836 +CONFIG_LEDS_GPIO=m 19.3837 +CONFIG_LEDS_GPIO_PLATFORM=y 19.3838 +CONFIG_LEDS_LP3944=m 19.3839 +# CONFIG_LEDS_LP5521 is not set 19.3840 +# CONFIG_LEDS_LP5523 is not set 19.3841 +CONFIG_LEDS_PCA955X=m 19.3842 +CONFIG_LEDS_DAC124S085=m 19.3843 +CONFIG_LEDS_REGULATOR=m 19.3844 +CONFIG_LEDS_BD2802=m 19.3845 +CONFIG_LEDS_LT3593=m 19.3846 +CONFIG_LEDS_TRIGGERS=y 19.3847 + 19.3848 +# 19.3849 +# LED Triggers 19.3850 +# 19.3851 +CONFIG_LEDS_TRIGGER_TIMER=m 19.3852 +CONFIG_LEDS_TRIGGER_HEARTBEAT=m 19.3853 +CONFIG_LEDS_TRIGGER_BACKLIGHT=m 19.3854 +CONFIG_LEDS_TRIGGER_GPIO=m 19.3855 +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m 19.3856 + 19.3857 +# 19.3858 +# iptables trigger is under Netfilter config (LED target) 19.3859 +# 19.3860 +CONFIG_ACCESSIBILITY=y 19.3861 +CONFIG_INFINIBAND=m 19.3862 +CONFIG_INFINIBAND_USER_MAD=m 19.3863 +CONFIG_INFINIBAND_USER_ACCESS=m 19.3864 +CONFIG_INFINIBAND_USER_MEM=y 19.3865 +CONFIG_INFINIBAND_ADDR_TRANS=y 19.3866 +CONFIG_INFINIBAND_MTHCA=m 19.3867 +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 19.3868 +CONFIG_INFINIBAND_AMSO1100=m 19.3869 +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set 19.3870 +CONFIG_INFINIBAND_CXGB3=m 19.3871 +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set 19.3872 +# CONFIG_INFINIBAND_CXGB4 is not set 19.3873 +CONFIG_MLX4_INFINIBAND=m 19.3874 +CONFIG_INFINIBAND_NES=m 19.3875 +# CONFIG_INFINIBAND_NES_DEBUG is not set 19.3876 +CONFIG_INFINIBAND_IPOIB=m 19.3877 +CONFIG_INFINIBAND_IPOIB_CM=y 19.3878 +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 19.3879 +CONFIG_INFINIBAND_SRP=m 19.3880 +CONFIG_INFINIBAND_ISER=m 19.3881 +CONFIG_EDAC=y 19.3882 + 19.3883 +# 19.3884 +# Reporting subsystems 19.3885 +# 19.3886 +# CONFIG_EDAC_DEBUG is not set 19.3887 +CONFIG_EDAC_MM_EDAC=m 19.3888 +CONFIG_EDAC_AMD76X=m 19.3889 +CONFIG_EDAC_E7XXX=m 19.3890 +CONFIG_EDAC_I82875P=m 19.3891 +CONFIG_EDAC_I82975X=m 19.3892 +CONFIG_EDAC_I3000=m 19.3893 +CONFIG_EDAC_I3200=m 19.3894 +CONFIG_EDAC_X38=m 19.3895 +CONFIG_EDAC_I5400=m 19.3896 +# CONFIG_EDAC_I7CORE is not set 19.3897 +CONFIG_EDAC_I82860=m 19.3898 +CONFIG_EDAC_R82600=m 19.3899 +CONFIG_EDAC_I5000=m 19.3900 +CONFIG_EDAC_I5100=m 19.3901 +# CONFIG_EDAC_I7300 is not set 19.3902 +CONFIG_RTC_LIB=m 19.3903 +CONFIG_RTC_CLASS=m 19.3904 + 19.3905 +# 19.3906 +# RTC interfaces 19.3907 +# 19.3908 +CONFIG_RTC_INTF_SYSFS=y 19.3909 +CONFIG_RTC_INTF_PROC=y 19.3910 +CONFIG_RTC_INTF_DEV=y 19.3911 +CONFIG_RTC_INTF_DEV_UIE_EMUL=y 19.3912 +# CONFIG_RTC_DRV_TEST is not set 19.3913 + 19.3914 +# 19.3915 +# I2C RTC drivers 19.3916 +# 19.3917 +CONFIG_RTC_DRV_DS1307=m 19.3918 +CONFIG_RTC_DRV_DS1374=m 19.3919 +CONFIG_RTC_DRV_DS1672=m 19.3920 +# CONFIG_RTC_DRV_DS3232 is not set 19.3921 +CONFIG_RTC_DRV_MAX6900=m 19.3922 +CONFIG_RTC_DRV_RS5C372=m 19.3923 +CONFIG_RTC_DRV_ISL1208=m 19.3924 +# CONFIG_RTC_DRV_ISL12022 is not set 19.3925 +CONFIG_RTC_DRV_X1205=m 19.3926 +CONFIG_RTC_DRV_PCF8563=m 19.3927 +CONFIG_RTC_DRV_PCF8583=m 19.3928 +CONFIG_RTC_DRV_M41T80=m 19.3929 +CONFIG_RTC_DRV_M41T80_WDT=y 19.3930 +CONFIG_RTC_DRV_BQ32K=m 19.3931 +CONFIG_RTC_DRV_S35390A=m 19.3932 +CONFIG_RTC_DRV_FM3130=m 19.3933 +CONFIG_RTC_DRV_RX8581=m 19.3934 +CONFIG_RTC_DRV_RX8025=m 19.3935 + 19.3936 +# 19.3937 +# SPI RTC drivers 19.3938 +# 19.3939 +CONFIG_RTC_DRV_M41T94=m 19.3940 +CONFIG_RTC_DRV_DS1305=m 19.3941 +CONFIG_RTC_DRV_DS1390=m 19.3942 +CONFIG_RTC_DRV_MAX6902=m 19.3943 +CONFIG_RTC_DRV_R9701=m 19.3944 +CONFIG_RTC_DRV_RS5C348=m 19.3945 +CONFIG_RTC_DRV_DS3234=m 19.3946 +CONFIG_RTC_DRV_PCF2123=m 19.3947 + 19.3948 +# 19.3949 +# Platform RTC drivers 19.3950 +# 19.3951 +CONFIG_RTC_DRV_CMOS=m 19.3952 +CONFIG_RTC_DRV_DS1286=m 19.3953 +CONFIG_RTC_DRV_DS1511=m 19.3954 +CONFIG_RTC_DRV_DS1553=m 19.3955 +CONFIG_RTC_DRV_DS1742=m 19.3956 +CONFIG_RTC_DRV_STK17TA8=m 19.3957 +CONFIG_RTC_DRV_M48T86=m 19.3958 +CONFIG_RTC_DRV_M48T35=m 19.3959 +CONFIG_RTC_DRV_M48T59=m 19.3960 +CONFIG_RTC_DRV_MSM6242=m 19.3961 +CONFIG_RTC_DRV_BQ4802=m 19.3962 +CONFIG_RTC_DRV_RP5C01=m 19.3963 +CONFIG_RTC_DRV_V3020=m 19.3964 +CONFIG_RTC_DRV_PCF50633=m 19.3965 + 19.3966 +# 19.3967 +# on-CPU RTC drivers 19.3968 +# 19.3969 +CONFIG_RTC_DRV_PCAP=m 19.3970 +CONFIG_DMADEVICES=y 19.3971 +# CONFIG_DMADEVICES_DEBUG is not set 19.3972 + 19.3973 +# 19.3974 +# DMA Devices 19.3975 +# 19.3976 +# CONFIG_INTEL_MID_DMAC is not set 19.3977 +CONFIG_INTEL_IOATDMA=m 19.3978 +# CONFIG_TIMB_DMA is not set 19.3979 +# CONFIG_PCH_DMA is not set 19.3980 +CONFIG_DMA_ENGINE=y 19.3981 + 19.3982 +# 19.3983 +# DMA Clients 19.3984 +# 19.3985 +CONFIG_NET_DMA=y 19.3986 +CONFIG_ASYNC_TX_DMA=y 19.3987 +# CONFIG_DMATEST is not set 19.3988 +CONFIG_DCA=m 19.3989 +CONFIG_AUXDISPLAY=y 19.3990 +CONFIG_KS0108=m 19.3991 +CONFIG_KS0108_PORT=0x378 19.3992 +CONFIG_KS0108_DELAY=2 19.3993 +CONFIG_CFAG12864B=m 19.3994 +CONFIG_CFAG12864B_RATE=20 19.3995 +CONFIG_UIO=m 19.3996 +CONFIG_UIO_CIF=m 19.3997 +CONFIG_UIO_PDRV=m 19.3998 +CONFIG_UIO_PDRV_GENIRQ=m 19.3999 +CONFIG_UIO_AEC=m 19.4000 +CONFIG_UIO_SERCOS3=m 19.4001 +CONFIG_UIO_PCI_GENERIC=m 19.4002 +CONFIG_UIO_NETX=m 19.4003 +CONFIG_STAGING=y 19.4004 +# CONFIG_STAGING_EXCLUDE_BUILD is not set 19.4005 +CONFIG_ET131X=m 19.4006 +CONFIG_ET131X_DEBUG=y 19.4007 +CONFIG_SLICOSS=m 19.4008 +CONFIG_VIDEO_GO7007=m 19.4009 +CONFIG_VIDEO_GO7007_USB=m 19.4010 +CONFIG_VIDEO_GO7007_OV7640=m 19.4011 +CONFIG_VIDEO_GO7007_SAA7113=m 19.4012 +CONFIG_VIDEO_GO7007_SAA7115=m 19.4013 +CONFIG_VIDEO_GO7007_TW9903=m 19.4014 +CONFIG_VIDEO_GO7007_UDA1342=m 19.4015 +CONFIG_VIDEO_GO7007_SONY_TUNER=m 19.4016 +CONFIG_VIDEO_GO7007_TW2804=m 19.4017 +CONFIG_VIDEO_CX25821=m 19.4018 +CONFIG_VIDEO_CX25821_ALSA=m 19.4019 +# CONFIG_VIDEO_TM6000 is not set 19.4020 +CONFIG_VIDEO_CPIA=m 19.4021 +CONFIG_VIDEO_CPIA_PP=m 19.4022 +# CONFIG_VIDEO_CPIA_USB is not set 19.4023 +CONFIG_VIDEO_STRADIS=m 19.4024 +CONFIG_USB_IP_COMMON=m 19.4025 +CONFIG_USB_IP_VHCI_HCD=m 19.4026 +CONFIG_USB_IP_HOST=m 19.4027 +# CONFIG_USB_IP_DEBUG_ENABLE is not set 19.4028 +CONFIG_W35UND=m 19.4029 +CONFIG_PRISM2_USB=m 19.4030 +CONFIG_ECHO=m 19.4031 +# CONFIG_BRCM80211 is not set 19.4032 +CONFIG_RT2860=m 19.4033 +CONFIG_RT2870=m 19.4034 +CONFIG_COMEDI=m 19.4035 +# CONFIG_COMEDI_DEBUG is not set 19.4036 +# CONFIG_COMEDI_MISC_DRIVERS is not set 19.4037 +# CONFIG_COMEDI_ISA_DRIVERS is not set 19.4038 +CONFIG_COMEDI_PCI_DRIVERS=m 19.4039 +# CONFIG_COMEDI_ADDI_APCI_035 is not set 19.4040 +# CONFIG_COMEDI_ADDI_APCI_1032 is not set 19.4041 +# CONFIG_COMEDI_ADDI_APCI_1500 is not set 19.4042 +# CONFIG_COMEDI_ADDI_APCI_1516 is not set 19.4043 +# CONFIG_COMEDI_ADDI_APCI_1564 is not set 19.4044 +# CONFIG_COMEDI_ADDI_APCI_16XX is not set 19.4045 +# CONFIG_COMEDI_ADDI_APCI_2016 is not set 19.4046 +# CONFIG_COMEDI_ADDI_APCI_2032 is not set 19.4047 +# CONFIG_COMEDI_ADDI_APCI_2200 is not set 19.4048 +# CONFIG_COMEDI_ADDI_APCI_3001 is not set 19.4049 +# CONFIG_COMEDI_ADDI_APCI_3120 is not set 19.4050 +# CONFIG_COMEDI_ADDI_APCI_3501 is not set 19.4051 +# CONFIG_COMEDI_ADDI_APCI_3XXX is not set 19.4052 +# CONFIG_COMEDI_ADL_PCI6208 is not set 19.4053 +# CONFIG_COMEDI_ADL_PCI7230 is not set 19.4054 +# CONFIG_COMEDI_ADL_PCI7296 is not set 19.4055 +# CONFIG_COMEDI_ADL_PCI7432 is not set 19.4056 +# CONFIG_COMEDI_ADL_PCI8164 is not set 19.4057 +# CONFIG_COMEDI_ADL_PCI9111 is not set 19.4058 +# CONFIG_COMEDI_ADL_PCI9118 is not set 19.4059 +# CONFIG_COMEDI_ADV_PCI1710 is not set 19.4060 +# CONFIG_COMEDI_ADV_PCI1723 is not set 19.4061 +# CONFIG_COMEDI_ADV_PCI_DIO is not set 19.4062 +# CONFIG_COMEDI_AMPLC_DIO200 is not set 19.4063 +# CONFIG_COMEDI_AMPLC_PC236 is not set 19.4064 +# CONFIG_COMEDI_AMPLC_PC263 is not set 19.4065 +# CONFIG_COMEDI_AMPLC_PCI224 is not set 19.4066 +# CONFIG_COMEDI_AMPLC_PCI230 is not set 19.4067 +# CONFIG_COMEDI_CONTEC_PCI_DIO is not set 19.4068 +# CONFIG_COMEDI_DT3000 is not set 19.4069 +# CONFIG_COMEDI_UNIOXX5 is not set 19.4070 +# CONFIG_COMEDI_GSC_HPDI is not set 19.4071 +# CONFIG_COMEDI_ICP_MULTI is not set 19.4072 +# CONFIG_COMEDI_II_PCI20KC is not set 19.4073 +# CONFIG_COMEDI_DAQBOARD2000 is not set 19.4074 +# CONFIG_COMEDI_JR3_PCI is not set 19.4075 +# CONFIG_COMEDI_KE_COUNTER is not set 19.4076 +# CONFIG_COMEDI_CB_PCIDAS64 is not set 19.4077 +# CONFIG_COMEDI_CB_PCIDAS is not set 19.4078 +# CONFIG_COMEDI_CB_PCIDDA is not set 19.4079 +# CONFIG_COMEDI_CB_PCIDIO is not set 19.4080 +# CONFIG_COMEDI_CB_PCIMDAS is not set 19.4081 +# CONFIG_COMEDI_CB_PCIMDDA is not set 19.4082 +# CONFIG_COMEDI_ME4000 is not set 19.4083 +# CONFIG_COMEDI_ME_DAQ is not set 19.4084 +# CONFIG_COMEDI_RTD520 is not set 19.4085 +# CONFIG_COMEDI_S526 is not set 19.4086 +# CONFIG_COMEDI_S626 is not set 19.4087 +# CONFIG_COMEDI_SSV_DNP is not set 19.4088 +CONFIG_COMEDI_USB_DRIVERS=m 19.4089 +# CONFIG_COMEDI_DT9812 is not set 19.4090 +# CONFIG_COMEDI_USBDUX is not set 19.4091 +# CONFIG_COMEDI_USBDUXFAST is not set 19.4092 +# CONFIG_COMEDI_VMK80XX is not set 19.4093 +# CONFIG_COMEDI_NI_COMMON is not set 19.4094 +# CONFIG_COMEDI_8255 is not set 19.4095 +# CONFIG_COMEDI_DAS08 is not set 19.4096 +# CONFIG_COMEDI_FC is not set 19.4097 +CONFIG_ASUS_OLED=m 19.4098 +CONFIG_PANEL=m 19.4099 +CONFIG_PANEL_PARPORT=0 19.4100 +CONFIG_PANEL_PROFILE=5 19.4101 +# CONFIG_PANEL_CHANGE_MESSAGE is not set 19.4102 +CONFIG_R8187SE=m 19.4103 +CONFIG_RTL8192U=m 19.4104 +CONFIG_RTL8192E=m 19.4105 +# CONFIG_R8712U is not set 19.4106 +CONFIG_TRANZPORT=m 19.4107 +CONFIG_POHMELFS=m 19.4108 +# CONFIG_POHMELFS_DEBUG is not set 19.4109 +# CONFIG_POHMELFS_CRYPTO is not set 19.4110 +CONFIG_AUTOFS_FS=m 19.4111 +CONFIG_IDE_PHISON=m 19.4112 +# CONFIG_LINE6_USB is not set 19.4113 +CONFIG_DRM_VMWGFX=m 19.4114 +CONFIG_DRM_NOUVEAU=m 19.4115 +CONFIG_DRM_NOUVEAU_BACKLIGHT=y 19.4116 + 19.4117 +# 19.4118 +# I2C encoder or helper chips 19.4119 +# 19.4120 +CONFIG_DRM_I2C_CH7006=m 19.4121 +CONFIG_DRM_I2C_SIL164=m 19.4122 +CONFIG_USB_SERIAL_QUATECH2=m 19.4123 +CONFIG_USB_SERIAL_QUATECH_USB2=m 19.4124 +CONFIG_VT6655=m 19.4125 +CONFIG_VT6656=m 19.4126 +CONFIG_FB_UDL=m 19.4127 +CONFIG_HYPERV=m 19.4128 +CONFIG_HYPERV_STORAGE=m 19.4129 +CONFIG_HYPERV_NET=m 19.4130 +CONFIG_HYPERV_UTILS=m 19.4131 +CONFIG_VME_BUS=m 19.4132 + 19.4133 +# 19.4134 +# VME Bridge Drivers 19.4135 +# 19.4136 +CONFIG_VME_CA91CX42=m 19.4137 +CONFIG_VME_TSI148=m 19.4138 + 19.4139 +# 19.4140 +# VME Device Drivers 19.4141 +# 19.4142 +CONFIG_VME_USER=m 19.4143 + 19.4144 +# 19.4145 +# VME Board Drivers 19.4146 +# 19.4147 +CONFIG_VMIVME_7805=m 19.4148 +CONFIG_IIO=m 19.4149 +CONFIG_IIO_RING_BUFFER=y 19.4150 +CONFIG_IIO_SW_RING=m 19.4151 +CONFIG_IIO_TRIGGER=y 19.4152 + 19.4153 +# 19.4154 +# Accelerometers 19.4155 +# 19.4156 +# CONFIG_ADIS16209 is not set 19.4157 +# CONFIG_ADIS16220 is not set 19.4158 +# CONFIG_ADIS16240 is not set 19.4159 +CONFIG_KXSD9=m 19.4160 +CONFIG_LIS3L02DQ=m 19.4161 +CONFIG_SCA3000=m 19.4162 + 19.4163 +# 19.4164 +# Analog to digital convertors 19.4165 +# 19.4166 +CONFIG_MAX1363=m 19.4167 +CONFIG_MAX1363_RING_BUFFER=y 19.4168 +# CONFIG_AD799X is not set 19.4169 +# CONFIG_AD7476 is not set 19.4170 + 19.4171 +# 19.4172 +# Digital gyroscope sensors 19.4173 +# 19.4174 +# CONFIG_ADIS16260 is not set 19.4175 + 19.4176 +# 19.4177 +# Inertial measurement units 19.4178 +# 19.4179 +# CONFIG_ADIS16300 is not set 19.4180 +# CONFIG_ADIS16350 is not set 19.4181 +# CONFIG_ADIS16400 is not set 19.4182 + 19.4183 +# 19.4184 +# Light sensors 19.4185 +# 19.4186 +CONFIG_SENSORS_TSL2563=m 19.4187 +# CONFIG_SENSORS_ISL29018 is not set 19.4188 + 19.4189 +# 19.4190 +# Magnetometer sensors 19.4191 +# 19.4192 +# CONFIG_SENSORS_AK8975 is not set 19.4193 +# CONFIG_SENSORS_HMC5843 is not set 19.4194 + 19.4195 +# 19.4196 +# Triggers - standalone 19.4197 +# 19.4198 +CONFIG_IIO_PERIODIC_RTC_TRIGGER=m 19.4199 +CONFIG_IIO_GPIO_TRIGGER=m 19.4200 +# CONFIG_ZRAM is not set 19.4201 +CONFIG_BATMAN_ADV=m 19.4202 +# CONFIG_BATMAN_ADV_DEBUG is not set 19.4203 +CONFIG_SAMSUNG_LAPTOP=m 19.4204 +CONFIG_FB_SM7XX=m 19.4205 +# CONFIG_VIDEO_DT3155 is not set 19.4206 +CONFIG_CRYSTALHD=m 19.4207 +# CONFIG_CXT1E1 is not set 19.4208 + 19.4209 +# 19.4210 +# Texas Instruments shared transport line discipline 19.4211 +# 19.4212 +# CONFIG_ST_BT is not set 19.4213 +# CONFIG_ADIS16255 is not set 19.4214 +# CONFIG_FB_XGI is not set 19.4215 +# CONFIG_LIRC_STAGING is not set 19.4216 +CONFIG_SMB_FS=m 19.4217 +CONFIG_SMB_NLS_DEFAULT=y 19.4218 +CONFIG_SMB_NLS_REMOTE="cp437" 19.4219 +# CONFIG_EASYCAP is not set 19.4220 +# CONFIG_SOLO6X10 is not set 19.4221 +CONFIG_MACH_NO_WESTBRIDGE=y 19.4222 +# CONFIG_SBE_2T3E3 is not set 19.4223 +# CONFIG_ATH6K_LEGACY is not set 19.4224 +# CONFIG_USB_ENESTORAGE is not set 19.4225 +# CONFIG_BCM_WIMAX is not set 19.4226 +# CONFIG_FT1000 is not set 19.4227 + 19.4228 +# 19.4229 +# Speakup console speech 19.4230 +# 19.4231 +# CONFIG_SPEAKUP is not set 19.4232 +CONFIG_X86_PLATFORM_DEVICES=y 19.4233 +CONFIG_SENSORS_HDAPS=m 19.4234 +# CONFIG_IBM_RTL is not set 19.4235 + 19.4236 +# 19.4237 +# Firmware Drivers 19.4238 +# 19.4239 +# CONFIG_EDD is not set 19.4240 +# CONFIG_FIRMWARE_MEMMAP is not set 19.4241 +# CONFIG_DELL_RBU is not set 19.4242 +# CONFIG_DCDBAS is not set 19.4243 +# CONFIG_ISCSI_IBFT_FIND is not set 19.4244 + 19.4245 +# 19.4246 +# File systems 19.4247 +# 19.4248 +CONFIG_EXT2_FS=m 19.4249 +CONFIG_EXT2_FS_XATTR=y 19.4250 +CONFIG_EXT2_FS_POSIX_ACL=y 19.4251 +CONFIG_EXT2_FS_SECURITY=y 19.4252 +CONFIG_EXT2_FS_XIP=y 19.4253 +CONFIG_EXT3_FS=m 19.4254 +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 19.4255 +CONFIG_EXT3_FS_XATTR=y 19.4256 +CONFIG_EXT3_FS_POSIX_ACL=y 19.4257 +CONFIG_EXT3_FS_SECURITY=y 19.4258 +CONFIG_EXT4_FS=m 19.4259 +CONFIG_EXT4_FS_XATTR=y 19.4260 +CONFIG_EXT4_FS_POSIX_ACL=y 19.4261 +CONFIG_EXT4_FS_SECURITY=y 19.4262 +# CONFIG_EXT4_DEBUG is not set 19.4263 +CONFIG_FS_XIP=y 19.4264 +CONFIG_JBD=m 19.4265 +CONFIG_JBD2=m 19.4266 +CONFIG_FS_MBCACHE=m 19.4267 +CONFIG_REISERFS_FS=m 19.4268 +# CONFIG_REISERFS_CHECK is not set 19.4269 +# CONFIG_REISERFS_PROC_INFO is not set 19.4270 +CONFIG_REISERFS_FS_XATTR=y 19.4271 +CONFIG_REISERFS_FS_POSIX_ACL=y 19.4272 +CONFIG_REISERFS_FS_SECURITY=y 19.4273 +CONFIG_JFS_FS=m 19.4274 +CONFIG_JFS_POSIX_ACL=y 19.4275 +CONFIG_JFS_SECURITY=y 19.4276 +# CONFIG_JFS_DEBUG is not set 19.4277 +# CONFIG_JFS_STATISTICS is not set 19.4278 +CONFIG_FS_POSIX_ACL=y 19.4279 +CONFIG_XFS_FS=m 19.4280 +CONFIG_XFS_QUOTA=y 19.4281 +CONFIG_XFS_POSIX_ACL=y 19.4282 +CONFIG_XFS_RT=y 19.4283 +# CONFIG_XFS_DEBUG is not set 19.4284 +# CONFIG_OCFS2_FS is not set 19.4285 +CONFIG_BTRFS_FS=m 19.4286 +CONFIG_BTRFS_FS_POSIX_ACL=y 19.4287 +CONFIG_NILFS2_FS=m 19.4288 +CONFIG_EXPORTFS=m 19.4289 +CONFIG_FILE_LOCKING=y 19.4290 +CONFIG_FSNOTIFY=y 19.4291 +CONFIG_DNOTIFY=y 19.4292 +CONFIG_INOTIFY_USER=y 19.4293 +# CONFIG_FANOTIFY is not set 19.4294 +CONFIG_QUOTA=y 19.4295 +CONFIG_QUOTA_NETLINK_INTERFACE=y 19.4296 +CONFIG_PRINT_QUOTA_WARNING=y 19.4297 +CONFIG_QUOTA_DEBUG=y 19.4298 +CONFIG_QUOTA_TREE=m 19.4299 +# CONFIG_QFMT_V1 is not set 19.4300 +CONFIG_QFMT_V2=m 19.4301 +CONFIG_QUOTACTL=y 19.4302 +CONFIG_AUTOFS4_FS=m 19.4303 +CONFIG_FUSE_FS=m 19.4304 +CONFIG_CUSE=m 19.4305 + 19.4306 +# 19.4307 +# Caches 19.4308 +# 19.4309 +CONFIG_FSCACHE=m 19.4310 +# CONFIG_FSCACHE_STATS is not set 19.4311 +# CONFIG_FSCACHE_HISTOGRAM is not set 19.4312 +# CONFIG_FSCACHE_DEBUG is not set 19.4313 +# CONFIG_FSCACHE_OBJECT_LIST is not set 19.4314 +CONFIG_CACHEFILES=m 19.4315 +# CONFIG_CACHEFILES_DEBUG is not set 19.4316 +CONFIG_CACHEFILES_HISTOGRAM=y 19.4317 + 19.4318 +# 19.4319 +# CD-ROM/DVD Filesystems 19.4320 +# 19.4321 +CONFIG_ISO9660_FS=m 19.4322 +CONFIG_JOLIET=y 19.4323 +CONFIG_ZISOFS=y 19.4324 +CONFIG_UDF_FS=m 19.4325 +CONFIG_UDF_NLS=y 19.4326 + 19.4327 +# 19.4328 +# DOS/FAT/NT Filesystems 19.4329 +# 19.4330 +CONFIG_FAT_FS=m 19.4331 +CONFIG_MSDOS_FS=m 19.4332 +CONFIG_VFAT_FS=m 19.4333 +CONFIG_FAT_DEFAULT_CODEPAGE=437 19.4334 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 19.4335 +CONFIG_NTFS_FS=m 19.4336 +# CONFIG_NTFS_DEBUG is not set 19.4337 +# CONFIG_NTFS_RW is not set 19.4338 + 19.4339 +# 19.4340 +# Pseudo filesystems 19.4341 +# 19.4342 +CONFIG_PROC_FS=y 19.4343 +# CONFIG_PROC_KCORE is not set 19.4344 +CONFIG_PROC_SYSCTL=y 19.4345 +# CONFIG_PROC_PAGE_MONITOR is not set 19.4346 +CONFIG_SYSFS=y 19.4347 +# CONFIG_HUGETLBFS is not set 19.4348 +# CONFIG_HUGETLB_PAGE is not set 19.4349 +CONFIG_CONFIGFS_FS=m 19.4350 +CONFIG_MISC_FILESYSTEMS=y 19.4351 +CONFIG_ADFS_FS=m 19.4352 +# CONFIG_ADFS_FS_RW is not set 19.4353 +CONFIG_AFFS_FS=m 19.4354 +# CONFIG_ECRYPT_FS is not set 19.4355 +CONFIG_HFS_FS=m 19.4356 +CONFIG_HFSPLUS_FS=m 19.4357 +CONFIG_BEFS_FS=m 19.4358 +# CONFIG_BEFS_DEBUG is not set 19.4359 +CONFIG_BFS_FS=m 19.4360 +CONFIG_EFS_FS=m 19.4361 +CONFIG_JFFS2_FS=m 19.4362 +CONFIG_JFFS2_FS_DEBUG=0 19.4363 +CONFIG_JFFS2_FS_WRITEBUFFER=y 19.4364 +CONFIG_JFFS2_FS_WBUF_VERIFY=y 19.4365 +# CONFIG_JFFS2_SUMMARY is not set 19.4366 +CONFIG_JFFS2_FS_XATTR=y 19.4367 +# CONFIG_JFFS2_FS_POSIX_ACL is not set 19.4368 +# CONFIG_JFFS2_FS_SECURITY is not set 19.4369 +CONFIG_JFFS2_COMPRESSION_OPTIONS=y 19.4370 +CONFIG_JFFS2_ZLIB=y 19.4371 +CONFIG_JFFS2_LZO=y 19.4372 +CONFIG_JFFS2_RTIME=y 19.4373 +CONFIG_JFFS2_RUBIN=y 19.4374 +# CONFIG_JFFS2_CMODE_NONE is not set 19.4375 +CONFIG_JFFS2_CMODE_PRIORITY=y 19.4376 +# CONFIG_JFFS2_CMODE_SIZE is not set 19.4377 +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set 19.4378 +CONFIG_UBIFS_FS=m 19.4379 +CONFIG_UBIFS_FS_XATTR=y 19.4380 +CONFIG_UBIFS_FS_ADVANCED_COMPR=y 19.4381 +CONFIG_UBIFS_FS_LZO=y 19.4382 +CONFIG_UBIFS_FS_ZLIB=y 19.4383 +# CONFIG_UBIFS_FS_DEBUG is not set 19.4384 +CONFIG_LOGFS=m 19.4385 +CONFIG_CRAMFS=m 19.4386 +CONFIG_SQUASHFS=m 19.4387 +# CONFIG_SQUASHFS_XATTR is not set 19.4388 +# CONFIG_SQUASHFS_LZO is not set 19.4389 +# CONFIG_SQUASHFS_XZ is not set 19.4390 +# CONFIG_SQUASHFS_EMBEDDED is not set 19.4391 +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 19.4392 +CONFIG_VXFS_FS=m 19.4393 +CONFIG_MINIX_FS=m 19.4394 +CONFIG_OMFS_FS=m 19.4395 +CONFIG_HPFS_FS=m 19.4396 +CONFIG_QNX4FS_FS=m 19.4397 +CONFIG_ROMFS_FS=m 19.4398 +CONFIG_ROMFS_BACKED_BY_BLOCK=y 19.4399 +# CONFIG_ROMFS_BACKED_BY_MTD is not set 19.4400 +# CONFIG_ROMFS_BACKED_BY_BOTH is not set 19.4401 +CONFIG_ROMFS_ON_BLOCK=y 19.4402 +CONFIG_SYSV_FS=m 19.4403 +CONFIG_UFS_FS=m 19.4404 +# CONFIG_UFS_FS_WRITE is not set 19.4405 +# CONFIG_UFS_DEBUG is not set 19.4406 +CONFIG_EXOFS_FS=m 19.4407 +# CONFIG_EXOFS_DEBUG is not set 19.4408 +CONFIG_NETWORK_FILESYSTEMS=y 19.4409 +CONFIG_NFS_FS=m 19.4410 +CONFIG_NFS_V3=y 19.4411 +CONFIG_NFS_V3_ACL=y 19.4412 +# CONFIG_NFS_V4 is not set 19.4413 +CONFIG_NFS_FSCACHE=y 19.4414 +CONFIG_NFSD=m 19.4415 +CONFIG_NFSD_DEPRECATED=y 19.4416 +CONFIG_NFSD_V2_ACL=y 19.4417 +CONFIG_NFSD_V3=y 19.4418 +CONFIG_NFSD_V3_ACL=y 19.4419 +# CONFIG_NFSD_V4 is not set 19.4420 +CONFIG_LOCKD=m 19.4421 +CONFIG_LOCKD_V4=y 19.4422 +CONFIG_NFS_ACL_SUPPORT=m 19.4423 +CONFIG_NFS_COMMON=y 19.4424 +CONFIG_SUNRPC=m 19.4425 +CONFIG_SUNRPC_GSS=m 19.4426 +CONFIG_SUNRPC_XPRT_RDMA=m 19.4427 +CONFIG_RPCSEC_GSS_KRB5=m 19.4428 +CONFIG_CEPH_FS=m 19.4429 +CONFIG_CIFS=m 19.4430 +CONFIG_CIFS_STATS=y 19.4431 +CONFIG_CIFS_STATS2=y 19.4432 +CONFIG_CIFS_WEAK_PW_HASH=y 19.4433 +# CONFIG_CIFS_UPCALL is not set 19.4434 +CONFIG_CIFS_XATTR=y 19.4435 +CONFIG_CIFS_POSIX=y 19.4436 +# CONFIG_CIFS_DEBUG2 is not set 19.4437 +# CONFIG_CIFS_DFS_UPCALL is not set 19.4438 +# CONFIG_CIFS_FSCACHE is not set 19.4439 +# CONFIG_CIFS_ACL is not set 19.4440 +CONFIG_CIFS_EXPERIMENTAL=y 19.4441 +CONFIG_NCP_FS=m 19.4442 +CONFIG_NCPFS_PACKET_SIGNING=y 19.4443 +CONFIG_NCPFS_IOCTL_LOCKING=y 19.4444 +CONFIG_NCPFS_STRONG=y 19.4445 +CONFIG_NCPFS_NFS_NS=y 19.4446 +CONFIG_NCPFS_OS2_NS=y 19.4447 +CONFIG_NCPFS_SMALLDOS=y 19.4448 +CONFIG_NCPFS_NLS=y 19.4449 +CONFIG_NCPFS_EXTRAS=y 19.4450 +CONFIG_CODA_FS=m 19.4451 +CONFIG_AFS_FS=m 19.4452 +# CONFIG_AFS_DEBUG is not set 19.4453 +CONFIG_AFS_FSCACHE=y 19.4454 + 19.4455 +# 19.4456 +# Partition Types 19.4457 +# 19.4458 +# CONFIG_PARTITION_ADVANCED is not set 19.4459 +CONFIG_MSDOS_PARTITION=y 19.4460 +CONFIG_NLS=m 19.4461 +CONFIG_NLS_DEFAULT="iso8859-1" 19.4462 +CONFIG_NLS_CODEPAGE_437=m 19.4463 +CONFIG_NLS_CODEPAGE_737=m 19.4464 +CONFIG_NLS_CODEPAGE_775=m 19.4465 +CONFIG_NLS_CODEPAGE_850=m 19.4466 +CONFIG_NLS_CODEPAGE_852=m 19.4467 +CONFIG_NLS_CODEPAGE_855=m 19.4468 +CONFIG_NLS_CODEPAGE_857=m 19.4469 +CONFIG_NLS_CODEPAGE_860=m 19.4470 +CONFIG_NLS_CODEPAGE_861=m 19.4471 +CONFIG_NLS_CODEPAGE_862=m 19.4472 +CONFIG_NLS_CODEPAGE_863=m 19.4473 +CONFIG_NLS_CODEPAGE_864=m 19.4474 +CONFIG_NLS_CODEPAGE_865=m 19.4475 +CONFIG_NLS_CODEPAGE_866=m 19.4476 +CONFIG_NLS_CODEPAGE_869=m 19.4477 +CONFIG_NLS_CODEPAGE_936=m 19.4478 +CONFIG_NLS_CODEPAGE_950=m 19.4479 +CONFIG_NLS_CODEPAGE_932=m 19.4480 +CONFIG_NLS_CODEPAGE_949=m 19.4481 +CONFIG_NLS_CODEPAGE_874=m 19.4482 +CONFIG_NLS_ISO8859_8=m 19.4483 +CONFIG_NLS_CODEPAGE_1250=m 19.4484 +CONFIG_NLS_CODEPAGE_1251=m 19.4485 +CONFIG_NLS_ASCII=m 19.4486 +CONFIG_NLS_ISO8859_1=m 19.4487 +CONFIG_NLS_ISO8859_2=m 19.4488 +CONFIG_NLS_ISO8859_3=m 19.4489 +CONFIG_NLS_ISO8859_4=m 19.4490 +CONFIG_NLS_ISO8859_5=m 19.4491 +CONFIG_NLS_ISO8859_6=m 19.4492 +CONFIG_NLS_ISO8859_7=m 19.4493 +CONFIG_NLS_ISO8859_9=m 19.4494 +CONFIG_NLS_ISO8859_13=m 19.4495 +CONFIG_NLS_ISO8859_14=m 19.4496 +CONFIG_NLS_ISO8859_15=m 19.4497 +CONFIG_NLS_KOI8_R=m 19.4498 +CONFIG_NLS_KOI8_U=m 19.4499 +CONFIG_NLS_UTF8=m 19.4500 +CONFIG_DLM=m 19.4501 +# CONFIG_DLM_DEBUG is not set 19.4502 + 19.4503 +# 19.4504 +# Kernel hacking 19.4505 +# 19.4506 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 19.4507 +# CONFIG_PRINTK_TIME is not set 19.4508 +# CONFIG_ENABLE_WARN_DEPRECATED is not set 19.4509 +# CONFIG_ENABLE_MUST_CHECK is not set 19.4510 +CONFIG_FRAME_WARN=1024 19.4511 +# CONFIG_MAGIC_SYSRQ is not set 19.4512 +# CONFIG_STRIP_ASM_SYMS is not set 19.4513 +# CONFIG_UNUSED_SYMBOLS is not set 19.4514 +# CONFIG_DEBUG_FS is not set 19.4515 +# CONFIG_HEADERS_CHECK is not set 19.4516 +# CONFIG_DEBUG_KERNEL is not set 19.4517 +# CONFIG_HARDLOCKUP_DETECTOR is not set 19.4518 +CONFIG_BKL=y 19.4519 +# CONFIG_SPARSE_RCU_POINTER is not set 19.4520 +# CONFIG_DEBUG_MEMORY_INIT is not set 19.4521 +CONFIG_ARCH_WANT_FRAME_POINTERS=y 19.4522 +# CONFIG_FRAME_POINTER is not set 19.4523 +# CONFIG_SYSCTL_SYSCALL_CHECK is not set 19.4524 +CONFIG_USER_STACKTRACE_SUPPORT=y 19.4525 +CONFIG_HAVE_FUNCTION_TRACER=y 19.4526 +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 19.4527 +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y 19.4528 +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 19.4529 +CONFIG_HAVE_DYNAMIC_FTRACE=y 19.4530 +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 19.4531 +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 19.4532 +CONFIG_HAVE_C_RECORDMCOUNT=y 19.4533 +CONFIG_TRACING_SUPPORT=y 19.4534 +# CONFIG_FTRACE is not set 19.4535 +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set 19.4536 +# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set 19.4537 +# CONFIG_DMA_API_DEBUG is not set 19.4538 +# CONFIG_ATOMIC64_SELFTEST is not set 19.4539 +CONFIG_ASYNC_RAID6_TEST=m 19.4540 +# CONFIG_SAMPLES is not set 19.4541 +CONFIG_HAVE_ARCH_KGDB=y 19.4542 +CONFIG_HAVE_ARCH_KMEMCHECK=y 19.4543 +# CONFIG_STRICT_DEVMEM is not set 19.4544 +# CONFIG_X86_VERBOSE_BOOTUP is not set 19.4545 +# CONFIG_EARLY_PRINTK is not set 19.4546 +# CONFIG_DOUBLEFAULT is not set 19.4547 +# CONFIG_IOMMU_STRESS is not set 19.4548 +CONFIG_HAVE_MMIOTRACE_SUPPORT=y 19.4549 +CONFIG_IO_DELAY_TYPE_0X80=0 19.4550 +CONFIG_IO_DELAY_TYPE_0XED=1 19.4551 +CONFIG_IO_DELAY_TYPE_UDELAY=2 19.4552 +CONFIG_IO_DELAY_TYPE_NONE=3 19.4553 +CONFIG_IO_DELAY_0X80=y 19.4554 +# CONFIG_IO_DELAY_0XED is not set 19.4555 +# CONFIG_IO_DELAY_UDELAY is not set 19.4556 +# CONFIG_IO_DELAY_NONE is not set 19.4557 +CONFIG_DEFAULT_IO_DELAY_TYPE=0 19.4558 +CONFIG_OPTIMIZE_INLINING=y 19.4559 + 19.4560 +# 19.4561 +# Security options 19.4562 +# 19.4563 +CONFIG_KEYS=y 19.4564 +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set 19.4565 +# CONFIG_SECURITY_DMESG_RESTRICT is not set 19.4566 +# CONFIG_SECURITY is not set 19.4567 +CONFIG_SECURITYFS=y 19.4568 +CONFIG_DEFAULT_SECURITY_DAC=y 19.4569 +CONFIG_DEFAULT_SECURITY="" 19.4570 +CONFIG_XOR_BLOCKS=m 19.4571 +CONFIG_ASYNC_CORE=m 19.4572 +CONFIG_ASYNC_MEMCPY=m 19.4573 +CONFIG_ASYNC_XOR=m 19.4574 +CONFIG_ASYNC_PQ=m 19.4575 +CONFIG_ASYNC_RAID6_RECOV=m 19.4576 +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y 19.4577 +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y 19.4578 +CONFIG_CRYPTO=y 19.4579 + 19.4580 +# 19.4581 +# Crypto core or helper 19.4582 +# 19.4583 +CONFIG_CRYPTO_ALGAPI=m 19.4584 +CONFIG_CRYPTO_ALGAPI2=m 19.4585 +CONFIG_CRYPTO_AEAD=m 19.4586 +CONFIG_CRYPTO_AEAD2=m 19.4587 +CONFIG_CRYPTO_BLKCIPHER=m 19.4588 +CONFIG_CRYPTO_BLKCIPHER2=m 19.4589 +CONFIG_CRYPTO_HASH=m 19.4590 +CONFIG_CRYPTO_HASH2=m 19.4591 +CONFIG_CRYPTO_RNG=m 19.4592 +CONFIG_CRYPTO_RNG2=m 19.4593 +CONFIG_CRYPTO_PCOMP=m 19.4594 +CONFIG_CRYPTO_PCOMP2=m 19.4595 +CONFIG_CRYPTO_MANAGER=m 19.4596 +CONFIG_CRYPTO_MANAGER2=m 19.4597 +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y 19.4598 +CONFIG_CRYPTO_GF128MUL=m 19.4599 +CONFIG_CRYPTO_NULL=m 19.4600 +CONFIG_CRYPTO_WORKQUEUE=m 19.4601 +CONFIG_CRYPTO_CRYPTD=m 19.4602 +CONFIG_CRYPTO_AUTHENC=m 19.4603 +# CONFIG_CRYPTO_TEST is not set 19.4604 + 19.4605 +# 19.4606 +# Authenticated Encryption with Associated Data 19.4607 +# 19.4608 +CONFIG_CRYPTO_CCM=m 19.4609 +CONFIG_CRYPTO_GCM=m 19.4610 +CONFIG_CRYPTO_SEQIV=m 19.4611 + 19.4612 +# 19.4613 +# Block modes 19.4614 +# 19.4615 +CONFIG_CRYPTO_CBC=m 19.4616 +CONFIG_CRYPTO_CTR=m 19.4617 +CONFIG_CRYPTO_CTS=m 19.4618 +CONFIG_CRYPTO_ECB=m 19.4619 +CONFIG_CRYPTO_LRW=m 19.4620 +CONFIG_CRYPTO_PCBC=m 19.4621 +CONFIG_CRYPTO_XTS=m 19.4622 + 19.4623 +# 19.4624 +# Hash modes 19.4625 +# 19.4626 +CONFIG_CRYPTO_HMAC=m 19.4627 +CONFIG_CRYPTO_XCBC=m 19.4628 +CONFIG_CRYPTO_VMAC=m 19.4629 + 19.4630 +# 19.4631 +# Digest 19.4632 +# 19.4633 +CONFIG_CRYPTO_CRC32C=m 19.4634 +CONFIG_CRYPTO_CRC32C_INTEL=m 19.4635 +CONFIG_CRYPTO_GHASH=m 19.4636 +CONFIG_CRYPTO_MD4=m 19.4637 +CONFIG_CRYPTO_MD5=m 19.4638 +CONFIG_CRYPTO_MICHAEL_MIC=m 19.4639 +CONFIG_CRYPTO_RMD128=m 19.4640 +CONFIG_CRYPTO_RMD160=m 19.4641 +CONFIG_CRYPTO_RMD256=m 19.4642 +CONFIG_CRYPTO_RMD320=m 19.4643 +CONFIG_CRYPTO_SHA1=m 19.4644 +CONFIG_CRYPTO_SHA256=m 19.4645 +CONFIG_CRYPTO_SHA512=m 19.4646 +CONFIG_CRYPTO_TGR192=m 19.4647 +CONFIG_CRYPTO_WP512=m 19.4648 + 19.4649 +# 19.4650 +# Ciphers 19.4651 +# 19.4652 +CONFIG_CRYPTO_AES=m 19.4653 +CONFIG_CRYPTO_AES_586=m 19.4654 +CONFIG_CRYPTO_ANUBIS=m 19.4655 +CONFIG_CRYPTO_ARC4=m 19.4656 +CONFIG_CRYPTO_BLOWFISH=m 19.4657 +CONFIG_CRYPTO_CAMELLIA=m 19.4658 +CONFIG_CRYPTO_CAST5=m 19.4659 +CONFIG_CRYPTO_CAST6=m 19.4660 +CONFIG_CRYPTO_DES=m 19.4661 +CONFIG_CRYPTO_FCRYPT=m 19.4662 +CONFIG_CRYPTO_KHAZAD=m 19.4663 +CONFIG_CRYPTO_SALSA20=m 19.4664 +CONFIG_CRYPTO_SALSA20_586=m 19.4665 +CONFIG_CRYPTO_SEED=m 19.4666 +CONFIG_CRYPTO_SERPENT=m 19.4667 +CONFIG_CRYPTO_TEA=m 19.4668 +CONFIG_CRYPTO_TWOFISH=m 19.4669 +CONFIG_CRYPTO_TWOFISH_COMMON=m 19.4670 +CONFIG_CRYPTO_TWOFISH_586=m 19.4671 + 19.4672 +# 19.4673 +# Compression 19.4674 +# 19.4675 +CONFIG_CRYPTO_DEFLATE=m 19.4676 +CONFIG_CRYPTO_ZLIB=m 19.4677 +CONFIG_CRYPTO_LZO=m 19.4678 + 19.4679 +# 19.4680 +# Random Number Generation 19.4681 +# 19.4682 +CONFIG_CRYPTO_ANSI_CPRNG=m 19.4683 +CONFIG_CRYPTO_HW=y 19.4684 +# CONFIG_CRYPTO_DEV_PADLOCK is not set 19.4685 +# CONFIG_CRYPTO_DEV_GEODE is not set 19.4686 +# CONFIG_CRYPTO_DEV_HIFN_795X is not set 19.4687 +CONFIG_HAVE_KVM=y 19.4688 +CONFIG_HAVE_KVM_IRQCHIP=y 19.4689 +CONFIG_HAVE_KVM_EVENTFD=y 19.4690 +CONFIG_KVM_APIC_ARCHITECTURE=y 19.4691 +CONFIG_KVM_MMIO=y 19.4692 +CONFIG_VIRTUALIZATION=y 19.4693 +CONFIG_KVM=m 19.4694 +CONFIG_KVM_INTEL=m 19.4695 +CONFIG_KVM_AMD=m 19.4696 +CONFIG_VHOST_NET=m 19.4697 +CONFIG_LGUEST=m 19.4698 +CONFIG_VIRTIO=m 19.4699 +CONFIG_VIRTIO_RING=m 19.4700 +CONFIG_VIRTIO_PCI=m 19.4701 +CONFIG_VIRTIO_BALLOON=m 19.4702 +# CONFIG_BINARY_PRINTF is not set 19.4703 + 19.4704 +# 19.4705 +# Library routines 19.4706 +# 19.4707 +CONFIG_RAID6_PQ=m 19.4708 +CONFIG_BITREVERSE=y 19.4709 +CONFIG_GENERIC_FIND_FIRST_BIT=y 19.4710 +CONFIG_GENERIC_FIND_NEXT_BIT=y 19.4711 +CONFIG_GENERIC_FIND_LAST_BIT=y 19.4712 +CONFIG_CRC_CCITT=y 19.4713 +CONFIG_CRC16=m 19.4714 +CONFIG_CRC_T10DIF=m 19.4715 +CONFIG_CRC_ITU_T=m 19.4716 +CONFIG_CRC32=y 19.4717 +CONFIG_CRC7=m 19.4718 +CONFIG_LIBCRC32C=m 19.4719 +CONFIG_ZLIB_INFLATE=y 19.4720 +CONFIG_ZLIB_DEFLATE=m 19.4721 +CONFIG_LZO_COMPRESS=m 19.4722 +CONFIG_LZO_DECOMPRESS=m 19.4723 +# CONFIG_XZ_DEC is not set 19.4724 +# CONFIG_XZ_DEC_BCJ is not set 19.4725 +CONFIG_DECOMPRESS_GZIP=y 19.4726 +CONFIG_DECOMPRESS_LZMA=y 19.4727 +CONFIG_GENERIC_ALLOCATOR=y 19.4728 +CONFIG_REED_SOLOMON=m 19.4729 +CONFIG_REED_SOLOMON_DEC16=y 19.4730 +CONFIG_TEXTSEARCH=y 19.4731 +CONFIG_TEXTSEARCH_KMP=m 19.4732 +CONFIG_TEXTSEARCH_BM=m 19.4733 +CONFIG_TEXTSEARCH_FSM=m 19.4734 +CONFIG_BTREE=y 19.4735 +CONFIG_HAS_IOMEM=y 19.4736 +CONFIG_HAS_IOPORT=y 19.4737 +CONFIG_HAS_DMA=y 19.4738 +CONFIG_CHECK_SIGNATURE=y 19.4739 +CONFIG_NLATTR=y 19.4740 +CONFIG_LRU_CACHE=m
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 20.2 +++ b/kernel-modular/stuff/linux-diff-2.6.37.u Tue Feb 01 09:37:33 2011 +0100 20.3 @@ -0,0 +1,40 @@ 20.4 +--- linux-2.6.30.6/arch/x86/vdso/Makefile 20.5 ++++ linux-2.6.30.6/arch/x86/vdso/Makefile 20.6 +@@ -104,10 +104,12 @@ 20.7 + $(foreach H,$(filter-out FORCE,$^),\ 20.8 + if grep -q VDSO32_SYSENTER_RETURN $H; \ 20.9 + then diff -u $(@D)/.tmp_$(@F) $H; \ 20.10 +- else sed /VDSO32_SYSENTER_RETURN/d $(@D)/.tmp_$(@F) | \ 20.11 +- diff -u - $H; fi &&) : ;\ 20.12 ++ else sed /VDSO32_SYSENTER_RETURN/d $(@D)/.tmp_$(@F) > \ 20.13 ++ $(@D)/.tmp_$(@F).$$ ; \ 20.14 ++ diff -u $(@D)/.tmp_$(@F).$$ $H; fi &&) : ;\ 20.15 + then mv -f $(@D)/.tmp_$(@F) $@; \ 20.16 +- else rm -f $(@D)/.tmp_$(@F); exit 1; \ 20.17 ++ else rm -f $(@D)/.tmp_$(@F)*; exit 1; \ 20.18 ++ rm -f $(@D)/.tmp_$(@F)*; \ 20.19 + fi 20.20 + endef 20.21 + 20.22 + 20.23 +--- linux-2.6.34/scripts/Makefile.lib 20.24 ++++ linux-2.6.34/scripts/Makefile.lib 20.25 +@@ -204,7 +204,8 @@ 20.26 + # --------------------------------------------------------------------------- 20.27 + 20.28 + quiet_cmd_gzip = GZIP $@ 20.29 +-cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \ 20.30 ++cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) && \ 20.31 ++ ( which advdef > /dev/null && advdef -z $@ ; true ) || \ 20.32 + (rm -f $@ ; false) 20.33 + 20.34 + 20.35 +@@ -238,7 +239,7 @@ 20.36 + 20.37 + quiet_cmd_lzma = LZMA $@ 20.38 + cmd_lzma = (cat $(filter-out FORCE,$^) | \ 20.39 +- lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 20.40 ++ lzma e -si -so && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 20.41 + (rm -f $@ ; false) 20.42 + 20.43 + quiet_cmd_lzo = LZO $@
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 21.2 +++ b/kernel-modular/stuff/linux-freeinitrd-2.6.37.u Tue Feb 01 09:37:33 2011 +0100 21.3 @@ -0,0 +1,129 @@ 21.4 +--- linux-2.6.30.4/arch/x86/mm/init.c 21.5 ++++ linux-2.6.30.4/arch/x86/mm/init.c 21.6 +@@ -366,7 +366,7 @@ 21.7 + */ 21.8 + set_memory_rw(begin, (end - begin) >> PAGE_SHIFT); 21.9 + 21.10 +- printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10); 21.11 ++ if (what) printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10); 21.12 + 21.13 + for (; addr < end; addr += PAGE_SIZE) { 21.14 + ClearPageReserved(virt_to_page(addr)); 21.15 + 21.16 +--- linux-2.6.30.4/init/initramfs.c 21.17 ++++ linux-2.6.30.4/init/initramfs.c 21.18 +@@ -374,6 +374,52 @@ 21.19 + [Reset] = do_reset, 21.20 + }; 21.21 + 21.22 ++#include <linux/initrd.h> 21.23 ++#define INITRD_PAGE ((PAGE_SIZE > 64*1024) ? PAGE_SIZE : 64*1024) 21.24 ++#define INITRD_DOT (1024*1024) 21.25 ++ 21.26 ++static void free_rootfs_mem(unsigned long start, unsigned long end) 21.27 ++{ 21.28 ++ free_init_pages(NULL, start, end); 21.29 ++} 21.30 ++ 21.31 ++static void _free_initrd(unsigned long initrd_start, unsigned long initrd_end, 21.32 ++ void (*free_initrd_mem)(unsigned long, unsigned long)); 21.33 ++ 21.34 ++static struct { 21.35 ++ int offset, last, inptr, freed; 21.36 ++ char *max; 21.37 ++} fill; 21.38 ++ 21.39 ++static void release_inbuf(unsigned n) 21.40 ++{ 21.41 ++ if (n >= INITRD_PAGE) { 21.42 ++ unsigned rem = n % INITRD_PAGE; 21.43 ++ unsigned end = initrd_start + n - rem; 21.44 ++ _free_initrd(initrd_start, end, free_rootfs_mem); 21.45 ++ fill.freed += n - rem; 21.46 ++ if (fill.freed >= INITRD_DOT) { 21.47 ++ fill.freed -= INITRD_DOT; 21.48 ++ printk("."); 21.49 ++ } 21.50 ++ initrd_start = end; 21.51 ++ fill.offset = rem; 21.52 ++ } 21.53 ++} 21.54 ++ 21.55 ++static int fill_buffer(void *buffer, unsigned size) 21.56 ++{ 21.57 ++ int max = fill.max - (char *) initrd_start - fill.offset; 21.58 ++ if (max > size) max = size; 21.59 ++ if (max > INITRD_PAGE) max = INITRD_PAGE; 21.60 ++ memcpy(buffer, (void *)(initrd_start + fill.offset), max); 21.61 ++ release_inbuf(fill.offset); 21.62 ++ fill.offset += max; 21.63 ++ fill.inptr += fill.last; 21.64 ++ fill.last = max; 21.65 ++ return max; 21.66 ++} 21.67 ++ 21.68 + static int __init write_buffer(char *buf, unsigned len) 21.69 + { 21.70 + count = len; 21.71 +@@ -418,6 +463,7 @@ 21.72 + decompress_fn decompress; 21.73 + const char *compress_name; 21.74 + static __initdata char msg_buf[64]; 21.75 ++ int early_free_initrd = (buf == (char *) initrd_start); 21.76 + 21.77 + header_buf = kmalloc(110, GFP_KERNEL); 21.78 + symlink_buf = kmalloc(PATH_MAX + N_ALIGN(PATH_MAX) + 1, GFP_KERNEL); 21.79 +@@ -431,11 +478,16 @@ 21.80 + message = NULL; 21.81 + while (!message && len) { 21.82 + loff_t saved_offset = this_header; 21.83 ++ fill.offset = buf - (char *) initrd_start; 21.84 ++ fill.max = buf + len; 21.85 ++ fill.inptr = fill.last = fill.freed = 0; 21.86 + if (*buf == '0' && !(this_header & 3)) { 21.87 + state = Start; 21.88 + written = write_buffer(buf, len); 21.89 + buf += written; 21.90 + len -= written; 21.91 ++ if (early_free_initrd) 21.92 ++ release_inbuf(buf - (char *) initrd_start); 21.93 + continue; 21.94 + } 21.95 + if (!*buf) { 21.96 +@@ -447,7 +497,12 @@ 21.97 + this_header = 0; 21.98 + decompress = decompress_method(buf, len, &compress_name); 21.99 + if (decompress) { 21.100 +- res = decompress(buf, len, NULL, flush_buffer, NULL, 21.101 ++ if (early_free_initrd) { 21.102 ++ res = decompress(NULL, 0, fill_buffer, 21.103 ++ flush_buffer, NULL, &my_inptr, error); 21.104 ++ my_inptr += fill.inptr; 21.105 ++ } 21.106 ++ else res = decompress(buf, len, NULL, flush_buffer, NULL, 21.107 + &my_inptr, error); 21.108 + if (res) 21.109 + error("decompressor failed"); 21.110 +@@ -488,7 +546,8 @@ 21.111 + #include <linux/initrd.h> 21.112 + #include <linux/kexec.h> 21.113 + 21.114 +-static void __init free_initrd(void) 21.115 ++static void _free_initrd(unsigned long initrd_start, unsigned long initrd_end, 21.116 ++ void (*free_initrd_mem)(unsigned long, unsigned long)) 21.117 + { 21.118 + #ifdef CONFIG_KEXEC 21.119 + unsigned long crashk_start = (unsigned long)__va(crashk_res.start); 21.120 +@@ -516,6 +574,12 @@ 21.121 + #endif 21.122 + free_initrd_mem(initrd_start, initrd_end); 21.123 + skip: 21.124 ++ ; 21.125 ++} 21.126 ++ 21.127 ++static void __init free_initrd(void) 21.128 ++{ 21.129 ++ _free_initrd(initrd_start, initrd_end, free_initrd_mem); 21.130 + initrd_start = 0; 21.131 + initrd_end = 0; 21.132 + }
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 22.2 +++ b/kernel-modular/stuff/linux-header-2.6.37.u Tue Feb 01 09:37:33 2011 +0100 22.3 @@ -0,0 +1,469 @@ 22.4 +--- linux-2.6.30.6/arch/x86/boot/header.S 22.5 ++++ linux-2.6.30.6/arch/x86/boot/header.S 22.6 +@@ -6,7 +6,7 @@ 22.7 + * Based on bootsect.S and setup.S 22.8 + * modified by more people than can be counted 22.9 + * 22.10 +- * Rewritten as a common file by H. Peter Anvin (Apr 2007) 22.11 ++ * Rewritten Pascal Bellard (Nov 2009) 22.12 + * 22.13 + * BIG FAT NOTE: We're in real mode using 64k segments. Therefore segment 22.14 + * addresses must be multiplied by 16 to obtain their respective linear 22.15 +@@ -27,6 +27,8 @@ 22.16 + 22.17 + BOOTSEG = 0x07C0 /* original address of boot-sector */ 22.18 + SYSSEG = 0x1000 /* historical load address >> 4 */ 22.19 ++INITSEG = 0x9000 /* boot address >> 4 */ 22.20 ++SETUPSEG = 0x9020 /* setup address >> 4 */ 22.21 + 22.22 + #ifndef SVGA_MODE 22.23 + #define SVGA_MODE ASK_VGA 22.24 +@@ -40,53 +42,412 @@ 22.25 + #define ROOT_RDONLY 1 22.26 + #endif 22.27 + 22.28 ++/* some extra features */ 22.29 ++#define EDIT_CMDLINE on hotkey 22.30 ++#define SHOW_REGS show int13 status & parameters 22.31 ++ 22.32 + .code16 22.33 + .section ".bstext", "ax" 22.34 + 22.35 + .global bootsect_start 22.36 + bootsect_start: 22.37 ++ cld # assume nothing 22.38 ++stacktop = 0x9E00 # in 0x8000 .. 0xA000 22.39 ++zeroed = 48+10 # gdt + zeroed registers 22.40 ++ movw $stacktop-12-zeroed, %di # stacktop is an arbitrary value >= 22.41 ++ # length of bootsect + length of 22.42 ++ # setup + room for stack; 22.43 ++ # 12 is disk parm size. 22.44 ++ pushw $INITSEG 22.45 ++ popw %es # %es = INITSEG 22.46 ++ 22.47 ++ pushw %es 22.48 ++ popw %ss # %ss and %es already contain INITSEG 22.49 ++ movw %di, %sp # put stack at INITSEG:stacktop-... 22.50 ++ 22.51 ++# Many BIOS's default disk parameter tables will not recognize 22.52 ++# multi-sector reads beyond the maximum sector number specified 22.53 ++# in the default diskette parameter tables - this may mean 7 22.54 ++# sectors in some cases. 22.55 ++# 22.56 ++# Since single sector reads are slow and out of the question, 22.57 ++# we must take care of this by creating new parameter tables 22.58 ++# (for the first disk) in RAM. We can set the maximum sector 22.59 ++# count to 36 - the most we will encounter on an ED 2.88. 22.60 ++# 22.61 ++# High doesn't hurt. Low does. Let's use the max: 63 22.62 ++# 22.63 ++# Segments are as follows: %es = %ss = INITSEG, 22.64 ++ 22.65 ++ xorw %ax, %ax # %ax = 0 22.66 ++ movw $zeroed/2, %cx # clear gdt + offset, %ds, limits 22.67 ++ rep # don't worry about cld 22.68 ++ stosw # already done above 22.69 ++ popw %bx # offset = 0 22.70 ++ popw %ds # %ds = 0 22.71 ++ popw %gs # %gs = 0 22.72 ++ 22.73 ++ movb setup_sects+0x7C00, %al # read bootsector + setup (%ds = 0) 22.74 ++ incw %ax 22.75 ++ 22.76 ++ pushw %es 22.77 ++ pushw %di # %ds:%bx+0x78 is parameter table address 22.78 ++ ldsw 0x78(%bx), %si # %ds:%si is source 22.79 ++ movb $6, %cl # copy 12 bytes 22.80 ++ rep # don't worry about cld 22.81 ++ movsw # already done above 22.82 ++ popl %gs:0x78(%bx) # update parameter table address 22.83 ++ pushw %es 22.84 ++ popw %ds # now %ds = %es = %ss = INITSEG 22.85 ++ movb $63, 0x4-12(%di) # patch sector count, %di = stacktop 22.86 ++ cli 22.87 ++ 22.88 ++ xchg %ax, %di # sector count 22.89 ++ popw %ax # limits = 0 22.90 ++ incw %cx # cylinder 0, sector 1 22.91 ++ call read_first_sectors # read setup 22.92 ++ 22.93 ++offset_version = 0xE 22.94 ++ movw $0x200,%si 22.95 ++ addw offset_version(%si),%si # starting protocol 2.00, Kernel 1.3.73 22.96 ++ call putstr # show which kernel we are loading 22.97 ++ 22.98 ++# The cmdline can be entered and modifed at boot time. 22.99 ++# Only characters before the cursor are passed to the kernel. 22.100 ++ popw %bx # clear %bx 22.101 ++ orw cmd_line_ptr, %bx 22.102 ++ jz nocmdline 22.103 ++ pushw %bx 22.104 ++ incw %di 22.105 ++ call read_sectors 22.106 ++ popw %si 22.107 ++ call putstr 22.108 ++#ifdef EDIT_CMDLINE 22.109 ++cmdlp: 22.110 ++ movb $0x20, %al # clear end of line 22.111 ++ int $0x10 # with Space 22.112 ++ movb $8, %al # and BackSpace 22.113 ++ int $0x10 22.114 ++ decw %si 22.115 ++cmdget: 22.116 ++ call wait4key 22.117 ++ cmpb $8, %al # BackSpace ? 22.118 ++ je cmdbs 22.119 ++ movb %al, (%si) # store char 22.120 ++ lodsw # %si += 2 22.121 ++cmdbs: 22.122 ++#if 1 22.123 ++ cmpw %si,cmd_line_ptr 22.124 ++ je cmdget 22.125 ++#endif 22.126 ++ call putc # set %ah and %bx 22.127 ++ cmpb $10, %al # Enter ? 22.128 ++ jne cmdlp 22.129 ++ movb %bh,-2(%si) # set end of string and remove CR 22.130 ++endcmdline: 22.131 ++#endif 22.132 ++nocmdline: 22.133 + 22.134 +- # Normalize the start address 22.135 +- ljmp $BOOTSEG, $start2 22.136 +- 22.137 +-start2: 22.138 +- movw %cs, %ax 22.139 +- movw %ax, %ds 22.140 +- movw %ax, %es 22.141 +- movw %ax, %ss 22.142 +- xorw %sp, %sp 22.143 +- sti 22.144 +- cld 22.145 +- 22.146 +- movw $bugger_off_msg, %si 22.147 ++# This routine loads the system at address SYSSEG, making sure 22.148 ++# no 64kB boundaries are crossed. We try to load it as fast as 22.149 ++# possible, loading whole tracks whenever we can. 22.150 ++ 22.151 ++ramdisk_image = 0x0218 22.152 ++ramdisk_size = 0x021C 22.153 ++ movw %sp, %si # for bootsect_gdt 22.154 ++ decw 16(%si) # bootsect_src = 64Kb 22.155 ++ decw 24(%si) # bootsect_dst = 64Kb 22.156 ++ movw $syssize, %di 22.157 ++type_of_loader = 0x210 22.158 ++loadflags = 0x211 22.159 ++heap_end_ptr = 0x224 22.160 ++ksyssize = 500 22.161 ++ orw $0x80FF, type_of_loader-ksyssize(%di) # loader type = 0xFF 22.162 ++ movw $stacktop-0x200, heap_end_ptr-ksyssize(%di) 22.163 ++ movb $0x10, %al # destination = 0x100000 22.164 ++ movb $5, %cl 22.165 ++initrdlp: 22.166 ++ decw %ax 22.167 ++ movb $0x93,%ah 22.168 ++ movw %ax, 28(%si) # bootsect_dst_base+2 22.169 ++ movb $(SYSSEG/4096), %al # source = SYSSEG 22.170 ++ movw %ax, 20(%si) # bootsect_src_base+2 22.171 ++ cbw 22.172 ++ cwde 22.173 ++ shlw %cl, %ax 22.174 ++ decw %ax 22.175 ++ addl (%di),%eax 22.176 ++ shrl %cl, %eax 22.177 ++syslp: 22.178 ++ pushw $SYSSEG 22.179 ++ popw %es 22.180 ++ movw $128,%di # 64Kb 22.181 ++ subw %di, %ax # max 32M > int 15 limit 22.182 ++ pushf 22.183 ++ jnc not_last 22.184 ++ addw %ax, %di 22.185 ++not_last: 22.186 ++ xorw %bx, %bx # clear %bx 22.187 ++ pushw %ax 22.188 ++#if defined(SHOW_REGS) 22.189 ++ pushw %si 22.190 ++ call read_sectors 22.191 ++ popw %si 22.192 ++#else 22.193 ++ call read_sectors 22.194 ++#endif 22.195 ++ movw $0x8000, %cx # full 64K 22.196 ++ movb $0x87, %ah 22.197 ++ incb 28(%si) # bootsect_dst_base+2 22.198 ++ int $0x15 # max 16M 22.199 ++ popw %ax 22.200 ++ popf 22.201 ++ ja syslp 22.202 ++ movw ramdisk_image+2,%ax 22.203 ++ movw $ramdisk_size,%di 22.204 ++ movb $9, %cl 22.205 ++ cmpb %al,28(%si) 22.206 ++ jb initrdlp 22.207 ++ 22.208 ++# This procedure turns off the floppy drive motor, so 22.209 ++# that we enter the kernel in a known state, and 22.210 ++# don't have to worry about it later. 22.211 ++ 22.212 ++#if 1 22.213 ++kill_motor: 22.214 ++ xchgw %ax, %bx # reset FDC 22.215 ++ int $0x13 22.216 ++#else 22.217 ++kill_motor: 22.218 ++ movw $0x3f2, %dx 22.219 ++ xchgw %ax, %bx 22.220 ++ outb %al, %dx 22.221 ++#endif 22.222 + 22.223 +-msg_loop: 22.224 +- lodsb 22.225 +- andb %al, %al 22.226 +- jz bs_die 22.227 +- movb $0xe, %ah 22.228 +- movw $7, %bx 22.229 ++# After that (everything loaded), we jump to the setup-routine 22.230 ++# loaded directly after the bootblock: 22.231 ++# Segments are as follows: %ds = %ss = INITSEG 22.232 ++ 22.233 ++ ljmp $SETUPSEG, $0 22.234 ++ 22.235 ++# read_sectors reads %di sectors into %es:0 buffer. 22.236 ++# %es:0 is updated to the next memory location. 22.237 ++# First, sectors are read sector by sector until 22.238 ++# sector per track count is known. Then they are 22.239 ++# read track by track. 22.240 ++# Assume no error on first track. 22.241 ++ 22.242 ++#define FLOPPY_CYLINDERS 80 /* 80 cylinders minimum */ 22.243 ++#define FLOPPY_HEADS 2 /* 2 heads minimum */ 22.244 ++#define FLOPPY_SECTORS 18 /* 18 sectors minimum */ 22.245 ++ 22.246 ++#ifdef SHOW_REGS 22.247 ++print_loop: 22.248 ++ movb $0x6 + 'A' - 1, %al 22.249 ++ subb %cl, %al 22.250 ++ movw $regs, %si # caller %si is saved 22.251 ++ call putcs # putc(%al) + putstr(%si) 22.252 ++# it will print out all of the registers. 22.253 ++ popw %bp # load word into %si 22.254 ++ jmp print_all # print %bp (status) 22.255 ++#endif 22.256 ++check_limits: 22.257 ++#ifndef SHOW_REGS 22.258 ++ popw %dx 22.259 ++#endif 22.260 ++ cmpb $FLOPPY_SECTORS+1, %cl # 18 sectors minimum 22.261 ++ jb check_head 22.262 ++ cmpb %al, %cl # max sector known ? 22.263 ++ ja next_head # no -> store it 22.264 ++check_head: 22.265 ++ cmpb $FLOPPY_HEADS, %dh # 2 heads minimum 22.266 ++ jb check_cylinder 22.267 ++ cmpb %ah, %dh # max head known ? 22.268 ++ ja next_cylinder # no -> store it 22.269 ++check_cylinder: 22.270 ++ pushaw 22.271 ++#ifdef SHOW_REGS 22.272 ++ cmpw $0x600,%bp # disk changed ? 22.273 ++ je reset_floppy 22.274 ++ pushw %es # print %es (named EX) 22.275 ++ pushw %dx # print %dx 22.276 ++ pushw %cx # print %cx 22.277 ++ pushw %bx # print %bx 22.278 ++ xchgw %ax, %si 22.279 ++ movb $2,%ah 22.280 ++ pushw %ax # print %ax 22.281 ++ movb $6,%cl 22.282 ++print_all: 22.283 ++ movb $4, %ch # 4 hex digits 22.284 ++print_digit: 22.285 ++ rolw $4, %bp # rotate to use low 4 bits 22.286 ++ movb $0x0f, %al 22.287 ++ andw %bp, %ax # %al = mask for nybble 22.288 ++ addb $0x90, %al # convert %al to ascii hex 22.289 ++ daa # in only four instructions! 22.290 ++ adcb $0x40, %al 22.291 ++ daa 22.292 ++ call putc # set %ah and %bx 22.293 ++ decb %ch 22.294 ++ jnz print_digit 22.295 ++ movb $0x20, %al # SPACE 22.296 + int $0x10 22.297 +- jmp msg_loop 22.298 +- 22.299 +-bs_die: 22.300 +- # Allow the user to press a key, then reboot 22.301 +- xorw %ax, %ax 22.302 ++ loop print_loop 22.303 ++ call wait 22.304 ++ cbw # %ah = 0 22.305 ++reset_floppy: 22.306 ++#else 22.307 ++ cbw # %ah = 0 22.308 ++#endif 22.309 ++ int $0x13 # reset controler 22.310 ++ popaw 22.311 ++read_sectorslp: 22.312 ++ pushw %dx # some bios break dx... 22.313 ++ pushw %ax # limits 22.314 ++ subb %cl, %al # sectors remaining in track 22.315 ++ ja tolastsect 22.316 ++ movb $1, %al # 1 sector mini 22.317 ++tolastsect: 22.318 ++ cbw 22.319 ++ cmpw %di, %ax 22.320 ++ jb more1trk 22.321 ++ movw %di, %ax # sectors to read 22.322 ++more1trk: 22.323 ++ pushw %ax # save context 22.324 ++ movb $2, %ah # cmd: read chs 22.325 ++ int $0x13 22.326 ++#ifdef SHOW_REGS 22.327 ++ xchgw %ax, %bp # status 22.328 ++#endif 22.329 ++# ifdef SHOW_REGS 22.330 ++ popw %si # save %ax 22.331 ++ popw %ax # limits 22.332 ++ popw %dx 22.333 ++# else 22.334 ++ popw %dx # save %ax 22.335 ++ popw %ax # limits 22.336 ++# endif 22.337 ++ jc check_limits 22.338 ++ xchgw %ax, %bp 22.339 ++# ifdef SHOW_REGS 22.340 ++update_regs: 22.341 ++ incw %cx # next sector 22.342 ++ movw %cx, %fs 22.343 ++ addb $2,%bh # next location 22.344 ++ decw %di # update sector counter 22.345 ++ jz putcdot 22.346 ++ decw %si 22.347 ++ jnz update_regs 22.348 ++# else 22.349 ++ addw %dx,%cx # next sector 22.350 ++ addb %dl,%bh 22.351 ++ addb %dl,%bh # next location 22.352 ++ subw %dx,%di # update sector counter 22.353 ++ popw %dx 22.354 ++ jz putcdot 22.355 ++# endif 22.356 ++read_sectors: 22.357 ++ movw %fs, %cx 22.358 ++ xchgw %ax, %bp 22.359 ++ cmpb %al,%cl # reach sector limit ? 22.360 ++ jne bdendlp 22.361 ++next_head: 22.362 ++ movb %cl,%al 22.363 ++ incb %dh # next head 22.364 ++ movb $1,%cl # first sector 22.365 ++ cmpb %ah, %dh # reach head limit ? 22.366 ++ jne bdendlp 22.367 ++next_cylinder: 22.368 ++ movb %dh,%ah 22.369 ++# NOTE : support 256 cylinders max 22.370 ++ incb %ch # next cylinder 22.371 ++read_first_sectors: 22.372 ++ movb $0,%dh # first head 22.373 ++cylinder_count = 496 22.374 ++ cmpb $FLOPPY_CYLINDERS,%ch # reach cylinder limit ? 22.375 ++ jb bdendlp 22.376 ++ cmpb cylinder_count, %ch 22.377 ++ jb bdendlp 22.378 ++next_floppy: 22.379 ++ movb $0,%ch # first cylinder 22.380 ++ pushaw 22.381 ++ movw $swap_floppy,%si 22.382 ++ incb 12(%si) 22.383 ++ pushw %bx 22.384 ++ call putstr 22.385 ++ popw %bx 22.386 ++waitfloppy: 22.387 ++ call wait 22.388 ++ jne waitfloppydone 22.389 ++ pushw %dx # some bios break dx... 22.390 ++ cbw 22.391 ++ int $0x13 # reset FDC 22.392 ++ movw $0x201,%ax 22.393 ++# cwd 22.394 ++# movw $1,%cx 22.395 ++ int $0x13 # read first sector 22.396 ++ popw %dx 22.397 ++ rclb $1,%ah # floppy changed 06=>0D no error 00 22.398 ++ cmpb -2(%si), %ah # 0D then 00 22.399 ++ jne waitfloppy # no => try again 22.400 ++ incw %si 22.401 ++ orb %ah,%ah # was 00 ? 22.402 ++ jne waitfloppy 22.403 ++waitfloppydone: 22.404 ++ popaw 22.405 ++bdendlp: 22.406 ++ jmp read_sectorslp 22.407 ++ 22.408 ++putcdot: 22.409 ++ pushw %ss 22.410 ++ popw %es # restore es 22.411 ++ movb $0x2e+3, %al # loading... message 2e = . 22.412 ++putclf: 22.413 ++ subb $3, %al 22.414 ++putc: 22.415 ++ movb $0xe, %ah 22.416 ++ movw $7, %bx # one dot each 64k 22.417 ++ int $0x10 22.418 ++ cmp $0xd, %al # CR ? 22.419 ++ je putclf 22.420 ++ ret 22.421 ++ 22.422 ++putstr: 22.423 ++ movb $0xd, %al # CR 22.424 ++putcs: 22.425 ++ call putc 22.426 ++ lodsb 22.427 ++ orb %al,%al # end of string is \0 22.428 ++ jnz putcs 22.429 ++ ret 22.430 ++ 22.431 ++clock = 0x46C 22.432 ++wait: 22.433 ++wait4key: 22.434 ++ movw $clock, %di 22.435 ++#define DELAY 5 22.436 ++ movb $(DELAY*182)/10,%cl 22.437 ++ addb %gs:(%di),%cl 22.438 ++waitkbd: 22.439 ++ movw $0x10D, %ax # test keyboard, timeout => CR 22.440 ++ cmpb %gs:(%di),%cl 22.441 ++ je waitdone 22.442 + int $0x16 22.443 +- int $0x19 22.444 ++ jz waitkbd 22.445 ++ cbw 22.446 ++ int $0x16 # eat char 22.447 ++ movw %di, %gs # disable timeout 22.448 ++ incw %di # clear Z 22.449 ++waitdone: 22.450 ++ ret 22.451 + 22.452 +- # int 0x19 should never return. In case it does anyway, 22.453 +- # invoke the BIOS reset code... 22.454 +- ljmp $0xf000,$0xfff0 22.455 +- 22.456 +- .section ".bsdata", "a" 22.457 +-bugger_off_msg: 22.458 +- .ascii "Direct booting from floppy is no longer supported.\r\n" 22.459 +- .ascii "Please use a boot loader program instead.\r\n" 22.460 +- .ascii "\n" 22.461 +- .ascii "Remove disk and press any key to reboot . . .\r\n" 22.462 +- .byte 0 22.463 ++#ifdef SHOW_REGS 22.464 ++regs: .asciz "X:" 22.465 ++#endif 22.466 + 22.467 ++swap_floppy: .ascii "Insert disk 1" 22.468 ++ .ascii "." 22.469 ++ .byte 7,13,0 22.470 + 22.471 + # Kernel attributes; used by setup. This is part 1 of the 22.472 + # header, from the old boot sector.
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 23.2 +++ b/kernel-modular/stuff/linux-squashfs-lzma-2.6.34.u Tue Feb 01 09:37:33 2011 +0100 23.3 @@ -0,0 +1,649 @@ 23.4 +--- linux-2.6.30.6/include/linux/decompress/bunzip2_mm.h 23.5 ++++ linux-2.6.30.6/include/linux/decompress/bunzip2_mm.h 23.6 +@@ -0,0 +1,13 @@ 23.7 ++#ifndef BUNZIP2_MM_H 23.8 ++#define BUNZIP2_MM_H 23.9 ++ 23.10 ++#ifdef STATIC 23.11 ++/* Code active when included from pre-boot environment: */ 23.12 ++#define INIT 23.13 ++#else 23.14 ++/* Compile for initramfs/initrd code only */ 23.15 ++#define INIT __init 23.16 ++static void(*error)(char *m); 23.17 ++#endif 23.18 ++ 23.19 ++#endif 23.20 + 23.21 +--- linux-2.6.30.6/include/linux/decompress/inflate_mm.h 23.22 ++++ linux-2.6.30.6/include/linux/decompress/inflate_mm.h 23.23 +@@ -0,0 +1,13 @@ 23.24 ++#ifndef INFLATE_MM_H 23.25 ++#define INFLATE_MM_H 23.26 ++ 23.27 ++#ifdef STATIC 23.28 ++/* Code active when included from pre-boot environment: */ 23.29 ++#define INIT 23.30 ++#else 23.31 ++/* Compile for initramfs/initrd code only */ 23.32 ++#define INIT __init 23.33 ++static void(*error)(char *m); 23.34 ++#endif 23.35 ++ 23.36 ++#endif 23.37 + 23.38 +#--- linux-2.6.30.6/include/linux/decompress/mm.h 23.39 +#+++ linux-2.6.30.6/include/linux/decompress/mm.h 23.40 +@@ -63,8 +63,6 @@ 23.41 + 23.42 + #define set_error_fn(x) 23.43 + 23.44 +-#define INIT 23.45 +- 23.46 + #else /* STATIC */ 23.47 + 23.48 + /* Code active when compiled standalone for use when loading ramdisk: */ 23.49 +@@ -84,10 +82,8 @@ 23.50 + #define large_malloc(a) vmalloc(a) 23.51 + #define large_free(a) vfree(a) 23.52 + 23.53 +-static void(*error)(char *m); 23.54 + #define set_error_fn(x) error = x; 23.55 + 23.56 +-#define INIT __init 23.57 + #define STATIC 23.58 + 23.59 + #include <linux/init.h> 23.60 + 23.61 +--- linux-2.6.30.6/include/linux/decompress/unlzma_mm.h 23.62 ++++ linux-2.6.30.6/include/linux/decompress/unlzma_mm.h 23.63 +@@ -0,0 +1,20 @@ 23.64 ++#ifndef UNLZMA_MM_H 23.65 ++#define UNLZMA_MM_H 23.66 ++ 23.67 ++#ifdef STATIC 23.68 ++ 23.69 ++/* Code active when included from pre-boot environment: */ 23.70 ++#define INIT 23.71 ++ 23.72 ++#elif defined(CONFIG_DECOMPRESS_LZMA_NEEDED) 23.73 ++ 23.74 ++/* Make it available to non initramfs/initrd code */ 23.75 ++#define INIT 23.76 ++#include <linux/module.h> 23.77 ++#else 23.78 ++ 23.79 ++/* Compile for initramfs/initrd code only */ 23.80 ++#define INIT __init 23.81 ++#endif 23.82 ++ 23.83 ++#endif 23.84 + 23.85 +--- linux-2.6.30.6/lib/Kconfig 23.86 ++++ linux-2.6.30.6/lib/Kconfig 23.87 +@@ -117,6 +117,9 @@ 23.88 + config DECOMPRESS_LZMA 23.89 + tristate 23.90 + 23.91 ++config DECOMPRESS_LZMA_NEEDED 23.92 ++ boolean 23.93 ++ 23.94 + config DECOMPRESS_LZO 23.95 + select LZO_DECOMPRESS 23.96 + tristate 23.97 + 23.98 +--- linux-2.6.30.6/lib/decompress_bunzip2.c 23.99 ++++ linux-2.6.30.6/lib/decompress_bunzip2.c 23.100 +@@ -52,6 +52,7 @@ 23.101 + #include <linux/slab.h> 23.102 + #endif /* STATIC */ 23.103 + 23.104 ++#include <linux/decompress/bunzip2_mm.h> 23.105 + #include <linux/decompress/mm.h> 23.106 + 23.107 + #ifndef INT_MAX 23.108 + 23.109 +--- linux-2.6.30.6/lib/decompress_inflate.c 23.110 ++++ linux-2.6.30.6/lib/decompress_inflate.c 23.111 +@@ -23,6 +23,7 @@ 23.112 + 23.113 + #endif /* STATIC */ 23.114 + 23.115 ++#include <linux/decompress/inflate_mm.h> 23.116 + #include <linux/decompress/mm.h> 23.117 + 23.118 + #define GZIP_IOBUF_SIZE (16*1024) 23.119 + 23.120 +--- linux-2.6.30.6/lib/decompress_unlzma.c 23.121 ++++ linux-2.6.30.6/lib/decompress_unlzma.c 23.122 +@@ -36,6 +36,7 @@ 23.123 + #include <linux/slab.h> 23.124 + #endif /* STATIC */ 23.125 + 23.126 ++#include <linux/decompress/unlzma_mm.h> 23.127 + #include <linux/decompress/mm.h> 23.128 + 23.129 + #define MIN(a, b) (((a) < (b)) ? (a) : (b)) 23.130 +@@ -88,7 +89,7 @@ 23.131 + } 23.132 + 23.133 + /* Called twice: once at startup and once in rc_normalize() */ 23.134 +-static void INIT rc_read(struct rc *rc) 23.135 ++static void INIT rc_read(struct rc *rc, void(*error)(char *x)) 23.136 + { 23.137 + rc->buffer_size = rc->fill((char *)rc->buffer, LZMA_IOBUF_SIZE); 23.138 + if (rc->buffer_size <= 0) 23.139 +@@ -115,13 +116,13 @@ 23.140 + rc->range = 0xFFFFFFFF; 23.141 + } 23.142 + 23.143 +-static inline void INIT rc_init_code(struct rc *rc) 23.144 ++static inline void INIT rc_init_code(struct rc *rc, void(*error)(char *x)) 23.145 + { 23.146 + int i; 23.147 + 23.148 + for (i = 0; i < 5; i++) { 23.149 + if (rc->ptr >= rc->buffer_end) 23.150 +- rc_read(rc); 23.151 ++ rc_read(rc, error); 23.152 + rc->code = (rc->code << 8) | *rc->ptr++; 23.153 + } 23.154 + } 23.155 +@@ -134,32 +135,33 @@ 23.156 + } 23.157 + 23.158 + /* Called twice, but one callsite is in inline'd rc_is_bit_0_helper() */ 23.159 +-static void INIT rc_do_normalize(struct rc *rc) 23.160 ++static void INIT rc_do_normalize(struct rc *rc, void(*error)(char *x)) 23.161 + { 23.162 + if (rc->ptr >= rc->buffer_end) 23.163 +- rc_read(rc); 23.164 ++ rc_read(rc, error); 23.165 + rc->range <<= 8; 23.166 + rc->code = (rc->code << 8) | *rc->ptr++; 23.167 + } 23.168 +-static inline void INIT rc_normalize(struct rc *rc) 23.169 ++static inline void INIT rc_normalize(struct rc *rc, void(*error)(char *x)) 23.170 + { 23.171 + if (rc->range < (1 << RC_TOP_BITS)) 23.172 +- rc_do_normalize(rc); 23.173 ++ rc_do_normalize(rc, error); 23.174 + } 23.175 + 23.176 + /* Called 9 times */ 23.177 + /* Why rc_is_bit_0_helper exists? 23.178 + *Because we want to always expose (rc->code < rc->bound) to optimizer 23.179 + */ 23.180 +-static inline uint32_t INIT rc_is_bit_0_helper(struct rc *rc, uint16_t *p) 23.181 ++static inline uint32_t INIT rc_is_bit_0_helper(struct rc *rc, uint16_t *p, 23.182 ++ void (*error)(char *x)) 23.183 + { 23.184 +- rc_normalize(rc); 23.185 ++ rc_normalize(rc, error); 23.186 + rc->bound = *p * (rc->range >> RC_MODEL_TOTAL_BITS); 23.187 + return rc->bound; 23.188 + } 23.189 +-static inline int INIT rc_is_bit_0(struct rc *rc, uint16_t *p) 23.190 ++static inline int INIT rc_is_bit_0(struct rc *rc, uint16_t *p, void(*error)(char *x)) 23.191 + { 23.192 +- uint32_t t = rc_is_bit_0_helper(rc, p); 23.193 ++ uint32_t t = rc_is_bit_0_helper(rc, p, error); 23.194 + return rc->code < t; 23.195 + } 23.196 + 23.197 +@@ -177,9 +179,9 @@ 23.198 + } 23.199 + 23.200 + /* Called 4 times in unlzma loop */ 23.201 +-static int INIT rc_get_bit(struct rc *rc, uint16_t *p, int *symbol) 23.202 ++static int INIT rc_get_bit(struct rc *rc, uint16_t *p, int *symbol, void(*error)(char *x)) 23.203 + { 23.204 +- if (rc_is_bit_0(rc, p)) { 23.205 ++ if (rc_is_bit_0(rc, p, error)) { 23.206 + rc_update_bit_0(rc, p); 23.207 + *symbol *= 2; 23.208 + return 0; 23.209 +@@ -191,9 +193,9 @@ 23.210 + } 23.211 + 23.212 + /* Called once */ 23.213 +-static inline int INIT rc_direct_bit(struct rc *rc) 23.214 ++static inline int INIT rc_direct_bit(struct rc *rc , void(*error)(char *x)) 23.215 + { 23.216 +- rc_normalize(rc); 23.217 ++ rc_normalize(rc, error); 23.218 + rc->range >>= 1; 23.219 + if (rc->code >= rc->range) { 23.220 + rc->code -= rc->range; 23.221 +@@ -204,13 +206,14 @@ 23.222 + 23.223 + /* Called twice */ 23.224 + static inline void INIT 23.225 +-rc_bit_tree_decode(struct rc *rc, uint16_t *p, int num_levels, int *symbol) 23.226 ++rc_bit_tree_decode(struct rc *rc, uint16_t *p, int num_levels, int *symbol, 23.227 ++ void(*error)(char *x)) 23.228 + { 23.229 + int i = num_levels; 23.230 + 23.231 + *symbol = 1; 23.232 + while (i--) 23.233 +- rc_get_bit(rc, p + *symbol, symbol); 23.234 ++ rc_get_bit(rc, p + *symbol, symbol, error); 23.235 + *symbol -= 1 << num_levels; 23.236 + } 23.237 + 23.238 +@@ -406,7 +409,8 @@ 23.239 + static inline void INIT process_bit0(struct writer *wr, struct rc *rc, 23.240 + struct cstate *cst, uint16_t *p, 23.241 + int pos_state, uint16_t *prob, 23.242 +- int lc, uint32_t literal_pos_mask) { 23.243 ++ int lc, uint32_t literal_pos_mask, 23.244 ++ void(*error)(char *x)) { 23.245 + int mi = 1; 23.246 + static const int state[LZMA_NUM_STATES] = 23.247 + { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5 }; 23.248 +@@ -427,7 +431,7 @@ 23.249 + match_byte <<= 1; 23.250 + bit = match_byte & 0x100; 23.251 + prob_lit = prob + 0x100 + bit + mi; 23.252 +- if (rc_get_bit(rc, prob_lit, &mi)) { 23.253 ++ if (rc_get_bit(rc, prob_lit, &mi, error)) { 23.254 + if (!bit) 23.255 + break; 23.256 + } else { 23.257 +@@ -438,7 +442,7 @@ 23.258 + } 23.259 + while (mi < 0x100) { 23.260 + uint16_t *prob_lit = prob + mi; 23.261 +- rc_get_bit(rc, prob_lit, &mi); 23.262 ++ rc_get_bit(rc, prob_lit, &mi, error); 23.263 + } 23.264 + write_byte(wr, mi); 23.265 + cst->state = state[cst->state]; 23.266 +@@ -446,7 +453,8 @@ 23.267 + 23.268 + static inline void INIT process_bit1(struct writer *wr, struct rc *rc, 23.269 + struct cstate *cst, uint16_t *p, 23.270 +- int pos_state, uint16_t *prob) { 23.271 ++ int pos_state, uint16_t *prob, 23.272 ++ void(*error)(char *x)) { 23.273 + int offset; 23.274 + uint16_t *prob_len; 23.275 + int num_bits; 23.276 +@@ -454,7 +459,7 @@ 23.277 + 23.278 + rc_update_bit_1(rc, prob); 23.279 + prob = p + LZMA_IS_REP + cst->state; 23.280 +- if (rc_is_bit_0(rc, prob)) { 23.281 ++ if (rc_is_bit_0(rc, prob, error)) { 23.282 + rc_update_bit_0(rc, prob); 23.283 + cst->rep3 = cst->rep2; 23.284 + cst->rep2 = cst->rep1; 23.285 +@@ -464,13 +469,13 @@ 23.286 + } else { 23.287 + rc_update_bit_1(rc, prob); 23.288 + prob += LZMA_IS_REP_G0 - LZMA_IS_REP; 23.289 +- if (rc_is_bit_0(rc, prob)) { 23.290 ++ if (rc_is_bit_0(rc, prob, error)) { 23.291 + rc_update_bit_0(rc, prob); 23.292 + prob = (p + LZMA_IS_REP_0_LONG 23.293 + + (cst->state << 23.294 + LZMA_NUM_POS_BITS_MAX) + 23.295 + pos_state); 23.296 +- if (rc_is_bit_0(rc, prob)) { 23.297 ++ if (rc_is_bit_0(rc, prob, error)) { 23.298 + rc_update_bit_0(rc, prob); 23.299 + 23.300 + cst->state = cst->state < LZMA_NUM_LIT_STATES ? 23.301 +@@ -485,13 +490,13 @@ 23.302 + 23.303 + rc_update_bit_1(rc, prob); 23.304 + prob += LZMA_IS_REP_G1 - LZMA_IS_REP_G0; 23.305 +- if (rc_is_bit_0(rc, prob)) { 23.306 ++ if (rc_is_bit_0(rc, prob, error)) { 23.307 + rc_update_bit_0(rc, prob); 23.308 + distance = cst->rep1; 23.309 + } else { 23.310 + rc_update_bit_1(rc, prob); 23.311 + prob += LZMA_IS_REP_G2 - LZMA_IS_REP_G1; 23.312 +- if (rc_is_bit_0(rc, prob)) { 23.313 ++ if (rc_is_bit_0(rc, prob, error)) { 23.314 + rc_update_bit_0(rc, prob); 23.315 + distance = cst->rep2; 23.316 + } else { 23.317 +@@ -509,7 +514,7 @@ 23.318 + } 23.319 + 23.320 + prob_len = prob + LZMA_LEN_CHOICE; 23.321 +- if (rc_is_bit_0(rc, prob_len)) { 23.322 ++ if (rc_is_bit_0(rc, prob_len, error)) { 23.323 + rc_update_bit_0(rc, prob_len); 23.324 + prob_len += LZMA_LEN_LOW - LZMA_LEN_CHOICE 23.325 + + (pos_state << 23.326 +@@ -519,7 +524,7 @@ 23.327 + } else { 23.328 + rc_update_bit_1(rc, prob_len); 23.329 + prob_len += LZMA_LEN_CHOICE_2 - LZMA_LEN_CHOICE; 23.330 +- if (rc_is_bit_0(rc, prob_len)) { 23.331 ++ if (rc_is_bit_0(rc, prob_len, error)) { 23.332 + rc_update_bit_0(rc, prob_len); 23.333 + prob_len += LZMA_LEN_MID - LZMA_LEN_CHOICE_2 23.334 + + (pos_state << 23.335 +@@ -535,7 +540,7 @@ 23.336 + } 23.337 + } 23.338 + 23.339 +- rc_bit_tree_decode(rc, prob_len, num_bits, &len); 23.340 ++ rc_bit_tree_decode(rc, prob_len, num_bits, &len, error); 23.341 + len += offset; 23.342 + 23.343 + if (cst->state < 4) { 23.344 +@@ -550,7 +555,7 @@ 23.345 + << LZMA_NUM_POS_SLOT_BITS); 23.346 + rc_bit_tree_decode(rc, prob, 23.347 + LZMA_NUM_POS_SLOT_BITS, 23.348 +- &pos_slot); 23.349 ++ &pos_slot, error); 23.350 + if (pos_slot >= LZMA_START_POS_MODEL_INDEX) { 23.351 + int i, mi; 23.352 + num_bits = (pos_slot >> 1) - 1; 23.353 +@@ -563,7 +568,7 @@ 23.354 + num_bits -= LZMA_NUM_ALIGN_BITS; 23.355 + while (num_bits--) 23.356 + cst->rep0 = (cst->rep0 << 1) | 23.357 +- rc_direct_bit(rc); 23.358 ++ rc_direct_bit(rc, error); 23.359 + prob = p + LZMA_ALIGN; 23.360 + cst->rep0 <<= LZMA_NUM_ALIGN_BITS; 23.361 + num_bits = LZMA_NUM_ALIGN_BITS; 23.362 +@@ -571,7 +576,7 @@ 23.363 + i = 1; 23.364 + mi = 1; 23.365 + while (num_bits--) { 23.366 +- if (rc_get_bit(rc, prob + mi, &mi)) 23.367 ++ if (rc_get_bit(rc, prob + mi, &mi, error)) 23.368 + cst->rep0 |= i; 23.369 + i <<= 1; 23.370 + } 23.371 +@@ -588,12 +593,12 @@ 23.372 + 23.373 + 23.374 + 23.375 +-STATIC inline int INIT unlzma(unsigned char *buf, int in_len, 23.376 ++STATIC int INIT unlzma(unsigned char *buf, int in_len, 23.377 + int(*fill)(void*, unsigned int), 23.378 + int(*flush)(void*, unsigned int), 23.379 + unsigned char *output, 23.380 + int *posp, 23.381 +- void(*error_fn)(char *x) 23.382 ++ void(*error)(char *x) 23.383 + ) 23.384 + { 23.385 + extern int cpio_flush_buffer(void*, unsigned int); 23.386 +@@ -610,7 +615,6 @@ 23.387 + unsigned char *inbuf; 23.388 + int ret = -1; 23.389 + 23.390 +- set_error_fn(error_fn); 23.391 + 23.392 + if (buf) 23.393 + inbuf = buf; 23.394 +@@ -638,7 +642,7 @@ 23.395 + 23.396 + for (i = 0; i < sizeof(header); i++) { 23.397 + if (rc.ptr >= rc.buffer_end) 23.398 +- rc_read(&rc); 23.399 ++ rc_read(&rc, error); 23.400 + ((unsigned char *)&header)[i] = *rc.ptr++; 23.401 + } 23.402 + 23.403 +@@ -683,17 +687,17 @@ 23.404 + for (i = 0; i < num_probs; i++) 23.405 + p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1; 23.406 + wr.max_index = wr.next_index = 0; 23.407 +- rc_init_code(&rc); 23.408 ++ rc_init_code(&rc, error); 23.409 + 23.410 + while (get_pos(&wr) < header.dst_size) { 23.411 + int pos_state = get_pos(&wr) & pos_state_mask; 23.412 + uint16_t *prob = p + LZMA_IS_MATCH + 23.413 + (cst.state << LZMA_NUM_POS_BITS_MAX) + pos_state; 23.414 +- if (rc_is_bit_0(&rc, prob)) 23.415 ++ if (rc_is_bit_0(&rc, prob, error)) 23.416 + process_bit0(&wr, &rc, &cst, p, pos_state, prob, 23.417 +- lc, literal_pos_mask); 23.418 ++ lc, literal_pos_mask, error); 23.419 + else { 23.420 +- process_bit1(&wr, &rc, &cst, p, pos_state, prob); 23.421 ++ process_bit1(&wr, &rc, &cst, p, pos_state, prob, error); 23.422 + if (cst.rep0 == 0) 23.423 + break; 23.424 + } 23.425 +@@ -727,6 +731,9 @@ 23.426 + exit_0: 23.427 + return ret; 23.428 + } 23.429 ++#if defined(CONFIG_DECOMPRESS_LZMA_NEEDED) && !defined(PREBOOT) 23.430 ++EXPORT_SYMBOL(unlzma); 23.431 ++#endif 23.432 + 23.433 + #ifdef PREBOOT 23.434 + STATIC int INIT decompress(unsigned char *buf, int in_len, 23.435 + 23.436 +--- linux-2.6.34/fs/squashfs/Kconfig 23.437 ++++ linux-2.6.34/fs/squashfs/Kconfig 23.438 +@@ -26,6 +26,12 @@ 23.439 + 23.440 + If unsure, say N. 23.441 + 23.442 ++config SQUASHFS_LZMA 23.443 ++ bool "Include support for LZMA compressed file systems" 23.444 ++ depends on SQUASHFS 23.445 ++ select DECOMPRESS_LZMA 23.446 ++ select DECOMPRESS_LZMA_NEEDED 23.447 ++ 23.448 + config SQUASHFS_EMBEDDED 23.449 + 23.450 + bool "Additional option for memory-constrained systems" 23.451 + 23.452 +--- linux-2.6.34/fs/squashfs/Makefile 23.453 ++++ linux-2.6.34/fs/squashfs/Makefile 23.454 +@@ -5,3 +5,4 @@ 23.455 + obj-$(CONFIG_SQUASHFS) += squashfs.o 23.456 + squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o 23.457 + squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o 23.458 ++squashfs-$(CONFIG_SQUASHFS_LZMA) += lzma_wrapper.o 23.459 + 23.460 +--- linux-2.6.34/fs/squashfs/decompressor.c 23.461 ++++ linux-2.6.34/fs/squashfs/decompressor.c 23.462 +@@ -50,7 +50,11 @@ 23.463 + 23.464 + static const struct squashfs_decompressor *decompressor[] = { 23.465 + &squashfs_zlib_comp_ops, 23.466 ++#ifdef CONFIG_SQUASHFS_LZMA 23.467 ++ &squashfs_lzma_comp_ops, 23.468 ++#else 23.469 + &squashfs_lzma_unsupported_comp_ops, 23.470 ++#endif 23.471 + &squashfs_lzo_unsupported_comp_ops, 23.472 + &squashfs_unknown_comp_ops 23.473 + }; 23.474 + 23.475 +--- linux-2.6.34/fs/squashfs/lzma_wrapper.c 23.476 ++++ linux-2.6.34/fs/squashfs/lzma_wrapper.c 23.477 +@@ -0,0 +1,152 @@ 23.478 ++/* 23.479 ++ * Squashfs - a compressed read only filesystem for Linux 23.480 ++ * 23.481 ++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 23.482 ++ * Phillip Lougher <phillip@lougher.demon.co.uk> 23.483 ++ * 23.484 ++ * This program is free software; you can redistribute it and/or 23.485 ++ * modify it under the terms of the GNU General Public License 23.486 ++ * as published by the Free Software Foundation; either version 2, 23.487 ++ * or (at your option) any later version. 23.488 ++ * 23.489 ++ * This program is distributed in the hope that it will be useful, 23.490 ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of 23.491 ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23.492 ++ * GNU General Public License for more details. 23.493 ++ * 23.494 ++ * You should have received a copy of the GNU General Public License 23.495 ++ * along with this program; if not, write to the Free Software 23.496 ++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 23.497 ++ * 23.498 ++ * lzma_wrapper.c 23.499 ++ */ 23.500 ++ 23.501 ++#include <asm/unaligned.h> 23.502 ++#include <linux/slab.h> 23.503 ++#include <linux/buffer_head.h> 23.504 ++#include <linux/mutex.h> 23.505 ++#include <linux/vmalloc.h> 23.506 ++#include <linux/decompress/unlzma.h> 23.507 ++ 23.508 ++#include "squashfs_fs.h" 23.509 ++#include "squashfs_fs_sb.h" 23.510 ++#include "squashfs_fs_i.h" 23.511 ++#include "squashfs.h" 23.512 ++#include "decompressor.h" 23.513 ++ 23.514 ++struct squashfs_lzma { 23.515 ++ void *input; 23.516 ++ void *output; 23.517 ++}; 23.518 ++ 23.519 ++/* decompress_unlzma.c is currently non re-entrant... */ 23.520 ++DEFINE_MUTEX(lzma_mutex); 23.521 ++ 23.522 ++/* decompress_unlzma.c doesn't provide any context in its callbacks... */ 23.523 ++static int lzma_error; 23.524 ++ 23.525 ++static void error(char *m) 23.526 ++{ 23.527 ++ ERROR("unlzma error: %s\n", m); 23.528 ++ lzma_error = 1; 23.529 ++} 23.530 ++ 23.531 ++ 23.532 ++static void *lzma_init(struct squashfs_sb_info *msblk) 23.533 ++{ 23.534 ++ struct squashfs_lzma *stream = kzalloc(sizeof(*stream), GFP_KERNEL); 23.535 ++ if (stream == NULL) 23.536 ++ goto failed; 23.537 ++ stream->input = vmalloc(msblk->block_size); 23.538 ++ if (stream->input == NULL) 23.539 ++ goto failed; 23.540 ++ stream->output = vmalloc(msblk->block_size); 23.541 ++ if (stream->output == NULL) 23.542 ++ goto failed2; 23.543 ++ 23.544 ++ return stream; 23.545 ++ 23.546 ++failed2: 23.547 ++ vfree(stream->input); 23.548 ++failed: 23.549 ++ ERROR("failed to allocate lzma workspace\n"); 23.550 ++ kfree(stream); 23.551 ++ return NULL; 23.552 ++} 23.553 ++ 23.554 ++ 23.555 ++static void lzma_free(void *strm) 23.556 ++{ 23.557 ++ struct squashfs_lzma *stream = strm; 23.558 ++ 23.559 ++ if (stream) { 23.560 ++ vfree(stream->input); 23.561 ++ vfree(stream->output); 23.562 ++ } 23.563 ++ kfree(stream); 23.564 ++} 23.565 ++ 23.566 ++ 23.567 ++static int lzma_uncompress(struct squashfs_sb_info *msblk, void **buffer, 23.568 ++ struct buffer_head **bh, int b, int offset, int length, int srclength, 23.569 ++ int pages) 23.570 ++{ 23.571 ++ struct squashfs_lzma *stream = msblk->stream; 23.572 ++ void *buff = stream->input; 23.573 ++ int avail, i, bytes = length, res; 23.574 ++ 23.575 ++ mutex_lock(&lzma_mutex); 23.576 ++ 23.577 ++ for (i = 0; i < b; i++) { 23.578 ++ wait_on_buffer(bh[i]); 23.579 ++ if (!buffer_uptodate(bh[i])) 23.580 ++ goto block_release; 23.581 ++ 23.582 ++ avail = min(bytes, msblk->devblksize - offset); 23.583 ++ memcpy(buff, bh[i]->b_data + offset, avail); 23.584 ++ buff += avail; 23.585 ++ bytes -= avail; 23.586 ++ offset = 0; 23.587 ++ put_bh(bh[i]); 23.588 ++ } 23.589 ++ 23.590 ++ lzma_error = 0; 23.591 ++ res = unlzma(stream->input, length, NULL, NULL, stream->output, NULL, 23.592 ++ error); 23.593 ++ if (res || lzma_error) 23.594 ++ goto failed; 23.595 ++ 23.596 ++ /* uncompressed size is stored in the LZMA header (5 byte offset) */ 23.597 ++ res = bytes = get_unaligned_le32(stream->input + 5); 23.598 ++ for (i = 0, buff = stream->output; bytes && i < pages; i++) { 23.599 ++ avail = min_t(int, bytes, PAGE_CACHE_SIZE); 23.600 ++ memcpy(buffer[i], buff, avail); 23.601 ++ buff += avail; 23.602 ++ bytes -= avail; 23.603 ++ } 23.604 ++ if (bytes) 23.605 ++ goto failed; 23.606 ++ 23.607 ++ mutex_unlock(&lzma_mutex); 23.608 ++ return res; 23.609 ++ 23.610 ++block_release: 23.611 ++ for (; i < b; i++) 23.612 ++ put_bh(bh[i]); 23.613 ++ 23.614 ++failed: 23.615 ++ mutex_unlock(&lzma_mutex); 23.616 ++ 23.617 ++ ERROR("lzma decompression failed, data probably corrupt\n"); 23.618 ++ return -EIO; 23.619 ++} 23.620 ++ 23.621 ++const struct squashfs_decompressor squashfs_lzma_comp_ops = { 23.622 ++ .init = lzma_init, 23.623 ++ .free = lzma_free, 23.624 ++ .decompress = lzma_uncompress, 23.625 ++ .id = LZMA_COMPRESSION, 23.626 ++ .name = "lzma", 23.627 ++ .supported = 1 23.628 ++}; 23.629 ++ 23.630 + 23.631 +--- linux-2.6.34/fs/squashfs/squashfs.h 23.632 ++++ linux-2.6.34/fs/squashfs/squashfs.h 23.633 +@@ -94,3 +94,6 @@ 23.634 + 23.635 + /* zlib_wrapper.c */ 23.636 + extern const struct squashfs_decompressor squashfs_zlib_comp_ops; 23.637 ++ 23.638 ++/* lzma wrapper.c */ 23.639 ++extern const struct squashfs_decompressor squashfs_lzma_comp_ops; 23.640 + 23.641 +--- linux-2.6.34/lib/Makefile 23.642 ++++ linux-2.6.34/lib/Makefile 23.643 +@@ -69,7 +69,7 @@ obj-$(CONFIG_LZO_DECOMPRESS) += lzo/ 23.644 + 23.645 + lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o 23.646 + lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o 23.647 +-lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o 23.648 ++obj-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o 23.649 + lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o 23.650 + 23.651 + obj-$(CONFIG_TEXTSEARCH) += textsearch.o 23.652 +
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 24.2 +++ b/kernel-modular/stuff/linux-unlzma-2.6.37.u Tue Feb 01 09:37:33 2011 +0100 24.3 @@ -0,0 +1,268 @@ 24.4 +--- linux-2.6.30.4/init/initramfs.c 24.5 ++++ linux-2.6.30.4/init/initramfs.c 24.6 +@@ -425,7 +425,8 @@ 24.7 + return len - count; 24.8 + } 24.9 + 24.10 +-static int __init flush_buffer(void *bufv, unsigned len) 24.11 ++#define flush_buffer cpio_flush_buffer 24.12 ++int __init flush_buffer(void *bufv, unsigned len) 24.13 + { 24.14 + char *buf = (char *) bufv; 24.15 + int written; 24.16 + 24.17 +--- linux-2.6.30.4/lib/decompress_unlzma.c 24.18 ++++ linux-2.6.30.4/lib/decompress_unlzma.c 24.19 +@@ -278,6 +278,10 @@ 24.20 + size_t global_pos; 24.21 + int(*flush)(void*, unsigned int); 24.22 + struct lzma_header *header; 24.23 ++ int is_cpio_flush; 24.24 ++ uint8_t **buffer_index; 24.25 ++ int next_index; 24.26 ++ int max_index; 24.27 + }; 24.28 + 24.29 + struct cstate { 24.30 +@@ -294,6 +298,14 @@ 24.31 + static inline uint8_t INIT peek_old_byte(struct writer *wr, 24.32 + uint32_t offs) 24.33 + { 24.34 ++ if (wr->is_cpio_flush) { 24.35 ++ int32_t pos; 24.36 ++ while (offs > wr->header->dict_size) 24.37 ++ offs -= wr->header->dict_size; 24.38 ++ pos = wr->buffer_pos - offs; 24.39 ++ return wr->buffer_index[pos / LZMA_IOBUF_SIZE] 24.40 ++ [pos % LZMA_IOBUF_SIZE]; 24.41 ++ } 24.42 + if (!wr->flush) { 24.43 + int32_t pos; 24.44 + while (offs > wr->header->dict_size) 24.45 +@@ -309,8 +321,41 @@ 24.46 + 24.47 + } 24.48 + 24.49 ++static inline void INIT write_byte_if_cpio(struct writer *wr, uint8_t byte) 24.50 ++{ 24.51 ++ if (wr->buffer_pos % LZMA_IOBUF_SIZE == 0) { 24.52 ++ // if the following large_malloc fails, the initramfs 24.53 ++ // whould not be load with is_cpio_flush forced 0 too. 24.54 ++ // Remember we do not allocate historic buffer. 24.55 ++ // Let's assume it will never fail ! 24.56 ++ if (wr->next_index >= wr->max_index) { 24.57 ++ // realloc wr->buffer_index 24.58 ++ uint8_t **p = wr->buffer_index; 24.59 ++ wr->buffer_index = (uint8_t **) 24.60 ++ large_malloc(LZMA_IOBUF_SIZE + 24.61 ++ sizeof(*p) * wr->max_index); 24.62 ++ if (wr->max_index) { 24.63 ++ memcpy(wr->buffer_index, p, 24.64 ++ sizeof(*p) * wr->max_index); 24.65 ++ free(p); 24.66 ++ } 24.67 ++ wr->max_index += LZMA_IOBUF_SIZE / sizeof(*p); 24.68 ++ } 24.69 ++ wr->buffer_index[wr->next_index++] = 24.70 ++ (uint8_t *) large_malloc(LZMA_IOBUF_SIZE); 24.71 ++ } 24.72 ++ wr->buffer_index[wr->buffer_pos / LZMA_IOBUF_SIZE] 24.73 ++ [wr->buffer_pos % LZMA_IOBUF_SIZE] = 24.74 ++ wr->previous_byte = byte; 24.75 ++ wr->buffer_pos++; 24.76 ++} 24.77 ++ 24.78 + static inline void INIT write_byte(struct writer *wr, uint8_t byte) 24.79 + { 24.80 ++ if (wr->is_cpio_flush) { 24.81 ++ write_byte_if_cpio(wr, byte); 24.82 ++ return; 24.83 ++ } 24.84 + wr->buffer[wr->buffer_pos++] = wr->previous_byte = byte; 24.85 + if (wr->flush && wr->buffer_pos == wr->header->dict_size) { 24.86 + wr->buffer_pos = 0; 24.87 +@@ -328,7 +373,21 @@ 24.88 + static inline void INIT copy_bytes(struct writer *wr, 24.89 + uint32_t rep0, int len) 24.90 + { 24.91 +- do { 24.92 ++ if (wr->is_cpio_flush) { 24.93 ++ int32_t pos; 24.94 ++ uint32_t offs = rep0; 24.95 ++ while (offs > wr->header->dict_size) 24.96 ++ offs -= wr->header->dict_size; 24.97 ++ pos = wr->buffer_pos - offs; 24.98 ++ do { 24.99 ++ write_byte_if_cpio(wr, 24.100 ++ wr->buffer_index[pos / LZMA_IOBUF_SIZE] 24.101 ++ [pos % LZMA_IOBUF_SIZE]); 24.102 ++ pos++; 24.103 ++ len--; 24.104 ++ } while (len != 0 && wr->buffer_pos < wr->header->dst_size); 24.105 ++ } 24.106 ++ else do { 24.107 + copy_byte(wr, rep0); 24.108 + len--; 24.109 + } while (len != 0 && wr->buffer_pos < wr->header->dst_size); 24.110 +@@ -339,6 +398,9 @@ 24.111 + int pos_state, uint16_t *prob, 24.112 + int lc, uint32_t literal_pos_mask) { 24.113 + int mi = 1; 24.114 ++ static const int state[LZMA_NUM_STATES] = 24.115 ++ { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5 }; 24.116 ++ 24.117 + rc_update_bit_0(rc, prob); 24.118 + prob = (p + LZMA_LITERAL + 24.119 + (LZMA_LIT_SIZE 24.120 +@@ -369,18 +431,13 @@ 24.121 + rc_get_bit(rc, prob_lit, &mi); 24.122 + } 24.123 + write_byte(wr, mi); 24.124 +- if (cst->state < 4) 24.125 +- cst->state = 0; 24.126 +- else if (cst->state < 10) 24.127 +- cst->state -= 3; 24.128 +- else 24.129 +- cst->state -= 6; 24.130 ++ cst->state = state[cst->state]; 24.131 + } 24.132 + 24.133 + static inline void INIT process_bit1(struct writer *wr, struct rc *rc, 24.134 + struct cstate *cst, uint16_t *p, 24.135 + int pos_state, uint16_t *prob) { 24.136 +- int offset; 24.137 ++ int offset; 24.138 + uint16_t *prob_len; 24.139 + int num_bits; 24.140 + int len; 24.141 +@@ -396,7 +453,7 @@ 24.142 + prob = p + LZMA_LEN_CODER; 24.143 + } else { 24.144 + rc_update_bit_1(rc, prob); 24.145 +- prob = p + LZMA_IS_REP_G0 + cst->state; 24.146 ++ prob += LZMA_IS_REP_G0 - LZMA_IS_REP; 24.147 + if (rc_is_bit_0(rc, prob)) { 24.148 + rc_update_bit_0(rc, prob); 24.149 + prob = (p + LZMA_IS_REP_0_LONG 24.150 +@@ -417,13 +474,13 @@ 24.151 + uint32_t distance; 24.152 + 24.153 + rc_update_bit_1(rc, prob); 24.154 +- prob = p + LZMA_IS_REP_G1 + cst->state; 24.155 ++ prob += LZMA_IS_REP_G1 - LZMA_IS_REP_G0; 24.156 + if (rc_is_bit_0(rc, prob)) { 24.157 + rc_update_bit_0(rc, prob); 24.158 + distance = cst->rep1; 24.159 + } else { 24.160 + rc_update_bit_1(rc, prob); 24.161 +- prob = p + LZMA_IS_REP_G2 + cst->state; 24.162 ++ prob += LZMA_IS_REP_G2 - LZMA_IS_REP_G1; 24.163 + if (rc_is_bit_0(rc, prob)) { 24.164 + rc_update_bit_0(rc, prob); 24.165 + distance = cst->rep2; 24.166 +@@ -444,24 +501,24 @@ 24.167 + prob_len = prob + LZMA_LEN_CHOICE; 24.168 + if (rc_is_bit_0(rc, prob_len)) { 24.169 + rc_update_bit_0(rc, prob_len); 24.170 +- prob_len = (prob + LZMA_LEN_LOW 24.171 ++ prob_len += LZMA_LEN_LOW - LZMA_LEN_CHOICE 24.172 + + (pos_state << 24.173 +- LZMA_LEN_NUM_LOW_BITS)); 24.174 ++ LZMA_LEN_NUM_LOW_BITS); 24.175 + offset = 0; 24.176 + num_bits = LZMA_LEN_NUM_LOW_BITS; 24.177 + } else { 24.178 + rc_update_bit_1(rc, prob_len); 24.179 +- prob_len = prob + LZMA_LEN_CHOICE_2; 24.180 ++ prob_len += LZMA_LEN_CHOICE_2 - LZMA_LEN_CHOICE; 24.181 + if (rc_is_bit_0(rc, prob_len)) { 24.182 + rc_update_bit_0(rc, prob_len); 24.183 +- prob_len = (prob + LZMA_LEN_MID 24.184 ++ prob_len += LZMA_LEN_MID - LZMA_LEN_CHOICE_2 24.185 + + (pos_state << 24.186 +- LZMA_LEN_NUM_MID_BITS)); 24.187 ++ LZMA_LEN_NUM_MID_BITS); 24.188 + offset = 1 << LZMA_LEN_NUM_LOW_BITS; 24.189 + num_bits = LZMA_LEN_NUM_MID_BITS; 24.190 + } else { 24.191 + rc_update_bit_1(rc, prob_len); 24.192 +- prob_len = prob + LZMA_LEN_HIGH; 24.193 ++ prob_len += LZMA_LEN_HIGH - LZMA_LEN_CHOICE_2; 24.194 + offset = ((1 << LZMA_LEN_NUM_LOW_BITS) 24.195 + + (1 << LZMA_LEN_NUM_MID_BITS)); 24.196 + num_bits = LZMA_LEN_NUM_HIGH_BITS; 24.197 +@@ -529,6 +586,7 @@ 24.198 + void(*error_fn)(char *x) 24.199 + ) 24.200 + { 24.201 ++ extern int cpio_flush_buffer(void*, unsigned int); 24.202 + struct lzma_header header; 24.203 + int lc, pb, lp; 24.204 + uint32_t pos_state_mask; 24.205 +@@ -563,6 +621,10 @@ 24.206 + wr.global_pos = 0; 24.207 + wr.previous_byte = 0; 24.208 + wr.buffer_pos = 0; 24.209 ++ wr.is_cpio_flush = 0; 24.210 ++ if (flush == cpio_flush_buffer) 24.211 ++ wr.is_cpio_flush = 1; 24.212 ++ wr.buffer_index = NULL; 24.213 + 24.214 + rc_init(&rc, fill, inbuf, in_len); 24.215 + 24.216 +@@ -596,23 +658,23 @@ 24.217 + if (header.dict_size == 0) 24.218 + header.dict_size = 1; 24.219 + 24.220 +- if (output) 24.221 ++ if (output || wr.is_cpio_flush) 24.222 + wr.buffer = output; 24.223 + else { 24.224 + wr.bufsize = MIN(header.dst_size, header.dict_size); 24.225 + wr.buffer = large_malloc(wr.bufsize); 24.226 + } 24.227 +- if (wr.buffer == NULL) 24.228 ++ if (wr.buffer == NULL && !wr.is_cpio_flush) 24.229 + goto exit_1; 24.230 + 24.231 + num_probs = LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)); 24.232 + p = (uint16_t *) large_malloc(num_probs * sizeof(*p)); 24.233 + if (p == 0) 24.234 + goto exit_2; 24.235 +- num_probs = LZMA_LITERAL + (LZMA_LIT_SIZE << (lc + lp)); 24.236 ++ num_probs += LZMA_LITERAL - LZMA_BASE_SIZE; 24.237 + for (i = 0; i < num_probs; i++) 24.238 + p[i] = (1 << RC_MODEL_TOTAL_BITS) >> 1; 24.239 +- 24.240 ++ wr.max_index = wr.next_index = 0; 24.241 + rc_init_code(&rc); 24.242 + 24.243 + while (get_pos(&wr) < header.dst_size) { 24.244 +@@ -631,12 +693,25 @@ 24.245 + 24.246 + if (posp) 24.247 + *posp = rc.ptr-rc.buffer; 24.248 +- if (wr.flush) 24.249 ++ if (wr.is_cpio_flush) { 24.250 ++ int i; 24.251 ++ for (i = 0; i < wr.next_index -1; i++) { 24.252 ++ wr.flush(wr.buffer_index[i], LZMA_IOBUF_SIZE); 24.253 ++ large_free(wr.buffer_index[i]); 24.254 ++ } 24.255 ++ if (i < wr.next_index) { 24.256 ++ wr.flush(wr.buffer_index[i], 24.257 ++ wr.buffer_pos % LZMA_IOBUF_SIZE); 24.258 ++ large_free(wr.buffer_index[i]); 24.259 ++ } 24.260 ++ large_free(wr.buffer_index); 24.261 ++ } 24.262 ++ else if (wr.flush) 24.263 + wr.flush(wr.buffer, wr.buffer_pos); 24.264 + ret = 0; 24.265 + large_free(p); 24.266 + exit_2: 24.267 +- if (!output) 24.268 ++ if (!output && !wr.is_cpio_flush) 24.269 + large_free(wr.buffer); 24.270 + exit_1: 24.271 + if (!buf)
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 25.2 +++ b/kernel-modular/stuff/list_modules.sh Tue Feb 01 09:37:33 2011 +0100 25.3 @@ -0,0 +1,43 @@ 25.4 +#!/bin/sh 25.5 +# list_modules.sh: list Linux kernel modules for SliTaz GNU/Linux. 25.6 +# 2008/06/07 <pascal.bellard@slitaz.org> - GNU General Public License. 25.7 +# 25.8 + 25.9 +find_modules() 25.10 +{ 25.11 +find $_pkg/lib/modules/*-slitaz/kernel/$1 -type f -exec basename {} \; 25.12 +} 25.13 + 25.14 +if [ -z "$1" ] ; then 25.15 + cat 1>&2 <<EOT 25.16 + 25.17 +\033[1musage:\033[0m `basename $0` path/to/kernel-modules-subtrees 25.18 +exemple `basename $0` drivers/net/wireless >list 25.19 + 25.20 +EOT 25.21 + exit 1 25.22 +fi 25.23 + 25.24 +if [ -z "$(ls -d $_pkg/lib/modules/*-slitaz/kernel/$1 2> /dev/null)" ] ; then 25.25 + cat 1>&2 <<EOT 25.26 + 25.27 +Error : $1 does not exist. 25.28 + 25.29 +EOT 25.30 + exit 1 25.31 +fi 25.32 + 25.33 +for tree in $@; do 25.34 + for module in $(find_modules $tree) ; do 25.35 + grep /$module: $_pkg/lib/modules/*-slitaz/modules.dep || 25.36 + find $_pkg/lib/modules/*-slitaz/kernel/$tree -name $module 25.37 + done | awk '{ for (i = 1; i <= NF; i++) print $i; }' 25.38 +done | sort | uniq | sed -e 's,.*slitaz/,,' -e 's,^kernel/,,' -e 's/:$//' | \ 25.39 +while read module; do 25.40 + grep -qs ^$module$ $src/modules.list && continue 25.41 + if [ ! -f $_pkg/lib/modules/*-slitaz/kernel/$module ]; then 25.42 + (cd $_pkg/lib/modules/*-slitaz/kernel; find -name $(basename $module) ) 25.43 + else 25.44 + echo $module 25.45 + fi 25.46 +done
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 26.2 +++ b/kernel-modular/stuff/modules-2.6.37.list Tue Feb 01 09:37:33 2011 +0100 26.3 @@ -0,0 +1,143 @@ 26.4 +drivers/acpi/video.ko.gz 26.5 +drivers/acpi/button.ko.gz 26.6 +drivers/char/genrtc.ko.gz 26.7 +drivers/char/i8k.ko.gz 26.8 +drivers/char/lp.ko.gz 26.9 +drivers/char/rtc.ko.gz 26.10 +drivers/hwmon/coretemp.ko.gz 26.11 +drivers/hwmon/hwmon.ko.gz 26.12 +drivers/hwmon/k8temp.ko.gz 26.13 +drivers/input/mouse/inport.ko.gz 26.14 +drivers/input/mouse/logibm.ko.gz 26.15 +drivers/input/mouse/pc110pad.ko.gz 26.16 +drivers/net/3c501.ko.gz 26.17 +drivers/net/3c503.ko.gz 26.18 +drivers/net/3c505.ko.gz 26.19 +drivers/net/3c509.ko.gz 26.20 +drivers/net/3c515.ko.gz 26.21 +drivers/net/3c59x.ko.gz 26.22 +drivers/net/82596.ko.gz 26.23 +drivers/net/amd8111e.ko.gz 26.24 +drivers/net/arcnet/arcnet.ko.gz 26.25 +drivers/net/arcnet/com90xx.ko.gz 26.26 +drivers/net/arcnet/rfc1201.ko.gz 26.27 +drivers/net/atl1c/atl1c.ko.gz 26.28 +drivers/net/atl1e/atl1e.ko.gz 26.29 +drivers/net/atlx/atl2.ko.gz 26.30 +drivers/net/bnx2.ko.gz 26.31 +drivers/net/cassini.ko.gz 26.32 +drivers/net/cs89x0.ko.gz 26.33 +drivers/net/depca.ko.gz 26.34 +drivers/net/dl2k.ko.gz 26.35 +drivers/net/e1000/e1000.ko.gz 26.36 +drivers/net/e2100.ko.gz 26.37 +drivers/net/eepro.ko.gz 26.38 +drivers/net/eexpress.ko.gz 26.39 +drivers/net/eth16i.ko.gz 26.40 +drivers/net/ewrk3.ko.gz 26.41 +drivers/net/fealnx.ko.gz 26.42 +drivers/net/hp100.ko.gz 26.43 +drivers/net/hp.ko.gz 26.44 +drivers/net/hp-plus.ko.gz 26.45 +drivers/net/ipg.ko.gz 26.46 +drivers/net/lance.ko.gz 26.47 +drivers/net/lp486e.ko.gz 26.48 +drivers/net/ne.ko.gz 26.49 +drivers/net/ni52.ko.gz 26.50 +drivers/net/ni65.ko.gz 26.51 +drivers/net/pcmcia/3c574_cs.ko.gz 26.52 +drivers/net/pcmcia/3c589_cs.ko.gz 26.53 +drivers/net/pcmcia/axnet_cs.ko.gz 26.54 +drivers/net/pcmcia/fmvj18x_cs.ko.gz 26.55 +drivers/net/pcmcia/nmclan_cs.ko.gz 26.56 +drivers/net/pcmcia/pcnet_cs.ko.gz 26.57 +drivers/net/pcmcia/smc91c92_cs.ko.gz 26.58 +drivers/net/pcmcia/xirc2ps_cs.ko.gz 26.59 +drivers/net/phy/broadcom.ko.gz 26.60 +drivers/net/phy/cicada.ko.gz 26.61 +drivers/net/phy/davicom.ko.gz 26.62 +drivers/net/phy/libphy.ko.gz 26.63 +drivers/net/phy/lxt.ko.gz 26.64 +drivers/net/phy/marvell.ko.gz 26.65 +drivers/net/phy/qsemi.ko.gz 26.66 +drivers/net/phy/smsc.ko.gz 26.67 +drivers/net/dnet.ko.gz 26.68 +drivers/net/sc92031.ko.gz 26.69 +drivers/net/sis190.ko.gz 26.70 +drivers/net/skge.ko.gz 26.71 +drivers/net/sky2.ko.gz 26.72 +drivers/net/smc9194.ko.gz 26.73 +drivers/net/smc-ultra.ko.gz 26.74 +drivers/net/starfire.ko.gz 26.75 +drivers/net/sungem.ko.gz 26.76 +drivers/net/sungem_phy.ko.gz 26.77 +drivers/net/sunhme.ko.gz 26.78 +drivers/net/tg3.ko.gz 26.79 +drivers/net/tulip/tulip.ko.gz 26.80 +drivers/net/tulip/uli526x.ko.gz 26.81 +drivers/net/typhoon.ko.gz 26.82 +drivers/net/usb/asix.ko.gz 26.83 +drivers/net/usb/cdc_ether.ko.gz 26.84 +drivers/net/usb/cdc_subset.ko.gz 26.85 +drivers/net/usb/net1080.ko.gz 26.86 +drivers/net/usb/rndis_host.ko.gz 26.87 +drivers/net/usb/usbnet.ko.gz 26.88 +drivers/net/usb/zaurus.ko.gz 26.89 +drivers/net/usb/cdc_eem.ko.gz 26.90 +drivers/net/usb/dm9601.ko.gz 26.91 +drivers/net/via-velocity.ko.gz 26.92 +drivers/net/wd.ko.gz 26.93 +drivers/net/8390p.ko.gz 26.94 +drivers/net/b44.ko.gz 26.95 +drivers/net/r6040.ko.gz 26.96 +drivers/net/vmxnet3/vmxnet3.ko.gz 26.97 +drivers/net/usb/int51x1.ko.gz 26.98 +drivers/net/usb/ipheth.ko.gz 26.99 +drivers/net/usb/smsc75xx.ko.gz 26.100 +drivers/net/smsc9420.ko.gz 26.101 +drivers/ide/ide-cs.ko.gz 26.102 +drivers/watchdog/softdog.ko.gz 26.103 +drivers/parport/parport.ko.gz 26.104 +drivers/parport/parport_pc.ko.gz 26.105 +drivers/pcmcia/i82092.ko.gz 26.106 +drivers/pcmcia/i82365.ko.gz 26.107 +drivers/pcmcia/pcmcia_core.ko.gz 26.108 +drivers/pcmcia/pcmcia.ko.gz 26.109 +drivers/pcmcia/pcmcia_rsrc.ko.gz 26.110 +drivers/pcmcia/pd6729.ko.gz 26.111 +drivers/pcmcia/yenta_socket.ko.gz 26.112 +drivers/usb/class/cdc-acm.ko.gz 26.113 +drivers/usb/class/usblp.ko.gz 26.114 +drivers/usb/serial/ch341.ko.gz 26.115 +drivers/usb/serial/pl2303.ko.gz 26.116 +drivers/usb/serial/usbserial.ko.gz 26.117 +drivers/usb/mon/usbmon.ko.gz 26.118 +drivers/usb/host/xhci-hcd.ko.gz 26.119 +drivers/ssb/ssb.ko.gz 26.120 +drivers/block/floppy.ko.gz 26.121 +drivers/input/mouse/sermouse.ko.gz 26.122 +drivers/video/output.ko.gz 26.123 +fs/binfmt_misc.ko.gz 26.124 +fs/fat/msdos.ko.gz 26.125 +fs/fuse/cuse.ko.gz 26.126 +net/ipv4/netfilter/ipt_REJECT.ko.gz 26.127 +net/netfilter/nfnetlink.ko.gz 26.128 +net/netfilter/nfnetlink_log.ko.gz 26.129 +lib/crc7.ko.gz 26.130 +drivers/misc/cb710/cb710.ko.gz 26.131 +drivers/misc/tifm_core.ko.gz 26.132 +drivers/leds/led-class.ko.gz 26.133 +net/llc/llc.ko.gz 26.134 +drivers/mmc/core/mmc_core.ko.gz 26.135 +net/rfkill/rfkill.ko.gz 26.136 +net/sunrpc/auth_gss/auth_rpcgss.ko.gz 26.137 +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko.gz 26.138 +net/netfilter/nf_conntrack.ko.gz 26.139 +drivers/input/gameport/gameport.ko.gz 26.140 +drivers/i2c/i2c-core.ko.gz 26.141 +sound/soundcore.ko.gz 26.142 +sound/ac97_bus.ko.gz 26.143 +sound/core/snd.ko.gz 26.144 +lib/libcrc32c.ko.gz 26.145 +lib/crc-itu-t.ko.gz 26.146 +lib/raid6/raid6_pq.ko.gz