wok-6.x rev 9258
Add: linux-libre 2.6.37-libre (part 2)
author | Antoine Bodin <gokhlayeh@slitaz.org> |
---|---|
date | Tue Mar 15 03:24:23 2011 +0100 (2011-03-15) |
parents | abe27fd0192d |
children | 67cd1106a33b |
files | linux-libre/stuff/001-squashfs-decompressors-add-xz-decompressor-module.patch linux-libre/stuff/linux-libre-2.6.37-libre-slitaz.config |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/linux-libre/stuff/001-squashfs-decompressors-add-xz-decompressor-module.patch Tue Mar 15 03:24:23 2011 +0100 1.3 @@ -0,0 +1,3934 @@ 1.4 +From: Lasse Collin <lasse.collin@tukaani.org> 1.5 +Date: Thu, 2 Dec 2010 19:14:19 +0000 (+0200) 1.6 +Subject: Decompressors: Add XZ decompressor module 1.7 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fpkl%2Fsquashfs-xz.git;a=commitdiff_plain;h=3dbc3fe7878e53b43064a12d4ab31ca4c18ce85f 1.8 + 1.9 +Decompressors: Add XZ decompressor module 1.10 + 1.11 +In userspace, the .lzma format has become mostly a legacy 1.12 +file format that got superseded by the .xz format. Similarly, 1.13 +LZMA Utils was superseded by XZ Utils. 1.14 + 1.15 +These patches add support for XZ decompression into 1.16 +the kernel. Most of the code is as is from XZ Embedded 1.17 +<http://tukaani.org/xz/embedded.html>. It was written for 1.18 +the Linux kernel but is usable in other projects too. 1.19 + 1.20 +Advantages of XZ over the current LZMA code in the kernel: 1.21 + - Nice API that can be used by other kernel modules; it's 1.22 + not limited to kernel, initramfs, and initrd decompression. 1.23 + - Integrity check support (CRC32) 1.24 + - BCJ filters improve compression of executable code on 1.25 + certain architectures. These together with LZMA2 can 1.26 + produce a few percent smaller kernel or Squashfs images 1.27 + than plain LZMA without making the decompression slower. 1.28 + 1.29 +This patch: Add the main decompression code (xz_dec), testing 1.30 +module (xz_dec_test), wrapper script (xz_wrap.sh) for the xz 1.31 +command line tool, and documentation. The xz_dec module is 1.32 +enough to have a usable XZ decompressor e.g. for Squashfs. 1.33 + 1.34 +Signed-off-by: Lasse Collin <lasse.collin@tukaani.org> 1.35 +--- 1.36 + 1.37 +diff --git a/Documentation/xz.txt b/Documentation/xz.txt 1.38 +new file mode 100644 1.39 +index 0000000..68329ac 1.40 +--- /dev/null 1.41 ++++ b/Documentation/xz.txt 1.42 +@@ -0,0 +1,122 @@ 1.43 ++ 1.44 ++XZ data compression in Linux 1.45 ++============================ 1.46 ++ 1.47 ++Introduction 1.48 ++ 1.49 ++ XZ is a general purpose data compression format with high compression 1.50 ++ ratio and relatively fast decompression. The primary compression 1.51 ++ algorithm (filter) is LZMA2. Additional filters can be used to improve 1.52 ++ compression ratio even further. E.g. Branch/Call/Jump (BCJ) filters 1.53 ++ improve compression ratio of executable data. 1.54 ++ 1.55 ++ The XZ decompressor in Linux is called XZ Embedded. It supports 1.56 ++ the LZMA2 filter and optionally also BCJ filters. CRC32 is supported 1.57 ++ for integrity checking. The home page of XZ Embedded is at 1.58 ++ <http://tukaani.org/xz/embedded.html>, where you can find the 1.59 ++ latest version and also information about using the code outside 1.60 ++ the Linux kernel. 1.61 ++ 1.62 ++ For userspace, XZ Utils provide a zlib-like compression library 1.63 ++ and a gzip-like command line tool. XZ Utils can be downloaded from 1.64 ++ <http://tukaani.org/xz/>. 1.65 ++ 1.66 ++XZ related components in the kernel 1.67 ++ 1.68 ++ The xz_dec module provides XZ decompressor with single-call (buffer 1.69 ++ to buffer) and multi-call (stateful) APIs. The usage of the xz_dec 1.70 ++ module is documented in include/linux/xz.h. 1.71 ++ 1.72 ++ The xz_dec_test module is for testing xz_dec. xz_dec_test is not 1.73 ++ useful unless you are hacking the XZ decompressor. xz_dec_test 1.74 ++ allocates a char device major dynamically to which one can write 1.75 ++ .xz files from userspace. The decompressed output is thrown away. 1.76 ++ Keep an eye on dmesg to see diagnostics printed by xz_dec_test. 1.77 ++ See the xz_dec_test source code for the details. 1.78 ++ 1.79 ++ For decompressing the kernel image, initramfs, and initrd, there 1.80 ++ is a wrapper function in lib/decompress_unxz.c. Its API is the 1.81 ++ same as in other decompress_*.c files, which is defined in 1.82 ++ include/linux/decompress/generic.h. 1.83 ++ 1.84 ++ scripts/xz_wrap.sh is a wrapper for the xz command line tool found 1.85 ++ from XZ Utils. The wrapper sets compression options to values suitable 1.86 ++ for compressing the kernel image. 1.87 ++ 1.88 ++ For kernel makefiles, two commands are provided for use with 1.89 ++ $(call if_needed). The kernel image should be compressed with 1.90 ++ $(call if_needed,xzkern) which will use a BCJ filter and a big LZMA2 1.91 ++ dictionary. It will also append a four-byte trailer containing the 1.92 ++ uncompressed size of the file, which is needed by the boot code. 1.93 ++ Other things should be compressed with $(call if_needed,xzmisc) 1.94 ++ which will use no BCJ filter and 1 MiB LZMA2 dictionary. 1.95 ++ 1.96 ++Notes on compression options 1.97 ++ 1.98 ++ Since the XZ Embedded supports only streams with no integrity check or 1.99 ++ CRC32, make sure that you don't use some other integrity check type 1.100 ++ when encoding files that are supposed to be decoded by the kernel. With 1.101 ++ liblzma, you need to use either LZMA_CHECK_NONE or LZMA_CHECK_CRC32 1.102 ++ when encoding. With the xz command line tool, use --check=none or 1.103 ++ --check=crc32. 1.104 ++ 1.105 ++ Using CRC32 is strongly recommended unless there is some other layer 1.106 ++ which will verify the integrity of the uncompressed data anyway. 1.107 ++ Double checking the integrity would probably be waste of CPU cycles. 1.108 ++ Note that the headers will always have a CRC32 which will be validated 1.109 ++ by the decoder; you can only change the integrity check type (or 1.110 ++ disable it) for the actual uncompressed data. 1.111 ++ 1.112 ++ In userspace, LZMA2 is typically used with dictionary sizes of several 1.113 ++ megabytes. The decoder needs to have the dictionary in RAM, thus big 1.114 ++ dictionaries cannot be used for files that are intended to be decoded 1.115 ++ by the kernel. 1 MiB is probably the maximum reasonable dictionary 1.116 ++ size for in-kernel use (maybe more is OK for initramfs). The presets 1.117 ++ in XZ Utils may not be optimal when creating files for the kernel, 1.118 ++ so don't hesitate to use custom settings. Example: 1.119 ++ 1.120 ++ xz --check=crc32 --lzma2=dict=512KiB inputfile 1.121 ++ 1.122 ++ An exception to above dictionary size limitation is when the decoder 1.123 ++ is used in single-call mode. Decompressing the kernel itself is an 1.124 ++ example of this situation. In single-call mode, the memory usage 1.125 ++ doesn't depend on the dictionary size, and it is perfectly fine to 1.126 ++ use a big dictionary: for maximum compression, the dictionary should 1.127 ++ be at least as big as the uncompressed data itself. 1.128 ++ 1.129 ++Future plans 1.130 ++ 1.131 ++ Creating a limited XZ encoder may be considered if people think it is 1.132 ++ useful. LZMA2 is slower to compress than e.g. Deflate or LZO even at 1.133 ++ the fastest settings, so it isn't clear if LZMA2 encoder is wanted 1.134 ++ into the kernel. 1.135 ++ 1.136 ++ Support for limited random-access reading is planned for the 1.137 ++ decompression code. I don't know if it could have any use in the 1.138 ++ kernel, but I know that it would be useful in some embedded projects 1.139 ++ outside the Linux kernel. 1.140 ++ 1.141 ++Conformance to the .xz file format specification 1.142 ++ 1.143 ++ There are a couple of corner cases where things have been simplified 1.144 ++ at expense of detecting errors as early as possible. These should not 1.145 ++ matter in practice all, since they don't cause security issues. But 1.146 ++ it is good to know this if testing the code e.g. with the test files 1.147 ++ from XZ Utils. 1.148 ++ 1.149 ++Reporting bugs 1.150 ++ 1.151 ++ Before reporting a bug, please check that it's not fixed already 1.152 ++ at upstream. See <http://tukaani.org/xz/embedded.html> to get the 1.153 ++ latest code. 1.154 ++ 1.155 ++ Report bugs to <lasse.collin@tukaani.org> or visit #tukaani on 1.156 ++ Freenode and talk to Larhzu. I don't actively read LKML or other 1.157 ++ kernel-related mailing lists, so if there's something I should know, 1.158 ++ you should email to me personally or use IRC. 1.159 ++ 1.160 ++ Don't bother Igor Pavlov with questions about the XZ implementation 1.161 ++ in the kernel or about XZ Utils. While these two implementations 1.162 ++ include essential code that is directly based on Igor Pavlov's code, 1.163 ++ these implementations aren't maintained nor supported by him. 1.164 ++ 1.165 +diff --git a/include/linux/xz.h b/include/linux/xz.h 1.166 +new file mode 100644 1.167 +index 0000000..64cffa6 1.168 +--- /dev/null 1.169 ++++ b/include/linux/xz.h 1.170 +@@ -0,0 +1,264 @@ 1.171 ++/* 1.172 ++ * XZ decompressor 1.173 ++ * 1.174 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 1.175 ++ * Igor Pavlov <http://7-zip.org/> 1.176 ++ * 1.177 ++ * This file has been put into the public domain. 1.178 ++ * You can do whatever you want with this file. 1.179 ++ */ 1.180 ++ 1.181 ++#ifndef XZ_H 1.182 ++#define XZ_H 1.183 ++ 1.184 ++#ifdef __KERNEL__ 1.185 ++# include <linux/stddef.h> 1.186 ++# include <linux/types.h> 1.187 ++#else 1.188 ++# include <stddef.h> 1.189 ++# include <stdint.h> 1.190 ++#endif 1.191 ++ 1.192 ++/* In Linux, this is used to make extern functions static when needed. */ 1.193 ++#ifndef XZ_EXTERN 1.194 ++# define XZ_EXTERN extern 1.195 ++#endif 1.196 ++ 1.197 ++/** 1.198 ++ * enum xz_mode - Operation mode 1.199 ++ * 1.200 ++ * @XZ_SINGLE: Single-call mode. This uses less RAM than 1.201 ++ * than multi-call modes, because the LZMA2 1.202 ++ * dictionary doesn't need to be allocated as 1.203 ++ * part of the decoder state. All required data 1.204 ++ * structures are allocated at initialization, 1.205 ++ * so xz_dec_run() cannot return XZ_MEM_ERROR. 1.206 ++ * @XZ_PREALLOC: Multi-call mode with preallocated LZMA2 1.207 ++ * dictionary buffer. All data structures are 1.208 ++ * allocated at initialization, so xz_dec_run() 1.209 ++ * cannot return XZ_MEM_ERROR. 1.210 ++ * @XZ_DYNALLOC: Multi-call mode. The LZMA2 dictionary is 1.211 ++ * allocated once the required size has been 1.212 ++ * parsed from the stream headers. If the 1.213 ++ * allocation fails, xz_dec_run() will return 1.214 ++ * XZ_MEM_ERROR. 1.215 ++ * 1.216 ++ * It is possible to enable support only for a subset of the above 1.217 ++ * modes at compile time by defining XZ_DEC_SINGLE, XZ_DEC_PREALLOC, 1.218 ++ * or XZ_DEC_DYNALLOC. The xz_dec kernel module is always compiled 1.219 ++ * with support for all operation modes, but the preboot code may 1.220 ++ * be built with fewer features to minimize code size. 1.221 ++ */ 1.222 ++enum xz_mode { 1.223 ++ XZ_SINGLE, 1.224 ++ XZ_PREALLOC, 1.225 ++ XZ_DYNALLOC 1.226 ++}; 1.227 ++ 1.228 ++/** 1.229 ++ * enum xz_ret - Return codes 1.230 ++ * @XZ_OK: Everything is OK so far. More input or more 1.231 ++ * output space is required to continue. This 1.232 ++ * return code is possible only in multi-call mode 1.233 ++ * (XZ_PREALLOC or XZ_DYNALLOC). 1.234 ++ * @XZ_STREAM_END: Operation finished successfully. 1.235 ++ * @XZ_UNSUPPORTED_CHECK: Integrity check type is not supported. Decoding 1.236 ++ * is still possible in multi-call mode by simply 1.237 ++ * calling xz_dec_run() again. 1.238 ++ * Note that this return value is used only if 1.239 ++ * XZ_DEC_ANY_CHECK was defined at build time, 1.240 ++ * which is not used in the kernel. Unsupported 1.241 ++ * check types return XZ_OPTIONS_ERROR if 1.242 ++ * XZ_DEC_ANY_CHECK was not defined at build time. 1.243 ++ * @XZ_MEM_ERROR: Allocating memory failed. This return code is 1.244 ++ * possible only if the decoder was initialized 1.245 ++ * with XZ_DYNALLOC. The amount of memory that was 1.246 ++ * tried to be allocated was no more than the 1.247 ++ * dict_max argument given to xz_dec_init(). 1.248 ++ * @XZ_MEMLIMIT_ERROR: A bigger LZMA2 dictionary would be needed than 1.249 ++ * allowed by the dict_max argument given to 1.250 ++ * xz_dec_init(). This return value is possible 1.251 ++ * only in multi-call mode (XZ_PREALLOC or 1.252 ++ * XZ_DYNALLOC); the single-call mode (XZ_SINGLE) 1.253 ++ * ignores the dict_max argument. 1.254 ++ * @XZ_FORMAT_ERROR: File format was not recognized (wrong magic 1.255 ++ * bytes). 1.256 ++ * @XZ_OPTIONS_ERROR: This implementation doesn't support the requested 1.257 ++ * compression options. In the decoder this means 1.258 ++ * that the header CRC32 matches, but the header 1.259 ++ * itself specifies something that we don't support. 1.260 ++ * @XZ_DATA_ERROR: Compressed data is corrupt. 1.261 ++ * @XZ_BUF_ERROR: Cannot make any progress. Details are slightly 1.262 ++ * different between multi-call and single-call 1.263 ++ * mode; more information below. 1.264 ++ * 1.265 ++ * In multi-call mode, XZ_BUF_ERROR is returned when two consecutive calls 1.266 ++ * to XZ code cannot consume any input and cannot produce any new output. 1.267 ++ * This happens when there is no new input available, or the output buffer 1.268 ++ * is full while at least one output byte is still pending. Assuming your 1.269 ++ * code is not buggy, you can get this error only when decoding a compressed 1.270 ++ * stream that is truncated or otherwise corrupt. 1.271 ++ * 1.272 ++ * In single-call mode, XZ_BUF_ERROR is returned only when the output buffer 1.273 ++ * is too small or the compressed input is corrupt in a way that makes the 1.274 ++ * decoder produce more output than the caller expected. When it is 1.275 ++ * (relatively) clear that the compressed input is truncated, XZ_DATA_ERROR 1.276 ++ * is used instead of XZ_BUF_ERROR. 1.277 ++ */ 1.278 ++enum xz_ret { 1.279 ++ XZ_OK, 1.280 ++ XZ_STREAM_END, 1.281 ++ XZ_UNSUPPORTED_CHECK, 1.282 ++ XZ_MEM_ERROR, 1.283 ++ XZ_MEMLIMIT_ERROR, 1.284 ++ XZ_FORMAT_ERROR, 1.285 ++ XZ_OPTIONS_ERROR, 1.286 ++ XZ_DATA_ERROR, 1.287 ++ XZ_BUF_ERROR 1.288 ++}; 1.289 ++ 1.290 ++/** 1.291 ++ * struct xz_buf - Passing input and output buffers to XZ code 1.292 ++ * @in: Beginning of the input buffer. This may be NULL if and only 1.293 ++ * if in_pos is equal to in_size. 1.294 ++ * @in_pos: Current position in the input buffer. This must not exceed 1.295 ++ * in_size. 1.296 ++ * @in_size: Size of the input buffer 1.297 ++ * @out: Beginning of the output buffer. This may be NULL if and only 1.298 ++ * if out_pos is equal to out_size. 1.299 ++ * @out_pos: Current position in the output buffer. This must not exceed 1.300 ++ * out_size. 1.301 ++ * @out_size: Size of the output buffer 1.302 ++ * 1.303 ++ * Only the contents of the output buffer from out[out_pos] onward, and 1.304 ++ * the variables in_pos and out_pos are modified by the XZ code. 1.305 ++ */ 1.306 ++struct xz_buf { 1.307 ++ const uint8_t *in; 1.308 ++ size_t in_pos; 1.309 ++ size_t in_size; 1.310 ++ 1.311 ++ uint8_t *out; 1.312 ++ size_t out_pos; 1.313 ++ size_t out_size; 1.314 ++}; 1.315 ++ 1.316 ++/** 1.317 ++ * struct xz_dec - Opaque type to hold the XZ decoder state 1.318 ++ */ 1.319 ++struct xz_dec; 1.320 ++ 1.321 ++/** 1.322 ++ * xz_dec_init() - Allocate and initialize a XZ decoder state 1.323 ++ * @mode: Operation mode 1.324 ++ * @dict_max: Maximum size of the LZMA2 dictionary (history buffer) for 1.325 ++ * multi-call decoding. This is ignored in single-call mode 1.326 ++ * (mode == XZ_SINGLE). LZMA2 dictionary is always 2^n bytes 1.327 ++ * or 2^n + 2^(n-1) bytes (the latter sizes are less common 1.328 ++ * in practice), so other values for dict_max don't make sense. 1.329 ++ * In the kernel, dictionary sizes of 64 KiB, 128 KiB, 256 KiB, 1.330 ++ * 512 KiB, and 1 MiB are probably the only reasonable values, 1.331 ++ * except for kernel and initramfs images where a bigger 1.332 ++ * dictionary can be fine and useful. 1.333 ++ * 1.334 ++ * Single-call mode (XZ_SINGLE): xz_dec_run() decodes the whole stream at 1.335 ++ * once. The caller must provide enough output space or the decoding will 1.336 ++ * fail. The output space is used as the dictionary buffer, which is why 1.337 ++ * there is no need to allocate the dictionary as part of the decoder's 1.338 ++ * internal state. 1.339 ++ * 1.340 ++ * Because the output buffer is used as the workspace, streams encoded using 1.341 ++ * a big dictionary are not a problem in single-call mode. It is enough that 1.342 ++ * the output buffer is big enough to hold the actual uncompressed data; it 1.343 ++ * can be smaller than the dictionary size stored in the stream headers. 1.344 ++ * 1.345 ++ * Multi-call mode with preallocated dictionary (XZ_PREALLOC): dict_max bytes 1.346 ++ * of memory is preallocated for the LZMA2 dictionary. This way there is no 1.347 ++ * risk that xz_dec_run() could run out of memory, since xz_dec_run() will 1.348 ++ * never allocate any memory. Instead, if the preallocated dictionary is too 1.349 ++ * small for decoding the given input stream, xz_dec_run() will return 1.350 ++ * XZ_MEMLIMIT_ERROR. Thus, it is important to know what kind of data will be 1.351 ++ * decoded to avoid allocating excessive amount of memory for the dictionary. 1.352 ++ * 1.353 ++ * Multi-call mode with dynamically allocated dictionary (XZ_DYNALLOC): 1.354 ++ * dict_max specifies the maximum allowed dictionary size that xz_dec_run() 1.355 ++ * may allocate once it has parsed the dictionary size from the stream 1.356 ++ * headers. This way excessive allocations can be avoided while still 1.357 ++ * limiting the maximum memory usage to a sane value to prevent running the 1.358 ++ * system out of memory when decompressing streams from untrusted sources. 1.359 ++ * 1.360 ++ * On success, xz_dec_init() returns a pointer to struct xz_dec, which is 1.361 ++ * ready to be used with xz_dec_run(). If memory allocation fails, 1.362 ++ * xz_dec_init() returns NULL. 1.363 ++ */ 1.364 ++XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max); 1.365 ++ 1.366 ++/** 1.367 ++ * xz_dec_run() - Run the XZ decoder 1.368 ++ * @s: Decoder state allocated using xz_dec_init() 1.369 ++ * @b: Input and output buffers 1.370 ++ * 1.371 ++ * The possible return values depend on build options and operation mode. 1.372 ++ * See enum xz_ret for details. 1.373 ++ * 1.374 ++ * Note that if an error occurs in single-call mode (return value is not 1.375 ++ * XZ_STREAM_END), b->in_pos and b->out_pos are not modified and the 1.376 ++ * contents of the output buffer from b->out[b->out_pos] onward are 1.377 ++ * undefined. This is true even after XZ_BUF_ERROR, because with some filter 1.378 ++ * chains, there may be a second pass over the output buffer, and this pass 1.379 ++ * cannot be properly done if the output buffer is truncated. Thus, you 1.380 ++ * cannot give the single-call decoder a too small buffer and then expect to 1.381 ++ * get that amount valid data from the beginning of the stream. You must use 1.382 ++ * the multi-call decoder if you don't want to uncompress the whole stream. 1.383 ++ */ 1.384 ++XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b); 1.385 ++ 1.386 ++/** 1.387 ++ * xz_dec_reset() - Reset an already allocated decoder state 1.388 ++ * @s: Decoder state allocated using xz_dec_init() 1.389 ++ * 1.390 ++ * This function can be used to reset the multi-call decoder state without 1.391 ++ * freeing and reallocating memory with xz_dec_end() and xz_dec_init(). 1.392 ++ * 1.393 ++ * In single-call mode, xz_dec_reset() is always called in the beginning of 1.394 ++ * xz_dec_run(). Thus, explicit call to xz_dec_reset() is useful only in 1.395 ++ * multi-call mode. 1.396 ++ */ 1.397 ++XZ_EXTERN void xz_dec_reset(struct xz_dec *s); 1.398 ++ 1.399 ++/** 1.400 ++ * xz_dec_end() - Free the memory allocated for the decoder state 1.401 ++ * @s: Decoder state allocated using xz_dec_init(). If s is NULL, 1.402 ++ * this function does nothing. 1.403 ++ */ 1.404 ++XZ_EXTERN void xz_dec_end(struct xz_dec *s); 1.405 ++ 1.406 ++/* 1.407 ++ * Standalone build (userspace build or in-kernel build for boot time use) 1.408 ++ * needs a CRC32 implementation. For normal in-kernel use, kernel's own 1.409 ++ * CRC32 module is used instead, and users of this module don't need to 1.410 ++ * care about the functions below. 1.411 ++ */ 1.412 ++#ifndef XZ_INTERNAL_CRC32 1.413 ++# ifdef __KERNEL__ 1.414 ++# define XZ_INTERNAL_CRC32 0 1.415 ++# else 1.416 ++# define XZ_INTERNAL_CRC32 1 1.417 ++# endif 1.418 ++#endif 1.419 ++ 1.420 ++#if XZ_INTERNAL_CRC32 1.421 ++/* 1.422 ++ * This must be called before any other xz_* function to initialize 1.423 ++ * the CRC32 lookup table. 1.424 ++ */ 1.425 ++XZ_EXTERN void xz_crc32_init(void); 1.426 ++ 1.427 ++/* 1.428 ++ * Update CRC32 value using the polynomial from IEEE-802.3. To start a new 1.429 ++ * calculation, the third argument must be zero. To continue the calculation, 1.430 ++ * the previously returned value is passed as the third argument. 1.431 ++ */ 1.432 ++XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc); 1.433 ++#endif 1.434 ++#endif 1.435 +diff --git a/lib/Kconfig b/lib/Kconfig 1.436 +index fa9bf2c..6090314 100644 1.437 +--- a/lib/Kconfig 1.438 ++++ b/lib/Kconfig 1.439 +@@ -106,6 +106,8 @@ config LZO_COMPRESS 1.440 + config LZO_DECOMPRESS 1.441 + tristate 1.442 + 1.443 ++source "lib/xz/Kconfig" 1.444 ++ 1.445 + # 1.446 + # These all provide a common interface (hence the apparent duplication with 1.447 + # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.) 1.448 +diff --git a/lib/Makefile b/lib/Makefile 1.449 +index e6a3763..f2f98dd 100644 1.450 +--- a/lib/Makefile 1.451 ++++ b/lib/Makefile 1.452 +@@ -69,6 +69,7 @@ obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ 1.453 + obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ 1.454 + obj-$(CONFIG_LZO_COMPRESS) += lzo/ 1.455 + obj-$(CONFIG_LZO_DECOMPRESS) += lzo/ 1.456 ++obj-$(CONFIG_XZ_DEC) += xz/ 1.457 + obj-$(CONFIG_RAID6_PQ) += raid6/ 1.458 + 1.459 + lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o 1.460 +diff --git a/lib/xz/Kconfig b/lib/xz/Kconfig 1.461 +new file mode 100644 1.462 +index 0000000..e3b6e18 1.463 +--- /dev/null 1.464 ++++ b/lib/xz/Kconfig 1.465 +@@ -0,0 +1,59 @@ 1.466 ++config XZ_DEC 1.467 ++ tristate "XZ decompression support" 1.468 ++ select CRC32 1.469 ++ help 1.470 ++ LZMA2 compression algorithm and BCJ filters are supported using 1.471 ++ the .xz file format as the container. For integrity checking, 1.472 ++ CRC32 is supported. See Documentation/xz.txt for more information. 1.473 ++ 1.474 ++config XZ_DEC_X86 1.475 ++ bool "x86 BCJ filter decoder" if EMBEDDED 1.476 ++ default y 1.477 ++ depends on XZ_DEC 1.478 ++ select XZ_DEC_BCJ 1.479 ++ 1.480 ++config XZ_DEC_POWERPC 1.481 ++ bool "PowerPC BCJ filter decoder" if EMBEDDED 1.482 ++ default y 1.483 ++ depends on XZ_DEC 1.484 ++ select XZ_DEC_BCJ 1.485 ++ 1.486 ++config XZ_DEC_IA64 1.487 ++ bool "IA-64 BCJ filter decoder" if EMBEDDED 1.488 ++ default y 1.489 ++ depends on XZ_DEC 1.490 ++ select XZ_DEC_BCJ 1.491 ++ 1.492 ++config XZ_DEC_ARM 1.493 ++ bool "ARM BCJ filter decoder" if EMBEDDED 1.494 ++ default y 1.495 ++ depends on XZ_DEC 1.496 ++ select XZ_DEC_BCJ 1.497 ++ 1.498 ++config XZ_DEC_ARMTHUMB 1.499 ++ bool "ARM-Thumb BCJ filter decoder" if EMBEDDED 1.500 ++ default y 1.501 ++ depends on XZ_DEC 1.502 ++ select XZ_DEC_BCJ 1.503 ++ 1.504 ++config XZ_DEC_SPARC 1.505 ++ bool "SPARC BCJ filter decoder" if EMBEDDED 1.506 ++ default y 1.507 ++ depends on XZ_DEC 1.508 ++ select XZ_DEC_BCJ 1.509 ++ 1.510 ++config XZ_DEC_BCJ 1.511 ++ bool 1.512 ++ default n 1.513 ++ 1.514 ++config XZ_DEC_TEST 1.515 ++ tristate "XZ decompressor tester" 1.516 ++ default n 1.517 ++ depends on XZ_DEC 1.518 ++ help 1.519 ++ This allows passing .xz files to the in-kernel XZ decoder via 1.520 ++ a character special file. It calculates CRC32 of the decompressed 1.521 ++ data and writes diagnostics to the system log. 1.522 ++ 1.523 ++ Unless you are developing the XZ decoder, you don't need this 1.524 ++ and should say N. 1.525 +diff --git a/lib/xz/Makefile b/lib/xz/Makefile 1.526 +new file mode 100644 1.527 +index 0000000..a7fa769 1.528 +--- /dev/null 1.529 ++++ b/lib/xz/Makefile 1.530 +@@ -0,0 +1,5 @@ 1.531 ++obj-$(CONFIG_XZ_DEC) += xz_dec.o 1.532 ++xz_dec-y := xz_dec_syms.o xz_dec_stream.o xz_dec_lzma2.o 1.533 ++xz_dec-$(CONFIG_XZ_DEC_BCJ) += xz_dec_bcj.o 1.534 ++ 1.535 ++obj-$(CONFIG_XZ_DEC_TEST) += xz_dec_test.o 1.536 +diff --git a/lib/xz/xz_crc32.c b/lib/xz/xz_crc32.c 1.537 +new file mode 100644 1.538 +index 0000000..34532d1 1.539 +--- /dev/null 1.540 ++++ b/lib/xz/xz_crc32.c 1.541 +@@ -0,0 +1,59 @@ 1.542 ++/* 1.543 ++ * CRC32 using the polynomial from IEEE-802.3 1.544 ++ * 1.545 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 1.546 ++ * Igor Pavlov <http://7-zip.org/> 1.547 ++ * 1.548 ++ * This file has been put into the public domain. 1.549 ++ * You can do whatever you want with this file. 1.550 ++ */ 1.551 ++ 1.552 ++/* 1.553 ++ * This is not the fastest implementation, but it is pretty compact. 1.554 ++ * The fastest versions of xz_crc32() on modern CPUs without hardware 1.555 ++ * accelerated CRC instruction are 3-5 times as fast as this version, 1.556 ++ * but they are bigger and use more memory for the lookup table. 1.557 ++ */ 1.558 ++ 1.559 ++#include "xz_private.h" 1.560 ++ 1.561 ++/* 1.562 ++ * STATIC_RW_DATA is used in the pre-boot environment on some architectures. 1.563 ++ * See <linux/decompress/mm.h> for details. 1.564 ++ */ 1.565 ++#ifndef STATIC_RW_DATA 1.566 ++# define STATIC_RW_DATA static 1.567 ++#endif 1.568 ++ 1.569 ++STATIC_RW_DATA uint32_t xz_crc32_table[256]; 1.570 ++ 1.571 ++XZ_EXTERN void xz_crc32_init(void) 1.572 ++{ 1.573 ++ const uint32_t poly = 0xEDB88320; 1.574 ++ 1.575 ++ uint32_t i; 1.576 ++ uint32_t j; 1.577 ++ uint32_t r; 1.578 ++ 1.579 ++ for (i = 0; i < 256; ++i) { 1.580 ++ r = i; 1.581 ++ for (j = 0; j < 8; ++j) 1.582 ++ r = (r >> 1) ^ (poly & ~((r & 1) - 1)); 1.583 ++ 1.584 ++ xz_crc32_table[i] = r; 1.585 ++ } 1.586 ++ 1.587 ++ return; 1.588 ++} 1.589 ++ 1.590 ++XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc) 1.591 ++{ 1.592 ++ crc = ~crc; 1.593 ++ 1.594 ++ while (size != 0) { 1.595 ++ crc = xz_crc32_table[*buf++ ^ (crc & 0xFF)] ^ (crc >> 8); 1.596 ++ --size; 1.597 ++ } 1.598 ++ 1.599 ++ return ~crc; 1.600 ++} 1.601 +diff --git a/lib/xz/xz_dec_bcj.c b/lib/xz/xz_dec_bcj.c 1.602 +new file mode 100644 1.603 +index 0000000..e51e255 1.604 +--- /dev/null 1.605 ++++ b/lib/xz/xz_dec_bcj.c 1.606 +@@ -0,0 +1,561 @@ 1.607 ++/* 1.608 ++ * Branch/Call/Jump (BCJ) filter decoders 1.609 ++ * 1.610 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 1.611 ++ * Igor Pavlov <http://7-zip.org/> 1.612 ++ * 1.613 ++ * This file has been put into the public domain. 1.614 ++ * You can do whatever you want with this file. 1.615 ++ */ 1.616 ++ 1.617 ++#include "xz_private.h" 1.618 ++ 1.619 ++/* 1.620 ++ * The rest of the file is inside this ifdef. It makes things a little more 1.621 ++ * convenient when building without support for any BCJ filters. 1.622 ++ */ 1.623 ++#ifdef XZ_DEC_BCJ 1.624 ++ 1.625 ++struct xz_dec_bcj { 1.626 ++ /* Type of the BCJ filter being used */ 1.627 ++ enum { 1.628 ++ BCJ_X86 = 4, /* x86 or x86-64 */ 1.629 ++ BCJ_POWERPC = 5, /* Big endian only */ 1.630 ++ BCJ_IA64 = 6, /* Big or little endian */ 1.631 ++ BCJ_ARM = 7, /* Little endian only */ 1.632 ++ BCJ_ARMTHUMB = 8, /* Little endian only */ 1.633 ++ BCJ_SPARC = 9 /* Big or little endian */ 1.634 ++ } type; 1.635 ++ 1.636 ++ /* 1.637 ++ * Return value of the next filter in the chain. We need to preserve 1.638 ++ * this information across calls, because we must not call the next 1.639 ++ * filter anymore once it has returned XZ_STREAM_END. 1.640 ++ */ 1.641 ++ enum xz_ret ret; 1.642 ++ 1.643 ++ /* True if we are operating in single-call mode. */ 1.644 ++ bool single_call; 1.645 ++ 1.646 ++ /* 1.647 ++ * Absolute position relative to the beginning of the uncompressed 1.648 ++ * data (in a single .xz Block). We care only about the lowest 32 1.649 ++ * bits so this doesn't need to be uint64_t even with big files. 1.650 ++ */ 1.651 ++ uint32_t pos; 1.652 ++ 1.653 ++ /* x86 filter state */ 1.654 ++ uint32_t x86_prev_mask; 1.655 ++ 1.656 ++ /* Temporary space to hold the variables from struct xz_buf */ 1.657 ++ uint8_t *out; 1.658 ++ size_t out_pos; 1.659 ++ size_t out_size; 1.660 ++ 1.661 ++ struct { 1.662 ++ /* Amount of already filtered data in the beginning of buf */ 1.663 ++ size_t filtered; 1.664 ++ 1.665 ++ /* Total amount of data currently stored in buf */ 1.666 ++ size_t size; 1.667 ++ 1.668 ++ /* 1.669 ++ * Buffer to hold a mix of filtered and unfiltered data. This 1.670 ++ * needs to be big enough to hold Alignment + 2 * Look-ahead: 1.671 ++ * 1.672 ++ * Type Alignment Look-ahead 1.673 ++ * x86 1 4 1.674 ++ * PowerPC 4 0 1.675 ++ * IA-64 16 0 1.676 ++ * ARM 4 0 1.677 ++ * ARM-Thumb 2 2 1.678 ++ * SPARC 4 0 1.679 ++ */ 1.680 ++ uint8_t buf[16]; 1.681 ++ } temp; 1.682 ++}; 1.683 ++ 1.684 ++#ifdef XZ_DEC_X86 1.685 ++/* 1.686 ++ * This is used to test the most significant byte of a memory address 1.687 ++ * in an x86 instruction. 1.688 ++ */ 1.689 ++static inline int bcj_x86_test_msbyte(uint8_t b) 1.690 ++{ 1.691 ++ return b == 0x00 || b == 0xFF; 1.692 ++} 1.693 ++ 1.694 ++static size_t bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.695 ++{ 1.696 ++ static const bool mask_to_allowed_status[8] 1.697 ++ = { true, true, true, false, true, false, false, false }; 1.698 ++ 1.699 ++ static const uint8_t mask_to_bit_num[8] = { 0, 1, 2, 2, 3, 3, 3, 3 }; 1.700 ++ 1.701 ++ size_t i; 1.702 ++ size_t prev_pos = (size_t)-1; 1.703 ++ uint32_t prev_mask = s->x86_prev_mask; 1.704 ++ uint32_t src; 1.705 ++ uint32_t dest; 1.706 ++ uint32_t j; 1.707 ++ uint8_t b; 1.708 ++ 1.709 ++ if (size <= 4) 1.710 ++ return 0; 1.711 ++ 1.712 ++ size -= 4; 1.713 ++ for (i = 0; i < size; ++i) { 1.714 ++ if ((buf[i] & 0xFE) != 0xE8) 1.715 ++ continue; 1.716 ++ 1.717 ++ prev_pos = i - prev_pos; 1.718 ++ if (prev_pos > 3) { 1.719 ++ prev_mask = 0; 1.720 ++ } else { 1.721 ++ prev_mask = (prev_mask << (prev_pos - 1)) & 7; 1.722 ++ if (prev_mask != 0) { 1.723 ++ b = buf[i + 4 - mask_to_bit_num[prev_mask]]; 1.724 ++ if (!mask_to_allowed_status[prev_mask] 1.725 ++ || bcj_x86_test_msbyte(b)) { 1.726 ++ prev_pos = i; 1.727 ++ prev_mask = (prev_mask << 1) | 1; 1.728 ++ continue; 1.729 ++ } 1.730 ++ } 1.731 ++ } 1.732 ++ 1.733 ++ prev_pos = i; 1.734 ++ 1.735 ++ if (bcj_x86_test_msbyte(buf[i + 4])) { 1.736 ++ src = get_unaligned_le32(buf + i + 1); 1.737 ++ while (true) { 1.738 ++ dest = src - (s->pos + (uint32_t)i + 5); 1.739 ++ if (prev_mask == 0) 1.740 ++ break; 1.741 ++ 1.742 ++ j = mask_to_bit_num[prev_mask] * 8; 1.743 ++ b = (uint8_t)(dest >> (24 - j)); 1.744 ++ if (!bcj_x86_test_msbyte(b)) 1.745 ++ break; 1.746 ++ 1.747 ++ src = dest ^ (((uint32_t)1 << (32 - j)) - 1); 1.748 ++ } 1.749 ++ 1.750 ++ dest &= 0x01FFFFFF; 1.751 ++ dest |= (uint32_t)0 - (dest & 0x01000000); 1.752 ++ put_unaligned_le32(dest, buf + i + 1); 1.753 ++ i += 4; 1.754 ++ } else { 1.755 ++ prev_mask = (prev_mask << 1) | 1; 1.756 ++ } 1.757 ++ } 1.758 ++ 1.759 ++ prev_pos = i - prev_pos; 1.760 ++ s->x86_prev_mask = prev_pos > 3 ? 0 : prev_mask << (prev_pos - 1); 1.761 ++ return i; 1.762 ++} 1.763 ++#endif 1.764 ++ 1.765 ++#ifdef XZ_DEC_POWERPC 1.766 ++static size_t bcj_powerpc(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.767 ++{ 1.768 ++ size_t i; 1.769 ++ uint32_t instr; 1.770 ++ 1.771 ++ for (i = 0; i + 4 <= size; i += 4) { 1.772 ++ instr = get_unaligned_be32(buf + i); 1.773 ++ if ((instr & 0xFC000003) == 0x48000001) { 1.774 ++ instr &= 0x03FFFFFC; 1.775 ++ instr -= s->pos + (uint32_t)i; 1.776 ++ instr &= 0x03FFFFFC; 1.777 ++ instr |= 0x48000001; 1.778 ++ put_unaligned_be32(instr, buf + i); 1.779 ++ } 1.780 ++ } 1.781 ++ 1.782 ++ return i; 1.783 ++} 1.784 ++#endif 1.785 ++ 1.786 ++#ifdef XZ_DEC_IA64 1.787 ++static size_t bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.788 ++{ 1.789 ++ static const uint8_t branch_table[32] = { 1.790 ++ 0, 0, 0, 0, 0, 0, 0, 0, 1.791 ++ 0, 0, 0, 0, 0, 0, 0, 0, 1.792 ++ 4, 4, 6, 6, 0, 0, 7, 7, 1.793 ++ 4, 4, 0, 0, 4, 4, 0, 0 1.794 ++ }; 1.795 ++ 1.796 ++ /* 1.797 ++ * The local variables take a little bit stack space, but it's less 1.798 ++ * than what LZMA2 decoder takes, so it doesn't make sense to reduce 1.799 ++ * stack usage here without doing that for the LZMA2 decoder too. 1.800 ++ */ 1.801 ++ 1.802 ++ /* Loop counters */ 1.803 ++ size_t i; 1.804 ++ size_t j; 1.805 ++ 1.806 ++ /* Instruction slot (0, 1, or 2) in the 128-bit instruction word */ 1.807 ++ uint32_t slot; 1.808 ++ 1.809 ++ /* Bitwise offset of the instruction indicated by slot */ 1.810 ++ uint32_t bit_pos; 1.811 ++ 1.812 ++ /* bit_pos split into byte and bit parts */ 1.813 ++ uint32_t byte_pos; 1.814 ++ uint32_t bit_res; 1.815 ++ 1.816 ++ /* Address part of an instruction */ 1.817 ++ uint32_t addr; 1.818 ++ 1.819 ++ /* Mask used to detect which instructions to convert */ 1.820 ++ uint32_t mask; 1.821 ++ 1.822 ++ /* 41-bit instruction stored somewhere in the lowest 48 bits */ 1.823 ++ uint64_t instr; 1.824 ++ 1.825 ++ /* Instruction normalized with bit_res for easier manipulation */ 1.826 ++ uint64_t norm; 1.827 ++ 1.828 ++ for (i = 0; i + 16 <= size; i += 16) { 1.829 ++ mask = branch_table[buf[i] & 0x1F]; 1.830 ++ for (slot = 0, bit_pos = 5; slot < 3; ++slot, bit_pos += 41) { 1.831 ++ if (((mask >> slot) & 1) == 0) 1.832 ++ continue; 1.833 ++ 1.834 ++ byte_pos = bit_pos >> 3; 1.835 ++ bit_res = bit_pos & 7; 1.836 ++ instr = 0; 1.837 ++ for (j = 0; j < 6; ++j) 1.838 ++ instr |= (uint64_t)(buf[i + j + byte_pos]) 1.839 ++ << (8 * j); 1.840 ++ 1.841 ++ norm = instr >> bit_res; 1.842 ++ 1.843 ++ if (((norm >> 37) & 0x0F) == 0x05 1.844 ++ && ((norm >> 9) & 0x07) == 0) { 1.845 ++ addr = (norm >> 13) & 0x0FFFFF; 1.846 ++ addr |= ((uint32_t)(norm >> 36) & 1) << 20; 1.847 ++ addr <<= 4; 1.848 ++ addr -= s->pos + (uint32_t)i; 1.849 ++ addr >>= 4; 1.850 ++ 1.851 ++ norm &= ~((uint64_t)0x8FFFFF << 13); 1.852 ++ norm |= (uint64_t)(addr & 0x0FFFFF) << 13; 1.853 ++ norm |= (uint64_t)(addr & 0x100000) 1.854 ++ << (36 - 20); 1.855 ++ 1.856 ++ instr &= (1 << bit_res) - 1; 1.857 ++ instr |= norm << bit_res; 1.858 ++ 1.859 ++ for (j = 0; j < 6; j++) 1.860 ++ buf[i + j + byte_pos] 1.861 ++ = (uint8_t)(instr >> (8 * j)); 1.862 ++ } 1.863 ++ } 1.864 ++ } 1.865 ++ 1.866 ++ return i; 1.867 ++} 1.868 ++#endif 1.869 ++ 1.870 ++#ifdef XZ_DEC_ARM 1.871 ++static size_t bcj_arm(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.872 ++{ 1.873 ++ size_t i; 1.874 ++ uint32_t addr; 1.875 ++ 1.876 ++ for (i = 0; i + 4 <= size; i += 4) { 1.877 ++ if (buf[i + 3] == 0xEB) { 1.878 ++ addr = (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8) 1.879 ++ | ((uint32_t)buf[i + 2] << 16); 1.880 ++ addr <<= 2; 1.881 ++ addr -= s->pos + (uint32_t)i + 8; 1.882 ++ addr >>= 2; 1.883 ++ buf[i] = (uint8_t)addr; 1.884 ++ buf[i + 1] = (uint8_t)(addr >> 8); 1.885 ++ buf[i + 2] = (uint8_t)(addr >> 16); 1.886 ++ } 1.887 ++ } 1.888 ++ 1.889 ++ return i; 1.890 ++} 1.891 ++#endif 1.892 ++ 1.893 ++#ifdef XZ_DEC_ARMTHUMB 1.894 ++static size_t bcj_armthumb(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.895 ++{ 1.896 ++ size_t i; 1.897 ++ uint32_t addr; 1.898 ++ 1.899 ++ for (i = 0; i + 4 <= size; i += 2) { 1.900 ++ if ((buf[i + 1] & 0xF8) == 0xF0 1.901 ++ && (buf[i + 3] & 0xF8) == 0xF8) { 1.902 ++ addr = (((uint32_t)buf[i + 1] & 0x07) << 19) 1.903 ++ | ((uint32_t)buf[i] << 11) 1.904 ++ | (((uint32_t)buf[i + 3] & 0x07) << 8) 1.905 ++ | (uint32_t)buf[i + 2]; 1.906 ++ addr <<= 1; 1.907 ++ addr -= s->pos + (uint32_t)i + 4; 1.908 ++ addr >>= 1; 1.909 ++ buf[i + 1] = (uint8_t)(0xF0 | ((addr >> 19) & 0x07)); 1.910 ++ buf[i] = (uint8_t)(addr >> 11); 1.911 ++ buf[i + 3] = (uint8_t)(0xF8 | ((addr >> 8) & 0x07)); 1.912 ++ buf[i + 2] = (uint8_t)addr; 1.913 ++ i += 2; 1.914 ++ } 1.915 ++ } 1.916 ++ 1.917 ++ return i; 1.918 ++} 1.919 ++#endif 1.920 ++ 1.921 ++#ifdef XZ_DEC_SPARC 1.922 ++static size_t bcj_sparc(struct xz_dec_bcj *s, uint8_t *buf, size_t size) 1.923 ++{ 1.924 ++ size_t i; 1.925 ++ uint32_t instr; 1.926 ++ 1.927 ++ for (i = 0; i + 4 <= size; i += 4) { 1.928 ++ instr = get_unaligned_be32(buf + i); 1.929 ++ if ((instr >> 22) == 0x100 || (instr >> 22) == 0x1FF) { 1.930 ++ instr <<= 2; 1.931 ++ instr -= s->pos + (uint32_t)i; 1.932 ++ instr >>= 2; 1.933 ++ instr = ((uint32_t)0x40000000 - (instr & 0x400000)) 1.934 ++ | 0x40000000 | (instr & 0x3FFFFF); 1.935 ++ put_unaligned_be32(instr, buf + i); 1.936 ++ } 1.937 ++ } 1.938 ++ 1.939 ++ return i; 1.940 ++} 1.941 ++#endif 1.942 ++ 1.943 ++/* 1.944 ++ * Apply the selected BCJ filter. Update *pos and s->pos to match the amount 1.945 ++ * of data that got filtered. 1.946 ++ * 1.947 ++ * NOTE: This is implemented as a switch statement to avoid using function 1.948 ++ * pointers, which could be problematic in the kernel boot code, which must 1.949 ++ * avoid pointers to static data (at least on x86). 1.950 ++ */ 1.951 ++static void bcj_apply(struct xz_dec_bcj *s, 1.952 ++ uint8_t *buf, size_t *pos, size_t size) 1.953 ++{ 1.954 ++ size_t filtered; 1.955 ++ 1.956 ++ buf += *pos; 1.957 ++ size -= *pos; 1.958 ++ 1.959 ++ switch (s->type) { 1.960 ++#ifdef XZ_DEC_X86 1.961 ++ case BCJ_X86: 1.962 ++ filtered = bcj_x86(s, buf, size); 1.963 ++ break; 1.964 ++#endif 1.965 ++#ifdef XZ_DEC_POWERPC 1.966 ++ case BCJ_POWERPC: 1.967 ++ filtered = bcj_powerpc(s, buf, size); 1.968 ++ break; 1.969 ++#endif 1.970 ++#ifdef XZ_DEC_IA64 1.971 ++ case BCJ_IA64: 1.972 ++ filtered = bcj_ia64(s, buf, size); 1.973 ++ break; 1.974 ++#endif 1.975 ++#ifdef XZ_DEC_ARM 1.976 ++ case BCJ_ARM: 1.977 ++ filtered = bcj_arm(s, buf, size); 1.978 ++ break; 1.979 ++#endif 1.980 ++#ifdef XZ_DEC_ARMTHUMB 1.981 ++ case BCJ_ARMTHUMB: 1.982 ++ filtered = bcj_armthumb(s, buf, size); 1.983 ++ break; 1.984 ++#endif 1.985 ++#ifdef XZ_DEC_SPARC 1.986 ++ case BCJ_SPARC: 1.987 ++ filtered = bcj_sparc(s, buf, size); 1.988 ++ break; 1.989 ++#endif 1.990 ++ default: 1.991 ++ /* Never reached but silence compiler warnings. */ 1.992 ++ filtered = 0; 1.993 ++ break; 1.994 ++ } 1.995 ++ 1.996 ++ *pos += filtered; 1.997 ++ s->pos += filtered; 1.998 ++} 1.999 ++ 1.1000 ++/* 1.1001 ++ * Flush pending filtered data from temp to the output buffer. 1.1002 ++ * Move the remaining mixture of possibly filtered and unfiltered 1.1003 ++ * data to the beginning of temp. 1.1004 ++ */ 1.1005 ++static void bcj_flush(struct xz_dec_bcj *s, struct xz_buf *b) 1.1006 ++{ 1.1007 ++ size_t copy_size; 1.1008 ++ 1.1009 ++ copy_size = min_t(size_t, s->temp.filtered, b->out_size - b->out_pos); 1.1010 ++ memcpy(b->out + b->out_pos, s->temp.buf, copy_size); 1.1011 ++ b->out_pos += copy_size; 1.1012 ++ 1.1013 ++ s->temp.filtered -= copy_size; 1.1014 ++ s->temp.size -= copy_size; 1.1015 ++ memmove(s->temp.buf, s->temp.buf + copy_size, s->temp.size); 1.1016 ++} 1.1017 ++ 1.1018 ++/* 1.1019 ++ * The BCJ filter functions are primitive in sense that they process the 1.1020 ++ * data in chunks of 1-16 bytes. To hide this issue, this function does 1.1021 ++ * some buffering. 1.1022 ++ */ 1.1023 ++XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, 1.1024 ++ struct xz_dec_lzma2 *lzma2, 1.1025 ++ struct xz_buf *b) 1.1026 ++{ 1.1027 ++ size_t out_start; 1.1028 ++ 1.1029 ++ /* 1.1030 ++ * Flush pending already filtered data to the output buffer. Return 1.1031 ++ * immediatelly if we couldn't flush everything, or if the next 1.1032 ++ * filter in the chain had already returned XZ_STREAM_END. 1.1033 ++ */ 1.1034 ++ if (s->temp.filtered > 0) { 1.1035 ++ bcj_flush(s, b); 1.1036 ++ if (s->temp.filtered > 0) 1.1037 ++ return XZ_OK; 1.1038 ++ 1.1039 ++ if (s->ret == XZ_STREAM_END) 1.1040 ++ return XZ_STREAM_END; 1.1041 ++ } 1.1042 ++ 1.1043 ++ /* 1.1044 ++ * If we have more output space than what is currently pending in 1.1045 ++ * temp, copy the unfiltered data from temp to the output buffer 1.1046 ++ * and try to fill the output buffer by decoding more data from the 1.1047 ++ * next filter in the chain. Apply the BCJ filter on the new data 1.1048 ++ * in the output buffer. If everything cannot be filtered, copy it 1.1049 ++ * to temp and rewind the output buffer position accordingly. 1.1050 ++ */ 1.1051 ++ if (s->temp.size < b->out_size - b->out_pos) { 1.1052 ++ out_start = b->out_pos; 1.1053 ++ memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size); 1.1054 ++ b->out_pos += s->temp.size; 1.1055 ++ 1.1056 ++ s->ret = xz_dec_lzma2_run(lzma2, b); 1.1057 ++ if (s->ret != XZ_STREAM_END 1.1058 ++ && (s->ret != XZ_OK || s->single_call)) 1.1059 ++ return s->ret; 1.1060 ++ 1.1061 ++ bcj_apply(s, b->out, &out_start, b->out_pos); 1.1062 ++ 1.1063 ++ /* 1.1064 ++ * As an exception, if the next filter returned XZ_STREAM_END, 1.1065 ++ * we can do that too, since the last few bytes that remain 1.1066 ++ * unfiltered are meant to remain unfiltered. 1.1067 ++ */ 1.1068 ++ if (s->ret == XZ_STREAM_END) 1.1069 ++ return XZ_STREAM_END; 1.1070 ++ 1.1071 ++ s->temp.size = b->out_pos - out_start; 1.1072 ++ b->out_pos -= s->temp.size; 1.1073 ++ memcpy(s->temp.buf, b->out + b->out_pos, s->temp.size); 1.1074 ++ } 1.1075 ++ 1.1076 ++ /* 1.1077 ++ * If we have unfiltered data in temp, try to fill by decoding more 1.1078 ++ * data from the next filter. Apply the BCJ filter on temp. Then we 1.1079 ++ * hopefully can fill the actual output buffer by copying filtered 1.1080 ++ * data from temp. A mix of filtered and unfiltered data may be left 1.1081 ++ * in temp; it will be taken care on the next call to this function. 1.1082 ++ */ 1.1083 ++ if (s->temp.size > 0) { 1.1084 ++ /* Make b->out{,_pos,_size} temporarily point to s->temp. */ 1.1085 ++ s->out = b->out; 1.1086 ++ s->out_pos = b->out_pos; 1.1087 ++ s->out_size = b->out_size; 1.1088 ++ b->out = s->temp.buf; 1.1089 ++ b->out_pos = s->temp.size; 1.1090 ++ b->out_size = sizeof(s->temp.buf); 1.1091 ++ 1.1092 ++ s->ret = xz_dec_lzma2_run(lzma2, b); 1.1093 ++ 1.1094 ++ s->temp.size = b->out_pos; 1.1095 ++ b->out = s->out; 1.1096 ++ b->out_pos = s->out_pos; 1.1097 ++ b->out_size = s->out_size; 1.1098 ++ 1.1099 ++ if (s->ret != XZ_OK && s->ret != XZ_STREAM_END) 1.1100 ++ return s->ret; 1.1101 ++ 1.1102 ++ bcj_apply(s, s->temp.buf, &s->temp.filtered, s->temp.size); 1.1103 ++ 1.1104 ++ /* 1.1105 ++ * If the next filter returned XZ_STREAM_END, we mark that 1.1106 ++ * everything is filtered, since the last unfiltered bytes 1.1107 ++ * of the stream are meant to be left as is. 1.1108 ++ */ 1.1109 ++ if (s->ret == XZ_STREAM_END) 1.1110 ++ s->temp.filtered = s->temp.size; 1.1111 ++ 1.1112 ++ bcj_flush(s, b); 1.1113 ++ if (s->temp.filtered > 0) 1.1114 ++ return XZ_OK; 1.1115 ++ } 1.1116 ++ 1.1117 ++ return s->ret; 1.1118 ++} 1.1119 ++ 1.1120 ++XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call) 1.1121 ++{ 1.1122 ++ struct xz_dec_bcj *s = kmalloc(sizeof(*s), GFP_KERNEL); 1.1123 ++ if (s != NULL) 1.1124 ++ s->single_call = single_call; 1.1125 ++ 1.1126 ++ return s; 1.1127 ++} 1.1128 ++ 1.1129 ++XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id) 1.1130 ++{ 1.1131 ++ switch (id) { 1.1132 ++#ifdef XZ_DEC_X86 1.1133 ++ case BCJ_X86: 1.1134 ++#endif 1.1135 ++#ifdef XZ_DEC_POWERPC 1.1136 ++ case BCJ_POWERPC: 1.1137 ++#endif 1.1138 ++#ifdef XZ_DEC_IA64 1.1139 ++ case BCJ_IA64: 1.1140 ++#endif 1.1141 ++#ifdef XZ_DEC_ARM 1.1142 ++ case BCJ_ARM: 1.1143 ++#endif 1.1144 ++#ifdef XZ_DEC_ARMTHUMB 1.1145 ++ case BCJ_ARMTHUMB: 1.1146 ++#endif 1.1147 ++#ifdef XZ_DEC_SPARC 1.1148 ++ case BCJ_SPARC: 1.1149 ++#endif 1.1150 ++ break; 1.1151 ++ 1.1152 ++ default: 1.1153 ++ /* Unsupported Filter ID */ 1.1154 ++ return XZ_OPTIONS_ERROR; 1.1155 ++ } 1.1156 ++ 1.1157 ++ s->type = id; 1.1158 ++ s->ret = XZ_OK; 1.1159 ++ s->pos = 0; 1.1160 ++ s->x86_prev_mask = 0; 1.1161 ++ s->temp.filtered = 0; 1.1162 ++ s->temp.size = 0; 1.1163 ++ 1.1164 ++ return XZ_OK; 1.1165 ++} 1.1166 ++ 1.1167 ++#endif 1.1168 +diff --git a/lib/xz/xz_dec_lzma2.c b/lib/xz/xz_dec_lzma2.c 1.1169 +new file mode 100644 1.1170 +index 0000000..ea5fa4f 1.1171 +--- /dev/null 1.1172 ++++ b/lib/xz/xz_dec_lzma2.c 1.1173 +@@ -0,0 +1,1171 @@ 1.1174 ++/* 1.1175 ++ * LZMA2 decoder 1.1176 ++ * 1.1177 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 1.1178 ++ * Igor Pavlov <http://7-zip.org/> 1.1179 ++ * 1.1180 ++ * This file has been put into the public domain. 1.1181 ++ * You can do whatever you want with this file. 1.1182 ++ */ 1.1183 ++ 1.1184 ++#include "xz_private.h" 1.1185 ++#include "xz_lzma2.h" 1.1186 ++ 1.1187 ++/* 1.1188 ++ * Range decoder initialization eats the first five bytes of each LZMA chunk. 1.1189 ++ */ 1.1190 ++#define RC_INIT_BYTES 5 1.1191 ++ 1.1192 ++/* 1.1193 ++ * Minimum number of usable input buffer to safely decode one LZMA symbol. 1.1194 ++ * The worst case is that we decode 22 bits using probabilities and 26 1.1195 ++ * direct bits. This may decode at maximum of 20 bytes of input. However, 1.1196 ++ * lzma_main() does an extra normalization before returning, thus we 1.1197 ++ * need to put 21 here. 1.1198 ++ */ 1.1199 ++#define LZMA_IN_REQUIRED 21 1.1200 ++ 1.1201 ++/* 1.1202 ++ * Dictionary (history buffer) 1.1203 ++ * 1.1204 ++ * These are always true: 1.1205 ++ * start <= pos <= full <= end 1.1206 ++ * pos <= limit <= end 1.1207 ++ * 1.1208 ++ * In multi-call mode, also these are true: 1.1209 ++ * end == size 1.1210 ++ * size <= size_max 1.1211 ++ * allocated <= size 1.1212 ++ * 1.1213 ++ * Most of these variables are size_t to support single-call mode, 1.1214 ++ * in which the dictionary variables address the actual output 1.1215 ++ * buffer directly. 1.1216 ++ */ 1.1217 ++struct dictionary { 1.1218 ++ /* Beginning of the history buffer */ 1.1219 ++ uint8_t *buf; 1.1220 ++ 1.1221 ++ /* Old position in buf (before decoding more data) */ 1.1222 ++ size_t start; 1.1223 ++ 1.1224 ++ /* Position in buf */ 1.1225 ++ size_t pos; 1.1226 ++ 1.1227 ++ /* 1.1228 ++ * How full dictionary is. This is used to detect corrupt input that 1.1229 ++ * would read beyond the beginning of the uncompressed stream. 1.1230 ++ */ 1.1231 ++ size_t full; 1.1232 ++ 1.1233 ++ /* Write limit; we don't write to buf[limit] or later bytes. */ 1.1234 ++ size_t limit; 1.1235 ++ 1.1236 ++ /* 1.1237 ++ * End of the dictionary buffer. In multi-call mode, this is 1.1238 ++ * the same as the dictionary size. In single-call mode, this 1.1239 ++ * indicates the size of the output buffer. 1.1240 ++ */ 1.1241 ++ size_t end; 1.1242 ++ 1.1243 ++ /* 1.1244 ++ * Size of the dictionary as specified in Block Header. This is used 1.1245 ++ * together with "full" to detect corrupt input that would make us 1.1246 ++ * read beyond the beginning of the uncompressed stream. 1.1247 ++ */ 1.1248 ++ uint32_t size; 1.1249 ++ 1.1250 ++ /* 1.1251 ++ * Maximum allowed dictionary size in multi-call mode. 1.1252 ++ * This is ignored in single-call mode. 1.1253 ++ */ 1.1254 ++ uint32_t size_max; 1.1255 ++ 1.1256 ++ /* 1.1257 ++ * Amount of memory currently allocated for the dictionary. 1.1258 ++ * This is used only with XZ_DYNALLOC. (With XZ_PREALLOC, 1.1259 ++ * size_max is always the same as the allocated size.) 1.1260 ++ */ 1.1261 ++ uint32_t allocated; 1.1262 ++ 1.1263 ++ /* Operation mode */ 1.1264 ++ enum xz_mode mode; 1.1265 ++}; 1.1266 ++ 1.1267 ++/* Range decoder */ 1.1268 ++struct rc_dec { 1.1269 ++ uint32_t range; 1.1270 ++ uint32_t code; 1.1271 ++ 1.1272 ++ /* 1.1273 ++ * Number of initializing bytes remaining to be read 1.1274 ++ * by rc_read_init(). 1.1275 ++ */ 1.1276 ++ uint32_t init_bytes_left; 1.1277 ++ 1.1278 ++ /* 1.1279 ++ * Buffer from which we read our input. It can be either 1.1280 ++ * temp.buf or the caller-provided input buffer. 1.1281 ++ */ 1.1282 ++ const uint8_t *in; 1.1283 ++ size_t in_pos; 1.1284 ++ size_t in_limit; 1.1285 ++}; 1.1286 ++ 1.1287 ++/* Probabilities for a length decoder. */ 1.1288 ++struct lzma_len_dec { 1.1289 ++ /* Probability of match length being at least 10 */ 1.1290 ++ uint16_t choice; 1.1291 ++ 1.1292 ++ /* Probability of match length being at least 18 */ 1.1293 ++ uint16_t choice2; 1.1294 ++ 1.1295 ++ /* Probabilities for match lengths 2-9 */ 1.1296 ++ uint16_t low[POS_STATES_MAX][LEN_LOW_SYMBOLS]; 1.1297 ++ 1.1298 ++ /* Probabilities for match lengths 10-17 */ 1.1299 ++ uint16_t mid[POS_STATES_MAX][LEN_MID_SYMBOLS]; 1.1300 ++ 1.1301 ++ /* Probabilities for match lengths 18-273 */ 1.1302 ++ uint16_t high[LEN_HIGH_SYMBOLS]; 1.1303 ++}; 1.1304 ++ 1.1305 ++struct lzma_dec { 1.1306 ++ /* Distances of latest four matches */ 1.1307 ++ uint32_t rep0; 1.1308 ++ uint32_t rep1; 1.1309 ++ uint32_t rep2; 1.1310 ++ uint32_t rep3; 1.1311 ++ 1.1312 ++ /* Types of the most recently seen LZMA symbols */ 1.1313 ++ enum lzma_state state; 1.1314 ++ 1.1315 ++ /* 1.1316 ++ * Length of a match. This is updated so that dict_repeat can 1.1317 ++ * be called again to finish repeating the whole match. 1.1318 ++ */ 1.1319 ++ uint32_t len; 1.1320 ++ 1.1321 ++ /* 1.1322 ++ * LZMA properties or related bit masks (number of literal 1.1323 ++ * context bits, a mask dervied from the number of literal 1.1324 ++ * position bits, and a mask dervied from the number 1.1325 ++ * position bits) 1.1326 ++ */ 1.1327 ++ uint32_t lc; 1.1328 ++ uint32_t literal_pos_mask; /* (1 << lp) - 1 */ 1.1329 ++ uint32_t pos_mask; /* (1 << pb) - 1 */ 1.1330 ++ 1.1331 ++ /* If 1, it's a match. Otherwise it's a single 8-bit literal. */ 1.1332 ++ uint16_t is_match[STATES][POS_STATES_MAX]; 1.1333 ++ 1.1334 ++ /* If 1, it's a repeated match. The distance is one of rep0 .. rep3. */ 1.1335 ++ uint16_t is_rep[STATES]; 1.1336 ++ 1.1337 ++ /* 1.1338 ++ * If 0, distance of a repeated match is rep0. 1.1339 ++ * Otherwise check is_rep1. 1.1340 ++ */ 1.1341 ++ uint16_t is_rep0[STATES]; 1.1342 ++ 1.1343 ++ /* 1.1344 ++ * If 0, distance of a repeated match is rep1. 1.1345 ++ * Otherwise check is_rep2. 1.1346 ++ */ 1.1347 ++ uint16_t is_rep1[STATES]; 1.1348 ++ 1.1349 ++ /* If 0, distance of a repeated match is rep2. Otherwise it is rep3. */ 1.1350 ++ uint16_t is_rep2[STATES]; 1.1351 ++ 1.1352 ++ /* 1.1353 ++ * If 1, the repeated match has length of one byte. Otherwise 1.1354 ++ * the length is decoded from rep_len_decoder. 1.1355 ++ */ 1.1356 ++ uint16_t is_rep0_long[STATES][POS_STATES_MAX]; 1.1357 ++ 1.1358 ++ /* 1.1359 ++ * Probability tree for the highest two bits of the match 1.1360 ++ * distance. There is a separate probability tree for match 1.1361 ++ * lengths of 2 (i.e. MATCH_LEN_MIN), 3, 4, and [5, 273]. 1.1362 ++ */ 1.1363 ++ uint16_t dist_slot[DIST_STATES][DIST_SLOTS]; 1.1364 ++ 1.1365 ++ /* 1.1366 ++ * Probility trees for additional bits for match distance 1.1367 ++ * when the distance is in the range [4, 127]. 1.1368 ++ */ 1.1369 ++ uint16_t dist_special[FULL_DISTANCES - DIST_MODEL_END]; 1.1370 ++ 1.1371 ++ /* 1.1372 ++ * Probability tree for the lowest four bits of a match 1.1373 ++ * distance that is equal to or greater than 128. 1.1374 ++ */ 1.1375 ++ uint16_t dist_align[ALIGN_SIZE]; 1.1376 ++ 1.1377 ++ /* Length of a normal match */ 1.1378 ++ struct lzma_len_dec match_len_dec; 1.1379 ++ 1.1380 ++ /* Length of a repeated match */ 1.1381 ++ struct lzma_len_dec rep_len_dec; 1.1382 ++ 1.1383 ++ /* Probabilities of literals */ 1.1384 ++ uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE]; 1.1385 ++}; 1.1386 ++ 1.1387 ++struct lzma2_dec { 1.1388 ++ /* Position in xz_dec_lzma2_run(). */ 1.1389 ++ enum lzma2_seq { 1.1390 ++ SEQ_CONTROL, 1.1391 ++ SEQ_UNCOMPRESSED_1, 1.1392 ++ SEQ_UNCOMPRESSED_2, 1.1393 ++ SEQ_COMPRESSED_0, 1.1394 ++ SEQ_COMPRESSED_1, 1.1395 ++ SEQ_PROPERTIES, 1.1396 ++ SEQ_LZMA_PREPARE, 1.1397 ++ SEQ_LZMA_RUN, 1.1398 ++ SEQ_COPY 1.1399 ++ } sequence; 1.1400 ++ 1.1401 ++ /* Next position after decoding the compressed size of the chunk. */ 1.1402 ++ enum lzma2_seq next_sequence; 1.1403 ++ 1.1404 ++ /* Uncompressed size of LZMA chunk (2 MiB at maximum) */ 1.1405 ++ uint32_t uncompressed; 1.1406 ++ 1.1407 ++ /* 1.1408 ++ * Compressed size of LZMA chunk or compressed/uncompressed 1.1409 ++ * size of uncompressed chunk (64 KiB at maximum) 1.1410 ++ */ 1.1411 ++ uint32_t compressed; 1.1412 ++ 1.1413 ++ /* 1.1414 ++ * True if dictionary reset is needed. This is false before 1.1415 ++ * the first chunk (LZMA or uncompressed). 1.1416 ++ */ 1.1417 ++ bool need_dict_reset; 1.1418 ++ 1.1419 ++ /* 1.1420 ++ * True if new LZMA properties are needed. This is false 1.1421 ++ * before the first LZMA chunk. 1.1422 ++ */ 1.1423 ++ bool need_props; 1.1424 ++}; 1.1425 ++ 1.1426 ++struct xz_dec_lzma2 { 1.1427 ++ /* 1.1428 ++ * The order below is important on x86 to reduce code size and 1.1429 ++ * it shouldn't hurt on other platforms. Everything up to and 1.1430 ++ * including lzma.pos_mask are in the first 128 bytes on x86-32, 1.1431 ++ * which allows using smaller instructions to access those 1.1432 ++ * variables. On x86-64, fewer variables fit into the first 128 1.1433 ++ * bytes, but this is still the best order without sacrificing 1.1434 ++ * the readability by splitting the structures. 1.1435 ++ */ 1.1436 ++ struct rc_dec rc; 1.1437 ++ struct dictionary dict; 1.1438 ++ struct lzma2_dec lzma2; 1.1439 ++ struct lzma_dec lzma; 1.1440 ++ 1.1441 ++ /* 1.1442 ++ * Temporary buffer which holds small number of input bytes between 1.1443 ++ * decoder calls. See lzma2_lzma() for details. 1.1444 ++ */ 1.1445 ++ struct { 1.1446 ++ uint32_t size; 1.1447 ++ uint8_t buf[3 * LZMA_IN_REQUIRED]; 1.1448 ++ } temp; 1.1449 ++}; 1.1450 ++ 1.1451 ++/************** 1.1452 ++ * Dictionary * 1.1453 ++ **************/ 1.1454 ++ 1.1455 ++/* 1.1456 ++ * Reset the dictionary state. When in single-call mode, set up the beginning 1.1457 ++ * of the dictionary to point to the actual output buffer. 1.1458 ++ */ 1.1459 ++static void dict_reset(struct dictionary *dict, struct xz_buf *b) 1.1460 ++{ 1.1461 ++ if (DEC_IS_SINGLE(dict->mode)) { 1.1462 ++ dict->buf = b->out + b->out_pos; 1.1463 ++ dict->end = b->out_size - b->out_pos; 1.1464 ++ } 1.1465 ++ 1.1466 ++ dict->start = 0; 1.1467 ++ dict->pos = 0; 1.1468 ++ dict->limit = 0; 1.1469 ++ dict->full = 0; 1.1470 ++} 1.1471 ++ 1.1472 ++/* Set dictionary write limit */ 1.1473 ++static void dict_limit(struct dictionary *dict, size_t out_max) 1.1474 ++{ 1.1475 ++ if (dict->end - dict->pos <= out_max) 1.1476 ++ dict->limit = dict->end; 1.1477 ++ else 1.1478 ++ dict->limit = dict->pos + out_max; 1.1479 ++} 1.1480 ++ 1.1481 ++/* Return true if at least one byte can be written into the dictionary. */ 1.1482 ++static inline bool dict_has_space(const struct dictionary *dict) 1.1483 ++{ 1.1484 ++ return dict->pos < dict->limit; 1.1485 ++} 1.1486 ++ 1.1487 ++/* 1.1488 ++ * Get a byte from the dictionary at the given distance. The distance is 1.1489 ++ * assumed to valid, or as a special case, zero when the dictionary is 1.1490 ++ * still empty. This special case is needed for single-call decoding to 1.1491 ++ * avoid writing a '\0' to the end of the destination buffer. 1.1492 ++ */ 1.1493 ++static inline uint32_t dict_get(const struct dictionary *dict, uint32_t dist) 1.1494 ++{ 1.1495 ++ size_t offset = dict->pos - dist - 1; 1.1496 ++ 1.1497 ++ if (dist >= dict->pos) 1.1498 ++ offset += dict->end; 1.1499 ++ 1.1500 ++ return dict->full > 0 ? dict->buf[offset] : 0; 1.1501 ++} 1.1502 ++ 1.1503 ++/* 1.1504 ++ * Put one byte into the dictionary. It is assumed that there is space for it. 1.1505 ++ */ 1.1506 ++static inline void dict_put(struct dictionary *dict, uint8_t byte) 1.1507 ++{ 1.1508 ++ dict->buf[dict->pos++] = byte; 1.1509 ++ 1.1510 ++ if (dict->full < dict->pos) 1.1511 ++ dict->full = dict->pos; 1.1512 ++} 1.1513 ++ 1.1514 ++/* 1.1515 ++ * Repeat given number of bytes from the given distance. If the distance is 1.1516 ++ * invalid, false is returned. On success, true is returned and *len is 1.1517 ++ * updated to indicate how many bytes were left to be repeated. 1.1518 ++ */ 1.1519 ++static bool dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist) 1.1520 ++{ 1.1521 ++ size_t back; 1.1522 ++ uint32_t left; 1.1523 ++ 1.1524 ++ if (dist >= dict->full || dist >= dict->size) 1.1525 ++ return false; 1.1526 ++ 1.1527 ++ left = min_t(size_t, dict->limit - dict->pos, *len); 1.1528 ++ *len -= left; 1.1529 ++ 1.1530 ++ back = dict->pos - dist - 1; 1.1531 ++ if (dist >= dict->pos) 1.1532 ++ back += dict->end; 1.1533 ++ 1.1534 ++ do { 1.1535 ++ dict->buf[dict->pos++] = dict->buf[back++]; 1.1536 ++ if (back == dict->end) 1.1537 ++ back = 0; 1.1538 ++ } while (--left > 0); 1.1539 ++ 1.1540 ++ if (dict->full < dict->pos) 1.1541 ++ dict->full = dict->pos; 1.1542 ++ 1.1543 ++ return true; 1.1544 ++} 1.1545 ++ 1.1546 ++/* Copy uncompressed data as is from input to dictionary and output buffers. */ 1.1547 ++static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b, 1.1548 ++ uint32_t *left) 1.1549 ++{ 1.1550 ++ size_t copy_size; 1.1551 ++ 1.1552 ++ while (*left > 0 && b->in_pos < b->in_size 1.1553 ++ && b->out_pos < b->out_size) { 1.1554 ++ copy_size = min(b->in_size - b->in_pos, 1.1555 ++ b->out_size - b->out_pos); 1.1556 ++ if (copy_size > dict->end - dict->pos) 1.1557 ++ copy_size = dict->end - dict->pos; 1.1558 ++ if (copy_size > *left) 1.1559 ++ copy_size = *left; 1.1560 ++ 1.1561 ++ *left -= copy_size; 1.1562 ++ 1.1563 ++ memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size); 1.1564 ++ dict->pos += copy_size; 1.1565 ++ 1.1566 ++ if (dict->full < dict->pos) 1.1567 ++ dict->full = dict->pos; 1.1568 ++ 1.1569 ++ if (DEC_IS_MULTI(dict->mode)) { 1.1570 ++ if (dict->pos == dict->end) 1.1571 ++ dict->pos = 0; 1.1572 ++ 1.1573 ++ memcpy(b->out + b->out_pos, b->in + b->in_pos, 1.1574 ++ copy_size); 1.1575 ++ } 1.1576 ++ 1.1577 ++ dict->start = dict->pos; 1.1578 ++ 1.1579 ++ b->out_pos += copy_size; 1.1580 ++ b->in_pos += copy_size; 1.1581 ++ } 1.1582 ++} 1.1583 ++ 1.1584 ++/* 1.1585 ++ * Flush pending data from dictionary to b->out. It is assumed that there is 1.1586 ++ * enough space in b->out. This is guaranteed because caller uses dict_limit() 1.1587 ++ * before decoding data into the dictionary. 1.1588 ++ */ 1.1589 ++static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b) 1.1590 ++{ 1.1591 ++ size_t copy_size = dict->pos - dict->start; 1.1592 ++ 1.1593 ++ if (DEC_IS_MULTI(dict->mode)) { 1.1594 ++ if (dict->pos == dict->end) 1.1595 ++ dict->pos = 0; 1.1596 ++ 1.1597 ++ memcpy(b->out + b->out_pos, dict->buf + dict->start, 1.1598 ++ copy_size); 1.1599 ++ } 1.1600 ++ 1.1601 ++ dict->start = dict->pos; 1.1602 ++ b->out_pos += copy_size; 1.1603 ++ return copy_size; 1.1604 ++} 1.1605 ++ 1.1606 ++/***************** 1.1607 ++ * Range decoder * 1.1608 ++ *****************/ 1.1609 ++ 1.1610 ++/* Reset the range decoder. */ 1.1611 ++static void rc_reset(struct rc_dec *rc) 1.1612 ++{ 1.1613 ++ rc->range = (uint32_t)-1; 1.1614 ++ rc->code = 0; 1.1615 ++ rc->init_bytes_left = RC_INIT_BYTES; 1.1616 ++} 1.1617 ++ 1.1618 ++/* 1.1619 ++ * Read the first five initial bytes into rc->code if they haven't been 1.1620 ++ * read already. (Yes, the first byte gets completely ignored.) 1.1621 ++ */ 1.1622 ++static bool rc_read_init(struct rc_dec *rc, struct xz_buf *b) 1.1623 ++{ 1.1624 ++ while (rc->init_bytes_left > 0) { 1.1625 ++ if (b->in_pos == b->in_size) 1.1626 ++ return false; 1.1627 ++ 1.1628 ++ rc->code = (rc->code << 8) + b->in[b->in_pos++]; 1.1629 ++ --rc->init_bytes_left; 1.1630 ++ } 1.1631 ++ 1.1632 ++ return true; 1.1633 ++} 1.1634 ++ 1.1635 ++/* Return true if there may not be enough input for the next decoding loop. */ 1.1636 ++static inline bool rc_limit_exceeded(const struct rc_dec *rc) 1.1637 ++{ 1.1638 ++ return rc->in_pos > rc->in_limit; 1.1639 ++} 1.1640 ++ 1.1641 ++/* 1.1642 ++ * Return true if it is possible (from point of view of range decoder) that 1.1643 ++ * we have reached the end of the LZMA chunk. 1.1644 ++ */ 1.1645 ++static inline bool rc_is_finished(const struct rc_dec *rc) 1.1646 ++{ 1.1647 ++ return rc->code == 0; 1.1648 ++} 1.1649 ++ 1.1650 ++/* Read the next input byte if needed. */ 1.1651 ++static __always_inline void rc_normalize(struct rc_dec *rc) 1.1652 ++{ 1.1653 ++ if (rc->range < RC_TOP_VALUE) { 1.1654 ++ rc->range <<= RC_SHIFT_BITS; 1.1655 ++ rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++]; 1.1656 ++ } 1.1657 ++} 1.1658 ++ 1.1659 ++/* 1.1660 ++ * Decode one bit. In some versions, this function has been splitted in three 1.1661 ++ * functions so that the compiler is supposed to be able to more easily avoid 1.1662 ++ * an extra branch. In this particular version of the LZMA decoder, this 1.1663 ++ * doesn't seem to be a good idea (tested with GCC 3.3.6, 3.4.6, and 4.3.3 1.1664 ++ * on x86). Using a non-splitted version results in nicer looking code too. 1.1665 ++ * 1.1666 ++ * NOTE: This must return an int. Do not make it return a bool or the speed 1.1667 ++ * of the code generated by GCC 3.x decreases 10-15 %. (GCC 4.3 doesn't care, 1.1668 ++ * and it generates 10-20 % faster code than GCC 3.x from this file anyway.) 1.1669 ++ */ 1.1670 ++static __always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob) 1.1671 ++{ 1.1672 ++ uint32_t bound; 1.1673 ++ int bit; 1.1674 ++ 1.1675 ++ rc_normalize(rc); 1.1676 ++ bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob; 1.1677 ++ if (rc->code < bound) { 1.1678 ++ rc->range = bound; 1.1679 ++ *prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS; 1.1680 ++ bit = 0; 1.1681 ++ } else { 1.1682 ++ rc->range -= bound; 1.1683 ++ rc->code -= bound; 1.1684 ++ *prob -= *prob >> RC_MOVE_BITS; 1.1685 ++ bit = 1; 1.1686 ++ } 1.1687 ++ 1.1688 ++ return bit; 1.1689 ++} 1.1690 ++ 1.1691 ++/* Decode a bittree starting from the most significant bit. */ 1.1692 ++static __always_inline uint32_t rc_bittree(struct rc_dec *rc, 1.1693 ++ uint16_t *probs, uint32_t limit) 1.1694 ++{ 1.1695 ++ uint32_t symbol = 1; 1.1696 ++ 1.1697 ++ do { 1.1698 ++ if (rc_bit(rc, &probs[symbol])) 1.1699 ++ symbol = (symbol << 1) + 1; 1.1700 ++ else 1.1701 ++ symbol <<= 1; 1.1702 ++ } while (symbol < limit); 1.1703 ++ 1.1704 ++ return symbol; 1.1705 ++} 1.1706 ++ 1.1707 ++/* Decode a bittree starting from the least significant bit. */ 1.1708 ++static __always_inline void rc_bittree_reverse(struct rc_dec *rc, 1.1709 ++ uint16_t *probs, 1.1710 ++ uint32_t *dest, uint32_t limit) 1.1711 ++{ 1.1712 ++ uint32_t symbol = 1; 1.1713 ++ uint32_t i = 0; 1.1714 ++ 1.1715 ++ do { 1.1716 ++ if (rc_bit(rc, &probs[symbol])) { 1.1717 ++ symbol = (symbol << 1) + 1; 1.1718 ++ *dest += 1 << i; 1.1719 ++ } else { 1.1720 ++ symbol <<= 1; 1.1721 ++ } 1.1722 ++ } while (++i < limit); 1.1723 ++} 1.1724 ++ 1.1725 ++/* Decode direct bits (fixed fifty-fifty probability) */ 1.1726 ++static inline void rc_direct(struct rc_dec *rc, uint32_t *dest, uint32_t limit) 1.1727 ++{ 1.1728 ++ uint32_t mask; 1.1729 ++ 1.1730 ++ do { 1.1731 ++ rc_normalize(rc); 1.1732 ++ rc->range >>= 1; 1.1733 ++ rc->code -= rc->range; 1.1734 ++ mask = (uint32_t)0 - (rc->code >> 31); 1.1735 ++ rc->code += rc->range & mask; 1.1736 ++ *dest = (*dest << 1) + (mask + 1); 1.1737 ++ } while (--limit > 0); 1.1738 ++} 1.1739 ++ 1.1740 ++/******** 1.1741 ++ * LZMA * 1.1742 ++ ********/ 1.1743 ++ 1.1744 ++/* Get pointer to literal coder probability array. */ 1.1745 ++static uint16_t *lzma_literal_probs(struct xz_dec_lzma2 *s) 1.1746 ++{ 1.1747 ++ uint32_t prev_byte = dict_get(&s->dict, 0); 1.1748 ++ uint32_t low = prev_byte >> (8 - s->lzma.lc); 1.1749 ++ uint32_t high = (s->dict.pos & s->lzma.literal_pos_mask) << s->lzma.lc; 1.1750 ++ return s->lzma.literal[low + high]; 1.1751 ++} 1.1752 ++ 1.1753 ++/* Decode a literal (one 8-bit byte) */ 1.1754 ++static void lzma_literal(struct xz_dec_lzma2 *s) 1.1755 ++{ 1.1756 ++ uint16_t *probs; 1.1757 ++ uint32_t symbol; 1.1758 ++ uint32_t match_byte; 1.1759 ++ uint32_t match_bit; 1.1760 ++ uint32_t offset; 1.1761 ++ uint32_t i; 1.1762 ++ 1.1763 ++ probs = lzma_literal_probs(s); 1.1764 ++ 1.1765 ++ if (lzma_state_is_literal(s->lzma.state)) { 1.1766 ++ symbol = rc_bittree(&s->rc, probs, 0x100); 1.1767 ++ } else { 1.1768 ++ symbol = 1; 1.1769 ++ match_byte = dict_get(&s->dict, s->lzma.rep0) << 1; 1.1770 ++ offset = 0x100; 1.1771 ++ 1.1772 ++ do { 1.1773 ++ match_bit = match_byte & offset; 1.1774 ++ match_byte <<= 1; 1.1775 ++ i = offset + match_bit + symbol; 1.1776 ++ 1.1777 ++ if (rc_bit(&s->rc, &probs[i])) { 1.1778 ++ symbol = (symbol << 1) + 1; 1.1779 ++ offset &= match_bit; 1.1780 ++ } else { 1.1781 ++ symbol <<= 1; 1.1782 ++ offset &= ~match_bit; 1.1783 ++ } 1.1784 ++ } while (symbol < 0x100); 1.1785 ++ } 1.1786 ++ 1.1787 ++ dict_put(&s->dict, (uint8_t)symbol); 1.1788 ++ lzma_state_literal(&s->lzma.state); 1.1789 ++} 1.1790 ++ 1.1791 ++/* Decode the length of the match into s->lzma.len. */ 1.1792 ++static void lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l, 1.1793 ++ uint32_t pos_state) 1.1794 ++{ 1.1795 ++ uint16_t *probs; 1.1796 ++ uint32_t limit; 1.1797 ++ 1.1798 ++ if (!rc_bit(&s->rc, &l->choice)) { 1.1799 ++ probs = l->low[pos_state]; 1.1800 ++ limit = LEN_LOW_SYMBOLS; 1.1801 ++ s->lzma.len = MATCH_LEN_MIN; 1.1802 ++ } else { 1.1803 ++ if (!rc_bit(&s->rc, &l->choice2)) { 1.1804 ++ probs = l->mid[pos_state]; 1.1805 ++ limit = LEN_MID_SYMBOLS; 1.1806 ++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS; 1.1807 ++ } else { 1.1808 ++ probs = l->high; 1.1809 ++ limit = LEN_HIGH_SYMBOLS; 1.1810 ++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS 1.1811 ++ + LEN_MID_SYMBOLS; 1.1812 ++ } 1.1813 ++ } 1.1814 ++ 1.1815 ++ s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit; 1.1816 ++} 1.1817 ++ 1.1818 ++/* Decode a match. The distance will be stored in s->lzma.rep0. */ 1.1819 ++static void lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state) 1.1820 ++{ 1.1821 ++ uint16_t *probs; 1.1822 ++ uint32_t dist_slot; 1.1823 ++ uint32_t limit; 1.1824 ++ 1.1825 ++ lzma_state_match(&s->lzma.state); 1.1826 ++ 1.1827 ++ s->lzma.rep3 = s->lzma.rep2; 1.1828 ++ s->lzma.rep2 = s->lzma.rep1; 1.1829 ++ s->lzma.rep1 = s->lzma.rep0; 1.1830 ++ 1.1831 ++ lzma_len(s, &s->lzma.match_len_dec, pos_state); 1.1832 ++ 1.1833 ++ probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)]; 1.1834 ++ dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS; 1.1835 ++ 1.1836 ++ if (dist_slot < DIST_MODEL_START) { 1.1837 ++ s->lzma.rep0 = dist_slot; 1.1838 ++ } else { 1.1839 ++ limit = (dist_slot >> 1) - 1; 1.1840 ++ s->lzma.rep0 = 2 + (dist_slot & 1); 1.1841 ++ 1.1842 ++ if (dist_slot < DIST_MODEL_END) { 1.1843 ++ s->lzma.rep0 <<= limit; 1.1844 ++ probs = s->lzma.dist_special + s->lzma.rep0 1.1845 ++ - dist_slot - 1; 1.1846 ++ rc_bittree_reverse(&s->rc, probs, 1.1847 ++ &s->lzma.rep0, limit); 1.1848 ++ } else { 1.1849 ++ rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS); 1.1850 ++ s->lzma.rep0 <<= ALIGN_BITS; 1.1851 ++ rc_bittree_reverse(&s->rc, s->lzma.dist_align, 1.1852 ++ &s->lzma.rep0, ALIGN_BITS); 1.1853 ++ } 1.1854 ++ } 1.1855 ++} 1.1856 ++ 1.1857 ++/* 1.1858 ++ * Decode a repeated match. The distance is one of the four most recently 1.1859 ++ * seen matches. The distance will be stored in s->lzma.rep0. 1.1860 ++ */ 1.1861 ++static void lzma_rep_match(struct xz_dec_lzma2 *s, uint32_t pos_state) 1.1862 ++{ 1.1863 ++ uint32_t tmp; 1.1864 ++ 1.1865 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) { 1.1866 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[ 1.1867 ++ s->lzma.state][pos_state])) { 1.1868 ++ lzma_state_short_rep(&s->lzma.state); 1.1869 ++ s->lzma.len = 1; 1.1870 ++ return; 1.1871 ++ } 1.1872 ++ } else { 1.1873 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) { 1.1874 ++ tmp = s->lzma.rep1; 1.1875 ++ } else { 1.1876 ++ if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) { 1.1877 ++ tmp = s->lzma.rep2; 1.1878 ++ } else { 1.1879 ++ tmp = s->lzma.rep3; 1.1880 ++ s->lzma.rep3 = s->lzma.rep2; 1.1881 ++ } 1.1882 ++ 1.1883 ++ s->lzma.rep2 = s->lzma.rep1; 1.1884 ++ } 1.1885 ++ 1.1886 ++ s->lzma.rep1 = s->lzma.rep0; 1.1887 ++ s->lzma.rep0 = tmp; 1.1888 ++ } 1.1889 ++ 1.1890 ++ lzma_state_long_rep(&s->lzma.state); 1.1891 ++ lzma_len(s, &s->lzma.rep_len_dec, pos_state); 1.1892 ++} 1.1893 ++ 1.1894 ++/* LZMA decoder core */ 1.1895 ++static bool lzma_main(struct xz_dec_lzma2 *s) 1.1896 ++{ 1.1897 ++ uint32_t pos_state; 1.1898 ++ 1.1899 ++ /* 1.1900 ++ * If the dictionary was reached during the previous call, try to 1.1901 ++ * finish the possibly pending repeat in the dictionary. 1.1902 ++ */ 1.1903 ++ if (dict_has_space(&s->dict) && s->lzma.len > 0) 1.1904 ++ dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0); 1.1905 ++ 1.1906 ++ /* 1.1907 ++ * Decode more LZMA symbols. One iteration may consume up to 1.1908 ++ * LZMA_IN_REQUIRED - 1 bytes. 1.1909 ++ */ 1.1910 ++ while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) { 1.1911 ++ pos_state = s->dict.pos & s->lzma.pos_mask; 1.1912 ++ 1.1913 ++ if (!rc_bit(&s->rc, &s->lzma.is_match[ 1.1914 ++ s->lzma.state][pos_state])) { 1.1915 ++ lzma_literal(s); 1.1916 ++ } else { 1.1917 ++ if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state])) 1.1918 ++ lzma_rep_match(s, pos_state); 1.1919 ++ else 1.1920 ++ lzma_match(s, pos_state); 1.1921 ++ 1.1922 ++ if (!dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0)) 1.1923 ++ return false; 1.1924 ++ } 1.1925 ++ } 1.1926 ++ 1.1927 ++ /* 1.1928 ++ * Having the range decoder always normalized when we are outside 1.1929 ++ * this function makes it easier to correctly handle end of the chunk. 1.1930 ++ */ 1.1931 ++ rc_normalize(&s->rc); 1.1932 ++ 1.1933 ++ return true; 1.1934 ++} 1.1935 ++ 1.1936 ++/* 1.1937 ++ * Reset the LZMA decoder and range decoder state. Dictionary is nore reset 1.1938 ++ * here, because LZMA state may be reset without resetting the dictionary. 1.1939 ++ */ 1.1940 ++static void lzma_reset(struct xz_dec_lzma2 *s) 1.1941 ++{ 1.1942 ++ uint16_t *probs; 1.1943 ++ size_t i; 1.1944 ++ 1.1945 ++ s->lzma.state = STATE_LIT_LIT; 1.1946 ++ s->lzma.rep0 = 0; 1.1947 ++ s->lzma.rep1 = 0; 1.1948 ++ s->lzma.rep2 = 0; 1.1949 ++ s->lzma.rep3 = 0; 1.1950 ++ 1.1951 ++ /* 1.1952 ++ * All probabilities are initialized to the same value. This hack 1.1953 ++ * makes the code smaller by avoiding a separate loop for each 1.1954 ++ * probability array. 1.1955 ++ * 1.1956 ++ * This could be optimized so that only that part of literal 1.1957 ++ * probabilities that are actually required. In the common case 1.1958 ++ * we would write 12 KiB less. 1.1959 ++ */ 1.1960 ++ probs = s->lzma.is_match[0]; 1.1961 ++ for (i = 0; i < PROBS_TOTAL; ++i) 1.1962 ++ probs[i] = RC_BIT_MODEL_TOTAL / 2; 1.1963 ++ 1.1964 ++ rc_reset(&s->rc); 1.1965 ++} 1.1966 ++ 1.1967 ++/* 1.1968 ++ * Decode and validate LZMA properties (lc/lp/pb) and calculate the bit masks 1.1969 ++ * from the decoded lp and pb values. On success, the LZMA decoder state is 1.1970 ++ * reset and true is returned. 1.1971 ++ */ 1.1972 ++static bool lzma_props(struct xz_dec_lzma2 *s, uint8_t props) 1.1973 ++{ 1.1974 ++ if (props > (4 * 5 + 4) * 9 + 8) 1.1975 ++ return false; 1.1976 ++ 1.1977 ++ s->lzma.pos_mask = 0; 1.1978 ++ while (props >= 9 * 5) { 1.1979 ++ props -= 9 * 5; 1.1980 ++ ++s->lzma.pos_mask; 1.1981 ++ } 1.1982 ++ 1.1983 ++ s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1; 1.1984 ++ 1.1985 ++ s->lzma.literal_pos_mask = 0; 1.1986 ++ while (props >= 9) { 1.1987 ++ props -= 9; 1.1988 ++ ++s->lzma.literal_pos_mask; 1.1989 ++ } 1.1990 ++ 1.1991 ++ s->lzma.lc = props; 1.1992 ++ 1.1993 ++ if (s->lzma.lc + s->lzma.literal_pos_mask > 4) 1.1994 ++ return false; 1.1995 ++ 1.1996 ++ s->lzma.literal_pos_mask = (1 << s->lzma.literal_pos_mask) - 1; 1.1997 ++ 1.1998 ++ lzma_reset(s); 1.1999 ++ 1.2000 ++ return true; 1.2001 ++} 1.2002 ++ 1.2003 ++/********* 1.2004 ++ * LZMA2 * 1.2005 ++ *********/ 1.2006 ++ 1.2007 ++/* 1.2008 ++ * The LZMA decoder assumes that if the input limit (s->rc.in_limit) hasn't 1.2009 ++ * been exceeded, it is safe to read up to LZMA_IN_REQUIRED bytes. This 1.2010 ++ * wrapper function takes care of making the LZMA decoder's assumption safe. 1.2011 ++ * 1.2012 ++ * As long as there is plenty of input left to be decoded in the current LZMA 1.2013 ++ * chunk, we decode directly from the caller-supplied input buffer until 1.2014 ++ * there's LZMA_IN_REQUIRED bytes left. Those remaining bytes are copied into 1.2015 ++ * s->temp.buf, which (hopefully) gets filled on the next call to this 1.2016 ++ * function. We decode a few bytes from the temporary buffer so that we can 1.2017 ++ * continue decoding from the caller-supplied input buffer again. 1.2018 ++ */ 1.2019 ++static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b) 1.2020 ++{ 1.2021 ++ size_t in_avail; 1.2022 ++ uint32_t tmp; 1.2023 ++ 1.2024 ++ in_avail = b->in_size - b->in_pos; 1.2025 ++ if (s->temp.size > 0 || s->lzma2.compressed == 0) { 1.2026 ++ tmp = 2 * LZMA_IN_REQUIRED - s->temp.size; 1.2027 ++ if (tmp > s->lzma2.compressed - s->temp.size) 1.2028 ++ tmp = s->lzma2.compressed - s->temp.size; 1.2029 ++ if (tmp > in_avail) 1.2030 ++ tmp = in_avail; 1.2031 ++ 1.2032 ++ memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp); 1.2033 ++ 1.2034 ++ if (s->temp.size + tmp == s->lzma2.compressed) { 1.2035 ++ memzero(s->temp.buf + s->temp.size + tmp, 1.2036 ++ sizeof(s->temp.buf) 1.2037 ++ - s->temp.size - tmp); 1.2038 ++ s->rc.in_limit = s->temp.size + tmp; 1.2039 ++ } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) { 1.2040 ++ s->temp.size += tmp; 1.2041 ++ b->in_pos += tmp; 1.2042 ++ return true; 1.2043 ++ } else { 1.2044 ++ s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED; 1.2045 ++ } 1.2046 ++ 1.2047 ++ s->rc.in = s->temp.buf; 1.2048 ++ s->rc.in_pos = 0; 1.2049 ++ 1.2050 ++ if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp) 1.2051 ++ return false; 1.2052 ++ 1.2053 ++ s->lzma2.compressed -= s->rc.in_pos; 1.2054 ++ 1.2055 ++ if (s->rc.in_pos < s->temp.size) { 1.2056 ++ s->temp.size -= s->rc.in_pos; 1.2057 ++ memmove(s->temp.buf, s->temp.buf + s->rc.in_pos, 1.2058 ++ s->temp.size); 1.2059 ++ return true; 1.2060 ++ } 1.2061 ++ 1.2062 ++ b->in_pos += s->rc.in_pos - s->temp.size; 1.2063 ++ s->temp.size = 0; 1.2064 ++ } 1.2065 ++ 1.2066 ++ in_avail = b->in_size - b->in_pos; 1.2067 ++ if (in_avail >= LZMA_IN_REQUIRED) { 1.2068 ++ s->rc.in = b->in; 1.2069 ++ s->rc.in_pos = b->in_pos; 1.2070 ++ 1.2071 ++ if (in_avail >= s->lzma2.compressed + LZMA_IN_REQUIRED) 1.2072 ++ s->rc.in_limit = b->in_pos + s->lzma2.compressed; 1.2073 ++ else 1.2074 ++ s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED; 1.2075 ++ 1.2076 ++ if (!lzma_main(s)) 1.2077 ++ return false; 1.2078 ++ 1.2079 ++ in_avail = s->rc.in_pos - b->in_pos; 1.2080 ++ if (in_avail > s->lzma2.compressed) 1.2081 ++ return false; 1.2082 ++ 1.2083 ++ s->lzma2.compressed -= in_avail; 1.2084 ++ b->in_pos = s->rc.in_pos; 1.2085 ++ } 1.2086 ++ 1.2087 ++ in_avail = b->in_size - b->in_pos; 1.2088 ++ if (in_avail < LZMA_IN_REQUIRED) { 1.2089 ++ if (in_avail > s->lzma2.compressed) 1.2090 ++ in_avail = s->lzma2.compressed; 1.2091 ++ 1.2092 ++ memcpy(s->temp.buf, b->in + b->in_pos, in_avail); 1.2093 ++ s->temp.size = in_avail; 1.2094 ++ b->in_pos += in_avail; 1.2095 ++ } 1.2096 ++ 1.2097 ++ return true; 1.2098 ++} 1.2099 ++ 1.2100 ++/* 1.2101 ++ * Take care of the LZMA2 control layer, and forward the job of actual LZMA 1.2102 ++ * decoding or copying of uncompressed chunks to other functions. 1.2103 ++ */ 1.2104 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, 1.2105 ++ struct xz_buf *b) 1.2106 ++{ 1.2107 ++ uint32_t tmp; 1.2108 ++ 1.2109 ++ while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) { 1.2110 ++ switch (s->lzma2.sequence) { 1.2111 ++ case SEQ_CONTROL: 1.2112 ++ /* 1.2113 ++ * LZMA2 control byte 1.2114 ++ * 1.2115 ++ * Exact values: 1.2116 ++ * 0x00 End marker 1.2117 ++ * 0x01 Dictionary reset followed by 1.2118 ++ * an uncompressed chunk 1.2119 ++ * 0x02 Uncompressed chunk (no dictionary reset) 1.2120 ++ * 1.2121 ++ * Highest three bits (s->control & 0xE0): 1.2122 ++ * 0xE0 Dictionary reset, new properties and state 1.2123 ++ * reset, followed by LZMA compressed chunk 1.2124 ++ * 0xC0 New properties and state reset, followed 1.2125 ++ * by LZMA compressed chunk (no dictionary 1.2126 ++ * reset) 1.2127 ++ * 0xA0 State reset using old properties, 1.2128 ++ * followed by LZMA compressed chunk (no 1.2129 ++ * dictionary reset) 1.2130 ++ * 0x80 LZMA chunk (no dictionary or state reset) 1.2131 ++ * 1.2132 ++ * For LZMA compressed chunks, the lowest five bits 1.2133 ++ * (s->control & 1F) are the highest bits of the 1.2134 ++ * uncompressed size (bits 16-20). 1.2135 ++ * 1.2136 ++ * A new LZMA2 stream must begin with a dictionary 1.2137 ++ * reset. The first LZMA chunk must set new 1.2138 ++ * properties and reset the LZMA state. 1.2139 ++ * 1.2140 ++ * Values that don't match anything described above 1.2141 ++ * are invalid and we return XZ_DATA_ERROR. 1.2142 ++ */ 1.2143 ++ tmp = b->in[b->in_pos++]; 1.2144 ++ 1.2145 ++ if (tmp >= 0xE0 || tmp == 0x01) { 1.2146 ++ s->lzma2.need_props = true; 1.2147 ++ s->lzma2.need_dict_reset = false; 1.2148 ++ dict_reset(&s->dict, b); 1.2149 ++ } else if (s->lzma2.need_dict_reset) { 1.2150 ++ return XZ_DATA_ERROR; 1.2151 ++ } 1.2152 ++ 1.2153 ++ if (tmp >= 0x80) { 1.2154 ++ s->lzma2.uncompressed = (tmp & 0x1F) << 16; 1.2155 ++ s->lzma2.sequence = SEQ_UNCOMPRESSED_1; 1.2156 ++ 1.2157 ++ if (tmp >= 0xC0) { 1.2158 ++ /* 1.2159 ++ * When there are new properties, 1.2160 ++ * state reset is done at 1.2161 ++ * SEQ_PROPERTIES. 1.2162 ++ */ 1.2163 ++ s->lzma2.need_props = false; 1.2164 ++ s->lzma2.next_sequence 1.2165 ++ = SEQ_PROPERTIES; 1.2166 ++ 1.2167 ++ } else if (s->lzma2.need_props) { 1.2168 ++ return XZ_DATA_ERROR; 1.2169 ++ 1.2170 ++ } else { 1.2171 ++ s->lzma2.next_sequence 1.2172 ++ = SEQ_LZMA_PREPARE; 1.2173 ++ if (tmp >= 0xA0) 1.2174 ++ lzma_reset(s); 1.2175 ++ } 1.2176 ++ } else { 1.2177 ++ if (tmp == 0x00) 1.2178 ++ return XZ_STREAM_END; 1.2179 ++ 1.2180 ++ if (tmp > 0x02) 1.2181 ++ return XZ_DATA_ERROR; 1.2182 ++ 1.2183 ++ s->lzma2.sequence = SEQ_COMPRESSED_0; 1.2184 ++ s->lzma2.next_sequence = SEQ_COPY; 1.2185 ++ } 1.2186 ++ 1.2187 ++ break; 1.2188 ++ 1.2189 ++ case SEQ_UNCOMPRESSED_1: 1.2190 ++ s->lzma2.uncompressed 1.2191 ++ += (uint32_t)b->in[b->in_pos++] << 8; 1.2192 ++ s->lzma2.sequence = SEQ_UNCOMPRESSED_2; 1.2193 ++ break; 1.2194 ++ 1.2195 ++ case SEQ_UNCOMPRESSED_2: 1.2196 ++ s->lzma2.uncompressed 1.2197 ++ += (uint32_t)b->in[b->in_pos++] + 1; 1.2198 ++ s->lzma2.sequence = SEQ_COMPRESSED_0; 1.2199 ++ break; 1.2200 ++ 1.2201 ++ case SEQ_COMPRESSED_0: 1.2202 ++ s->lzma2.compressed 1.2203 ++ = (uint32_t)b->in[b->in_pos++] << 8; 1.2204 ++ s->lzma2.sequence = SEQ_COMPRESSED_1; 1.2205 ++ break; 1.2206 ++ 1.2207 ++ case SEQ_COMPRESSED_1: 1.2208 ++ s->lzma2.compressed 1.2209 ++ += (uint32_t)b->in[b->in_pos++] + 1; 1.2210 ++ s->lzma2.sequence = s->lzma2.next_sequence; 1.2211 ++ break; 1.2212 ++ 1.2213 ++ case SEQ_PROPERTIES: 1.2214 ++ if (!lzma_props(s, b->in[b->in_pos++])) 1.2215 ++ return XZ_DATA_ERROR; 1.2216 ++ 1.2217 ++ s->lzma2.sequence = SEQ_LZMA_PREPARE; 1.2218 ++ 1.2219 ++ case SEQ_LZMA_PREPARE: 1.2220 ++ if (s->lzma2.compressed < RC_INIT_BYTES) 1.2221 ++ return XZ_DATA_ERROR; 1.2222 ++ 1.2223 ++ if (!rc_read_init(&s->rc, b)) 1.2224 ++ return XZ_OK; 1.2225 ++ 1.2226 ++ s->lzma2.compressed -= RC_INIT_BYTES; 1.2227 ++ s->lzma2.sequence = SEQ_LZMA_RUN; 1.2228 ++ 1.2229 ++ case SEQ_LZMA_RUN: 1.2230 ++ /* 1.2231 ++ * Set dictionary limit to indicate how much we want 1.2232 ++ * to be encoded at maximum. Decode new data into the 1.2233 ++ * dictionary. Flush the new data from dictionary to 1.2234 ++ * b->out. Check if we finished decoding this chunk. 1.2235 ++ * In case the dictionary got full but we didn't fill 1.2236 ++ * the output buffer yet, we may run this loop 1.2237 ++ * multiple times without changing s->lzma2.sequence. 1.2238 ++ */ 1.2239 ++ dict_limit(&s->dict, min_t(size_t, 1.2240 ++ b->out_size - b->out_pos, 1.2241 ++ s->lzma2.uncompressed)); 1.2242 ++ if (!lzma2_lzma(s, b)) 1.2243 ++ return XZ_DATA_ERROR; 1.2244 ++ 1.2245 ++ s->lzma2.uncompressed -= dict_flush(&s->dict, b); 1.2246 ++ 1.2247 ++ if (s->lzma2.uncompressed == 0) { 1.2248 ++ if (s->lzma2.compressed > 0 || s->lzma.len > 0 1.2249 ++ || !rc_is_finished(&s->rc)) 1.2250 ++ return XZ_DATA_ERROR; 1.2251 ++ 1.2252 ++ rc_reset(&s->rc); 1.2253 ++ s->lzma2.sequence = SEQ_CONTROL; 1.2254 ++ 1.2255 ++ } else if (b->out_pos == b->out_size 1.2256 ++ || (b->in_pos == b->in_size 1.2257 ++ && s->temp.size 1.2258 ++ < s->lzma2.compressed)) { 1.2259 ++ return XZ_OK; 1.2260 ++ } 1.2261 ++ 1.2262 ++ break; 1.2263 ++ 1.2264 ++ case SEQ_COPY: 1.2265 ++ dict_uncompressed(&s->dict, b, &s->lzma2.compressed); 1.2266 ++ if (s->lzma2.compressed > 0) 1.2267 ++ return XZ_OK; 1.2268 ++ 1.2269 ++ s->lzma2.sequence = SEQ_CONTROL; 1.2270 ++ break; 1.2271 ++ } 1.2272 ++ } 1.2273 ++ 1.2274 ++ return XZ_OK; 1.2275 ++} 1.2276 ++ 1.2277 ++XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, 1.2278 ++ uint32_t dict_max) 1.2279 ++{ 1.2280 ++ struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL); 1.2281 ++ if (s == NULL) 1.2282 ++ return NULL; 1.2283 ++ 1.2284 ++ s->dict.mode = mode; 1.2285 ++ s->dict.size_max = dict_max; 1.2286 ++ 1.2287 ++ if (DEC_IS_PREALLOC(mode)) { 1.2288 ++ s->dict.buf = vmalloc(dict_max); 1.2289 ++ if (s->dict.buf == NULL) { 1.2290 ++ kfree(s); 1.2291 ++ return NULL; 1.2292 ++ } 1.2293 ++ } else if (DEC_IS_DYNALLOC(mode)) { 1.2294 ++ s->dict.buf = NULL; 1.2295 ++ s->dict.allocated = 0; 1.2296 ++ } 1.2297 ++ 1.2298 ++ return s; 1.2299 ++} 1.2300 ++ 1.2301 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props) 1.2302 ++{ 1.2303 ++ /* This limits dictionary size to 3 GiB to keep parsing simpler. */ 1.2304 ++ if (props > 39) 1.2305 ++ return XZ_OPTIONS_ERROR; 1.2306 ++ 1.2307 ++ s->dict.size = 2 + (props & 1); 1.2308 ++ s->dict.size <<= (props >> 1) + 11; 1.2309 ++ 1.2310 ++ if (DEC_IS_MULTI(s->dict.mode)) { 1.2311 ++ if (s->dict.size > s->dict.size_max) 1.2312 ++ return XZ_MEMLIMIT_ERROR; 1.2313 ++ 1.2314 ++ s->dict.end = s->dict.size; 1.2315 ++ 1.2316 ++ if (DEC_IS_DYNALLOC(s->dict.mode)) { 1.2317 ++ if (s->dict.allocated < s->dict.size) { 1.2318 ++ vfree(s->dict.buf); 1.2319 ++ s->dict.buf = vmalloc(s->dict.size); 1.2320 ++ if (s->dict.buf == NULL) { 1.2321 ++ s->dict.allocated = 0; 1.2322 ++ return XZ_MEM_ERROR; 1.2323 ++ } 1.2324 ++ } 1.2325 ++ } 1.2326 ++ } 1.2327 ++ 1.2328 ++ s->lzma.len = 0; 1.2329 ++ 1.2330 ++ s->lzma2.sequence = SEQ_CONTROL; 1.2331 ++ s->lzma2.need_dict_reset = true; 1.2332 ++ 1.2333 ++ s->temp.size = 0; 1.2334 ++ 1.2335 ++ return XZ_OK; 1.2336 ++} 1.2337 ++ 1.2338 ++XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s) 1.2339 ++{ 1.2340 ++ if (DEC_IS_MULTI(s->dict.mode)) 1.2341 ++ vfree(s->dict.buf); 1.2342 ++ 1.2343 ++ kfree(s); 1.2344 ++} 1.2345 +diff --git a/lib/xz/xz_dec_stream.c b/lib/xz/xz_dec_stream.c 1.2346 +new file mode 100644 1.2347 +index 0000000..ac809b1 1.2348 +--- /dev/null 1.2349 ++++ b/lib/xz/xz_dec_stream.c 1.2350 +@@ -0,0 +1,821 @@ 1.2351 ++/* 1.2352 ++ * .xz Stream decoder 1.2353 ++ * 1.2354 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 1.2355 ++ * 1.2356 ++ * This file has been put into the public domain. 1.2357 ++ * You can do whatever you want with this file. 1.2358 ++ */ 1.2359 ++ 1.2360 ++#include "xz_private.h" 1.2361 ++#include "xz_stream.h" 1.2362 ++ 1.2363 ++/* Hash used to validate the Index field */ 1.2364 ++struct xz_dec_hash { 1.2365 ++ vli_type unpadded; 1.2366 ++ vli_type uncompressed; 1.2367 ++ uint32_t crc32; 1.2368 ++}; 1.2369 ++ 1.2370 ++struct xz_dec { 1.2371 ++ /* Position in dec_main() */ 1.2372 ++ enum { 1.2373 ++ SEQ_STREAM_HEADER, 1.2374 ++ SEQ_BLOCK_START, 1.2375 ++ SEQ_BLOCK_HEADER, 1.2376 ++ SEQ_BLOCK_UNCOMPRESS, 1.2377 ++ SEQ_BLOCK_PADDING, 1.2378 ++ SEQ_BLOCK_CHECK, 1.2379 ++ SEQ_INDEX, 1.2380 ++ SEQ_INDEX_PADDING, 1.2381 ++ SEQ_INDEX_CRC32, 1.2382 ++ SEQ_STREAM_FOOTER 1.2383 ++ } sequence; 1.2384 ++ 1.2385 ++ /* Position in variable-length integers and Check fields */ 1.2386 ++ uint32_t pos; 1.2387 ++ 1.2388 ++ /* Variable-length integer decoded by dec_vli() */ 1.2389 ++ vli_type vli; 1.2390 ++ 1.2391 ++ /* Saved in_pos and out_pos */ 1.2392 ++ size_t in_start; 1.2393 ++ size_t out_start; 1.2394 ++ 1.2395 ++ /* CRC32 value in Block or Index */ 1.2396 ++ uint32_t crc32; 1.2397 ++ 1.2398 ++ /* Type of the integrity check calculated from uncompressed data */ 1.2399 ++ enum xz_check check_type; 1.2400 ++ 1.2401 ++ /* Operation mode */ 1.2402 ++ enum xz_mode mode; 1.2403 ++ 1.2404 ++ /* 1.2405 ++ * True if the next call to xz_dec_run() is allowed to return 1.2406 ++ * XZ_BUF_ERROR. 1.2407 ++ */ 1.2408 ++ bool allow_buf_error; 1.2409 ++ 1.2410 ++ /* Information stored in Block Header */ 1.2411 ++ struct { 1.2412 ++ /* 1.2413 ++ * Value stored in the Compressed Size field, or 1.2414 ++ * VLI_UNKNOWN if Compressed Size is not present. 1.2415 ++ */ 1.2416 ++ vli_type compressed; 1.2417 ++ 1.2418 ++ /* 1.2419 ++ * Value stored in the Uncompressed Size field, or 1.2420 ++ * VLI_UNKNOWN if Uncompressed Size is not present. 1.2421 ++ */ 1.2422 ++ vli_type uncompressed; 1.2423 ++ 1.2424 ++ /* Size of the Block Header field */ 1.2425 ++ uint32_t size; 1.2426 ++ } block_header; 1.2427 ++ 1.2428 ++ /* Information collected when decoding Blocks */ 1.2429 ++ struct { 1.2430 ++ /* Observed compressed size of the current Block */ 1.2431 ++ vli_type compressed; 1.2432 ++ 1.2433 ++ /* Observed uncompressed size of the current Block */ 1.2434 ++ vli_type uncompressed; 1.2435 ++ 1.2436 ++ /* Number of Blocks decoded so far */ 1.2437 ++ vli_type count; 1.2438 ++ 1.2439 ++ /* 1.2440 ++ * Hash calculated from the Block sizes. This is used to 1.2441 ++ * validate the Index field. 1.2442 ++ */ 1.2443 ++ struct xz_dec_hash hash; 1.2444 ++ } block; 1.2445 ++ 1.2446 ++ /* Variables needed when verifying the Index field */ 1.2447 ++ struct { 1.2448 ++ /* Position in dec_index() */ 1.2449 ++ enum { 1.2450 ++ SEQ_INDEX_COUNT, 1.2451 ++ SEQ_INDEX_UNPADDED, 1.2452 ++ SEQ_INDEX_UNCOMPRESSED 1.2453 ++ } sequence; 1.2454 ++ 1.2455 ++ /* Size of the Index in bytes */ 1.2456 ++ vli_type size; 1.2457 ++ 1.2458 ++ /* Number of Records (matches block.count in valid files) */ 1.2459 ++ vli_type count; 1.2460 ++ 1.2461 ++ /* 1.2462 ++ * Hash calculated from the Records (matches block.hash in 1.2463 ++ * valid files). 1.2464 ++ */ 1.2465 ++ struct xz_dec_hash hash; 1.2466 ++ } index; 1.2467 ++ 1.2468 ++ /* 1.2469 ++ * Temporary buffer needed to hold Stream Header, Block Header, 1.2470 ++ * and Stream Footer. The Block Header is the biggest (1 KiB) 1.2471 ++ * so we reserve space according to that. buf[] has to be aligned 1.2472 ++ * to a multiple of four bytes; the size_t variables before it 1.2473 ++ * should guarantee this. 1.2474 ++ */ 1.2475 ++ struct { 1.2476 ++ size_t pos; 1.2477 ++ size_t size; 1.2478 ++ uint8_t buf[1024]; 1.2479 ++ } temp; 1.2480 ++ 1.2481 ++ struct xz_dec_lzma2 *lzma2; 1.2482 ++ 1.2483 ++#ifdef XZ_DEC_BCJ 1.2484 ++ struct xz_dec_bcj *bcj; 1.2485 ++ bool bcj_active; 1.2486 ++#endif 1.2487 ++}; 1.2488 ++ 1.2489 ++#ifdef XZ_DEC_ANY_CHECK 1.2490 ++/* Sizes of the Check field with different Check IDs */ 1.2491 ++static const uint8_t check_sizes[16] = { 1.2492 ++ 0, 1.2493 ++ 4, 4, 4, 1.2494 ++ 8, 8, 8, 1.2495 ++ 16, 16, 16, 1.2496 ++ 32, 32, 32, 1.2497 ++ 64, 64, 64 1.2498 ++}; 1.2499 ++#endif 1.2500 ++ 1.2501 ++/* 1.2502 ++ * Fill s->temp by copying data starting from b->in[b->in_pos]. Caller 1.2503 ++ * must have set s->temp.pos to indicate how much data we are supposed 1.2504 ++ * to copy into s->temp.buf. Return true once s->temp.pos has reached 1.2505 ++ * s->temp.size. 1.2506 ++ */ 1.2507 ++static bool fill_temp(struct xz_dec *s, struct xz_buf *b) 1.2508 ++{ 1.2509 ++ size_t copy_size = min_t(size_t, 1.2510 ++ b->in_size - b->in_pos, s->temp.size - s->temp.pos); 1.2511 ++ 1.2512 ++ memcpy(s->temp.buf + s->temp.pos, b->in + b->in_pos, copy_size); 1.2513 ++ b->in_pos += copy_size; 1.2514 ++ s->temp.pos += copy_size; 1.2515 ++ 1.2516 ++ if (s->temp.pos == s->temp.size) { 1.2517 ++ s->temp.pos = 0; 1.2518 ++ return true; 1.2519 ++ } 1.2520 ++ 1.2521 ++ return false; 1.2522 ++} 1.2523 ++ 1.2524 ++/* Decode a variable-length integer (little-endian base-128 encoding) */ 1.2525 ++static enum xz_ret dec_vli(struct xz_dec *s, const uint8_t *in, 1.2526 ++ size_t *in_pos, size_t in_size) 1.2527 ++{ 1.2528 ++ uint8_t byte; 1.2529 ++ 1.2530 ++ if (s->pos == 0) 1.2531 ++ s->vli = 0; 1.2532 ++ 1.2533 ++ while (*in_pos < in_size) { 1.2534 ++ byte = in[*in_pos]; 1.2535 ++ ++*in_pos; 1.2536 ++ 1.2537 ++ s->vli |= (vli_type)(byte & 0x7F) << s->pos; 1.2538 ++ 1.2539 ++ if ((byte & 0x80) == 0) { 1.2540 ++ /* Don't allow non-minimal encodings. */ 1.2541 ++ if (byte == 0 && s->pos != 0) 1.2542 ++ return XZ_DATA_ERROR; 1.2543 ++ 1.2544 ++ s->pos = 0; 1.2545 ++ return XZ_STREAM_END; 1.2546 ++ } 1.2547 ++ 1.2548 ++ s->pos += 7; 1.2549 ++ if (s->pos == 7 * VLI_BYTES_MAX) 1.2550 ++ return XZ_DATA_ERROR; 1.2551 ++ } 1.2552 ++ 1.2553 ++ return XZ_OK; 1.2554 ++} 1.2555 ++ 1.2556 ++/* 1.2557 ++ * Decode the Compressed Data field from a Block. Update and validate 1.2558 ++ * the observed compressed and uncompressed sizes of the Block so that 1.2559 ++ * they don't exceed the values possibly stored in the Block Header 1.2560 ++ * (validation assumes that no integer overflow occurs, since vli_type 1.2561 ++ * is normally uint64_t). Update the CRC32 if presence of the CRC32 1.2562 ++ * field was indicated in Stream Header. 1.2563 ++ * 1.2564 ++ * Once the decoding is finished, validate that the observed sizes match 1.2565 ++ * the sizes possibly stored in the Block Header. Update the hash and 1.2566 ++ * Block count, which are later used to validate the Index field. 1.2567 ++ */ 1.2568 ++static enum xz_ret dec_block(struct xz_dec *s, struct xz_buf *b) 1.2569 ++{ 1.2570 ++ enum xz_ret ret; 1.2571 ++ 1.2572 ++ s->in_start = b->in_pos; 1.2573 ++ s->out_start = b->out_pos; 1.2574 ++ 1.2575 ++#ifdef XZ_DEC_BCJ 1.2576 ++ if (s->bcj_active) 1.2577 ++ ret = xz_dec_bcj_run(s->bcj, s->lzma2, b); 1.2578 ++ else 1.2579 ++#endif 1.2580 ++ ret = xz_dec_lzma2_run(s->lzma2, b); 1.2581 ++ 1.2582 ++ s->block.compressed += b->in_pos - s->in_start; 1.2583 ++ s->block.uncompressed += b->out_pos - s->out_start; 1.2584 ++ 1.2585 ++ /* 1.2586 ++ * There is no need to separately check for VLI_UNKNOWN, since 1.2587 ++ * the observed sizes are always smaller than VLI_UNKNOWN. 1.2588 ++ */ 1.2589 ++ if (s->block.compressed > s->block_header.compressed 1.2590 ++ || s->block.uncompressed 1.2591 ++ > s->block_header.uncompressed) 1.2592 ++ return XZ_DATA_ERROR; 1.2593 ++ 1.2594 ++ if (s->check_type == XZ_CHECK_CRC32) 1.2595 ++ s->crc32 = xz_crc32(b->out + s->out_start, 1.2596 ++ b->out_pos - s->out_start, s->crc32); 1.2597 ++ 1.2598 ++ if (ret == XZ_STREAM_END) { 1.2599 ++ if (s->block_header.compressed != VLI_UNKNOWN 1.2600 ++ && s->block_header.compressed 1.2601 ++ != s->block.compressed) 1.2602 ++ return XZ_DATA_ERROR; 1.2603 ++ 1.2604 ++ if (s->block_header.uncompressed != VLI_UNKNOWN 1.2605 ++ && s->block_header.uncompressed 1.2606 ++ != s->block.uncompressed) 1.2607 ++ return XZ_DATA_ERROR; 1.2608 ++ 1.2609 ++ s->block.hash.unpadded += s->block_header.size 1.2610 ++ + s->block.compressed; 1.2611 ++ 1.2612 ++#ifdef XZ_DEC_ANY_CHECK 1.2613 ++ s->block.hash.unpadded += check_sizes[s->check_type]; 1.2614 ++#else 1.2615 ++ if (s->check_type == XZ_CHECK_CRC32) 1.2616 ++ s->block.hash.unpadded += 4; 1.2617 ++#endif 1.2618 ++ 1.2619 ++ s->block.hash.uncompressed += s->block.uncompressed; 1.2620 ++ s->block.hash.crc32 = xz_crc32( 1.2621 ++ (const uint8_t *)&s->block.hash, 1.2622 ++ sizeof(s->block.hash), s->block.hash.crc32); 1.2623 ++ 1.2624 ++ ++s->block.count; 1.2625 ++ } 1.2626 ++ 1.2627 ++ return ret; 1.2628 ++} 1.2629 ++ 1.2630 ++/* Update the Index size and the CRC32 value. */ 1.2631 ++static void index_update(struct xz_dec *s, const struct xz_buf *b) 1.2632 ++{ 1.2633 ++ size_t in_used = b->in_pos - s->in_start; 1.2634 ++ s->index.size += in_used; 1.2635 ++ s->crc32 = xz_crc32(b->in + s->in_start, in_used, s->crc32); 1.2636 ++} 1.2637 ++ 1.2638 ++/* 1.2639 ++ * Decode the Number of Records, Unpadded Size, and Uncompressed Size 1.2640 ++ * fields from the Index field. That is, Index Padding and CRC32 are not 1.2641 ++ * decoded by this function. 1.2642 ++ * 1.2643 ++ * This can return XZ_OK (more input needed), XZ_STREAM_END (everything 1.2644 ++ * successfully decoded), or XZ_DATA_ERROR (input is corrupt). 1.2645 ++ */ 1.2646 ++static enum xz_ret dec_index(struct xz_dec *s, struct xz_buf *b) 1.2647 ++{ 1.2648 ++ enum xz_ret ret; 1.2649 ++ 1.2650 ++ do { 1.2651 ++ ret = dec_vli(s, b->in, &b->in_pos, b->in_size); 1.2652 ++ if (ret != XZ_STREAM_END) { 1.2653 ++ index_update(s, b); 1.2654 ++ return ret; 1.2655 ++ } 1.2656 ++ 1.2657 ++ switch (s->index.sequence) { 1.2658 ++ case SEQ_INDEX_COUNT: 1.2659 ++ s->index.count = s->vli; 1.2660 ++ 1.2661 ++ /* 1.2662 ++ * Validate that the Number of Records field 1.2663 ++ * indicates the same number of Records as 1.2664 ++ * there were Blocks in the Stream. 1.2665 ++ */ 1.2666 ++ if (s->index.count != s->block.count) 1.2667 ++ return XZ_DATA_ERROR; 1.2668 ++ 1.2669 ++ s->index.sequence = SEQ_INDEX_UNPADDED; 1.2670 ++ break; 1.2671 ++ 1.2672 ++ case SEQ_INDEX_UNPADDED: 1.2673 ++ s->index.hash.unpadded += s->vli; 1.2674 ++ s->index.sequence = SEQ_INDEX_UNCOMPRESSED; 1.2675 ++ break; 1.2676 ++ 1.2677 ++ case SEQ_INDEX_UNCOMPRESSED: 1.2678 ++ s->index.hash.uncompressed += s->vli; 1.2679 ++ s->index.hash.crc32 = xz_crc32( 1.2680 ++ (const uint8_t *)&s->index.hash, 1.2681 ++ sizeof(s->index.hash), 1.2682 ++ s->index.hash.crc32); 1.2683 ++ --s->index.count; 1.2684 ++ s->index.sequence = SEQ_INDEX_UNPADDED; 1.2685 ++ break; 1.2686 ++ } 1.2687 ++ } while (s->index.count > 0); 1.2688 ++ 1.2689 ++ return XZ_STREAM_END; 1.2690 ++} 1.2691 ++ 1.2692 ++/* 1.2693 ++ * Validate that the next four input bytes match the value of s->crc32. 1.2694 ++ * s->pos must be zero when starting to validate the first byte. 1.2695 ++ */ 1.2696 ++static enum xz_ret crc32_validate(struct xz_dec *s, struct xz_buf *b) 1.2697 ++{ 1.2698 ++ do { 1.2699 ++ if (b->in_pos == b->in_size) 1.2700 ++ return XZ_OK; 1.2701 ++ 1.2702 ++ if (((s->crc32 >> s->pos) & 0xFF) != b->in[b->in_pos++]) 1.2703 ++ return XZ_DATA_ERROR; 1.2704 ++ 1.2705 ++ s->pos += 8; 1.2706 ++ 1.2707 ++ } while (s->pos < 32); 1.2708 ++ 1.2709 ++ s->crc32 = 0; 1.2710 ++ s->pos = 0; 1.2711 ++ 1.2712 ++ return XZ_STREAM_END; 1.2713 ++} 1.2714 ++ 1.2715 ++#ifdef XZ_DEC_ANY_CHECK 1.2716 ++/* 1.2717 ++ * Skip over the Check field when the Check ID is not supported. 1.2718 ++ * Returns true once the whole Check field has been skipped over. 1.2719 ++ */ 1.2720 ++static bool check_skip(struct xz_dec *s, struct xz_buf *b) 1.2721 ++{ 1.2722 ++ while (s->pos < check_sizes[s->check_type]) { 1.2723 ++ if (b->in_pos == b->in_size) 1.2724 ++ return false; 1.2725 ++ 1.2726 ++ ++b->in_pos; 1.2727 ++ ++s->pos; 1.2728 ++ } 1.2729 ++ 1.2730 ++ s->pos = 0; 1.2731 ++ 1.2732 ++ return true; 1.2733 ++} 1.2734 ++#endif 1.2735 ++ 1.2736 ++/* Decode the Stream Header field (the first 12 bytes of the .xz Stream). */ 1.2737 ++static enum xz_ret dec_stream_header(struct xz_dec *s) 1.2738 ++{ 1.2739 ++ if (!memeq(s->temp.buf, HEADER_MAGIC, HEADER_MAGIC_SIZE)) 1.2740 ++ return XZ_FORMAT_ERROR; 1.2741 ++ 1.2742 ++ if (xz_crc32(s->temp.buf + HEADER_MAGIC_SIZE, 2, 0) 1.2743 ++ != get_le32(s->temp.buf + HEADER_MAGIC_SIZE + 2)) 1.2744 ++ return XZ_DATA_ERROR; 1.2745 ++ 1.2746 ++ if (s->temp.buf[HEADER_MAGIC_SIZE] != 0) 1.2747 ++ return XZ_OPTIONS_ERROR; 1.2748 ++ 1.2749 ++ /* 1.2750 ++ * Of integrity checks, we support only none (Check ID = 0) and 1.2751 ++ * CRC32 (Check ID = 1). However, if XZ_DEC_ANY_CHECK is defined, 1.2752 ++ * we will accept other check types too, but then the check won't 1.2753 ++ * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given. 1.2754 ++ */ 1.2755 ++ s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1]; 1.2756 ++ 1.2757 ++#ifdef XZ_DEC_ANY_CHECK 1.2758 ++ if (s->check_type > XZ_CHECK_MAX) 1.2759 ++ return XZ_OPTIONS_ERROR; 1.2760 ++ 1.2761 ++ if (s->check_type > XZ_CHECK_CRC32) 1.2762 ++ return XZ_UNSUPPORTED_CHECK; 1.2763 ++#else 1.2764 ++ if (s->check_type > XZ_CHECK_CRC32) 1.2765 ++ return XZ_OPTIONS_ERROR; 1.2766 ++#endif 1.2767 ++ 1.2768 ++ return XZ_OK; 1.2769 ++} 1.2770 ++ 1.2771 ++/* Decode the Stream Footer field (the last 12 bytes of the .xz Stream) */ 1.2772 ++static enum xz_ret dec_stream_footer(struct xz_dec *s) 1.2773 ++{ 1.2774 ++ if (!memeq(s->temp.buf + 10, FOOTER_MAGIC, FOOTER_MAGIC_SIZE)) 1.2775 ++ return XZ_DATA_ERROR; 1.2776 ++ 1.2777 ++ if (xz_crc32(s->temp.buf + 4, 6, 0) != get_le32(s->temp.buf)) 1.2778 ++ return XZ_DATA_ERROR; 1.2779 ++ 1.2780 ++ /* 1.2781 ++ * Validate Backward Size. Note that we never added the size of the 1.2782 ++ * Index CRC32 field to s->index.size, thus we use s->index.size / 4 1.2783 ++ * instead of s->index.size / 4 - 1. 1.2784 ++ */ 1.2785 ++ if ((s->index.size >> 2) != get_le32(s->temp.buf + 4)) 1.2786 ++ return XZ_DATA_ERROR; 1.2787 ++ 1.2788 ++ if (s->temp.buf[8] != 0 || s->temp.buf[9] != s->check_type) 1.2789 ++ return XZ_DATA_ERROR; 1.2790 ++ 1.2791 ++ /* 1.2792 ++ * Use XZ_STREAM_END instead of XZ_OK to be more convenient 1.2793 ++ * for the caller. 1.2794 ++ */ 1.2795 ++ return XZ_STREAM_END; 1.2796 ++} 1.2797 ++ 1.2798 ++/* Decode the Block Header and initialize the filter chain. */ 1.2799 ++static enum xz_ret dec_block_header(struct xz_dec *s) 1.2800 ++{ 1.2801 ++ enum xz_ret ret; 1.2802 ++ 1.2803 ++ /* 1.2804 ++ * Validate the CRC32. We know that the temp buffer is at least 1.2805 ++ * eight bytes so this is safe. 1.2806 ++ */ 1.2807 ++ s->temp.size -= 4; 1.2808 ++ if (xz_crc32(s->temp.buf, s->temp.size, 0) 1.2809 ++ != get_le32(s->temp.buf + s->temp.size)) 1.2810 ++ return XZ_DATA_ERROR; 1.2811 ++ 1.2812 ++ s->temp.pos = 2; 1.2813 ++ 1.2814 ++ /* 1.2815 ++ * Catch unsupported Block Flags. We support only one or two filters 1.2816 ++ * in the chain, so we catch that with the same test. 1.2817 ++ */ 1.2818 ++#ifdef XZ_DEC_BCJ 1.2819 ++ if (s->temp.buf[1] & 0x3E) 1.2820 ++#else 1.2821 ++ if (s->temp.buf[1] & 0x3F) 1.2822 ++#endif 1.2823 ++ return XZ_OPTIONS_ERROR; 1.2824 ++ 1.2825 ++ /* Compressed Size */ 1.2826 ++ if (s->temp.buf[1] & 0x40) { 1.2827 ++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size) 1.2828 ++ != XZ_STREAM_END) 1.2829 ++ return XZ_DATA_ERROR; 1.2830 ++ 1.2831 ++ s->block_header.compressed = s->vli; 1.2832 ++ } else { 1.2833 ++ s->block_header.compressed = VLI_UNKNOWN; 1.2834 ++ } 1.2835 ++ 1.2836 ++ /* Uncompressed Size */ 1.2837 ++ if (s->temp.buf[1] & 0x80) { 1.2838 ++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size) 1.2839 ++ != XZ_STREAM_END) 1.2840 ++ return XZ_DATA_ERROR; 1.2841 ++ 1.2842 ++ s->block_header.uncompressed = s->vli; 1.2843 ++ } else { 1.2844 ++ s->block_header.uncompressed = VLI_UNKNOWN; 1.2845 ++ } 1.2846 ++ 1.2847 ++#ifdef XZ_DEC_BCJ 1.2848 ++ /* If there are two filters, the first one must be a BCJ filter. */ 1.2849 ++ s->bcj_active = s->temp.buf[1] & 0x01; 1.2850 ++ if (s->bcj_active) { 1.2851 ++ if (s->temp.size - s->temp.pos < 2) 1.2852 ++ return XZ_OPTIONS_ERROR; 1.2853 ++ 1.2854 ++ ret = xz_dec_bcj_reset(s->bcj, s->temp.buf[s->temp.pos++]); 1.2855 ++ if (ret != XZ_OK) 1.2856 ++ return ret; 1.2857 ++ 1.2858 ++ /* 1.2859 ++ * We don't support custom start offset, 1.2860 ++ * so Size of Properties must be zero. 1.2861 ++ */ 1.2862 ++ if (s->temp.buf[s->temp.pos++] != 0x00) 1.2863 ++ return XZ_OPTIONS_ERROR; 1.2864 ++ } 1.2865 ++#endif 1.2866 ++ 1.2867 ++ /* Valid Filter Flags always take at least two bytes. */ 1.2868 ++ if (s->temp.size - s->temp.pos < 2) 1.2869 ++ return XZ_DATA_ERROR; 1.2870 ++ 1.2871 ++ /* Filter ID = LZMA2 */ 1.2872 ++ if (s->temp.buf[s->temp.pos++] != 0x21) 1.2873 ++ return XZ_OPTIONS_ERROR; 1.2874 ++ 1.2875 ++ /* Size of Properties = 1-byte Filter Properties */ 1.2876 ++ if (s->temp.buf[s->temp.pos++] != 0x01) 1.2877 ++ return XZ_OPTIONS_ERROR; 1.2878 ++ 1.2879 ++ /* Filter Properties contains LZMA2 dictionary size. */ 1.2880 ++ if (s->temp.size - s->temp.pos < 1) 1.2881 ++ return XZ_DATA_ERROR; 1.2882 ++ 1.2883 ++ ret = xz_dec_lzma2_reset(s->lzma2, s->temp.buf[s->temp.pos++]); 1.2884 ++ if (ret != XZ_OK) 1.2885 ++ return ret; 1.2886 ++ 1.2887 ++ /* The rest must be Header Padding. */ 1.2888 ++ while (s->temp.pos < s->temp.size) 1.2889 ++ if (s->temp.buf[s->temp.pos++] != 0x00) 1.2890 ++ return XZ_OPTIONS_ERROR; 1.2891 ++ 1.2892 ++ s->temp.pos = 0; 1.2893 ++ s->block.compressed = 0; 1.2894 ++ s->block.uncompressed = 0; 1.2895 ++ 1.2896 ++ return XZ_OK; 1.2897 ++} 1.2898 ++ 1.2899 ++static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b) 1.2900 ++{ 1.2901 ++ enum xz_ret ret; 1.2902 ++ 1.2903 ++ /* 1.2904 ++ * Store the start position for the case when we are in the middle 1.2905 ++ * of the Index field. 1.2906 ++ */ 1.2907 ++ s->in_start = b->in_pos; 1.2908 ++ 1.2909 ++ while (true) { 1.2910 ++ switch (s->sequence) { 1.2911 ++ case SEQ_STREAM_HEADER: 1.2912 ++ /* 1.2913 ++ * Stream Header is copied to s->temp, and then 1.2914 ++ * decoded from there. This way if the caller 1.2915 ++ * gives us only little input at a time, we can 1.2916 ++ * still keep the Stream Header decoding code 1.2917 ++ * simple. Similar approach is used in many places 1.2918 ++ * in this file. 1.2919 ++ */ 1.2920 ++ if (!fill_temp(s, b)) 1.2921 ++ return XZ_OK; 1.2922 ++ 1.2923 ++ /* 1.2924 ++ * If dec_stream_header() returns 1.2925 ++ * XZ_UNSUPPORTED_CHECK, it is still possible 1.2926 ++ * to continue decoding if working in multi-call 1.2927 ++ * mode. Thus, update s->sequence before calling 1.2928 ++ * dec_stream_header(). 1.2929 ++ */ 1.2930 ++ s->sequence = SEQ_BLOCK_START; 1.2931 ++ 1.2932 ++ ret = dec_stream_header(s); 1.2933 ++ if (ret != XZ_OK) 1.2934 ++ return ret; 1.2935 ++ 1.2936 ++ case SEQ_BLOCK_START: 1.2937 ++ /* We need one byte of input to continue. */ 1.2938 ++ if (b->in_pos == b->in_size) 1.2939 ++ return XZ_OK; 1.2940 ++ 1.2941 ++ /* See if this is the beginning of the Index field. */ 1.2942 ++ if (b->in[b->in_pos] == 0) { 1.2943 ++ s->in_start = b->in_pos++; 1.2944 ++ s->sequence = SEQ_INDEX; 1.2945 ++ break; 1.2946 ++ } 1.2947 ++ 1.2948 ++ /* 1.2949 ++ * Calculate the size of the Block Header and 1.2950 ++ * prepare to decode it. 1.2951 ++ */ 1.2952 ++ s->block_header.size 1.2953 ++ = ((uint32_t)b->in[b->in_pos] + 1) * 4; 1.2954 ++ 1.2955 ++ s->temp.size = s->block_header.size; 1.2956 ++ s->temp.pos = 0; 1.2957 ++ s->sequence = SEQ_BLOCK_HEADER; 1.2958 ++ 1.2959 ++ case SEQ_BLOCK_HEADER: 1.2960 ++ if (!fill_temp(s, b)) 1.2961 ++ return XZ_OK; 1.2962 ++ 1.2963 ++ ret = dec_block_header(s); 1.2964 ++ if (ret != XZ_OK) 1.2965 ++ return ret; 1.2966 ++ 1.2967 ++ s->sequence = SEQ_BLOCK_UNCOMPRESS; 1.2968 ++ 1.2969 ++ case SEQ_BLOCK_UNCOMPRESS: 1.2970 ++ ret = dec_block(s, b); 1.2971 ++ if (ret != XZ_STREAM_END) 1.2972 ++ return ret; 1.2973 ++ 1.2974 ++ s->sequence = SEQ_BLOCK_PADDING; 1.2975 ++ 1.2976 ++ case SEQ_BLOCK_PADDING: 1.2977 ++ /* 1.2978 ++ * Size of Compressed Data + Block Padding 1.2979 ++ * must be a multiple of four. We don't need 1.2980 ++ * s->block.compressed for anything else 1.2981 ++ * anymore, so we use it here to test the size 1.2982 ++ * of the Block Padding field. 1.2983 ++ */ 1.2984 ++ while (s->block.compressed & 3) { 1.2985 ++ if (b->in_pos == b->in_size) 1.2986 ++ return XZ_OK; 1.2987 ++ 1.2988 ++ if (b->in[b->in_pos++] != 0) 1.2989 ++ return XZ_DATA_ERROR; 1.2990 ++ 1.2991 ++ ++s->block.compressed; 1.2992 ++ } 1.2993 ++ 1.2994 ++ s->sequence = SEQ_BLOCK_CHECK; 1.2995 ++ 1.2996 ++ case SEQ_BLOCK_CHECK: 1.2997 ++ if (s->check_type == XZ_CHECK_CRC32) { 1.2998 ++ ret = crc32_validate(s, b); 1.2999 ++ if (ret != XZ_STREAM_END) 1.3000 ++ return ret; 1.3001 ++ } 1.3002 ++#ifdef XZ_DEC_ANY_CHECK 1.3003 ++ else if (!check_skip(s, b)) { 1.3004 ++ return XZ_OK; 1.3005 ++ } 1.3006 ++#endif 1.3007 ++ 1.3008 ++ s->sequence = SEQ_BLOCK_START; 1.3009 ++ break; 1.3010 ++ 1.3011 ++ case SEQ_INDEX: 1.3012 ++ ret = dec_index(s, b); 1.3013 ++ if (ret != XZ_STREAM_END) 1.3014 ++ return ret; 1.3015 ++ 1.3016 ++ s->sequence = SEQ_INDEX_PADDING; 1.3017 ++ 1.3018 ++ case SEQ_INDEX_PADDING: 1.3019 ++ while ((s->index.size + (b->in_pos - s->in_start)) 1.3020 ++ & 3) { 1.3021 ++ if (b->in_pos == b->in_size) { 1.3022 ++ index_update(s, b); 1.3023 ++ return XZ_OK; 1.3024 ++ } 1.3025 ++ 1.3026 ++ if (b->in[b->in_pos++] != 0) 1.3027 ++ return XZ_DATA_ERROR; 1.3028 ++ } 1.3029 ++ 1.3030 ++ /* Finish the CRC32 value and Index size. */ 1.3031 ++ index_update(s, b); 1.3032 ++ 1.3033 ++ /* Compare the hashes to validate the Index field. */ 1.3034 ++ if (!memeq(&s->block.hash, &s->index.hash, 1.3035 ++ sizeof(s->block.hash))) 1.3036 ++ return XZ_DATA_ERROR; 1.3037 ++ 1.3038 ++ s->sequence = SEQ_INDEX_CRC32; 1.3039 ++ 1.3040 ++ case SEQ_INDEX_CRC32: 1.3041 ++ ret = crc32_validate(s, b); 1.3042 ++ if (ret != XZ_STREAM_END) 1.3043 ++ return ret; 1.3044 ++ 1.3045 ++ s->temp.size = STREAM_HEADER_SIZE; 1.3046 ++ s->sequence = SEQ_STREAM_FOOTER; 1.3047 ++ 1.3048 ++ case SEQ_STREAM_FOOTER: 1.3049 ++ if (!fill_temp(s, b)) 1.3050 ++ return XZ_OK; 1.3051 ++ 1.3052 ++ return dec_stream_footer(s); 1.3053 ++ } 1.3054 ++ } 1.3055 ++ 1.3056 ++ /* Never reached */ 1.3057 ++} 1.3058 ++ 1.3059 ++/* 1.3060 ++ * xz_dec_run() is a wrapper for dec_main() to handle some special cases in 1.3061 ++ * multi-call and single-call decoding. 1.3062 ++ * 1.3063 ++ * In multi-call mode, we must return XZ_BUF_ERROR when it seems clear that we 1.3064 ++ * are not going to make any progress anymore. This is to prevent the caller 1.3065 ++ * from calling us infinitely when the input file is truncated or otherwise 1.3066 ++ * corrupt. Since zlib-style API allows that the caller fills the input buffer 1.3067 ++ * only when the decoder doesn't produce any new output, we have to be careful 1.3068 ++ * to avoid returning XZ_BUF_ERROR too easily: XZ_BUF_ERROR is returned only 1.3069 ++ * after the second consecutive call to xz_dec_run() that makes no progress. 1.3070 ++ * 1.3071 ++ * In single-call mode, if we couldn't decode everything and no error 1.3072 ++ * occurred, either the input is truncated or the output buffer is too small. 1.3073 ++ * Since we know that the last input byte never produces any output, we know 1.3074 ++ * that if all the input was consumed and decoding wasn't finished, the file 1.3075 ++ * must be corrupt. Otherwise the output buffer has to be too small or the 1.3076 ++ * file is corrupt in a way that decoding it produces too big output. 1.3077 ++ * 1.3078 ++ * If single-call decoding fails, we reset b->in_pos and b->out_pos back to 1.3079 ++ * their original values. This is because with some filter chains there won't 1.3080 ++ * be any valid uncompressed data in the output buffer unless the decoding 1.3081 ++ * actually succeeds (that's the price to pay of using the output buffer as 1.3082 ++ * the workspace). 1.3083 ++ */ 1.3084 ++XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b) 1.3085 ++{ 1.3086 ++ size_t in_start; 1.3087 ++ size_t out_start; 1.3088 ++ enum xz_ret ret; 1.3089 ++ 1.3090 ++ if (DEC_IS_SINGLE(s->mode)) 1.3091 ++ xz_dec_reset(s); 1.3092 ++ 1.3093 ++ in_start = b->in_pos; 1.3094 ++ out_start = b->out_pos; 1.3095 ++ ret = dec_main(s, b); 1.3096 ++ 1.3097 ++ if (DEC_IS_SINGLE(s->mode)) { 1.3098 ++ if (ret == XZ_OK) 1.3099 ++ ret = b->in_pos == b->in_size 1.3100 ++ ? XZ_DATA_ERROR : XZ_BUF_ERROR; 1.3101 ++ 1.3102 ++ if (ret != XZ_STREAM_END) { 1.3103 ++ b->in_pos = in_start; 1.3104 ++ b->out_pos = out_start; 1.3105 ++ } 1.3106 ++ 1.3107 ++ } else if (ret == XZ_OK && in_start == b->in_pos 1.3108 ++ && out_start == b->out_pos) { 1.3109 ++ if (s->allow_buf_error) 1.3110 ++ ret = XZ_BUF_ERROR; 1.3111 ++ 1.3112 ++ s->allow_buf_error = true; 1.3113 ++ } else { 1.3114 ++ s->allow_buf_error = false; 1.3115 ++ } 1.3116 ++ 1.3117 ++ return ret; 1.3118 ++} 1.3119 ++ 1.3120 ++XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max) 1.3121 ++{ 1.3122 ++ struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL); 1.3123 ++ if (s == NULL) 1.3124 ++ return NULL; 1.3125 ++ 1.3126 ++ s->mode = mode; 1.3127 ++ 1.3128 ++#ifdef XZ_DEC_BCJ 1.3129 ++ s->bcj = xz_dec_bcj_create(DEC_IS_SINGLE(mode)); 1.3130 ++ if (s->bcj == NULL) 1.3131 ++ goto error_bcj; 1.3132 ++#endif 1.3133 ++ 1.3134 ++ s->lzma2 = xz_dec_lzma2_create(mode, dict_max); 1.3135 ++ if (s->lzma2 == NULL) 1.3136 ++ goto error_lzma2; 1.3137 ++ 1.3138 ++ xz_dec_reset(s); 1.3139 ++ return s; 1.3140 ++ 1.3141 ++error_lzma2: 1.3142 ++#ifdef XZ_DEC_BCJ 1.3143 ++ xz_dec_bcj_end(s->bcj); 1.3144 ++error_bcj: 1.3145 ++#endif 1.3146 ++ kfree(s); 1.3147 ++ return NULL; 1.3148 ++} 1.3149 ++ 1.3150 ++XZ_EXTERN void xz_dec_reset(struct xz_dec *s) 1.3151 ++{ 1.3152 ++ s->sequence = SEQ_STREAM_HEADER; 1.3153 ++ s->allow_buf_error = false; 1.3154 ++ s->pos = 0; 1.3155 ++ s->crc32 = 0; 1.3156 ++ memzero(&s->block, sizeof(s->block)); 1.3157 ++ memzero(&s->index, sizeof(s->index)); 1.3158 ++ s->temp.pos = 0; 1.3159 ++ s->temp.size = STREAM_HEADER_SIZE; 1.3160 ++} 1.3161 ++ 1.3162 ++XZ_EXTERN void xz_dec_end(struct xz_dec *s) 1.3163 ++{ 1.3164 ++ if (s != NULL) { 1.3165 ++ xz_dec_lzma2_end(s->lzma2); 1.3166 ++#ifdef XZ_DEC_BCJ 1.3167 ++ xz_dec_bcj_end(s->bcj); 1.3168 ++#endif 1.3169 ++ kfree(s); 1.3170 ++ } 1.3171 ++} 1.3172 +diff --git a/lib/xz/xz_dec_syms.c b/lib/xz/xz_dec_syms.c 1.3173 +new file mode 100644 1.3174 +index 0000000..32eb3c0 1.3175 +--- /dev/null 1.3176 ++++ b/lib/xz/xz_dec_syms.c 1.3177 +@@ -0,0 +1,26 @@ 1.3178 ++/* 1.3179 ++ * XZ decoder module information 1.3180 ++ * 1.3181 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 1.3182 ++ * 1.3183 ++ * This file has been put into the public domain. 1.3184 ++ * You can do whatever you want with this file. 1.3185 ++ */ 1.3186 ++ 1.3187 ++#include <linux/module.h> 1.3188 ++#include <linux/xz.h> 1.3189 ++ 1.3190 ++EXPORT_SYMBOL(xz_dec_init); 1.3191 ++EXPORT_SYMBOL(xz_dec_reset); 1.3192 ++EXPORT_SYMBOL(xz_dec_run); 1.3193 ++EXPORT_SYMBOL(xz_dec_end); 1.3194 ++ 1.3195 ++MODULE_DESCRIPTION("XZ decompressor"); 1.3196 ++MODULE_VERSION("1.0"); 1.3197 ++MODULE_AUTHOR("Lasse Collin <lasse.collin@tukaani.org> and Igor Pavlov"); 1.3198 ++ 1.3199 ++/* 1.3200 ++ * This code is in the public domain, but in Linux it's simplest to just 1.3201 ++ * say it's GPL and consider the authors as the copyright holders. 1.3202 ++ */ 1.3203 ++MODULE_LICENSE("GPL"); 1.3204 +diff --git a/lib/xz/xz_dec_test.c b/lib/xz/xz_dec_test.c 1.3205 +new file mode 100644 1.3206 +index 0000000..da28a19 1.3207 +--- /dev/null 1.3208 ++++ b/lib/xz/xz_dec_test.c 1.3209 +@@ -0,0 +1,220 @@ 1.3210 ++/* 1.3211 ++ * XZ decoder tester 1.3212 ++ * 1.3213 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 1.3214 ++ * 1.3215 ++ * This file has been put into the public domain. 1.3216 ++ * You can do whatever you want with this file. 1.3217 ++ */ 1.3218 ++ 1.3219 ++#include <linux/kernel.h> 1.3220 ++#include <linux/module.h> 1.3221 ++#include <linux/fs.h> 1.3222 ++#include <linux/uaccess.h> 1.3223 ++#include <linux/crc32.h> 1.3224 ++#include <linux/xz.h> 1.3225 ++ 1.3226 ++/* Maximum supported dictionary size */ 1.3227 ++#define DICT_MAX (1 << 20) 1.3228 ++ 1.3229 ++/* Device name to pass to register_chrdev(). */ 1.3230 ++#define DEVICE_NAME "xz_dec_test" 1.3231 ++ 1.3232 ++/* Dynamically allocated device major number */ 1.3233 ++static int device_major; 1.3234 ++ 1.3235 ++/* 1.3236 ++ * We reuse the same decoder state, and thus can decode only one 1.3237 ++ * file at a time. 1.3238 ++ */ 1.3239 ++static bool device_is_open; 1.3240 ++ 1.3241 ++/* XZ decoder state */ 1.3242 ++static struct xz_dec *state; 1.3243 ++ 1.3244 ++/* 1.3245 ++ * Return value of xz_dec_run(). We need to avoid calling xz_dec_run() after 1.3246 ++ * it has returned XZ_STREAM_END, so we make this static. 1.3247 ++ */ 1.3248 ++static enum xz_ret ret; 1.3249 ++ 1.3250 ++/* 1.3251 ++ * Input and output buffers. The input buffer is used as a temporary safe 1.3252 ++ * place for the data coming from the userspace. 1.3253 ++ */ 1.3254 ++static uint8_t buffer_in[1024]; 1.3255 ++static uint8_t buffer_out[1024]; 1.3256 ++ 1.3257 ++/* 1.3258 ++ * Structure to pass the input and output buffers to the XZ decoder. 1.3259 ++ * A few of the fields are never modified so we initialize them here. 1.3260 ++ */ 1.3261 ++static struct xz_buf buffers = { 1.3262 ++ .in = buffer_in, 1.3263 ++ .out = buffer_out, 1.3264 ++ .out_size = sizeof(buffer_out) 1.3265 ++}; 1.3266 ++ 1.3267 ++/* 1.3268 ++ * CRC32 of uncompressed data. This is used to give the user a simple way 1.3269 ++ * to check that the decoder produces correct output. 1.3270 ++ */ 1.3271 ++static uint32_t crc; 1.3272 ++ 1.3273 ++static int xz_dec_test_open(struct inode *i, struct file *f) 1.3274 ++{ 1.3275 ++ if (device_is_open) 1.3276 ++ return -EBUSY; 1.3277 ++ 1.3278 ++ device_is_open = true; 1.3279 ++ 1.3280 ++ xz_dec_reset(state); 1.3281 ++ ret = XZ_OK; 1.3282 ++ crc = 0xFFFFFFFF; 1.3283 ++ 1.3284 ++ buffers.in_pos = 0; 1.3285 ++ buffers.in_size = 0; 1.3286 ++ buffers.out_pos = 0; 1.3287 ++ 1.3288 ++ printk(KERN_INFO DEVICE_NAME ": opened\n"); 1.3289 ++ return 0; 1.3290 ++} 1.3291 ++ 1.3292 ++static int xz_dec_test_release(struct inode *i, struct file *f) 1.3293 ++{ 1.3294 ++ device_is_open = false; 1.3295 ++ 1.3296 ++ if (ret == XZ_OK) 1.3297 ++ printk(KERN_INFO DEVICE_NAME ": input was truncated\n"); 1.3298 ++ 1.3299 ++ printk(KERN_INFO DEVICE_NAME ": closed\n"); 1.3300 ++ return 0; 1.3301 ++} 1.3302 ++ 1.3303 ++/* 1.3304 ++ * Decode the data given to us from the userspace. CRC32 of the uncompressed 1.3305 ++ * data is calculated and is printed at the end of successful decoding. The 1.3306 ++ * uncompressed data isn't stored anywhere for further use. 1.3307 ++ * 1.3308 ++ * The .xz file must have exactly one Stream and no Stream Padding. The data 1.3309 ++ * after the first Stream is considered to be garbage. 1.3310 ++ */ 1.3311 ++static ssize_t xz_dec_test_write(struct file *file, const char __user *buf, 1.3312 ++ size_t size, loff_t *pos) 1.3313 ++{ 1.3314 ++ size_t remaining; 1.3315 ++ 1.3316 ++ if (ret != XZ_OK) { 1.3317 ++ if (size > 0) 1.3318 ++ printk(KERN_INFO DEVICE_NAME ": %zu bytes of " 1.3319 ++ "garbage at the end of the file\n", 1.3320 ++ size); 1.3321 ++ 1.3322 ++ return -ENOSPC; 1.3323 ++ } 1.3324 ++ 1.3325 ++ printk(KERN_INFO DEVICE_NAME ": decoding %zu bytes of input\n", 1.3326 ++ size); 1.3327 ++ 1.3328 ++ remaining = size; 1.3329 ++ while ((remaining > 0 || buffers.out_pos == buffers.out_size) 1.3330 ++ && ret == XZ_OK) { 1.3331 ++ if (buffers.in_pos == buffers.in_size) { 1.3332 ++ buffers.in_pos = 0; 1.3333 ++ buffers.in_size = min(remaining, sizeof(buffer_in)); 1.3334 ++ if (copy_from_user(buffer_in, buf, buffers.in_size)) 1.3335 ++ return -EFAULT; 1.3336 ++ 1.3337 ++ buf += buffers.in_size; 1.3338 ++ remaining -= buffers.in_size; 1.3339 ++ } 1.3340 ++ 1.3341 ++ buffers.out_pos = 0; 1.3342 ++ ret = xz_dec_run(state, &buffers); 1.3343 ++ crc = crc32(crc, buffer_out, buffers.out_pos); 1.3344 ++ } 1.3345 ++ 1.3346 ++ switch (ret) { 1.3347 ++ case XZ_OK: 1.3348 ++ printk(KERN_INFO DEVICE_NAME ": XZ_OK\n"); 1.3349 ++ return size; 1.3350 ++ 1.3351 ++ case XZ_STREAM_END: 1.3352 ++ printk(KERN_INFO DEVICE_NAME ": XZ_STREAM_END, " 1.3353 ++ "CRC32 = 0x%08X\n", ~crc); 1.3354 ++ return size - remaining - (buffers.in_size - buffers.in_pos); 1.3355 ++ 1.3356 ++ case XZ_MEMLIMIT_ERROR: 1.3357 ++ printk(KERN_INFO DEVICE_NAME ": XZ_MEMLIMIT_ERROR\n"); 1.3358 ++ break; 1.3359 ++ 1.3360 ++ case XZ_FORMAT_ERROR: 1.3361 ++ printk(KERN_INFO DEVICE_NAME ": XZ_FORMAT_ERROR\n"); 1.3362 ++ break; 1.3363 ++ 1.3364 ++ case XZ_OPTIONS_ERROR: 1.3365 ++ printk(KERN_INFO DEVICE_NAME ": XZ_OPTIONS_ERROR\n"); 1.3366 ++ break; 1.3367 ++ 1.3368 ++ case XZ_DATA_ERROR: 1.3369 ++ printk(KERN_INFO DEVICE_NAME ": XZ_DATA_ERROR\n"); 1.3370 ++ break; 1.3371 ++ 1.3372 ++ case XZ_BUF_ERROR: 1.3373 ++ printk(KERN_INFO DEVICE_NAME ": XZ_BUF_ERROR\n"); 1.3374 ++ break; 1.3375 ++ 1.3376 ++ default: 1.3377 ++ printk(KERN_INFO DEVICE_NAME ": Bug detected!\n"); 1.3378 ++ break; 1.3379 ++ } 1.3380 ++ 1.3381 ++ return -EIO; 1.3382 ++} 1.3383 ++ 1.3384 ++/* Allocate the XZ decoder state and register the character device. */ 1.3385 ++static int __init xz_dec_test_init(void) 1.3386 ++{ 1.3387 ++ static const struct file_operations fileops = { 1.3388 ++ .owner = THIS_MODULE, 1.3389 ++ .open = &xz_dec_test_open, 1.3390 ++ .release = &xz_dec_test_release, 1.3391 ++ .write = &xz_dec_test_write 1.3392 ++ }; 1.3393 ++ 1.3394 ++ state = xz_dec_init(XZ_PREALLOC, DICT_MAX); 1.3395 ++ if (state == NULL) 1.3396 ++ return -ENOMEM; 1.3397 ++ 1.3398 ++ device_major = register_chrdev(0, DEVICE_NAME, &fileops); 1.3399 ++ if (device_major < 0) { 1.3400 ++ xz_dec_end(state); 1.3401 ++ return device_major; 1.3402 ++ } 1.3403 ++ 1.3404 ++ printk(KERN_INFO DEVICE_NAME ": module loaded\n"); 1.3405 ++ printk(KERN_INFO DEVICE_NAME ": Create a device node with " 1.3406 ++ "'mknod " DEVICE_NAME " c %d 0' and write .xz files " 1.3407 ++ "to it.\n", device_major); 1.3408 ++ return 0; 1.3409 ++} 1.3410 ++ 1.3411 ++static void __exit xz_dec_test_exit(void) 1.3412 ++{ 1.3413 ++ unregister_chrdev(device_major, DEVICE_NAME); 1.3414 ++ xz_dec_end(state); 1.3415 ++ printk(KERN_INFO DEVICE_NAME ": module unloaded\n"); 1.3416 ++} 1.3417 ++ 1.3418 ++module_init(xz_dec_test_init); 1.3419 ++module_exit(xz_dec_test_exit); 1.3420 ++ 1.3421 ++MODULE_DESCRIPTION("XZ decompressor tester"); 1.3422 ++MODULE_VERSION("1.0"); 1.3423 ++MODULE_AUTHOR("Lasse Collin <lasse.collin@tukaani.org>"); 1.3424 ++ 1.3425 ++/* 1.3426 ++ * This code is in the public domain, but in Linux it's simplest to just 1.3427 ++ * say it's GPL and consider the authors as the copyright holders. 1.3428 ++ */ 1.3429 ++MODULE_LICENSE("GPL"); 1.3430 +diff --git a/lib/xz/xz_lzma2.h b/lib/xz/xz_lzma2.h 1.3431 +new file mode 100644 1.3432 +index 0000000..071d67b 1.3433 +--- /dev/null 1.3434 ++++ b/lib/xz/xz_lzma2.h 1.3435 +@@ -0,0 +1,204 @@ 1.3436 ++/* 1.3437 ++ * LZMA2 definitions 1.3438 ++ * 1.3439 ++ * Authors: Lasse Collin <lasse.collin@tukaani.org> 1.3440 ++ * Igor Pavlov <http://7-zip.org/> 1.3441 ++ * 1.3442 ++ * This file has been put into the public domain. 1.3443 ++ * You can do whatever you want with this file. 1.3444 ++ */ 1.3445 ++ 1.3446 ++#ifndef XZ_LZMA2_H 1.3447 ++#define XZ_LZMA2_H 1.3448 ++ 1.3449 ++/* Range coder constants */ 1.3450 ++#define RC_SHIFT_BITS 8 1.3451 ++#define RC_TOP_BITS 24 1.3452 ++#define RC_TOP_VALUE (1 << RC_TOP_BITS) 1.3453 ++#define RC_BIT_MODEL_TOTAL_BITS 11 1.3454 ++#define RC_BIT_MODEL_TOTAL (1 << RC_BIT_MODEL_TOTAL_BITS) 1.3455 ++#define RC_MOVE_BITS 5 1.3456 ++ 1.3457 ++/* 1.3458 ++ * Maximum number of position states. A position state is the lowest pb 1.3459 ++ * number of bits of the current uncompressed offset. In some places there 1.3460 ++ * are different sets of probabilities for different position states. 1.3461 ++ */ 1.3462 ++#define POS_STATES_MAX (1 << 4) 1.3463 ++ 1.3464 ++/* 1.3465 ++ * This enum is used to track which LZMA symbols have occurred most recently 1.3466 ++ * and in which order. This information is used to predict the next symbol. 1.3467 ++ * 1.3468 ++ * Symbols: 1.3469 ++ * - Literal: One 8-bit byte 1.3470 ++ * - Match: Repeat a chunk of data at some distance 1.3471 ++ * - Long repeat: Multi-byte match at a recently seen distance 1.3472 ++ * - Short repeat: One-byte repeat at a recently seen distance 1.3473 ++ * 1.3474 ++ * The symbol names are in from STATE_oldest_older_previous. REP means 1.3475 ++ * either short or long repeated match, and NONLIT means any non-literal. 1.3476 ++ */ 1.3477 ++enum lzma_state { 1.3478 ++ STATE_LIT_LIT, 1.3479 ++ STATE_MATCH_LIT_LIT, 1.3480 ++ STATE_REP_LIT_LIT, 1.3481 ++ STATE_SHORTREP_LIT_LIT, 1.3482 ++ STATE_MATCH_LIT, 1.3483 ++ STATE_REP_LIT, 1.3484 ++ STATE_SHORTREP_LIT, 1.3485 ++ STATE_LIT_MATCH, 1.3486 ++ STATE_LIT_LONGREP, 1.3487 ++ STATE_LIT_SHORTREP, 1.3488 ++ STATE_NONLIT_MATCH, 1.3489 ++ STATE_NONLIT_REP 1.3490 ++}; 1.3491 ++ 1.3492 ++/* Total number of states */ 1.3493 ++#define STATES 12 1.3494 ++ 1.3495 ++/* The lowest 7 states indicate that the previous state was a literal. */ 1.3496 ++#define LIT_STATES 7 1.3497 ++ 1.3498 ++/* Indicate that the latest symbol was a literal. */ 1.3499 ++static inline void lzma_state_literal(enum lzma_state *state) 1.3500 ++{ 1.3501 ++ if (*state <= STATE_SHORTREP_LIT_LIT) 1.3502 ++ *state = STATE_LIT_LIT; 1.3503 ++ else if (*state <= STATE_LIT_SHORTREP) 1.3504 ++ *state -= 3; 1.3505 ++ else 1.3506 ++ *state -= 6; 1.3507 ++} 1.3508 ++ 1.3509 ++/* Indicate that the latest symbol was a match. */ 1.3510 ++static inline void lzma_state_match(enum lzma_state *state) 1.3511 ++{ 1.3512 ++ *state = *state < LIT_STATES ? STATE_LIT_MATCH : STATE_NONLIT_MATCH; 1.3513 ++} 1.3514 ++ 1.3515 ++/* Indicate that the latest state was a long repeated match. */ 1.3516 ++static inline void lzma_state_long_rep(enum lzma_state *state) 1.3517 ++{ 1.3518 ++ *state = *state < LIT_STATES ? STATE_LIT_LONGREP : STATE_NONLIT_REP; 1.3519 ++} 1.3520 ++ 1.3521 ++/* Indicate that the latest symbol was a short match. */ 1.3522 ++static inline void lzma_state_short_rep(enum lzma_state *state) 1.3523 ++{ 1.3524 ++ *state = *state < LIT_STATES ? STATE_LIT_SHORTREP : STATE_NONLIT_REP; 1.3525 ++} 1.3526 ++ 1.3527 ++/* Test if the previous symbol was a literal. */ 1.3528 ++static inline bool lzma_state_is_literal(enum lzma_state state) 1.3529 ++{ 1.3530 ++ return state < LIT_STATES; 1.3531 ++} 1.3532 ++ 1.3533 ++/* Each literal coder is divided in three sections: 1.3534 ++ * - 0x001-0x0FF: Without match byte 1.3535 ++ * - 0x101-0x1FF: With match byte; match bit is 0 1.3536 ++ * - 0x201-0x2FF: With match byte; match bit is 1 1.3537 ++ * 1.3538 ++ * Match byte is used when the previous LZMA symbol was something else than 1.3539 ++ * a literal (that is, it was some kind of match). 1.3540 ++ */ 1.3541 ++#define LITERAL_CODER_SIZE 0x300 1.3542 ++ 1.3543 ++/* Maximum number of literal coders */ 1.3544 ++#define LITERAL_CODERS_MAX (1 << 4) 1.3545 ++ 1.3546 ++/* Minimum length of a match is two bytes. */ 1.3547 ++#define MATCH_LEN_MIN 2 1.3548 ++ 1.3549 ++/* Match length is encoded with 4, 5, or 10 bits. 1.3550 ++ * 1.3551 ++ * Length Bits 1.3552 ++ * 2-9 4 = Choice=0 + 3 bits 1.3553 ++ * 10-17 5 = Choice=1 + Choice2=0 + 3 bits 1.3554 ++ * 18-273 10 = Choice=1 + Choice2=1 + 8 bits 1.3555 ++ */ 1.3556 ++#define LEN_LOW_BITS 3 1.3557 ++#define LEN_LOW_SYMBOLS (1 << LEN_LOW_BITS) 1.3558 ++#define LEN_MID_BITS 3 1.3559 ++#define LEN_MID_SYMBOLS (1 << LEN_MID_BITS) 1.3560 ++#define LEN_HIGH_BITS 8 1.3561 ++#define LEN_HIGH_SYMBOLS (1 << LEN_HIGH_BITS) 1.3562 ++#define LEN_SYMBOLS (LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS + LEN_HIGH_SYMBOLS) 1.3563 ++ 1.3564 ++/* 1.3565 ++ * Maximum length of a match is 273 which is a result of the encoding 1.3566 ++ * described above. 1.3567 ++ */ 1.3568 ++#define MATCH_LEN_MAX (MATCH_LEN_MIN + LEN_SYMBOLS - 1) 1.3569 ++ 1.3570 ++/* 1.3571 ++ * Different sets of probabilities are used for match distances that have 1.3572 ++ * very short match length: Lengths of 2, 3, and 4 bytes have a separate 1.3573 ++ * set of probabilities for each length. The matches with longer length 1.3574 ++ * use a shared set of probabilities. 1.3575 ++ */ 1.3576 ++#define DIST_STATES 4 1.3577 ++ 1.3578 ++/* 1.3579 ++ * Get the index of the appropriate probability array for decoding 1.3580 ++ * the distance slot. 1.3581 ++ */ 1.3582 ++static inline uint32_t lzma_get_dist_state(uint32_t len) 1.3583 ++{ 1.3584 ++ return len < DIST_STATES + MATCH_LEN_MIN 1.3585 ++ ? len - MATCH_LEN_MIN : DIST_STATES - 1; 1.3586 ++} 1.3587 ++ 1.3588 ++/* 1.3589 ++ * The highest two bits of a 32-bit match distance are encoded using six bits. 1.3590 ++ * This six-bit value is called a distance slot. This way encoding a 32-bit 1.3591 ++ * value takes 6-36 bits, larger values taking more bits. 1.3592 ++ */ 1.3593 ++#define DIST_SLOT_BITS 6 1.3594 ++#define DIST_SLOTS (1 << DIST_SLOT_BITS) 1.3595 ++ 1.3596 ++/* Match distances up to 127 are fully encoded using probabilities. Since 1.3597 ++ * the highest two bits (distance slot) are always encoded using six bits, 1.3598 ++ * the distances 0-3 don't need any additional bits to encode, since the 1.3599 ++ * distance slot itself is the same as the actual distance. DIST_MODEL_START 1.3600 ++ * indicates the first distance slot where at least one additional bit is 1.3601 ++ * needed. 1.3602 ++ */ 1.3603 ++#define DIST_MODEL_START 4 1.3604 ++ 1.3605 ++/* 1.3606 ++ * Match distances greater than 127 are encoded in three pieces: 1.3607 ++ * - distance slot: the highest two bits 1.3608 ++ * - direct bits: 2-26 bits below the highest two bits 1.3609 ++ * - alignment bits: four lowest bits 1.3610 ++ * 1.3611 ++ * Direct bits don't use any probabilities. 1.3612 ++ * 1.3613 ++ * The distance slot value of 14 is for distances 128-191. 1.3614 ++ */ 1.3615 ++#define DIST_MODEL_END 14 1.3616 ++ 1.3617 ++/* Distance slots that indicate a distance <= 127. */ 1.3618 ++#define FULL_DISTANCES_BITS (DIST_MODEL_END / 2) 1.3619 ++#define FULL_DISTANCES (1 << FULL_DISTANCES_BITS) 1.3620 ++ 1.3621 ++/* 1.3622 ++ * For match distances greater than 127, only the highest two bits and the 1.3623 ++ * lowest four bits (alignment) is encoded using probabilities. 1.3624 ++ */ 1.3625 ++#define ALIGN_BITS 4 1.3626 ++#define ALIGN_SIZE (1 << ALIGN_BITS) 1.3627 ++#define ALIGN_MASK (ALIGN_SIZE - 1) 1.3628 ++ 1.3629 ++/* Total number of all probability variables */ 1.3630 ++#define PROBS_TOTAL (1846 + LITERAL_CODERS_MAX * LITERAL_CODER_SIZE) 1.3631 ++ 1.3632 ++/* 1.3633 ++ * LZMA remembers the four most recent match distances. Reusing these 1.3634 ++ * distances tends to take less space than re-encoding the actual 1.3635 ++ * distance value. 1.3636 ++ */ 1.3637 ++#define REPS 4 1.3638 ++ 1.3639 ++#endif 1.3640 +diff --git a/lib/xz/xz_private.h b/lib/xz/xz_private.h 1.3641 +new file mode 100644 1.3642 +index 0000000..a65633e 1.3643 +--- /dev/null 1.3644 ++++ b/lib/xz/xz_private.h 1.3645 +@@ -0,0 +1,156 @@ 1.3646 ++/* 1.3647 ++ * Private includes and definitions 1.3648 ++ * 1.3649 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 1.3650 ++ * 1.3651 ++ * This file has been put into the public domain. 1.3652 ++ * You can do whatever you want with this file. 1.3653 ++ */ 1.3654 ++ 1.3655 ++#ifndef XZ_PRIVATE_H 1.3656 ++#define XZ_PRIVATE_H 1.3657 ++ 1.3658 ++#ifdef __KERNEL__ 1.3659 ++# include <linux/xz.h> 1.3660 ++# include <asm/byteorder.h> 1.3661 ++# include <asm/unaligned.h> 1.3662 ++ /* XZ_PREBOOT may be defined only via decompress_unxz.c. */ 1.3663 ++# ifndef XZ_PREBOOT 1.3664 ++# include <linux/slab.h> 1.3665 ++# include <linux/vmalloc.h> 1.3666 ++# include <linux/string.h> 1.3667 ++# ifdef CONFIG_XZ_DEC_X86 1.3668 ++# define XZ_DEC_X86 1.3669 ++# endif 1.3670 ++# ifdef CONFIG_XZ_DEC_POWERPC 1.3671 ++# define XZ_DEC_POWERPC 1.3672 ++# endif 1.3673 ++# ifdef CONFIG_XZ_DEC_IA64 1.3674 ++# define XZ_DEC_IA64 1.3675 ++# endif 1.3676 ++# ifdef CONFIG_XZ_DEC_ARM 1.3677 ++# define XZ_DEC_ARM 1.3678 ++# endif 1.3679 ++# ifdef CONFIG_XZ_DEC_ARMTHUMB 1.3680 ++# define XZ_DEC_ARMTHUMB 1.3681 ++# endif 1.3682 ++# ifdef CONFIG_XZ_DEC_SPARC 1.3683 ++# define XZ_DEC_SPARC 1.3684 ++# endif 1.3685 ++# define memeq(a, b, size) (memcmp(a, b, size) == 0) 1.3686 ++# define memzero(buf, size) memset(buf, 0, size) 1.3687 ++# endif 1.3688 ++# define get_le32(p) le32_to_cpup((const uint32_t *)(p)) 1.3689 ++#else 1.3690 ++ /* 1.3691 ++ * For userspace builds, use a separate header to define the required 1.3692 ++ * macros and functions. This makes it easier to adapt the code into 1.3693 ++ * different environments and avoids clutter in the Linux kernel tree. 1.3694 ++ */ 1.3695 ++# include "xz_config.h" 1.3696 ++#endif 1.3697 ++ 1.3698 ++/* If no specific decoding mode is requested, enable support for all modes. */ 1.3699 ++#if !defined(XZ_DEC_SINGLE) && !defined(XZ_DEC_PREALLOC) \ 1.3700 ++ && !defined(XZ_DEC_DYNALLOC) 1.3701 ++# define XZ_DEC_SINGLE 1.3702 ++# define XZ_DEC_PREALLOC 1.3703 ++# define XZ_DEC_DYNALLOC 1.3704 ++#endif 1.3705 ++ 1.3706 ++/* 1.3707 ++ * The DEC_IS_foo(mode) macros are used in "if" statements. If only some 1.3708 ++ * of the supported modes are enabled, these macros will evaluate to true or 1.3709 ++ * false at compile time and thus allow the compiler to omit unneeded code. 1.3710 ++ */ 1.3711 ++#ifdef XZ_DEC_SINGLE 1.3712 ++# define DEC_IS_SINGLE(mode) ((mode) == XZ_SINGLE) 1.3713 ++#else 1.3714 ++# define DEC_IS_SINGLE(mode) (false) 1.3715 ++#endif 1.3716 ++ 1.3717 ++#ifdef XZ_DEC_PREALLOC 1.3718 ++# define DEC_IS_PREALLOC(mode) ((mode) == XZ_PREALLOC) 1.3719 ++#else 1.3720 ++# define DEC_IS_PREALLOC(mode) (false) 1.3721 ++#endif 1.3722 ++ 1.3723 ++#ifdef XZ_DEC_DYNALLOC 1.3724 ++# define DEC_IS_DYNALLOC(mode) ((mode) == XZ_DYNALLOC) 1.3725 ++#else 1.3726 ++# define DEC_IS_DYNALLOC(mode) (false) 1.3727 ++#endif 1.3728 ++ 1.3729 ++#if !defined(XZ_DEC_SINGLE) 1.3730 ++# define DEC_IS_MULTI(mode) (true) 1.3731 ++#elif defined(XZ_DEC_PREALLOC) || defined(XZ_DEC_DYNALLOC) 1.3732 ++# define DEC_IS_MULTI(mode) ((mode) != XZ_SINGLE) 1.3733 ++#else 1.3734 ++# define DEC_IS_MULTI(mode) (false) 1.3735 ++#endif 1.3736 ++ 1.3737 ++/* 1.3738 ++ * If any of the BCJ filter decoders are wanted, define XZ_DEC_BCJ. 1.3739 ++ * XZ_DEC_BCJ is used to enable generic support for BCJ decoders. 1.3740 ++ */ 1.3741 ++#ifndef XZ_DEC_BCJ 1.3742 ++# if defined(XZ_DEC_X86) || defined(XZ_DEC_POWERPC) \ 1.3743 ++ || defined(XZ_DEC_IA64) || defined(XZ_DEC_ARM) \ 1.3744 ++ || defined(XZ_DEC_ARM) || defined(XZ_DEC_ARMTHUMB) \ 1.3745 ++ || defined(XZ_DEC_SPARC) 1.3746 ++# define XZ_DEC_BCJ 1.3747 ++# endif 1.3748 ++#endif 1.3749 ++ 1.3750 ++/* 1.3751 ++ * Allocate memory for LZMA2 decoder. xz_dec_lzma2_reset() must be used 1.3752 ++ * before calling xz_dec_lzma2_run(). 1.3753 ++ */ 1.3754 ++XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, 1.3755 ++ uint32_t dict_max); 1.3756 ++ 1.3757 ++/* 1.3758 ++ * Decode the LZMA2 properties (one byte) and reset the decoder. Return 1.3759 ++ * XZ_OK on success, XZ_MEMLIMIT_ERROR if the preallocated dictionary is not 1.3760 ++ * big enough, and XZ_OPTIONS_ERROR if props indicates something that this 1.3761 ++ * decoder doesn't support. 1.3762 ++ */ 1.3763 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, 1.3764 ++ uint8_t props); 1.3765 ++ 1.3766 ++/* Decode raw LZMA2 stream from b->in to b->out. */ 1.3767 ++XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, 1.3768 ++ struct xz_buf *b); 1.3769 ++ 1.3770 ++/* Free the memory allocated for the LZMA2 decoder. */ 1.3771 ++XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s); 1.3772 ++ 1.3773 ++#ifdef XZ_DEC_BCJ 1.3774 ++/* 1.3775 ++ * Allocate memory for BCJ decoders. xz_dec_bcj_reset() must be used before 1.3776 ++ * calling xz_dec_bcj_run(). 1.3777 ++ */ 1.3778 ++XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call); 1.3779 ++ 1.3780 ++/* 1.3781 ++ * Decode the Filter ID of a BCJ filter. This implementation doesn't 1.3782 ++ * support custom start offsets, so no decoding of Filter Properties 1.3783 ++ * is needed. Returns XZ_OK if the given Filter ID is supported. 1.3784 ++ * Otherwise XZ_OPTIONS_ERROR is returned. 1.3785 ++ */ 1.3786 ++XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id); 1.3787 ++ 1.3788 ++/* 1.3789 ++ * Decode raw BCJ + LZMA2 stream. This must be used only if there actually is 1.3790 ++ * a BCJ filter in the chain. If the chain has only LZMA2, xz_dec_lzma2_run() 1.3791 ++ * must be called directly. 1.3792 ++ */ 1.3793 ++XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, 1.3794 ++ struct xz_dec_lzma2 *lzma2, 1.3795 ++ struct xz_buf *b); 1.3796 ++ 1.3797 ++/* Free the memory allocated for the BCJ filters. */ 1.3798 ++#define xz_dec_bcj_end(s) kfree(s) 1.3799 ++#endif 1.3800 ++ 1.3801 ++#endif 1.3802 +diff --git a/lib/xz/xz_stream.h b/lib/xz/xz_stream.h 1.3803 +new file mode 100644 1.3804 +index 0000000..66cb5a7 1.3805 +--- /dev/null 1.3806 ++++ b/lib/xz/xz_stream.h 1.3807 +@@ -0,0 +1,62 @@ 1.3808 ++/* 1.3809 ++ * Definitions for handling the .xz file format 1.3810 ++ * 1.3811 ++ * Author: Lasse Collin <lasse.collin@tukaani.org> 1.3812 ++ * 1.3813 ++ * This file has been put into the public domain. 1.3814 ++ * You can do whatever you want with this file. 1.3815 ++ */ 1.3816 ++ 1.3817 ++#ifndef XZ_STREAM_H 1.3818 ++#define XZ_STREAM_H 1.3819 ++ 1.3820 ++#if defined(__KERNEL__) && !XZ_INTERNAL_CRC32 1.3821 ++# include <linux/crc32.h> 1.3822 ++# undef crc32 1.3823 ++# define xz_crc32(buf, size, crc) \ 1.3824 ++ (~crc32_le(~(uint32_t)(crc), buf, size)) 1.3825 ++#endif 1.3826 ++ 1.3827 ++/* 1.3828 ++ * See the .xz file format specification at 1.3829 ++ * http://tukaani.org/xz/xz-file-format.txt 1.3830 ++ * to understand the container format. 1.3831 ++ */ 1.3832 ++ 1.3833 ++#define STREAM_HEADER_SIZE 12 1.3834 ++ 1.3835 ++#define HEADER_MAGIC "\3757zXZ" 1.3836 ++#define HEADER_MAGIC_SIZE 6 1.3837 ++ 1.3838 ++#define FOOTER_MAGIC "YZ" 1.3839 ++#define FOOTER_MAGIC_SIZE 2 1.3840 ++ 1.3841 ++/* 1.3842 ++ * Variable-length integer can hold a 63-bit unsigned integer or a special 1.3843 ++ * value indicating that the value is unknown. 1.3844 ++ * 1.3845 ++ * Experimental: vli_type can be defined to uint32_t to save a few bytes 1.3846 ++ * in code size (no effect on speed). Doing so limits the uncompressed and 1.3847 ++ * compressed size of the file to less than 256 MiB and may also weaken 1.3848 ++ * error detection slightly. 1.3849 ++ */ 1.3850 ++typedef uint64_t vli_type; 1.3851 ++ 1.3852 ++#define VLI_MAX ((vli_type)-1 / 2) 1.3853 ++#define VLI_UNKNOWN ((vli_type)-1) 1.3854 ++ 1.3855 ++/* Maximum encoded size of a VLI */ 1.3856 ++#define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7) 1.3857 ++ 1.3858 ++/* Integrity Check types */ 1.3859 ++enum xz_check { 1.3860 ++ XZ_CHECK_NONE = 0, 1.3861 ++ XZ_CHECK_CRC32 = 1, 1.3862 ++ XZ_CHECK_CRC64 = 4, 1.3863 ++ XZ_CHECK_SHA256 = 10 1.3864 ++}; 1.3865 ++ 1.3866 ++/* Maximum possible Check ID */ 1.3867 ++#define XZ_CHECK_MAX 15 1.3868 ++ 1.3869 ++#endif 1.3870 +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib 1.3871 +index 54fd1b7..b862007 100644 1.3872 +--- a/scripts/Makefile.lib 1.3873 ++++ b/scripts/Makefile.lib 1.3874 +@@ -246,6 +246,34 @@ cmd_lzo = (cat $(filter-out FORCE,$^) | \ 1.3875 + lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 1.3876 + (rm -f $@ ; false) 1.3877 + 1.3878 ++# XZ 1.3879 ++# --------------------------------------------------------------------------- 1.3880 ++# Use xzkern to compress the kernel image and xzmisc to compress other things. 1.3881 ++# 1.3882 ++# xzkern uses a big LZMA2 dictionary since it doesn't increase memory usage 1.3883 ++# of the kernel decompressor. A BCJ filter is used if it is available for 1.3884 ++# the target architecture. xzkern also appends uncompressed size of the data 1.3885 ++# using size_append. The .xz format has the size information available at 1.3886 ++# the end of the file too, but it's in more complex format and it's good to 1.3887 ++# avoid changing the part of the boot code that reads the uncompressed size. 1.3888 ++# Note that the bytes added by size_append will make the xz tool think that 1.3889 ++# the file is corrupt. This is expected. 1.3890 ++# 1.3891 ++# xzmisc doesn't use size_append, so it can be used to create normal .xz 1.3892 ++# files. xzmisc uses smaller LZMA2 dictionary than xzkern, because a very 1.3893 ++# big dictionary would increase the memory usage too much in the multi-call 1.3894 ++# decompression mode. A BCJ filter isn't used either. 1.3895 ++quiet_cmd_xzkern = XZKERN $@ 1.3896 ++cmd_xzkern = (cat $(filter-out FORCE,$^) | \ 1.3897 ++ sh $(srctree)/scripts/xz_wrap.sh && \ 1.3898 ++ $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 1.3899 ++ (rm -f $@ ; false) 1.3900 ++ 1.3901 ++quiet_cmd_xzmisc = XZMISC $@ 1.3902 ++cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ 1.3903 ++ xz --check=crc32 --lzma2=dict=1MiB) > $@ || \ 1.3904 ++ (rm -f $@ ; false) 1.3905 ++ 1.3906 + # misc stuff 1.3907 + # --------------------------------------------------------------------------- 1.3908 + quote:=" 1.3909 +diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh 1.3910 +new file mode 100644 1.3911 +index 0000000..17a5798 1.3912 +--- /dev/null 1.3913 ++++ b/scripts/xz_wrap.sh 1.3914 +@@ -0,0 +1,23 @@ 1.3915 ++#!/bin/sh 1.3916 ++# 1.3917 ++# This is a wrapper for xz to compress the kernel image using appropriate 1.3918 ++# compression options depending on the architecture. 1.3919 ++# 1.3920 ++# Author: Lasse Collin <lasse.collin@tukaani.org> 1.3921 ++# 1.3922 ++# This file has been put into the public domain. 1.3923 ++# You can do whatever you want with this file. 1.3924 ++# 1.3925 ++ 1.3926 ++BCJ= 1.3927 ++LZMA2OPTS= 1.3928 ++ 1.3929 ++case $ARCH in 1.3930 ++ x86|x86_64) BCJ=--x86 ;; 1.3931 ++ powerpc) BCJ=--powerpc ;; 1.3932 ++ ia64) BCJ=--ia64; LZMA2OPTS=pb=4 ;; 1.3933 ++ arm) BCJ=--arm ;; 1.3934 ++ sparc) BCJ=--sparc ;; 1.3935 ++esac 1.3936 ++ 1.3937 ++exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/linux-libre/stuff/linux-libre-2.6.37-libre-slitaz.config Tue Mar 15 03:24:23 2011 +0100 2.3 @@ -0,0 +1,3711 @@ 2.4 +# 2.5 +# Automatically generated make config: don't edit 2.6 +# Linux/i386 2.6.37 Kernel Configuration 2.7 +# Mon Feb 14 03:03:39 2011 2.8 +# 2.9 +# CONFIG_64BIT is not set 2.10 +CONFIG_X86_32=y 2.11 +# CONFIG_X86_64 is not set 2.12 +CONFIG_X86=y 2.13 +CONFIG_INSTRUCTION_DECODER=y 2.14 +CONFIG_OUTPUT_FORMAT="elf32-i386" 2.15 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" 2.16 +CONFIG_GENERIC_CMOS_UPDATE=y 2.17 +CONFIG_CLOCKSOURCE_WATCHDOG=y 2.18 +CONFIG_GENERIC_CLOCKEVENTS=y 2.19 +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 2.20 +CONFIG_LOCKDEP_SUPPORT=y 2.21 +CONFIG_STACKTRACE_SUPPORT=y 2.22 +CONFIG_HAVE_LATENCYTOP_SUPPORT=y 2.23 +CONFIG_MMU=y 2.24 +CONFIG_ZONE_DMA=y 2.25 +# CONFIG_NEED_DMA_MAP_STATE is not set 2.26 +CONFIG_NEED_SG_DMA_LENGTH=y 2.27 +CONFIG_GENERIC_ISA_DMA=y 2.28 +CONFIG_GENERIC_IOMAP=y 2.29 +CONFIG_GENERIC_BUG=y 2.30 +CONFIG_GENERIC_HWEIGHT=y 2.31 +CONFIG_GENERIC_GPIO=y 2.32 +CONFIG_ARCH_MAY_HAVE_PC_FDC=y 2.33 +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set 2.34 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y 2.35 +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 2.36 +CONFIG_GENERIC_CALIBRATE_DELAY=y 2.37 +# CONFIG_GENERIC_TIME_VSYSCALL is not set 2.38 +CONFIG_ARCH_HAS_CPU_RELAX=y 2.39 +CONFIG_ARCH_HAS_DEFAULT_IDLE=y 2.40 +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 2.41 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y 2.42 +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 2.43 +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 2.44 +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 2.45 +CONFIG_ARCH_HIBERNATION_POSSIBLE=y 2.46 +CONFIG_ARCH_SUSPEND_POSSIBLE=y 2.47 +# CONFIG_ZONE_DMA32 is not set 2.48 +CONFIG_ARCH_POPULATES_NODE_MAP=y 2.49 +# CONFIG_AUDIT_ARCH is not set 2.50 +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 2.51 +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 2.52 +CONFIG_USE_GENERIC_SMP_HELPERS=y 2.53 +CONFIG_X86_32_SMP=y 2.54 +CONFIG_X86_HT=y 2.55 +CONFIG_X86_TRAMPOLINE=y 2.56 +CONFIG_X86_32_LAZY_GS=y 2.57 +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" 2.58 +CONFIG_KTIME_SCALAR=y 2.59 +CONFIG_ARCH_CPU_PROBE_RELEASE=y 2.60 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 2.61 +CONFIG_CONSTRUCTORS=y 2.62 +CONFIG_HAVE_IRQ_WORK=y 2.63 +CONFIG_IRQ_WORK=y 2.64 + 2.65 +# 2.66 +# General setup 2.67 +# 2.68 +CONFIG_EXPERIMENTAL=y 2.69 +CONFIG_LOCK_KERNEL=y 2.70 +CONFIG_INIT_ENV_ARG_LIMIT=32 2.71 +CONFIG_CROSS_COMPILE="" 2.72 +CONFIG_LOCALVERSION="-slitaz" 2.73 +# CONFIG_LOCALVERSION_AUTO is not set 2.74 +CONFIG_HAVE_KERNEL_GZIP=y 2.75 +CONFIG_HAVE_KERNEL_BZIP2=y 2.76 +CONFIG_HAVE_KERNEL_LZMA=y 2.77 +CONFIG_HAVE_KERNEL_XZ=y 2.78 +CONFIG_HAVE_KERNEL_LZO=y 2.79 +# CONFIG_KERNEL_GZIP is not set 2.80 +# CONFIG_KERNEL_BZIP2 is not set 2.81 +CONFIG_KERNEL_LZMA=y 2.82 +# CONFIG_KERNEL_XZ is not set 2.83 +# CONFIG_KERNEL_LZO is not set 2.84 +CONFIG_SWAP=y 2.85 +CONFIG_SYSVIPC=y 2.86 +CONFIG_SYSVIPC_SYSCTL=y 2.87 +CONFIG_POSIX_MQUEUE=y 2.88 +CONFIG_POSIX_MQUEUE_SYSCTL=y 2.89 +CONFIG_BSD_PROCESS_ACCT=y 2.90 +# CONFIG_BSD_PROCESS_ACCT_V3 is not set 2.91 +# CONFIG_TASKSTATS is not set 2.92 +# CONFIG_AUDIT is not set 2.93 +CONFIG_HAVE_GENERIC_HARDIRQS=y 2.94 + 2.95 +# 2.96 +# IRQ subsystem 2.97 +# 2.98 +CONFIG_GENERIC_HARDIRQS=y 2.99 +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 2.100 +# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set 2.101 +CONFIG_HAVE_SPARSE_IRQ=y 2.102 +CONFIG_GENERIC_IRQ_PROBE=y 2.103 +CONFIG_GENERIC_PENDING_IRQ=y 2.104 +# CONFIG_AUTO_IRQ_AFFINITY is not set 2.105 +# CONFIG_IRQ_PER_CPU is not set 2.106 +# CONFIG_HARDIRQS_SW_RESEND is not set 2.107 +# CONFIG_SPARSE_IRQ is not set 2.108 + 2.109 +# 2.110 +# RCU Subsystem 2.111 +# 2.112 +CONFIG_TREE_RCU=y 2.113 +# CONFIG_PREEMPT_RCU is not set 2.114 +# CONFIG_RCU_TRACE is not set 2.115 +CONFIG_RCU_FANOUT=32 2.116 +# CONFIG_RCU_FANOUT_EXACT is not set 2.117 +# CONFIG_RCU_FAST_NO_HZ is not set 2.118 +# CONFIG_TREE_RCU_TRACE is not set 2.119 +CONFIG_IKCONFIG=y 2.120 +CONFIG_IKCONFIG_PROC=y 2.121 +CONFIG_LOG_BUF_SHIFT=14 2.122 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y 2.123 +# CONFIG_CGROUPS is not set 2.124 +CONFIG_NAMESPACES=y 2.125 +# CONFIG_UTS_NS is not set 2.126 +# CONFIG_IPC_NS is not set 2.127 +# CONFIG_USER_NS is not set 2.128 +# CONFIG_PID_NS is not set 2.129 +# CONFIG_NET_NS is not set 2.130 +# CONFIG_SYSFS_DEPRECATED is not set 2.131 +# CONFIG_RELAY is not set 2.132 +CONFIG_BLK_DEV_INITRD=y 2.133 +CONFIG_INITRAMFS_SOURCE="" 2.134 +CONFIG_RD_GZIP=y 2.135 +CONFIG_RD_BZIP2=y 2.136 +CONFIG_RD_LZMA=y 2.137 +CONFIG_RD_XZ=y 2.138 +CONFIG_RD_LZO=y 2.139 +CONFIG_CC_OPTIMIZE_FOR_SIZE=y 2.140 +CONFIG_SYSCTL=y 2.141 +CONFIG_ANON_INODES=y 2.142 +# CONFIG_EMBEDDED is not set 2.143 +CONFIG_UID16=y 2.144 +CONFIG_SYSCTL_SYSCALL=y 2.145 +CONFIG_KALLSYMS=y 2.146 +# CONFIG_KALLSYMS_EXTRA_PASS is not set 2.147 +CONFIG_HOTPLUG=y 2.148 +CONFIG_PRINTK=y 2.149 +CONFIG_BUG=y 2.150 +CONFIG_ELF_CORE=y 2.151 +CONFIG_PCSPKR_PLATFORM=y 2.152 +CONFIG_BASE_FULL=y 2.153 +CONFIG_FUTEX=y 2.154 +CONFIG_EPOLL=y 2.155 +CONFIG_SIGNALFD=y 2.156 +CONFIG_TIMERFD=y 2.157 +CONFIG_EVENTFD=y 2.158 +CONFIG_SHMEM=y 2.159 +CONFIG_AIO=y 2.160 +CONFIG_HAVE_PERF_EVENTS=y 2.161 + 2.162 +# 2.163 +# Kernel Performance Events And Counters 2.164 +# 2.165 +CONFIG_PERF_EVENTS=y 2.166 +# CONFIG_PERF_COUNTERS is not set 2.167 +CONFIG_VM_EVENT_COUNTERS=y 2.168 +CONFIG_PCI_QUIRKS=y 2.169 +CONFIG_COMPAT_BRK=y 2.170 +CONFIG_SLAB=y 2.171 +# CONFIG_SLUB is not set 2.172 +# CONFIG_PROFILING is not set 2.173 +CONFIG_HAVE_OPROFILE=y 2.174 +# CONFIG_KPROBES is not set 2.175 +# CONFIG_JUMP_LABEL is not set 2.176 +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 2.177 +CONFIG_USER_RETURN_NOTIFIER=y 2.178 +CONFIG_HAVE_IOREMAP_PROT=y 2.179 +CONFIG_HAVE_KPROBES=y 2.180 +CONFIG_HAVE_KRETPROBES=y 2.181 +CONFIG_HAVE_OPTPROBES=y 2.182 +CONFIG_HAVE_ARCH_TRACEHOOK=y 2.183 +CONFIG_HAVE_DMA_ATTRS=y 2.184 +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y 2.185 +CONFIG_HAVE_DMA_API_DEBUG=y 2.186 +CONFIG_HAVE_HW_BREAKPOINT=y 2.187 +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 2.188 +CONFIG_HAVE_USER_RETURN_NOTIFIER=y 2.189 +CONFIG_HAVE_PERF_EVENTS_NMI=y 2.190 +CONFIG_HAVE_ARCH_JUMP_LABEL=y 2.191 + 2.192 +# 2.193 +# GCOV-based kernel profiling 2.194 +# 2.195 +CONFIG_HAVE_GENERIC_DMA_COHERENT=y 2.196 +CONFIG_SLABINFO=y 2.197 +CONFIG_RT_MUTEXES=y 2.198 +CONFIG_BASE_SMALL=0 2.199 +CONFIG_MODULES=y 2.200 +# CONFIG_MODULE_FORCE_LOAD is not set 2.201 +CONFIG_MODULE_UNLOAD=y 2.202 +# CONFIG_MODULE_FORCE_UNLOAD is not set 2.203 +# CONFIG_MODVERSIONS is not set 2.204 +# CONFIG_MODULE_SRCVERSION_ALL is not set 2.205 +CONFIG_STOP_MACHINE=y 2.206 +CONFIG_BLOCK=y 2.207 +CONFIG_LBDAF=y 2.208 +# CONFIG_BLK_DEV_BSG is not set 2.209 +# CONFIG_BLK_DEV_INTEGRITY is not set 2.210 + 2.211 +# 2.212 +# IO Schedulers 2.213 +# 2.214 +CONFIG_IOSCHED_NOOP=y 2.215 +CONFIG_IOSCHED_DEADLINE=y 2.216 +# CONFIG_IOSCHED_CFQ is not set 2.217 +CONFIG_DEFAULT_DEADLINE=y 2.218 +# CONFIG_DEFAULT_NOOP is not set 2.219 +CONFIG_DEFAULT_IOSCHED="deadline" 2.220 +CONFIG_PREEMPT_NOTIFIERS=y 2.221 +# CONFIG_INLINE_SPIN_TRYLOCK is not set 2.222 +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set 2.223 +# CONFIG_INLINE_SPIN_LOCK is not set 2.224 +# CONFIG_INLINE_SPIN_LOCK_BH is not set 2.225 +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set 2.226 +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set 2.227 +CONFIG_INLINE_SPIN_UNLOCK=y 2.228 +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set 2.229 +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 2.230 +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set 2.231 +# CONFIG_INLINE_READ_TRYLOCK is not set 2.232 +# CONFIG_INLINE_READ_LOCK is not set 2.233 +# CONFIG_INLINE_READ_LOCK_BH is not set 2.234 +# CONFIG_INLINE_READ_LOCK_IRQ is not set 2.235 +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set 2.236 +CONFIG_INLINE_READ_UNLOCK=y 2.237 +# CONFIG_INLINE_READ_UNLOCK_BH is not set 2.238 +CONFIG_INLINE_READ_UNLOCK_IRQ=y 2.239 +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set 2.240 +# CONFIG_INLINE_WRITE_TRYLOCK is not set 2.241 +# CONFIG_INLINE_WRITE_LOCK is not set 2.242 +# CONFIG_INLINE_WRITE_LOCK_BH is not set 2.243 +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set 2.244 +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set 2.245 +CONFIG_INLINE_WRITE_UNLOCK=y 2.246 +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set 2.247 +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 2.248 +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set 2.249 +CONFIG_MUTEX_SPIN_ON_OWNER=y 2.250 +CONFIG_FREEZER=y 2.251 + 2.252 +# 2.253 +# Processor type and features 2.254 +# 2.255 +CONFIG_TICK_ONESHOT=y 2.256 +CONFIG_NO_HZ=y 2.257 +# CONFIG_HIGH_RES_TIMERS is not set 2.258 +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 2.259 +CONFIG_SMP=y 2.260 +CONFIG_X86_MPPARSE=y 2.261 +# CONFIG_X86_BIGSMP is not set 2.262 +CONFIG_X86_EXTENDED_PLATFORM=y 2.263 +# CONFIG_X86_ELAN is not set 2.264 +# CONFIG_X86_MRST is not set 2.265 +# CONFIG_X86_RDC321X is not set 2.266 +# CONFIG_X86_32_NON_STANDARD is not set 2.267 +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y 2.268 +CONFIG_SCHED_OMIT_FRAME_POINTER=y 2.269 +CONFIG_PARAVIRT_GUEST=y 2.270 +# CONFIG_XEN_PRIVILEGED_GUEST is not set 2.271 +CONFIG_KVM_CLOCK=y 2.272 +CONFIG_KVM_GUEST=y 2.273 +CONFIG_LGUEST_GUEST=y 2.274 +CONFIG_PARAVIRT=y 2.275 +# CONFIG_PARAVIRT_SPINLOCKS is not set 2.276 +CONFIG_PARAVIRT_CLOCK=y 2.277 +CONFIG_NO_BOOTMEM=y 2.278 +# CONFIG_MEMTEST is not set 2.279 +# CONFIG_M386 is not set 2.280 +CONFIG_M486=y 2.281 +# CONFIG_M586 is not set 2.282 +# CONFIG_M586TSC is not set 2.283 +# CONFIG_M586MMX is not set 2.284 +# CONFIG_M686 is not set 2.285 +# CONFIG_MPENTIUMII is not set 2.286 +# CONFIG_MPENTIUMIII is not set 2.287 +# CONFIG_MPENTIUMM is not set 2.288 +# CONFIG_MPENTIUM4 is not set 2.289 +# CONFIG_MK6 is not set 2.290 +# CONFIG_MK7 is not set 2.291 +# CONFIG_MK8 is not set 2.292 +# CONFIG_MCRUSOE is not set 2.293 +# CONFIG_MEFFICEON is not set 2.294 +# CONFIG_MWINCHIPC6 is not set 2.295 +# CONFIG_MWINCHIP3D is not set 2.296 +# CONFIG_MGEODEGX1 is not set 2.297 +# CONFIG_MGEODE_LX is not set 2.298 +# CONFIG_MCYRIXIII is not set 2.299 +# CONFIG_MVIAC3_2 is not set 2.300 +# CONFIG_MVIAC7 is not set 2.301 +# CONFIG_MCORE2 is not set 2.302 +# CONFIG_MATOM is not set 2.303 +CONFIG_X86_GENERIC=y 2.304 +CONFIG_X86_CPU=y 2.305 +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 2.306 +CONFIG_X86_CMPXCHG=y 2.307 +CONFIG_X86_L1_CACHE_SHIFT=6 2.308 +CONFIG_X86_XADD=y 2.309 +CONFIG_X86_PPRO_FENCE=y 2.310 +CONFIG_X86_F00F_BUG=y 2.311 +CONFIG_X86_INVD_BUG=y 2.312 +CONFIG_X86_WP_WORKS_OK=y 2.313 +CONFIG_X86_INVLPG=y 2.314 +CONFIG_X86_BSWAP=y 2.315 +CONFIG_X86_POPAD_OK=y 2.316 +CONFIG_X86_ALIGNMENT_16=y 2.317 +CONFIG_X86_INTEL_USERCOPY=y 2.318 +CONFIG_X86_MINIMUM_CPU_FAMILY=4 2.319 +CONFIG_CPU_SUP_INTEL=y 2.320 +CONFIG_CPU_SUP_CYRIX_32=y 2.321 +CONFIG_CPU_SUP_AMD=y 2.322 +CONFIG_CPU_SUP_CENTAUR=y 2.323 +CONFIG_CPU_SUP_TRANSMETA_32=y 2.324 +CONFIG_CPU_SUP_UMC_32=y 2.325 +# CONFIG_HPET_TIMER is not set 2.326 +CONFIG_DMI=y 2.327 +# CONFIG_IOMMU_HELPER is not set 2.328 +# CONFIG_IOMMU_API is not set 2.329 +CONFIG_NR_CPUS=8 2.330 +# CONFIG_SCHED_SMT is not set 2.331 +CONFIG_SCHED_MC=y 2.332 +# CONFIG_IRQ_TIME_ACCOUNTING is not set 2.333 +CONFIG_PREEMPT_NONE=y 2.334 +# CONFIG_PREEMPT_VOLUNTARY is not set 2.335 +# CONFIG_PREEMPT is not set 2.336 +CONFIG_X86_LOCAL_APIC=y 2.337 +CONFIG_X86_IO_APIC=y 2.338 +# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set 2.339 +CONFIG_X86_MCE=y 2.340 +CONFIG_X86_MCE_INTEL=y 2.341 +CONFIG_X86_MCE_AMD=y 2.342 +# CONFIG_X86_ANCIENT_MCE is not set 2.343 +CONFIG_X86_MCE_THRESHOLD=y 2.344 +# CONFIG_X86_MCE_INJECT is not set 2.345 +CONFIG_X86_THERMAL_VECTOR=y 2.346 +CONFIG_VM86=y 2.347 +CONFIG_TOSHIBA=m 2.348 +CONFIG_I8K=m 2.349 +CONFIG_X86_REBOOTFIXUPS=y 2.350 +# CONFIG_MICROCODE is not set 2.351 +# CONFIG_X86_MSR is not set 2.352 +# CONFIG_X86_CPUID is not set 2.353 +# CONFIG_NOHIGHMEM is not set 2.354 +CONFIG_HIGHMEM4G=y 2.355 +CONFIG_PAGE_OFFSET=0xC0000000 2.356 +CONFIG_HIGHMEM=y 2.357 +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set 2.358 +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set 2.359 +CONFIG_ARCH_FLATMEM_ENABLE=y 2.360 +CONFIG_ARCH_SPARSEMEM_ENABLE=y 2.361 +CONFIG_ARCH_SELECT_MEMORY_MODEL=y 2.362 +CONFIG_ILLEGAL_POINTER_VALUE=0 2.363 +CONFIG_SELECT_MEMORY_MODEL=y 2.364 +CONFIG_FLATMEM_MANUAL=y 2.365 +# CONFIG_SPARSEMEM_MANUAL is not set 2.366 +CONFIG_FLATMEM=y 2.367 +CONFIG_FLAT_NODE_MEM_MAP=y 2.368 +CONFIG_SPARSEMEM_STATIC=y 2.369 +CONFIG_HAVE_MEMBLOCK=y 2.370 +CONFIG_PAGEFLAGS_EXTENDED=y 2.371 +CONFIG_SPLIT_PTLOCK_CPUS=4 2.372 +# CONFIG_PHYS_ADDR_T_64BIT is not set 2.373 +CONFIG_ZONE_DMA_FLAG=1 2.374 +CONFIG_BOUNCE=y 2.375 +CONFIG_VIRT_TO_BUS=y 2.376 +CONFIG_MMU_NOTIFIER=y 2.377 +# CONFIG_KSM is not set 2.378 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 2.379 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y 2.380 +# CONFIG_MEMORY_FAILURE is not set 2.381 +# CONFIG_HIGHPTE is not set 2.382 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 2.383 +CONFIG_X86_RESERVE_LOW=64 2.384 +CONFIG_MATH_EMULATION=y 2.385 +CONFIG_MTRR=y 2.386 +CONFIG_MTRR_SANITIZER=y 2.387 +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 2.388 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 2.389 +CONFIG_X86_PAT=y 2.390 +CONFIG_ARCH_USES_PG_UNCACHED=y 2.391 +# CONFIG_EFI is not set 2.392 +# CONFIG_SECCOMP is not set 2.393 +# CONFIG_CC_STACKPROTECTOR is not set 2.394 +# CONFIG_HZ_100 is not set 2.395 +# CONFIG_HZ_250 is not set 2.396 +# CONFIG_HZ_300 is not set 2.397 +CONFIG_HZ_1000=y 2.398 +CONFIG_HZ=1000 2.399 +# CONFIG_SCHED_HRTICK is not set 2.400 +CONFIG_KEXEC=y 2.401 +# CONFIG_CRASH_DUMP is not set 2.402 +# CONFIG_KEXEC_JUMP is not set 2.403 +CONFIG_PHYSICAL_START=0x1000000 2.404 +# CONFIG_RELOCATABLE is not set 2.405 +CONFIG_PHYSICAL_ALIGN=0x100000 2.406 +CONFIG_HOTPLUG_CPU=y 2.407 +CONFIG_COMPAT_VDSO=y 2.408 +# CONFIG_CMDLINE_BOOL is not set 2.409 +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 2.410 + 2.411 +# 2.412 +# Power management and ACPI options 2.413 +# 2.414 +CONFIG_PM=y 2.415 +# CONFIG_PM_DEBUG is not set 2.416 +CONFIG_PM_SLEEP_SMP=y 2.417 +CONFIG_PM_SLEEP=y 2.418 +CONFIG_SUSPEND_NVS=y 2.419 +CONFIG_SUSPEND=y 2.420 +CONFIG_SUSPEND_FREEZER=y 2.421 +CONFIG_HIBERNATION=y 2.422 +CONFIG_PM_STD_PARTITION="" 2.423 +# CONFIG_PM_RUNTIME is not set 2.424 +CONFIG_PM_OPS=y 2.425 +CONFIG_ACPI=y 2.426 +CONFIG_ACPI_SLEEP=y 2.427 +# CONFIG_ACPI_PROCFS is not set 2.428 +CONFIG_ACPI_PROCFS_POWER=y 2.429 +CONFIG_ACPI_POWER_METER=m 2.430 +# CONFIG_ACPI_EC_DEBUGFS is not set 2.431 +CONFIG_ACPI_PROC_EVENT=y 2.432 +CONFIG_ACPI_AC=y 2.433 +CONFIG_ACPI_BATTERY=y 2.434 +CONFIG_ACPI_BUTTON=m 2.435 +CONFIG_ACPI_VIDEO=m 2.436 +CONFIG_ACPI_FAN=y 2.437 +CONFIG_ACPI_DOCK=y 2.438 +CONFIG_ACPI_PROCESSOR=y 2.439 +CONFIG_ACPI_HOTPLUG_CPU=y 2.440 +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set 2.441 +CONFIG_ACPI_THERMAL=y 2.442 +# CONFIG_ACPI_CUSTOM_DSDT is not set 2.443 +CONFIG_ACPI_BLACKLIST_YEAR=0 2.444 +# CONFIG_ACPI_DEBUG is not set 2.445 +# CONFIG_ACPI_PCI_SLOT is not set 2.446 +CONFIG_X86_PM_TIMER=y 2.447 +CONFIG_ACPI_CONTAINER=y 2.448 +# CONFIG_ACPI_SBS is not set 2.449 +# CONFIG_ACPI_HED is not set 2.450 +# CONFIG_ACPI_APEI is not set 2.451 +# CONFIG_SFI is not set 2.452 +CONFIG_X86_APM_BOOT=y 2.453 +CONFIG_APM=y 2.454 +# CONFIG_APM_IGNORE_USER_SUSPEND is not set 2.455 +CONFIG_APM_DO_ENABLE=y 2.456 +# CONFIG_APM_CPU_IDLE is not set 2.457 +# CONFIG_APM_DISPLAY_BLANK is not set 2.458 +# CONFIG_APM_ALLOW_INTS is not set 2.459 + 2.460 +# 2.461 +# CPU Frequency scaling 2.462 +# 2.463 +CONFIG_CPU_FREQ=y 2.464 +CONFIG_CPU_FREQ_TABLE=y 2.465 +# CONFIG_CPU_FREQ_DEBUG is not set 2.466 +CONFIG_CPU_FREQ_STAT=y 2.467 +# CONFIG_CPU_FREQ_STAT_DETAILS is not set 2.468 +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 2.469 +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set 2.470 +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set 2.471 +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 2.472 +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 2.473 +CONFIG_CPU_FREQ_GOV_POWERSAVE=m 2.474 +CONFIG_CPU_FREQ_GOV_USERSPACE=y 2.475 +CONFIG_CPU_FREQ_GOV_ONDEMAND=y 2.476 +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m 2.477 + 2.478 +# 2.479 +# CPUFreq processor drivers 2.480 +# 2.481 +CONFIG_X86_PCC_CPUFREQ=m 2.482 +CONFIG_X86_ACPI_CPUFREQ=m 2.483 +CONFIG_X86_POWERNOW_K6=m 2.484 +CONFIG_X86_POWERNOW_K7=m 2.485 +CONFIG_X86_POWERNOW_K7_ACPI=y 2.486 +CONFIG_X86_POWERNOW_K8=m 2.487 +CONFIG_X86_GX_SUSPMOD=m 2.488 +# CONFIG_X86_SPEEDSTEP_CENTRINO is not set 2.489 +CONFIG_X86_SPEEDSTEP_ICH=m 2.490 +CONFIG_X86_SPEEDSTEP_SMI=m 2.491 +CONFIG_X86_P4_CLOCKMOD=m 2.492 +CONFIG_X86_CPUFREQ_NFORCE2=m 2.493 +CONFIG_X86_LONGRUN=m 2.494 +CONFIG_X86_LONGHAUL=m 2.495 +CONFIG_X86_E_POWERSAVER=m 2.496 + 2.497 +# 2.498 +# shared options 2.499 +# 2.500 +CONFIG_X86_SPEEDSTEP_LIB=m 2.501 +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y 2.502 +CONFIG_CPU_IDLE=y 2.503 +CONFIG_CPU_IDLE_GOV_LADDER=y 2.504 +CONFIG_CPU_IDLE_GOV_MENU=y 2.505 +# CONFIG_INTEL_IDLE is not set 2.506 + 2.507 +# 2.508 +# Bus options (PCI etc.) 2.509 +# 2.510 +CONFIG_PCI=y 2.511 +# CONFIG_PCI_GOBIOS is not set 2.512 +# CONFIG_PCI_GOMMCONFIG is not set 2.513 +# CONFIG_PCI_GODIRECT is not set 2.514 +CONFIG_PCI_GOANY=y 2.515 +CONFIG_PCI_BIOS=y 2.516 +CONFIG_PCI_DIRECT=y 2.517 +CONFIG_PCI_MMCONFIG=y 2.518 +CONFIG_PCI_DOMAINS=y 2.519 +CONFIG_PCI_CNB20LE_QUIRK=y 2.520 +CONFIG_PCIEPORTBUS=y 2.521 +CONFIG_PCIEAER=y 2.522 +# CONFIG_PCIE_ECRC is not set 2.523 +# CONFIG_PCIEAER_INJECT is not set 2.524 +CONFIG_PCIEASPM=y 2.525 +# CONFIG_PCIEASPM_DEBUG is not set 2.526 +CONFIG_ARCH_SUPPORTS_MSI=y 2.527 +# CONFIG_PCI_MSI is not set 2.528 +# CONFIG_PCI_STUB is not set 2.529 +CONFIG_HT_IRQ=y 2.530 +# CONFIG_PCI_IOV is not set 2.531 +CONFIG_PCI_IOAPIC=y 2.532 +CONFIG_ISA_DMA_API=y 2.533 +CONFIG_ISA=y 2.534 +# CONFIG_EISA is not set 2.535 +# CONFIG_MCA is not set 2.536 +# CONFIG_SCx200 is not set 2.537 +# CONFIG_OLPC is not set 2.538 +# CONFIG_OLPC_OPENFIRMWARE is not set 2.539 +CONFIG_AMD_NB=y 2.540 +CONFIG_PCCARD=m 2.541 +CONFIG_PCMCIA=m 2.542 +CONFIG_PCMCIA_LOAD_CIS=y 2.543 +CONFIG_CARDBUS=y 2.544 + 2.545 +# 2.546 +# PC-card bridges 2.547 +# 2.548 +CONFIG_YENTA=m 2.549 +CONFIG_YENTA_O2=y 2.550 +CONFIG_YENTA_RICOH=y 2.551 +CONFIG_YENTA_TI=y 2.552 +CONFIG_YENTA_ENE_TUNE=y 2.553 +CONFIG_YENTA_TOSHIBA=y 2.554 +CONFIG_PD6729=m 2.555 +CONFIG_I82092=m 2.556 +CONFIG_I82365=m 2.557 +# CONFIG_TCIC is not set 2.558 +CONFIG_PCMCIA_PROBE=y 2.559 +CONFIG_PCCARD_NONSTATIC=y 2.560 +# CONFIG_HOTPLUG_PCI is not set 2.561 + 2.562 +# 2.563 +# Executable file formats / Emulations 2.564 +# 2.565 +CONFIG_BINFMT_ELF=y 2.566 +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 2.567 +CONFIG_HAVE_AOUT=y 2.568 +# CONFIG_BINFMT_AOUT is not set 2.569 +CONFIG_BINFMT_MISC=m 2.570 +CONFIG_HAVE_ATOMIC_IOMAP=y 2.571 +CONFIG_HAVE_TEXT_POKE_SMP=y 2.572 +CONFIG_NET=y 2.573 + 2.574 +# 2.575 +# Networking options 2.576 +# 2.577 +CONFIG_PACKET=y 2.578 +CONFIG_UNIX=y 2.579 +CONFIG_XFRM=y 2.580 +# CONFIG_XFRM_USER is not set 2.581 +# CONFIG_XFRM_SUB_POLICY is not set 2.582 +# CONFIG_XFRM_MIGRATE is not set 2.583 +# CONFIG_XFRM_STATISTICS is not set 2.584 +CONFIG_XFRM_IPCOMP=y 2.585 +CONFIG_NET_KEY=y 2.586 +# CONFIG_NET_KEY_MIGRATE is not set 2.587 +CONFIG_INET=y 2.588 +# CONFIG_IP_MULTICAST is not set 2.589 +# CONFIG_IP_ADVANCED_ROUTER is not set 2.590 +CONFIG_IP_FIB_HASH=y 2.591 +# CONFIG_IP_PNP is not set 2.592 +# CONFIG_NET_IPIP is not set 2.593 +# CONFIG_NET_IPGRE_DEMUX is not set 2.594 +# CONFIG_ARPD is not set 2.595 +CONFIG_SYN_COOKIES=y 2.596 +CONFIG_INET_AH=y 2.597 +CONFIG_INET_ESP=y 2.598 +CONFIG_INET_IPCOMP=y 2.599 +CONFIG_INET_XFRM_TUNNEL=y 2.600 +CONFIG_INET_TUNNEL=y 2.601 +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 2.602 +# CONFIG_INET_XFRM_MODE_TUNNEL is not set 2.603 +# CONFIG_INET_XFRM_MODE_BEET is not set 2.604 +# CONFIG_INET_LRO is not set 2.605 +CONFIG_INET_DIAG=y 2.606 +CONFIG_INET_TCP_DIAG=y 2.607 +# CONFIG_TCP_CONG_ADVANCED is not set 2.608 +CONFIG_TCP_CONG_CUBIC=y 2.609 +CONFIG_DEFAULT_TCP_CONG="cubic" 2.610 +# CONFIG_TCP_MD5SIG is not set 2.611 +CONFIG_IPV6=m 2.612 +# CONFIG_IPV6_PRIVACY is not set 2.613 +# CONFIG_IPV6_ROUTER_PREF is not set 2.614 +# CONFIG_IPV6_OPTIMISTIC_DAD is not set 2.615 +# CONFIG_INET6_AH is not set 2.616 +# CONFIG_INET6_ESP is not set 2.617 +# CONFIG_INET6_IPCOMP is not set 2.618 +# CONFIG_IPV6_MIP6 is not set 2.619 +# CONFIG_INET6_XFRM_TUNNEL is not set 2.620 +# CONFIG_INET6_TUNNEL is not set 2.621 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m 2.622 +CONFIG_INET6_XFRM_MODE_TUNNEL=m 2.623 +CONFIG_INET6_XFRM_MODE_BEET=m 2.624 +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 2.625 +CONFIG_IPV6_SIT=m 2.626 +# CONFIG_IPV6_SIT_6RD is not set 2.627 +CONFIG_IPV6_NDISC_NODETYPE=y 2.628 +# CONFIG_IPV6_TUNNEL is not set 2.629 +# CONFIG_IPV6_MULTIPLE_TABLES is not set 2.630 +# CONFIG_IPV6_MROUTE is not set 2.631 +# CONFIG_NETWORK_SECMARK is not set 2.632 +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set 2.633 +CONFIG_NETFILTER=y 2.634 +# CONFIG_NETFILTER_DEBUG is not set 2.635 +CONFIG_NETFILTER_ADVANCED=y 2.636 +CONFIG_BRIDGE_NETFILTER=y 2.637 + 2.638 +# 2.639 +# Core Netfilter Configuration 2.640 +# 2.641 +CONFIG_NETFILTER_NETLINK=m 2.642 +CONFIG_NETFILTER_NETLINK_QUEUE=m 2.643 +CONFIG_NETFILTER_NETLINK_LOG=m 2.644 +CONFIG_NF_CONNTRACK=m 2.645 +CONFIG_NF_CONNTRACK_MARK=y 2.646 +CONFIG_NF_CONNTRACK_EVENTS=y 2.647 +CONFIG_NF_CT_PROTO_DCCP=m 2.648 +CONFIG_NF_CT_PROTO_GRE=m 2.649 +CONFIG_NF_CT_PROTO_SCTP=m 2.650 +CONFIG_NF_CT_PROTO_UDPLITE=m 2.651 +CONFIG_NF_CONNTRACK_AMANDA=m 2.652 +CONFIG_NF_CONNTRACK_FTP=m 2.653 +CONFIG_NF_CONNTRACK_H323=m 2.654 +CONFIG_NF_CONNTRACK_IRC=m 2.655 +CONFIG_NF_CONNTRACK_NETBIOS_NS=m 2.656 +CONFIG_NF_CONNTRACK_PPTP=m 2.657 +CONFIG_NF_CONNTRACK_SANE=m 2.658 +CONFIG_NF_CONNTRACK_SIP=m 2.659 +CONFIG_NF_CONNTRACK_TFTP=m 2.660 +CONFIG_NF_CT_NETLINK=m 2.661 +# CONFIG_NETFILTER_TPROXY is not set 2.662 +CONFIG_NETFILTER_XTABLES=y 2.663 + 2.664 +# 2.665 +# Xtables combined modules 2.666 +# 2.667 +CONFIG_NETFILTER_XT_MARK=m 2.668 +CONFIG_NETFILTER_XT_CONNMARK=m 2.669 + 2.670 +# 2.671 +# Xtables targets 2.672 +# 2.673 +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set 2.674 +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 2.675 +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 2.676 +# CONFIG_NETFILTER_XT_TARGET_CT is not set 2.677 +CONFIG_NETFILTER_XT_TARGET_DSCP=m 2.678 +CONFIG_NETFILTER_XT_TARGET_HL=m 2.679 +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set 2.680 +# CONFIG_NETFILTER_XT_TARGET_LED is not set 2.681 +CONFIG_NETFILTER_XT_TARGET_MARK=m 2.682 +CONFIG_NETFILTER_XT_TARGET_NFLOG=m 2.683 +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 2.684 +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 2.685 +CONFIG_NETFILTER_XT_TARGET_RATEEST=m 2.686 +# CONFIG_NETFILTER_XT_TARGET_TEE is not set 2.687 +CONFIG_NETFILTER_XT_TARGET_TRACE=m 2.688 +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 2.689 +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set 2.690 + 2.691 +# 2.692 +# Xtables matches 2.693 +# 2.694 +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m 2.695 +CONFIG_NETFILTER_XT_MATCH_COMMENT=m 2.696 +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m 2.697 +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 2.698 +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 2.699 +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 2.700 +# CONFIG_NETFILTER_XT_MATCH_CPU is not set 2.701 +CONFIG_NETFILTER_XT_MATCH_DCCP=m 2.702 +CONFIG_NETFILTER_XT_MATCH_DSCP=m 2.703 +CONFIG_NETFILTER_XT_MATCH_ESP=m 2.704 +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m 2.705 +CONFIG_NETFILTER_XT_MATCH_HELPER=m 2.706 +CONFIG_NETFILTER_XT_MATCH_HL=m 2.707 +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 2.708 +# CONFIG_NETFILTER_XT_MATCH_IPVS is not set 2.709 +CONFIG_NETFILTER_XT_MATCH_LENGTH=m 2.710 +CONFIG_NETFILTER_XT_MATCH_LIMIT=m 2.711 +CONFIG_NETFILTER_XT_MATCH_MAC=m 2.712 +CONFIG_NETFILTER_XT_MATCH_MARK=m 2.713 +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 2.714 +# CONFIG_NETFILTER_XT_MATCH_OSF is not set 2.715 +CONFIG_NETFILTER_XT_MATCH_OWNER=m 2.716 +CONFIG_NETFILTER_XT_MATCH_POLICY=m 2.717 +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m 2.718 +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 2.719 +CONFIG_NETFILTER_XT_MATCH_QUOTA=m 2.720 +CONFIG_NETFILTER_XT_MATCH_RATEEST=m 2.721 +CONFIG_NETFILTER_XT_MATCH_REALM=m 2.722 +CONFIG_NETFILTER_XT_MATCH_RECENT=m 2.723 +CONFIG_NETFILTER_XT_MATCH_SCTP=m 2.724 +CONFIG_NETFILTER_XT_MATCH_STATE=m 2.725 +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m 2.726 +CONFIG_NETFILTER_XT_MATCH_STRING=m 2.727 +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m 2.728 +CONFIG_NETFILTER_XT_MATCH_TIME=m 2.729 +CONFIG_NETFILTER_XT_MATCH_U32=m 2.730 +CONFIG_IP_VS=m 2.731 +CONFIG_IP_VS_IPV6=y 2.732 +# CONFIG_IP_VS_DEBUG is not set 2.733 +CONFIG_IP_VS_TAB_BITS=12 2.734 + 2.735 +# 2.736 +# IPVS transport protocol load balancing support 2.737 +# 2.738 +CONFIG_IP_VS_PROTO_TCP=y 2.739 +CONFIG_IP_VS_PROTO_UDP=y 2.740 +CONFIG_IP_VS_PROTO_AH_ESP=y 2.741 +CONFIG_IP_VS_PROTO_ESP=y 2.742 +CONFIG_IP_VS_PROTO_AH=y 2.743 +CONFIG_IP_VS_PROTO_SCTP=y 2.744 + 2.745 +# 2.746 +# IPVS scheduler 2.747 +# 2.748 +CONFIG_IP_VS_RR=m 2.749 +CONFIG_IP_VS_WRR=m 2.750 +CONFIG_IP_VS_LC=m 2.751 +CONFIG_IP_VS_WLC=m 2.752 +CONFIG_IP_VS_LBLC=m 2.753 +CONFIG_IP_VS_LBLCR=m 2.754 +CONFIG_IP_VS_DH=m 2.755 +CONFIG_IP_VS_SH=m 2.756 +CONFIG_IP_VS_SED=m 2.757 +CONFIG_IP_VS_NQ=m 2.758 + 2.759 +# 2.760 +# IPVS application helper 2.761 +# 2.762 +CONFIG_IP_VS_FTP=m 2.763 +CONFIG_IP_VS_NFCT=y 2.764 +# CONFIG_IP_VS_PE_SIP is not set 2.765 + 2.766 +# 2.767 +# IP: Netfilter Configuration 2.768 +# 2.769 +CONFIG_NF_DEFRAG_IPV4=m 2.770 +CONFIG_NF_CONNTRACK_IPV4=m 2.771 +CONFIG_NF_CONNTRACK_PROC_COMPAT=y 2.772 +# CONFIG_IP_NF_QUEUE is not set 2.773 +CONFIG_IP_NF_IPTABLES=m 2.774 +CONFIG_IP_NF_MATCH_ADDRTYPE=m 2.775 +CONFIG_IP_NF_MATCH_AH=m 2.776 +CONFIG_IP_NF_MATCH_ECN=m 2.777 +CONFIG_IP_NF_MATCH_TTL=m 2.778 +CONFIG_IP_NF_FILTER=m 2.779 +CONFIG_IP_NF_TARGET_REJECT=m 2.780 +CONFIG_IP_NF_TARGET_LOG=m 2.781 +CONFIG_IP_NF_TARGET_ULOG=m 2.782 +CONFIG_NF_NAT=m 2.783 +CONFIG_NF_NAT_NEEDED=y 2.784 +CONFIG_IP_NF_TARGET_MASQUERADE=m 2.785 +CONFIG_IP_NF_TARGET_NETMAP=m 2.786 +CONFIG_IP_NF_TARGET_REDIRECT=m 2.787 +CONFIG_NF_NAT_SNMP_BASIC=m 2.788 +CONFIG_NF_NAT_PROTO_DCCP=m 2.789 +CONFIG_NF_NAT_PROTO_GRE=m 2.790 +CONFIG_NF_NAT_PROTO_UDPLITE=m 2.791 +CONFIG_NF_NAT_PROTO_SCTP=m 2.792 +CONFIG_NF_NAT_FTP=m 2.793 +CONFIG_NF_NAT_IRC=m 2.794 +CONFIG_NF_NAT_TFTP=m 2.795 +CONFIG_NF_NAT_AMANDA=m 2.796 +CONFIG_NF_NAT_PPTP=m 2.797 +CONFIG_NF_NAT_H323=m 2.798 +CONFIG_NF_NAT_SIP=m 2.799 +CONFIG_IP_NF_MANGLE=m 2.800 +CONFIG_IP_NF_TARGET_CLUSTERIP=m 2.801 +CONFIG_IP_NF_TARGET_ECN=m 2.802 +CONFIG_IP_NF_TARGET_TTL=m 2.803 +CONFIG_IP_NF_RAW=m 2.804 +CONFIG_IP_NF_ARPTABLES=m 2.805 +CONFIG_IP_NF_ARPFILTER=m 2.806 +CONFIG_IP_NF_ARP_MANGLE=m 2.807 + 2.808 +# 2.809 +# IPv6: Netfilter Configuration 2.810 +# 2.811 +CONFIG_NF_DEFRAG_IPV6=m 2.812 +CONFIG_NF_CONNTRACK_IPV6=m 2.813 +# CONFIG_IP6_NF_QUEUE is not set 2.814 +CONFIG_IP6_NF_IPTABLES=m 2.815 +CONFIG_IP6_NF_MATCH_AH=m 2.816 +CONFIG_IP6_NF_MATCH_EUI64=m 2.817 +CONFIG_IP6_NF_MATCH_FRAG=m 2.818 +CONFIG_IP6_NF_MATCH_OPTS=m 2.819 +CONFIG_IP6_NF_MATCH_HL=m 2.820 +CONFIG_IP6_NF_MATCH_IPV6HEADER=m 2.821 +CONFIG_IP6_NF_MATCH_MH=m 2.822 +CONFIG_IP6_NF_MATCH_RT=m 2.823 +CONFIG_IP6_NF_TARGET_HL=m 2.824 +CONFIG_IP6_NF_TARGET_LOG=m 2.825 +CONFIG_IP6_NF_FILTER=m 2.826 +CONFIG_IP6_NF_TARGET_REJECT=m 2.827 +CONFIG_IP6_NF_MANGLE=m 2.828 +CONFIG_IP6_NF_RAW=m 2.829 +CONFIG_BRIDGE_NF_EBTABLES=m 2.830 +CONFIG_BRIDGE_EBT_BROUTE=m 2.831 +CONFIG_BRIDGE_EBT_T_FILTER=m 2.832 +CONFIG_BRIDGE_EBT_T_NAT=m 2.833 +CONFIG_BRIDGE_EBT_802_3=m 2.834 +CONFIG_BRIDGE_EBT_AMONG=m 2.835 +CONFIG_BRIDGE_EBT_ARP=m 2.836 +CONFIG_BRIDGE_EBT_IP=m 2.837 +CONFIG_BRIDGE_EBT_IP6=m 2.838 +CONFIG_BRIDGE_EBT_LIMIT=m 2.839 +CONFIG_BRIDGE_EBT_MARK=m 2.840 +CONFIG_BRIDGE_EBT_PKTTYPE=m 2.841 +CONFIG_BRIDGE_EBT_STP=m 2.842 +CONFIG_BRIDGE_EBT_VLAN=m 2.843 +CONFIG_BRIDGE_EBT_ARPREPLY=m 2.844 +CONFIG_BRIDGE_EBT_DNAT=m 2.845 +CONFIG_BRIDGE_EBT_MARK_T=m 2.846 +CONFIG_BRIDGE_EBT_REDIRECT=m 2.847 +CONFIG_BRIDGE_EBT_SNAT=m 2.848 +CONFIG_BRIDGE_EBT_LOG=m 2.849 +CONFIG_BRIDGE_EBT_ULOG=m 2.850 +CONFIG_BRIDGE_EBT_NFLOG=m 2.851 +# CONFIG_IP_DCCP is not set 2.852 +CONFIG_IP_SCTP=m 2.853 +# CONFIG_SCTP_DBG_MSG is not set 2.854 +# CONFIG_SCTP_DBG_OBJCNT is not set 2.855 +# CONFIG_SCTP_HMAC_NONE is not set 2.856 +# CONFIG_SCTP_HMAC_SHA1 is not set 2.857 +CONFIG_SCTP_HMAC_MD5=y 2.858 +# CONFIG_RDS is not set 2.859 +# CONFIG_TIPC is not set 2.860 +CONFIG_ATM=m 2.861 +CONFIG_ATM_CLIP=m 2.862 +CONFIG_ATM_CLIP_NO_ICMP=y 2.863 +CONFIG_ATM_LANE=m 2.864 +CONFIG_ATM_MPOA=m 2.865 +CONFIG_ATM_BR2684=m 2.866 +# CONFIG_ATM_BR2684_IPFILTER is not set 2.867 +# CONFIG_L2TP is not set 2.868 +CONFIG_STP=m 2.869 +CONFIG_BRIDGE=m 2.870 +# CONFIG_BRIDGE_IGMP_SNOOPING is not set 2.871 +# CONFIG_NET_DSA is not set 2.872 +CONFIG_VLAN_8021Q=m 2.873 +# CONFIG_VLAN_8021Q_GVRP is not set 2.874 +# CONFIG_DECNET is not set 2.875 +CONFIG_LLC=m 2.876 +# CONFIG_LLC2 is not set 2.877 +# CONFIG_IPX is not set 2.878 +CONFIG_ATALK=m 2.879 +CONFIG_DEV_APPLETALK=m 2.880 +CONFIG_LTPC=m 2.881 +CONFIG_COPS=m 2.882 +CONFIG_COPS_DAYNA=y 2.883 +CONFIG_COPS_TANGENT=y 2.884 +CONFIG_IPDDP=m 2.885 +CONFIG_IPDDP_ENCAP=y 2.886 +CONFIG_IPDDP_DECAP=y 2.887 +# CONFIG_X25 is not set 2.888 +# CONFIG_LAPB is not set 2.889 +# CONFIG_ECONET is not set 2.890 +# CONFIG_WAN_ROUTER is not set 2.891 +# CONFIG_PHONET is not set 2.892 +# CONFIG_IEEE802154 is not set 2.893 +CONFIG_NET_SCHED=y 2.894 + 2.895 +# 2.896 +# Queueing/Scheduling 2.897 +# 2.898 +CONFIG_NET_SCH_CBQ=m 2.899 +CONFIG_NET_SCH_HTB=m 2.900 +CONFIG_NET_SCH_HFSC=m 2.901 +CONFIG_NET_SCH_ATM=m 2.902 +CONFIG_NET_SCH_PRIO=m 2.903 +CONFIG_NET_SCH_MULTIQ=m 2.904 +CONFIG_NET_SCH_RED=m 2.905 +CONFIG_NET_SCH_SFQ=m 2.906 +CONFIG_NET_SCH_TEQL=m 2.907 +CONFIG_NET_SCH_TBF=m 2.908 +CONFIG_NET_SCH_GRED=m 2.909 +CONFIG_NET_SCH_DSMARK=m 2.910 +# CONFIG_NET_SCH_NETEM is not set 2.911 +CONFIG_NET_SCH_DRR=m 2.912 +CONFIG_NET_SCH_INGRESS=m 2.913 + 2.914 +# 2.915 +# Classification 2.916 +# 2.917 +CONFIG_NET_CLS=y 2.918 +CONFIG_NET_CLS_BASIC=m 2.919 +CONFIG_NET_CLS_TCINDEX=m 2.920 +CONFIG_NET_CLS_ROUTE4=m 2.921 +CONFIG_NET_CLS_ROUTE=y 2.922 +CONFIG_NET_CLS_FW=m 2.923 +CONFIG_NET_CLS_U32=m 2.924 +CONFIG_CLS_U32_PERF=y 2.925 +CONFIG_CLS_U32_MARK=y 2.926 +CONFIG_NET_CLS_RSVP=m 2.927 +CONFIG_NET_CLS_RSVP6=m 2.928 +CONFIG_NET_CLS_FLOW=m 2.929 +CONFIG_NET_EMATCH=y 2.930 +CONFIG_NET_EMATCH_STACK=32 2.931 +CONFIG_NET_EMATCH_CMP=m 2.932 +CONFIG_NET_EMATCH_NBYTE=m 2.933 +CONFIG_NET_EMATCH_U32=m 2.934 +CONFIG_NET_EMATCH_META=m 2.935 +CONFIG_NET_EMATCH_TEXT=m 2.936 +CONFIG_NET_CLS_ACT=y 2.937 +CONFIG_NET_ACT_POLICE=m 2.938 +CONFIG_NET_ACT_GACT=m 2.939 +CONFIG_GACT_PROB=y 2.940 +CONFIG_NET_ACT_MIRRED=m 2.941 +CONFIG_NET_ACT_IPT=m 2.942 +CONFIG_NET_ACT_NAT=m 2.943 +CONFIG_NET_ACT_PEDIT=m 2.944 +CONFIG_NET_ACT_SIMP=m 2.945 +CONFIG_NET_ACT_SKBEDIT=m 2.946 +# CONFIG_NET_ACT_CSUM is not set 2.947 +CONFIG_NET_CLS_IND=y 2.948 +CONFIG_NET_SCH_FIFO=y 2.949 +# CONFIG_DCB is not set 2.950 +CONFIG_RPS=y 2.951 + 2.952 +# 2.953 +# Network testing 2.954 +# 2.955 +# CONFIG_NET_PKTGEN is not set 2.956 +# CONFIG_HAMRADIO is not set 2.957 +# CONFIG_CAN is not set 2.958 +CONFIG_IRDA=m 2.959 + 2.960 +# 2.961 +# IrDA protocols 2.962 +# 2.963 +CONFIG_IRLAN=m 2.964 +CONFIG_IRNET=m 2.965 +CONFIG_IRCOMM=m 2.966 +# CONFIG_IRDA_ULTRA is not set 2.967 + 2.968 +# 2.969 +# IrDA options 2.970 +# 2.971 +# CONFIG_IRDA_CACHE_LAST_LSAP is not set 2.972 +# CONFIG_IRDA_FAST_RR is not set 2.973 +# CONFIG_IRDA_DEBUG is not set 2.974 + 2.975 +# 2.976 +# Infrared-port device drivers 2.977 +# 2.978 + 2.979 +# 2.980 +# SIR device drivers 2.981 +# 2.982 +CONFIG_IRTTY_SIR=m 2.983 + 2.984 +# 2.985 +# Dongle support 2.986 +# 2.987 +# CONFIG_DONGLE is not set 2.988 +# CONFIG_KINGSUN_DONGLE is not set 2.989 +# CONFIG_KSDAZZLE_DONGLE is not set 2.990 +# CONFIG_KS959_DONGLE is not set 2.991 + 2.992 +# 2.993 +# FIR device drivers 2.994 +# 2.995 +# CONFIG_USB_IRDA is not set 2.996 +# CONFIG_SIGMATEL_FIR is not set 2.997 +# CONFIG_NSC_FIR is not set 2.998 +# CONFIG_WINBOND_FIR is not set 2.999 +# CONFIG_TOSHIBA_FIR is not set 2.1000 +# CONFIG_SMC_IRCC_FIR is not set 2.1001 +# CONFIG_ALI_FIR is not set 2.1002 +# CONFIG_VLSI_FIR is not set 2.1003 +# CONFIG_VIA_FIR is not set 2.1004 +# CONFIG_MCS_FIR is not set 2.1005 +CONFIG_BT=m 2.1006 +CONFIG_BT_L2CAP=m 2.1007 +CONFIG_BT_SCO=m 2.1008 +CONFIG_BT_RFCOMM=m 2.1009 +CONFIG_BT_RFCOMM_TTY=y 2.1010 +# CONFIG_BT_BNEP is not set 2.1011 +# CONFIG_BT_CMTP is not set 2.1012 +# CONFIG_BT_HIDP is not set 2.1013 + 2.1014 +# 2.1015 +# Bluetooth device drivers 2.1016 +# 2.1017 +CONFIG_BT_HCIBTUSB=m 2.1018 +CONFIG_BT_HCIBTSDIO=m 2.1019 +CONFIG_BT_HCIUART=m 2.1020 +# CONFIG_BT_HCIUART_H4 is not set 2.1021 +# CONFIG_BT_HCIUART_BCSP is not set 2.1022 +# CONFIG_BT_HCIUART_ATH3K is not set 2.1023 +# CONFIG_BT_HCIUART_LL is not set 2.1024 +CONFIG_BT_HCIBCM203X=m 2.1025 +# CONFIG_BT_HCIBPA10X is not set 2.1026 +# CONFIG_BT_HCIBFUSB is not set 2.1027 +# CONFIG_BT_HCIDTL1 is not set 2.1028 +# CONFIG_BT_HCIBT3C is not set 2.1029 +# CONFIG_BT_HCIBLUECARD is not set 2.1030 +# CONFIG_BT_HCIBTUART is not set 2.1031 +# CONFIG_BT_HCIVHCI is not set 2.1032 +# CONFIG_BT_MRVL is not set 2.1033 +# CONFIG_BT_ATH3K is not set 2.1034 +# CONFIG_AF_RXRPC is not set 2.1035 +CONFIG_WIRELESS=y 2.1036 +CONFIG_WIRELESS_EXT=y 2.1037 +CONFIG_WEXT_CORE=y 2.1038 +CONFIG_WEXT_PROC=y 2.1039 +CONFIG_WEXT_SPY=y 2.1040 +CONFIG_WEXT_PRIV=y 2.1041 +CONFIG_CFG80211=m 2.1042 +# CONFIG_NL80211_TESTMODE is not set 2.1043 +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set 2.1044 +# CONFIG_CFG80211_REG_DEBUG is not set 2.1045 +CONFIG_CFG80211_DEFAULT_PS=y 2.1046 +# CONFIG_CFG80211_INTERNAL_REGDB is not set 2.1047 +CONFIG_CFG80211_WEXT=y 2.1048 +CONFIG_WIRELESS_EXT_SYSFS=y 2.1049 +CONFIG_LIB80211=m 2.1050 +CONFIG_LIB80211_CRYPT_WEP=m 2.1051 +CONFIG_LIB80211_CRYPT_CCMP=m 2.1052 +CONFIG_LIB80211_CRYPT_TKIP=m 2.1053 +# CONFIG_LIB80211_DEBUG is not set 2.1054 +CONFIG_MAC80211=m 2.1055 +CONFIG_MAC80211_HAS_RC=y 2.1056 +CONFIG_MAC80211_RC_MINSTREL=y 2.1057 +CONFIG_MAC80211_RC_MINSTREL_HT=y 2.1058 +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y 2.1059 +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" 2.1060 +CONFIG_MAC80211_MESH=y 2.1061 +CONFIG_MAC80211_LEDS=y 2.1062 +# CONFIG_MAC80211_DEBUG_MENU is not set 2.1063 +CONFIG_WIMAX=m 2.1064 +CONFIG_WIMAX_DEBUG_LEVEL=8 2.1065 +CONFIG_RFKILL=m 2.1066 +CONFIG_RFKILL_LEDS=y 2.1067 +CONFIG_RFKILL_INPUT=y 2.1068 +# CONFIG_NET_9P is not set 2.1069 +# CONFIG_CAIF is not set 2.1070 +# CONFIG_CEPH_LIB is not set 2.1071 + 2.1072 +# 2.1073 +# Device Drivers 2.1074 +# 2.1075 + 2.1076 +# 2.1077 +# Generic Driver Options 2.1078 +# 2.1079 +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 2.1080 +CONFIG_DEVTMPFS=y 2.1081 +# CONFIG_DEVTMPFS_MOUNT is not set 2.1082 +CONFIG_STANDALONE=y 2.1083 +CONFIG_PREVENT_FIRMWARE_BUILD=y 2.1084 +CONFIG_FW_LOADER=y 2.1085 +CONFIG_FIRMWARE_IN_KERNEL=y 2.1086 +CONFIG_EXTRA_FIRMWARE="" 2.1087 +# CONFIG_SYS_HYPERVISOR is not set 2.1088 +# CONFIG_CONNECTOR is not set 2.1089 +# CONFIG_MTD is not set 2.1090 +CONFIG_PARPORT=m 2.1091 +CONFIG_PARPORT_PC=m 2.1092 +# CONFIG_PARPORT_SERIAL is not set 2.1093 +# CONFIG_PARPORT_PC_FIFO is not set 2.1094 +# CONFIG_PARPORT_PC_SUPERIO is not set 2.1095 +# CONFIG_PARPORT_PC_PCMCIA is not set 2.1096 +# CONFIG_PARPORT_GSC is not set 2.1097 +# CONFIG_PARPORT_AX88796 is not set 2.1098 +CONFIG_PARPORT_1284=y 2.1099 +CONFIG_PNP=y 2.1100 +CONFIG_PNP_DEBUG_MESSAGES=y 2.1101 + 2.1102 +# 2.1103 +# Protocols 2.1104 +# 2.1105 +CONFIG_ISAPNP=y 2.1106 +# CONFIG_PNPBIOS is not set 2.1107 +CONFIG_PNPACPI=y 2.1108 +CONFIG_BLK_DEV=y 2.1109 +CONFIG_BLK_DEV_FD=m 2.1110 +# CONFIG_BLK_DEV_XD is not set 2.1111 +# CONFIG_PARIDE is not set 2.1112 +# CONFIG_BLK_CPQ_DA is not set 2.1113 +# CONFIG_BLK_CPQ_CISS_DA is not set 2.1114 +# CONFIG_BLK_DEV_DAC960 is not set 2.1115 +# CONFIG_BLK_DEV_UMEM is not set 2.1116 +# CONFIG_BLK_DEV_COW_COMMON is not set 2.1117 +CONFIG_BLK_DEV_LOOP=y 2.1118 +CONFIG_BLK_DEV_CRYPTOLOOP=m 2.1119 + 2.1120 +# 2.1121 +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected 2.1122 +# 2.1123 +# CONFIG_BLK_DEV_NBD is not set 2.1124 +# CONFIG_BLK_DEV_SX8 is not set 2.1125 +# CONFIG_BLK_DEV_UB is not set 2.1126 +CONFIG_BLK_DEV_RAM=y 2.1127 +CONFIG_BLK_DEV_RAM_COUNT=16 2.1128 +CONFIG_BLK_DEV_RAM_SIZE=4096 2.1129 +# CONFIG_BLK_DEV_XIP is not set 2.1130 +# CONFIG_CDROM_PKTCDVD is not set 2.1131 +# CONFIG_ATA_OVER_ETH is not set 2.1132 +CONFIG_VIRTIO_BLK=m 2.1133 +# CONFIG_BLK_DEV_HD is not set 2.1134 +# CONFIG_BLK_DEV_RBD is not set 2.1135 +CONFIG_MISC_DEVICES=y 2.1136 +# CONFIG_AD525X_DPOT is not set 2.1137 +# CONFIG_IBM_ASM is not set 2.1138 +# CONFIG_PHANTOM is not set 2.1139 +# CONFIG_SGI_IOC4 is not set 2.1140 +CONFIG_TIFM_CORE=m 2.1141 +CONFIG_TIFM_7XX1=m 2.1142 +# CONFIG_ICS932S401 is not set 2.1143 +# CONFIG_ENCLOSURE_SERVICES is not set 2.1144 +# CONFIG_CS5535_MFGPT is not set 2.1145 +# CONFIG_HP_ILO is not set 2.1146 +# CONFIG_APDS9802ALS is not set 2.1147 +# CONFIG_ISL29003 is not set 2.1148 +# CONFIG_ISL29020 is not set 2.1149 +# CONFIG_SENSORS_TSL2550 is not set 2.1150 +# CONFIG_SENSORS_BH1780 is not set 2.1151 +# CONFIG_SENSORS_BH1770 is not set 2.1152 +# CONFIG_SENSORS_APDS990X is not set 2.1153 +# CONFIG_HMC6352 is not set 2.1154 +# CONFIG_DS1682 is not set 2.1155 +# CONFIG_VMWARE_BALLOON is not set 2.1156 +# CONFIG_BMP085 is not set 2.1157 +# CONFIG_PCH_PHUB is not set 2.1158 +# CONFIG_C2PORT is not set 2.1159 + 2.1160 +# 2.1161 +# EEPROM support 2.1162 +# 2.1163 +# CONFIG_EEPROM_AT24 is not set 2.1164 +# CONFIG_EEPROM_LEGACY is not set 2.1165 +# CONFIG_EEPROM_MAX6875 is not set 2.1166 +CONFIG_EEPROM_93CX6=m 2.1167 +CONFIG_CB710_CORE=m 2.1168 +# CONFIG_CB710_DEBUG is not set 2.1169 +CONFIG_CB710_DEBUG_ASSUMPTIONS=y 2.1170 +CONFIG_IWMC3200TOP=m 2.1171 +# CONFIG_IWMC3200TOP_DEBUG is not set 2.1172 +# CONFIG_IWMC3200TOP_DEBUGFS is not set 2.1173 + 2.1174 +# 2.1175 +# Texas Instruments shared transport line discipline 2.1176 +# 2.1177 +# CONFIG_TI_ST is not set 2.1178 +CONFIG_HAVE_IDE=y 2.1179 +CONFIG_IDE=y 2.1180 + 2.1181 +# 2.1182 +# Please see Documentation/ide/ide.txt for help/info on IDE drives 2.1183 +# 2.1184 +CONFIG_IDE_XFER_MODE=y 2.1185 +CONFIG_IDE_TIMINGS=y 2.1186 +CONFIG_IDE_ATAPI=y 2.1187 +# CONFIG_BLK_DEV_IDE_SATA is not set 2.1188 +CONFIG_IDE_GD=y 2.1189 +CONFIG_IDE_GD_ATA=y 2.1190 +# CONFIG_IDE_GD_ATAPI is not set 2.1191 +CONFIG_BLK_DEV_IDECS=m 2.1192 +# CONFIG_BLK_DEV_DELKIN is not set 2.1193 +CONFIG_BLK_DEV_IDECD=y 2.1194 +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 2.1195 +# CONFIG_BLK_DEV_IDETAPE is not set 2.1196 +# CONFIG_BLK_DEV_IDEACPI is not set 2.1197 +# CONFIG_IDE_TASK_IOCTL is not set 2.1198 +CONFIG_IDE_PROC_FS=y 2.1199 + 2.1200 +# 2.1201 +# IDE chipset support/bugfixes 2.1202 +# 2.1203 +CONFIG_IDE_GENERIC=y 2.1204 +# CONFIG_BLK_DEV_PLATFORM is not set 2.1205 +CONFIG_BLK_DEV_CMD640=y 2.1206 +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set 2.1207 +# CONFIG_BLK_DEV_IDEPNP is not set 2.1208 +CONFIG_BLK_DEV_IDEDMA_SFF=y 2.1209 + 2.1210 +# 2.1211 +# PCI IDE chipsets support 2.1212 +# 2.1213 +CONFIG_BLK_DEV_IDEPCI=y 2.1214 +CONFIG_IDEPCI_PCIBUS_ORDER=y 2.1215 +# CONFIG_BLK_DEV_OFFBOARD is not set 2.1216 +CONFIG_BLK_DEV_GENERIC=y 2.1217 +# CONFIG_BLK_DEV_OPTI621 is not set 2.1218 +CONFIG_BLK_DEV_RZ1000=y 2.1219 +CONFIG_BLK_DEV_IDEDMA_PCI=y 2.1220 +CONFIG_BLK_DEV_AEC62XX=y 2.1221 +CONFIG_BLK_DEV_ALI15X3=y 2.1222 +CONFIG_BLK_DEV_AMD74XX=y 2.1223 +CONFIG_BLK_DEV_ATIIXP=y 2.1224 +CONFIG_BLK_DEV_CMD64X=y 2.1225 +CONFIG_BLK_DEV_TRIFLEX=y 2.1226 +# CONFIG_BLK_DEV_CS5520 is not set 2.1227 +CONFIG_BLK_DEV_CS5530=y 2.1228 +CONFIG_BLK_DEV_CS5535=y 2.1229 +# CONFIG_BLK_DEV_CS5536 is not set 2.1230 +# CONFIG_BLK_DEV_HPT366 is not set 2.1231 +CONFIG_BLK_DEV_JMICRON=y 2.1232 +# CONFIG_BLK_DEV_SC1200 is not set 2.1233 +CONFIG_BLK_DEV_PIIX=y 2.1234 +# CONFIG_BLK_DEV_IT8172 is not set 2.1235 +CONFIG_BLK_DEV_IT8213=y 2.1236 +CONFIG_BLK_DEV_IT821X=y 2.1237 +CONFIG_BLK_DEV_NS87415=y 2.1238 +# CONFIG_BLK_DEV_PDC202XX_OLD is not set 2.1239 +CONFIG_BLK_DEV_PDC202XX_NEW=y 2.1240 +CONFIG_BLK_DEV_SVWKS=y 2.1241 +CONFIG_BLK_DEV_SIIMAGE=y 2.1242 +CONFIG_BLK_DEV_SIS5513=y 2.1243 +CONFIG_BLK_DEV_SLC90E66=y 2.1244 +CONFIG_BLK_DEV_TRM290=y 2.1245 +CONFIG_BLK_DEV_VIA82CXXX=y 2.1246 +# CONFIG_BLK_DEV_TC86C001 is not set 2.1247 + 2.1248 +# 2.1249 +# Other IDE chipsets support 2.1250 +# 2.1251 + 2.1252 +# 2.1253 +# Note: most of these also require special kernel boot parameters 2.1254 +# 2.1255 +# CONFIG_BLK_DEV_4DRIVES is not set 2.1256 +# CONFIG_BLK_DEV_ALI14XX is not set 2.1257 +# CONFIG_BLK_DEV_DTC2278 is not set 2.1258 +# CONFIG_BLK_DEV_HT6560B is not set 2.1259 +# CONFIG_BLK_DEV_QD65XX is not set 2.1260 +# CONFIG_BLK_DEV_UMC8672 is not set 2.1261 +CONFIG_BLK_DEV_IDEDMA=y 2.1262 + 2.1263 +# 2.1264 +# SCSI device support 2.1265 +# 2.1266 +CONFIG_SCSI_MOD=y 2.1267 +# CONFIG_RAID_ATTRS is not set 2.1268 +CONFIG_SCSI=y 2.1269 +CONFIG_SCSI_DMA=y 2.1270 +# CONFIG_SCSI_TGT is not set 2.1271 +# CONFIG_SCSI_NETLINK is not set 2.1272 +CONFIG_SCSI_PROC_FS=y 2.1273 + 2.1274 +# 2.1275 +# SCSI support type (disk, tape, CD-ROM) 2.1276 +# 2.1277 +CONFIG_BLK_DEV_SD=y 2.1278 +# CONFIG_CHR_DEV_ST is not set 2.1279 +# CONFIG_CHR_DEV_OSST is not set 2.1280 +CONFIG_BLK_DEV_SR=y 2.1281 +# CONFIG_BLK_DEV_SR_VENDOR is not set 2.1282 +CONFIG_CHR_DEV_SG=y 2.1283 +# CONFIG_CHR_DEV_SCH is not set 2.1284 +# CONFIG_SCSI_MULTI_LUN is not set 2.1285 +# CONFIG_SCSI_CONSTANTS is not set 2.1286 +# CONFIG_SCSI_LOGGING is not set 2.1287 +# CONFIG_SCSI_SCAN_ASYNC is not set 2.1288 +CONFIG_SCSI_WAIT_SCAN=m 2.1289 + 2.1290 +# 2.1291 +# SCSI Transports 2.1292 +# 2.1293 +CONFIG_SCSI_SPI_ATTRS=m 2.1294 +# CONFIG_SCSI_FC_ATTRS is not set 2.1295 +CONFIG_SCSI_ISCSI_ATTRS=m 2.1296 +# CONFIG_SCSI_SAS_ATTRS is not set 2.1297 +# CONFIG_SCSI_SAS_LIBSAS is not set 2.1298 +# CONFIG_SCSI_SRP_ATTRS is not set 2.1299 +CONFIG_SCSI_LOWLEVEL=y 2.1300 +CONFIG_ISCSI_TCP=m 2.1301 +# CONFIG_ISCSI_BOOT_SYSFS is not set 2.1302 +# CONFIG_SCSI_BNX2_ISCSI is not set 2.1303 +# CONFIG_BE2ISCSI is not set 2.1304 +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 2.1305 +# CONFIG_SCSI_HPSA is not set 2.1306 +# CONFIG_SCSI_3W_9XXX is not set 2.1307 +# CONFIG_SCSI_3W_SAS is not set 2.1308 +# CONFIG_SCSI_7000FASST is not set 2.1309 +# CONFIG_SCSI_ACARD is not set 2.1310 +# CONFIG_SCSI_AHA152X is not set 2.1311 +# CONFIG_SCSI_AHA1542 is not set 2.1312 +# CONFIG_SCSI_AACRAID is not set 2.1313 +CONFIG_SCSI_AIC7XXX=m 2.1314 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 2.1315 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 2.1316 +CONFIG_AIC7XXX_DEBUG_ENABLE=y 2.1317 +CONFIG_AIC7XXX_DEBUG_MASK=0 2.1318 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 2.1319 +# CONFIG_SCSI_AIC7XXX_OLD is not set 2.1320 +# CONFIG_SCSI_AIC79XX is not set 2.1321 +# CONFIG_SCSI_AIC94XX is not set 2.1322 +# CONFIG_SCSI_MVSAS is not set 2.1323 +# CONFIG_SCSI_DPT_I2O is not set 2.1324 +# CONFIG_SCSI_ADVANSYS is not set 2.1325 +# CONFIG_SCSI_IN2000 is not set 2.1326 +# CONFIG_SCSI_ARCMSR is not set 2.1327 +# CONFIG_MEGARAID_NEWGEN is not set 2.1328 +# CONFIG_MEGARAID_LEGACY is not set 2.1329 +# CONFIG_MEGARAID_SAS is not set 2.1330 +# CONFIG_SCSI_MPT2SAS is not set 2.1331 +# CONFIG_SCSI_HPTIOP is not set 2.1332 +# CONFIG_SCSI_BUSLOGIC is not set 2.1333 +# CONFIG_VMWARE_PVSCSI is not set 2.1334 +# CONFIG_LIBFC is not set 2.1335 +# CONFIG_LIBFCOE is not set 2.1336 +# CONFIG_FCOE is not set 2.1337 +# CONFIG_FCOE_FNIC is not set 2.1338 +# CONFIG_SCSI_DMX3191D is not set 2.1339 +# CONFIG_SCSI_DTC3280 is not set 2.1340 +# CONFIG_SCSI_EATA is not set 2.1341 +# CONFIG_SCSI_FUTURE_DOMAIN is not set 2.1342 +# CONFIG_SCSI_GDTH is not set 2.1343 +# CONFIG_SCSI_GENERIC_NCR5380 is not set 2.1344 +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set 2.1345 +# CONFIG_SCSI_IPS is not set 2.1346 +# CONFIG_SCSI_INITIO is not set 2.1347 +# CONFIG_SCSI_INIA100 is not set 2.1348 +# CONFIG_SCSI_PPA is not set 2.1349 +# CONFIG_SCSI_IMM is not set 2.1350 +# CONFIG_SCSI_NCR53C406A is not set 2.1351 +# CONFIG_SCSI_STEX is not set 2.1352 +# CONFIG_SCSI_SYM53C8XX_2 is not set 2.1353 +# CONFIG_SCSI_IPR is not set 2.1354 +# CONFIG_SCSI_PAS16 is not set 2.1355 +# CONFIG_SCSI_QLOGIC_FAS is not set 2.1356 +# CONFIG_SCSI_QLOGIC_1280 is not set 2.1357 +# CONFIG_SCSI_QLA_FC is not set 2.1358 +# CONFIG_SCSI_QLA_ISCSI is not set 2.1359 +# CONFIG_SCSI_LPFC is not set 2.1360 +# CONFIG_SCSI_SYM53C416 is not set 2.1361 +# CONFIG_SCSI_DC395x is not set 2.1362 +# CONFIG_SCSI_DC390T is not set 2.1363 +# CONFIG_SCSI_T128 is not set 2.1364 +# CONFIG_SCSI_U14_34F is not set 2.1365 +# CONFIG_SCSI_ULTRASTOR is not set 2.1366 +# CONFIG_SCSI_NSP32 is not set 2.1367 +# CONFIG_SCSI_DEBUG is not set 2.1368 +# CONFIG_SCSI_PMCRAID is not set 2.1369 +# CONFIG_SCSI_PM8001 is not set 2.1370 +# CONFIG_SCSI_SRP is not set 2.1371 +# CONFIG_SCSI_BFA_FC is not set 2.1372 +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 2.1373 +# CONFIG_SCSI_DH is not set 2.1374 +# CONFIG_SCSI_OSD_INITIATOR is not set 2.1375 +CONFIG_ATA=y 2.1376 +# CONFIG_ATA_NONSTANDARD is not set 2.1377 +CONFIG_ATA_VERBOSE_ERROR=y 2.1378 +CONFIG_ATA_ACPI=y 2.1379 +CONFIG_SATA_PMP=y 2.1380 + 2.1381 +# 2.1382 +# Controllers with non-SFF native interface 2.1383 +# 2.1384 +CONFIG_SATA_AHCI=y 2.1385 +# CONFIG_SATA_AHCI_PLATFORM is not set 2.1386 +# CONFIG_SATA_INIC162X is not set 2.1387 +# CONFIG_SATA_SIL24 is not set 2.1388 +CONFIG_ATA_SFF=y 2.1389 + 2.1390 +# 2.1391 +# SFF controllers with custom DMA interface 2.1392 +# 2.1393 +# CONFIG_PDC_ADMA is not set 2.1394 +# CONFIG_SATA_QSTOR is not set 2.1395 +# CONFIG_SATA_SX4 is not set 2.1396 +CONFIG_ATA_BMDMA=y 2.1397 + 2.1398 +# 2.1399 +# SATA SFF controllers with BMDMA 2.1400 +# 2.1401 +CONFIG_ATA_PIIX=y 2.1402 +# CONFIG_SATA_MV is not set 2.1403 +CONFIG_SATA_NV=y 2.1404 +# CONFIG_SATA_PROMISE is not set 2.1405 +CONFIG_SATA_SIL=y 2.1406 +CONFIG_SATA_SIS=y 2.1407 +# CONFIG_SATA_SVW is not set 2.1408 +# CONFIG_SATA_ULI is not set 2.1409 +CONFIG_SATA_VIA=y 2.1410 +# CONFIG_SATA_VITESSE is not set 2.1411 + 2.1412 +# 2.1413 +# PATA SFF controllers with BMDMA 2.1414 +# 2.1415 +# CONFIG_PATA_ALI is not set 2.1416 +# CONFIG_PATA_AMD is not set 2.1417 +# CONFIG_PATA_ARTOP is not set 2.1418 +# CONFIG_PATA_ATIIXP is not set 2.1419 +# CONFIG_PATA_ATP867X is not set 2.1420 +# CONFIG_PATA_CMD64X is not set 2.1421 +# CONFIG_PATA_CS5520 is not set 2.1422 +# CONFIG_PATA_CS5530 is not set 2.1423 +# CONFIG_PATA_CS5535 is not set 2.1424 +# CONFIG_PATA_CS5536 is not set 2.1425 +# CONFIG_PATA_CYPRESS is not set 2.1426 +# CONFIG_PATA_EFAR is not set 2.1427 +# CONFIG_PATA_HPT366 is not set 2.1428 +# CONFIG_PATA_HPT37X is not set 2.1429 +# CONFIG_PATA_HPT3X2N is not set 2.1430 +# CONFIG_PATA_HPT3X3 is not set 2.1431 +# CONFIG_PATA_IT8213 is not set 2.1432 +# CONFIG_PATA_IT821X is not set 2.1433 +# CONFIG_PATA_JMICRON is not set 2.1434 +# CONFIG_PATA_MARVELL is not set 2.1435 +# CONFIG_PATA_NETCELL is not set 2.1436 +# CONFIG_PATA_NINJA32 is not set 2.1437 +# CONFIG_PATA_NS87415 is not set 2.1438 +# CONFIG_PATA_OLDPIIX is not set 2.1439 +# CONFIG_PATA_OPTIDMA is not set 2.1440 +# CONFIG_PATA_PDC2027X is not set 2.1441 +# CONFIG_PATA_PDC_OLD is not set 2.1442 +# CONFIG_PATA_RADISYS is not set 2.1443 +# CONFIG_PATA_RDC is not set 2.1444 +# CONFIG_PATA_SC1200 is not set 2.1445 +CONFIG_PATA_SCH=y 2.1446 +# CONFIG_PATA_SERVERWORKS is not set 2.1447 +# CONFIG_PATA_SIL680 is not set 2.1448 +CONFIG_PATA_SIS=y 2.1449 +# CONFIG_PATA_TOSHIBA is not set 2.1450 +# CONFIG_PATA_TRIFLEX is not set 2.1451 +# CONFIG_PATA_VIA is not set 2.1452 +# CONFIG_PATA_WINBOND is not set 2.1453 + 2.1454 +# 2.1455 +# PIO-only SFF controllers 2.1456 +# 2.1457 +# CONFIG_PATA_CMD640_PCI is not set 2.1458 +# CONFIG_PATA_ISAPNP is not set 2.1459 +# CONFIG_PATA_MPIIX is not set 2.1460 +# CONFIG_PATA_NS87410 is not set 2.1461 +# CONFIG_PATA_OPTI is not set 2.1462 +# CONFIG_PATA_PCMCIA is not set 2.1463 +# CONFIG_PATA_QDI is not set 2.1464 +# CONFIG_PATA_RZ1000 is not set 2.1465 +# CONFIG_PATA_WINBOND_VLB is not set 2.1466 + 2.1467 +# 2.1468 +# Generic fallback / legacy drivers 2.1469 +# 2.1470 +# CONFIG_PATA_ACPI is not set 2.1471 +# CONFIG_ATA_GENERIC is not set 2.1472 +# CONFIG_PATA_LEGACY is not set 2.1473 +CONFIG_MD=y 2.1474 +CONFIG_BLK_DEV_MD=m 2.1475 +CONFIG_MD_LINEAR=m 2.1476 +CONFIG_MD_RAID0=m 2.1477 +CONFIG_MD_RAID1=m 2.1478 +CONFIG_MD_RAID10=m 2.1479 +CONFIG_MD_RAID456=m 2.1480 +# CONFIG_MULTICORE_RAID456 is not set 2.1481 +# CONFIG_MD_MULTIPATH is not set 2.1482 +# CONFIG_MD_FAULTY is not set 2.1483 +CONFIG_BLK_DEV_DM=m 2.1484 +# CONFIG_DM_DEBUG is not set 2.1485 +CONFIG_DM_CRYPT=m 2.1486 +CONFIG_DM_SNAPSHOT=m 2.1487 +CONFIG_DM_MIRROR=m 2.1488 +# CONFIG_DM_LOG_USERSPACE is not set 2.1489 +# CONFIG_DM_ZERO is not set 2.1490 +# CONFIG_DM_MULTIPATH is not set 2.1491 +# CONFIG_DM_DELAY is not set 2.1492 +# CONFIG_DM_UEVENT is not set 2.1493 +# CONFIG_FUSION is not set 2.1494 + 2.1495 +# 2.1496 +# IEEE 1394 (FireWire) support 2.1497 +# 2.1498 +CONFIG_FIREWIRE=m 2.1499 +CONFIG_FIREWIRE_OHCI=m 2.1500 +CONFIG_FIREWIRE_OHCI_DEBUG=y 2.1501 +CONFIG_FIREWIRE_SBP2=m 2.1502 +CONFIG_FIREWIRE_NET=m 2.1503 +CONFIG_FIREWIRE_NOSY=m 2.1504 +# CONFIG_I2O is not set 2.1505 +# CONFIG_MACINTOSH_DRIVERS is not set 2.1506 +CONFIG_NETDEVICES=y 2.1507 +# CONFIG_IFB is not set 2.1508 +CONFIG_DUMMY=y 2.1509 +# CONFIG_BONDING is not set 2.1510 +# CONFIG_MACVLAN is not set 2.1511 +# CONFIG_EQUALIZER is not set 2.1512 +CONFIG_TUN=y 2.1513 +# CONFIG_VETH is not set 2.1514 +# CONFIG_NET_SB1000 is not set 2.1515 +CONFIG_ARCNET=m 2.1516 +CONFIG_ARCNET_1201=m 2.1517 +# CONFIG_ARCNET_1051 is not set 2.1518 +# CONFIG_ARCNET_RAW is not set 2.1519 +# CONFIG_ARCNET_CAP is not set 2.1520 +CONFIG_ARCNET_COM90xx=m 2.1521 +# CONFIG_ARCNET_COM90xxIO is not set 2.1522 +# CONFIG_ARCNET_RIM_I is not set 2.1523 +# CONFIG_ARCNET_COM20020 is not set 2.1524 +CONFIG_MII=y 2.1525 +CONFIG_PHYLIB=m 2.1526 + 2.1527 +# 2.1528 +# MII PHY device drivers 2.1529 +# 2.1530 +CONFIG_MARVELL_PHY=m 2.1531 +CONFIG_DAVICOM_PHY=m 2.1532 +CONFIG_QSEMI_PHY=m 2.1533 +CONFIG_LXT_PHY=m 2.1534 +CONFIG_CICADA_PHY=m 2.1535 +# CONFIG_VITESSE_PHY is not set 2.1536 +CONFIG_SMSC_PHY=m 2.1537 +CONFIG_BROADCOM_PHY=m 2.1538 +# CONFIG_BCM63XX_PHY is not set 2.1539 +# CONFIG_ICPLUS_PHY is not set 2.1540 +# CONFIG_REALTEK_PHY is not set 2.1541 +# CONFIG_NATIONAL_PHY is not set 2.1542 +# CONFIG_STE10XP is not set 2.1543 +# CONFIG_LSI_ET1011C_PHY is not set 2.1544 +# CONFIG_MICREL_PHY is not set 2.1545 +# CONFIG_MDIO_BITBANG is not set 2.1546 +CONFIG_NET_ETHERNET=y 2.1547 +CONFIG_HAPPYMEAL=m 2.1548 +CONFIG_SUNGEM=m 2.1549 +CONFIG_CASSINI=m 2.1550 +CONFIG_NET_VENDOR_3COM=y 2.1551 +CONFIG_EL1=m 2.1552 +CONFIG_EL2=m 2.1553 +CONFIG_ELPLUS=m 2.1554 +# CONFIG_EL16 is not set 2.1555 +CONFIG_EL3=m 2.1556 +CONFIG_3C515=m 2.1557 +CONFIG_VORTEX=m 2.1558 +CONFIG_TYPHOON=m 2.1559 +CONFIG_LANCE=m 2.1560 +CONFIG_NET_VENDOR_SMC=y 2.1561 +CONFIG_WD80x3=m 2.1562 +CONFIG_ULTRA=m 2.1563 +CONFIG_SMC9194=m 2.1564 +# CONFIG_ETHOC is not set 2.1565 +CONFIG_NET_VENDOR_RACAL=y 2.1566 +CONFIG_NI52=m 2.1567 +CONFIG_NI65=m 2.1568 +CONFIG_DNET=m 2.1569 +CONFIG_NET_TULIP=y 2.1570 +# CONFIG_DE2104X is not set 2.1571 +CONFIG_TULIP=m 2.1572 +# CONFIG_TULIP_MWI is not set 2.1573 +# CONFIG_TULIP_MMIO is not set 2.1574 +# CONFIG_TULIP_NAPI is not set 2.1575 +CONFIG_DE4X5=y 2.1576 +CONFIG_WINBOND_840=y 2.1577 +CONFIG_DM9102=y 2.1578 +CONFIG_ULI526X=m 2.1579 +CONFIG_PCMCIA_XIRCOM=y 2.1580 +# CONFIG_AT1700 is not set 2.1581 +CONFIG_DEPCA=m 2.1582 +CONFIG_HP100=m 2.1583 +CONFIG_NET_ISA=y 2.1584 +CONFIG_E2100=m 2.1585 +CONFIG_EWRK3=m 2.1586 +CONFIG_EEXPRESS=m 2.1587 +CONFIG_EEXPRESS_PRO=m 2.1588 +CONFIG_HPLAN_PLUS=m 2.1589 +CONFIG_HPLAN=m 2.1590 +CONFIG_LP486E=m 2.1591 +CONFIG_ETH16I=m 2.1592 +CONFIG_NE2000=m 2.1593 +# CONFIG_ZNET is not set 2.1594 +# CONFIG_SEEQ8005 is not set 2.1595 +# CONFIG_IBM_NEW_EMAC_ZMII is not set 2.1596 +# CONFIG_IBM_NEW_EMAC_RGMII is not set 2.1597 +# CONFIG_IBM_NEW_EMAC_TAH is not set 2.1598 +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 2.1599 +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set 2.1600 +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 2.1601 +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 2.1602 +CONFIG_NET_PCI=y 2.1603 +CONFIG_PCNET32=y 2.1604 +CONFIG_AMD8111_ETH=m 2.1605 +CONFIG_ADAPTEC_STARFIRE=m 2.1606 +# CONFIG_AC3200 is not set 2.1607 +# CONFIG_KSZ884X_PCI is not set 2.1608 +CONFIG_APRICOT=m 2.1609 +CONFIG_B44=m 2.1610 +CONFIG_B44_PCI_AUTOSELECT=y 2.1611 +CONFIG_B44_PCICORE_AUTOSELECT=y 2.1612 +CONFIG_B44_PCI=y 2.1613 +CONFIG_FORCEDETH=y 2.1614 +CONFIG_CS89x0=m 2.1615 +CONFIG_E100=y 2.1616 +CONFIG_FEALNX=m 2.1617 +CONFIG_NATSEMI=y 2.1618 +CONFIG_NE2K_PCI=y 2.1619 +# CONFIG_8139CP is not set 2.1620 +CONFIG_8139TOO=y 2.1621 +# CONFIG_8139TOO_PIO is not set 2.1622 +CONFIG_8139TOO_TUNE_TWISTER=y 2.1623 +CONFIG_8139TOO_8129=y 2.1624 +# CONFIG_8139_OLD_RX_RESET is not set 2.1625 +CONFIG_R6040=m 2.1626 +CONFIG_SIS900=y 2.1627 +CONFIG_EPIC100=y 2.1628 +CONFIG_SMSC9420=m 2.1629 +CONFIG_SUNDANCE=y 2.1630 +# CONFIG_SUNDANCE_MMIO is not set 2.1631 +CONFIG_TLAN=y 2.1632 +# CONFIG_KS8851_MLL is not set 2.1633 +CONFIG_VIA_RHINE=y 2.1634 +CONFIG_VIA_RHINE_MMIO=y 2.1635 +CONFIG_SC92031=m 2.1636 +# CONFIG_NET_POCKET is not set 2.1637 +CONFIG_ATL2=m 2.1638 +CONFIG_NETDEV_1000=y 2.1639 +CONFIG_ACENIC=y 2.1640 +# CONFIG_ACENIC_OMIT_TIGON_I is not set 2.1641 +CONFIG_DL2K=m 2.1642 +CONFIG_E1000=m 2.1643 +CONFIG_E1000E=y 2.1644 +CONFIG_IP1000=m 2.1645 +# CONFIG_IGB is not set 2.1646 +# CONFIG_IGBVF is not set 2.1647 +CONFIG_NS83820=y 2.1648 +CONFIG_HAMACHI=y 2.1649 +# CONFIG_YELLOWFIN is not set 2.1650 +CONFIG_R8169=y 2.1651 +# CONFIG_R8169_VLAN is not set 2.1652 +CONFIG_SIS190=m 2.1653 +CONFIG_SKGE=m 2.1654 +CONFIG_SKY2=m 2.1655 +CONFIG_VIA_VELOCITY=m 2.1656 +CONFIG_TIGON3=m 2.1657 +CONFIG_BNX2=m 2.1658 +# CONFIG_CNIC is not set 2.1659 +CONFIG_QLA3XXX=y 2.1660 +CONFIG_ATL1=y 2.1661 +CONFIG_ATL1E=m 2.1662 +CONFIG_ATL1C=m 2.1663 +# CONFIG_JME is not set 2.1664 +# CONFIG_STMMAC_ETH is not set 2.1665 +# CONFIG_PCH_GBE is not set 2.1666 +# CONFIG_NETDEV_10000 is not set 2.1667 +# CONFIG_TR is not set 2.1668 +CONFIG_WLAN=y 2.1669 +# CONFIG_PCMCIA_RAYCS is not set 2.1670 +# CONFIG_LIBERTAS_THINFIRM is not set 2.1671 +CONFIG_AIRO=m 2.1672 +CONFIG_ATMEL=m 2.1673 +CONFIG_PCI_ATMEL=m 2.1674 +CONFIG_PCMCIA_ATMEL=m 2.1675 +CONFIG_AT76C50X_USB=m 2.1676 +CONFIG_AIRO_CS=m 2.1677 +CONFIG_PCMCIA_WL3501=m 2.1678 +CONFIG_PRISM54=m 2.1679 +CONFIG_USB_ZD1201=m 2.1680 +CONFIG_USB_NET_RNDIS_WLAN=m 2.1681 +CONFIG_RTL8180=m 2.1682 +CONFIG_RTL8187=m 2.1683 +CONFIG_RTL8187_LEDS=y 2.1684 +CONFIG_ADM8211=m 2.1685 +# CONFIG_MAC80211_HWSIM is not set 2.1686 +CONFIG_MWL8K=m 2.1687 +CONFIG_ATH_COMMON=m 2.1688 +# CONFIG_ATH_DEBUG is not set 2.1689 +CONFIG_ATH5K=m 2.1690 +# CONFIG_ATH5K_DEBUG is not set 2.1691 +CONFIG_ATH9K_HW=m 2.1692 +CONFIG_ATH9K_COMMON=m 2.1693 +CONFIG_ATH9K=m 2.1694 +CONFIG_ATH9K_RATE_CONTROL=y 2.1695 +CONFIG_ATH9K_HTC=m 2.1696 +CONFIG_AR9170_USB=m 2.1697 +CONFIG_AR9170_LEDS=y 2.1698 +# CONFIG_CARL9170 is not set 2.1699 +CONFIG_B43=m 2.1700 +CONFIG_B43_PCI_AUTOSELECT=y 2.1701 +CONFIG_B43_PCICORE_AUTOSELECT=y 2.1702 +# CONFIG_B43_PCMCIA is not set 2.1703 +# CONFIG_B43_SDIO is not set 2.1704 +CONFIG_B43_PIO=y 2.1705 +CONFIG_B43_PHY_LP=y 2.1706 +CONFIG_B43_LEDS=y 2.1707 +CONFIG_B43_HWRNG=y 2.1708 +# CONFIG_B43_DEBUG is not set 2.1709 +CONFIG_B43LEGACY=m 2.1710 +CONFIG_B43LEGACY_PCI_AUTOSELECT=y 2.1711 +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y 2.1712 +CONFIG_B43LEGACY_LEDS=y 2.1713 +CONFIG_B43LEGACY_HWRNG=y 2.1714 +# CONFIG_B43LEGACY_DEBUG is not set 2.1715 +CONFIG_B43LEGACY_DMA=y 2.1716 +CONFIG_B43LEGACY_PIO=y 2.1717 +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y 2.1718 +# CONFIG_B43LEGACY_DMA_MODE is not set 2.1719 +# CONFIG_B43LEGACY_PIO_MODE is not set 2.1720 +# CONFIG_HOSTAP is not set 2.1721 +CONFIG_IPW2100=m 2.1722 +CONFIG_IPW2100_MONITOR=y 2.1723 +# CONFIG_IPW2100_DEBUG is not set 2.1724 +CONFIG_IPW2200=m 2.1725 +CONFIG_IPW2200_MONITOR=y 2.1726 +CONFIG_IPW2200_RADIOTAP=y 2.1727 +CONFIG_IPW2200_PROMISCUOUS=y 2.1728 +CONFIG_IPW2200_QOS=y 2.1729 +# CONFIG_IPW2200_DEBUG is not set 2.1730 +CONFIG_LIBIPW=m 2.1731 +# CONFIG_LIBIPW_DEBUG is not set 2.1732 +CONFIG_IWLWIFI=m 2.1733 + 2.1734 +# 2.1735 +# Debugging Options 2.1736 +# 2.1737 +# CONFIG_IWLWIFI_DEBUG is not set 2.1738 +CONFIG_IWLAGN=m 2.1739 +CONFIG_IWL4965=y 2.1740 +CONFIG_IWL5000=y 2.1741 +CONFIG_IWL3945=m 2.1742 +CONFIG_IWM=m 2.1743 +# CONFIG_LIBERTAS is not set 2.1744 +CONFIG_HERMES=m 2.1745 +# CONFIG_HERMES_PRISM is not set 2.1746 +CONFIG_HERMES_CACHE_FW_ON_INIT=y 2.1747 +CONFIG_PLX_HERMES=m 2.1748 +CONFIG_TMD_HERMES=m 2.1749 +CONFIG_NORTEL_HERMES=m 2.1750 +CONFIG_PCMCIA_HERMES=m 2.1751 +CONFIG_PCMCIA_SPECTRUM=m 2.1752 +CONFIG_ORINOCO_USB=m 2.1753 +CONFIG_P54_COMMON=m 2.1754 +CONFIG_P54_USB=m 2.1755 +CONFIG_P54_PCI=m 2.1756 +CONFIG_P54_LEDS=y 2.1757 +CONFIG_RT2X00=m 2.1758 +CONFIG_RT2400PCI=m 2.1759 +CONFIG_RT2500PCI=m 2.1760 +CONFIG_RT61PCI=m 2.1761 +CONFIG_RT2800PCI_PCI=y 2.1762 +# CONFIG_RT2800PCI is not set 2.1763 +CONFIG_RT2500USB=m 2.1764 +CONFIG_RT73USB=m 2.1765 +CONFIG_RT2800USB=m 2.1766 +CONFIG_RT2800USB_RT30XX=y 2.1767 +CONFIG_RT2800USB_RT35XX=y 2.1768 +CONFIG_RT2800USB_UNKNOWN=y 2.1769 +CONFIG_RT2800_LIB=m 2.1770 +CONFIG_RT2X00_LIB_PCI=m 2.1771 +CONFIG_RT2X00_LIB_USB=m 2.1772 +CONFIG_RT2X00_LIB=m 2.1773 +CONFIG_RT2X00_LIB_HT=y 2.1774 +CONFIG_RT2X00_LIB_FIRMWARE=y 2.1775 +CONFIG_RT2X00_LIB_CRYPTO=y 2.1776 +CONFIG_RT2X00_LIB_LEDS=y 2.1777 +# CONFIG_RT2X00_DEBUG is not set 2.1778 +CONFIG_WL1251=m 2.1779 +CONFIG_WL1251_SDIO=m 2.1780 +CONFIG_WL12XX=m 2.1781 +CONFIG_WL1271=m 2.1782 +CONFIG_WL1271_SDIO=m 2.1783 +CONFIG_WL12XX_PLATFORM_DATA=y 2.1784 +CONFIG_ZD1211RW=m 2.1785 +# CONFIG_ZD1211RW_DEBUG is not set 2.1786 + 2.1787 +# 2.1788 +# WiMAX Wireless Broadband devices 2.1789 +# 2.1790 +CONFIG_WIMAX_I2400M=m 2.1791 +CONFIG_WIMAX_I2400M_USB=m 2.1792 +CONFIG_WIMAX_I2400M_SDIO=m 2.1793 +# CONFIG_WIMAX_IWMC3200_SDIO is not set 2.1794 +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 2.1795 + 2.1796 +# 2.1797 +# USB Network Adapters 2.1798 +# 2.1799 +# CONFIG_USB_CATC is not set 2.1800 +# CONFIG_USB_KAWETH is not set 2.1801 +# CONFIG_USB_PEGASUS is not set 2.1802 +# CONFIG_USB_RTL8150 is not set 2.1803 +CONFIG_USB_USBNET=m 2.1804 +CONFIG_USB_NET_AX8817X=m 2.1805 +CONFIG_USB_NET_CDCETHER=m 2.1806 +CONFIG_USB_NET_CDC_EEM=m 2.1807 +CONFIG_USB_NET_DM9601=m 2.1808 +CONFIG_USB_NET_SMSC75XX=m 2.1809 +# CONFIG_USB_NET_SMSC95XX is not set 2.1810 +# CONFIG_USB_NET_GL620A is not set 2.1811 +CONFIG_USB_NET_NET1080=m 2.1812 +# CONFIG_USB_NET_PLUSB is not set 2.1813 +# CONFIG_USB_NET_MCS7830 is not set 2.1814 +CONFIG_USB_NET_RNDIS_HOST=m 2.1815 +CONFIG_USB_NET_CDC_SUBSET=m 2.1816 +# CONFIG_USB_ALI_M5632 is not set 2.1817 +# CONFIG_USB_AN2720 is not set 2.1818 +CONFIG_USB_BELKIN=y 2.1819 +CONFIG_USB_ARMLINUX=y 2.1820 +# CONFIG_USB_EPSON2888 is not set 2.1821 +# CONFIG_USB_KC2190 is not set 2.1822 +CONFIG_USB_NET_ZAURUS=m 2.1823 +# CONFIG_USB_NET_CX82310_ETH is not set 2.1824 +CONFIG_USB_HSO=m 2.1825 +CONFIG_USB_NET_INT51X1=m 2.1826 +CONFIG_USB_IPHETH=m 2.1827 +# CONFIG_USB_SIERRA_NET is not set 2.1828 +CONFIG_NET_PCMCIA=y 2.1829 +CONFIG_PCMCIA_3C589=m 2.1830 +CONFIG_PCMCIA_3C574=m 2.1831 +CONFIG_PCMCIA_FMVJ18X=m 2.1832 +CONFIG_PCMCIA_PCNET=m 2.1833 +CONFIG_PCMCIA_NMCLAN=m 2.1834 +CONFIG_PCMCIA_SMC91C92=m 2.1835 +CONFIG_PCMCIA_XIRC2PS=m 2.1836 +CONFIG_PCMCIA_AXNET=m 2.1837 +# CONFIG_WAN is not set 2.1838 +# CONFIG_ATM_DRIVERS is not set 2.1839 + 2.1840 +# 2.1841 +# CAIF transport drivers 2.1842 +# 2.1843 +# CONFIG_FDDI is not set 2.1844 +# CONFIG_HIPPI is not set 2.1845 +# CONFIG_PLIP is not set 2.1846 +CONFIG_PPP=y 2.1847 +# CONFIG_PPP_MULTILINK is not set 2.1848 +CONFIG_PPP_FILTER=y 2.1849 +CONFIG_PPP_ASYNC=y 2.1850 +# CONFIG_PPP_SYNC_TTY is not set 2.1851 +CONFIG_PPP_DEFLATE=y 2.1852 +CONFIG_PPP_BSDCOMP=y 2.1853 +CONFIG_PPP_MPPE=y 2.1854 +CONFIG_PPPOE=y 2.1855 +CONFIG_PPPOATM=m 2.1856 +# CONFIG_SLIP is not set 2.1857 +CONFIG_SLHC=y 2.1858 +# CONFIG_NET_FC is not set 2.1859 +# CONFIG_NETCONSOLE is not set 2.1860 +# CONFIG_NETPOLL is not set 2.1861 +# CONFIG_NET_POLL_CONTROLLER is not set 2.1862 +CONFIG_VIRTIO_NET=m 2.1863 +CONFIG_VMXNET3=m 2.1864 +CONFIG_ISDN=y 2.1865 +CONFIG_ISDN_I4L=m 2.1866 +CONFIG_ISDN_PPP=y 2.1867 +# CONFIG_ISDN_PPP_VJ is not set 2.1868 +# CONFIG_ISDN_MPP is not set 2.1869 +# CONFIG_IPPP_FILTER is not set 2.1870 +CONFIG_ISDN_PPP_BSDCOMP=m 2.1871 +# CONFIG_ISDN_AUDIO is not set 2.1872 + 2.1873 +# 2.1874 +# ISDN feature submodules 2.1875 +# 2.1876 +# CONFIG_ISDN_DIVERSION is not set 2.1877 + 2.1878 +# 2.1879 +# ISDN4Linux hardware drivers 2.1880 +# 2.1881 + 2.1882 +# 2.1883 +# Passive cards 2.1884 +# 2.1885 +# CONFIG_ISDN_DRV_HISAX is not set 2.1886 + 2.1887 +# 2.1888 +# Active cards 2.1889 +# 2.1890 +# CONFIG_ISDN_DRV_ICN is not set 2.1891 +# CONFIG_ISDN_DRV_PCBIT is not set 2.1892 +# CONFIG_ISDN_DRV_SC is not set 2.1893 +# CONFIG_ISDN_DRV_ACT2000 is not set 2.1894 +CONFIG_ISDN_CAPI=m 2.1895 +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y 2.1896 +CONFIG_CAPI_TRACE=y 2.1897 +CONFIG_ISDN_CAPI_MIDDLEWARE=y 2.1898 +CONFIG_ISDN_CAPI_CAPI20=m 2.1899 +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y 2.1900 +CONFIG_ISDN_CAPI_CAPIFS=m 2.1901 +# CONFIG_ISDN_CAPI_CAPIDRV is not set 2.1902 + 2.1903 +# 2.1904 +# CAPI hardware drivers 2.1905 +# 2.1906 +CONFIG_CAPI_AVM=y 2.1907 +CONFIG_ISDN_DRV_AVMB1_B1ISA=m 2.1908 +CONFIG_ISDN_DRV_AVMB1_B1PCI=m 2.1909 +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y 2.1910 +CONFIG_ISDN_DRV_AVMB1_T1ISA=m 2.1911 +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m 2.1912 +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m 2.1913 +CONFIG_ISDN_DRV_AVMB1_T1PCI=m 2.1914 +CONFIG_ISDN_DRV_AVMB1_C4=m 2.1915 +CONFIG_CAPI_EICON=y 2.1916 +CONFIG_ISDN_DIVAS=m 2.1917 +CONFIG_ISDN_DIVAS_BRIPCI=y 2.1918 +CONFIG_ISDN_DIVAS_PRIPCI=y 2.1919 +CONFIG_ISDN_DIVAS_DIVACAPI=m 2.1920 +CONFIG_ISDN_DIVAS_USERIDI=m 2.1921 +CONFIG_ISDN_DIVAS_MAINT=m 2.1922 +# CONFIG_ISDN_DRV_GIGASET is not set 2.1923 +# CONFIG_HYSDN is not set 2.1924 +CONFIG_MISDN=m 2.1925 +CONFIG_MISDN_DSP=m 2.1926 +CONFIG_MISDN_L1OIP=m 2.1927 + 2.1928 +# 2.1929 +# mISDN hardware drivers 2.1930 +# 2.1931 +CONFIG_MISDN_HFCPCI=m 2.1932 +CONFIG_MISDN_HFCMULTI=m 2.1933 +# CONFIG_MISDN_HFCUSB is not set 2.1934 +CONFIG_MISDN_AVMFRITZ=m 2.1935 +CONFIG_MISDN_SPEEDFAX=m 2.1936 +CONFIG_MISDN_INFINEON=m 2.1937 +CONFIG_MISDN_W6692=m 2.1938 +CONFIG_MISDN_NETJET=m 2.1939 +CONFIG_MISDN_IPAC=m 2.1940 +CONFIG_MISDN_ISAR=m 2.1941 +CONFIG_ISDN_HDLC=m 2.1942 +# CONFIG_PHONE is not set 2.1943 + 2.1944 +# 2.1945 +# Input device support 2.1946 +# 2.1947 +CONFIG_INPUT=y 2.1948 +# CONFIG_INPUT_FF_MEMLESS is not set 2.1949 +CONFIG_INPUT_POLLDEV=m 2.1950 +CONFIG_INPUT_SPARSEKMAP=m 2.1951 + 2.1952 +# 2.1953 +# Userland interfaces 2.1954 +# 2.1955 +CONFIG_INPUT_MOUSEDEV=y 2.1956 +CONFIG_INPUT_MOUSEDEV_PSAUX=y 2.1957 +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 2.1958 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 2.1959 +CONFIG_INPUT_JOYDEV=y 2.1960 +CONFIG_INPUT_EVDEV=y 2.1961 +# CONFIG_INPUT_EVBUG is not set 2.1962 + 2.1963 +# 2.1964 +# Input Device Drivers 2.1965 +# 2.1966 +CONFIG_INPUT_KEYBOARD=y 2.1967 +# CONFIG_KEYBOARD_ADP5588 is not set 2.1968 +CONFIG_KEYBOARD_ATKBD=y 2.1969 +# CONFIG_KEYBOARD_QT2160 is not set 2.1970 +# CONFIG_KEYBOARD_LKKBD is not set 2.1971 +# CONFIG_KEYBOARD_GPIO is not set 2.1972 +# CONFIG_KEYBOARD_GPIO_POLLED is not set 2.1973 +# CONFIG_KEYBOARD_TCA6416 is not set 2.1974 +# CONFIG_KEYBOARD_MATRIX is not set 2.1975 +# CONFIG_KEYBOARD_LM8323 is not set 2.1976 +# CONFIG_KEYBOARD_MAX7359 is not set 2.1977 +# CONFIG_KEYBOARD_MCS is not set 2.1978 +# CONFIG_KEYBOARD_NEWTON is not set 2.1979 +# CONFIG_KEYBOARD_OPENCORES is not set 2.1980 +# CONFIG_KEYBOARD_STOWAWAY is not set 2.1981 +# CONFIG_KEYBOARD_SUNKBD is not set 2.1982 +# CONFIG_KEYBOARD_XTKBD is not set 2.1983 +CONFIG_INPUT_MOUSE=y 2.1984 +CONFIG_MOUSE_PS2=y 2.1985 +CONFIG_MOUSE_PS2_ALPS=y 2.1986 +CONFIG_MOUSE_PS2_LOGIPS2PP=y 2.1987 +CONFIG_MOUSE_PS2_SYNAPTICS=y 2.1988 +CONFIG_MOUSE_PS2_LIFEBOOK=y 2.1989 +CONFIG_MOUSE_PS2_TRACKPOINT=y 2.1990 +# CONFIG_MOUSE_PS2_ELANTECH is not set 2.1991 +# CONFIG_MOUSE_PS2_SENTELIC is not set 2.1992 +# CONFIG_MOUSE_PS2_TOUCHKIT is not set 2.1993 +CONFIG_MOUSE_SERIAL=m 2.1994 +# CONFIG_MOUSE_APPLETOUCH is not set 2.1995 +# CONFIG_MOUSE_BCM5974 is not set 2.1996 +CONFIG_MOUSE_INPORT=m 2.1997 +# CONFIG_MOUSE_ATIXL is not set 2.1998 +CONFIG_MOUSE_LOGIBM=m 2.1999 +CONFIG_MOUSE_PC110PAD=m 2.2000 +# CONFIG_MOUSE_VSXXXAA is not set 2.2001 +# CONFIG_MOUSE_GPIO is not set 2.2002 +# CONFIG_MOUSE_SYNAPTICS_I2C is not set 2.2003 +CONFIG_INPUT_JOYSTICK=y 2.2004 +CONFIG_JOYSTICK_ANALOG=m 2.2005 +# CONFIG_JOYSTICK_A3D is not set 2.2006 +# CONFIG_JOYSTICK_ADI is not set 2.2007 +# CONFIG_JOYSTICK_COBRA is not set 2.2008 +# CONFIG_JOYSTICK_GF2K is not set 2.2009 +# CONFIG_JOYSTICK_GRIP is not set 2.2010 +# CONFIG_JOYSTICK_GRIP_MP is not set 2.2011 +# CONFIG_JOYSTICK_GUILLEMOT is not set 2.2012 +# CONFIG_JOYSTICK_INTERACT is not set 2.2013 +CONFIG_JOYSTICK_SIDEWINDER=m 2.2014 +# CONFIG_JOYSTICK_TMDC is not set 2.2015 +# CONFIG_JOYSTICK_IFORCE is not set 2.2016 +# CONFIG_JOYSTICK_WARRIOR is not set 2.2017 +# CONFIG_JOYSTICK_MAGELLAN is not set 2.2018 +# CONFIG_JOYSTICK_SPACEORB is not set 2.2019 +# CONFIG_JOYSTICK_SPACEBALL is not set 2.2020 +# CONFIG_JOYSTICK_STINGER is not set 2.2021 +# CONFIG_JOYSTICK_TWIDJOY is not set 2.2022 +# CONFIG_JOYSTICK_ZHENHUA is not set 2.2023 +# CONFIG_JOYSTICK_DB9 is not set 2.2024 +# CONFIG_JOYSTICK_GAMECON is not set 2.2025 +# CONFIG_JOYSTICK_TURBOGRAFX is not set 2.2026 +# CONFIG_JOYSTICK_JOYDUMP is not set 2.2027 +CONFIG_JOYSTICK_XPAD=m 2.2028 +# CONFIG_JOYSTICK_XPAD_FF is not set 2.2029 +# CONFIG_JOYSTICK_XPAD_LEDS is not set 2.2030 +CONFIG_INPUT_TABLET=y 2.2031 +# CONFIG_TABLET_USB_ACECAD is not set 2.2032 +# CONFIG_TABLET_USB_AIPTEK is not set 2.2033 +# CONFIG_TABLET_USB_GTCO is not set 2.2034 +# CONFIG_TABLET_USB_HANWANG is not set 2.2035 +# CONFIG_TABLET_USB_KBTAB is not set 2.2036 +CONFIG_TABLET_USB_WACOM=m 2.2037 +CONFIG_INPUT_TOUCHSCREEN=y 2.2038 +CONFIG_TOUCHSCREEN_AD7879=m 2.2039 +CONFIG_TOUCHSCREEN_AD7879_I2C=m 2.2040 +# CONFIG_TOUCHSCREEN_BU21013 is not set 2.2041 +CONFIG_TOUCHSCREEN_CY8CTMG110=m 2.2042 +# CONFIG_TOUCHSCREEN_DYNAPRO is not set 2.2043 +CONFIG_TOUCHSCREEN_HAMPSHIRE=m 2.2044 +# CONFIG_TOUCHSCREEN_EETI is not set 2.2045 +CONFIG_TOUCHSCREEN_FUJITSU=m 2.2046 +CONFIG_TOUCHSCREEN_GUNZE=m 2.2047 +CONFIG_TOUCHSCREEN_ELO=m 2.2048 +CONFIG_TOUCHSCREEN_WACOM_W8001=m 2.2049 +# CONFIG_TOUCHSCREEN_MCS5000 is not set 2.2050 +CONFIG_TOUCHSCREEN_MTOUCH=m 2.2051 +CONFIG_TOUCHSCREEN_INEXIO=m 2.2052 +CONFIG_TOUCHSCREEN_MK712=m 2.2053 +CONFIG_TOUCHSCREEN_HTCPEN=m 2.2054 +CONFIG_TOUCHSCREEN_PENMOUNT=m 2.2055 +CONFIG_TOUCHSCREEN_QT602240=m 2.2056 +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m 2.2057 +CONFIG_TOUCHSCREEN_TOUCHWIN=m 2.2058 +CONFIG_TOUCHSCREEN_WM97XX=m 2.2059 +CONFIG_TOUCHSCREEN_WM9705=y 2.2060 +CONFIG_TOUCHSCREEN_WM9712=y 2.2061 +CONFIG_TOUCHSCREEN_WM9713=y 2.2062 +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m 2.2063 +CONFIG_TOUCHSCREEN_USB_EGALAX=y 2.2064 +CONFIG_TOUCHSCREEN_USB_PANJIT=y 2.2065 +CONFIG_TOUCHSCREEN_USB_3M=y 2.2066 +CONFIG_TOUCHSCREEN_USB_ITM=y 2.2067 +CONFIG_TOUCHSCREEN_USB_ETURBO=y 2.2068 +CONFIG_TOUCHSCREEN_USB_GUNZE=y 2.2069 +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y 2.2070 +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y 2.2071 +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y 2.2072 +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y 2.2073 +CONFIG_TOUCHSCREEN_USB_GOTOP=y 2.2074 +CONFIG_TOUCHSCREEN_USB_JASTEC=y 2.2075 +CONFIG_TOUCHSCREEN_USB_E2I=y 2.2076 +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y 2.2077 +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y 2.2078 +CONFIG_TOUCHSCREEN_USB_NEXIO=y 2.2079 +CONFIG_TOUCHSCREEN_TOUCHIT213=m 2.2080 +CONFIG_TOUCHSCREEN_TSC2007=m 2.2081 +CONFIG_TOUCHSCREEN_TPS6507X=m 2.2082 +CONFIG_INPUT_MISC=y 2.2083 +CONFIG_INPUT_AD714X=m 2.2084 +CONFIG_INPUT_AD714X_I2C=m 2.2085 +CONFIG_INPUT_PCSPKR=y 2.2086 +# CONFIG_INPUT_APANEL is not set 2.2087 +# CONFIG_INPUT_WISTRON_BTNS is not set 2.2088 +# CONFIG_INPUT_ATLAS_BTNS is not set 2.2089 +CONFIG_INPUT_ATI_REMOTE=m 2.2090 +CONFIG_INPUT_ATI_REMOTE2=m 2.2091 +# CONFIG_INPUT_KEYSPAN_REMOTE is not set 2.2092 +# CONFIG_INPUT_POWERMATE is not set 2.2093 +# CONFIG_INPUT_YEALINK is not set 2.2094 +# CONFIG_INPUT_CM109 is not set 2.2095 +CONFIG_INPUT_UINPUT=m 2.2096 +# CONFIG_INPUT_WINBOND_CIR is not set 2.2097 +CONFIG_INPUT_PCF8574=m 2.2098 +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set 2.2099 +CONFIG_INPUT_ADXL34X=m 2.2100 +CONFIG_INPUT_ADXL34X_I2C=m 2.2101 + 2.2102 +# 2.2103 +# Hardware I/O ports 2.2104 +# 2.2105 +CONFIG_SERIO=y 2.2106 +CONFIG_SERIO_I8042=y 2.2107 +CONFIG_SERIO_SERPORT=y 2.2108 +# CONFIG_SERIO_CT82C710 is not set 2.2109 +# CONFIG_SERIO_PARKBD is not set 2.2110 +CONFIG_SERIO_PCIPS2=y 2.2111 +CONFIG_SERIO_LIBPS2=y 2.2112 +CONFIG_SERIO_RAW=y 2.2113 +# CONFIG_SERIO_ALTERA_PS2 is not set 2.2114 +# CONFIG_SERIO_PS2MULT is not set 2.2115 +CONFIG_GAMEPORT=m 2.2116 +CONFIG_GAMEPORT_NS558=m 2.2117 +# CONFIG_GAMEPORT_L4 is not set 2.2118 +CONFIG_GAMEPORT_EMU10K1=m 2.2119 +# CONFIG_GAMEPORT_FM801 is not set 2.2120 + 2.2121 +# 2.2122 +# Character devices 2.2123 +# 2.2124 +CONFIG_VT=y 2.2125 +CONFIG_CONSOLE_TRANSLATIONS=y 2.2126 +CONFIG_VT_CONSOLE=y 2.2127 +CONFIG_HW_CONSOLE=y 2.2128 +# CONFIG_VT_HW_CONSOLE_BINDING is not set 2.2129 +CONFIG_DEVKMEM=y 2.2130 +# CONFIG_SERIAL_NONSTANDARD is not set 2.2131 +# CONFIG_N_GSM is not set 2.2132 +CONFIG_NOZOMI=m 2.2133 + 2.2134 +# 2.2135 +# Serial drivers 2.2136 +# 2.2137 +CONFIG_SERIAL_8250=y 2.2138 +# CONFIG_SERIAL_8250_CONSOLE is not set 2.2139 +CONFIG_FIX_EARLYCON_MEM=y 2.2140 +CONFIG_SERIAL_8250_PCI=y 2.2141 +CONFIG_SERIAL_8250_PNP=y 2.2142 +CONFIG_SERIAL_8250_CS=m 2.2143 +CONFIG_SERIAL_8250_NR_UARTS=4 2.2144 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 2.2145 +# CONFIG_SERIAL_8250_EXTENDED is not set 2.2146 + 2.2147 +# 2.2148 +# Non-8250 serial port support 2.2149 +# 2.2150 +# CONFIG_SERIAL_MFD_HSU is not set 2.2151 +CONFIG_SERIAL_CORE=y 2.2152 +# CONFIG_SERIAL_JSM is not set 2.2153 +# CONFIG_SERIAL_TIMBERDALE is not set 2.2154 +# CONFIG_SERIAL_ALTERA_JTAGUART is not set 2.2155 +# CONFIG_SERIAL_ALTERA_UART is not set 2.2156 +CONFIG_UNIX98_PTYS=y 2.2157 +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 2.2158 +# CONFIG_LEGACY_PTYS is not set 2.2159 +CONFIG_PRINTER=m 2.2160 +# CONFIG_LP_CONSOLE is not set 2.2161 +# CONFIG_PPDEV is not set 2.2162 +CONFIG_HVC_DRIVER=y 2.2163 +CONFIG_VIRTIO_CONSOLE=y 2.2164 +# CONFIG_IPMI_HANDLER is not set 2.2165 +CONFIG_HW_RANDOM=y 2.2166 +# CONFIG_HW_RANDOM_TIMERIOMEM is not set 2.2167 +CONFIG_HW_RANDOM_INTEL=y 2.2168 +CONFIG_HW_RANDOM_AMD=y 2.2169 +CONFIG_HW_RANDOM_GEODE=y 2.2170 +CONFIG_HW_RANDOM_VIA=y 2.2171 +CONFIG_HW_RANDOM_VIRTIO=m 2.2172 +CONFIG_NVRAM=y 2.2173 +CONFIG_RTC=m 2.2174 +CONFIG_GEN_RTC=m 2.2175 +# CONFIG_GEN_RTC_X is not set 2.2176 +# CONFIG_DTLK is not set 2.2177 +# CONFIG_R3964 is not set 2.2178 +# CONFIG_APPLICOM is not set 2.2179 +# CONFIG_SONYPI is not set 2.2180 + 2.2181 +# 2.2182 +# PCMCIA character devices 2.2183 +# 2.2184 +# CONFIG_SYNCLINK_CS is not set 2.2185 +# CONFIG_CARDMAN_4000 is not set 2.2186 +# CONFIG_CARDMAN_4040 is not set 2.2187 +# CONFIG_IPWIRELESS is not set 2.2188 +CONFIG_MWAVE=m 2.2189 +# CONFIG_PC8736x_GPIO is not set 2.2190 +# CONFIG_NSC_GPIO is not set 2.2191 +# CONFIG_CS5535_GPIO is not set 2.2192 +# CONFIG_RAW_DRIVER is not set 2.2193 +# CONFIG_HPET is not set 2.2194 +# CONFIG_HANGCHECK_TIMER is not set 2.2195 +# CONFIG_TCG_TPM is not set 2.2196 +# CONFIG_TELCLOCK is not set 2.2197 +CONFIG_DEVPORT=y 2.2198 +# CONFIG_RAMOOPS is not set 2.2199 +CONFIG_I2C=m 2.2200 +CONFIG_I2C_BOARDINFO=y 2.2201 +CONFIG_I2C_COMPAT=y 2.2202 +# CONFIG_I2C_CHARDEV is not set 2.2203 +# CONFIG_I2C_MUX is not set 2.2204 +CONFIG_I2C_HELPER_AUTO=y 2.2205 +CONFIG_I2C_ALGOBIT=m 2.2206 + 2.2207 +# 2.2208 +# I2C Hardware Bus support 2.2209 +# 2.2210 + 2.2211 +# 2.2212 +# PC SMBus host controller drivers 2.2213 +# 2.2214 +# CONFIG_I2C_ALI1535 is not set 2.2215 +# CONFIG_I2C_ALI1563 is not set 2.2216 +# CONFIG_I2C_ALI15X3 is not set 2.2217 +# CONFIG_I2C_AMD756 is not set 2.2218 +# CONFIG_I2C_AMD8111 is not set 2.2219 +# CONFIG_I2C_I801 is not set 2.2220 +# CONFIG_I2C_ISCH is not set 2.2221 +# CONFIG_I2C_PIIX4 is not set 2.2222 +# CONFIG_I2C_NFORCE2 is not set 2.2223 +# CONFIG_I2C_SIS5595 is not set 2.2224 +# CONFIG_I2C_SIS630 is not set 2.2225 +# CONFIG_I2C_SIS96X is not set 2.2226 +# CONFIG_I2C_VIA is not set 2.2227 +# CONFIG_I2C_VIAPRO is not set 2.2228 + 2.2229 +# 2.2230 +# ACPI drivers 2.2231 +# 2.2232 +# CONFIG_I2C_SCMI is not set 2.2233 + 2.2234 +# 2.2235 +# I2C system bus drivers (mostly embedded / system-on-chip) 2.2236 +# 2.2237 +# CONFIG_I2C_GPIO is not set 2.2238 +# CONFIG_I2C_INTEL_MID is not set 2.2239 +# CONFIG_I2C_OCORES is not set 2.2240 +# CONFIG_I2C_PCA_PLATFORM is not set 2.2241 +# CONFIG_I2C_SIMTEC is not set 2.2242 +# CONFIG_I2C_XILINX is not set 2.2243 + 2.2244 +# 2.2245 +# External I2C/SMBus adapter drivers 2.2246 +# 2.2247 +# CONFIG_I2C_PARPORT is not set 2.2248 +# CONFIG_I2C_PARPORT_LIGHT is not set 2.2249 +# CONFIG_I2C_TAOS_EVM is not set 2.2250 +# CONFIG_I2C_TINY_USB is not set 2.2251 + 2.2252 +# 2.2253 +# Other I2C/SMBus bus drivers 2.2254 +# 2.2255 +# CONFIG_I2C_PCA_ISA is not set 2.2256 +# CONFIG_I2C_STUB is not set 2.2257 +# CONFIG_SCx200_ACB is not set 2.2258 +# CONFIG_I2C_DEBUG_CORE is not set 2.2259 +# CONFIG_I2C_DEBUG_ALGO is not set 2.2260 +# CONFIG_I2C_DEBUG_BUS is not set 2.2261 +# CONFIG_SPI is not set 2.2262 + 2.2263 +# 2.2264 +# PPS support 2.2265 +# 2.2266 +# CONFIG_PPS is not set 2.2267 +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 2.2268 +CONFIG_GPIOLIB=y 2.2269 +# CONFIG_GPIO_SYSFS is not set 2.2270 + 2.2271 +# 2.2272 +# Memory mapped GPIO expanders: 2.2273 +# 2.2274 +# CONFIG_GPIO_BASIC_MMIO is not set 2.2275 +# CONFIG_GPIO_IT8761E is not set 2.2276 +# CONFIG_GPIO_SCH is not set 2.2277 +# CONFIG_GPIO_VX855 is not set 2.2278 + 2.2279 +# 2.2280 +# I2C GPIO expanders: 2.2281 +# 2.2282 +# CONFIG_GPIO_MAX7300 is not set 2.2283 +# CONFIG_GPIO_MAX732X is not set 2.2284 +# CONFIG_GPIO_PCA953X is not set 2.2285 +# CONFIG_GPIO_PCF857X is not set 2.2286 +# CONFIG_GPIO_ADP5588 is not set 2.2287 + 2.2288 +# 2.2289 +# PCI GPIO expanders: 2.2290 +# 2.2291 +# CONFIG_GPIO_CS5535 is not set 2.2292 +CONFIG_GPIO_BT8XX=m 2.2293 +# CONFIG_GPIO_LANGWELL is not set 2.2294 +# CONFIG_GPIO_PCH is not set 2.2295 +# CONFIG_GPIO_RDC321X is not set 2.2296 + 2.2297 +# 2.2298 +# SPI GPIO expanders: 2.2299 +# 2.2300 + 2.2301 +# 2.2302 +# AC97 GPIO expanders: 2.2303 +# 2.2304 + 2.2305 +# 2.2306 +# MODULbus GPIO expanders: 2.2307 +# 2.2308 +# CONFIG_W1 is not set 2.2309 +CONFIG_POWER_SUPPLY=y 2.2310 +# CONFIG_POWER_SUPPLY_DEBUG is not set 2.2311 +# CONFIG_PDA_POWER is not set 2.2312 +# CONFIG_TEST_POWER is not set 2.2313 +# CONFIG_BATTERY_DS2782 is not set 2.2314 +# CONFIG_BATTERY_BQ20Z75 is not set 2.2315 +# CONFIG_BATTERY_BQ27x00 is not set 2.2316 +# CONFIG_BATTERY_MAX17040 is not set 2.2317 +CONFIG_HWMON=m 2.2318 +CONFIG_HWMON_VID=m 2.2319 +# CONFIG_HWMON_DEBUG_CHIP is not set 2.2320 + 2.2321 +# 2.2322 +# Native drivers 2.2323 +# 2.2324 +CONFIG_SENSORS_ABITUGURU=m 2.2325 +CONFIG_SENSORS_ABITUGURU3=m 2.2326 +CONFIG_SENSORS_AD7414=m 2.2327 +CONFIG_SENSORS_AD7418=m 2.2328 +CONFIG_SENSORS_ADM1021=m 2.2329 +CONFIG_SENSORS_ADM1025=m 2.2330 +CONFIG_SENSORS_ADM1026=m 2.2331 +CONFIG_SENSORS_ADM1029=m 2.2332 +CONFIG_SENSORS_ADM1031=m 2.2333 +CONFIG_SENSORS_ADM9240=m 2.2334 +CONFIG_SENSORS_ADT7411=m 2.2335 +CONFIG_SENSORS_ADT7462=m 2.2336 +CONFIG_SENSORS_ADT7470=m 2.2337 +CONFIG_SENSORS_ADT7475=m 2.2338 +CONFIG_SENSORS_ASC7621=m 2.2339 +CONFIG_SENSORS_K8TEMP=m 2.2340 +CONFIG_SENSORS_K10TEMP=m 2.2341 +CONFIG_SENSORS_ASB100=m 2.2342 +CONFIG_SENSORS_ATXP1=m 2.2343 +CONFIG_SENSORS_DS1621=m 2.2344 +CONFIG_SENSORS_I5K_AMB=m 2.2345 +CONFIG_SENSORS_F71805F=m 2.2346 +CONFIG_SENSORS_F71882FG=m 2.2347 +CONFIG_SENSORS_F75375S=m 2.2348 +CONFIG_SENSORS_FSCHMD=m 2.2349 +CONFIG_SENSORS_G760A=m 2.2350 +CONFIG_SENSORS_GL518SM=m 2.2351 +CONFIG_SENSORS_GL520SM=m 2.2352 +CONFIG_SENSORS_GPIO_FAN=m 2.2353 +CONFIG_SENSORS_CORETEMP=m 2.2354 +CONFIG_SENSORS_PKGTEMP=m 2.2355 +CONFIG_SENSORS_IT87=m 2.2356 +CONFIG_SENSORS_JC42=m 2.2357 +CONFIG_SENSORS_LM63=m 2.2358 +CONFIG_SENSORS_LM73=m 2.2359 +CONFIG_SENSORS_LM75=m 2.2360 +CONFIG_SENSORS_LM77=m 2.2361 +CONFIG_SENSORS_LM78=m 2.2362 +CONFIG_SENSORS_LM80=m 2.2363 +CONFIG_SENSORS_LM83=m 2.2364 +CONFIG_SENSORS_LM85=m 2.2365 +CONFIG_SENSORS_LM87=m 2.2366 +CONFIG_SENSORS_LM90=m 2.2367 +CONFIG_SENSORS_LM92=m 2.2368 +CONFIG_SENSORS_LM93=m 2.2369 +CONFIG_SENSORS_LTC4215=m 2.2370 +CONFIG_SENSORS_LTC4245=m 2.2371 +CONFIG_SENSORS_LTC4261=m 2.2372 +CONFIG_SENSORS_LM95241=m 2.2373 +CONFIG_SENSORS_MAX1619=m 2.2374 +CONFIG_SENSORS_MAX6650=m 2.2375 +CONFIG_SENSORS_PC87360=m 2.2376 +CONFIG_SENSORS_PC87427=m 2.2377 +CONFIG_SENSORS_PCF8591=m 2.2378 +CONFIG_SENSORS_SHT15=m 2.2379 +CONFIG_SENSORS_SIS5595=m 2.2380 +CONFIG_SENSORS_SMM665=m 2.2381 +CONFIG_SENSORS_DME1737=m 2.2382 +CONFIG_SENSORS_EMC1403=m 2.2383 +CONFIG_SENSORS_EMC2103=m 2.2384 +CONFIG_SENSORS_SMSC47M1=m 2.2385 +CONFIG_SENSORS_SMSC47M192=m 2.2386 +CONFIG_SENSORS_SMSC47B397=m 2.2387 +CONFIG_SENSORS_ADS7828=m 2.2388 +CONFIG_SENSORS_AMC6821=m 2.2389 +CONFIG_SENSORS_THMC50=m 2.2390 +CONFIG_SENSORS_TMP102=m 2.2391 +CONFIG_SENSORS_TMP401=m 2.2392 +CONFIG_SENSORS_TMP421=m 2.2393 +CONFIG_SENSORS_VIA_CPUTEMP=m 2.2394 +CONFIG_SENSORS_VIA686A=m 2.2395 +CONFIG_SENSORS_VT1211=m 2.2396 +CONFIG_SENSORS_VT8231=m 2.2397 +CONFIG_SENSORS_W83781D=m 2.2398 +CONFIG_SENSORS_W83791D=m 2.2399 +CONFIG_SENSORS_W83792D=m 2.2400 +CONFIG_SENSORS_W83793=m 2.2401 +CONFIG_SENSORS_W83795=m 2.2402 +# CONFIG_SENSORS_W83795_FANCTRL is not set 2.2403 +CONFIG_SENSORS_W83L785TS=m 2.2404 +CONFIG_SENSORS_W83L786NG=m 2.2405 +CONFIG_SENSORS_W83627HF=m 2.2406 +CONFIG_SENSORS_W83627EHF=m 2.2407 +CONFIG_SENSORS_LIS3_I2C=m 2.2408 +CONFIG_SENSORS_APPLESMC=m 2.2409 + 2.2410 +# 2.2411 +# ACPI drivers 2.2412 +# 2.2413 +# CONFIG_SENSORS_ATK0110 is not set 2.2414 +# CONFIG_SENSORS_LIS3LV02D is not set 2.2415 +CONFIG_THERMAL=y 2.2416 +CONFIG_WATCHDOG=y 2.2417 +# CONFIG_WATCHDOG_NOWAYOUT is not set 2.2418 + 2.2419 +# 2.2420 +# Watchdog Device Drivers 2.2421 +# 2.2422 +CONFIG_SOFT_WATCHDOG=m 2.2423 +# CONFIG_ACQUIRE_WDT is not set 2.2424 +# CONFIG_ADVANTECH_WDT is not set 2.2425 +# CONFIG_ALIM1535_WDT is not set 2.2426 +# CONFIG_ALIM7101_WDT is not set 2.2427 +# CONFIG_F71808E_WDT is not set 2.2428 +# CONFIG_SC520_WDT is not set 2.2429 +# CONFIG_SBC_FITPC2_WATCHDOG is not set 2.2430 +# CONFIG_EUROTECH_WDT is not set 2.2431 +# CONFIG_IB700_WDT is not set 2.2432 +# CONFIG_IBMASR is not set 2.2433 +# CONFIG_WAFER_WDT is not set 2.2434 +# CONFIG_I6300ESB_WDT is not set 2.2435 +# CONFIG_ITCO_WDT is not set 2.2436 +# CONFIG_IT8712F_WDT is not set 2.2437 +# CONFIG_IT87_WDT is not set 2.2438 +# CONFIG_HP_WATCHDOG is not set 2.2439 +# CONFIG_SC1200_WDT is not set 2.2440 +# CONFIG_PC87413_WDT is not set 2.2441 +# CONFIG_60XX_WDT is not set 2.2442 +# CONFIG_SBC8360_WDT is not set 2.2443 +# CONFIG_SBC7240_WDT is not set 2.2444 +# CONFIG_CPU5_WDT is not set 2.2445 +# CONFIG_SMSC_SCH311X_WDT is not set 2.2446 +# CONFIG_SMSC37B787_WDT is not set 2.2447 +# CONFIG_W83627HF_WDT is not set 2.2448 +# CONFIG_W83697HF_WDT is not set 2.2449 +# CONFIG_W83697UG_WDT is not set 2.2450 +# CONFIG_W83877F_WDT is not set 2.2451 +# CONFIG_W83977F_WDT is not set 2.2452 +# CONFIG_MACHZ_WDT is not set 2.2453 +# CONFIG_SBC_EPX_C3_WATCHDOG is not set 2.2454 + 2.2455 +# 2.2456 +# ISA-based Watchdog Cards 2.2457 +# 2.2458 +# CONFIG_PCWATCHDOG is not set 2.2459 +# CONFIG_MIXCOMWD is not set 2.2460 +# CONFIG_WDT is not set 2.2461 + 2.2462 +# 2.2463 +# PCI-based Watchdog Cards 2.2464 +# 2.2465 +# CONFIG_PCIPCWATCHDOG is not set 2.2466 +# CONFIG_WDTPCI is not set 2.2467 + 2.2468 +# 2.2469 +# USB-based Watchdog Cards 2.2470 +# 2.2471 +# CONFIG_USBPCWATCHDOG is not set 2.2472 +CONFIG_SSB_POSSIBLE=y 2.2473 + 2.2474 +# 2.2475 +# Sonics Silicon Backplane 2.2476 +# 2.2477 +CONFIG_SSB=m 2.2478 +CONFIG_SSB_SPROM=y 2.2479 +CONFIG_SSB_BLOCKIO=y 2.2480 +CONFIG_SSB_PCIHOST_POSSIBLE=y 2.2481 +CONFIG_SSB_PCIHOST=y 2.2482 +CONFIG_SSB_B43_PCI_BRIDGE=y 2.2483 +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y 2.2484 +# CONFIG_SSB_PCMCIAHOST is not set 2.2485 +CONFIG_SSB_SDIOHOST_POSSIBLE=y 2.2486 +# CONFIG_SSB_SDIOHOST is not set 2.2487 +# CONFIG_SSB_DEBUG is not set 2.2488 +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y 2.2489 +CONFIG_SSB_DRIVER_PCICORE=y 2.2490 +# CONFIG_MFD_SUPPORT is not set 2.2491 +# CONFIG_REGULATOR is not set 2.2492 +# CONFIG_MEDIA_SUPPORT is not set 2.2493 + 2.2494 +# 2.2495 +# Graphics support 2.2496 +# 2.2497 +CONFIG_AGP=m 2.2498 +CONFIG_AGP_ALI=m 2.2499 +CONFIG_AGP_ATI=m 2.2500 +CONFIG_AGP_AMD=m 2.2501 +CONFIG_AGP_AMD64=m 2.2502 +CONFIG_AGP_INTEL=m 2.2503 +CONFIG_AGP_NVIDIA=m 2.2504 +CONFIG_AGP_SIS=m 2.2505 +CONFIG_AGP_SWORKS=m 2.2506 +CONFIG_AGP_VIA=m 2.2507 +CONFIG_AGP_EFFICEON=m 2.2508 +CONFIG_VGA_ARB=y 2.2509 +CONFIG_VGA_ARB_MAX_GPUS=16 2.2510 +# CONFIG_VGA_SWITCHEROO is not set 2.2511 +CONFIG_DRM=m 2.2512 +CONFIG_DRM_KMS_HELPER=m 2.2513 +CONFIG_DRM_TTM=m 2.2514 +# CONFIG_DRM_TDFX is not set 2.2515 +CONFIG_DRM_R128=m 2.2516 +CONFIG_DRM_RADEON=m 2.2517 +CONFIG_DRM_RADEON_KMS=y 2.2518 +CONFIG_DRM_I810=m 2.2519 +CONFIG_DRM_I830=m 2.2520 +CONFIG_DRM_I915=m 2.2521 +CONFIG_DRM_I915_KMS=y 2.2522 +CONFIG_DRM_MGA=m 2.2523 +CONFIG_DRM_SIS=m 2.2524 +CONFIG_DRM_VIA=m 2.2525 +CONFIG_DRM_SAVAGE=m 2.2526 +# CONFIG_STUB_POULSBO is not set 2.2527 +# CONFIG_VGASTATE is not set 2.2528 +CONFIG_VIDEO_OUTPUT_CONTROL=m 2.2529 +CONFIG_FB=y 2.2530 +# CONFIG_FIRMWARE_EDID is not set 2.2531 +# CONFIG_FB_DDC is not set 2.2532 +CONFIG_FB_BOOT_VESA_SUPPORT=y 2.2533 +CONFIG_FB_CFB_FILLRECT=y 2.2534 +CONFIG_FB_CFB_COPYAREA=y 2.2535 +CONFIG_FB_CFB_IMAGEBLIT=y 2.2536 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 2.2537 +# CONFIG_FB_SYS_FILLRECT is not set 2.2538 +# CONFIG_FB_SYS_COPYAREA is not set 2.2539 +# CONFIG_FB_SYS_IMAGEBLIT is not set 2.2540 +# CONFIG_FB_FOREIGN_ENDIAN is not set 2.2541 +# CONFIG_FB_SYS_FOPS is not set 2.2542 +# CONFIG_FB_SVGALIB is not set 2.2543 +# CONFIG_FB_MACMODES is not set 2.2544 +CONFIG_FB_BACKLIGHT=y 2.2545 +# CONFIG_FB_MODE_HELPERS is not set 2.2546 +# CONFIG_FB_TILEBLITTING is not set 2.2547 + 2.2548 +# 2.2549 +# Frame buffer hardware drivers 2.2550 +# 2.2551 +# CONFIG_FB_CIRRUS is not set 2.2552 +# CONFIG_FB_PM2 is not set 2.2553 +# CONFIG_FB_CYBER2000 is not set 2.2554 +# CONFIG_FB_ARC is not set 2.2555 +# CONFIG_FB_ASILIANT is not set 2.2556 +# CONFIG_FB_IMSTT is not set 2.2557 +# CONFIG_FB_VGA16 is not set 2.2558 +CONFIG_FB_VESA=y 2.2559 +# CONFIG_FB_N411 is not set 2.2560 +# CONFIG_FB_HGA is not set 2.2561 +# CONFIG_FB_S1D13XXX is not set 2.2562 +# CONFIG_FB_NVIDIA is not set 2.2563 +# CONFIG_FB_RIVA is not set 2.2564 +# CONFIG_FB_I810 is not set 2.2565 +# CONFIG_FB_LE80578 is not set 2.2566 +# CONFIG_FB_MATROX is not set 2.2567 +# CONFIG_FB_RADEON is not set 2.2568 +# CONFIG_FB_ATY128 is not set 2.2569 +# CONFIG_FB_ATY is not set 2.2570 +# CONFIG_FB_S3 is not set 2.2571 +# CONFIG_FB_SAVAGE is not set 2.2572 +# CONFIG_FB_SIS is not set 2.2573 +# CONFIG_FB_VIA is not set 2.2574 +# CONFIG_FB_NEOMAGIC is not set 2.2575 +# CONFIG_FB_KYRO is not set 2.2576 +# CONFIG_FB_3DFX is not set 2.2577 +# CONFIG_FB_VOODOO1 is not set 2.2578 +# CONFIG_FB_VT8623 is not set 2.2579 +# CONFIG_FB_TRIDENT is not set 2.2580 +# CONFIG_FB_ARK is not set 2.2581 +# CONFIG_FB_PM3 is not set 2.2582 +# CONFIG_FB_CARMINE is not set 2.2583 +# CONFIG_FB_GEODE is not set 2.2584 +# CONFIG_FB_VIRTUAL is not set 2.2585 +# CONFIG_FB_METRONOME is not set 2.2586 +# CONFIG_FB_MB862XX is not set 2.2587 +# CONFIG_FB_BROADSHEET is not set 2.2588 +CONFIG_BACKLIGHT_LCD_SUPPORT=y 2.2589 +CONFIG_LCD_CLASS_DEVICE=m 2.2590 +# CONFIG_LCD_PLATFORM is not set 2.2591 +CONFIG_BACKLIGHT_CLASS_DEVICE=y 2.2592 +CONFIG_BACKLIGHT_GENERIC=m 2.2593 +# CONFIG_BACKLIGHT_PROGEAR is not set 2.2594 +# CONFIG_BACKLIGHT_MBP_NVIDIA is not set 2.2595 +# CONFIG_BACKLIGHT_SAHARA is not set 2.2596 +# CONFIG_BACKLIGHT_ADP8860 is not set 2.2597 + 2.2598 +# 2.2599 +# Display device support 2.2600 +# 2.2601 +# CONFIG_DISPLAY_SUPPORT is not set 2.2602 + 2.2603 +# 2.2604 +# Console display driver support 2.2605 +# 2.2606 +CONFIG_VGA_CONSOLE=y 2.2607 +# CONFIG_VGACON_SOFT_SCROLLBACK is not set 2.2608 +# CONFIG_MDA_CONSOLE is not set 2.2609 +CONFIG_DUMMY_CONSOLE=y 2.2610 +CONFIG_FRAMEBUFFER_CONSOLE=y 2.2611 +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set 2.2612 +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 2.2613 +# CONFIG_FONTS is not set 2.2614 +CONFIG_FONT_8x8=y 2.2615 +CONFIG_FONT_8x16=y 2.2616 +CONFIG_LOGO=y 2.2617 +# CONFIG_LOGO_LINUX_MONO is not set 2.2618 +# CONFIG_LOGO_LINUX_VGA16 is not set 2.2619 +CONFIG_LOGO_LINUX_CLUT224=y 2.2620 +CONFIG_SOUND=m 2.2621 +CONFIG_SOUND_OSS_CORE=y 2.2622 +CONFIG_SOUND_OSS_CORE_PRECLAIM=y 2.2623 +CONFIG_SND=m 2.2624 +CONFIG_SND_TIMER=m 2.2625 +CONFIG_SND_PCM=m 2.2626 +CONFIG_SND_HWDEP=m 2.2627 +CONFIG_SND_RAWMIDI=m 2.2628 +CONFIG_SND_JACK=y 2.2629 +CONFIG_SND_SEQUENCER=m 2.2630 +# CONFIG_SND_SEQ_DUMMY is not set 2.2631 +CONFIG_SND_OSSEMUL=y 2.2632 +CONFIG_SND_MIXER_OSS=m 2.2633 +CONFIG_SND_PCM_OSS=m 2.2634 +CONFIG_SND_PCM_OSS_PLUGINS=y 2.2635 +CONFIG_SND_SEQUENCER_OSS=y 2.2636 +CONFIG_SND_RTCTIMER=m 2.2637 +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y 2.2638 +CONFIG_SND_DYNAMIC_MINORS=y 2.2639 +CONFIG_SND_SUPPORT_OLD_API=y 2.2640 +# CONFIG_SND_VERBOSE_PROCFS is not set 2.2641 +# CONFIG_SND_VERBOSE_PRINTK is not set 2.2642 +# CONFIG_SND_DEBUG is not set 2.2643 +CONFIG_SND_VMASTER=y 2.2644 +CONFIG_SND_DMA_SGBUF=y 2.2645 +CONFIG_SND_RAWMIDI_SEQ=m 2.2646 +CONFIG_SND_OPL3_LIB_SEQ=m 2.2647 +CONFIG_SND_OPL4_LIB_SEQ=m 2.2648 +CONFIG_SND_SBAWE_SEQ=m 2.2649 +CONFIG_SND_EMU10K1_SEQ=m 2.2650 +CONFIG_SND_MPU401_UART=m 2.2651 +CONFIG_SND_OPL3_LIB=m 2.2652 +CONFIG_SND_OPL4_LIB=m 2.2653 +CONFIG_SND_VX_LIB=m 2.2654 +CONFIG_SND_AC97_CODEC=m 2.2655 +CONFIG_SND_DRIVERS=y 2.2656 +# CONFIG_SND_DUMMY is not set 2.2657 +# CONFIG_SND_ALOOP is not set 2.2658 +# CONFIG_SND_VIRMIDI is not set 2.2659 +# CONFIG_SND_MTPAV is not set 2.2660 +# CONFIG_SND_MTS64 is not set 2.2661 +# CONFIG_SND_SERIAL_U16550 is not set 2.2662 +CONFIG_SND_MPU401=m 2.2663 +# CONFIG_SND_PORTMAN2X4 is not set 2.2664 +CONFIG_SND_AC97_POWER_SAVE=y 2.2665 +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 2.2666 +CONFIG_SND_WSS_LIB=m 2.2667 +CONFIG_SND_SB_COMMON=m 2.2668 +CONFIG_SND_SB8_DSP=m 2.2669 +CONFIG_SND_SB16_DSP=m 2.2670 +CONFIG_SND_ISA=y 2.2671 +CONFIG_SND_ADLIB=m 2.2672 +CONFIG_SND_AD1816A=m 2.2673 +CONFIG_SND_AD1848=m 2.2674 +CONFIG_SND_ALS100=m 2.2675 +# CONFIG_SND_AZT1605 is not set 2.2676 +# CONFIG_SND_AZT2316 is not set 2.2677 +CONFIG_SND_AZT2320=m 2.2678 +CONFIG_SND_CMI8330=m 2.2679 +CONFIG_SND_CS4231=m 2.2680 +CONFIG_SND_CS4236=m 2.2681 +CONFIG_SND_ES1688=m 2.2682 +CONFIG_SND_ES18XX=m 2.2683 +CONFIG_SND_SC6000=m 2.2684 +CONFIG_SND_GUSCLASSIC=m 2.2685 +CONFIG_SND_GUSEXTREME=m 2.2686 +CONFIG_SND_GUSMAX=m 2.2687 +CONFIG_SND_INTERWAVE=m 2.2688 +CONFIG_SND_INTERWAVE_STB=m 2.2689 +CONFIG_SND_JAZZ16=m 2.2690 +CONFIG_SND_OPL3SA2=m 2.2691 +CONFIG_SND_OPTI92X_AD1848=m 2.2692 +CONFIG_SND_OPTI92X_CS4231=m 2.2693 +CONFIG_SND_OPTI93X=m 2.2694 +CONFIG_SND_MIRO=m 2.2695 +CONFIG_SND_SB8=m 2.2696 +CONFIG_SND_SB16=m 2.2697 +CONFIG_SND_SBAWE=m 2.2698 +# CONFIG_SND_SB16_CSP is not set 2.2699 +CONFIG_SND_SSCAPE=m 2.2700 +CONFIG_SND_WAVEFRONT=m 2.2701 +CONFIG_SND_MSND_PINNACLE=m 2.2702 +CONFIG_SND_MSND_CLASSIC=m 2.2703 +CONFIG_SND_PCI=y 2.2704 +CONFIG_SND_AD1889=m 2.2705 +CONFIG_SND_ALS300=m 2.2706 +CONFIG_SND_ALS4000=m 2.2707 +CONFIG_SND_ALI5451=m 2.2708 +CONFIG_SND_ASIHPI=m 2.2709 +CONFIG_SND_ATIIXP=m 2.2710 +CONFIG_SND_ATIIXP_MODEM=m 2.2711 +CONFIG_SND_AU8810=m 2.2712 +CONFIG_SND_AU8820=m 2.2713 +CONFIG_SND_AU8830=m 2.2714 +CONFIG_SND_AW2=m 2.2715 +CONFIG_SND_AZT3328=m 2.2716 +CONFIG_SND_BT87X=m 2.2717 +# CONFIG_SND_BT87X_OVERCLOCK is not set 2.2718 +CONFIG_SND_CA0106=m 2.2719 +CONFIG_SND_CMIPCI=m 2.2720 +CONFIG_SND_OXYGEN_LIB=m 2.2721 +CONFIG_SND_OXYGEN=m 2.2722 +CONFIG_SND_CS4281=m 2.2723 +CONFIG_SND_CS46XX=m 2.2724 +CONFIG_SND_CS46XX_NEW_DSP=y 2.2725 +CONFIG_SND_CS5530=m 2.2726 +CONFIG_SND_CS5535AUDIO=m 2.2727 +CONFIG_SND_CTXFI=m 2.2728 +CONFIG_SND_DARLA20=m 2.2729 +CONFIG_SND_GINA20=m 2.2730 +CONFIG_SND_LAYLA20=m 2.2731 +CONFIG_SND_DARLA24=m 2.2732 +CONFIG_SND_GINA24=m 2.2733 +CONFIG_SND_LAYLA24=m 2.2734 +CONFIG_SND_MONA=m 2.2735 +CONFIG_SND_MIA=m 2.2736 +CONFIG_SND_ECHO3G=m 2.2737 +CONFIG_SND_INDIGO=m 2.2738 +CONFIG_SND_INDIGOIO=m 2.2739 +CONFIG_SND_INDIGODJ=m 2.2740 +CONFIG_SND_INDIGOIOX=m 2.2741 +CONFIG_SND_INDIGODJX=m 2.2742 +CONFIG_SND_EMU10K1=m 2.2743 +CONFIG_SND_EMU10K1X=m 2.2744 +CONFIG_SND_ENS1370=m 2.2745 +CONFIG_SND_ENS1371=m 2.2746 +CONFIG_SND_ES1938=m 2.2747 +CONFIG_SND_ES1968=m 2.2748 +# CONFIG_SND_ES1968_INPUT is not set 2.2749 +CONFIG_SND_FM801=m 2.2750 +CONFIG_SND_HDA_INTEL=m 2.2751 +CONFIG_SND_HDA_HWDEP=y 2.2752 +# CONFIG_SND_HDA_RECONFIG is not set 2.2753 +# CONFIG_SND_HDA_INPUT_BEEP is not set 2.2754 +# CONFIG_SND_HDA_INPUT_JACK is not set 2.2755 +# CONFIG_SND_HDA_PATCH_LOADER is not set 2.2756 +CONFIG_SND_HDA_CODEC_REALTEK=y 2.2757 +CONFIG_SND_HDA_CODEC_ANALOG=y 2.2758 +CONFIG_SND_HDA_CODEC_SIGMATEL=y 2.2759 +CONFIG_SND_HDA_CODEC_VIA=y 2.2760 +CONFIG_SND_HDA_CODEC_HDMI=y 2.2761 +CONFIG_SND_HDA_CODEC_CIRRUS=y 2.2762 +CONFIG_SND_HDA_CODEC_CONEXANT=y 2.2763 +CONFIG_SND_HDA_CODEC_CA0110=y 2.2764 +CONFIG_SND_HDA_CODEC_CMEDIA=y 2.2765 +CONFIG_SND_HDA_CODEC_SI3054=y 2.2766 +CONFIG_SND_HDA_GENERIC=y 2.2767 +CONFIG_SND_HDA_POWER_SAVE=y 2.2768 +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=60 2.2769 +CONFIG_SND_HDSP=m 2.2770 +CONFIG_SND_HDSPM=m 2.2771 +CONFIG_SND_HIFIER=m 2.2772 +CONFIG_SND_ICE1712=m 2.2773 +CONFIG_SND_ICE1724=m 2.2774 +CONFIG_SND_INTEL8X0=m 2.2775 +CONFIG_SND_INTEL8X0M=m 2.2776 +CONFIG_SND_KORG1212=m 2.2777 +CONFIG_SND_LX6464ES=m 2.2778 +CONFIG_SND_MAESTRO3=m 2.2779 +# CONFIG_SND_MAESTRO3_INPUT is not set 2.2780 +CONFIG_SND_MIXART=m 2.2781 +CONFIG_SND_NM256=m 2.2782 +CONFIG_SND_PCXHR=m 2.2783 +CONFIG_SND_RIPTIDE=m 2.2784 +CONFIG_SND_RME32=m 2.2785 +CONFIG_SND_RME96=m 2.2786 +CONFIG_SND_RME9652=m 2.2787 +CONFIG_SND_SIS7019=m 2.2788 +CONFIG_SND_SONICVIBES=m 2.2789 +CONFIG_SND_TRIDENT=m 2.2790 +CONFIG_SND_VIA82XX=m 2.2791 +CONFIG_SND_VIA82XX_MODEM=m 2.2792 +CONFIG_SND_VIRTUOSO=m 2.2793 +CONFIG_SND_VX222=m 2.2794 +CONFIG_SND_YMFPCI=m 2.2795 +CONFIG_SND_USB=y 2.2796 +CONFIG_SND_USB_AUDIO=m 2.2797 +# CONFIG_SND_USB_UA101 is not set 2.2798 +CONFIG_SND_USB_USX2Y=m 2.2799 +CONFIG_SND_USB_CAIAQ=m 2.2800 +# CONFIG_SND_USB_CAIAQ_INPUT is not set 2.2801 +CONFIG_SND_USB_US122L=m 2.2802 +CONFIG_SND_PCMCIA=y 2.2803 +CONFIG_SND_VXPOCKET=m 2.2804 +CONFIG_SND_PDAUDIOCF=m 2.2805 +# CONFIG_SND_SOC is not set 2.2806 +# CONFIG_SOUND_PRIME is not set 2.2807 +CONFIG_AC97_BUS=m 2.2808 +CONFIG_HID_SUPPORT=y 2.2809 +CONFIG_HID=y 2.2810 +# CONFIG_HIDRAW is not set 2.2811 + 2.2812 +# 2.2813 +# USB Input Devices 2.2814 +# 2.2815 +CONFIG_USB_HID=y 2.2816 +# CONFIG_HID_PID is not set 2.2817 +CONFIG_USB_HIDDEV=y 2.2818 + 2.2819 +# 2.2820 +# Special HID drivers 2.2821 +# 2.2822 +# CONFIG_HID_3M_PCT is not set 2.2823 +CONFIG_HID_A4TECH=y 2.2824 +# CONFIG_HID_ACRUX_FF is not set 2.2825 +CONFIG_HID_APPLE=y 2.2826 +CONFIG_HID_BELKIN=y 2.2827 +# CONFIG_HID_CANDO is not set 2.2828 +CONFIG_HID_CHERRY=y 2.2829 +CONFIG_HID_CHICONY=y 2.2830 +# CONFIG_HID_PRODIKEYS is not set 2.2831 +CONFIG_HID_CYPRESS=y 2.2832 +CONFIG_HID_DRAGONRISE=y 2.2833 +# CONFIG_DRAGONRISE_FF is not set 2.2834 +# CONFIG_HID_EGALAX is not set 2.2835 +CONFIG_HID_EZKEY=y 2.2836 +CONFIG_HID_KYE=y 2.2837 +# CONFIG_HID_UCLOGIC is not set 2.2838 +# CONFIG_HID_WALTOP is not set 2.2839 +CONFIG_HID_GYRATION=y 2.2840 +CONFIG_HID_TWINHAN=y 2.2841 +CONFIG_HID_KENSINGTON=y 2.2842 +CONFIG_HID_LOGITECH=y 2.2843 +# CONFIG_LOGITECH_FF is not set 2.2844 +# CONFIG_LOGIRUMBLEPAD2_FF is not set 2.2845 +# CONFIG_LOGIG940_FF is not set 2.2846 +# CONFIG_LOGIWII_FF is not set 2.2847 +CONFIG_HID_MICROSOFT=y 2.2848 +# CONFIG_HID_MOSART is not set 2.2849 +CONFIG_HID_MONTEREY=y 2.2850 +CONFIG_HID_NTRIG=y 2.2851 +CONFIG_HID_ORTEK=y 2.2852 +CONFIG_HID_PANTHERLORD=y 2.2853 +# CONFIG_PANTHERLORD_FF is not set 2.2854 +CONFIG_HID_PETALYNX=y 2.2855 +# CONFIG_HID_PICOLCD is not set 2.2856 +# CONFIG_HID_QUANTA is not set 2.2857 +# CONFIG_HID_ROCCAT is not set 2.2858 +# CONFIG_HID_ROCCAT_KONE is not set 2.2859 +# CONFIG_HID_ROCCAT_PYRA is not set 2.2860 +CONFIG_HID_SAMSUNG=y 2.2861 +CONFIG_HID_SONY=y 2.2862 +# CONFIG_HID_STANTUM is not set 2.2863 +CONFIG_HID_SUNPLUS=y 2.2864 +CONFIG_HID_GREENASIA=y 2.2865 +# CONFIG_GREENASIA_FF is not set 2.2866 +CONFIG_HID_SMARTJOYPLUS=y 2.2867 +# CONFIG_SMARTJOYPLUS_FF is not set 2.2868 +CONFIG_HID_TOPSEED=y 2.2869 +CONFIG_HID_THRUSTMASTER=y 2.2870 +# CONFIG_THRUSTMASTER_FF is not set 2.2871 +CONFIG_HID_ZEROPLUS=y 2.2872 +# CONFIG_ZEROPLUS_FF is not set 2.2873 +# CONFIG_HID_ZYDACRON is not set 2.2874 +CONFIG_USB_SUPPORT=y 2.2875 +CONFIG_USB_ARCH_HAS_HCD=y 2.2876 +CONFIG_USB_ARCH_HAS_OHCI=y 2.2877 +CONFIG_USB_ARCH_HAS_EHCI=y 2.2878 +CONFIG_USB=y 2.2879 +# CONFIG_USB_DEBUG is not set 2.2880 +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set 2.2881 + 2.2882 +# 2.2883 +# Miscellaneous USB options 2.2884 +# 2.2885 +CONFIG_USB_DEVICEFS=y 2.2886 +CONFIG_USB_DEVICE_CLASS=y 2.2887 +# CONFIG_USB_DYNAMIC_MINORS is not set 2.2888 +CONFIG_USB_MON=m 2.2889 +CONFIG_USB_WUSB=m 2.2890 +CONFIG_USB_WUSB_CBAF=m 2.2891 +# CONFIG_USB_WUSB_CBAF_DEBUG is not set 2.2892 + 2.2893 +# 2.2894 +# USB Host Controller Drivers 2.2895 +# 2.2896 +# CONFIG_USB_C67X00_HCD is not set 2.2897 +CONFIG_USB_XHCI_HCD=m 2.2898 +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set 2.2899 +CONFIG_USB_EHCI_HCD=y 2.2900 +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 2.2901 +# CONFIG_USB_EHCI_TT_NEWSCHED is not set 2.2902 +# CONFIG_USB_OXU210HP_HCD is not set 2.2903 +# CONFIG_USB_ISP116X_HCD is not set 2.2904 +# CONFIG_USB_ISP1760_HCD is not set 2.2905 +# CONFIG_USB_ISP1362_HCD is not set 2.2906 +CONFIG_USB_OHCI_HCD=y 2.2907 +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 2.2908 +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 2.2909 +CONFIG_USB_OHCI_LITTLE_ENDIAN=y 2.2910 +CONFIG_USB_UHCI_HCD=y 2.2911 +# CONFIG_USB_SL811_HCD is not set 2.2912 +# CONFIG_USB_R8A66597_HCD is not set 2.2913 +CONFIG_USB_WHCI_HCD=m 2.2914 +# CONFIG_USB_HWA_HCD is not set 2.2915 + 2.2916 +# 2.2917 +# USB Device Class drivers 2.2918 +# 2.2919 +CONFIG_USB_ACM=m 2.2920 +CONFIG_USB_PRINTER=m 2.2921 +# CONFIG_USB_WDM is not set 2.2922 +# CONFIG_USB_TMC is not set 2.2923 + 2.2924 +# 2.2925 +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may 2.2926 +# 2.2927 + 2.2928 +# 2.2929 +# also be needed; see USB_STORAGE Help for more info 2.2930 +# 2.2931 +CONFIG_USB_STORAGE=y 2.2932 +# CONFIG_USB_STORAGE_DEBUG is not set 2.2933 +# CONFIG_USB_STORAGE_DATAFAB is not set 2.2934 +# CONFIG_USB_STORAGE_FREECOM is not set 2.2935 +# CONFIG_USB_STORAGE_ISD200 is not set 2.2936 +# CONFIG_USB_STORAGE_USBAT is not set 2.2937 +# CONFIG_USB_STORAGE_SDDR09 is not set 2.2938 +# CONFIG_USB_STORAGE_SDDR55 is not set 2.2939 +# CONFIG_USB_STORAGE_JUMPSHOT is not set 2.2940 +# CONFIG_USB_STORAGE_ALAUDA is not set 2.2941 +# CONFIG_USB_STORAGE_ONETOUCH is not set 2.2942 +# CONFIG_USB_STORAGE_KARMA is not set 2.2943 +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set 2.2944 +# CONFIG_USB_UAS is not set 2.2945 +# CONFIG_USB_LIBUSUAL is not set 2.2946 + 2.2947 +# 2.2948 +# USB Imaging devices 2.2949 +# 2.2950 +# CONFIG_USB_MDC800 is not set 2.2951 +# CONFIG_USB_MICROTEK is not set 2.2952 + 2.2953 +# 2.2954 +# USB port drivers 2.2955 +# 2.2956 +# CONFIG_USB_USS720 is not set 2.2957 +CONFIG_USB_SERIAL=m 2.2958 +# CONFIG_USB_EZUSB is not set 2.2959 +CONFIG_USB_SERIAL_GENERIC=y 2.2960 +# CONFIG_USB_SERIAL_AIRCABLE is not set 2.2961 +# CONFIG_USB_SERIAL_ARK3116 is not set 2.2962 +# CONFIG_USB_SERIAL_BELKIN is not set 2.2963 +CONFIG_USB_SERIAL_CH341=m 2.2964 +# CONFIG_USB_SERIAL_WHITEHEAT is not set 2.2965 +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set 2.2966 +# CONFIG_USB_SERIAL_CP210X is not set 2.2967 +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set 2.2968 +# CONFIG_USB_SERIAL_EMPEG is not set 2.2969 +# CONFIG_USB_SERIAL_FTDI_SIO is not set 2.2970 +# CONFIG_USB_SERIAL_FUNSOFT is not set 2.2971 +# CONFIG_USB_SERIAL_VISOR is not set 2.2972 +# CONFIG_USB_SERIAL_IPAQ is not set 2.2973 +# CONFIG_USB_SERIAL_IR is not set 2.2974 +# CONFIG_USB_SERIAL_EDGEPORT is not set 2.2975 +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set 2.2976 +# CONFIG_USB_SERIAL_GARMIN is not set 2.2977 +# CONFIG_USB_SERIAL_IPW is not set 2.2978 +# CONFIG_USB_SERIAL_IUU is not set 2.2979 +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set 2.2980 +# CONFIG_USB_SERIAL_KEYSPAN is not set 2.2981 +# CONFIG_USB_SERIAL_KLSI is not set 2.2982 +# CONFIG_USB_SERIAL_KOBIL_SCT is not set 2.2983 +# CONFIG_USB_SERIAL_MCT_U232 is not set 2.2984 +# CONFIG_USB_SERIAL_MOS7720 is not set 2.2985 +# CONFIG_USB_SERIAL_MOS7840 is not set 2.2986 +# CONFIG_USB_SERIAL_MOTOROLA is not set 2.2987 +# CONFIG_USB_SERIAL_NAVMAN is not set 2.2988 +CONFIG_USB_SERIAL_PL2303=m 2.2989 +# CONFIG_USB_SERIAL_OTI6858 is not set 2.2990 +# CONFIG_USB_SERIAL_QCAUX is not set 2.2991 +# CONFIG_USB_SERIAL_QUALCOMM is not set 2.2992 +# CONFIG_USB_SERIAL_SPCP8X5 is not set 2.2993 +# CONFIG_USB_SERIAL_HP4X is not set 2.2994 +# CONFIG_USB_SERIAL_SAFE is not set 2.2995 +# CONFIG_USB_SERIAL_SAMBA is not set 2.2996 +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set 2.2997 +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set 2.2998 +# CONFIG_USB_SERIAL_SYMBOL is not set 2.2999 +# CONFIG_USB_SERIAL_TI is not set 2.3000 +# CONFIG_USB_SERIAL_CYBERJACK is not set 2.3001 +# CONFIG_USB_SERIAL_XIRCOM is not set 2.3002 +CONFIG_USB_SERIAL_WWAN=m 2.3003 +CONFIG_USB_SERIAL_OPTION=m 2.3004 +# CONFIG_USB_SERIAL_OMNINET is not set 2.3005 +# CONFIG_USB_SERIAL_OPTICON is not set 2.3006 +# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set 2.3007 +# CONFIG_USB_SERIAL_ZIO is not set 2.3008 +# CONFIG_USB_SERIAL_SSU100 is not set 2.3009 +# CONFIG_USB_SERIAL_DEBUG is not set 2.3010 + 2.3011 +# 2.3012 +# USB Miscellaneous drivers 2.3013 +# 2.3014 +# CONFIG_USB_EMI62 is not set 2.3015 +# CONFIG_USB_EMI26 is not set 2.3016 +# CONFIG_USB_ADUTUX is not set 2.3017 +# CONFIG_USB_SEVSEG is not set 2.3018 +# CONFIG_USB_RIO500 is not set 2.3019 +CONFIG_USB_LEGOTOWER=m 2.3020 +# CONFIG_USB_LCD is not set 2.3021 +# CONFIG_USB_LED is not set 2.3022 +# CONFIG_USB_CYPRESS_CY7C63 is not set 2.3023 +# CONFIG_USB_CYTHERM is not set 2.3024 +# CONFIG_USB_IDMOUSE is not set 2.3025 +# CONFIG_USB_FTDI_ELAN is not set 2.3026 +# CONFIG_USB_APPLEDISPLAY is not set 2.3027 +# CONFIG_USB_SISUSBVGA is not set 2.3028 +# CONFIG_USB_LD is not set 2.3029 +# CONFIG_USB_TRANCEVIBRATOR is not set 2.3030 +# CONFIG_USB_IOWARRIOR is not set 2.3031 +# CONFIG_USB_TEST is not set 2.3032 +# CONFIG_USB_ISIGHTFW is not set 2.3033 +# CONFIG_USB_YUREX is not set 2.3034 +CONFIG_USB_ATM=m 2.3035 +CONFIG_USB_SPEEDTOUCH=m 2.3036 +CONFIG_USB_CXACRU=m 2.3037 +CONFIG_USB_UEAGLEATM=m 2.3038 +CONFIG_USB_XUSBATM=m 2.3039 +# CONFIG_USB_GADGET is not set 2.3040 + 2.3041 +# 2.3042 +# OTG and related infrastructure 2.3043 +# 2.3044 +# CONFIG_USB_GPIO_VBUS is not set 2.3045 +# CONFIG_NOP_USB_XCEIV is not set 2.3046 +CONFIG_UWB=m 2.3047 +CONFIG_UWB_HWA=m 2.3048 +CONFIG_UWB_WHCI=m 2.3049 +CONFIG_UWB_I1480U=m 2.3050 +CONFIG_MMC=m 2.3051 +# CONFIG_MMC_DEBUG is not set 2.3052 +# CONFIG_MMC_UNSAFE_RESUME is not set 2.3053 + 2.3054 +# 2.3055 +# MMC/SD/SDIO Card Drivers 2.3056 +# 2.3057 +CONFIG_MMC_BLOCK=m 2.3058 +CONFIG_MMC_BLOCK_MINORS=8 2.3059 +CONFIG_MMC_BLOCK_BOUNCE=y 2.3060 +CONFIG_SDIO_UART=m 2.3061 +# CONFIG_MMC_TEST is not set 2.3062 + 2.3063 +# 2.3064 +# MMC/SD/SDIO Host Controller Drivers 2.3065 +# 2.3066 +CONFIG_MMC_SDHCI=m 2.3067 +CONFIG_MMC_SDHCI_PCI=m 2.3068 +# CONFIG_MMC_RICOH_MMC is not set 2.3069 +# CONFIG_MMC_SDHCI_PLTFM is not set 2.3070 +# CONFIG_MMC_WBSD is not set 2.3071 +# CONFIG_MMC_TIFM_SD is not set 2.3072 +# CONFIG_MMC_SDRICOH_CS is not set 2.3073 +# CONFIG_MMC_CB710 is not set 2.3074 +# CONFIG_MMC_VIA_SDMMC is not set 2.3075 +# CONFIG_MMC_USHC is not set 2.3076 +CONFIG_MEMSTICK=m 2.3077 +# CONFIG_MEMSTICK_DEBUG is not set 2.3078 + 2.3079 +# 2.3080 +# MemoryStick drivers 2.3081 +# 2.3082 +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set 2.3083 +CONFIG_MSPRO_BLOCK=m 2.3084 + 2.3085 +# 2.3086 +# MemoryStick Host Controller Drivers 2.3087 +# 2.3088 +CONFIG_MEMSTICK_TIFM_MS=m 2.3089 +CONFIG_MEMSTICK_JMICRON_38X=m 2.3090 +CONFIG_NEW_LEDS=y 2.3091 +CONFIG_LEDS_CLASS=y 2.3092 + 2.3093 +# 2.3094 +# LED drivers 2.3095 +# 2.3096 +# CONFIG_LEDS_ALIX2 is not set 2.3097 +# CONFIG_LEDS_PCA9532 is not set 2.3098 +CONFIG_LEDS_GPIO=m 2.3099 +CONFIG_LEDS_GPIO_PLATFORM=y 2.3100 +# CONFIG_LEDS_LP3944 is not set 2.3101 +# CONFIG_LEDS_LP5521 is not set 2.3102 +# CONFIG_LEDS_LP5523 is not set 2.3103 +# CONFIG_LEDS_CLEVO_MAIL is not set 2.3104 +# CONFIG_LEDS_PCA955X is not set 2.3105 +# CONFIG_LEDS_BD2802 is not set 2.3106 +# CONFIG_LEDS_INTEL_SS4200 is not set 2.3107 +# CONFIG_LEDS_LT3593 is not set 2.3108 +# CONFIG_LEDS_DELL_NETBOOKS is not set 2.3109 +CONFIG_LEDS_TRIGGERS=y 2.3110 + 2.3111 +# 2.3112 +# LED Triggers 2.3113 +# 2.3114 +CONFIG_LEDS_TRIGGER_TIMER=m 2.3115 +CONFIG_LEDS_TRIGGER_IDE_DISK=y 2.3116 +CONFIG_LEDS_TRIGGER_HEARTBEAT=m 2.3117 +CONFIG_LEDS_TRIGGER_BACKLIGHT=m 2.3118 +# CONFIG_LEDS_TRIGGER_GPIO is not set 2.3119 +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m 2.3120 + 2.3121 +# 2.3122 +# iptables trigger is under Netfilter config (LED target) 2.3123 +# 2.3124 +# CONFIG_ACCESSIBILITY is not set 2.3125 +# CONFIG_INFINIBAND is not set 2.3126 +# CONFIG_EDAC is not set 2.3127 +# CONFIG_RTC_CLASS is not set 2.3128 +# CONFIG_DMADEVICES is not set 2.3129 +# CONFIG_AUXDISPLAY is not set 2.3130 +# CONFIG_UIO is not set 2.3131 +CONFIG_STAGING=y 2.3132 +# CONFIG_STAGING_EXCLUDE_BUILD is not set 2.3133 +# CONFIG_ET131X is not set 2.3134 +# CONFIG_SLICOSS is not set 2.3135 +CONFIG_USB_IP_COMMON=m 2.3136 +CONFIG_USB_IP_VHCI_HCD=m 2.3137 +CONFIG_USB_IP_HOST=m 2.3138 +# CONFIG_USB_IP_DEBUG_ENABLE is not set 2.3139 +# CONFIG_W35UND is not set 2.3140 +CONFIG_PRISM2_USB=m 2.3141 +CONFIG_ECHO=m 2.3142 +# CONFIG_BRCM80211 is not set 2.3143 +CONFIG_RT2860=m 2.3144 +CONFIG_RT2870=m 2.3145 +# CONFIG_COMEDI is not set 2.3146 +# CONFIG_ASUS_OLED is not set 2.3147 +# CONFIG_PANEL is not set 2.3148 +CONFIG_R8187SE=m 2.3149 +CONFIG_RTL8192U=m 2.3150 +CONFIG_RTL8192E=m 2.3151 +# CONFIG_R8712U is not set 2.3152 +# CONFIG_TRANZPORT is not set 2.3153 +# CONFIG_POHMELFS is not set 2.3154 +# CONFIG_AUTOFS_FS is not set 2.3155 +# CONFIG_IDE_PHISON is not set 2.3156 +# CONFIG_LINE6_USB is not set 2.3157 +# CONFIG_DRM_VMWGFX is not set 2.3158 +CONFIG_DRM_NOUVEAU=m 2.3159 +CONFIG_DRM_NOUVEAU_BACKLIGHT=y 2.3160 + 2.3161 +# 2.3162 +# I2C encoder or helper chips 2.3163 +# 2.3164 +CONFIG_DRM_I2C_CH7006=m 2.3165 +# CONFIG_DRM_I2C_SIL164 is not set 2.3166 +# CONFIG_USB_SERIAL_QUATECH2 is not set 2.3167 +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set 2.3168 +# CONFIG_VT6655 is not set 2.3169 +# CONFIG_VT6656 is not set 2.3170 +# CONFIG_FB_UDL is not set 2.3171 +# CONFIG_HYPERV is not set 2.3172 +# CONFIG_VME_BUS is not set 2.3173 +# CONFIG_IIO is not set 2.3174 +# CONFIG_ZRAM is not set 2.3175 +# CONFIG_WLAGS49_H2 is not set 2.3176 +# CONFIG_WLAGS49_H25 is not set 2.3177 +# CONFIG_BATMAN_ADV is not set 2.3178 +# CONFIG_SAMSUNG_LAPTOP is not set 2.3179 +CONFIG_FB_SM7XX=m 2.3180 +CONFIG_CRYSTALHD=m 2.3181 + 2.3182 +# 2.3183 +# Texas Instruments shared transport line discipline 2.3184 +# 2.3185 +# CONFIG_ST_BT is not set 2.3186 +# CONFIG_FB_XGI is not set 2.3187 +# CONFIG_SMB_FS is not set 2.3188 +# CONFIG_ACPI_QUICKSTART is not set 2.3189 +CONFIG_MACH_NO_WESTBRIDGE=y 2.3190 +# CONFIG_ATH6K_LEGACY is not set 2.3191 +# CONFIG_USB_ENESTORAGE is not set 2.3192 +# CONFIG_BCM_WIMAX is not set 2.3193 +# CONFIG_FT1000 is not set 2.3194 + 2.3195 +# 2.3196 +# Speakup console speech 2.3197 +# 2.3198 +CONFIG_SPEAKUP=m 2.3199 +CONFIG_SPEAKUP_SYNTH_ACNTSA=m 2.3200 +CONFIG_SPEAKUP_SYNTH_ACNTPC=m 2.3201 +CONFIG_SPEAKUP_SYNTH_APOLLO=m 2.3202 +CONFIG_SPEAKUP_SYNTH_AUDPTR=m 2.3203 +CONFIG_SPEAKUP_SYNTH_BNS=m 2.3204 +CONFIG_SPEAKUP_SYNTH_DECTLK=m 2.3205 +CONFIG_SPEAKUP_SYNTH_DECEXT=m 2.3206 +CONFIG_SPEAKUP_SYNTH_DECPC=m 2.3207 +CONFIG_SPEAKUP_SYNTH_DTLK=m 2.3208 +CONFIG_SPEAKUP_SYNTH_KEYPC=m 2.3209 +CONFIG_SPEAKUP_SYNTH_LTLK=m 2.3210 +CONFIG_SPEAKUP_SYNTH_SOFT=m 2.3211 +CONFIG_SPEAKUP_SYNTH_SPKOUT=m 2.3212 +CONFIG_SPEAKUP_SYNTH_TXPRT=m 2.3213 +CONFIG_SPEAKUP_SYNTH_DUMMY=m 2.3214 +CONFIG_X86_PLATFORM_DEVICES=y 2.3215 +CONFIG_ACER_WMI=m 2.3216 +CONFIG_ASUS_LAPTOP=m 2.3217 +# CONFIG_DELL_WMI is not set 2.3218 +# CONFIG_FUJITSU_LAPTOP is not set 2.3219 +# CONFIG_TC1100_WMI is not set 2.3220 +CONFIG_HP_WMI=m 2.3221 +CONFIG_MSI_LAPTOP=m 2.3222 +CONFIG_PANASONIC_LAPTOP=m 2.3223 +# CONFIG_COMPAL_LAPTOP is not set 2.3224 +CONFIG_SONY_LAPTOP=m 2.3225 +# CONFIG_SONYPI_COMPAT is not set 2.3226 +# CONFIG_IDEAPAD_LAPTOP is not set 2.3227 +CONFIG_THINKPAD_ACPI=m 2.3228 +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y 2.3229 +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set 2.3230 +# CONFIG_THINKPAD_ACPI_DEBUG is not set 2.3231 +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set 2.3232 +CONFIG_THINKPAD_ACPI_VIDEO=y 2.3233 +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y 2.3234 +# CONFIG_SENSORS_HDAPS is not set 2.3235 +# CONFIG_INTEL_MENLOW is not set 2.3236 +CONFIG_EEEPC_WMI=m 2.3237 +CONFIG_ACPI_WMI=m 2.3238 +# CONFIG_MSI_WMI is not set 2.3239 +# CONFIG_ACPI_ASUS is not set 2.3240 +CONFIG_TOPSTAR_LAPTOP=m 2.3241 +# CONFIG_ACPI_TOSHIBA is not set 2.3242 +# CONFIG_TOSHIBA_BT_RFKILL is not set 2.3243 +CONFIG_ACPI_CMPC=m 2.3244 +# CONFIG_INTEL_IPS is not set 2.3245 +# CONFIG_IBM_RTL is not set 2.3246 + 2.3247 +# 2.3248 +# Firmware Drivers 2.3249 +# 2.3250 +# CONFIG_EDD is not set 2.3251 +CONFIG_FIRMWARE_MEMMAP=y 2.3252 +# CONFIG_DELL_RBU is not set 2.3253 +# CONFIG_DCDBAS is not set 2.3254 +CONFIG_DMIID=y 2.3255 +# CONFIG_ISCSI_IBFT_FIND is not set 2.3256 + 2.3257 +# 2.3258 +# File systems 2.3259 +# 2.3260 +# CONFIG_EXT2_FS is not set 2.3261 +# CONFIG_EXT3_FS is not set 2.3262 +CONFIG_EXT4_FS=y 2.3263 +CONFIG_EXT4_USE_FOR_EXT23=y 2.3264 +CONFIG_EXT4_FS_XATTR=y 2.3265 +CONFIG_EXT4_FS_POSIX_ACL=y 2.3266 +# CONFIG_EXT4_FS_SECURITY is not set 2.3267 +# CONFIG_EXT4_DEBUG is not set 2.3268 +CONFIG_JBD2=y 2.3269 +CONFIG_FS_MBCACHE=y 2.3270 +CONFIG_REISERFS_FS=m 2.3271 +# CONFIG_REISERFS_CHECK is not set 2.3272 +# CONFIG_REISERFS_PROC_INFO is not set 2.3273 +# CONFIG_REISERFS_FS_XATTR is not set 2.3274 +CONFIG_JFS_FS=m 2.3275 +CONFIG_JFS_POSIX_ACL=y 2.3276 +# CONFIG_JFS_SECURITY is not set 2.3277 +# CONFIG_JFS_DEBUG is not set 2.3278 +# CONFIG_JFS_STATISTICS is not set 2.3279 +CONFIG_FS_POSIX_ACL=y 2.3280 +CONFIG_XFS_FS=y 2.3281 +CONFIG_XFS_QUOTA=y 2.3282 +CONFIG_XFS_POSIX_ACL=y 2.3283 +# CONFIG_XFS_RT is not set 2.3284 +# CONFIG_XFS_DEBUG is not set 2.3285 +CONFIG_GFS2_FS=m 2.3286 +# CONFIG_GFS2_FS_LOCKING_DLM is not set 2.3287 +# CONFIG_OCFS2_FS is not set 2.3288 +CONFIG_BTRFS_FS=m 2.3289 +CONFIG_BTRFS_FS_POSIX_ACL=y 2.3290 +# CONFIG_NILFS2_FS is not set 2.3291 +CONFIG_EXPORTFS=y 2.3292 +CONFIG_FILE_LOCKING=y 2.3293 +CONFIG_FSNOTIFY=y 2.3294 +CONFIG_DNOTIFY=y 2.3295 +CONFIG_INOTIFY_USER=y 2.3296 +# CONFIG_FANOTIFY is not set 2.3297 +CONFIG_QUOTA=y 2.3298 +# CONFIG_QUOTA_NETLINK_INTERFACE is not set 2.3299 +CONFIG_PRINT_QUOTA_WARNING=y 2.3300 +# CONFIG_QUOTA_DEBUG is not set 2.3301 +# CONFIG_QFMT_V1 is not set 2.3302 +# CONFIG_QFMT_V2 is not set 2.3303 +CONFIG_QUOTACTL=y 2.3304 +CONFIG_AUTOFS4_FS=m 2.3305 +CONFIG_FUSE_FS=y 2.3306 +CONFIG_CUSE=m 2.3307 + 2.3308 +# 2.3309 +# Caches 2.3310 +# 2.3311 +# CONFIG_FSCACHE is not set 2.3312 + 2.3313 +# 2.3314 +# CD-ROM/DVD Filesystems 2.3315 +# 2.3316 +CONFIG_ISO9660_FS=y 2.3317 +CONFIG_JOLIET=y 2.3318 +CONFIG_ZISOFS=y 2.3319 +CONFIG_UDF_FS=m 2.3320 +CONFIG_UDF_NLS=y 2.3321 + 2.3322 +# 2.3323 +# DOS/FAT/NT Filesystems 2.3324 +# 2.3325 +CONFIG_FAT_FS=y 2.3326 +CONFIG_MSDOS_FS=m 2.3327 +CONFIG_VFAT_FS=y 2.3328 +CONFIG_FAT_DEFAULT_CODEPAGE=437 2.3329 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 2.3330 +# CONFIG_NTFS_FS is not set 2.3331 + 2.3332 +# 2.3333 +# Pseudo filesystems 2.3334 +# 2.3335 +CONFIG_PROC_FS=y 2.3336 +CONFIG_PROC_KCORE=y 2.3337 +CONFIG_PROC_SYSCTL=y 2.3338 +CONFIG_PROC_PAGE_MONITOR=y 2.3339 +CONFIG_SYSFS=y 2.3340 +CONFIG_TMPFS=y 2.3341 +# CONFIG_TMPFS_POSIX_ACL is not set 2.3342 +# CONFIG_HUGETLBFS is not set 2.3343 +# CONFIG_HUGETLB_PAGE is not set 2.3344 +CONFIG_CONFIGFS_FS=m 2.3345 +CONFIG_MISC_FILESYSTEMS=y 2.3346 +# CONFIG_ADFS_FS is not set 2.3347 +# CONFIG_AFFS_FS is not set 2.3348 +CONFIG_HFS_FS=m 2.3349 +CONFIG_HFSPLUS_FS=m 2.3350 +# CONFIG_BEFS_FS is not set 2.3351 +# CONFIG_BFS_FS is not set 2.3352 +# CONFIG_EFS_FS is not set 2.3353 +CONFIG_LOGFS=m 2.3354 +CONFIG_CRAMFS=m 2.3355 +CONFIG_SQUASHFS=m 2.3356 +CONFIG_SQUASHFS_XATTR=y 2.3357 +CONFIG_SQUASHFS_LZO=y 2.3358 +CONFIG_SQUASHFS_XZ=y 2.3359 +# CONFIG_SQUASHFS_EMBEDDED is not set 2.3360 +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 2.3361 +# CONFIG_VXFS_FS is not set 2.3362 +CONFIG_MINIX_FS=m 2.3363 +# CONFIG_OMFS_FS is not set 2.3364 +# CONFIG_HPFS_FS is not set 2.3365 +# CONFIG_QNX4FS_FS is not set 2.3366 +# CONFIG_ROMFS_FS is not set 2.3367 +# CONFIG_SYSV_FS is not set 2.3368 +# CONFIG_UFS_FS is not set 2.3369 +CONFIG_NETWORK_FILESYSTEMS=y 2.3370 +CONFIG_NFS_FS=y 2.3371 +CONFIG_NFS_V3=y 2.3372 +CONFIG_NFS_V3_ACL=y 2.3373 +# CONFIG_NFS_V4 is not set 2.3374 +CONFIG_NFSD=m 2.3375 +CONFIG_NFSD_DEPRECATED=y 2.3376 +CONFIG_NFSD_V2_ACL=y 2.3377 +CONFIG_NFSD_V3=y 2.3378 +CONFIG_NFSD_V3_ACL=y 2.3379 +# CONFIG_NFSD_V4 is not set 2.3380 +CONFIG_LOCKD=y 2.3381 +CONFIG_LOCKD_V4=y 2.3382 +CONFIG_NFS_ACL_SUPPORT=y 2.3383 +CONFIG_NFS_COMMON=y 2.3384 +CONFIG_SUNRPC=y 2.3385 +CONFIG_SUNRPC_GSS=m 2.3386 +CONFIG_RPCSEC_GSS_KRB5=m 2.3387 +# CONFIG_CEPH_FS is not set 2.3388 +CONFIG_CIFS=m 2.3389 +# CONFIG_CIFS_STATS is not set 2.3390 +CONFIG_CIFS_WEAK_PW_HASH=y 2.3391 +# CONFIG_CIFS_XATTR is not set 2.3392 +# CONFIG_CIFS_DEBUG2 is not set 2.3393 +# CONFIG_CIFS_EXPERIMENTAL is not set 2.3394 +CONFIG_NCP_FS=m 2.3395 +# CONFIG_NCPFS_PACKET_SIGNING is not set 2.3396 +# CONFIG_NCPFS_IOCTL_LOCKING is not set 2.3397 +# CONFIG_NCPFS_STRONG is not set 2.3398 +# CONFIG_NCPFS_NFS_NS is not set 2.3399 +# CONFIG_NCPFS_OS2_NS is not set 2.3400 +# CONFIG_NCPFS_SMALLDOS is not set 2.3401 +# CONFIG_NCPFS_NLS is not set 2.3402 +# CONFIG_NCPFS_EXTRAS is not set 2.3403 +CONFIG_CODA_FS=m 2.3404 +# CONFIG_AFS_FS is not set 2.3405 + 2.3406 +# 2.3407 +# Partition Types 2.3408 +# 2.3409 +CONFIG_PARTITION_ADVANCED=y 2.3410 +# CONFIG_ACORN_PARTITION is not set 2.3411 +# CONFIG_OSF_PARTITION is not set 2.3412 +# CONFIG_AMIGA_PARTITION is not set 2.3413 +# CONFIG_ATARI_PARTITION is not set 2.3414 +# CONFIG_MAC_PARTITION is not set 2.3415 +CONFIG_MSDOS_PARTITION=y 2.3416 +CONFIG_BSD_DISKLABEL=y 2.3417 +# CONFIG_MINIX_SUBPARTITION is not set 2.3418 +# CONFIG_SOLARIS_X86_PARTITION is not set 2.3419 +# CONFIG_UNIXWARE_DISKLABEL is not set 2.3420 +# CONFIG_LDM_PARTITION is not set 2.3421 +# CONFIG_SGI_PARTITION is not set 2.3422 +# CONFIG_ULTRIX_PARTITION is not set 2.3423 +# CONFIG_SUN_PARTITION is not set 2.3424 +# CONFIG_KARMA_PARTITION is not set 2.3425 +CONFIG_EFI_PARTITION=y 2.3426 +# CONFIG_SYSV68_PARTITION is not set 2.3427 +CONFIG_NLS=y 2.3428 +CONFIG_NLS_DEFAULT="iso8859-1" 2.3429 +CONFIG_NLS_CODEPAGE_437=y 2.3430 +# CONFIG_NLS_CODEPAGE_737 is not set 2.3431 +# CONFIG_NLS_CODEPAGE_775 is not set 2.3432 +CONFIG_NLS_CODEPAGE_850=y 2.3433 +CONFIG_NLS_CODEPAGE_852=y 2.3434 +# CONFIG_NLS_CODEPAGE_855 is not set 2.3435 +# CONFIG_NLS_CODEPAGE_857 is not set 2.3436 +# CONFIG_NLS_CODEPAGE_860 is not set 2.3437 +# CONFIG_NLS_CODEPAGE_861 is not set 2.3438 +# CONFIG_NLS_CODEPAGE_862 is not set 2.3439 +CONFIG_NLS_CODEPAGE_863=y 2.3440 +# CONFIG_NLS_CODEPAGE_864 is not set 2.3441 +CONFIG_NLS_CODEPAGE_865=y 2.3442 +# CONFIG_NLS_CODEPAGE_866 is not set 2.3443 +# CONFIG_NLS_CODEPAGE_869 is not set 2.3444 +# CONFIG_NLS_CODEPAGE_936 is not set 2.3445 +# CONFIG_NLS_CODEPAGE_950 is not set 2.3446 +# CONFIG_NLS_CODEPAGE_932 is not set 2.3447 +# CONFIG_NLS_CODEPAGE_949 is not set 2.3448 +# CONFIG_NLS_CODEPAGE_874 is not set 2.3449 +# CONFIG_NLS_ISO8859_8 is not set 2.3450 +# CONFIG_NLS_CODEPAGE_1250 is not set 2.3451 +# CONFIG_NLS_CODEPAGE_1251 is not set 2.3452 +CONFIG_NLS_ASCII=y 2.3453 +CONFIG_NLS_ISO8859_1=y 2.3454 +CONFIG_NLS_ISO8859_2=y 2.3455 +# CONFIG_NLS_ISO8859_3 is not set 2.3456 +# CONFIG_NLS_ISO8859_4 is not set 2.3457 +# CONFIG_NLS_ISO8859_5 is not set 2.3458 +# CONFIG_NLS_ISO8859_6 is not set 2.3459 +# CONFIG_NLS_ISO8859_7 is not set 2.3460 +# CONFIG_NLS_ISO8859_9 is not set 2.3461 +# CONFIG_NLS_ISO8859_13 is not set 2.3462 +# CONFIG_NLS_ISO8859_14 is not set 2.3463 +CONFIG_NLS_ISO8859_15=y 2.3464 +# CONFIG_NLS_KOI8_R is not set 2.3465 +# CONFIG_NLS_KOI8_U is not set 2.3466 +CONFIG_NLS_UTF8=y 2.3467 +CONFIG_DLM=m 2.3468 +# CONFIG_DLM_DEBUG is not set 2.3469 + 2.3470 +# 2.3471 +# Kernel hacking 2.3472 +# 2.3473 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y 2.3474 +# CONFIG_PRINTK_TIME is not set 2.3475 +CONFIG_ENABLE_WARN_DEPRECATED=y 2.3476 +CONFIG_ENABLE_MUST_CHECK=y 2.3477 +CONFIG_FRAME_WARN=1024 2.3478 +# CONFIG_MAGIC_SYSRQ is not set 2.3479 +CONFIG_STRIP_ASM_SYMS=y 2.3480 +CONFIG_UNUSED_SYMBOLS=y 2.3481 +# CONFIG_DEBUG_FS is not set 2.3482 +# CONFIG_HEADERS_CHECK is not set 2.3483 +# CONFIG_DEBUG_KERNEL is not set 2.3484 +# CONFIG_HARDLOCKUP_DETECTOR is not set 2.3485 +CONFIG_BKL=y 2.3486 +# CONFIG_SPARSE_RCU_POINTER is not set 2.3487 +CONFIG_DEBUG_BUGVERBOSE=y 2.3488 +CONFIG_DEBUG_MEMORY_INIT=y 2.3489 +CONFIG_ARCH_WANT_FRAME_POINTERS=y 2.3490 +CONFIG_FRAME_POINTER=y 2.3491 +# CONFIG_RCU_CPU_STALL_DETECTOR is not set 2.3492 +# CONFIG_SYSCTL_SYSCALL_CHECK is not set 2.3493 +CONFIG_USER_STACKTRACE_SUPPORT=y 2.3494 +CONFIG_HAVE_FUNCTION_TRACER=y 2.3495 +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 2.3496 +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y 2.3497 +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 2.3498 +CONFIG_HAVE_DYNAMIC_FTRACE=y 2.3499 +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 2.3500 +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 2.3501 +CONFIG_HAVE_C_RECORDMCOUNT=y 2.3502 +CONFIG_TRACING_SUPPORT=y 2.3503 +# CONFIG_FTRACE is not set 2.3504 +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set 2.3505 +# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set 2.3506 +# CONFIG_DMA_API_DEBUG is not set 2.3507 +# CONFIG_ATOMIC64_SELFTEST is not set 2.3508 +# CONFIG_ASYNC_RAID6_TEST is not set 2.3509 +# CONFIG_SAMPLES is not set 2.3510 +CONFIG_HAVE_ARCH_KGDB=y 2.3511 +CONFIG_HAVE_ARCH_KMEMCHECK=y 2.3512 +# CONFIG_STRICT_DEVMEM is not set 2.3513 +CONFIG_X86_VERBOSE_BOOTUP=y 2.3514 +CONFIG_EARLY_PRINTK=y 2.3515 +# CONFIG_EARLY_PRINTK_DBGP is not set 2.3516 +CONFIG_DOUBLEFAULT=y 2.3517 +# CONFIG_IOMMU_STRESS is not set 2.3518 +CONFIG_HAVE_MMIOTRACE_SUPPORT=y 2.3519 +CONFIG_IO_DELAY_TYPE_0X80=0 2.3520 +CONFIG_IO_DELAY_TYPE_0XED=1 2.3521 +CONFIG_IO_DELAY_TYPE_UDELAY=2 2.3522 +CONFIG_IO_DELAY_TYPE_NONE=3 2.3523 +CONFIG_IO_DELAY_0X80=y 2.3524 +# CONFIG_IO_DELAY_0XED is not set 2.3525 +# CONFIG_IO_DELAY_UDELAY is not set 2.3526 +# CONFIG_IO_DELAY_NONE is not set 2.3527 +CONFIG_DEFAULT_IO_DELAY_TYPE=0 2.3528 +# CONFIG_OPTIMIZE_INLINING is not set 2.3529 + 2.3530 +# 2.3531 +# Security options 2.3532 +# 2.3533 +# CONFIG_KEYS is not set 2.3534 +# CONFIG_SECURITY_DMESG_RESTRICT is not set 2.3535 +# CONFIG_SECURITY is not set 2.3536 +# CONFIG_SECURITYFS is not set 2.3537 +CONFIG_DEFAULT_SECURITY_DAC=y 2.3538 +CONFIG_DEFAULT_SECURITY="" 2.3539 +CONFIG_XOR_BLOCKS=m 2.3540 +CONFIG_ASYNC_CORE=m 2.3541 +CONFIG_ASYNC_MEMCPY=m 2.3542 +CONFIG_ASYNC_XOR=m 2.3543 +CONFIG_ASYNC_PQ=m 2.3544 +CONFIG_ASYNC_RAID6_RECOV=m 2.3545 +CONFIG_CRYPTO=y 2.3546 + 2.3547 +# 2.3548 +# Crypto core or helper 2.3549 +# 2.3550 +CONFIG_CRYPTO_ALGAPI=y 2.3551 +CONFIG_CRYPTO_ALGAPI2=y 2.3552 +CONFIG_CRYPTO_AEAD=y 2.3553 +CONFIG_CRYPTO_AEAD2=y 2.3554 +CONFIG_CRYPTO_BLKCIPHER=y 2.3555 +CONFIG_CRYPTO_BLKCIPHER2=y 2.3556 +CONFIG_CRYPTO_HASH=y 2.3557 +CONFIG_CRYPTO_HASH2=y 2.3558 +CONFIG_CRYPTO_RNG2=y 2.3559 +CONFIG_CRYPTO_PCOMP2=y 2.3560 +CONFIG_CRYPTO_MANAGER=y 2.3561 +CONFIG_CRYPTO_MANAGER2=y 2.3562 +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y 2.3563 +# CONFIG_CRYPTO_GF128MUL is not set 2.3564 +# CONFIG_CRYPTO_NULL is not set 2.3565 +# CONFIG_CRYPTO_PCRYPT is not set 2.3566 +CONFIG_CRYPTO_WORKQUEUE=y 2.3567 +# CONFIG_CRYPTO_CRYPTD is not set 2.3568 +CONFIG_CRYPTO_AUTHENC=y 2.3569 +# CONFIG_CRYPTO_TEST is not set 2.3570 + 2.3571 +# 2.3572 +# Authenticated Encryption with Associated Data 2.3573 +# 2.3574 +# CONFIG_CRYPTO_CCM is not set 2.3575 +# CONFIG_CRYPTO_GCM is not set 2.3576 +# CONFIG_CRYPTO_SEQIV is not set 2.3577 + 2.3578 +# 2.3579 +# Block modes 2.3580 +# 2.3581 +CONFIG_CRYPTO_CBC=y 2.3582 +# CONFIG_CRYPTO_CTR is not set 2.3583 +# CONFIG_CRYPTO_CTS is not set 2.3584 +CONFIG_CRYPTO_ECB=y 2.3585 +# CONFIG_CRYPTO_LRW is not set 2.3586 +CONFIG_CRYPTO_PCBC=m 2.3587 +CONFIG_CRYPTO_XTS=m 2.3588 + 2.3589 +# 2.3590 +# Hash modes 2.3591 +# 2.3592 +CONFIG_CRYPTO_HMAC=y 2.3593 +# CONFIG_CRYPTO_XCBC is not set 2.3594 +# CONFIG_CRYPTO_VMAC is not set 2.3595 + 2.3596 +# 2.3597 +# Digest 2.3598 +# 2.3599 +CONFIG_CRYPTO_CRC32C=m 2.3600 +# CONFIG_CRYPTO_CRC32C_INTEL is not set 2.3601 +# CONFIG_CRYPTO_GHASH is not set 2.3602 +# CONFIG_CRYPTO_MD4 is not set 2.3603 +CONFIG_CRYPTO_MD5=y 2.3604 +CONFIG_CRYPTO_MICHAEL_MIC=m 2.3605 +# CONFIG_CRYPTO_RMD128 is not set 2.3606 +# CONFIG_CRYPTO_RMD160 is not set 2.3607 +# CONFIG_CRYPTO_RMD256 is not set 2.3608 +# CONFIG_CRYPTO_RMD320 is not set 2.3609 +CONFIG_CRYPTO_SHA1=y 2.3610 +CONFIG_CRYPTO_SHA256=m 2.3611 +CONFIG_CRYPTO_SHA512=m 2.3612 +# CONFIG_CRYPTO_TGR192 is not set 2.3613 +# CONFIG_CRYPTO_WP512 is not set 2.3614 + 2.3615 +# 2.3616 +# Ciphers 2.3617 +# 2.3618 +CONFIG_CRYPTO_AES=m 2.3619 +CONFIG_CRYPTO_AES_586=m 2.3620 +# CONFIG_CRYPTO_ANUBIS is not set 2.3621 +CONFIG_CRYPTO_ARC4=y 2.3622 +CONFIG_CRYPTO_BLOWFISH=m 2.3623 +# CONFIG_CRYPTO_CAMELLIA is not set 2.3624 +# CONFIG_CRYPTO_CAST5 is not set 2.3625 +# CONFIG_CRYPTO_CAST6 is not set 2.3626 +CONFIG_CRYPTO_DES=y 2.3627 +CONFIG_CRYPTO_FCRYPT=m 2.3628 +# CONFIG_CRYPTO_KHAZAD is not set 2.3629 +# CONFIG_CRYPTO_SALSA20 is not set 2.3630 +# CONFIG_CRYPTO_SALSA20_586 is not set 2.3631 +# CONFIG_CRYPTO_SEED is not set 2.3632 +CONFIG_CRYPTO_SERPENT=m 2.3633 +# CONFIG_CRYPTO_TEA is not set 2.3634 +CONFIG_CRYPTO_TWOFISH=m 2.3635 +CONFIG_CRYPTO_TWOFISH_COMMON=m 2.3636 +CONFIG_CRYPTO_TWOFISH_586=m 2.3637 + 2.3638 +# 2.3639 +# Compression 2.3640 +# 2.3641 +CONFIG_CRYPTO_DEFLATE=y 2.3642 +# CONFIG_CRYPTO_ZLIB is not set 2.3643 +# CONFIG_CRYPTO_LZO is not set 2.3644 + 2.3645 +# 2.3646 +# Random Number Generation 2.3647 +# 2.3648 +# CONFIG_CRYPTO_ANSI_CPRNG is not set 2.3649 +CONFIG_CRYPTO_HW=y 2.3650 +CONFIG_CRYPTO_DEV_PADLOCK=m 2.3651 +CONFIG_CRYPTO_DEV_PADLOCK_AES=m 2.3652 +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m 2.3653 +CONFIG_CRYPTO_DEV_GEODE=m 2.3654 +CONFIG_CRYPTO_DEV_HIFN_795X=m 2.3655 +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y 2.3656 +CONFIG_HAVE_KVM=y 2.3657 +CONFIG_HAVE_KVM_IRQCHIP=y 2.3658 +CONFIG_HAVE_KVM_EVENTFD=y 2.3659 +CONFIG_KVM_APIC_ARCHITECTURE=y 2.3660 +CONFIG_KVM_MMIO=y 2.3661 +CONFIG_VIRTUALIZATION=y 2.3662 +CONFIG_KVM=m 2.3663 +CONFIG_KVM_INTEL=m 2.3664 +CONFIG_KVM_AMD=m 2.3665 +# CONFIG_VHOST_NET is not set 2.3666 +CONFIG_LGUEST=m 2.3667 +CONFIG_VIRTIO=y 2.3668 +CONFIG_VIRTIO_RING=y 2.3669 +CONFIG_VIRTIO_PCI=m 2.3670 +# CONFIG_VIRTIO_BALLOON is not set 2.3671 +# CONFIG_BINARY_PRINTF is not set 2.3672 + 2.3673 +# 2.3674 +# Library routines 2.3675 +# 2.3676 +CONFIG_RAID6_PQ=m 2.3677 +CONFIG_BITREVERSE=y 2.3678 +CONFIG_GENERIC_FIND_FIRST_BIT=y 2.3679 +CONFIG_GENERIC_FIND_NEXT_BIT=y 2.3680 +CONFIG_GENERIC_FIND_LAST_BIT=y 2.3681 +CONFIG_CRC_CCITT=y 2.3682 +CONFIG_CRC16=y 2.3683 +# CONFIG_CRC_T10DIF is not set 2.3684 +CONFIG_CRC_ITU_T=m 2.3685 +CONFIG_CRC32=y 2.3686 +CONFIG_CRC7=m 2.3687 +CONFIG_LIBCRC32C=m 2.3688 +CONFIG_ZLIB_INFLATE=y 2.3689 +CONFIG_ZLIB_DEFLATE=y 2.3690 +CONFIG_LZO_COMPRESS=y 2.3691 +CONFIG_LZO_DECOMPRESS=y 2.3692 +CONFIG_XZ_DEC=y 2.3693 +CONFIG_XZ_DEC_X86=y 2.3694 +CONFIG_XZ_DEC_POWERPC=y 2.3695 +CONFIG_XZ_DEC_IA64=y 2.3696 +CONFIG_XZ_DEC_ARM=y 2.3697 +CONFIG_XZ_DEC_ARMTHUMB=y 2.3698 +CONFIG_XZ_DEC_SPARC=y 2.3699 +CONFIG_XZ_DEC_BCJ=y 2.3700 +# CONFIG_XZ_DEC_TEST is not set 2.3701 +CONFIG_DECOMPRESS_GZIP=y 2.3702 +CONFIG_DECOMPRESS_BZIP2=y 2.3703 +CONFIG_DECOMPRESS_LZMA=y 2.3704 +CONFIG_DECOMPRESS_XZ=y 2.3705 +CONFIG_DECOMPRESS_LZO=y 2.3706 +CONFIG_TEXTSEARCH=y 2.3707 +CONFIG_TEXTSEARCH_KMP=m 2.3708 +CONFIG_TEXTSEARCH_BM=m 2.3709 +CONFIG_TEXTSEARCH_FSM=m 2.3710 +CONFIG_BTREE=y 2.3711 +CONFIG_HAS_IOMEM=y 2.3712 +CONFIG_HAS_IOPORT=y 2.3713 +CONFIG_HAS_DMA=y 2.3714 +CONFIG_NLATTR=y