kernel: remove 3.12 support since none of the targets is using it
authorluka <luka@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 10 Jul 2014 22:37:28 +0000 (22:37 +0000)
committerluka <luka@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 10 Jul 2014 22:37:28 +0000 (22:37 +0000)
Signed-off-by: Luka Perkov <luka@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@41581 3c298f89-4303-0410-b956-a3cf2f4a3e73

176 files changed:
include/kernel-version.mk
target/linux/generic/config-3.12 [deleted file]
target/linux/generic/patches-3.12/009-mtd_m25p80_add_support_for_esmt_f25l32pa.patch [deleted file]
target/linux/generic/patches-3.12/020-ssb_update.patch [deleted file]
target/linux/generic/patches-3.12/025-bcma_backport.patch [deleted file]
target/linux/generic/patches-3.12/060-hso_devices.patch [deleted file]
target/linux/generic/patches-3.12/061-arm_xz_decompressor_build_fix.patch [deleted file]
target/linux/generic/patches-3.12/062-mips_decompressor_build_fix.patch [deleted file]
target/linux/generic/patches-3.12/100-overlayfs.patch [deleted file]
target/linux/generic/patches-3.12/102-ehci_hcd_ignore_oc.patch [deleted file]
target/linux/generic/patches-3.12/120-bridge_allow_receiption_on_disabled_port.patch [deleted file]
target/linux/generic/patches-3.12/130-mips_remove_plat_dma_functions.patch [deleted file]
target/linux/generic/patches-3.12/131-improve_noncoherent_dma_checks.patch [deleted file]
target/linux/generic/patches-3.12/132-mips_inline_dma_ops.patch [deleted file]
target/linux/generic/patches-3.12/200-fix_localversion.patch [deleted file]
target/linux/generic/patches-3.12/201-extra_optimization.patch [deleted file]
target/linux/generic/patches-3.12/202-reduce_module_size.patch [deleted file]
target/linux/generic/patches-3.12/203-kallsyms_uncompressed.patch [deleted file]
target/linux/generic/patches-3.12/204-module_strip.patch [deleted file]
target/linux/generic/patches-3.12/210-darwin_scripts_include.patch [deleted file]
target/linux/generic/patches-3.12/212-byteshift_portability.patch [deleted file]
target/linux/generic/patches-3.12/220-gc_sections.patch [deleted file]
target/linux/generic/patches-3.12/221-module_exports.patch [deleted file]
target/linux/generic/patches-3.12/230-openwrt_lzma_options.patch [deleted file]
target/linux/generic/patches-3.12/250-netfilter_depends.patch [deleted file]
target/linux/generic/patches-3.12/251-sound_kconfig.patch [deleted file]
target/linux/generic/patches-3.12/252-mv_cesa_depends.patch [deleted file]
target/linux/generic/patches-3.12/253-ssb_b43_default_on.patch [deleted file]
target/linux/generic/patches-3.12/254-textsearch_kconfig_hacks.patch [deleted file]
target/linux/generic/patches-3.12/255-lib80211_kconfig_hacks.patch [deleted file]
target/linux/generic/patches-3.12/256-crypto_add_kconfig_prompts.patch [deleted file]
target/linux/generic/patches-3.12/257-wireless_ext_kconfig_hack.patch [deleted file]
target/linux/generic/patches-3.12/258-netfilter_netlink_kconfig_hack.patch [deleted file]
target/linux/generic/patches-3.12/259-regmap_dynamic.patch [deleted file]
target/linux/generic/patches-3.12/260-crypto_test_dependencies.patch [deleted file]
target/linux/generic/patches-3.12/261-move_bcm963xx_tag.patch [deleted file]
target/linux/generic/patches-3.12/262-compressor_kconfig_hack.patch [deleted file]
target/linux/generic/patches-3.12/300-mips_expose_boot_raw.patch [deleted file]
target/linux/generic/patches-3.12/301-mips_image_cmdline_hack.patch [deleted file]
target/linux/generic/patches-3.12/302-mips_no_branch_likely.patch [deleted file]
target/linux/generic/patches-3.12/304-mips_disable_fpu.patch [deleted file]
target/linux/generic/patches-3.12/305-mips_module_reloc.patch [deleted file]
target/linux/generic/patches-3.12/306-mips_mem_functions_performance.patch [deleted file]
target/linux/generic/patches-3.12/309-mips_fuse_workaround.patch [deleted file]
target/linux/generic/patches-3.12/310-arm_module_unresolved_weak_sym.patch [deleted file]
target/linux/generic/patches-3.12/320-ppc4xx_optimization.patch [deleted file]
target/linux/generic/patches-3.12/321-powerpc_crtsavres_prereq.patch [deleted file]
target/linux/generic/patches-3.12/322-ppc4xx-crypto-compile-fix.patch [deleted file]
target/linux/generic/patches-3.12/400-mtd-add-rootfs-split-support.patch [deleted file]
target/linux/generic/patches-3.12/401-mtd-add-support-for-different-partition-parser-types.patch [deleted file]
target/linux/generic/patches-3.12/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch [deleted file]
target/linux/generic/patches-3.12/403-mtd-hook-mtdsplit-to-Kbuild.patch [deleted file]
target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch [deleted file]
target/linux/generic/patches-3.12/405-mtd-add-more-helper-functions.patch [deleted file]
target/linux/generic/patches-3.12/406-mtd-add-squashfs-parser.patch [deleted file]
target/linux/generic/patches-3.12/407-mtd-hook-mtdsplit_uimage-into-Kbuild.patch [deleted file]
target/linux/generic/patches-3.12/408-mtd-hook-mtdsplit_seama-into-Kbuild.patch [deleted file]
target/linux/generic/patches-3.12/409-mtd-hook-mtdsplit_lzma-into-Kbuild.patch [deleted file]
target/linux/generic/patches-3.12/410-mtd-move-forward-declaration-of-struct-mtd_info.patch [deleted file]
target/linux/generic/patches-3.12/411-mtd-partial_eraseblock_write.patch [deleted file]
target/linux/generic/patches-3.12/412-mtd-partial_eraseblock_unlock.patch [deleted file]
target/linux/generic/patches-3.12/420-mtd-redboot_space.patch [deleted file]
target/linux/generic/patches-3.12/430-mtd-add-myloader-partition-parser.patch [deleted file]
target/linux/generic/patches-3.12/440-block2mtd_init.patch [deleted file]
target/linux/generic/patches-3.12/441-block2mtd_probe.patch [deleted file]
target/linux/generic/patches-3.12/450-mtd-nand-allow-to-use-platform-specific-chip-fixup.patch [deleted file]
target/linux/generic/patches-3.12/451-mtd-nand-fix-return-code-of-nand_correct_data-function.patch [deleted file]
target/linux/generic/patches-3.12/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch [deleted file]
target/linux/generic/patches-3.12/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch [deleted file]
target/linux/generic/patches-3.12/471-mtd-m25p80-allow-to-disable-small-sector-erase.patch [deleted file]
target/linux/generic/patches-3.12/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch [deleted file]
target/linux/generic/patches-3.12/473-mtd-m25p80-add-support-for-EON-EN25QH128-flash.patch [deleted file]
target/linux/generic/patches-3.12/480-mtd-set-rootfs-to-be-root-dev.patch [deleted file]
target/linux/generic/patches-3.12/500-yaffs-Kbuild-integration.patch [deleted file]
target/linux/generic/patches-3.12/501-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch [deleted file]
target/linux/generic/patches-3.12/502-yaffs-3.10-disable-proc-entry.patch [deleted file]
target/linux/generic/patches-3.12/503-yaffs-3.12-convert-readdir-to-iterate.patch [deleted file]
target/linux/generic/patches-3.12/503-yaffs-add-tags-9bytes-mount-option.patch [deleted file]
target/linux/generic/patches-3.12/504-yaffs-fix-compat-tags-handling.patch [deleted file]
target/linux/generic/patches-3.12/520-squashfs_update_xz_comp_opts.patch [deleted file]
target/linux/generic/patches-3.12/530-jffs2_make_lzma_available.patch [deleted file]
target/linux/generic/patches-3.12/531-debloat_lzma.patch [deleted file]
target/linux/generic/patches-3.12/532-jffs2_eofdetect.patch [deleted file]
target/linux/generic/patches-3.12/540-crypto-xz-decompression-support.patch [deleted file]
target/linux/generic/patches-3.12/541-ubifs-xz-decompression-support.patch [deleted file]
target/linux/generic/patches-3.12/550-ubifs-symlink-xattr-support.patch [deleted file]
target/linux/generic/patches-3.12/551-ubifs-fix-default-compression-selection.patch [deleted file]
target/linux/generic/patches-3.12/600-netfilter_layer7_2.22.patch [deleted file]
target/linux/generic/patches-3.12/601-netfilter_layer7_pktmatch.patch [deleted file]
target/linux/generic/patches-3.12/602-netfilter_layer7_match.patch [deleted file]
target/linux/generic/patches-3.12/603-netfilter_layer7_2.6.36_fix.patch [deleted file]
target/linux/generic/patches-3.12/604-netfilter_conntrack_flush.patch [deleted file]
target/linux/generic/patches-3.12/610-netfilter_match_bypass_default_checks.patch [deleted file]
target/linux/generic/patches-3.12/611-netfilter_match_bypass_default_table.patch [deleted file]
target/linux/generic/patches-3.12/612-netfilter_match_reduce_memory_access.patch [deleted file]
target/linux/generic/patches-3.12/613-netfilter_optional_tcp_window_check.patch [deleted file]
target/linux/generic/patches-3.12/620-sched_esfq.patch [deleted file]
target/linux/generic/patches-3.12/621-sched_act_connmark.patch [deleted file]
target/linux/generic/patches-3.12/630-packet_socket_type.patch [deleted file]
target/linux/generic/patches-3.12/640-bridge_no_eap_forward.patch [deleted file]
target/linux/generic/patches-3.12/641-bridge_always_accept_eap.patch [deleted file]
target/linux/generic/patches-3.12/642-bridge_port_isolate.patch [deleted file]
target/linux/generic/patches-3.12/643-bridge_remove_ipv6_dependency.patch [deleted file]
target/linux/generic/patches-3.12/644-bridge_optimize_netfilter_hooks.patch [deleted file]
target/linux/generic/patches-3.12/650-pppoe_header_pad.patch [deleted file]
target/linux/generic/patches-3.12/651-wireless_mesh_header.patch [deleted file]
target/linux/generic/patches-3.12/652-atm_header_changes.patch [deleted file]
target/linux/generic/patches-3.12/653-disable_netlink_trim.patch [deleted file]
target/linux/generic/patches-3.12/655-increase_skb_pad.patch [deleted file]
target/linux/generic/patches-3.12/656-skb_reduce_truesize-helper.patch [deleted file]
target/linux/generic/patches-3.12/657-qdisc_reduce_truesize.patch [deleted file]
target/linux/generic/patches-3.12/660-fq_codel_defaults.patch [deleted file]
target/linux/generic/patches-3.12/661-fq_codel_keep_dropped_stats.patch [deleted file]
target/linux/generic/patches-3.12/662-use_fq_codel_by_default.patch [deleted file]
target/linux/generic/patches-3.12/663-remove_pfifo_fast.patch [deleted file]
target/linux/generic/patches-3.12/664-codel_fix_3_12.patch [deleted file]
target/linux/generic/patches-3.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch [deleted file]
target/linux/generic/patches-3.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch [deleted file]
target/linux/generic/patches-3.12/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch [deleted file]
target/linux/generic/patches-3.12/700-swconfig.patch [deleted file]
target/linux/generic/patches-3.12/701-phy_extension.patch [deleted file]
target/linux/generic/patches-3.12/702-phy_add_aneg_done_function.patch [deleted file]
target/linux/generic/patches-3.12/703-phy-add-detach-callback-to-struct-phy_driver.patch [deleted file]
target/linux/generic/patches-3.12/710-phy-add-mdio_register_board_info.patch [deleted file]
target/linux/generic/patches-3.12/720-phy_adm6996.patch [deleted file]
target/linux/generic/patches-3.12/721-phy_packets.patch [deleted file]
target/linux/generic/patches-3.12/722-phy_mvswitch.patch [deleted file]
target/linux/generic/patches-3.12/723-phy_ip175c.patch [deleted file]
target/linux/generic/patches-3.12/724-phy_ar8216.patch [deleted file]
target/linux/generic/patches-3.12/725-phy_rtl8306.patch [deleted file]
target/linux/generic/patches-3.12/726-phy_rtl8366.patch [deleted file]
target/linux/generic/patches-3.12/727-phy-rtl8367.patch [deleted file]
target/linux/generic/patches-3.12/728-phy-micrel.patch [deleted file]
target/linux/generic/patches-3.12/729-phy-rtl8367b.patch [deleted file]
target/linux/generic/patches-3.12/729-phy-tantos.patch [deleted file]
target/linux/generic/patches-3.12/730-phy_b53.patch [deleted file]
target/linux/generic/patches-3.12/731-phy_mvswitch_3.10_compilation.patch [deleted file]
target/linux/generic/patches-3.12/732-phy-ar8216-led-support.patch [deleted file]
target/linux/generic/patches-3.12/750-hostap_txpower.patch [deleted file]
target/linux/generic/patches-3.12/770-bgmac-backport.patch [deleted file]
target/linux/generic/patches-3.12/773-bgmac-add-srab-switch.patch [deleted file]
target/linux/generic/patches-3.12/775-bgmac-check-length-of-received-frame.patch [deleted file]
target/linux/generic/patches-3.12/810-pci_disable_common_quirks.patch [deleted file]
target/linux/generic/patches-3.12/811-pci_disable_usb_common_quirks.patch [deleted file]
target/linux/generic/patches-3.12/820-usb_add_usb_find_device_by_name.patch [deleted file]
target/linux/generic/patches-3.12/830-ledtrig_morse.patch [deleted file]
target/linux/generic/patches-3.12/831-ledtrig_netdev.patch [deleted file]
target/linux/generic/patches-3.12/832-ledtrig_usbdev.patch [deleted file]
target/linux/generic/patches-3.12/840-rtc7301.patch [deleted file]
target/linux/generic/patches-3.12/841-rtc_pt7c4338.patch [deleted file]
target/linux/generic/patches-3.12/861-04_spi_gpio_implement_spi_delay.patch [deleted file]
target/linux/generic/patches-3.12/862-gpio_spi_driver.patch [deleted file]
target/linux/generic/patches-3.12/863-gpiommc.patch [deleted file]
target/linux/generic/patches-3.12/864-gpiommc_configfs_locking.patch [deleted file]
target/linux/generic/patches-3.12/870-hifn795x_byteswap.patch [deleted file]
target/linux/generic/patches-3.12/880-gateworks_system_controller.patch [deleted file]
target/linux/generic/patches-3.12/890-8250_optional_sysrq.patch [deleted file]
target/linux/generic/patches-3.12/900-slab_maxsize.patch [deleted file]
target/linux/generic/patches-3.12/901-debloat_sock_diag.patch [deleted file]
target/linux/generic/patches-3.12/902-debloat_proc.patch [deleted file]
target/linux/generic/patches-3.12/903-debloat_direct_io.patch [deleted file]
target/linux/generic/patches-3.12/910-kobject_uevent.patch [deleted file]
target/linux/generic/patches-3.12/911-kobject_add_broadcast_uevent.patch [deleted file]
target/linux/generic/patches-3.12/921-use_preinit_as_init.patch [deleted file]
target/linux/generic/patches-3.12/922-always-create-console-node-in-initramfs.patch [deleted file]
target/linux/generic/patches-3.12/930-crashlog.patch [deleted file]
target/linux/generic/patches-3.12/940-ocf_kbuild_integration.patch [deleted file]
target/linux/generic/patches-3.12/941-ocf_20120127.patch [deleted file]
target/linux/generic/patches-3.12/950-vm_exports.patch [deleted file]
target/linux/generic/patches-3.12/960-decompress_unlzo_fix.patch [deleted file]
target/linux/generic/patches-3.12/970-remove-unsane-filenames-from-deps_initramfs-list.patch [deleted file]
target/linux/generic/patches-3.12/980-arm_openwrt_machtypes.patch [deleted file]
target/linux/generic/patches-3.12/990-gpio_wdt.patch [deleted file]
target/linux/generic/patches-3.12/996-zsmalloc_allow_module_build.patch [deleted file]
target/linux/generic/patches-3.12/997-device_tree_cmdline.patch [deleted file]
target/linux/generic/patches-3.12/998-enable_wilink_platform_without_drivers.patch [deleted file]

index f72ad42..4c5822b 100644 (file)
@@ -17,9 +17,6 @@ endif
 ifeq ($(LINUX_VERSION),3.10.44)
   LINUX_KERNEL_MD5SUM:=8a4006eff3bbd8aff58fe4b443223e7a
 endif
-ifeq ($(LINUX_VERSION),3.12.10)
-  LINUX_KERNEL_MD5SUM:=93325074b7b1d7bb76fb7d4348f0aa7a
-endif
 ifeq ($(LINUX_VERSION),3.13.7)
   LINUX_KERNEL_MD5SUM:=370adced5e5c1cb1d0d621c2dae2723f
 endif
diff --git a/target/linux/generic/config-3.12 b/target/linux/generic/config-3.12
deleted file mode 100644 (file)
index d1b28ee..0000000
+++ /dev/null
@@ -1,4175 +0,0 @@
-CONFIG_32BIT=y
-# CONFIG_6PACK is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_9P_FS is not set
-# CONFIG_AB3100_CORE is not set
-# CONFIG_AB8500_CORE is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_ACENIC is not set
-# CONFIG_ACERHDF is not set
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_ACPI_APEI is not set
-# CONFIG_ACPI_CUSTOM_METHOD is not set
-# CONFIG_ACPI_HED is not set
-# CONFIG_ACPI_POWER_METER is not set
-# CONFIG_ACPI_QUICKSTART is not set
-# CONFIG_AD2S1200 is not set
-# CONFIG_AD2S1210 is not set
-# CONFIG_AD2S90 is not set
-# CONFIG_AD5064 is not set
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_AD5360 is not set
-# CONFIG_AD5380 is not set
-# CONFIG_AD5421 is not set
-# CONFIG_AD5446 is not set
-# CONFIG_AD5449 is not set
-# CONFIG_AD5504 is not set
-# CONFIG_AD5624R_SPI is not set
-# CONFIG_AD5686 is not set
-# CONFIG_AD5755 is not set
-# CONFIG_AD5764 is not set
-# CONFIG_AD5791 is not set
-# CONFIG_AD5930 is not set
-# CONFIG_AD5933 is not set
-# CONFIG_AD7150 is not set
-# CONFIG_AD7152 is not set
-# CONFIG_AD7192 is not set
-# CONFIG_AD7266 is not set
-# CONFIG_AD7280 is not set
-# CONFIG_AD7291 is not set
-# CONFIG_AD7298 is not set
-# CONFIG_AD7303 is not set
-# CONFIG_AD7476 is not set
-# CONFIG_AD7606 is not set
-# CONFIG_AD7746 is not set
-# CONFIG_AD7780 is not set
-# CONFIG_AD7791 is not set
-# CONFIG_AD7793 is not set
-# CONFIG_AD7816 is not set
-# CONFIG_AD7887 is not set
-# CONFIG_AD7923 is not set
-# CONFIG_AD799X is not set
-# CONFIG_AD8366 is not set
-# CONFIG_AD9523 is not set
-# CONFIG_AD9832 is not set
-# CONFIG_AD9834 is not set
-# CONFIG_AD9850 is not set
-# CONFIG_AD9852 is not set
-# CONFIG_AD9910 is not set
-# CONFIG_AD9951 is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_ADE7753 is not set
-# CONFIG_ADE7754 is not set
-# CONFIG_ADE7758 is not set
-# CONFIG_ADE7759 is not set
-# CONFIG_ADE7854 is not set
-# CONFIG_ADF4350 is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADIS16060 is not set
-# CONFIG_ADIS16080 is not set
-# CONFIG_ADIS16130 is not set
-# CONFIG_ADIS16136 is not set
-# CONFIG_ADIS16201 is not set
-# CONFIG_ADIS16203 is not set
-# CONFIG_ADIS16204 is not set
-# CONFIG_ADIS16209 is not set
-# CONFIG_ADIS16220 is not set
-# CONFIG_ADIS16240 is not set
-# CONFIG_ADIS16255 is not set
-# CONFIG_ADIS16260 is not set
-# CONFIG_ADIS16400 is not set
-# CONFIG_ADIS16480 is not set
-# CONFIG_ADJD_S311 is not set
-# CONFIG_ADM6996_PHY is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_ADT7316 is not set
-# CONFIG_ADXRS450 is not set
-CONFIG_AEABI=y
-# CONFIG_AFFS_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_AF_RXRPC is not set
-# CONFIG_AGP is not set
-CONFIG_AIO=y
-# CONFIG_AIRO is not set
-# CONFIG_AIRO_CS is not set
-# CONFIG_AIX_PARTITION is not set
-# CONFIG_AK8975 is not set
-# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
-# CONFIG_ALIM7101_WDT is not set
-# CONFIG_ALTERA_STAPL is not set
-# CONFIG_ALX is not set
-# CONFIG_AM335X_PHY_USB is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_AMD_PHY is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_AMILO_RFKILL is not set
-# CONFIG_ANDROID is not set
-CONFIG_ANON_INODES=y
-# CONFIG_APDS9300 is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_APM8018X is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_AR5523 is not set
-# CONFIG_AR7 is not set
-# CONFIG_AR8216_PHY is not set
-# CONFIG_AR8216_PHY_LEDS is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_BCM is not set
-# CONFIG_ARCH_BCM2835 is not set
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CNS3XXX is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_EXYNOS is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-# CONFIG_ARCH_HIGHBANK is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_KEYSTONE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_MULTIPLATFORM is not set
-# CONFIG_ARCH_MULTI_V6 is not set
-# CONFIG_ARCH_MULTI_V7 is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_MVEBU is not set
-# CONFIG_ARCH_MXC is not set
-# CONFIG_ARCH_MXS is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_NOMADIK is not set
-# CONFIG_ARCH_NUC93X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_OMAP1 is not set
-# CONFIG_ARCH_OMAP2PLUS is not set
-# CONFIG_ARCH_OMAP3 is not set
-# CONFIG_ARCH_OMAP4 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-# CONFIG_ARCH_PICOXCELL is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PRIMA2 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_ROCKCHIP is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_S3C24XX is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_SHMOBILE_MULTI is not set
-# CONFIG_ARCH_SIRF is not set
-# CONFIG_ARCH_SOCFPGA is not set
-# CONFIG_ARCH_STI is not set
-# CONFIG_ARCH_SUNXI is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-# CONFIG_ARCH_TCC_926 is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_VIRT is not set
-# CONFIG_ARCH_VT8500 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_WM8850 is not set
-# CONFIG_ARCH_ZYNQ is not set
-# CONFIG_ARCNET is not set
-# CONFIG_ARC_EMAC is not set
-# CONFIG_ARM_APPENDED_DTB is not set
-# CONFIG_ARM_ARCH_TIMER is not set
-# CONFIG_ARM_AT91_ETHER is not set
-# CONFIG_ARM_CCI is not set
-CONFIG_ARM_CPU_TOPOLOGY=y
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-# CONFIG_ARM_ERRATA_326103 is not set
-# CONFIG_ARM_ERRATA_364296 is not set
-# CONFIG_ARM_ERRATA_411920 is not set
-# CONFIG_ARM_ERRATA_430973 is not set
-# CONFIG_ARM_ERRATA_458693 is not set
-# CONFIG_ARM_ERRATA_460075 is not set
-# CONFIG_ARM_ERRATA_643719 is not set
-# CONFIG_ARM_ERRATA_720789 is not set
-# CONFIG_ARM_ERRATA_742230 is not set
-# CONFIG_ARM_ERRATA_742231 is not set
-# CONFIG_ARM_ERRATA_743622 is not set
-# CONFIG_ARM_ERRATA_751472 is not set
-# CONFIG_ARM_ERRATA_754322 is not set
-# CONFIG_ARM_ERRATA_754327 is not set
-# CONFIG_ARM_ERRATA_764369 is not set
-# CONFIG_ARM_ERRATA_773022 is not set
-# CONFIG_ARM_ERRATA_775420 is not set
-# CONFIG_ARM_ERRATA_798181 is not set
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
-# CONFIG_ARM_PSCI is not set
-# CONFIG_ARM_UNWIND is not set
-# CONFIG_ARM_VIRT_EXT is not set
-CONFIG_ARPD=y
-# CONFIG_ARTHUR is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_ASYNC_RAID6_TEST is not set
-# CONFIG_ASYNC_TX_DMA is not set
-# CONFIG_AT76C50X_USB is not set
-# CONFIG_AT803X_PHY is not set
-# CONFIG_ATA is not set
-# CONFIG_ATAGS is not set
-CONFIG_ATAGS_PROC=y
-# CONFIG_ATALK is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_ATA_ACPI is not set
-CONFIG_ATA_BMDMA=y
-# CONFIG_ATA_GENERIC is not set
-# CONFIG_ATA_NONSTANDARD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_ATA_PIIX is not set
-CONFIG_ATA_SFF=y
-# CONFIG_ATA_VERBOSE_ERROR is not set
-# CONFIG_ATH10K is not set
-# CONFIG_ATH5K is not set
-# CONFIG_ATH6KL is not set
-# CONFIG_ATH6K_LEGACY is not set
-# CONFIG_ATH79 is not set
-# CONFIG_ATH9K is not set
-# CONFIG_ATH9K_HTC is not set
-CONFIG_ATH_CARDS=m
-# CONFIG_ATH_DEBUG is not set
-# CONFIG_ATL1 is not set
-# CONFIG_ATL1C is not set
-# CONFIG_ATL1E is not set
-# CONFIG_ATL2 is not set
-# CONFIG_ATM is not set
-# CONFIG_ATMEL is not set
-# CONFIG_ATMEL_PWM is not set
-# CONFIG_ATMEL_SSC is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_BR2684 is not set
-CONFIG_ATM_BR2684_IPFILTER=y
-# CONFIG_ATM_CLIP is not set
-CONFIG_ATM_CLIP_NO_ICMP=y
-# CONFIG_ATM_DRIVERS is not set
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_FORE200E is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_LANE is not set
-# CONFIG_ATM_MPOA is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_SOLOS is not set
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_ATP is not set
-# CONFIG_AUDIT is not set
-# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_AUTO_ZRELADDR is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_AVERAGE is not set
-# CONFIG_AX25 is not set
-# CONFIG_AX25_DAMA_SLAVE is not set
-# CONFIG_AX88796 is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_B44 is not set
-# CONFIG_B53 is not set
-# CONFIG_B53_SPI_DRIVER is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
-# CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_BASE_FULL=y
-CONFIG_BASE_SMALL=0
-# CONFIG_BATMAN_ADV is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_DS2760 is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2781 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_BATTERY_SBS is not set
-# CONFIG_BAYCOM_EPP is not set
-# CONFIG_BAYCOM_PAR is not set
-# CONFIG_BAYCOM_SER_FDX is not set
-# CONFIG_BAYCOM_SER_HDX is not set
-# CONFIG_BCACHE is not set
-# CONFIG_BCM47XX is not set
-# CONFIG_BCM63XX is not set
-# CONFIG_BCM63XX_PHY is not set
-# CONFIG_BCM87XX_PHY is not set
-# CONFIG_BCMA is not set
-# CONFIG_BCMA_DRIVER_GPIO is not set
-CONFIG_BCMA_POSSIBLE=y
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_BDI_SWITCH is not set
-# CONFIG_BE2ISCSI is not set
-# CONFIG_BE2NET is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_BGMAC is not set
-# CONFIG_BINARY_PRINTF is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_BINFMT_SCRIPT=y
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_CMDLINE_PARSER is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_CPQ_DA is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_CS5536 is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_DELKIN is not set
-# CONFIG_BLK_DEV_DRBD is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_HD is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_IDEACPI is not set
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDECS is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDE_AU1XXX is not set
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_INTEGRITY is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_BLK_DEV_IT8172 is not set
-# CONFIG_BLK_DEV_IT8213 is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_JMICRON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_NVME is not set
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_RBD is not set
-# CONFIG_BLK_DEV_RSXX is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_SD is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_TC86C001 is not set
-# CONFIG_BLK_DEV_THROTTLING is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_XIP is not set
-CONFIG_BLOCK=y
-# CONFIG_BMA180 is not set
-# CONFIG_BMP085 is not set
-# CONFIG_BMP085_I2C is not set
-# CONFIG_BMP085_SPI is not set
-# CONFIG_BNA is not set
-# CONFIG_BNX2 is not set
-# CONFIG_BNX2X is not set
-# CONFIG_BONDING is not set
-# CONFIG_BOOKE_WDT is not set
-CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
-# CONFIG_BOOT_PRINTK_DELAY is not set
-CONFIG_BOOT_RAW=y
-# CONFIG_BPCTL is not set
-# CONFIG_BPF_JIT is not set
-# CONFIG_BPQETHER is not set
-CONFIG_BQL=y
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_BRCMFMAC is not set
-CONFIG_BRIDGE=y
-# CONFIG_BRIDGE_EBT_802_3 is not set
-# CONFIG_BRIDGE_EBT_AMONG is not set
-# CONFIG_BRIDGE_EBT_ARP is not set
-# CONFIG_BRIDGE_EBT_ARPREPLY is not set
-# CONFIG_BRIDGE_EBT_BROUTE is not set
-# CONFIG_BRIDGE_EBT_DNAT is not set
-# CONFIG_BRIDGE_EBT_IP is not set
-# CONFIG_BRIDGE_EBT_IP6 is not set
-# CONFIG_BRIDGE_EBT_LIMIT is not set
-# CONFIG_BRIDGE_EBT_LOG is not set
-# CONFIG_BRIDGE_EBT_MARK is not set
-# CONFIG_BRIDGE_EBT_MARK_T is not set
-# CONFIG_BRIDGE_EBT_NFLOG is not set
-# CONFIG_BRIDGE_EBT_PKTTYPE is not set
-# CONFIG_BRIDGE_EBT_REDIRECT is not set
-# CONFIG_BRIDGE_EBT_SNAT is not set
-# CONFIG_BRIDGE_EBT_STP is not set
-# CONFIG_BRIDGE_EBT_T_FILTER is not set
-# CONFIG_BRIDGE_EBT_T_NAT is not set
-# CONFIG_BRIDGE_EBT_ULOG is not set
-# CONFIG_BRIDGE_EBT_VLAN is not set
-CONFIG_BRIDGE_IGMP_SNOOPING=y
-# CONFIG_BRIDGE_NETFILTER is not set
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-# CONFIG_BRIDGE_VLAN_FILTERING is not set
-# CONFIG_BROADCOM_PHY is not set
-CONFIG_BROKEN_ON_SMP=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_BT is not set
-# CONFIG_BTRFS_ASSERT is not set
-# CONFIG_BTRFS_DEBUG is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
-# CONFIG_BT_ATH3K is not set
-# CONFIG_BT_BNEP is not set
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-# CONFIG_BT_CMTP is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIBLUECARD is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBT3C is not set
-# CONFIG_BT_HCIBTSDIO is not set
-# CONFIG_BT_HCIBTUART is not set
-# CONFIG_BT_HCIBTUSB is not set
-# CONFIG_BT_HCIDTL1 is not set
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIUART_3WIRE is not set
-# CONFIG_BT_HCIUART_ATH3K is not set
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIUART_H4=y
-# CONFIG_BT_HCIUART_LL is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_BT_HIDP is not set
-CONFIG_BT_L2CAP=y
-# CONFIG_BT_MRVL is not set
-# CONFIG_BT_RFCOMM is not set
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_SCO=y
-CONFIG_BUG=y
-CONFIG_BUILDTIME_EXTABLE_SORT=y
-# CONFIG_C2PORT is not set
-# CONFIG_CAIF is not set
-# CONFIG_CAN is not set
-# CONFIG_CAPI_AVM is not set
-# CONFIG_CAPI_EICON is not set
-# CONFIG_CAPI_TRACE is not set
-CONFIG_CARDBUS=y
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_CARL9170 is not set
-# CONFIG_CARMA_FPGA is not set
-# CONFIG_CARMA_FPGA_PROGRAM is not set
-# CONFIG_CASSINI is not set
-CONFIG_CAVIUM_OCTEON_HELPER=y
-# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
-# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
-# CONFIG_CAVIUM_OCTEON_SOC is not set
-# CONFIG_CB710_CORE is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_CED1401 is not set
-# CONFIG_CEPH_FS is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_CFG80211 is not set
-# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
-# CONFIG_CGROUPS is not set
-# CONFIG_CGROUP_DEBUG is not set
-# CONFIG_CHARGER_BQ2415X is not set
-# CONFIG_CHARGER_GPIO is not set
-# CONFIG_CHARGER_LP8727 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-# CONFIG_CHARGER_SMB347 is not set
-# CONFIG_CHECKPOINT_RESTORE is not set
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_CHELSIO_T4 is not set
-# CONFIG_CHELSIO_T4VF is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_CHR_DEV_SCH is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_CIFS is not set
-# CONFIG_CIFS_DEBUG is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_FSCACHE is not set
-# CONFIG_CIFS_NFSD_EXPORT is not set
-CONFIG_CIFS_POSIX=y
-# CONFIG_CIFS_SMB2 is not set
-CONFIG_CIFS_STATS=y
-# CONFIG_CIFS_STATS2 is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CLEANCACHE is not set
-CONFIG_CLS_U32_MARK=y
-# CONFIG_CLS_U32_PERF is not set
-# CONFIG_CMA is not set
-CONFIG_CMDLINE=""
-# CONFIG_CMDLINE_BOOL is not set
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
-# CONFIG_CMDLINE_PARTITION is not set
-# CONFIG_CNIC is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_CODE_PATCHING_SELFTEST is not set
-# CONFIG_COMEDI is not set
-# CONFIG_COMMON_CLK_DEBUG is not set
-# CONFIG_COMMON_CLK_SI5351 is not set
-# CONFIG_COMPACTION is not set
-# CONFIG_COMPAL_LAPTOP is not set
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_COMPILE_TEST is not set
-# CONFIG_CONFIGFS_FS is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_CONSTRUCTORS=y
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-# CONFIG_COPS is not set
-# CONFIG_CORDIC is not set
-# CONFIG_COREDUMP is not set
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-# CONFIG_CPA_DEBUG is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
-# CONFIG_CRAMFS is not set
-CONFIG_CRASHLOG=y
-# CONFIG_CRASH_DUMP is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-# CONFIG_CRC32_BIT is not set
-CONFIG_CRC32_SARWATE=y
-# CONFIG_CRC32_SELFTEST is not set
-# CONFIG_CRC32_SLICEBY4 is not set
-# CONFIG_CRC32_SLICEBY8 is not set
-# CONFIG_CRC7 is not set
-# CONFIG_CRC8 is not set
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC_ITU_T is not set
-# CONFIG_CRC_T10DIF is not set
-CONFIG_CROSS_COMPILE=""
-# CONFIG_CROSS_MEMORY_ATTACH is not set
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_AEAD is not set
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_AES_ARM is not set
-# CONFIG_CRYPTO_AES_NI_INTEL is not set
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_AUTHENC is not set
-# CONFIG_CRYPTO_BLKCIPHER is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_CBC is not set
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_CMAC is not set
-# CONFIG_CRYPTO_CRC32 is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CRC32C_INTEL is not set
-# CONFIG_CRYPTO_CRCT10DIF is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_DEV_ATMEL_AES is not set
-# CONFIG_CRYPTO_DEV_ATMEL_SHA is not set
-# CONFIG_CRYPTO_DEV_ATMEL_TDES is not set
-# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
-# CONFIG_CRYPTO_DEV_HIFN_795X is not set
-# CONFIG_CRYPTO_DEV_MV_CESA is not set
-# CONFIG_CRYPTO_DEV_SAHARA is not set
-# CONFIG_CRYPTO_DEV_TALITOS is not set
-# CONFIG_CRYPTO_ECB is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_FIPS is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-# CONFIG_CRYPTO_GHASH is not set
-# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
-# CONFIG_CRYPTO_HASH is not set
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_HW is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_LZ4 is not set
-# CONFIG_CRYPTO_LZ4HC is not set
-# CONFIG_CRYPTO_LZO is not set
-# CONFIG_CRYPTO_MANAGER is not set
-# CONFIG_CRYPTO_MANAGER2 is not set
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_PCOMP is not set
-# CONFIG_CRYPTO_PCOMP2 is not set
-# CONFIG_CRYPTO_PCRYPT is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_RNG is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SALSA20_586 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SEQIV is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA1_ARM is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TEST is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CRYPTO_TWOFISH_COMMON is not set
-# CONFIG_CRYPTO_USER is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-# CONFIG_CRYPTO_VMAC is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_XZ is not set
-# CONFIG_CRYPTO_ZLIB is not set
-# CONFIG_CRYSTALHD is not set
-# CONFIG_CS5535_MFGPT is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_CUSE is not set
-# CONFIG_CW1200 is not set
-# CONFIG_CXT1E1 is not set
-# CONFIG_CYPRESS_FIRMWARE is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_DCB is not set
-# CONFIG_DDR is not set
-# CONFIG_DE600 is not set
-# CONFIG_DE620 is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_DEBUG_GPIO is not set
-# CONFIG_DEBUG_HIGHMEM is not set
-# CONFIG_DEBUG_ICEDCC is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_DEBUG_INFO_REDUCED=y
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_KOBJECT_RELEASE is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_LOCKDEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_NX_TEST is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_DEBUG_PINCTRL is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_RODATA is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-# CONFIG_DEBUG_SEMIHOSTING is not set
-# CONFIG_DEBUG_SET_MODULE_RONX is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
-# CONFIG_DEBUG_ZBOOT is not set
-# CONFIG_DECNET is not set
-CONFIG_DEFAULT_CUBIC=y
-CONFIG_DEFAULT_DEADLINE=y
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_DEFAULT_IOSCHED="deadline"
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-# CONFIG_DEFAULT_NOOP is not set
-# CONFIG_DEFAULT_RENO is not set
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-# CONFIG_DETECT_HUNG_TASK is not set
-# CONFIG_DEVKMEM is not set
-CONFIG_DEVPORT=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_DEVTMPFS is not set
-# CONFIG_DEVTMPFS_MOUNT is not set
-# CONFIG_DGAP is not set
-# CONFIG_DGRP is not set
-# CONFIG_DIRECT_IO is not set
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_DISPLAY_CONNECTOR_ANALOG_TV is not set
-# CONFIG_DISPLAY_CONNECTOR_DVI is not set
-# CONFIG_DISPLAY_CONNECTOR_HDMI is not set
-# CONFIG_DISPLAY_ENCODER_TFP410 is not set
-# CONFIG_DISPLAY_ENCODER_TPD12S015 is not set
-# CONFIG_DISPLAY_PANEL_DPI is not set
-# CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02 is not set
-# CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1 is not set
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_DL2K is not set
-# CONFIG_DLM is not set
-# CONFIG_DM9000 is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_DMADEVICES_DEBUG is not set
-# CONFIG_DMASCC is not set
-# CONFIG_DMATEST is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_DMA_ENGINE is not set
-# CONFIG_DMA_SHARED_BUFFER is not set
-# CONFIG_DM_CACHE is not set
-# CONFIG_DM_DEBUG is not set
-# CONFIG_DM_DELAY is not set
-# CONFIG_DM_FLAKEY is not set
-# CONFIG_DM_LOG_USERSPACE is not set
-# CONFIG_DM_MULTIPATH is not set
-# CONFIG_DM_RAID is not set
-# CONFIG_DM_SWITCH is not set
-# CONFIG_DM_THIN_PROVISIONING is not set
-# CONFIG_DM_UEVENT is not set
-# CONFIG_DM_VERITY is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DNET is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_DNS_RESOLVER is not set
-CONFIG_DQL=y
-# CONFIG_DRAGONRISE_FF is not set
-# CONFIG_DRM is not set
-# CONFIG_DS1682 is not set
-# CONFIG_DTLK is not set
-# CONFIG_DUMMY is not set
-# CONFIG_DUMMY_IRQ is not set
-# CONFIG_DVB_AU8522_V4L is not set
-# CONFIG_DVB_CORE is not set
-# CONFIG_DVB_DUMMY_FE is not set
-# CONFIG_DVB_TUNER_DIB0070 is not set
-# CONFIG_DVB_TUNER_DIB0090 is not set
-# CONFIG_DW_DMAC is not set
-# CONFIG_DW_WATCHDOG is not set
-# CONFIG_DX_SEP is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_E100 is not set
-# CONFIG_E1000 is not set
-# CONFIG_E1000E is not set
-# CONFIG_E2100 is not set
-# CONFIG_EASYCAP is not set
-# CONFIG_ECHO is not set
-# CONFIG_ECONET is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_EDAC is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_EEPROM_93XX46 is not set
-# CONFIG_EEPROM_AT24 is not set
-# CONFIG_EEPROM_AT25 is not set
-# CONFIG_EEPROM_DIGSY_MTC_CFG is not set
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-CONFIG_EFI_PARTITION=y
-# CONFIG_EFS_FS is not set
-# CONFIG_ELF_CORE is not set
-CONFIG_EMBEDDED=y
-# CONFIG_ENABLE_MUST_CHECK is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-# CONFIG_ENC28J60 is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_ENIC is not set
-# CONFIG_EPAPR_PARAVIRT is not set
-# CONFIG_EPIC100 is not set
-CONFIG_EPOLL=y
-# CONFIG_EQUALIZER is not set
-# CONFIG_ET131X is not set
-# CONFIG_ETH16I is not set
-CONFIG_ETHERNET=y
-# CONFIG_ETHOC is not set
-CONFIG_EVENTFD=y
-# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
-# CONFIG_EWRK3 is not set
-CONFIG_EXPERIMENTAL=y
-CONFIG_EXPERT=y
-# CONFIG_EXPORTFS is not set
-# CONFIG_EXT2_FS is not set
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4_DEBUG is not set
-# CONFIG_EXT4_FS is not set
-# CONFIG_EXT4_FS_POSIX_ACL is not set
-# CONFIG_EXT4_FS_SECURITY is not set
-CONFIG_EXT4_FS_XATTR=y
-CONFIG_EXT4_USE_FOR_EXT23=y
-# CONFIG_EXTCON is not set
-CONFIG_EXTRA_FIRMWARE=""
-CONFIG_EXTRA_TARGETS=""
-# CONFIG_EXYNOS_ADC is not set
-# CONFIG_EXYNOS_VIDEO is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_F2FS_FS is not set
-# CONFIG_FAIR_GROUP_SCHED is not set
-# CONFIG_FANOTIFY is not set
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_FAT_FS is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_FB is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_ARMCLCD is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_AUO_K190X is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_CARMINE is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_DA8XX is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_GOLDFISH is not set
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_I740 is not set
-# CONFIG_FB_IBM_GXT4500 is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_LE80578 is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_MB862XX is not set
-# CONFIG_FB_METRONOME is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_N411 is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_OF is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_PS3 is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIMPLE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_SM7XX is not set
-# CONFIG_FB_SMSCUFX is not set
-# CONFIG_FB_SSD1307 is not set
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_FOPS is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_UDL is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_VIA is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_XGI is not set
-# CONFIG_FCOE is not set
-# CONFIG_FCOE_FNIC is not set
-# CONFIG_FDDI is not set
-# CONFIG_FEALNX is not set
-# CONFIG_FHANDLE is not set
-CONFIG_FIB_RULES=y
-CONFIG_FILE_LOCKING=y
-# CONFIG_FIREWIRE is not set
-# CONFIG_FIREWIRE_NOSY is not set
-# CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-# CONFIG_FIRMWARE_MEMMAP is not set
-# CONFIG_FIXED_PHY is not set
-CONFIG_FLATMEM=y
-CONFIG_FLATMEM_MANUAL=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_FMC is not set
-# CONFIG_FORCEDETH is not set
-CONFIG_FORCE_MAX_ZONEORDER=11
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-# CONFIG_FRAME_POINTER is not set
-CONFIG_FRAME_WARN=1024
-# CONFIG_FREEZER is not set
-# CONFIG_FRONTSWAP is not set
-# CONFIG_FSCACHE is not set
-# CONFIG_FSL_XGMAC_MDIO is not set
-CONFIG_FSNOTIFY=y
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_FT1000 is not set
-# CONFIG_FTGMAC100 is not set
-# CONFIG_FTL is not set
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTRACE is not set
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_FTR_FIXUP_SELFTEST is not set
-# CONFIG_FUJITSU_TABLET is not set
-# CONFIG_FUNCTION_TRACER is not set
-# CONFIG_FUSE_FS is not set
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-# CONFIG_FUSION_SPI is not set
-CONFIG_FUTEX=y
-CONFIG_FW_LOADER=y
-CONFIG_FW_LOADER_USER_HELPER=y
-CONFIG_GACT_PROB=y
-# CONFIG_GADGET_UAC1 is not set
-# CONFIG_GAMEPORT is not set
-# CONFIG_GCOV is not set
-# CONFIG_GCOV_KERNEL is not set
-# CONFIG_GENERIC_ADC_BATTERY is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-# CONFIG_GENERIC_CPU_DEVICES is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_TIME=y
-# CONFIG_GFS2_FS is not set
-# CONFIG_GIGASET_CAPI is not set
-# CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GPIOLIB is not set
-# CONFIG_GPIO_74X164 is not set
-# CONFIG_GPIO_ADNP is not set
-# CONFIG_GPIO_ADP5588 is not set
-# CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_BT8XX is not set
-# CONFIG_GPIO_CS5535 is not set
-# CONFIG_GPIO_EM is not set
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_GRGPIO is not set
-# CONFIG_GPIO_ICH is not set
-# CONFIG_GPIO_IT8761E is not set
-# CONFIG_GPIO_LANGWELL is not set
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_ML_IOH is not set
-# CONFIG_GPIO_PCA953X is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_PCH is not set
-# CONFIG_GPIO_PL061 is not set
-# CONFIG_GPIO_RCAR is not set
-# CONFIG_GPIO_RDC321X is not set
-# CONFIG_GPIO_SCH is not set
-# CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_SYSFS is not set
-# CONFIG_GPIO_TS5500 is not set
-# CONFIG_GPIO_VX855 is not set
-# CONFIG_GPIO_WDT is not set
-# CONFIG_GPIO_XILINX is not set
-# CONFIG_GREENASIA_FF is not set
-# CONFIG_HAMACHI is not set
-CONFIG_HAMRADIO=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_HARDLOCKUP_DETECTOR is not set
-# CONFIG_HAVE_AOUT is not set
-# CONFIG_HAVE_ARM_ARCH_TIMER is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-# CONFIG_HCALL_STATS is not set
-# CONFIG_HDLC is not set
-# CONFIG_HDLC_CISCO is not set
-# CONFIG_HDLC_FR is not set
-# CONFIG_HDLC_PPP is not set
-# CONFIG_HDLC_RAW is not set
-# CONFIG_HDLC_RAW_ETH is not set
-# CONFIG_HDQ_MASTER_OMAP is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_HERMES is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_HFSPLUS_FS_POSIX_ACL is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HIBERNATION is not set
-# CONFIG_HID is not set
-# CONFIG_HIDRAW is not set
-# CONFIG_HID_A4TECH is not set
-# CONFIG_HID_ACRUX is not set
-# CONFIG_HID_ACRUX_FF is not set
-# CONFIG_HID_APPLE is not set
-# CONFIG_HID_APPLEIR is not set
-# CONFIG_HID_AUREAL is not set
-# CONFIG_HID_BELKIN is not set
-# CONFIG_HID_CHERRY is not set
-# CONFIG_HID_CHICONY is not set
-# CONFIG_HID_CYPRESS is not set
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_ELECOM is not set
-# CONFIG_HID_ELO is not set
-# CONFIG_HID_EMS_FF is not set
-# CONFIG_HID_EZKEY is not set
-# CONFIG_HID_GENERIC is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_HUION is not set
-# CONFIG_HID_ICADE is not set
-# CONFIG_HID_KENSINGTON is not set
-# CONFIG_HID_KEYTOUCH is not set
-# CONFIG_HID_KYE is not set
-# CONFIG_HID_LCPOWER is not set
-# CONFIG_HID_LENOVO_TPKBD is not set
-# CONFIG_HID_LOGITECH is not set
-# CONFIG_HID_MAGICMOUSE is not set
-# CONFIG_HID_MICROSOFT is not set
-# CONFIG_HID_MONTEREY is not set
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_PID is not set
-# CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PRODIKEYS is not set
-# CONFIG_HID_PS3REMOTE is not set
-# CONFIG_HID_QUANTA is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_ROCCAT_ARVO is not set
-# CONFIG_HID_ROCCAT_KONE is not set
-# CONFIG_HID_ROCCAT_KONEPLUS is not set
-# CONFIG_HID_ROCCAT_KOVAPLUS is not set
-# CONFIG_HID_ROCCAT_PYRA is not set
-# CONFIG_HID_SAITEK is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SENSOR_HUB is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SPEEDLINK is not set
-# CONFIG_HID_STEELSERIES is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_SUPPORT is not set
-# CONFIG_HID_THINGM is not set
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_TIVO is not set
-# CONFIG_HID_TOPSEED is not set
-# CONFIG_HID_TWINHAN is not set
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WACOM is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_WIIMOTE is not set
-# CONFIG_HID_XINMO is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-# CONFIG_HIGHMEM is not set
-CONFIG_HIGH_RES_TIMERS=y
-# CONFIG_HIPPI is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_HOSTAP_CS is not set
-# CONFIG_HOSTAP_PCI is not set
-# CONFIG_HOSTAP_PLX is not set
-CONFIG_HOTPLUG=y
-# CONFIG_HOTPLUG_CPU is not set
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HP100 is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HP_ILO is not set
-# CONFIG_HSI is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HUGETLB_PAGE is not set
-# CONFIG_HVC_DCC is not set
-# CONFIG_HVC_UDBG is not set
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWSPINLOCK_OMAP is not set
-CONFIG_HW_PERF_EVENTS=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_HW_RANDOM_AMD is not set
-# CONFIG_HW_RANDOM_ATMEL is not set
-# CONFIG_HW_RANDOM_EXYNOS is not set
-# CONFIG_HW_RANDOM_GEODE is not set
-# CONFIG_HW_RANDOM_INTEL is not set
-# CONFIG_HW_RANDOM_PPC4XX is not set
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_HW_RANDOM_VIA is not set
-# CONFIG_HYPERV is not set
-# CONFIG_HYSDN is not set
-CONFIG_HZ=100
-CONFIG_HZ_100=y
-# CONFIG_HZ_1000 is not set
-# CONFIG_HZ_1024 is not set
-# CONFIG_HZ_128 is not set
-# CONFIG_HZ_200 is not set
-# CONFIG_HZ_250 is not set
-# CONFIG_HZ_256 is not set
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_48 is not set
-# CONFIG_HZ_500 is not set
-# CONFIG_HZ_PERIODIC is not set
-# CONFIG_I2C is not set
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCA is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
-# CONFIG_I2C_CBUS_GPIO is not set
-# CONFIG_I2C_CHARDEV is not set
-# CONFIG_I2C_COMPAT is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DESIGNWARE is not set
-# CONFIG_I2C_DESIGNWARE_PCI is not set
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_EG20T is not set
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_HELPER_AUTO is not set
-# CONFIG_I2C_HID is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_IBM_IIC is not set
-# CONFIG_I2C_INTEL_MID is not set
-# CONFIG_I2C_ISCH is not set
-# CONFIG_I2C_ISMT is not set
-# CONFIG_I2C_MPC is not set
-# CONFIG_I2C_MUX is not set
-# CONFIG_I2C_MUX_PINCTRL is not set
-# CONFIG_I2C_MV64XXX is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_NOMADIK is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SCMI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_SMBUS is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-# CONFIG_I2C_VERSATILE is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_XILINX is not set
-# CONFIG_I2O is not set
-# CONFIG_I40E is not set
-# CONFIG_I6300ESB_WDT is not set
-# CONFIG_I82092 is not set
-# CONFIG_I82365 is not set
-# CONFIG_IBM_ASM is not set
-# CONFIG_IBM_EMAC_DEBUG is not set
-# CONFIG_IBM_EMAC_EMAC4 is not set
-# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set
-# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_EMAC_RGMII is not set
-# CONFIG_IBM_EMAC_TAH is not set
-# CONFIG_IBM_EMAC_ZMII is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_IDE is not set
-# CONFIG_IDEAPAD_LAPTOP is not set
-# CONFIG_IDE_GD is not set
-# CONFIG_IDE_PHISON is not set
-# CONFIG_IDE_PROC_FS is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-# CONFIG_IEEE802154 is not set
-# CONFIG_IFB is not set
-# CONFIG_IGB is not set
-# CONFIG_IGBVF is not set
-# CONFIG_IIO is not set
-# CONFIG_IIO_BUFFER_CB is not set
-CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
-# CONFIG_IIO_GPIO_TRIGGER is not set
-# CONFIG_IIO_INTERRUPT_TRIGGER is not set
-# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_IIO_ST_ACCEL_3AXIS is not set
-# CONFIG_IIO_ST_GYRO_3AXIS is not set
-# CONFIG_IIO_ST_MAGN_3AXIS is not set
-# CONFIG_IIO_ST_PRESS is not set
-# CONFIG_IIO_SYSFS_TRIGGER is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_IKCONFIG_PROC is not set
-# CONFIG_IMAGE_CMDLINE_HACK is not set
-CONFIG_INET=y
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_DIAG is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_LRO is not set
-# CONFIG_INET_TCP_DIAG is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_UDP_DIAG is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_INFTL is not set
-# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
-# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set
-# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
-CONFIG_INITRAMFS_COMPRESSION_NONE=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-# CONFIG_INLINE_READ_LOCK is not set
-# CONFIG_INLINE_READ_LOCK_BH is not set
-# CONFIG_INLINE_READ_LOCK_IRQ is not set
-# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_READ_TRYLOCK is not set
-CONFIG_INLINE_READ_UNLOCK=y
-# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_SPIN_LOCK is not set
-# CONFIG_INLINE_SPIN_LOCK_BH is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
-# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_SPIN_TRYLOCK is not set
-# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
-# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
-# CONFIG_INLINE_WRITE_LOCK is not set
-# CONFIG_INLINE_WRITE_LOCK_BH is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
-# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-# CONFIG_INLINE_WRITE_TRYLOCK is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
-# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
-CONFIG_INOTIFY_USER=y
-# CONFIG_INPUT is not set
-# CONFIG_INPUT_AD714X is not set
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_APANEL is not set
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_ATLAS_BTNS is not set
-# CONFIG_INPUT_BMA150 is not set
-# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_CMA3000 is not set
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_GP2A is not set
-# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-# CONFIG_INPUT_GPIO_TILT_POLLED is not set
-# CONFIG_INPUT_IMS_PCU is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_MATRIXKMAP is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_MMA8450 is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_MPU3050 is not set
-# CONFIG_INPUT_PCF8574 is not set
-# CONFIG_INPUT_PCSPKR is not set
-# CONFIG_INPUT_POLLDEV is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_PWM_BEEPER is not set
-# CONFIG_INPUT_SPARSEKMAP is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_UINPUT is not set
-# CONFIG_INPUT_WISTRON_BTNS is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INTEL_IDLE is not set
-# CONFIG_INTEL_MEI is not set
-# CONFIG_INTEL_MID_PTI is not set
-# CONFIG_INTEL_OAKTRAIL is not set
-# CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_INV_MPU6050_IIO is not set
-# CONFIG_IOMMU_SUPPORT is not set
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IP1000 is not set
-# CONFIG_IP17XX_PHY is not set
-# CONFIG_IP6_NF_FILTER is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP6_NF_MANGLE is not set
-# CONFIG_IP6_NF_MATCH_AH is not set
-# CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
-# CONFIG_IP6_NF_MATCH_HL is not set
-# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_OPTS is not set
-# CONFIG_IP6_NF_MATCH_RPFILTER is not set
-# CONFIG_IP6_NF_MATCH_RT is not set
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_RAW is not set
-# CONFIG_IP6_NF_TARGET_HL is not set
-# CONFIG_IP6_NF_TARGET_LOG is not set
-# CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
-# CONFIG_IPACK_BUS is not set
-# CONFIG_IPC_NS is not set
-# CONFIG_IPMI_HANDLER is not set
-# CONFIG_IPV6 is not set
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_ROUTE_INFO is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_IPV6_SIT_6RD is not set
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2200 is not set
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_IPW2200_MONITOR=y
-# CONFIG_IPW2200_PROMISCUOUS is not set
-# CONFIG_IPW2200_QOS is not set
-# CONFIG_IPW2200_RADIOTAP is not set
-# CONFIG_IPWIRELESS is not set
-# CONFIG_IPX is not set
-CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_FIB_TRIE_STATS is not set
-CONFIG_IP_MROUTE=y
-CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_NF_ARPFILTER is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_ARP_MANGLE is not set
-# CONFIG_IP_NF_FILTER is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_MANGLE is not set
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_ECN is not set
-# CONFIG_IP_NF_MATCH_RPFILTER is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_SECURITY is not set
-# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
-# CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_LOG is not set
-# CONFIG_IP_NF_TARGET_MASQUERADE is not set
-# CONFIG_IP_NF_TARGET_NETMAP is not set
-# CONFIG_IP_NF_TARGET_REDIRECT is not set
-# CONFIG_IP_NF_TARGET_REJECT is not set
-# CONFIG_IP_NF_TARGET_SYNPROXY is not set
-# CONFIG_IP_NF_TARGET_TTL is not set
-# CONFIG_IP_NF_TARGET_ULOG is not set
-# CONFIG_IP_PIMSM_V1 is not set
-# CONFIG_IP_PIMSM_V2 is not set
-# CONFIG_IP_PNP is not set
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_SCTP is not set
-# CONFIG_IP_SET is not set
-# CONFIG_IP_VS is not set
-# CONFIG_IRDA is not set
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_IRQ_ALL_CPUS is not set
-# CONFIG_IRQ_DOMAIN_DEBUG is not set
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_LIRC_CODEC is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC5_SZ_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_ISCSI_BOOT_SYSFS is not set
-# CONFIG_ISCSI_TCP is not set
-CONFIG_ISDN=y
-# CONFIG_ISDN_AUDIO is not set
-# CONFIG_ISDN_CAPI is not set
-# CONFIG_ISDN_CAPI_CAPIDRV is not set
-# CONFIG_ISDN_DIVERSION is not set
-# CONFIG_ISDN_DRV_ACT2000 is not set
-# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
-# CONFIG_ISDN_DRV_GIGASET is not set
-# CONFIG_ISDN_DRV_HISAX is not set
-# CONFIG_ISDN_DRV_ICN is not set
-# CONFIG_ISDN_DRV_LOOP is not set
-# CONFIG_ISDN_DRV_PCBIT is not set
-# CONFIG_ISDN_DRV_SC is not set
-# CONFIG_ISDN_I4L is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_ISO9660_FS is not set
-# CONFIG_ISS4xx is not set
-# CONFIG_ITG3200 is not set
-# CONFIG_IWL3945 is not set
-# CONFIG_IWLAGN is not set
-# CONFIG_IWLWIFI is not set
-# CONFIG_IWMC3200TOP is not set
-# CONFIG_IXGB is not set
-# CONFIG_IXGBE is not set
-# CONFIG_IXGBEVF is not set
-# CONFIG_JBD is not set
-# CONFIG_JBD2_DEBUG is not set
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_POSIX_ACL is not set
-# CONFIG_JFFS2_FS_SECURITY is not set
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_FS_XATTR=y
-CONFIG_JFFS2_LZMA=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_ZLIB is not set
-# CONFIG_JFS_DEBUG is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_JFS_POSIX_ACL is not set
-# CONFIG_JFS_SECURITY is not set
-# CONFIG_JFS_STATISTICS is not set
-# CONFIG_JME is not set
-CONFIG_JOLIET=y
-# CONFIG_JUMP_LABEL is not set
-# CONFIG_KALLSYMS is not set
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_UNCOMPRESSED is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_KERNEL_BZIP2 is not set
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_LZ4 is not set
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_LZO is not set
-CONFIG_KERNEL_MODE_NEON=y
-CONFIG_KERNEL_XZ=y
-# CONFIG_KEXEC is not set
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_LM8333 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OMAP4 is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_PXA27x is not set
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_SAMSUNG is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_TCA8418 is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_KGDB is not set
-# CONFIG_KMEMCHECK is not set
-# CONFIG_KPROBES is not set
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851 is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_KSM is not set
-# CONFIG_KSZ884X_PCI is not set
-CONFIG_KUSER_HELPERS=y
-# CONFIG_KVM_GUEST is not set
-# CONFIG_KXSD9 is not set
-# CONFIG_L2TP is not set
-# CONFIG_L2TP_ETH is not set
-# CONFIG_L2TP_IP is not set
-# CONFIG_L2TP_V3 is not set
-# CONFIG_LANMEDIA is not set
-# CONFIG_LANTIQ is not set
-# CONFIG_LAPB is not set
-# CONFIG_LASAT is not set
-# CONFIG_LATENCYTOP is not set
-# CONFIG_LATTICE_ECP3_CONFIG is not set
-CONFIG_LBDAF=y
-# CONFIG_LCD_HX8357 is not set
-# CONFIG_LCD_ILI922X is not set
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_LMS501KF03 is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_LEDS_ATMEL_PWM is not set
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_BLINKM is not set
-CONFIG_LEDS_CLASS=y
-# CONFIG_LEDS_DAC124S085 is not set
-# CONFIG_LEDS_GPIO is not set
-CONFIG_LEDS_GPIO_OF=y
-CONFIG_LEDS_GPIO_PLATFORM=y
-# CONFIG_LEDS_INTEL_SS4200 is not set
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_LM3556 is not set
-# CONFIG_LEDS_LM355x is not set
-# CONFIG_LEDS_LM3642 is not set
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_LP5562 is not set
-# CONFIG_LEDS_LP8501 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_NET5501 is not set
-# CONFIG_LEDS_OT200 is not set
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_PCA9633 is not set
-# CONFIG_LEDS_PCA963X is not set
-# CONFIG_LEDS_PWM is not set
-# CONFIG_LEDS_RENESAS_TPU is not set
-# CONFIG_LEDS_TCA6507 is not set
-CONFIG_LEDS_TRIGGERS=y
-# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-# CONFIG_LEDS_TRIGGER_CAMERA is not set
-# CONFIG_LEDS_TRIGGER_CPU is not set
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-# CONFIG_LEDS_TRIGGER_GPIO is not set
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-# CONFIG_LEDS_TRIGGER_MORSE is not set
-CONFIG_LEDS_TRIGGER_NETDEV=y
-# CONFIG_LEDS_TRIGGER_ONESHOT is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
-# CONFIG_LEDS_TRIGGER_USBDEV is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_LIB80211 is not set
-# CONFIG_LIB80211_CRYPT_CCMP is not set
-# CONFIG_LIB80211_CRYPT_TKIP is not set
-# CONFIG_LIB80211_CRYPT_WEP is not set
-# CONFIG_LIB80211_DEBUG is not set
-# CONFIG_LIBCRC32C is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_LIBERTAS_THINFIRM is not set
-# CONFIG_LIBERTAS_USB is not set
-# CONFIG_LIBFC is not set
-# CONFIG_LIBFCOE is not set
-# CONFIG_LIBIPW_DEBUG is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_LIRC_STAGING is not set
-# CONFIG_LIS3L02DQ is not set
-# CONFIG_LKDTM is not set
-CONFIG_LLC=y
-# CONFIG_LLC2 is not set
-CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_LOCKD is not set
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_LOCKD_V4=y
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_LOGFS is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGO is not set
-CONFIG_LOG_BUF_SHIFT=17
-# CONFIG_LOONGSON_MC146818 is not set
-# CONFIG_LP486E is not set
-# CONFIG_LPC_ICH is not set
-# CONFIG_LPC_SCH is not set
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_LTE_GDM724X is not set
-# CONFIG_LTPC is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_LXT_PHY is not set
-CONFIG_LZMA_COMPRESS=y
-CONFIG_LZMA_DECOMPRESS=y
-# CONFIG_LZO_COMPRESS is not set
-# CONFIG_LZO_DECOMPRESS is not set
-# CONFIG_M25PXX_PREFER_SMALL_SECTOR_ERASE is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_MAC80211_MESSAGE_TRACING is not set
-# CONFIG_MACB is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_MACH_JZ4740 is not set
-# CONFIG_MACH_LOONGSON is not set
-# CONFIG_MACH_LOONGSON1 is not set
-# CONFIG_MACH_NO_WESTBRIDGE is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_MACVTAP is not set
-# CONFIG_MAC_EMUMOUSEBTN is not set
-# CONFIG_MAC_PARTITION is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_MAILBOX is not set
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_MAX1363 is not set
-# CONFIG_MAX517 is not set
-# CONFIG_MAX63XX_WATCHDOG is not set
-# CONFIG_MCP320X is not set
-# CONFIG_MCP4725 is not set
-# CONFIG_MCPM is not set
-# CONFIG_MD is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MDIO_BUS_MUX_GPIO is not set
-# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
-# CONFIG_MD_FAULTY is not set
-# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
-# CONFIG_MEDIA_ATTACH is not set
-# CONFIG_MEDIA_CAMERA_SUPPORT is not set
-# CONFIG_MEDIA_CONTROLLER is not set
-# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
-# CONFIG_MEDIA_PCI_SUPPORT is not set
-# CONFIG_MEDIA_RADIO_SUPPORT is not set
-# CONFIG_MEDIA_RC_SUPPORT is not set
-# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
-# CONFIG_MEDIA_SUPPORT is not set
-# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-# CONFIG_MEDIA_USB_SUPPORT is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_MEMORY is not set
-# CONFIG_MEMORY_FAILURE is not set
-# CONFIG_MEMSTICK is not set
-# CONFIG_MEN_A21_WDT is not set
-# CONFIG_MFD_88PM800 is not set
-# CONFIG_MFD_88PM805 is not set
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-# CONFIG_MFD_ARIZONA_I2C is not set
-# CONFIG_MFD_ARIZONA_SPI is not set
-# CONFIG_MFD_AS3711 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_CROS_EC is not set
-# CONFIG_MFD_CS5535 is not set
-# CONFIG_MFD_DA9052_I2C is not set
-# CONFIG_MFD_DA9052_SPI is not set
-# CONFIG_MFD_DA9055 is not set
-# CONFIG_MFD_DA9063 is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-# CONFIG_MFD_KEMPLD is not set
-# CONFIG_MFD_LM3533 is not set
-# CONFIG_MFD_LP8788 is not set
-# CONFIG_MFD_MAX77686 is not set
-# CONFIG_MFD_MAX77693 is not set
-# CONFIG_MFD_MAX8907 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_MC13783 is not set
-# CONFIG_MFD_MC13XXX is not set
-# CONFIG_MFD_MC13XXX_I2C is not set
-# CONFIG_MFD_MC13XXX_SPI is not set
-# CONFIG_MFD_OMAP_USB_HOST is not set
-# CONFIG_MFD_PALMAS is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_RC5T583 is not set
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_RETU is not set
-# CONFIG_MFD_RTSX_PCI is not set
-# CONFIG_MFD_S5M_CORE is not set
-# CONFIG_MFD_SEC_CORE is not set
-# CONFIG_MFD_SI476X_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_SMSC is not set
-# CONFIG_MFD_STMPE is not set
-CONFIG_MFD_SUPPORT=y
-# CONFIG_MFD_SYSCON is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_MFD_TIMBERDALE is not set
-# CONFIG_MFD_TI_AM335X_TSCADC is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_TPS65090 is not set
-# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-# CONFIG_MFD_TPS80031 is not set
-# CONFIG_MFD_VIPERBOARD is not set
-# CONFIG_MFD_VX855 is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_WM831X is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MG_DISK is not set
-# CONFIG_MICREL_KS8995MA is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_MIGRATION is not set
-CONFIG_MII=y
-# CONFIG_MIKROTIK_RB532 is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_MIPS_ALCHEMY is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MIPS_FPU_EMU is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_SEAD3 is not set
-# CONFIG_MIPS_SIM is not set
-CONFIG_MISC_DEVICES=y
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_MISDN is not set
-# CONFIG_MISDN_AVMFRITZ is not set
-# CONFIG_MISDN_HFCPCI is not set
-# CONFIG_MISDN_HFCUSB is not set
-# CONFIG_MISDN_INFINEON is not set
-# CONFIG_MISDN_NETJET is not set
-# CONFIG_MISDN_SPEEDFAX is not set
-# CONFIG_MISDN_W6692 is not set
-# CONFIG_MKISS is not set
-# CONFIG_MLX4_CORE is not set
-# CONFIG_MLX4_EN is not set
-# CONFIG_MMC is not set
-# CONFIG_MMC_ARMMMCI is not set
-# CONFIG_MMC_AU1X is not set
-# CONFIG_MMC_BLOCK is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_MMC_BLOCK_MINORS=8
-# CONFIG_MMC_CB710 is not set
-# CONFIG_MMC_CLKGATE is not set
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_MVSDIO is not set
-# CONFIG_MMC_S3C is not set
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_SDHCI_ACPI is not set
-# CONFIG_MMC_SDHCI_OF_ESDHC is not set
-# CONFIG_MMC_SDHCI_OF_HLWD is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDRICOH_CS is not set
-# CONFIG_MMC_SPI is not set
-# CONFIG_MMC_TEST is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MMC_VIA_SDMMC is not set
-# CONFIG_MMC_VUB300 is not set
-CONFIG_MMU=y
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODULE_SIG is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_MODULE_STRIPPED=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_MOUSE_SYNAPTICS_USB is not set
-# CONFIG_MSDOS_FS is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_MSI_BITMAP_SELFTEST is not set
-# CONFIG_MSI_LAPTOP is not set
-CONFIG_MTD=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_AFS_PARTS is not set
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_AR7_PARTS is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_MTD_BLOCK2MTD is not set
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-CONFIG_MTD_CHAR=y
-# CONFIG_MTD_CMDLINE_PARTS is not set
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_GPIO_ADDR is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_JEDECPROBE is not set
-# CONFIG_MTD_LATCH_ADDR is not set
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_M25P80 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_MYLOADER_PARTS is not set
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_NAND_AMS_DELTA is not set
-# CONFIG_MTD_NAND_AR934X is not set
-# CONFIG_MTD_NAND_AR934X_HW_ECC is not set
-# CONFIG_MTD_NAND_ATMEL is not set
-# CONFIG_MTD_NAND_AU1550 is not set
-# CONFIG_MTD_NAND_AUTCPU12 is not set
-# CONFIG_MTD_NAND_BCH is not set
-# CONFIG_MTD_NAND_BCM_UMI is not set
-# CONFIG_MTD_NAND_BF5XX is not set
-# CONFIG_MTD_NAND_CAFE is not set
-# CONFIG_MTD_NAND_CM_X270 is not set
-# CONFIG_MTD_NAND_CS553X is not set
-# CONFIG_MTD_NAND_DAVINCI is not set
-# CONFIG_MTD_NAND_DENALI is not set
-CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xff108018
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_DOCG4 is not set
-# CONFIG_MTD_NAND_ECC is not set
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_FSL_ELBC is not set
-# CONFIG_MTD_NAND_FSL_IFC is not set
-# CONFIG_MTD_NAND_FSL_UPM is not set
-# CONFIG_MTD_NAND_FSMC is not set
-# CONFIG_MTD_NAND_GPIO is not set
-# CONFIG_MTD_NAND_GPMI_NAND is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_JZ4740 is not set
-# CONFIG_MTD_NAND_MPC5121_NFC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-# CONFIG_MTD_NAND_MXC is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_NDFC is not set
-# CONFIG_MTD_NAND_NOMADIK is not set
-# CONFIG_MTD_NAND_NUC900 is not set
-# CONFIG_MTD_NAND_OMAP2 is not set
-# CONFIG_MTD_NAND_ORION is not set
-# CONFIG_MTD_NAND_PASEMI is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_NAND_PPCHAMELEONEVB is not set
-# CONFIG_MTD_NAND_PXA3xx is not set
-# CONFIG_MTD_NAND_RB4XX is not set
-# CONFIG_MTD_NAND_RB750 is not set
-# CONFIG_MTD_NAND_RICOH is not set
-# CONFIG_MTD_NAND_RTC_FROM4 is not set
-# CONFIG_MTD_NAND_S3C2410 is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_SH_FLCTL is not set
-# CONFIG_MTD_NAND_SOCRATES is not set
-# CONFIG_MTD_NAND_SPIA is not set
-# CONFIG_MTD_NAND_TMIO is not set
-# CONFIG_MTD_NAND_TXX9NDFMC is not set
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-CONFIG_MTD_OF_PARTS=y
-# CONFIG_MTD_ONENAND is not set
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_OTP is not set
-# CONFIG_MTD_PCI is not set
-# CONFIG_MTD_PCMCIA is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-CONFIG_MTD_PHYSMAP_OF=y
-# CONFIG_MTD_PLATRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
-# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
-# CONFIG_MTD_ROM is not set
-CONFIG_MTD_ROOTFS_ROOT_DEV=y
-CONFIG_MTD_ROOTFS_SPLIT=y
-# CONFIG_MTD_SLRAM is not set
-CONFIG_MTD_SPLIT=y
-# CONFIG_MTD_SPLIT_FIRMWARE is not set
-CONFIG_MTD_SPLIT_FIRMWARE_NAME="firmware"
-# CONFIG_MTD_SPLIT_LZMA_FW is not set
-# CONFIG_MTD_SPLIT_SEAMA_FW is not set
-# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set
-# CONFIG_MTD_SPLIT_UIMAGE_FW is not set
-# CONFIG_MTD_SST25L is not set
-# CONFIG_MTD_SWAP is not set
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_UBI is not set
-# CONFIG_MTD_UIMAGE_SPLIT is not set
-# CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_MV643XX_ETH is not set
-# CONFIG_MVMDIO is not set
-# CONFIG_MVSWITCH_PHY is not set
-# CONFIG_MWAVE is not set
-# CONFIG_MWL8K is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NAMESPACES is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NAU7802 is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NE2000 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_NEC_MARKEINS is not set
-CONFIG_NET=y
-# CONFIG_NETCONSOLE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_NETFILTER_ADVANCED is not set
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_NETLINK_ACCT is not set
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-# CONFIG_NETFILTER_NETLINK_QUEUE is not set
-# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set
-# CONFIG_NETFILTER_TPROXY is not set
-# CONFIG_NETFILTER_XTABLES is not set
-# CONFIG_NETFILTER_XT_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_BPF is not set
-# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-# CONFIG_NETFILTER_XT_MATCH_CPU is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ECN is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
-# CONFIG_NETFILTER_XT_MATCH_HL is not set
-# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
-# CONFIG_NETFILTER_XT_MATCH_LAYER7 is not set
-# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
-# CONFIG_NETFILTER_XT_MATCH_OSF is not set
-# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
-# CONFIG_NETFILTER_XT_MATCH_STATE is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
-# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_CT is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_HL is not set
-# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
-# CONFIG_NETFILTER_XT_TARGET_LED is not set
-# CONFIG_NETFILTER_XT_TARGET_LOG is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-# CONFIG_NETFILTER_XT_TARGET_TEE is not set
-# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETLINK_DIAG is not set
-# CONFIG_NETLINK_MMAP is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NETROM is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_NET_9P is not set
-# CONFIG_NET_ACT_CSUM is not set
-# CONFIG_NET_ACT_GACT is not set
-# CONFIG_NET_ACT_IPT is not set
-# CONFIG_NET_ACT_MIRRED is not set
-# CONFIG_NET_ACT_NAT is not set
-# CONFIG_NET_ACT_PEDIT is not set
-# CONFIG_NET_ACT_POLICE is not set
-# CONFIG_NET_ACT_SIMP is not set
-# CONFIG_NET_ACT_SKBEDIT is not set
-CONFIG_NET_CADENCE=y
-# CONFIG_NET_CALXEDA_XGMAC is not set
-CONFIG_NET_CLS=y
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_BASIC is not set
-# CONFIG_NET_CLS_FLOW is not set
-# CONFIG_NET_CLS_FW is not set
-CONFIG_NET_CLS_IND=y
-# CONFIG_NET_CLS_ROUTE4 is not set
-# CONFIG_NET_CLS_RSVP is not set
-# CONFIG_NET_CLS_RSVP6 is not set
-# CONFIG_NET_CLS_TCINDEX is not set
-# CONFIG_NET_CLS_U32 is not set
-CONFIG_NET_CORE=y
-# CONFIG_NET_DROP_MONITOR is not set
-# CONFIG_NET_DSA is not set
-# CONFIG_NET_DSA_MV88E6060 is not set
-# CONFIG_NET_DSA_MV88E6123_61_65 is not set
-# CONFIG_NET_DSA_MV88E6131 is not set
-# CONFIG_NET_DSA_MV88E6XXX is not set
-# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
-# CONFIG_NET_DSA_TAG_DSA is not set
-# CONFIG_NET_DSA_TAG_EDSA is not set
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_EMATCH_CMP is not set
-# CONFIG_NET_EMATCH_META is not set
-# CONFIG_NET_EMATCH_NBYTE is not set
-CONFIG_NET_EMATCH_STACK=32
-# CONFIG_NET_EMATCH_TEXT is not set
-# CONFIG_NET_EMATCH_U32 is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_NET_FC is not set
-# CONFIG_NET_IPGRE is not set
-CONFIG_NET_IPGRE_BROADCAST=y
-# CONFIG_NET_IPGRE_DEMUX is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPVTI is not set
-# CONFIG_NET_IP_TUNNEL is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_KEY is not set
-# CONFIG_NET_KEY_MIGRATE is not set
-# CONFIG_NET_MPLS_GSO is not set
-# CONFIG_NET_PACKET_ENGINE is not set
-CONFIG_NET_PCI=y
-# CONFIG_NET_PCMCIA is not set
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_NET_SB1000 is not set
-CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_ATM is not set
-# CONFIG_NET_SCH_CBQ is not set
-# CONFIG_NET_SCH_CHOKE is not set
-# CONFIG_NET_SCH_CODEL is not set
-# CONFIG_NET_SCH_DRR is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_ESFQ is not set
-CONFIG_NET_SCH_ESFQ_NFCT=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_NET_SCH_FQ is not set
-CONFIG_NET_SCH_FQ_CODEL=y
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_HFSC is not set
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_INGRESS is not set
-# CONFIG_NET_SCH_MQPRIO is not set
-# CONFIG_NET_SCH_MULTIQ is not set
-# CONFIG_NET_SCH_NETEM is not set
-# CONFIG_NET_SCH_PLUG is not set
-# CONFIG_NET_SCH_PRIO is not set
-# CONFIG_NET_SCH_QFQ is not set
-# CONFIG_NET_SCH_RED is not set
-# CONFIG_NET_SCH_SFB is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NET_TEAM is not set
-# CONFIG_NET_TULIP is not set
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_NET_VENDOR_8390=y
-CONFIG_NET_VENDOR_ADAPTEC=y
-CONFIG_NET_VENDOR_ALTEON=y
-CONFIG_NET_VENDOR_AMD=y
-CONFIG_NET_VENDOR_ARC=y
-CONFIG_NET_VENDOR_ATHEROS=y
-CONFIG_NET_VENDOR_BROADCOM=y
-CONFIG_NET_VENDOR_BROCADE=y
-CONFIG_NET_VENDOR_CHELSIO=y
-CONFIG_NET_VENDOR_CIRRUS=y
-CONFIG_NET_VENDOR_CISCO=y
-CONFIG_NET_VENDOR_DEC=y
-CONFIG_NET_VENDOR_DLINK=y
-CONFIG_NET_VENDOR_EMULEX=y
-CONFIG_NET_VENDOR_EXAR=y
-CONFIG_NET_VENDOR_FARADAY=y
-CONFIG_NET_VENDOR_FREESCALE=y
-CONFIG_NET_VENDOR_FUJITSU=y
-CONFIG_NET_VENDOR_HP=y
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_IBM=y
-CONFIG_NET_VENDOR_INTEL=y
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_NET_VENDOR_MELLANOX=y
-CONFIG_NET_VENDOR_MICREL=y
-CONFIG_NET_VENDOR_MICROCHIP=y
-CONFIG_NET_VENDOR_MYRI=y
-CONFIG_NET_VENDOR_NATSEMI=y
-CONFIG_NET_VENDOR_NVIDIA=y
-CONFIG_NET_VENDOR_OKI=y
-CONFIG_NET_VENDOR_QLOGIC=y
-CONFIG_NET_VENDOR_RDC=y
-CONFIG_NET_VENDOR_REALTEK=y
-CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_NET_VENDOR_SILAN=y
-CONFIG_NET_VENDOR_SILICOM=y
-CONFIG_NET_VENDOR_SIS=y
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_NET_VENDOR_STMICRO=y
-CONFIG_NET_VENDOR_SUN=y
-CONFIG_NET_VENDOR_TEHUTI=y
-CONFIG_NET_VENDOR_TI=y
-CONFIG_NET_VENDOR_TOSHIBA=y
-CONFIG_NET_VENDOR_VIA=y
-# CONFIG_NET_VENDOR_WIZNET is not set
-CONFIG_NET_VENDOR_XILINX=y
-CONFIG_NET_VENDOR_XIRCOM=y
-CONFIG_NEW_LEDS=y
-# CONFIG_NFC is not set
-# CONFIG_NFC_DEVICES is not set
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_DEPRECATED is not set
-# CONFIG_NFSD_V2_ACL is not set
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFS_ACL_SUPPORT is not set
-CONFIG_NFS_COMMON=y
-# CONFIG_NFS_FS is not set
-# CONFIG_NFS_FSCACHE is not set
-# CONFIG_NFS_SWAP is not set
-# CONFIG_NFS_V2 is not set
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_V4_1 is not set
-# CONFIG_NFTL is not set
-# CONFIG_NF_CONNTRACK is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-# CONFIG_NF_CONNTRACK_FTP is not set
-# CONFIG_NF_CONNTRACK_H323 is not set
-# CONFIG_NF_CONNTRACK_IPV4 is not set
-# CONFIG_NF_CONNTRACK_IPV6 is not set
-# CONFIG_NF_CONNTRACK_IRC is not set
-# CONFIG_NF_CONNTRACK_MARK is not set
-# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
-# CONFIG_NF_CONNTRACK_PPTP is not set
-CONFIG_NF_CONNTRACK_PROCFS=y
-# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
-# CONFIG_NF_CONNTRACK_RTSP is not set
-# CONFIG_NF_CONNTRACK_SANE is not set
-# CONFIG_NF_CONNTRACK_SIP is not set
-# CONFIG_NF_CONNTRACK_SNMP is not set
-# CONFIG_NF_CONNTRACK_TFTP is not set
-# CONFIG_NF_CONNTRACK_TIMEOUT is not set
-# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
-# CONFIG_NF_CONNTRACK_ZONES is not set
-# CONFIG_NF_CT_NETLINK is not set
-# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
-# CONFIG_NF_CT_PROTO_DCCP is not set
-# CONFIG_NF_CT_PROTO_GRE is not set
-# CONFIG_NF_CT_PROTO_SCTP is not set
-# CONFIG_NF_CT_PROTO_UDPLITE is not set
-# CONFIG_NF_DEFRAG_IPV4 is not set
-# CONFIG_NF_NAT is not set
-# CONFIG_NF_NAT_AMANDA is not set
-# CONFIG_NF_NAT_FTP is not set
-# CONFIG_NF_NAT_H323 is not set
-CONFIG_NF_NAT_IPV4=m
-# CONFIG_NF_NAT_IPV6 is not set
-# CONFIG_NF_NAT_IRC is not set
-# CONFIG_NF_NAT_NEEDED is not set
-# CONFIG_NF_NAT_PPTP is not set
-# CONFIG_NF_NAT_PROTO_GRE is not set
-# CONFIG_NF_NAT_RTSP is not set
-# CONFIG_NF_NAT_SIP is not set
-# CONFIG_NF_NAT_SNMP_BASIC is not set
-# CONFIG_NF_NAT_TFTP is not set
-# CONFIG_NI52 is not set
-# CONFIG_NI65 is not set
-# CONFIG_NILFS2_FS is not set
-# CONFIG_NIU is not set
-CONFIG_NLATTR=y
-# CONFIG_NLMON is not set
-# CONFIG_NLM_XLP_BOARD is not set
-# CONFIG_NLM_XLR_BOARD is not set
-# CONFIG_NLS is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_MAC_CELTIC is not set
-# CONFIG_NLS_MAC_CENTEURO is not set
-# CONFIG_NLS_MAC_CROATIAN is not set
-# CONFIG_NLS_MAC_CYRILLIC is not set
-# CONFIG_NLS_MAC_GAELIC is not set
-# CONFIG_NLS_MAC_GREEK is not set
-# CONFIG_NLS_MAC_ICELAND is not set
-# CONFIG_NLS_MAC_INUIT is not set
-# CONFIG_NLS_MAC_ROMAN is not set
-# CONFIG_NLS_MAC_ROMANIAN is not set
-# CONFIG_NLS_MAC_TURKISH is not set
-# CONFIG_NLS_UTF8 is not set
-# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_NORTEL_HERMES is not set
-# CONFIG_NOTIFIER_ERROR_INJECTION is not set
-# CONFIG_NOZOMI is not set
-# CONFIG_NO_BOOTMEM is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_NO_HZ_IDLE is not set
-# CONFIG_NO_IOPORT is not set
-# CONFIG_NS83820 is not set
-# CONFIG_NTFS_DEBUG is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_NTP_PPS is not set
-# CONFIG_NVRAM is not set
-# CONFIG_NV_TCO is not set
-# CONFIG_NXP_STB220 is not set
-# CONFIG_NXP_STB225 is not set
-# CONFIG_N_GSM is not set
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_OBS600 is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_OCF_BENCH is not set
-# CONFIG_OCF_C7108 is not set
-# CONFIG_OCF_CRYPTOCTEON is not set
-# CONFIG_OCF_EP80579 is not set
-# CONFIG_OCF_HIFN is not set
-# CONFIG_OCF_HIFNHIPP is not set
-# CONFIG_OCF_IXP4XX is not set
-# CONFIG_OCF_KIRKWOOD is not set
-# CONFIG_OCF_OCF is not set
-# CONFIG_OCF_OCFNULL is not set
-# CONFIG_OCF_SAFE is not set
-# CONFIG_OCF_TALITOS is not set
-# CONFIG_OCF_UBSEC_SSB is not set
-# CONFIG_OC_ETM is not set
-# CONFIG_OF_SELFTEST is not set
-# CONFIG_OMAP2_DSS_DEBUG is not set
-# CONFIG_OMAP2_DSS_DEBUGFS is not set
-# CONFIG_OMAP2_DSS_SDI is not set
-# CONFIG_OMAP_CONTROL_USB is not set
-# CONFIG_OMAP_OCP2SCP is not set
-# CONFIG_OMAP_USB2 is not set
-# CONFIG_OMAP_USB3 is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_OPENVSWITCH is not set
-# CONFIG_ORION_WATCHDOG is not set
-# CONFIG_OSF_PARTITION is not set
-CONFIG_OVERLAYFS_FS=y
-# CONFIG_P54_COMMON is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_DIAG is not set
-# CONFIG_PAGE_POISONING is not set
-# CONFIG_PAGE_SIZE_16KB is not set
-# CONFIG_PAGE_SIZE_32KB is not set
-CONFIG_PAGE_SIZE_4KB=y
-# CONFIG_PAGE_SIZE_64KB is not set
-# CONFIG_PAGE_SIZE_8KB is not set
-# CONFIG_PANEL is not set
-# CONFIG_PANIC_ON_OOPS is not set
-CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_PANTHERLORD_FF is not set
-# CONFIG_PARPORT is not set
-# CONFIG_PARPORT_1284 is not set
-# CONFIG_PARPORT_AX88796 is not set
-# CONFIG_PARPORT_PC is not set
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_PATA_ALI is not set
-# CONFIG_PATA_AMD is not set
-# CONFIG_PATA_ARASAN_CF is not set
-# CONFIG_PATA_ARTOP is not set
-# CONFIG_PATA_ATIIXP is not set
-# CONFIG_PATA_ATP867X is not set
-# CONFIG_PATA_CMD640_PCI is not set
-# CONFIG_PATA_CMD64X is not set
-# CONFIG_PATA_CS5520 is not set
-# CONFIG_PATA_CS5530 is not set
-# CONFIG_PATA_CS5535 is not set
-# CONFIG_PATA_CS5536 is not set
-# CONFIG_PATA_CYPRESS is not set
-# CONFIG_PATA_EFAR is not set
-# CONFIG_PATA_HPT366 is not set
-# CONFIG_PATA_HPT37X is not set
-# CONFIG_PATA_HPT3X2N is not set
-# CONFIG_PATA_HPT3X3 is not set
-# CONFIG_PATA_ISAPNP is not set
-# CONFIG_PATA_IT8213 is not set
-# CONFIG_PATA_IT821X is not set
-# CONFIG_PATA_JMICRON is not set
-# CONFIG_PATA_LEGACY is not set
-# CONFIG_PATA_MARVELL is not set
-# CONFIG_PATA_MPIIX is not set
-# CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NINJA32 is not set
-# CONFIG_PATA_NS87410 is not set
-# CONFIG_PATA_NS87415 is not set
-# CONFIG_PATA_OF_PLATFORM is not set
-# CONFIG_PATA_OLDPIIX is not set
-# CONFIG_PATA_OPTI is not set
-# CONFIG_PATA_OPTIDMA is not set
-# CONFIG_PATA_PCMCIA is not set
-# CONFIG_PATA_PDC2027X is not set
-# CONFIG_PATA_PDC_OLD is not set
-# CONFIG_PATA_PLATFORM is not set
-# CONFIG_PATA_QDI is not set
-# CONFIG_PATA_RADISYS is not set
-# CONFIG_PATA_RDC is not set
-# CONFIG_PATA_RZ1000 is not set
-# CONFIG_PATA_SC1200 is not set
-# CONFIG_PATA_SCH is not set
-# CONFIG_PATA_SERVERWORKS is not set
-# CONFIG_PATA_SIL680 is not set
-# CONFIG_PATA_SIS is not set
-# CONFIG_PATA_TOSHIBA is not set
-# CONFIG_PATA_TRIFLEX is not set
-# CONFIG_PATA_VIA is not set
-# CONFIG_PATA_WINBOND is not set
-# CONFIG_PATA_WINBOND_VLB is not set
-# CONFIG_PC300TOO is not set
-# CONFIG_PCCARD is not set
-# CONFIG_PCH_GBE is not set
-# CONFIG_PCH_PHUB is not set
-# CONFIG_PCI200SYN is not set
-# CONFIG_PCIEAER_INJECT is not set
-# CONFIG_PCIEASPM is not set
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCIE_ECRC is not set
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_PCI_ATMEL is not set
-# CONFIG_PCI_CNB20LE_QUIRK is not set
-# CONFIG_PCI_DEBUG is not set
-# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set
-# CONFIG_PCI_HERMES is not set
-# CONFIG_PCI_IOV is not set
-# CONFIG_PCI_MSI is not set
-# CONFIG_PCI_PASID is not set
-# CONFIG_PCI_PRI is not set
-CONFIG_PCI_QUIRKS=y
-# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
-# CONFIG_PCI_STUB is not set
-CONFIG_PCI_SYSCALL=y
-# CONFIG_PCMCIA is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_ATMEL is not set
-# CONFIG_PCMCIA_AXNET is not set
-# CONFIG_PCMCIA_DEBUG is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-# CONFIG_PCMCIA_HERMES is not set
-# CONFIG_PCMCIA_LOAD_CIS is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_PCNET is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_SPECTRUM is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_XIRCOM is not set
-# CONFIG_PCNET32 is not set
-# CONFIG_PCSPKR_PLATFORM is not set
-# CONFIG_PD6729 is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_PDC_ADMA is not set
-# CONFIG_PERF_COUNTERS is not set
-# CONFIG_PERF_EVENTS is not set
-# CONFIG_PHANTOM is not set
-# CONFIG_PHONE is not set
-# CONFIG_PHONET is not set
-# CONFIG_PHYLIB is not set
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-# CONFIG_PID_IN_CONTEXTIDR is not set
-# CONFIG_PID_NS is not set
-CONFIG_PINCONF=y
-# CONFIG_PINCTRL is not set
-# CONFIG_PINCTRL_EXYNOS is not set
-# CONFIG_PINCTRL_EXYNOS5440 is not set
-CONFIG_PINCTRL_SINGLE=y
-CONFIG_PINMUX=y
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_PLIP is not set
-# CONFIG_PLX_HERMES is not set
-# CONFIG_PM is not set
-# CONFIG_PMBUS is not set
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_AUTOSLEEP is not set
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_PM_RUNTIME is not set
-# CONFIG_PM_WAKELOCKS is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_POHMELFS is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_POWERTV is not set
-# CONFIG_POWER_AVS is not set
-# CONFIG_POWER_RESET is not set
-# CONFIG_POWER_RESET_RESTART is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PPC4xx_GPIO is not set
-# CONFIG_PPC_16K_PAGES is not set
-# CONFIG_PPC_256K_PAGES is not set
-CONFIG_PPC_4K_PAGES=y
-# CONFIG_PPC_64K_PAGES is not set
-# CONFIG_PPC_DISABLE_WERROR is not set
-# CONFIG_PPC_EMULATED_STATS is not set
-# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set
-# CONFIG_PPP is not set
-# CONFIG_PPPOATM is not set
-# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
-# CONFIG_PPP_ASYNC is not set
-# CONFIG_PPP_BSDCOMP is not set
-# CONFIG_PPP_DEFLATE is not set
-CONFIG_PPP_FILTER=y
-# CONFIG_PPP_MPPE is not set
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPS is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
-# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_PARPORT is not set
-# CONFIG_PPS_DEBUG is not set
-# CONFIG_PPTP is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_PRINTK=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_PRINT_STACK_DEPTH=64
-# CONFIG_PRISM2_USB is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_PROBE_INITRD_HEADER is not set
-# CONFIG_PROC_DEVICETREE is not set
-CONFIG_PROC_FS=y
-# CONFIG_PROC_KCORE is not set
-# CONFIG_PROC_PAGE_MONITOR is not set
-CONFIG_PROC_STRIPPED=y
-CONFIG_PROC_SYSCTL=y
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILING is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_PROVE_RCU is not set
-# CONFIG_PROVE_RCU_DELAY is not set
-# CONFIG_PSB6970_PHY is not set
-# CONFIG_PSTORE is not set
-# CONFIG_PTP_1588_CLOCK is not set
-# CONFIG_PTP_1588_CLOCK_IXP46X is not set
-# CONFIG_PTP_1588_CLOCK_PCH is not set
-# CONFIG_PWM is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_QLCNIC is not set
-# CONFIG_QLGE is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX6FS_FS is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_QUOTACTL is not set
-# CONFIG_QUOTA_DEBUG is not set
-# CONFIG_R3964 is not set
-# CONFIG_R6040 is not set
-# CONFIG_R8169 is not set
-# CONFIG_R8187SE is not set
-# CONFIG_R8188EU is not set
-# CONFIG_R8712U is not set
-# CONFIG_RADIO_ADAPTERS is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_RALINK is not set
-# CONFIG_RAMOOPS is not set
-# CONFIG_RAPIDIO is not set
-# CONFIG_RAR_REGISTER is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_RBTREE_TEST is not set
-# CONFIG_RCU_CPU_STALL_INFO is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FAST_NO_HZ is not set
-# CONFIG_RCU_NOCB_CPU is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_RCU_USER_QS is not set
-# CONFIG_RC_CORE is not set
-# CONFIG_RC_MAP is not set
-# CONFIG_RDS is not set
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_GZIP is not set
-# CONFIG_RD_LZ4 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_LZO is not set
-# CONFIG_RD_XZ is not set
-# CONFIG_READABLE_ASM is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_REDWOOD is not set
-# CONFIG_REGMAP is not set
-# CONFIG_REGMAP_I2C is not set
-# CONFIG_REGMAP_SPI is not set
-# CONFIG_REGULATOR is not set
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_BQ24022 is not set
-# CONFIG_REGULATOR_DA9210 is not set
-# CONFIG_REGULATOR_FAN53555 is not set
-# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
-# CONFIG_REGULATOR_GPIO is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_LP872X is not set
-# CONFIG_REGULATOR_LP8755 is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_MAX8973 is not set
-# CONFIG_REGULATOR_PFUZE100 is not set
-# CONFIG_REGULATOR_TI_ABB is not set
-# CONFIG_REGULATOR_TPS51632 is not set
-# CONFIG_REGULATOR_TPS62360 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_FS_XATTR is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-# CONFIG_RELAY is not set
-# CONFIG_RESET_CONTROLLER is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_RFKILL is not set
-# CONFIG_RFKILL_INPUT is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_RING_BUFFER_STARTUP_TEST is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_ROSE is not set
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTC_CLASS is not set
-# CONFIG_RTC_DEBUG is not set
-# CONFIG_RTC_DRV_AU1XXX is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-CONFIG_RTC_DRV_CMOS=y
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1305 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1390 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_DS2404 is not set
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_DS3234 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_EP93XX is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_GENERIC is not set
-# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-# CONFIG_RTC_DRV_M41T93 is not set
-# CONFIG_RTC_DRV_M41T94 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_MOXART is not set
-# CONFIG_RTC_DRV_MPC5121 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_OMAP is not set
-# CONFIG_RTC_DRV_PCF2123 is not set
-# CONFIG_RTC_DRV_PCF2127 is not set
-# CONFIG_RTC_DRV_PCF8523 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_PL030 is not set
-# CONFIG_RTC_DRV_PL031 is not set
-# CONFIG_RTC_DRV_PS3 is not set
-# CONFIG_RTC_DRV_PT7C4338 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_RTC7301 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-# CONFIG_RTC_DRV_RX4581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_SNVS is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_LIB=y
-CONFIG_RTC_SYSTOHC=y
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_RTL8192E is not set
-# CONFIG_RTL8192U is not set
-# CONFIG_RTL8306_PHY is not set
-# CONFIG_RTL8366RB_PHY is not set
-# CONFIG_RTL8366S_PHY is not set
-# CONFIG_RTL8366_SMI is not set
-# CONFIG_RTL8366_SMI_DEBUG_FS is not set
-# CONFIG_RTL8367B_PHY is not set
-# CONFIG_RTL8367_PHY is not set
-# CONFIG_RTLLIB is not set
-# CONFIG_RTL_CARDS is not set
-# CONFIG_RTS5139 is not set
-# CONFIG_RTS_PSTOR is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_RUNTIME_DEBUG is not set
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_S2IO is not set
-# CONFIG_SAMPLES is not set
-# CONFIG_SAMSUNG_LAPTOP is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
-# CONFIG_SATA_ACARD_AHCI is not set
-# CONFIG_SATA_AHCI is not set
-# CONFIG_SATA_AHCI_PLATFORM is not set
-# CONFIG_SATA_DWC is not set
-# CONFIG_SATA_FSL is not set
-# CONFIG_SATA_HIGHBANK is not set
-# CONFIG_SATA_INIC162X is not set
-# CONFIG_SATA_MV is not set
-# CONFIG_SATA_NV is not set
-# CONFIG_SATA_PMP is not set
-# CONFIG_SATA_PROMISE is not set
-# CONFIG_SATA_QSTOR is not set
-# CONFIG_SATA_SIL is not set
-# CONFIG_SATA_SIL24 is not set
-# CONFIG_SATA_SIS is not set
-# CONFIG_SATA_SVW is not set
-# CONFIG_SATA_SX4 is not set
-# CONFIG_SATA_ULI is not set
-# CONFIG_SATA_VIA is not set
-# CONFIG_SATA_VITESSE is not set
-# CONFIG_SBC_FITPC2_WATCHDOG is not set
-# CONFIG_SBE_2T3E3 is not set
-# CONFIG_SBYPASS is not set
-# CONFIG_SC92031 is not set
-# CONFIG_SCA3000 is not set
-# CONFIG_SCC is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHED_MC is not set
-CONFIG_SCHED_OMIT_FRAME_POINTER=y
-# CONFIG_SCHED_SMT is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_3W_SAS is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_SCSI_BFA_FC is not set
-# CONFIG_SCSI_BNX2X_FCOE is not set
-# CONFIG_SCSI_BNX2_ISCSI is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_CHELSIO_FCOE is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_CXGB3_ISCSI is not set
-# CONFIG_SCSI_CXGB4_ISCSI is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_DH is not set
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_ESAS2R is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_HPSA is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_ISCI is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_LOWLEVEL=y
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_SCSI_LPFC is not set
-CONFIG_SCSI_MOD=y
-# CONFIG_SCSI_MPT2SAS is not set
-# CONFIG_SCSI_MPT3SAS is not set
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_MVSAS is not set
-# CONFIG_SCSI_MVSAS_DEBUG is not set
-# CONFIG_SCSI_MVUMI is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PM8001 is not set
-# CONFIG_SCSI_PMCRAID is not set
-CONFIG_SCSI_PROC_FS=y
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_UFSHCD is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-CONFIG_SCSI_WAIT_SCAN=m
-# CONFIG_SDIO_UART is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_SECURITY is not set
-# CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SEEQ8005 is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-# CONFIG_SENSORS_ACPI_POWER is not set
-# CONFIG_SENSORS_AD7314 is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_ADS7871 is not set
-# CONFIG_SENSORS_ADT7310 is not set
-# CONFIG_SENSORS_ADT7410 is not set
-# CONFIG_SENSORS_ADT7411 is not set
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7475 is not set
-# CONFIG_SENSORS_AMC6821 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_SENSORS_APPLESMC is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ASC7621 is not set
-# CONFIG_SENSORS_ATK0110 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_CORETEMP is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_DS620 is not set
-# CONFIG_SENSORS_EMC1403 is not set
-# CONFIG_SENSORS_EMC2103 is not set
-# CONFIG_SENSORS_EMC6W201 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_FAM15H_POWER is not set
-# CONFIG_SENSORS_FSCHMD is not set
-# CONFIG_SENSORS_G760A is not set
-# CONFIG_SENSORS_G762 is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_GPIO_FAN is not set
-# CONFIG_SENSORS_GSC is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_SENSORS_HIH6130 is not set
-# CONFIG_SENSORS_HMC5843 is not set
-# CONFIG_SENSORS_HTU21 is not set
-# CONFIG_SENSORS_I5K_AMB is not set
-# CONFIG_SENSORS_IIO_HWMON is not set
-# CONFIG_SENSORS_INA209 is not set
-# CONFIG_SENSORS_INA2XX is not set
-# CONFIG_SENSORS_ISL29018 is not set
-# CONFIG_SENSORS_ISL29028 is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_JC42 is not set
-# CONFIG_SENSORS_K10TEMP is not set
-# CONFIG_SENSORS_K8TEMP is not set
-# CONFIG_SENSORS_LINEAGE is not set
-# CONFIG_SENSORS_LIS3LV02D is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-# CONFIG_SENSORS_LIS3_SPI is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM73 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_LM95234 is not set
-# CONFIG_SENSORS_LM95241 is not set
-# CONFIG_SENSORS_LM95245 is not set
-# CONFIG_SENSORS_LTC4151 is not set
-# CONFIG_SENSORS_LTC4215 is not set
-# CONFIG_SENSORS_LTC4245 is not set
-# CONFIG_SENSORS_LTC4261 is not set
-# CONFIG_SENSORS_MAX1111 is not set
-# CONFIG_SENSORS_MAX16065 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX1668 is not set
-# CONFIG_SENSORS_MAX197 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_MAX6697 is not set
-# CONFIG_SENSORS_MCP3021 is not set
-# CONFIG_SENSORS_NCT6775 is not set
-# CONFIG_SENSORS_NTC_THERMISTOR is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SHT15 is not set
-# CONFIG_SENSORS_SHT21 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_SMM665 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_TMP102 is not set
-# CONFIG_SENSORS_TMP401 is not set
-# CONFIG_SENSORS_TMP421 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_TSL2563 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VIA_CPUTEMP is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83795 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_ACCENT is not set
-# CONFIG_SERIAL_8250_BOCA is not set
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_CS is not set
-# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-CONFIG_SERIAL_8250_DMA=y
-# CONFIG_SERIAL_8250_DW is not set
-# CONFIG_SERIAL_8250_EM is not set
-# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SERIAL_8250_FOURPORT is not set
-# CONFIG_SERIAL_8250_HUB6 is not set
-# CONFIG_SERIAL_8250_MANY_PORTS is not set
-CONFIG_SERIAL_8250_NR_UARTS=2
-# CONFIG_SERIAL_8250_PCI is not set
-# CONFIG_SERIAL_8250_RSA is not set
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_SERIAL_8250_SYSRQ is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_ARC is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_FSL_LPUART is not set
-# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_JSM is not set
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX3107 is not set
-# CONFIG_SERIAL_MAX310X is not set
-# CONFIG_SERIAL_MFD_HSU is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_OF_PLATFORM is not set
-# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
-# CONFIG_SERIAL_PCH_UART is not set
-# CONFIG_SERIAL_RP2 is not set
-# CONFIG_SERIAL_SCCNXP is not set
-# CONFIG_SERIAL_ST_ASC is not set
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_UARTLITE is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_SERIO is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_AMBAKMI is not set
-# CONFIG_SERIO_ARC_PS2 is not set
-# CONFIG_SERIO_I8042 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SFC is not set
-# CONFIG_SFI is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SGI_PARTITION is not set
-CONFIG_SHMEM=y
-# CONFIG_SH_ETH is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-# CONFIG_SIGMA is not set
-CONFIG_SIGNALFD=y
-# CONFIG_SIMPLE_GPIO is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_SLAB=y
-CONFIG_SLABINFO=y
-# CONFIG_SLHC is not set
-# CONFIG_SLICOSS is not set
-# CONFIG_SLIP is not set
-# CONFIG_SLOB is not set
-# CONFIG_SLUB is not set
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_SLUB_STATS is not set
-# CONFIG_SMARTJOYPLUS_FF is not set
-# CONFIG_SMC911X is not set
-# CONFIG_SMC9194 is not set
-# CONFIG_SMC91X is not set
-# CONFIG_SMP is not set
-# CONFIG_SMSC911X is not set
-# CONFIG_SMSC9420 is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_SM_FTL is not set
-# CONFIG_SND is not set
-# CONFIG_SND_AC97_POWER_SAVE is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ARM is not set
-# CONFIG_SND_ASIHPI is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_ATMEL_AC97C is not set
-# CONFIG_SND_ATMEL_SOC is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AW2 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_CTXFI is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_DEBUG is not set
-# CONFIG_SND_DESIGNWARE_I2S is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FIREWIRE is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_HWDEP is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_INDIGODJX is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGOIOX is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_ISA is not set
-# CONFIG_SND_KIRKWOOD_SOC is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_LOLA is not set
-# CONFIG_SND_LX6464ES is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_MIPS is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MPC52xx_SOC_EFIKA is not set
-# CONFIG_SND_MPU401 is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_MTS64 is not set
-# CONFIG_SND_MXS_SOC is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-CONFIG_SND_OSSEMUL=y
-# CONFIG_SND_OXYGEN is not set
-CONFIG_SND_PCI=y
-# CONFIG_SND_PCM is not set
-# CONFIG_SND_PCMCIA is not set
-# CONFIG_SND_PCM_OSS is not set
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_PDAUDIOCF is not set
-# CONFIG_SND_PORTMAN2X4 is not set
-# CONFIG_SND_POWERPC_SOC is not set
-# CONFIG_SND_PPC is not set
-# CONFIG_SND_RAWMIDI is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_RTCTIMER is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_SIMPLE_CARD is not set
-# CONFIG_SND_SIS7019 is not set
-# CONFIG_SND_SOC is not set
-# CONFIG_SND_SOC_AU1XAUDIO is not set
-# CONFIG_SND_SOC_AU1XPSC is not set
-# CONFIG_SND_SOC_CACHE_LZO is not set
-# CONFIG_SND_SOC_IMX_SPDIF is not set
-# CONFIG_SND_SOC_IMX_WM8962 is not set
-# CONFIG_SND_SOC_MPC5200_AC97 is not set
-# CONFIG_SND_SOC_MPC5200_I2S is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_SPI is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_SUPPORT_OLD_API is not set
-# CONFIG_SND_TIMER is not set
-# CONFIG_SND_TRIDENT is not set
-CONFIG_SND_USB=y
-# CONFIG_SND_USB_6FIRE is not set
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_HIFACE is not set
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_US122L is not set
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_VERBOSE_PRINTK is not set
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VIRTUOSO is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_WAVEFRONT is not set
-# CONFIG_SND_YMFPCI is not set
-# CONFIG_SNI_RM is not set
-# CONFIG_SOC_AM33XX is not set
-# CONFIG_SOC_AM43XX is not set
-# CONFIG_SOC_CAMERA is not set
-# CONFIG_SOC_DRA7XX is not set
-# CONFIG_SOC_HAS_OMAP2_SDRC is not set
-# CONFIG_SOC_OMAP5 is not set
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_SOLO6X10 is not set
-# CONFIG_SONYPI is not set
-# CONFIG_SONY_LAPTOP is not set
-# CONFIG_SOUND is not set
-# CONFIG_SOUND_PRIME is not set
-# CONFIG_SP5100_TCO is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-# CONFIG_SPARSE_IRQ is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_SPEAKUP is not set
-# CONFIG_SPI is not set
-# CONFIG_SPINLOCK_TEST is not set
-# CONFIG_SPI_ALTERA is not set
-# CONFIG_SPI_AU1550 is not set
-# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_BUTTERFLY is not set
-# CONFIG_SPI_DEBUG is not set
-# CONFIG_SPI_DESIGNWARE is not set
-# CONFIG_SPI_FSL_DSPI is not set
-# CONFIG_SPI_FSL_ESPI is not set
-# CONFIG_SPI_FSL_SPI is not set
-# CONFIG_SPI_GPIO is not set
-# CONFIG_SPI_GPIO_OLD is not set
-# CONFIG_SPI_LM70_LLP is not set
-# CONFIG_SPI_MASTER is not set
-# CONFIG_SPI_MPC52xx is not set
-# CONFIG_SPI_MPC52xx_PSC is not set
-# CONFIG_SPI_OC_TINY is not set
-# CONFIG_SPI_ORION is not set
-# CONFIG_SPI_PL022 is not set
-# CONFIG_SPI_PPC4xx is not set
-# CONFIG_SPI_PXA2XX is not set
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_RAMIPS is not set
-# CONFIG_SPI_SC18IS602 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TI_QSPI is not set
-# CONFIG_SPI_TLE62X0 is not set
-# CONFIG_SPI_TOPCLIFF_PCH is not set
-# CONFIG_SPI_XCOMM is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_XWAY is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_SQUASHFS=y
-# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_LZO is not set
-# CONFIG_SQUASHFS_XATTR is not set
-CONFIG_SQUASHFS_XZ=y
-# CONFIG_SQUASHFS_ZLIB is not set
-# CONFIG_SRAM is not set
-# CONFIG_SSB is not set
-# CONFIG_SSBI is not set
-# CONFIG_SSB_DEBUG is not set
-# CONFIG_SSB_DRIVER_GPIO is not set
-# CONFIG_SSB_PCMCIAHOST is not set
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB_SDIOHOST is not set
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSFDC is not set
-CONFIG_STACKTRACE_SUPPORT=y
-# CONFIG_STACK_TRACER is not set
-CONFIG_STAGING=y
-# CONFIG_STAGING_MEDIA is not set
-CONFIG_STANDALONE=y
-CONFIG_STDBINUTILS=y
-# CONFIG_STE10XP is not set
-# CONFIG_STE_MODEM_RPROC is not set
-# CONFIG_STMMAC_ETH is not set
-CONFIG_STP=y
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_STRIP_ASM_SYMS=y
-# CONFIG_STUB_POULSBO is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_SUNRPC is not set
-# CONFIG_SUNRPC_DEBUG is not set
-# CONFIG_SUNRPC_GSS is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_SUSPEND is not set
-CONFIG_SWAP=y
-# CONFIG_SWCONFIG is not set
-# CONFIG_SWCONFIG_LEDS is not set
-# CONFIG_SYNCLINK_CS is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_SYSCTL=y
-# CONFIG_SYSCTL_SYSCALL is not set
-# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-CONFIG_SYSFS=y
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_TARGET_CORE is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_TC35815 is not set
-# CONFIG_TCG_TPM is not set
-# CONFIG_TCIC is not set
-CONFIG_TCP_CONG_ADVANCED=y
-# CONFIG_TCP_CONG_BIC is not set
-CONFIG_TCP_CONG_CUBIC=y
-# CONFIG_TCP_CONG_HSTCP is not set
-# CONFIG_TCP_CONG_HTCP is not set
-# CONFIG_TCP_CONG_HYBLA is not set
-# CONFIG_TCP_CONG_ILLINOIS is not set
-# CONFIG_TCP_CONG_LP is not set
-# CONFIG_TCP_CONG_SCALABLE is not set
-# CONFIG_TCP_CONG_VEGAS is not set
-# CONFIG_TCP_CONG_VENO is not set
-# CONFIG_TCP_CONG_WESTWOOD is not set
-# CONFIG_TCP_CONG_YEAH is not set
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_TEGRA_HOST1X is not set
-# CONFIG_TEHUTI is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-CONFIG_TEXTSEARCH=y
-# CONFIG_TEXTSEARCH_BM is not set
-# CONFIG_TEXTSEARCH_FSM is not set
-# CONFIG_TEXTSEARCH_KMP is not set
-# CONFIG_THERMAL is not set
-# CONFIG_THERMAL_HWMON is not set
-# CONFIG_THRUSTMASTER_FF is not set
-# CONFIG_TICK_CPU_ACCOUNTING is not set
-CONFIG_TICK_ONESHOT=y
-# CONFIG_TIFM_CORE is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_TIMB_DMA is not set
-CONFIG_TIMERFD=y
-# CONFIG_TIMER_STATS is not set
-CONFIG_TINY_RCU=y
-# CONFIG_TIPC is not set
-# CONFIG_TI_ADC081C is not set
-# CONFIG_TI_AM335X_ADC is not set
-# CONFIG_TI_CPSW is not set
-# CONFIG_TI_CPTS is not set
-# CONFIG_TI_DAC7512 is not set
-# CONFIG_TI_DAVINCI_CPDMA is not set
-# CONFIG_TI_DAVINCI_MDIO is not set
-# CONFIG_TI_ST is not set
-# CONFIG_TLAN is not set
-# CONFIG_TMD_HERMES is not set
-# CONFIG_TMP006 is not set
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-CONFIG_TMPFS_XATTR=y
-# CONFIG_TOUCHSCREEN_AD7877 is not set
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
-# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
-# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ILI210X is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_MMS114 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_S3C2410 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_WM97XX is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_TR is not set
-# CONFIG_TRACER_SNAPSHOT is not set
-# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
-# CONFIG_TRACE_BRANCH_PROFILING is not set
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_TRACE_SINK is not set
-CONFIG_TRACING_SUPPORT=y
-CONFIG_TRAD_SIGNALS=y
-# CONFIG_TRANSPARENT_HUGEPAGE is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_TREE_RCU is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_TSL2583 is not set
-# CONFIG_TSL2x7x is not set
-CONFIG_TTY=y
-# CONFIG_TTY_PRINTK is not set
-# CONFIG_TUN is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_TWL6030_GPADC is not set
-# CONFIG_TWL6040_CORE is not set
-# CONFIG_TYPHOON is not set
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_UCB1400_CORE is not set
-# CONFIG_UDF_FS is not set
-CONFIG_UDF_NLS=y
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_UFS_FS is not set
-# CONFIG_UHID is not set
-CONFIG_UIDGID_STRICT_TYPE_CHECKS=y
-# CONFIG_UIO is not set
-# CONFIG_ULTRA is not set
-# CONFIG_ULTRIX_PARTITION is not set
-CONFIG_UNIX=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_UNIX_DIAG is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_USB is not set
-# CONFIG_USBIP_CORE is not set
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_ALI_M5632=y
-# CONFIG_USB_AMD5536UDC is not set
-CONFIG_USB_AN2720=y
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_ATM is not set
-CONFIG_USB_BELKIN=y
-# CONFIG_USB_BTMTK is not set
-# CONFIG_USB_C67X00_HCD is not set
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_CHIPIDEA is not set
-# CONFIG_USB_CONFIGFS is not set
-# CONFIG_USB_CXACRU is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_DEBUG is not set
-CONFIG_USB_DEFAULT_PERSIST=y
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DUMMY_HCD is not set
-# CONFIG_USB_DWC2 is not set
-# CONFIG_USB_DWC3 is not set
-# CONFIG_USB_DWC_OTG_LPM is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_EG20T is not set
-# CONFIG_USB_EHCI_HCD_AT91 is not set
-# CONFIG_USB_EHCI_HCD_PPC_OF is not set
-# CONFIG_USB_EHCI_MV is not set
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_EHSET_TEST_FIXTURE is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_EZUSB=y
-# CONFIG_USB_EZUSB_FX2 is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_FOTG210_HCD is not set
-# CONFIG_USB_FOTG210_UDC is not set
-# CONFIG_USB_FSL_USB2 is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_FUNCTIONFS is not set
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_FUSBH200_HCD is not set
-# CONFIG_USB_GADGET is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-CONFIG_USB_GADGET_VBUS_DRAW=2
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GOKU is not set
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_GSPCA is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_JL2005BCD is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SE401 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STK1135 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TOPRO is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_NCM is not set
-# CONFIG_USB_G_NOKIA is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_G_WEBCAM is not set
-# CONFIG_USB_HCD_TEST_MODE is not set
-# CONFIG_USB_HID is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_HSIC_USB3503 is not set
-# CONFIG_USB_HSO is not set
-# CONFIG_USB_HWA_HCD is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_INPUT_IMS_PCU is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_IPHETH is not set
-# CONFIG_USB_IP_COMMON is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1301 is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_KC2190 is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LIBUSUAL is not set
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_MASS_STORAGE is not set
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_MON is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_MUSB_HDRC is not set
-# CONFIG_USB_MV_U3D is not set
-# CONFIG_USB_MV_UDC is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_NET2280 is not set
-# CONFIG_USB_NET_AX88179_178A is not set
-# CONFIG_USB_NET_AX8817X is not set
-# CONFIG_USB_NET_CDCETHER is not set
-# CONFIG_USB_NET_CDC_EEM is not set
-# CONFIG_USB_NET_CDC_MBIM is not set
-# CONFIG_USB_NET_CDC_NCM is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_CX82310_ETH is not set
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-# CONFIG_USB_NET_INT51X1 is not set
-# CONFIG_USB_NET_KALMIA is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_NET1080 is not set
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_QMI_WWAN is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_USB_NET_SMSC75XX is not set
-# CONFIG_USB_NET_SMSC95XX is not set
-# CONFIG_USB_NET_SR9700 is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_OHCI_HCD_PCI is not set
-# CONFIG_USB_OHCI_HCD_PPC_OF is not set
-# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
-# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
-# CONFIG_USB_OHCI_HCD_PPC_SOC is not set
-# CONFIG_USB_OHCI_HCD_SSB is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_PHY is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_PWC_INPUT_EVDEV is not set
-# CONFIG_USB_PXA27X is not set
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_RCAR_PHY is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_RTL8152 is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_CP210X is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
-# CONFIG_USB_SERIAL_DEBUG is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-# CONFIG_USB_SERIAL_F81232 is not set
-# CONFIG_USB_SERIAL_FTDI_SIO is not set
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-# CONFIG_USB_SERIAL_GARMIN is not set
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_HP4X is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IPW is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_IUU is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-CONFIG_USB_SERIAL_KEYSPAN_MPR=y
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_METRO is not set
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_MOTOROLA is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_OPTION is not set
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_QCAUX is not set
-# CONFIG_USB_SERIAL_QT2 is not set
-# CONFIG_USB_SERIAL_QUALCOMM is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-# CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-# CONFIG_USB_SERIAL_SIMPLE is not set
-# CONFIG_USB_SERIAL_SPCP8X5 is not set
-# CONFIG_USB_SERIAL_SSU100 is not set
-# CONFIG_USB_SERIAL_SYMBOL is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_WISHBONE is not set
-# CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_ZIO is not set
-# CONFIG_USB_SERIAL_ZTE is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_SIERRA_NET is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_SPEEDTOUCH is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_SUPPORT is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_TMC is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_UAS is not set
-# CONFIG_USB_UEAGLEATM is not set
-# CONFIG_USB_ULPI is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_USS720 is not set
-# CONFIG_USB_VIDEO_CLASS is not set
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-# CONFIG_USB_VL600 is not set
-# CONFIG_USB_WDM is not set
-# CONFIG_USB_WHCI_HCD is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_USB_WUSB is not set
-# CONFIG_USB_WUSB_CBAF is not set
-# CONFIG_USB_XHCI_HCD is not set
-# CONFIG_USB_XUSBATM is not set
-# CONFIG_USB_YUREX is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_ZERO is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USE_GENERIC_SMP_HELPERS is not set
-# CONFIG_USE_OF is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_UWB is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-# CONFIG_V4L_TEST_DRIVERS is not set
-# CONFIG_VCNL4000 is not set
-# CONFIG_VETH is not set
-# CONFIG_VEXPRESS_CONFIG is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VGA_ARB is not set
-# CONFIG_VGA_SWITCHEROO is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_VIDEO_ADV7170 is not set
-# CONFIG_VIDEO_ADV7175 is not set
-# CONFIG_VIDEO_ADV7180 is not set
-# CONFIG_VIDEO_ADV7183 is not set
-# CONFIG_VIDEO_ADV7343 is not set
-# CONFIG_VIDEO_ADV7393 is not set
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_AK881X is not set
-# CONFIG_VIDEO_BT819 is not set
-# CONFIG_VIDEO_BT848 is not set
-# CONFIG_VIDEO_BT856 is not set
-# CONFIG_VIDEO_BT866 is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_VIDEO_CAPTURE_DRIVERS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CS5345 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_CX231XX is not set
-# CONFIG_VIDEO_CX2341X is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_CX88 is not set
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_VIDEO_DM6446_CCDC is not set
-# CONFIG_VIDEO_DT3155 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_IR_I2C is not set
-# CONFIG_VIDEO_IVTV is not set
-# CONFIG_VIDEO_KS0127 is not set
-# CONFIG_VIDEO_M52790 is not set
-# CONFIG_VIDEO_MEDIA is not set
-# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
-# CONFIG_VIDEO_ML86V7667 is not set
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_NOON010PC30 is not set
-# CONFIG_VIDEO_OMAP2_VOUT is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_VIDEO_OV7640 is not set
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_SAA6588 is not set
-# CONFIG_VIDEO_SAA7110 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_SAA7134 is not set
-# CONFIG_VIDEO_SAA717X is not set
-# CONFIG_VIDEO_SAA7185 is not set
-# CONFIG_VIDEO_SAA7191 is not set
-# CONFIG_VIDEO_SH_MOBILE_CEU is not set
-# CONFIG_VIDEO_SONY_BTF_MPX is not set
-# CONFIG_VIDEO_SR030PC30 is not set
-# CONFIG_VIDEO_TCM825X is not set
-# CONFIG_VIDEO_TDA7432 is not set
-# CONFIG_VIDEO_TDA9840 is not set
-# CONFIG_VIDEO_TEA6415C is not set
-# CONFIG_VIDEO_TEA6420 is not set
-# CONFIG_VIDEO_THS7303 is not set
-# CONFIG_VIDEO_THS8200 is not set
-# CONFIG_VIDEO_TIMBERDALE is not set
-# CONFIG_VIDEO_TLV320AIC23B is not set
-# CONFIG_VIDEO_TM6000 is not set
-# CONFIG_VIDEO_TVAUDIO is not set
-# CONFIG_VIDEO_TVP514X is not set
-# CONFIG_VIDEO_TVP5150 is not set
-# CONFIG_VIDEO_TVP7002 is not set
-# CONFIG_VIDEO_TW2804 is not set
-# CONFIG_VIDEO_TW9903 is not set
-# CONFIG_VIDEO_TW9906 is not set
-# CONFIG_VIDEO_UDA1342 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-# CONFIG_VIDEO_USBTV is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_VIDEO_V4L2 is not set
-# CONFIG_VIDEO_V4L2_COMMON is not set
-# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_VP27SMPX is not set
-# CONFIG_VIDEO_VPX3220 is not set
-# CONFIG_VIDEO_VS6624 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIRQ_DEBUG is not set
-# CONFIG_VIRTIO_BALLOON is not set
-# CONFIG_VIRTIO_MMIO is not set
-# CONFIG_VIRTIO_PCI is not set
-# CONFIG_VIRTUALIZATION is not set
-# CONFIG_VIRT_DRIVERS is not set
-CONFIG_VIRT_TO_BUS=y
-# CONFIG_VITESSE_PHY is not set
-CONFIG_VLAN_8021Q=y
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_VLAN_8021Q_MVRP is not set
-# CONFIG_VME_BUS is not set
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMWARE_PVSCSI is not set
-# CONFIG_VMXNET3 is not set
-# CONFIG_VM_EVENT_COUNTERS is not set
-# CONFIG_VORTEX is not set
-# CONFIG_VSOCKETS is not set
-# CONFIG_VT is not set
-# CONFIG_VT6655 is not set
-# CONFIG_VT6656 is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_VXGE is not set
-# CONFIG_VXLAN is not set
-# CONFIG_W1 is not set
-# CONFIG_W1_CON is not set
-# CONFIG_W1_MASTER_DS1WM is not set
-# CONFIG_W1_MASTER_DS2482 is not set
-# CONFIG_W1_MASTER_DS2490 is not set
-# CONFIG_W1_MASTER_GPIO is not set
-# CONFIG_W1_MASTER_MATROX is not set
-# CONFIG_W1_SLAVE_BQ27000 is not set
-# CONFIG_W1_SLAVE_DS2408 is not set
-# CONFIG_W1_SLAVE_DS2413 is not set
-# CONFIG_W1_SLAVE_DS2423 is not set
-# CONFIG_W1_SLAVE_DS2431 is not set
-# CONFIG_W1_SLAVE_DS2433 is not set
-# CONFIG_W1_SLAVE_DS2760 is not set
-# CONFIG_W1_SLAVE_DS2780 is not set
-# CONFIG_W1_SLAVE_DS2781 is not set
-# CONFIG_W1_SLAVE_DS28E04 is not set
-# CONFIG_W1_SLAVE_SMEM is not set
-# CONFIG_W1_SLAVE_THERM is not set
-# CONFIG_W35UND is not set
-# CONFIG_W83627HF_WDT is not set
-# CONFIG_W83697HF_WDT is not set
-# CONFIG_W83877F_WDT is not set
-# CONFIG_W83977F_WDT is not set
-# CONFIG_WAN is not set
-# CONFIG_WANXL is not set
-# CONFIG_WAN_ROUTER is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_WD80x3 is not set
-# CONFIG_WDTPCI is not set
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PRIV=y
-CONFIG_WEXT_PROC=y
-CONFIG_WEXT_SPY=y
-CONFIG_WILINK_PLATFORM_DATA=y
-# CONFIG_WIMAX is not set
-# CONFIG_WIMAX_GDM72XX is not set
-CONFIG_WIRELESS=y
-CONFIG_WIRELESS_EXT=y
-# CONFIG_WIRELESS_EXT_SYSFS is not set
-# CONFIG_WL1251 is not set
-# CONFIG_WL12XX is not set
-# CONFIG_WL18XX is not set
-# CONFIG_WLAGS49_H2 is not set
-# CONFIG_WLAGS49_H25 is not set
-CONFIG_WLAN=y
-# CONFIG_WLCORE is not set
-CONFIG_WL_TI=y
-CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
-# CONFIG_WR_PPMC is not set
-# CONFIG_X25 is not set
-CONFIG_XFRM=y
-# CONFIG_XFRM_IPCOMP is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFS_DEBUG is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_RT is not set
-# CONFIG_XFS_WARN is not set
-# CONFIG_XILINX_AXI_EMAC is not set
-# CONFIG_XILINX_EMACLITE is not set
-# CONFIG_XILINX_LL_TEMAC is not set
-# CONFIG_XILLYBUS is not set
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_XMON is not set
-# CONFIG_XVMALLOC is not set
-CONFIG_XZ_DEC=y
-# CONFIG_XZ_DEC_ARM is not set
-# CONFIG_XZ_DEC_ARMTHUMB is not set
-# CONFIG_XZ_DEC_BCJ is not set
-# CONFIG_XZ_DEC_IA64 is not set
-# CONFIG_XZ_DEC_POWERPC is not set
-# CONFIG_XZ_DEC_SPARC is not set
-# CONFIG_XZ_DEC_TEST is not set
-# CONFIG_XZ_DEC_X86 is not set
-# CONFIG_YAFFS_DISABLE_BAD_BLOCK_MARKING is not set
-# CONFIG_YAFFS_FS is not set
-# CONFIG_YAM is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_YENTA is not set
-# CONFIG_YENTA_O2 is not set
-# CONFIG_YENTA_RICOH is not set
-# CONFIG_YENTA_TI is not set
-# CONFIG_YENTA_TOSHIBA is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_ZD1211RW_DEBUG is not set
-# CONFIG_ZEROPLUS_FF is not set
-# CONFIG_ZISOFS is not set
-# CONFIG_ZLIB_DEFLATE is not set
-# CONFIG_ZLIB_INFLATE is not set
-# CONFIG_ZNET is not set
-CONFIG_ZONE_DMA=y
-CONFIG_ZONE_DMA_FLAG=1
-# CONFIG_ZRAM is not set
-# CONFIG_ZSMALLOC is not set
diff --git a/target/linux/generic/patches-3.12/009-mtd_m25p80_add_support_for_esmt_f25l32pa.patch b/target/linux/generic/patches-3.12/009-mtd_m25p80_add_support_for_esmt_f25l32pa.patch
deleted file mode 100644 (file)
index 1adb934..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7d75ef5f56dbc2bedb9a893eb9ecfd03c456338d Mon Sep 17 00:00:00 2001
-From: Flavio Silveira <fggs@terra.com.br>
-Date: Thu, 29 Aug 2013 08:51:48 -0300
-Subject: [PATCH v2] mtd: m25p80: Add support for ESMT F25L32PA
-
-This flashchip is used in D-Link DIR-610 A1 router board 
-and maybe several others, yet is not kernel upstream.
-
-So add support for it according to datasheet [0], making it easier
-to support other boards using this flashchip in the future.
-
-Changelog v2:
- - Better description
- - Datasheet link at the bottom, similar to other patches.
-
-[0] http://www.esmt.com.tw/DB/manager/upload/F25L32PA.pdf 
-
-Signed-off-by: Flavio Silveira <fggs@terra.com.br>
----
- drivers/mtd/devices/m25p80.c |    3 +++
- 1 file changed, 3 insertions(+)
-
- http://patchwork.ozlabs.org/patch/272438/
- http://lists.infradead.org/pipermail/linux-mtd/2013-September/048511.html
-
---- a/drivers/mtd/devices/m25p80.c
-+++ b/drivers/mtd/devices/m25p80.c
-@@ -756,6 +756,9 @@ static const struct spi_device_id m25p_i
-       { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
-       { "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },
-+      /* ESMT */
-+      { "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SECT_4K) },
-+
-       /* Everspin */
-       { "mr25h256", CAT25_INFO(  32 * 1024, 1, 256, 2, M25P_NO_ERASE | M25P_NO_FR) },
-       { "mr25h10", CAT25_INFO(128 * 1024, 1, 256, 3, M25P_NO_ERASE | M25P_NO_FR) },
diff --git a/target/linux/generic/patches-3.12/020-ssb_update.patch b/target/linux/generic/patches-3.12/020-ssb_update.patch
deleted file mode 100644 (file)
index 3a99161..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
---- a/drivers/ssb/Kconfig
-+++ b/drivers/ssb/Kconfig
-@@ -168,6 +168,7 @@ config SSB_DRIVER_GIGE
- config SSB_DRIVER_GPIO
-       bool "SSB GPIO driver"
-       depends on SSB && GPIOLIB
-+      select IRQ_DOMAIN if SSB_EMBEDDED
-       help
-         Driver to provide access to the GPIO pins on the bus.
---- a/drivers/ssb/driver_chipcommon_sflash.c
-+++ b/drivers/ssb/driver_chipcommon_sflash.c
-@@ -37,7 +37,7 @@ static const struct ssb_sflash_tbl_e ssb
-       { "M25P32", 0x15, 0x10000, 64, },
-       { "M25P64", 0x16, 0x10000, 128, },
-       { "M25FL128", 0x17, 0x10000, 256, },
--      { 0 },
-+      { NULL },
- };
- static const struct ssb_sflash_tbl_e ssb_sflash_sst_tbl[] = {
-@@ -55,7 +55,7 @@ static const struct ssb_sflash_tbl_e ssb
-       { "SST25VF016", 0x41, 0x1000, 512, },
-       { "SST25VF032", 0x4a, 0x1000, 1024, },
-       { "SST25VF064", 0x4b, 0x1000, 2048, },
--      { 0 },
-+      { NULL },
- };
- static const struct ssb_sflash_tbl_e ssb_sflash_at_tbl[] = {
-@@ -66,7 +66,7 @@ static const struct ssb_sflash_tbl_e ssb
-       { "AT45DB161", 0x2c, 512, 4096, },
-       { "AT45DB321", 0x34, 512, 8192, },
-       { "AT45DB642", 0x3c, 1024, 8192, },
--      { 0 },
-+      { NULL },
- };
- static void ssb_sflash_cmd(struct ssb_chipcommon *cc, u32 opcode)
---- a/drivers/ssb/driver_gpio.c
-+++ b/drivers/ssb/driver_gpio.c
-@@ -9,16 +9,40 @@
-  */
- #include <linux/gpio.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/irqdomain.h>
- #include <linux/export.h>
- #include <linux/ssb/ssb.h>
- #include "ssb_private.h"
-+
-+/**************************************************
-+ * Shared
-+ **************************************************/
-+
- static struct ssb_bus *ssb_gpio_get_bus(struct gpio_chip *chip)
- {
-       return container_of(chip, struct ssb_bus, gpio);
- }
-+#if IS_ENABLED(CONFIG_SSB_EMBEDDED)
-+static int ssb_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
-+{
-+      struct ssb_bus *bus = ssb_gpio_get_bus(chip);
-+
-+      if (bus->bustype == SSB_BUSTYPE_SSB)
-+              return irq_find_mapping(bus->irq_domain, gpio);
-+      else
-+              return -EINVAL;
-+}
-+#endif
-+
-+/**************************************************
-+ * ChipCommon
-+ **************************************************/
-+
- static int ssb_gpio_chipco_get_value(struct gpio_chip *chip, unsigned gpio)
- {
-       struct ssb_bus *bus = ssb_gpio_get_bus(chip);
-@@ -74,19 +98,129 @@ static void ssb_gpio_chipco_free(struct 
-       ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 0);
- }
--static int ssb_gpio_chipco_to_irq(struct gpio_chip *chip, unsigned gpio)
-+#if IS_ENABLED(CONFIG_SSB_EMBEDDED)
-+static void ssb_gpio_irq_chipco_mask(struct irq_data *d)
- {
--      struct ssb_bus *bus = ssb_gpio_get_bus(chip);
-+      struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
--      if (bus->bustype == SSB_BUSTYPE_SSB)
--              return ssb_mips_irq(bus->chipco.dev) + 2;
--      else
--              return -EINVAL;
-+      ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), 0);
-+}
-+
-+static void ssb_gpio_irq_chipco_unmask(struct irq_data *d)
-+{
-+      struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
-+      u32 val = ssb_chipco_gpio_in(&bus->chipco, BIT(gpio));
-+
-+      ssb_chipco_gpio_polarity(&bus->chipco, BIT(gpio), val);
-+      ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), BIT(gpio));
-+}
-+
-+static struct irq_chip ssb_gpio_irq_chipco_chip = {
-+      .name           = "SSB-GPIO-CC",
-+      .irq_mask       = ssb_gpio_irq_chipco_mask,
-+      .irq_unmask     = ssb_gpio_irq_chipco_unmask,
-+};
-+
-+static irqreturn_t ssb_gpio_irq_chipco_handler(int irq, void *dev_id)
-+{
-+      struct ssb_bus *bus = dev_id;
-+      struct ssb_chipcommon *chipco = &bus->chipco;
-+      u32 val = chipco_read32(chipco, SSB_CHIPCO_GPIOIN);
-+      u32 mask = chipco_read32(chipco, SSB_CHIPCO_GPIOIRQ);
-+      u32 pol = chipco_read32(chipco, SSB_CHIPCO_GPIOPOL);
-+      unsigned long irqs = (val ^ pol) & mask;
-+      int gpio;
-+
-+      if (!irqs)
-+              return IRQ_NONE;
-+
-+      for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
-+              generic_handle_irq(ssb_gpio_to_irq(&bus->gpio, gpio));
-+      ssb_chipco_gpio_polarity(chipco, irqs, val & irqs);
-+
-+      return IRQ_HANDLED;
-+}
-+
-+static int ssb_gpio_irq_chipco_domain_init(struct ssb_bus *bus)
-+{
-+      struct ssb_chipcommon *chipco = &bus->chipco;
-+      struct gpio_chip *chip = &bus->gpio;
-+      int gpio, hwirq, err;
-+
-+      if (bus->bustype != SSB_BUSTYPE_SSB)
-+              return 0;
-+
-+      bus->irq_domain = irq_domain_add_linear(NULL, chip->ngpio,
-+                                              &irq_domain_simple_ops, chipco);
-+      if (!bus->irq_domain) {
-+              err = -ENODEV;
-+              goto err_irq_domain;
-+      }
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_create_mapping(bus->irq_domain, gpio);
-+
-+              irq_set_chip_data(irq, bus);
-+              irq_set_chip_and_handler(irq, &ssb_gpio_irq_chipco_chip,
-+                                       handle_simple_irq);
-+      }
-+
-+      hwirq = ssb_mips_irq(bus->chipco.dev) + 2;
-+      err = request_irq(hwirq, ssb_gpio_irq_chipco_handler, IRQF_SHARED,
-+                        "gpio", bus);
-+      if (err)
-+              goto err_req_irq;
-+
-+      ssb_chipco_gpio_intmask(&bus->chipco, ~0, 0);
-+      chipco_set32(chipco, SSB_CHIPCO_IRQMASK, SSB_CHIPCO_IRQ_GPIO);
-+
-+      return 0;
-+
-+err_req_irq:
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(bus->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(bus->irq_domain);
-+err_irq_domain:
-+      return err;
-+}
-+
-+static void ssb_gpio_irq_chipco_domain_exit(struct ssb_bus *bus)
-+{
-+      struct ssb_chipcommon *chipco = &bus->chipco;
-+      struct gpio_chip *chip = &bus->gpio;
-+      int gpio;
-+
-+      if (bus->bustype != SSB_BUSTYPE_SSB)
-+              return;
-+
-+      chipco_mask32(chipco, SSB_CHIPCO_IRQMASK, ~SSB_CHIPCO_IRQ_GPIO);
-+      free_irq(ssb_mips_irq(bus->chipco.dev) + 2, chipco);
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(bus->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(bus->irq_domain);
-+}
-+#else
-+static int ssb_gpio_irq_chipco_domain_init(struct ssb_bus *bus)
-+{
-+      return 0;
-+}
-+
-+static void ssb_gpio_irq_chipco_domain_exit(struct ssb_bus *bus)
-+{
- }
-+#endif
- static int ssb_gpio_chipco_init(struct ssb_bus *bus)
- {
-       struct gpio_chip *chip = &bus->gpio;
-+      int err;
-       chip->label             = "ssb_chipco_gpio";
-       chip->owner             = THIS_MODULE;
-@@ -96,7 +230,9 @@ static int ssb_gpio_chipco_init(struct s
-       chip->set               = ssb_gpio_chipco_set_value;
-       chip->direction_input   = ssb_gpio_chipco_direction_input;
-       chip->direction_output  = ssb_gpio_chipco_direction_output;
--      chip->to_irq            = ssb_gpio_chipco_to_irq;
-+#if IS_ENABLED(CONFIG_SSB_EMBEDDED)
-+      chip->to_irq            = ssb_gpio_to_irq;
-+#endif
-       chip->ngpio             = 16;
-       /* There is just one SoC in one device and its GPIO addresses should be
-        * deterministic to address them more easily. The other buses could get
-@@ -106,9 +242,23 @@ static int ssb_gpio_chipco_init(struct s
-       else
-               chip->base              = -1;
--      return gpiochip_add(chip);
-+      err = ssb_gpio_irq_chipco_domain_init(bus);
-+      if (err)
-+              return err;
-+
-+      err = gpiochip_add(chip);
-+      if (err) {
-+              ssb_gpio_irq_chipco_domain_exit(bus);
-+              return err;
-+      }
-+
-+      return 0;
- }
-+/**************************************************
-+ * EXTIF
-+ **************************************************/
-+
- #ifdef CONFIG_SSB_DRIVER_EXTIF
- static int ssb_gpio_extif_get_value(struct gpio_chip *chip, unsigned gpio)
-@@ -145,19 +295,127 @@ static int ssb_gpio_extif_direction_outp
-       return 0;
- }
--static int ssb_gpio_extif_to_irq(struct gpio_chip *chip, unsigned gpio)
-+#if IS_ENABLED(CONFIG_SSB_EMBEDDED)
-+static void ssb_gpio_irq_extif_mask(struct irq_data *d)
- {
--      struct ssb_bus *bus = ssb_gpio_get_bus(chip);
-+      struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
--      if (bus->bustype == SSB_BUSTYPE_SSB)
--              return ssb_mips_irq(bus->extif.dev) + 2;
--      else
--              return -EINVAL;
-+      ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), 0);
-+}
-+
-+static void ssb_gpio_irq_extif_unmask(struct irq_data *d)
-+{
-+      struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
-+      u32 val = ssb_extif_gpio_in(&bus->extif, BIT(gpio));
-+
-+      ssb_extif_gpio_polarity(&bus->extif, BIT(gpio), val);
-+      ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), BIT(gpio));
-+}
-+
-+static struct irq_chip ssb_gpio_irq_extif_chip = {
-+      .name           = "SSB-GPIO-EXTIF",
-+      .irq_mask       = ssb_gpio_irq_extif_mask,
-+      .irq_unmask     = ssb_gpio_irq_extif_unmask,
-+};
-+
-+static irqreturn_t ssb_gpio_irq_extif_handler(int irq, void *dev_id)
-+{
-+      struct ssb_bus *bus = dev_id;
-+      struct ssb_extif *extif = &bus->extif;
-+      u32 val = ssb_read32(extif->dev, SSB_EXTIF_GPIO_IN);
-+      u32 mask = ssb_read32(extif->dev, SSB_EXTIF_GPIO_INTMASK);
-+      u32 pol = ssb_read32(extif->dev, SSB_EXTIF_GPIO_INTPOL);
-+      unsigned long irqs = (val ^ pol) & mask;
-+      int gpio;
-+
-+      if (!irqs)
-+              return IRQ_NONE;
-+
-+      for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
-+              generic_handle_irq(ssb_gpio_to_irq(&bus->gpio, gpio));
-+      ssb_extif_gpio_polarity(extif, irqs, val & irqs);
-+
-+      return IRQ_HANDLED;
-+}
-+
-+static int ssb_gpio_irq_extif_domain_init(struct ssb_bus *bus)
-+{
-+      struct ssb_extif *extif = &bus->extif;
-+      struct gpio_chip *chip = &bus->gpio;
-+      int gpio, hwirq, err;
-+
-+      if (bus->bustype != SSB_BUSTYPE_SSB)
-+              return 0;
-+
-+      bus->irq_domain = irq_domain_add_linear(NULL, chip->ngpio,
-+                                              &irq_domain_simple_ops, extif);
-+      if (!bus->irq_domain) {
-+              err = -ENODEV;
-+              goto err_irq_domain;
-+      }
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_create_mapping(bus->irq_domain, gpio);
-+
-+              irq_set_chip_data(irq, bus);
-+              irq_set_chip_and_handler(irq, &ssb_gpio_irq_extif_chip,
-+                                       handle_simple_irq);
-+      }
-+
-+      hwirq = ssb_mips_irq(bus->extif.dev) + 2;
-+      err = request_irq(hwirq, ssb_gpio_irq_extif_handler, IRQF_SHARED,
-+                        "gpio", bus);
-+      if (err)
-+              goto err_req_irq;
-+
-+      ssb_extif_gpio_intmask(&bus->extif, ~0, 0);
-+
-+      return 0;
-+
-+err_req_irq:
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(bus->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(bus->irq_domain);
-+err_irq_domain:
-+      return err;
- }
-+static void ssb_gpio_irq_extif_domain_exit(struct ssb_bus *bus)
-+{
-+      struct ssb_extif *extif = &bus->extif;
-+      struct gpio_chip *chip = &bus->gpio;
-+      int gpio;
-+
-+      if (bus->bustype != SSB_BUSTYPE_SSB)
-+              return;
-+
-+      free_irq(ssb_mips_irq(bus->extif.dev) + 2, extif);
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(bus->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(bus->irq_domain);
-+}
-+#else
-+static int ssb_gpio_irq_extif_domain_init(struct ssb_bus *bus)
-+{
-+      return 0;
-+}
-+
-+static void ssb_gpio_irq_extif_domain_exit(struct ssb_bus *bus)
-+{
-+}
-+#endif
-+
- static int ssb_gpio_extif_init(struct ssb_bus *bus)
- {
-       struct gpio_chip *chip = &bus->gpio;
-+      int err;
-       chip->label             = "ssb_extif_gpio";
-       chip->owner             = THIS_MODULE;
-@@ -165,7 +423,9 @@ static int ssb_gpio_extif_init(struct ss
-       chip->set               = ssb_gpio_extif_set_value;
-       chip->direction_input   = ssb_gpio_extif_direction_input;
-       chip->direction_output  = ssb_gpio_extif_direction_output;
--      chip->to_irq            = ssb_gpio_extif_to_irq;
-+#if IS_ENABLED(CONFIG_SSB_EMBEDDED)
-+      chip->to_irq            = ssb_gpio_to_irq;
-+#endif
-       chip->ngpio             = 5;
-       /* There is just one SoC in one device and its GPIO addresses should be
-        * deterministic to address them more easily. The other buses could get
-@@ -175,7 +435,17 @@ static int ssb_gpio_extif_init(struct ss
-       else
-               chip->base              = -1;
--      return gpiochip_add(chip);
-+      err = ssb_gpio_irq_extif_domain_init(bus);
-+      if (err)
-+              return err;
-+
-+      err = gpiochip_add(chip);
-+      if (err) {
-+              ssb_gpio_irq_extif_domain_exit(bus);
-+              return err;
-+      }
-+
-+      return 0;
- }
- #else
-@@ -185,6 +455,10 @@ static int ssb_gpio_extif_init(struct ss
- }
- #endif
-+/**************************************************
-+ * Init
-+ **************************************************/
-+
- int ssb_gpio_init(struct ssb_bus *bus)
- {
-       if (ssb_chipco_available(&bus->chipco))
---- a/drivers/ssb/main.c
-+++ b/drivers/ssb/main.c
-@@ -374,7 +374,8 @@ static ssize_t \
- attrib##_show(struct device *dev, struct device_attribute *attr, char *buf) \
- { \
-       return sprintf(buf, format_string, dev_to_ssb_dev(dev)->field); \
--}
-+} \
-+static DEVICE_ATTR_RO(attrib);
- ssb_config_attr(core_num, core_index, "%u\n")
- ssb_config_attr(coreid, id.coreid, "0x%04x\n")
-@@ -387,16 +388,18 @@ name_show(struct device *dev, struct dev
-       return sprintf(buf, "%s\n",
-                      ssb_core_name(dev_to_ssb_dev(dev)->id.coreid));
- }
-+static DEVICE_ATTR_RO(name);
--static struct device_attribute ssb_device_attrs[] = {
--      __ATTR_RO(name),
--      __ATTR_RO(core_num),
--      __ATTR_RO(coreid),
--      __ATTR_RO(vendor),
--      __ATTR_RO(revision),
--      __ATTR_RO(irq),
--      __ATTR_NULL,
-+static struct attribute *ssb_device_attrs[] = {
-+      &dev_attr_name.attr,
-+      &dev_attr_core_num.attr,
-+      &dev_attr_coreid.attr,
-+      &dev_attr_vendor.attr,
-+      &dev_attr_revision.attr,
-+      &dev_attr_irq.attr,
-+      NULL,
- };
-+ATTRIBUTE_GROUPS(ssb_device);
- static struct bus_type ssb_bustype = {
-       .name           = "ssb",
-@@ -407,7 +410,7 @@ static struct bus_type ssb_bustype = {
-       .suspend        = ssb_device_suspend,
-       .resume         = ssb_device_resume,
-       .uevent         = ssb_device_uevent,
--      .dev_attrs      = ssb_device_attrs,
-+      .dev_groups     = ssb_device_groups,
- };
- static void ssb_buses_lock(void)
-@@ -590,6 +593,13 @@ static int ssb_attach_queued_buses(void)
-               ssb_pcicore_init(&bus->pcicore);
-               if (bus->bustype == SSB_BUSTYPE_SSB)
-                       ssb_watchdog_register(bus);
-+
-+              err = ssb_gpio_init(bus);
-+              if (err == -ENOTSUPP)
-+                      ssb_dbg("GPIO driver not activated\n");
-+              else if (err)
-+                      ssb_dbg("Error registering GPIO driver: %i\n", err);
-+
-               ssb_bus_may_powerdown(bus);
-               err = ssb_devices_register(bus);
-@@ -827,11 +837,6 @@ static int ssb_bus_register(struct ssb_b
-       ssb_chipcommon_init(&bus->chipco);
-       ssb_extif_init(&bus->extif);
-       ssb_mipscore_init(&bus->mipscore);
--      err = ssb_gpio_init(bus);
--      if (err == -ENOTSUPP)
--              ssb_dbg("GPIO driver not activated\n");
--      else if (err)
--              ssb_dbg("Error registering GPIO driver: %i\n", err);
-       err = ssb_fetch_invariants(bus, get_invariants);
-       if (err) {
-               ssb_bus_may_powerdown(bus);
---- a/include/linux/ssb/ssb.h
-+++ b/include/linux/ssb/ssb.h
-@@ -33,6 +33,7 @@ struct ssb_sprom {
-       u8 et1phyaddr;          /* MII address for enet1 */
-       u8 et0mdcport;          /* MDIO for enet0 */
-       u8 et1mdcport;          /* MDIO for enet1 */
-+      u16 dev_id;             /* Device ID overriding e.g. PCI ID */
-       u16 board_rev;          /* Board revision number from SPROM. */
-       u16 board_num;          /* Board number from SPROM. */
-       u16 board_type;         /* Board type from SPROM. */
-@@ -486,6 +487,7 @@ struct ssb_bus {
- #endif /* EMBEDDED */
- #ifdef CONFIG_SSB_DRIVER_GPIO
-       struct gpio_chip gpio;
-+      struct irq_domain *irq_domain;
- #endif /* DRIVER_GPIO */
-       /* Internal-only stuff follows. Do not touch. */
---- a/include/linux/ssb/ssb_driver_gige.h
-+++ b/include/linux/ssb/ssb_driver_gige.h
-@@ -108,6 +108,16 @@ static inline int ssb_gige_get_macaddr(s
-       return 0;
- }
-+/* Get the device phy address */
-+static inline int ssb_gige_get_phyaddr(struct pci_dev *pdev)
-+{
-+      struct ssb_gige *dev = pdev_to_ssb_gige(pdev);
-+      if (!dev)
-+              return -ENODEV;
-+
-+      return dev->dev->bus->sprom.et0phyaddr;
-+}
-+
- extern int ssb_gige_pcibios_plat_dev_init(struct ssb_device *sdev,
-                                         struct pci_dev *pdev);
- extern int ssb_gige_map_irq(struct ssb_device *sdev,
-@@ -174,6 +184,10 @@ static inline int ssb_gige_get_macaddr(s
- {
-       return -ENODEV;
- }
-+static inline int ssb_gige_get_phyaddr(struct pci_dev *pdev)
-+{
-+      return -ENODEV;
-+}
- #endif /* CONFIG_SSB_DRIVER_GIGE */
- #endif /* LINUX_SSB_DRIVER_GIGE_H_ */
---- a/arch/mips/bcm47xx/sprom.c
-+++ b/arch/mips/bcm47xx/sprom.c
-@@ -168,6 +168,7 @@ static void nvram_read_alpha2(const char
- static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom,
-                                       const char *prefix, bool fallback)
- {
-+      nvram_read_u16(prefix, NULL, "devid", &sprom->dev_id, 0, fallback);
-       nvram_read_u8(prefix, NULL, "ledbh0", &sprom->gpio0, 0xff, fallback);
-       nvram_read_u8(prefix, NULL, "ledbh1", &sprom->gpio1, 0xff, fallback);
-       nvram_read_u8(prefix, NULL, "ledbh2", &sprom->gpio2, 0xff, fallback);
diff --git a/target/linux/generic/patches-3.12/025-bcma_backport.patch b/target/linux/generic/patches-3.12/025-bcma_backport.patch
deleted file mode 100644 (file)
index 1b88dfd..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
---- a/drivers/bcma/Kconfig
-+++ b/drivers/bcma/Kconfig
-@@ -75,6 +75,7 @@ config BCMA_DRIVER_GMAC_CMN
- config BCMA_DRIVER_GPIO
-       bool "BCMA GPIO driver"
-       depends on BCMA && GPIOLIB
-+      select IRQ_DOMAIN if BCMA_HOST_SOC
-       help
-         Driver to provide access to the GPIO pins of the bcma bus.
---- a/drivers/bcma/bcma_private.h
-+++ b/drivers/bcma/bcma_private.h
-@@ -33,8 +33,6 @@ int __init bcma_bus_early_register(struc
- int bcma_bus_suspend(struct bcma_bus *bus);
- int bcma_bus_resume(struct bcma_bus *bus);
- #endif
--struct bcma_device *bcma_find_core_unit(struct bcma_bus *bus, u16 coreid,
--                                      u8 unit);
- /* scan.c */
- int bcma_bus_scan(struct bcma_bus *bus);
---- a/drivers/bcma/driver_chipcommon_sflash.c
-+++ b/drivers/bcma/driver_chipcommon_sflash.c
-@@ -38,7 +38,7 @@ static const struct bcma_sflash_tbl_e bc
-       { "M25P32", 0x15, 0x10000, 64, },
-       { "M25P64", 0x16, 0x10000, 128, },
-       { "M25FL128", 0x17, 0x10000, 256, },
--      { 0 },
-+      { NULL },
- };
- static const struct bcma_sflash_tbl_e bcma_sflash_sst_tbl[] = {
-@@ -56,7 +56,7 @@ static const struct bcma_sflash_tbl_e bc
-       { "SST25VF016", 0x41, 0x1000, 512, },
-       { "SST25VF032", 0x4a, 0x1000, 1024, },
-       { "SST25VF064", 0x4b, 0x1000, 2048, },
--      { 0 },
-+      { NULL },
- };
- static const struct bcma_sflash_tbl_e bcma_sflash_at_tbl[] = {
-@@ -67,7 +67,7 @@ static const struct bcma_sflash_tbl_e bc
-       { "AT45DB161", 0x2c, 512, 4096, },
-       { "AT45DB321", 0x34, 512, 8192, },
-       { "AT45DB642", 0x3c, 1024, 8192, },
--      { 0 },
-+      { NULL },
- };
- static void bcma_sflash_cmd(struct bcma_drv_cc *cc, u32 opcode)
---- a/drivers/bcma/driver_gpio.c
-+++ b/drivers/bcma/driver_gpio.c
-@@ -9,6 +9,9 @@
-  */
- #include <linux/gpio.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
-+#include <linux/irqdomain.h>
- #include <linux/export.h>
- #include <linux/bcma/bcma.h>
-@@ -73,19 +76,136 @@ static void bcma_gpio_free(struct gpio_c
-       bcma_chipco_gpio_pullup(cc, 1 << gpio, 0);
- }
-+#if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
- static int bcma_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
- {
-       struct bcma_drv_cc *cc = bcma_gpio_get_cc(chip);
-       if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC)
--              return bcma_core_irq(cc->core);
-+              return irq_find_mapping(cc->irq_domain, gpio);
-       else
-               return -EINVAL;
- }
-+static void bcma_gpio_irq_unmask(struct irq_data *d)
-+{
-+      struct bcma_drv_cc *cc = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
-+      u32 val = bcma_chipco_gpio_in(cc, BIT(gpio));
-+
-+      bcma_chipco_gpio_polarity(cc, BIT(gpio), val);
-+      bcma_chipco_gpio_intmask(cc, BIT(gpio), BIT(gpio));
-+}
-+
-+static void bcma_gpio_irq_mask(struct irq_data *d)
-+{
-+      struct bcma_drv_cc *cc = irq_data_get_irq_chip_data(d);
-+      int gpio = irqd_to_hwirq(d);
-+
-+      bcma_chipco_gpio_intmask(cc, BIT(gpio), 0);
-+}
-+
-+static struct irq_chip bcma_gpio_irq_chip = {
-+      .name           = "BCMA-GPIO",
-+      .irq_mask       = bcma_gpio_irq_mask,
-+      .irq_unmask     = bcma_gpio_irq_unmask,
-+};
-+
-+static irqreturn_t bcma_gpio_irq_handler(int irq, void *dev_id)
-+{
-+      struct bcma_drv_cc *cc = dev_id;
-+      u32 val = bcma_cc_read32(cc, BCMA_CC_GPIOIN);
-+      u32 mask = bcma_cc_read32(cc, BCMA_CC_GPIOIRQ);
-+      u32 pol = bcma_cc_read32(cc, BCMA_CC_GPIOPOL);
-+      unsigned long irqs = (val ^ pol) & mask;
-+      int gpio;
-+
-+      if (!irqs)
-+              return IRQ_NONE;
-+
-+      for_each_set_bit(gpio, &irqs, cc->gpio.ngpio)
-+              generic_handle_irq(bcma_gpio_to_irq(&cc->gpio, gpio));
-+      bcma_chipco_gpio_polarity(cc, irqs, val & irqs);
-+
-+      return IRQ_HANDLED;
-+}
-+
-+static int bcma_gpio_irq_domain_init(struct bcma_drv_cc *cc)
-+{
-+      struct gpio_chip *chip = &cc->gpio;
-+      int gpio, hwirq, err;
-+
-+      if (cc->core->bus->hosttype != BCMA_HOSTTYPE_SOC)
-+              return 0;
-+
-+      cc->irq_domain = irq_domain_add_linear(NULL, chip->ngpio,
-+                                             &irq_domain_simple_ops, cc);
-+      if (!cc->irq_domain) {
-+              err = -ENODEV;
-+              goto err_irq_domain;
-+      }
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_create_mapping(cc->irq_domain, gpio);
-+
-+              irq_set_chip_data(irq, cc);
-+              irq_set_chip_and_handler(irq, &bcma_gpio_irq_chip,
-+                                       handle_simple_irq);
-+      }
-+
-+      hwirq = bcma_core_irq(cc->core);
-+      err = request_irq(hwirq, bcma_gpio_irq_handler, IRQF_SHARED, "gpio",
-+                        cc);
-+      if (err)
-+              goto err_req_irq;
-+
-+      bcma_chipco_gpio_intmask(cc, ~0, 0);
-+      bcma_cc_set32(cc, BCMA_CC_IRQMASK, BCMA_CC_IRQ_GPIO);
-+
-+      return 0;
-+
-+err_req_irq:
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(cc->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(cc->irq_domain);
-+err_irq_domain:
-+      return err;
-+}
-+
-+static void bcma_gpio_irq_domain_exit(struct bcma_drv_cc *cc)
-+{
-+      struct gpio_chip *chip = &cc->gpio;
-+      int gpio;
-+
-+      if (cc->core->bus->hosttype != BCMA_HOSTTYPE_SOC)
-+              return;
-+
-+      bcma_cc_mask32(cc, BCMA_CC_IRQMASK, ~BCMA_CC_IRQ_GPIO);
-+      free_irq(bcma_core_irq(cc->core), cc);
-+      for (gpio = 0; gpio < chip->ngpio; gpio++) {
-+              int irq = irq_find_mapping(cc->irq_domain, gpio);
-+
-+              irq_dispose_mapping(irq);
-+      }
-+      irq_domain_remove(cc->irq_domain);
-+}
-+#else
-+static int bcma_gpio_irq_domain_init(struct bcma_drv_cc *cc)
-+{
-+      return 0;
-+}
-+
-+static void bcma_gpio_irq_domain_exit(struct bcma_drv_cc *cc)
-+{
-+}
-+#endif
-+
- int bcma_gpio_init(struct bcma_drv_cc *cc)
- {
-       struct gpio_chip *chip = &cc->gpio;
-+      int err;
-       chip->label             = "bcma_gpio";
-       chip->owner             = THIS_MODULE;
-@@ -95,8 +215,17 @@ int bcma_gpio_init(struct bcma_drv_cc *c
-       chip->set               = bcma_gpio_set_value;
-       chip->direction_input   = bcma_gpio_direction_input;
-       chip->direction_output  = bcma_gpio_direction_output;
-+#if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
-       chip->to_irq            = bcma_gpio_to_irq;
--      chip->ngpio             = 16;
-+#endif
-+      switch (cc->core->bus->chipinfo.id) {
-+      case BCMA_CHIP_ID_BCM5357:
-+              chip->ngpio     = 32;
-+              break;
-+      default:
-+              chip->ngpio     = 16;
-+      }
-+
-       /* There is just one SoC in one device and its GPIO addresses should be
-        * deterministic to address them more easily. The other buses could get
-        * a random base number. */
-@@ -105,10 +234,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
-       else
-               chip->base              = -1;
--      return gpiochip_add(chip);
-+      err = bcma_gpio_irq_domain_init(cc);
-+      if (err)
-+              return err;
-+
-+      err = gpiochip_add(chip);
-+      if (err) {
-+              bcma_gpio_irq_domain_exit(cc);
-+              return err;
-+      }
-+
-+      return 0;
- }
- int bcma_gpio_unregister(struct bcma_drv_cc *cc)
- {
-+      bcma_gpio_irq_domain_exit(cc);
-       return gpiochip_remove(&cc->gpio);
- }
---- a/drivers/bcma/host_pci.c
-+++ b/drivers/bcma/host_pci.c
-@@ -188,8 +188,11 @@ static int bcma_host_pci_probe(struct pc
-               pci_write_config_dword(dev, 0x40, val & 0xffff00ff);
-       /* SSB needed additional powering up, do we have any AMBA PCI cards? */
--      if (!pci_is_pcie(dev))
--              bcma_err(bus, "PCI card detected, report problems.\n");
-+      if (!pci_is_pcie(dev)) {
-+              bcma_err(bus, "PCI card detected, they are not supported.\n");
-+              err = -ENXIO;
-+              goto err_pci_release_regions;
-+      }
-       /* Map MMIO */
-       err = -ENOMEM;
-@@ -235,7 +238,6 @@ static void bcma_host_pci_remove(struct
-       pci_release_regions(dev);
-       pci_disable_device(dev);
-       kfree(bus);
--      pci_set_drvdata(dev, NULL);
- }
- #ifdef CONFIG_PM_SLEEP
-@@ -267,8 +269,9 @@ static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bc
- #endif /* CONFIG_PM_SLEEP */
--static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = {
-+static const struct pci_device_id bcma_pci_bridge_tbl[] = {
-       { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) },
-+      { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4313) },
-       { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 43224) },
-       { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) },
-       { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4353) },
---- a/drivers/bcma/main.c
-+++ b/drivers/bcma/main.c
-@@ -30,28 +30,37 @@ static ssize_t manuf_show(struct device
-       struct bcma_device *core = container_of(dev, struct bcma_device, dev);
-       return sprintf(buf, "0x%03X\n", core->id.manuf);
- }
-+static DEVICE_ATTR_RO(manuf);
-+
- static ssize_t id_show(struct device *dev, struct device_attribute *attr, char *buf)
- {
-       struct bcma_device *core = container_of(dev, struct bcma_device, dev);
-       return sprintf(buf, "0x%03X\n", core->id.id);
- }
-+static DEVICE_ATTR_RO(id);
-+
- static ssize_t rev_show(struct device *dev, struct device_attribute *attr, char *buf)
- {
-       struct bcma_device *core = container_of(dev, struct bcma_device, dev);
-       return sprintf(buf, "0x%02X\n", core->id.rev);
- }
-+static DEVICE_ATTR_RO(rev);
-+
- static ssize_t class_show(struct device *dev, struct device_attribute *attr, char *buf)
- {
-       struct bcma_device *core = container_of(dev, struct bcma_device, dev);
-       return sprintf(buf, "0x%X\n", core->id.class);
- }
--static struct device_attribute bcma_device_attrs[] = {
--      __ATTR_RO(manuf),
--      __ATTR_RO(id),
--      __ATTR_RO(rev),
--      __ATTR_RO(class),
--      __ATTR_NULL,
-+static DEVICE_ATTR_RO(class);
-+
-+static struct attribute *bcma_device_attrs[] = {
-+      &dev_attr_manuf.attr,
-+      &dev_attr_id.attr,
-+      &dev_attr_rev.attr,
-+      &dev_attr_class.attr,
-+      NULL,
- };
-+ATTRIBUTE_GROUPS(bcma_device);
- static struct bus_type bcma_bus_type = {
-       .name           = "bcma",
-@@ -59,7 +68,7 @@ static struct bus_type bcma_bus_type = {
-       .probe          = bcma_device_probe,
-       .remove         = bcma_device_remove,
-       .uevent         = bcma_device_uevent,
--      .dev_attrs      = bcma_device_attrs,
-+      .dev_groups     = bcma_device_groups,
- };
- static u16 bcma_cc_core_id(struct bcma_bus *bus)
-@@ -69,18 +78,6 @@ static u16 bcma_cc_core_id(struct bcma_b
-       return BCMA_CORE_CHIPCOMMON;
- }
--struct bcma_device *bcma_find_core(struct bcma_bus *bus, u16 coreid)
--{
--      struct bcma_device *core;
--
--      list_for_each_entry(core, &bus->cores, list) {
--              if (core->id.id == coreid)
--                      return core;
--      }
--      return NULL;
--}
--EXPORT_SYMBOL_GPL(bcma_find_core);
--
- struct bcma_device *bcma_find_core_unit(struct bcma_bus *bus, u16 coreid,
-                                       u8 unit)
- {
-@@ -92,6 +89,7 @@ struct bcma_device *bcma_find_core_unit(
-       }
-       return NULL;
- }
-+EXPORT_SYMBOL_GPL(bcma_find_core_unit);
- bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
-                    int timeout)
-@@ -167,6 +165,7 @@ static int bcma_register_cores(struct bc
-                       bcma_err(bus,
-                                "Could not register dev for core 0x%03X\n",
-                                core->id.id);
-+                      put_device(&core->dev);
-                       continue;
-               }
-               core->dev_registered = true;
---- a/include/linux/bcma/bcma.h
-+++ b/include/linux/bcma/bcma.h
-@@ -418,7 +418,14 @@ static inline void bcma_maskset16(struct
-       bcma_write16(cc, offset, (bcma_read16(cc, offset) & mask) | set);
- }
--extern struct bcma_device *bcma_find_core(struct bcma_bus *bus, u16 coreid);
-+extern struct bcma_device *bcma_find_core_unit(struct bcma_bus *bus, u16 coreid,
-+                                             u8 unit);
-+static inline struct bcma_device *bcma_find_core(struct bcma_bus *bus,
-+                                               u16 coreid)
-+{
-+      return bcma_find_core_unit(bus, coreid, 0);
-+}
-+
- extern bool bcma_core_is_enabled(struct bcma_device *core);
- extern void bcma_core_disable(struct bcma_device *core, u32 flags);
- extern int bcma_core_enable(struct bcma_device *core, u32 flags);
---- a/include/linux/bcma/bcma_driver_chipcommon.h
-+++ b/include/linux/bcma/bcma_driver_chipcommon.h
-@@ -640,6 +640,7 @@ struct bcma_drv_cc {
-       spinlock_t gpio_lock;
- #ifdef CONFIG_BCMA_DRIVER_GPIO
-       struct gpio_chip gpio;
-+      struct irq_domain *irq_domain;
- #endif
- };
diff --git a/target/linux/generic/patches-3.12/060-hso_devices.patch b/target/linux/generic/patches-3.12/060-hso_devices.patch
deleted file mode 100644 (file)
index 6196345..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
---- a/drivers/net/usb/hso.c
-+++ b/drivers/net/usb/hso.c
-@@ -468,8 +468,10 @@ static const struct usb_device_id hso_id
-       {USB_DEVICE(0x0af0, 0x8400)},
-       {USB_DEVICE(0x0af0, 0x8600)},
-       {USB_DEVICE(0x0af0, 0x8800)},
--      {USB_DEVICE(0x0af0, 0x8900)},
--      {USB_DEVICE(0x0af0, 0x9000)},
-+      {USB_DEVICE(0x0af0, 0x8900)},  /* GTM 67xx */
-+      {USB_DEVICE(0x0af0, 0x9000)},  /* GTM 66xx */
-+      {USB_DEVICE(0x0af0, 0x9200)},  /* GTM 67xxWFS */
-+      {USB_DEVICE(0x0af0, 0x9300)},  /* GTM 66xxWFS */
-       {USB_DEVICE(0x0af0, 0xd035)},
-       {USB_DEVICE(0x0af0, 0xd055)},
-       {USB_DEVICE(0x0af0, 0xd155)},
---- a/drivers/usb/storage/unusual_devs.h
-+++ b/drivers/usb/storage/unusual_devs.h
-@@ -1266,6 +1266,18 @@ UNUSUAL_DEV( 0x0af0, 0x8304, 0x0000, 0x0
-               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-               0 ),
-+UNUSUAL_DEV( 0x0af0, 0x9200, 0x0000, 0x0000,
-+              "Option",
-+              "Globetrotter 67xxWFS SD-Card",
-+              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-+              0 ),
-+
-+UNUSUAL_DEV( 0x0af0, 0x9300, 0x0000, 0x0000,
-+              "Option",
-+              "Globetrotter 66xxWFS SD-Card",
-+              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-+              0 ),
-+
- UNUSUAL_DEV( 0x0af0, 0xc100, 0x0000, 0x0000,
-               "Option",
-               "GI 070x SD-Card",
diff --git a/target/linux/generic/patches-3.12/061-arm_xz_decompressor_build_fix.patch b/target/linux/generic/patches-3.12/061-arm_xz_decompressor_build_fix.patch
deleted file mode 100644 (file)
index e69ca25..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/arm/boot/compressed/decompress.c
-+++ b/arch/arm/boot/compressed/decompress.c
-@@ -48,6 +48,7 @@ extern char * strstr(const char * s1, co
- #ifdef CONFIG_KERNEL_XZ
- #define memmove memmove
- #define memcpy memcpy
-+extern char * strstr(const char *, const char *);
- #include "../../../../lib/decompress_unxz.c"
- #endif
diff --git a/target/linux/generic/patches-3.12/062-mips_decompressor_build_fix.patch b/target/linux/generic/patches-3.12/062-mips_decompressor_build_fix.patch
deleted file mode 100644 (file)
index 52c45c3..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 0db3db45f5bd6df4bdc03bbd5dec672e16164c4e Mon Sep 17 00:00:00 2001
-From: Florian Fainelli <florian@openwrt.org>
-Date: Mon, 12 Nov 2012 12:31:55 +0100
-Subject: [PATCH] MIPS: decompressor: fix build failure on memcpy() in
- decompress.c
-
-The decompress.c file includes linux/kernel.h which causes the following
-inclusion chain to be pulled:
-linux/kernel.h ->
-       linux/dynamic_debug.h ->
-               linux/string.h ->
-                       asm/string.h
-
-We end up having a the GCC builtin + architecture specific memcpy() expanding
-into this:
-
-void *({ size_t __len = (size_t n); void *__ret; if
-(__builtin_constant_p(size_t n) && __len >= 64) __ret = memcpy((void *dest),
-(const void *src), __len); else __ret = __builtin_memcpy((void *dest), (const
-void *src), __len); __ret; })
-{
- [memcpy implementation in decompress.c starts here]
- int i;
- const char *s = src;
- char *d = dest;
-
- for (i = 0; i < n; i++)
-  d[i] = s[i];
- return dest;
-}
-
-raising the following compilation error:
-arch/mips/boot/compressed/decompress.c:46:8: error: expected identifier or '('
-before '{' token
-
-There are at least three possibilities to fix this issue:
-
-1) define _LINUX_STRING_H_ at the beginning of decompress.c to prevent
-   further linux/string.h definitions and declarations from being used, and add
-   an explicit strstr() declaration for linux/dynamic_debug.h
-
-2) remove the inclusion of linux/kernel.h because we actually use no definition
-   or declaration from this header file
-
-3) undefine memcpy or re-define memcpy to memcpy thus resulting in picking up
-   the local memcpy() implementation to this compilation unit
-
-This patch uses the second option which is the less intrusive one.
-
-Signed-off-by: Florian Fainelli <florian@openwrt.org>
----
- arch/mips/boot/compressed/decompress.c |    2 --
- 1 file changed, 2 deletions(-)
-
---- a/arch/mips/boot/compressed/decompress.c
-+++ b/arch/mips/boot/compressed/decompress.c
-@@ -10,9 +10,7 @@
-  * Free Software Foundation;  either version 2 of the  License, or (at your
-  * option) any later version.
-  */
--
- #include <linux/types.h>
--#include <linux/kernel.h>
- #include <asm/addrspace.h>
diff --git a/target/linux/generic/patches-3.12/100-overlayfs.patch b/target/linux/generic/patches-3.12/100-overlayfs.patch
deleted file mode 100644 (file)
index 3741924..0000000
+++ /dev/null
@@ -1,3230 +0,0 @@
---- a/Documentation/filesystems/Locking
-+++ b/Documentation/filesystems/Locking
-@@ -65,6 +65,7 @@ prototypes:
-                               struct file *, unsigned open_flag,
-                               umode_t create_mode, int *opened);
-       int (*tmpfile) (struct inode *, struct dentry *, umode_t);
-+      int (*dentry_open)(struct dentry *, struct file *, const struct cred *);
- locking rules:
-       all may block
-@@ -93,6 +94,7 @@ fiemap:              no
- update_time:  no
- atomic_open:  yes
- tmpfile:      no
-+dentry_open:  no
-       Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
- victim.
---- /dev/null
-+++ b/Documentation/filesystems/overlayfs.txt
-@@ -0,0 +1,199 @@
-+Written by: Neil Brown <neilb@suse.de>
-+
-+Overlay Filesystem
-+==================
-+
-+This document describes a prototype for a new approach to providing
-+overlay-filesystem functionality in Linux (sometimes referred to as
-+union-filesystems).  An overlay-filesystem tries to present a
-+filesystem which is the result over overlaying one filesystem on top
-+of the other.
-+
-+The result will inevitably fail to look exactly like a normal
-+filesystem for various technical reasons.  The expectation is that
-+many use cases will be able to ignore these differences.
-+
-+This approach is 'hybrid' because the objects that appear in the
-+filesystem do not all appear to belong to that filesystem.  In many
-+cases an object accessed in the union will be indistinguishable
-+from accessing the corresponding object from the original filesystem.
-+This is most obvious from the 'st_dev' field returned by stat(2).
-+
-+While directories will report an st_dev from the overlay-filesystem,
-+all non-directory objects will report an st_dev from the lower or
-+upper filesystem that is providing the object.  Similarly st_ino will
-+only be unique when combined with st_dev, and both of these can change
-+over the lifetime of a non-directory object.  Many applications and
-+tools ignore these values and will not be affected.
-+
-+Upper and Lower
-+---------------
-+
-+An overlay filesystem combines two filesystems - an 'upper' filesystem
-+and a 'lower' filesystem.  When a name exists in both filesystems, the
-+object in the 'upper' filesystem is visible while the object in the
-+'lower' filesystem is either hidden or, in the case of directories,
-+merged with the 'upper' object.
-+
-+It would be more correct to refer to an upper and lower 'directory
-+tree' rather than 'filesystem' as it is quite possible for both
-+directory trees to be in the same filesystem and there is no
-+requirement that the root of a filesystem be given for either upper or
-+lower.
-+
-+The lower filesystem can be any filesystem supported by Linux and does
-+not need to be writable.  The lower filesystem can even be another
-+overlayfs.  The upper filesystem will normally be writable and if it
-+is it must support the creation of trusted.* extended attributes, and
-+must provide valid d_type in readdir responses, at least for symbolic
-+links - so NFS is not suitable.
-+
-+A read-only overlay of two read-only filesystems may use any
-+filesystem type.
-+
-+Directories
-+-----------
-+
-+Overlaying mainly involves directories.  If a given name appears in both
-+upper and lower filesystems and refers to a non-directory in either,
-+then the lower object is hidden - the name refers only to the upper
-+object.
-+
-+Where both upper and lower objects are directories, a merged directory
-+is formed.
-+
-+At mount time, the two directories given as mount options are combined
-+into a merged directory:
-+
-+  mount -t overlayfs overlayfs -olowerdir=/lower,upperdir=/upper /overlay
-+
-+Then whenever a lookup is requested in such a merged directory, the
-+lookup is performed in each actual directory and the combined result
-+is cached in the dentry belonging to the overlay filesystem.  If both
-+actual lookups find directories, both are stored and a merged
-+directory is created, otherwise only one is stored: the upper if it
-+exists, else the lower.
-+
-+Only the lists of names from directories are merged.  Other content
-+such as metadata and extended attributes are reported for the upper
-+directory only.  These attributes of the lower directory are hidden.
-+
-+whiteouts and opaque directories
-+--------------------------------
-+
-+In order to support rm and rmdir without changing the lower
-+filesystem, an overlay filesystem needs to record in the upper filesystem
-+that files have been removed.  This is done using whiteouts and opaque
-+directories (non-directories are always opaque).
-+
-+The overlay filesystem uses extended attributes with a
-+"trusted.overlay."  prefix to record these details.
-+
-+A whiteout is created as a symbolic link with target
-+"(overlay-whiteout)" and with xattr "trusted.overlay.whiteout" set to "y".
-+When a whiteout is found in the upper level of a merged directory, any
-+matching name in the lower level is ignored, and the whiteout itself
-+is also hidden.
-+
-+A directory is made opaque by setting the xattr "trusted.overlay.opaque"
-+to "y".  Where the upper filesystem contains an opaque directory, any
-+directory in the lower filesystem with the same name is ignored.
-+
-+readdir
-+-------
-+
-+When a 'readdir' request is made on a merged directory, the upper and
-+lower directories are each read and the name lists merged in the
-+obvious way (upper is read first, then lower - entries that already
-+exist are not re-added).  This merged name list is cached in the
-+'struct file' and so remains as long as the file is kept open.  If the
-+directory is opened and read by two processes at the same time, they
-+will each have separate caches.  A seekdir to the start of the
-+directory (offset 0) followed by a readdir will cause the cache to be
-+discarded and rebuilt.
-+
-+This means that changes to the merged directory do not appear while a
-+directory is being read.  This is unlikely to be noticed by many
-+programs.
-+
-+seek offsets are assigned sequentially when the directories are read.
-+Thus if
-+  - read part of a directory
-+  - remember an offset, and close the directory
-+  - re-open the directory some time later
-+  - seek to the remembered offset
-+
-+there may be little correlation between the old and new locations in
-+the list of filenames, particularly if anything has changed in the
-+directory.
-+
-+Readdir on directories that are not merged is simply handled by the
-+underlying directory (upper or lower).
-+
-+
-+Non-directories
-+---------------
-+
-+Objects that are not directories (files, symlinks, device-special
-+files etc.) are presented either from the upper or lower filesystem as
-+appropriate.  When a file in the lower filesystem is accessed in a way
-+the requires write-access, such as opening for write access, changing
-+some metadata etc., the file is first copied from the lower filesystem
-+to the upper filesystem (copy_up).  Note that creating a hard-link
-+also requires copy_up, though of course creation of a symlink does
-+not.
-+
-+The copy_up may turn out to be unnecessary, for example if the file is
-+opened for read-write but the data is not modified.
-+
-+The copy_up process first makes sure that the containing directory
-+exists in the upper filesystem - creating it and any parents as
-+necessary.  It then creates the object with the same metadata (owner,
-+mode, mtime, symlink-target etc.) and then if the object is a file, the
-+data is copied from the lower to the upper filesystem.  Finally any
-+extended attributes are copied up.
-+
-+Once the copy_up is complete, the overlay filesystem simply
-+provides direct access to the newly created file in the upper
-+filesystem - future operations on the file are barely noticed by the
-+overlay filesystem (though an operation on the name of the file such as
-+rename or unlink will of course be noticed and handled).
-+
-+
-+Non-standard behavior
-+---------------------
-+
-+The copy_up operation essentially creates a new, identical file and
-+moves it over to the old name.  The new file may be on a different
-+filesystem, so both st_dev and st_ino of the file may change.
-+
-+Any open files referring to this inode will access the old data and
-+metadata.  Similarly any file locks obtained before copy_up will not
-+apply to the copied up file.
-+
-+On a file opened with O_RDONLY fchmod(2), fchown(2), futimesat(2) and
-+fsetxattr(2) will fail with EROFS.
-+
-+If a file with multiple hard links is copied up, then this will
-+"break" the link.  Changes will not be propagated to other names
-+referring to the same inode.
-+
-+Symlinks in /proc/PID/ and /proc/PID/fd which point to a non-directory
-+object in overlayfs will not contain valid absolute paths, only
-+relative paths leading up to the filesystem's root.  This will be
-+fixed in the future.
-+
-+Some operations are not atomic, for example a crash during copy_up or
-+rename will leave the filesystem in an inconsistent state.  This will
-+be addressed in the future.
-+
-+Changes to underlying filesystems
-+---------------------------------
-+
-+Offline changes, when the overlay is not mounted, are allowed to either
-+the upper or the lower trees.
-+
-+Changes to the underlying filesystems while part of a mounted overlay
-+filesystem are not allowed.  If the underlying filesystem is changed,
-+the behavior of the overlay is undefined, though it will not result in
-+a crash or deadlock.
---- a/Documentation/filesystems/vfs.txt
-+++ b/Documentation/filesystems/vfs.txt
-@@ -362,6 +362,7 @@ struct inode_operations {
-       int (*atomic_open)(struct inode *, struct dentry *, struct file *,
-                       unsigned open_flag, umode_t create_mode, int *opened);
-       int (*tmpfile) (struct inode *, struct dentry *, umode_t);
-+      int (*dentry_open)(struct dentry *, struct file *, const struct cred *);
- };
- Again, all methods are called without any locks being held, unless
-@@ -681,6 +682,12 @@ struct address_space_operations {
-       but instead uses bmap to find out where the blocks in the file
-       are and uses those addresses directly.
-+  dentry_open: this is an alternative to f_op->open(), the difference is that
-+      this method may open a file not necessarily originating from the same
-+      filesystem as the one i_op->open() was called on.  It may be
-+      useful for stacking filesystems which want to allow native I/O directly
-+      on underlying files.
-+
-   invalidatepage: If a page has PagePrivate set, then invalidatepage
-         will be called when part or all of the page is to be removed
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -6245,6 +6245,13 @@ F:      drivers/scsi/osd/
- F:    include/scsi/osd_*
- F:    fs/exofs/
-+OVERLAYFS FILESYSTEM
-+M:    Miklos Szeredi <miklos@szeredi.hu>
-+L:    linux-fsdevel@vger.kernel.org
-+S:    Supported
-+F:    fs/overlayfs/*
-+F:    Documentation/filesystems/overlayfs.txt
-+
- P54 WIRELESS DRIVER
- M:    Christian Lamparter <chunkeey@googlemail.com>
- L:    linux-wireless@vger.kernel.org
---- a/fs/Kconfig
-+++ b/fs/Kconfig
-@@ -67,6 +67,7 @@ source "fs/quota/Kconfig"
- source "fs/autofs4/Kconfig"
- source "fs/fuse/Kconfig"
-+source "fs/overlayfs/Kconfig"
- config GENERIC_ACL
-       bool
---- a/fs/Makefile
-+++ b/fs/Makefile
-@@ -105,6 +105,7 @@ obj-$(CONFIG_QNX6FS_FS)            += qnx6/
- obj-$(CONFIG_AUTOFS4_FS)      += autofs4/
- obj-$(CONFIG_ADFS_FS)         += adfs/
- obj-$(CONFIG_FUSE_FS)         += fuse/
-+obj-$(CONFIG_OVERLAYFS_FS)    += overlayfs/
- obj-$(CONFIG_UDF_FS)          += udf/
- obj-$(CONFIG_SUN_OPENPROMFS)  += openpromfs/
- obj-$(CONFIG_OMFS_FS)         += omfs/
---- a/fs/ecryptfs/main.c
-+++ b/fs/ecryptfs/main.c
-@@ -566,6 +566,13 @@ static struct dentry *ecryptfs_mount(str
-       s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
-       s->s_blocksize = path.dentry->d_sb->s_blocksize;
-       s->s_magic = ECRYPTFS_SUPER_MAGIC;
-+      s->s_stack_depth = path.dentry->d_sb->s_stack_depth + 1;
-+
-+      rc = -EINVAL;
-+      if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
-+              pr_err("eCryptfs: maximum fs stacking depth exceeded\n");
-+              goto out_free;
-+      }
-       inode = ecryptfs_get_inode(path.dentry->d_inode, s);
-       rc = PTR_ERR(inode);
---- a/fs/internal.h
-+++ b/fs/internal.h
-@@ -44,7 +44,6 @@ extern void __init chrdev_init(void);
- /*
-  * namei.c
-  */
--extern int __inode_permission(struct inode *, int);
- extern int user_path_mountpoint_at(int, const char __user *, unsigned int, struct path *);
- extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
-                          const char *, unsigned int, struct path *);
-@@ -142,12 +141,6 @@ extern ssize_t __kernel_write(struct fil
- extern int rw_verify_area(int, struct file *, const loff_t *, size_t);
- /*
-- * splice.c
-- */
--extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
--              loff_t *opos, size_t len, unsigned int flags);
--
--/*
-  * pipe.c
-  */
- extern const struct file_operations pipefifo_fops;
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -402,6 +402,7 @@ int __inode_permission(struct inode *ino
-       return security_inode_permission(inode, mask);
- }
-+EXPORT_SYMBOL(__inode_permission);
- /**
-  * sb_permission - Check superblock-level permissions
-@@ -3065,9 +3066,12 @@ finish_open_created:
-       error = may_open(&nd->path, acc_mode, open_flag);
-       if (error)
-               goto out;
--      file->f_path.mnt = nd->path.mnt;
--      error = finish_open(file, nd->path.dentry, NULL, opened);
--      if (error) {
-+
-+      BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */
-+      error = vfs_open(&nd->path, file, current_cred());
-+      if (!error) {
-+              *opened |= FILE_OPENED;
-+      } else {
-               if (error == -EOPENSTALE)
-                       goto stale_open;
-               goto out;
---- a/fs/namespace.c
-+++ b/fs/namespace.c
-@@ -1466,6 +1466,33 @@ void drop_collected_mounts(struct vfsmou
-       namespace_unlock();
- }
-+/**
-+ * clone_private_mount - create a private clone of a path
-+ *
-+ * This creates a new vfsmount, which will be the clone of @path.  The new will
-+ * not be attached anywhere in the namespace and will be private (i.e. changes
-+ * to the originating mount won't be propagated into this).
-+ *
-+ * Release with mntput().
-+ */
-+struct vfsmount *clone_private_mount(struct path *path)
-+{
-+      struct mount *old_mnt = real_mount(path->mnt);
-+      struct mount *new_mnt;
-+
-+      if (IS_MNT_UNBINDABLE(old_mnt))
-+              return ERR_PTR(-EINVAL);
-+
-+      down_read(&namespace_sem);
-+      new_mnt = clone_mnt(old_mnt, path->dentry, CL_PRIVATE);
-+      up_read(&namespace_sem);
-+      if (IS_ERR(new_mnt))
-+              return ERR_CAST(new_mnt);
-+
-+      return &new_mnt->mnt;
-+}
-+EXPORT_SYMBOL_GPL(clone_private_mount);
-+
- int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
-                  struct vfsmount *root)
- {
---- a/fs/open.c
-+++ b/fs/open.c
-@@ -814,8 +814,7 @@ struct file *dentry_open(const struct pa
-       f = get_empty_filp();
-       if (!IS_ERR(f)) {
-               f->f_flags = flags;
--              f->f_path = *path;
--              error = do_dentry_open(f, NULL, cred);
-+              error = vfs_open(path, f, cred);
-               if (!error) {
-                       /* from now on we need fput() to dispose of f */
-                       error = open_check_o_direct(f);
-@@ -832,6 +831,26 @@ struct file *dentry_open(const struct pa
- }
- EXPORT_SYMBOL(dentry_open);
-+/**
-+ * vfs_open - open the file at the given path
-+ * @path: path to open
-+ * @filp: newly allocated file with f_flag initialized
-+ * @cred: credentials to use
-+ */
-+int vfs_open(const struct path *path, struct file *filp,
-+           const struct cred *cred)
-+{
-+      struct inode *inode = path->dentry->d_inode;
-+
-+      if (inode->i_op->dentry_open)
-+              return inode->i_op->dentry_open(path->dentry, filp, cred);
-+      else {
-+              filp->f_path = *path;
-+              return do_dentry_open(filp, NULL, cred);
-+      }
-+}
-+EXPORT_SYMBOL(vfs_open);
-+
- static inline int build_open_flags(int flags, umode_t mode, struct open_flags *op)
- {
-       int lookup_flags = 0;
---- /dev/null
-+++ b/fs/overlayfs/Kconfig
-@@ -0,0 +1,10 @@
-+config OVERLAYFS_FS
-+      tristate "Overlay filesystem support"
-+      help
-+        An overlay filesystem combines two filesystems - an 'upper' filesystem
-+        and a 'lower' filesystem.  When a name exists in both filesystems, the
-+        object in the 'upper' filesystem is visible while the object in the
-+        'lower' filesystem is either hidden or, in the case of directories,
-+        merged with the 'upper' object.
-+
-+        For more information see Documentation/filesystems/overlayfs.txt
---- /dev/null
-+++ b/fs/overlayfs/Makefile
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the overlay filesystem.
-+#
-+
-+obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
-+
-+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
---- /dev/null
-+++ b/fs/overlayfs/copy_up.c
-@@ -0,0 +1,388 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/fs.h>
-+#include <linux/slab.h>
-+#include <linux/file.h>
-+#include <linux/splice.h>
-+#include <linux/xattr.h>
-+#include <linux/security.h>
-+#include <linux/uaccess.h>
-+#include <linux/sched.h>
-+#include "overlayfs.h"
-+
-+#define OVL_COPY_UP_CHUNK_SIZE (1 << 20)
-+
-+static int ovl_copy_up_xattr(struct dentry *old, struct dentry *new)
-+{
-+      ssize_t list_size, size;
-+      char *buf, *name, *value;
-+      int error;
-+
-+      if (!old->d_inode->i_op->getxattr ||
-+          !new->d_inode->i_op->getxattr)
-+              return 0;
-+
-+      list_size = vfs_listxattr(old, NULL, 0);
-+      if (list_size <= 0) {
-+              if (list_size == -EOPNOTSUPP)
-+                      return 0;
-+              return list_size;
-+      }
-+
-+      buf = kzalloc(list_size, GFP_KERNEL);
-+      if (!buf)
-+              return -ENOMEM;
-+
-+      error = -ENOMEM;
-+      value = kmalloc(XATTR_SIZE_MAX, GFP_KERNEL);
-+      if (!value)
-+              goto out;
-+
-+      list_size = vfs_listxattr(old, buf, list_size);
-+      if (list_size <= 0) {
-+              error = list_size;
-+              goto out_free_value;
-+      }
-+
-+      for (name = buf; name < (buf + list_size); name += strlen(name) + 1) {
-+              size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX);
-+              if (size <= 0) {
-+                      error = size;
-+                      goto out_free_value;
-+              }
-+              error = vfs_setxattr(new, name, value, size, 0);
-+              if (error)
-+                      goto out_free_value;
-+      }
-+
-+out_free_value:
-+      kfree(value);
-+out:
-+      kfree(buf);
-+      return error;
-+}
-+
-+static int ovl_copy_up_data(struct path *old, struct path *new, loff_t len)
-+{
-+      struct file *old_file;
-+      struct file *new_file;
-+      loff_t old_pos = 0;
-+      loff_t new_pos = 0;
-+      int error = 0;
-+
-+      if (len == 0)
-+              return 0;
-+
-+      old_file = ovl_path_open(old, O_RDONLY);
-+      if (IS_ERR(old_file))
-+              return PTR_ERR(old_file);
-+
-+      new_file = ovl_path_open(new, O_WRONLY);
-+      if (IS_ERR(new_file)) {
-+              error = PTR_ERR(new_file);
-+              goto out_fput;
-+      }
-+
-+      /* FIXME: copy up sparse files efficiently */
-+      while (len) {
-+              size_t this_len = OVL_COPY_UP_CHUNK_SIZE;
-+              long bytes;
-+
-+              if (len < this_len)
-+                      this_len = len;
-+
-+              if (signal_pending_state(TASK_KILLABLE, current)) {
-+                      error = -EINTR;
-+                      break;
-+              }
-+
-+              bytes = do_splice_direct(old_file, &old_pos,
-+                                       new_file, &new_pos,
-+                                       this_len, SPLICE_F_MOVE);
-+              if (bytes <= 0) {
-+                      error = bytes;
-+                      break;
-+              }
-+              WARN_ON(old_pos != new_pos);
-+
-+              len -= bytes;
-+      }
-+
-+      fput(new_file);
-+out_fput:
-+      fput(old_file);
-+      return error;
-+}
-+
-+static char *ovl_read_symlink(struct dentry *realdentry)
-+{
-+      int res;
-+      char *buf;
-+      struct inode *inode = realdentry->d_inode;
-+      mm_segment_t old_fs;
-+
-+      res = -EINVAL;
-+      if (!inode->i_op->readlink)
-+              goto err;
-+
-+      res = -ENOMEM;
-+      buf = (char *) __get_free_page(GFP_KERNEL);
-+      if (!buf)
-+              goto err;
-+
-+      old_fs = get_fs();
-+      set_fs(get_ds());
-+      /* The cast to a user pointer is valid due to the set_fs() */
-+      res = inode->i_op->readlink(realdentry,
-+                                  (char __user *)buf, PAGE_SIZE - 1);
-+      set_fs(old_fs);
-+      if (res < 0) {
-+              free_page((unsigned long) buf);
-+              goto err;
-+      }
-+      buf[res] = '\0';
-+
-+      return buf;
-+
-+err:
-+      return ERR_PTR(res);
-+}
-+
-+static int ovl_set_timestamps(struct dentry *upperdentry, struct kstat *stat)
-+{
-+      struct iattr attr = {
-+              .ia_valid =
-+                   ATTR_ATIME | ATTR_MTIME | ATTR_ATIME_SET | ATTR_MTIME_SET,
-+              .ia_atime = stat->atime,
-+              .ia_mtime = stat->mtime,
-+      };
-+
-+      return notify_change(upperdentry, &attr);
-+}
-+
-+static int ovl_set_mode(struct dentry *upperdentry, umode_t mode)
-+{
-+      struct iattr attr = {
-+              .ia_valid = ATTR_MODE,
-+              .ia_mode = mode,
-+      };
-+
-+      return notify_change(upperdentry, &attr);
-+}
-+
-+static int ovl_copy_up_locked(struct dentry *upperdir, struct dentry *dentry,
-+                            struct path *lowerpath, struct kstat *stat,
-+                            const char *link)
-+{
-+      int err;
-+      struct path newpath;
-+      umode_t mode = stat->mode;
-+
-+      /* Can't properly set mode on creation because of the umask */
-+      stat->mode &= S_IFMT;
-+
-+      ovl_path_upper(dentry, &newpath);
-+      WARN_ON(newpath.dentry);
-+      newpath.dentry = ovl_upper_create(upperdir, dentry, stat, link);
-+      if (IS_ERR(newpath.dentry))
-+              return PTR_ERR(newpath.dentry);
-+
-+      if (S_ISREG(stat->mode)) {
-+              err = ovl_copy_up_data(lowerpath, &newpath, stat->size);
-+              if (err)
-+                      goto err_remove;
-+      }
-+
-+      err = ovl_copy_up_xattr(lowerpath->dentry, newpath.dentry);
-+      if (err)
-+              goto err_remove;
-+
-+      mutex_lock(&newpath.dentry->d_inode->i_mutex);
-+      if (!S_ISLNK(stat->mode))
-+              err = ovl_set_mode(newpath.dentry, mode);
-+      if (!err)
-+              err = ovl_set_timestamps(newpath.dentry, stat);
-+      mutex_unlock(&newpath.dentry->d_inode->i_mutex);
-+      if (err)
-+              goto err_remove;
-+
-+      ovl_dentry_update(dentry, newpath.dentry);
-+
-+      /*
-+       * Easiest way to get rid of the lower dentry reference is to
-+       * drop this dentry.  This is neither needed nor possible for
-+       * directories.
-+       */
-+      if (!S_ISDIR(stat->mode))
-+              d_drop(dentry);
-+
-+      return 0;
-+
-+err_remove:
-+      if (S_ISDIR(stat->mode))
-+              vfs_rmdir(upperdir->d_inode, newpath.dentry);
-+      else
-+              vfs_unlink(upperdir->d_inode, newpath.dentry);
-+
-+      dput(newpath.dentry);
-+
-+      return err;
-+}
-+
-+/*
-+ * Copy up a single dentry
-+ *
-+ * Directory renames only allowed on "pure upper" (already created on
-+ * upper filesystem, never copied up).  Directories which are on lower or
-+ * are merged may not be renamed.  For these -EXDEV is returned and
-+ * userspace has to deal with it.  This means, when copying up a
-+ * directory we can rely on it and ancestors being stable.
-+ *
-+ * Non-directory renames start with copy up of source if necessary.  The
-+ * actual rename will only proceed once the copy up was successful.  Copy
-+ * up uses upper parent i_mutex for exclusion.  Since rename can change
-+ * d_parent it is possible that the copy up will lock the old parent.  At
-+ * that point the file will have already been copied up anyway.
-+ */
-+static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry,
-+                         struct path *lowerpath, struct kstat *stat)
-+{
-+      int err;
-+      struct kstat pstat;
-+      struct path parentpath;
-+      struct dentry *upperdir;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+      char *link = NULL;
-+
-+      ovl_path_upper(parent, &parentpath);
-+      upperdir = parentpath.dentry;
-+
-+      err = vfs_getattr(&parentpath, &pstat);
-+      if (err)
-+              return err;
-+
-+      if (S_ISLNK(stat->mode)) {
-+              link = ovl_read_symlink(lowerpath->dentry);
-+              if (IS_ERR(link))
-+                      return PTR_ERR(link);
-+      }
-+
-+      err = -ENOMEM;
-+      override_cred = prepare_creds();
-+      if (!override_cred)
-+              goto out_free_link;
-+
-+      override_cred->fsuid = stat->uid;
-+      override_cred->fsgid = stat->gid;
-+      /*
-+       * CAP_SYS_ADMIN for copying up extended attributes
-+       * CAP_DAC_OVERRIDE for create
-+       * CAP_FOWNER for chmod, timestamp update
-+       * CAP_FSETID for chmod
-+       * CAP_MKNOD for mknod
-+       */
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+      cap_raise(override_cred->cap_effective, CAP_FOWNER);
-+      cap_raise(override_cred->cap_effective, CAP_FSETID);
-+      cap_raise(override_cred->cap_effective, CAP_MKNOD);
-+      old_cred = override_creds(override_cred);
-+
-+      mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT);
-+      if (ovl_path_type(dentry) != OVL_PATH_LOWER) {
-+              err = 0;
-+      } else {
-+              err = ovl_copy_up_locked(upperdir, dentry, lowerpath,
-+                                       stat, link);
-+              if (!err) {
-+                      /* Restore timestamps on parent (best effort) */
-+                      ovl_set_timestamps(upperdir, &pstat);
-+              }
-+      }
-+
-+      mutex_unlock(&upperdir->d_inode->i_mutex);
-+
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+
-+out_free_link:
-+      if (link)
-+              free_page((unsigned long) link);
-+
-+      return err;
-+}
-+
-+int ovl_copy_up(struct dentry *dentry)
-+{
-+      int err;
-+
-+      err = 0;
-+      while (!err) {
-+              struct dentry *next;
-+              struct dentry *parent;
-+              struct path lowerpath;
-+              struct kstat stat;
-+              enum ovl_path_type type = ovl_path_type(dentry);
-+
-+              if (type != OVL_PATH_LOWER)
-+                      break;
-+
-+              next = dget(dentry);
-+              /* find the topmost dentry not yet copied up */
-+              for (;;) {
-+                      parent = dget_parent(next);
-+
-+                      type = ovl_path_type(parent);
-+                      if (type != OVL_PATH_LOWER)
-+                              break;
-+
-+                      dput(next);
-+                      next = parent;
-+              }
-+
-+              ovl_path_lower(next, &lowerpath);
-+              err = vfs_getattr(&lowerpath, &stat);
-+              if (!err)
-+                      err = ovl_copy_up_one(parent, next, &lowerpath, &stat);
-+
-+              dput(parent);
-+              dput(next);
-+      }
-+
-+      return err;
-+}
-+
-+/* Optimize by not copying up the file first and truncating later */
-+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size)
-+{
-+      int err;
-+      struct kstat stat;
-+      struct path lowerpath;
-+      struct dentry *parent = dget_parent(dentry);
-+
-+      err = ovl_copy_up(parent);
-+      if (err)
-+              goto out_dput_parent;
-+
-+      ovl_path_lower(dentry, &lowerpath);
-+      err = vfs_getattr(&lowerpath, &stat);
-+      if (err)
-+              goto out_dput_parent;
-+
-+      if (size < stat.size)
-+              stat.size = size;
-+
-+      err = ovl_copy_up_one(parent, dentry, &lowerpath, &stat);
-+
-+out_dput_parent:
-+      dput(parent);
-+      return err;
-+}
---- /dev/null
-+++ b/fs/overlayfs/dir.c
-@@ -0,0 +1,605 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/fs.h>
-+#include <linux/namei.h>
-+#include <linux/xattr.h>
-+#include <linux/security.h>
-+#include <linux/cred.h>
-+#include "overlayfs.h"
-+
-+static const char *ovl_whiteout_symlink = "(overlay-whiteout)";
-+
-+static int ovl_whiteout(struct dentry *upperdir, struct dentry *dentry)
-+{
-+      int err;
-+      struct dentry *newdentry;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+
-+      /* FIXME: recheck lower dentry to see if whiteout is really needed */
-+
-+      err = -ENOMEM;
-+      override_cred = prepare_creds();
-+      if (!override_cred)
-+              goto out;
-+
-+      /*
-+       * CAP_SYS_ADMIN for setxattr
-+       * CAP_DAC_OVERRIDE for symlink creation
-+       * CAP_FOWNER for unlink in sticky directory
-+       */
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+      cap_raise(override_cred->cap_effective, CAP_FOWNER);
-+      override_cred->fsuid = GLOBAL_ROOT_UID;
-+      override_cred->fsgid = GLOBAL_ROOT_GID;
-+      old_cred = override_creds(override_cred);
-+
-+      newdentry = lookup_one_len(dentry->d_name.name, upperdir,
-+                                 dentry->d_name.len);
-+      err = PTR_ERR(newdentry);
-+      if (IS_ERR(newdentry))
-+              goto out_put_cred;
-+
-+      /* Just been removed within the same locked region */
-+      WARN_ON(newdentry->d_inode);
-+
-+      err = vfs_symlink(upperdir->d_inode, newdentry, ovl_whiteout_symlink);
-+      if (err)
-+              goto out_dput;
-+
-+      ovl_dentry_version_inc(dentry->d_parent);
-+
-+      err = vfs_setxattr(newdentry, ovl_whiteout_xattr, "y", 1, 0);
-+      if (err)
-+              vfs_unlink(upperdir->d_inode, newdentry);
-+
-+out_dput:
-+      dput(newdentry);
-+out_put_cred:
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+out:
-+      if (err) {
-+              /*
-+               * There's no way to recover from failure to whiteout.
-+               * What should we do?  Log a big fat error and... ?
-+               */
-+              pr_err("overlayfs: ERROR - failed to whiteout '%s'\n",
-+                     dentry->d_name.name);
-+      }
-+
-+      return err;
-+}
-+
-+static struct dentry *ovl_lookup_create(struct dentry *upperdir,
-+                                      struct dentry *template)
-+{
-+      int err;
-+      struct dentry *newdentry;
-+      struct qstr *name = &template->d_name;
-+
-+      newdentry = lookup_one_len(name->name, upperdir, name->len);
-+      if (IS_ERR(newdentry))
-+              return newdentry;
-+
-+      if (newdentry->d_inode) {
-+              const struct cred *old_cred;
-+              struct cred *override_cred;
-+
-+              /* No need to check whiteout if lower parent is non-existent */
-+              err = -EEXIST;
-+              if (!ovl_dentry_lower(template->d_parent))
-+                      goto out_dput;
-+
-+              if (!S_ISLNK(newdentry->d_inode->i_mode))
-+                      goto out_dput;
-+
-+              err = -ENOMEM;
-+              override_cred = prepare_creds();
-+              if (!override_cred)
-+                      goto out_dput;
-+
-+              /*
-+               * CAP_SYS_ADMIN for getxattr
-+               * CAP_FOWNER for unlink in sticky directory
-+               */
-+              cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+              cap_raise(override_cred->cap_effective, CAP_FOWNER);
-+              old_cred = override_creds(override_cred);
-+
-+              err = -EEXIST;
-+              if (ovl_is_whiteout(newdentry))
-+                      err = vfs_unlink(upperdir->d_inode, newdentry);
-+
-+              revert_creds(old_cred);
-+              put_cred(override_cred);
-+              if (err)
-+                      goto out_dput;
-+
-+              dput(newdentry);
-+              newdentry = lookup_one_len(name->name, upperdir, name->len);
-+              if (IS_ERR(newdentry)) {
-+                      ovl_whiteout(upperdir, template);
-+                      return newdentry;
-+              }
-+
-+              /*
-+               * Whiteout just been successfully removed, parent
-+               * i_mutex is still held, there's no way the lookup
-+               * could return positive.
-+               */
-+              WARN_ON(newdentry->d_inode);
-+      }
-+
-+      return newdentry;
-+
-+out_dput:
-+      dput(newdentry);
-+      return ERR_PTR(err);
-+}
-+
-+struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry,
-+                              struct kstat *stat, const char *link)
-+{
-+      int err;
-+      struct dentry *newdentry;
-+      struct inode *dir = upperdir->d_inode;
-+
-+      newdentry = ovl_lookup_create(upperdir, dentry);
-+      if (IS_ERR(newdentry))
-+              goto out;
-+
-+      switch (stat->mode & S_IFMT) {
-+      case S_IFREG:
-+              err = vfs_create(dir, newdentry, stat->mode, NULL);
-+              break;
-+
-+      case S_IFDIR:
-+              err = vfs_mkdir(dir, newdentry, stat->mode);
-+              break;
-+
-+      case S_IFCHR:
-+      case S_IFBLK:
-+      case S_IFIFO:
-+      case S_IFSOCK:
-+              err = vfs_mknod(dir, newdentry, stat->mode, stat->rdev);
-+              break;
-+
-+      case S_IFLNK:
-+              err = vfs_symlink(dir, newdentry, link);
-+              break;
-+
-+      default:
-+              err = -EPERM;
-+      }
-+      if (err) {
-+              if (ovl_dentry_is_opaque(dentry))
-+                      ovl_whiteout(upperdir, dentry);
-+              dput(newdentry);
-+              newdentry = ERR_PTR(err);
-+      } else if (WARN_ON(!newdentry->d_inode)) {
-+              /*
-+               * Not quite sure if non-instantiated dentry is legal or not.
-+               * VFS doesn't seem to care so check and warn here.
-+               */
-+              dput(newdentry);
-+              newdentry = ERR_PTR(-ENOENT);
-+      }
-+
-+out:
-+      return newdentry;
-+
-+}
-+
-+static int ovl_set_opaque(struct dentry *upperdentry)
-+{
-+      int err;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+
-+      override_cred = prepare_creds();
-+      if (!override_cred)
-+              return -ENOMEM;
-+
-+      /* CAP_SYS_ADMIN for setxattr of "trusted" namespace */
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      old_cred = override_creds(override_cred);
-+      err = vfs_setxattr(upperdentry, ovl_opaque_xattr, "y", 1, 0);
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+
-+      return err;
-+}
-+
-+static int ovl_remove_opaque(struct dentry *upperdentry)
-+{
-+      int err;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+
-+      override_cred = prepare_creds();
-+      if (!override_cred)
-+              return -ENOMEM;
-+
-+      /* CAP_SYS_ADMIN for removexattr of "trusted" namespace */
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      old_cred = override_creds(override_cred);
-+      err = vfs_removexattr(upperdentry, ovl_opaque_xattr);
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+
-+      return err;
-+}
-+
-+static int ovl_dir_getattr(struct vfsmount *mnt, struct dentry *dentry,
-+                       struct kstat *stat)
-+{
-+      int err;
-+      enum ovl_path_type type;
-+      struct path realpath;
-+
-+      type = ovl_path_real(dentry, &realpath);
-+      err = vfs_getattr(&realpath, stat);
-+      if (err)
-+              return err;
-+
-+      stat->dev = dentry->d_sb->s_dev;
-+      stat->ino = dentry->d_inode->i_ino;
-+
-+      /*
-+       * It's probably not worth it to count subdirs to get the
-+       * correct link count.  nlink=1 seems to pacify 'find' and
-+       * other utilities.
-+       */
-+      if (type == OVL_PATH_MERGE)
-+              stat->nlink = 1;
-+
-+      return 0;
-+}
-+
-+static int ovl_create_object(struct dentry *dentry, int mode, dev_t rdev,
-+                           const char *link)
-+{
-+      int err;
-+      struct dentry *newdentry;
-+      struct dentry *upperdir;
-+      struct inode *inode;
-+      struct kstat stat = {
-+              .mode = mode,
-+              .rdev = rdev,
-+      };
-+
-+      err = -ENOMEM;
-+      inode = ovl_new_inode(dentry->d_sb, mode, dentry->d_fsdata);
-+      if (!inode)
-+              goto out;
-+
-+      err = ovl_copy_up(dentry->d_parent);
-+      if (err)
-+              goto out_iput;
-+
-+      upperdir = ovl_dentry_upper(dentry->d_parent);
-+      mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT);
-+
-+      newdentry = ovl_upper_create(upperdir, dentry, &stat, link);
-+      err = PTR_ERR(newdentry);
-+      if (IS_ERR(newdentry))
-+              goto out_unlock;
-+
-+      ovl_dentry_version_inc(dentry->d_parent);
-+      if (ovl_dentry_is_opaque(dentry) && S_ISDIR(mode)) {
-+              err = ovl_set_opaque(newdentry);
-+              if (err) {
-+                      vfs_rmdir(upperdir->d_inode, newdentry);
-+                      ovl_whiteout(upperdir, dentry);
-+                      goto out_dput;
-+              }
-+      }
-+      ovl_dentry_update(dentry, newdentry);
-+      ovl_copyattr(newdentry->d_inode, inode);
-+      d_instantiate(dentry, inode);
-+      inode = NULL;
-+      newdentry = NULL;
-+      err = 0;
-+
-+out_dput:
-+      dput(newdentry);
-+out_unlock:
-+      mutex_unlock(&upperdir->d_inode->i_mutex);
-+out_iput:
-+      iput(inode);
-+out:
-+      return err;
-+}
-+
-+static int ovl_create(struct inode *dir, struct dentry *dentry, umode_t mode,
-+                    bool excl)
-+{
-+      return ovl_create_object(dentry, (mode & 07777) | S_IFREG, 0, NULL);
-+}
-+
-+static int ovl_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
-+{
-+      return ovl_create_object(dentry, (mode & 07777) | S_IFDIR, 0, NULL);
-+}
-+
-+static int ovl_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
-+                   dev_t rdev)
-+{
-+      return ovl_create_object(dentry, mode, rdev, NULL);
-+}
-+
-+static int ovl_symlink(struct inode *dir, struct dentry *dentry,
-+                       const char *link)
-+{
-+      return ovl_create_object(dentry, S_IFLNK, 0, link);
-+}
-+
-+static int ovl_do_remove(struct dentry *dentry, bool is_dir)
-+{
-+      int err;
-+      enum ovl_path_type type;
-+      struct path realpath;
-+      struct dentry *upperdir;
-+
-+      err = ovl_copy_up(dentry->d_parent);
-+      if (err)
-+              return err;
-+
-+      upperdir = ovl_dentry_upper(dentry->d_parent);
-+      mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT);
-+      type = ovl_path_real(dentry, &realpath);
-+      if (type != OVL_PATH_LOWER) {
-+              err = -ESTALE;
-+              if (realpath.dentry->d_parent != upperdir)
-+                      goto out_d_drop;
-+
-+              /* FIXME: create whiteout up front and rename to target */
-+
-+              if (is_dir)
-+                      err = vfs_rmdir(upperdir->d_inode, realpath.dentry);
-+              else
-+                      err = vfs_unlink(upperdir->d_inode, realpath.dentry);
-+              if (err)
-+                      goto out_d_drop;
-+
-+              ovl_dentry_version_inc(dentry->d_parent);
-+      }
-+
-+      if (type != OVL_PATH_UPPER || ovl_dentry_is_opaque(dentry))
-+              err = ovl_whiteout(upperdir, dentry);
-+
-+      /*
-+       * Keeping this dentry hashed would mean having to release
-+       * upperpath/lowerpath, which could only be done if we are the
-+       * sole user of this dentry.  Too tricky...  Just unhash for
-+       * now.
-+       */
-+out_d_drop:
-+      d_drop(dentry);
-+      mutex_unlock(&upperdir->d_inode->i_mutex);
-+
-+      return err;
-+}
-+
-+static int ovl_unlink(struct inode *dir, struct dentry *dentry)
-+{
-+      return ovl_do_remove(dentry, false);
-+}
-+
-+
-+static int ovl_rmdir(struct inode *dir, struct dentry *dentry)
-+{
-+      int err;
-+      enum ovl_path_type type;
-+
-+      type = ovl_path_type(dentry);
-+      if (type != OVL_PATH_UPPER) {
-+              err = ovl_check_empty_and_clear(dentry, type);
-+              if (err)
-+                      return err;
-+      }
-+
-+      return ovl_do_remove(dentry, true);
-+}
-+
-+static int ovl_link(struct dentry *old, struct inode *newdir,
-+                  struct dentry *new)
-+{
-+      int err;
-+      struct dentry *olddentry;
-+      struct dentry *newdentry;
-+      struct dentry *upperdir;
-+      struct inode *newinode;
-+
-+      err = ovl_copy_up(old);
-+      if (err)
-+              goto out;
-+
-+      err = ovl_copy_up(new->d_parent);
-+      if (err)
-+              goto out;
-+
-+      upperdir = ovl_dentry_upper(new->d_parent);
-+      mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT);
-+      newdentry = ovl_lookup_create(upperdir, new);
-+      err = PTR_ERR(newdentry);
-+      if (IS_ERR(newdentry))
-+              goto out_unlock;
-+
-+      olddentry = ovl_dentry_upper(old);
-+      err = vfs_link(olddentry, upperdir->d_inode, newdentry);
-+      if (!err) {
-+              if (WARN_ON(!newdentry->d_inode)) {
-+                      dput(newdentry);
-+                      err = -ENOENT;
-+                      goto out_unlock;
-+              }
-+              newinode = ovl_new_inode(old->d_sb, newdentry->d_inode->i_mode,
-+                              new->d_fsdata);
-+              if (!newinode) {
-+                      err = -ENOMEM;
-+                      goto link_fail;
-+              }
-+              ovl_copyattr(upperdir->d_inode, newinode);
-+
-+              ovl_dentry_version_inc(new->d_parent);
-+              ovl_dentry_update(new, newdentry);
-+
-+              d_instantiate(new, newinode);
-+      } else {
-+link_fail:
-+              if (ovl_dentry_is_opaque(new))
-+                      ovl_whiteout(upperdir, new);
-+              dput(newdentry);
-+      }
-+out_unlock:
-+      mutex_unlock(&upperdir->d_inode->i_mutex);
-+out:
-+      return err;
-+}
-+
-+static int ovl_rename(struct inode *olddir, struct dentry *old,
-+                      struct inode *newdir, struct dentry *new)
-+{
-+      int err;
-+      enum ovl_path_type old_type;
-+      enum ovl_path_type new_type;
-+      struct dentry *old_upperdir;
-+      struct dentry *new_upperdir;
-+      struct dentry *olddentry;
-+      struct dentry *newdentry;
-+      struct dentry *trap;
-+      bool old_opaque;
-+      bool new_opaque;
-+      bool new_create = false;
-+      bool is_dir = S_ISDIR(old->d_inode->i_mode);
-+
-+      /* Don't copy up directory trees */
-+      old_type = ovl_path_type(old);
-+      if (old_type != OVL_PATH_UPPER && is_dir)
-+              return -EXDEV;
-+
-+      if (new->d_inode) {
-+              new_type = ovl_path_type(new);
-+
-+              if (new_type == OVL_PATH_LOWER && old_type == OVL_PATH_LOWER) {
-+                      if (ovl_dentry_lower(old)->d_inode ==
-+                          ovl_dentry_lower(new)->d_inode)
-+                              return 0;
-+              }
-+              if (new_type != OVL_PATH_LOWER && old_type != OVL_PATH_LOWER) {
-+                      if (ovl_dentry_upper(old)->d_inode ==
-+                          ovl_dentry_upper(new)->d_inode)
-+                              return 0;
-+              }
-+
-+              if (new_type != OVL_PATH_UPPER &&
-+                  S_ISDIR(new->d_inode->i_mode)) {
-+                      err = ovl_check_empty_and_clear(new, new_type);
-+                      if (err)
-+                              return err;
-+              }
-+      } else {
-+              new_type = OVL_PATH_UPPER;
-+      }
-+
-+      err = ovl_copy_up(old);
-+      if (err)
-+              return err;
-+
-+      err = ovl_copy_up(new->d_parent);
-+      if (err)
-+              return err;
-+
-+      old_upperdir = ovl_dentry_upper(old->d_parent);
-+      new_upperdir = ovl_dentry_upper(new->d_parent);
-+
-+      trap = lock_rename(new_upperdir, old_upperdir);
-+
-+      olddentry = ovl_dentry_upper(old);
-+      newdentry = ovl_dentry_upper(new);
-+      if (newdentry) {
-+              dget(newdentry);
-+      } else {
-+              new_create = true;
-+              newdentry = ovl_lookup_create(new_upperdir, new);
-+              err = PTR_ERR(newdentry);
-+              if (IS_ERR(newdentry))
-+                      goto out_unlock;
-+      }
-+
-+      err = -ESTALE;
-+      if (olddentry->d_parent != old_upperdir)
-+              goto out_dput;
-+      if (newdentry->d_parent != new_upperdir)
-+              goto out_dput;
-+      if (olddentry == trap)
-+              goto out_dput;
-+      if (newdentry == trap)
-+              goto out_dput;
-+
-+      old_opaque = ovl_dentry_is_opaque(old);
-+      new_opaque = ovl_dentry_is_opaque(new) || new_type != OVL_PATH_UPPER;
-+
-+      if (is_dir && !old_opaque && new_opaque) {
-+              err = ovl_set_opaque(olddentry);
-+              if (err)
-+                      goto out_dput;
-+      }
-+
-+      err = vfs_rename(old_upperdir->d_inode, olddentry,
-+                       new_upperdir->d_inode, newdentry);
-+
-+      if (err) {
-+              if (new_create && ovl_dentry_is_opaque(new))
-+                      ovl_whiteout(new_upperdir, new);
-+              if (is_dir && !old_opaque && new_opaque)
-+                      ovl_remove_opaque(olddentry);
-+              goto out_dput;
-+      }
-+
-+      if (old_type != OVL_PATH_UPPER || old_opaque)
-+              err = ovl_whiteout(old_upperdir, old);
-+      if (is_dir && old_opaque && !new_opaque)
-+              ovl_remove_opaque(olddentry);
-+
-+      if (old_opaque != new_opaque)
-+              ovl_dentry_set_opaque(old, new_opaque);
-+
-+      ovl_dentry_version_inc(old->d_parent);
-+      ovl_dentry_version_inc(new->d_parent);
-+
-+out_dput:
-+      dput(newdentry);
-+out_unlock:
-+      unlock_rename(new_upperdir, old_upperdir);
-+      return err;
-+}
-+
-+const struct inode_operations ovl_dir_inode_operations = {
-+      .lookup         = ovl_lookup,
-+      .mkdir          = ovl_mkdir,
-+      .symlink        = ovl_symlink,
-+      .unlink         = ovl_unlink,
-+      .rmdir          = ovl_rmdir,
-+      .rename         = ovl_rename,
-+      .link           = ovl_link,
-+      .setattr        = ovl_setattr,
-+      .create         = ovl_create,
-+      .mknod          = ovl_mknod,
-+      .permission     = ovl_permission,
-+      .getattr        = ovl_dir_getattr,
-+      .setxattr       = ovl_setxattr,
-+      .getxattr       = ovl_getxattr,
-+      .listxattr      = ovl_listxattr,
-+      .removexattr    = ovl_removexattr,
-+};
---- /dev/null
-+++ b/fs/overlayfs/inode.c
-@@ -0,0 +1,372 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/fs.h>
-+#include <linux/slab.h>
-+#include <linux/xattr.h>
-+#include "overlayfs.h"
-+
-+int ovl_setattr(struct dentry *dentry, struct iattr *attr)
-+{
-+      struct dentry *upperdentry;
-+      int err;
-+
-+      if ((attr->ia_valid & ATTR_SIZE) && !ovl_dentry_upper(dentry))
-+              err = ovl_copy_up_truncate(dentry, attr->ia_size);
-+      else
-+              err = ovl_copy_up(dentry);
-+      if (err)
-+              return err;
-+
-+      upperdentry = ovl_dentry_upper(dentry);
-+
-+      if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID))
-+              attr->ia_valid &= ~ATTR_MODE;
-+
-+      mutex_lock(&upperdentry->d_inode->i_mutex);
-+      err = notify_change(upperdentry, attr);
-+      if (!err)
-+              ovl_copyattr(upperdentry->d_inode, dentry->d_inode);
-+      mutex_unlock(&upperdentry->d_inode->i_mutex);
-+
-+      return err;
-+}
-+
-+static int ovl_getattr(struct vfsmount *mnt, struct dentry *dentry,
-+                       struct kstat *stat)
-+{
-+      struct path realpath;
-+
-+      ovl_path_real(dentry, &realpath);
-+      return vfs_getattr(&realpath, stat);
-+}
-+
-+int ovl_permission(struct inode *inode, int mask)
-+{
-+      struct ovl_entry *oe;
-+      struct dentry *alias = NULL;
-+      struct inode *realinode;
-+      struct dentry *realdentry;
-+      bool is_upper;
-+      int err;
-+
-+      if (S_ISDIR(inode->i_mode)) {
-+              oe = inode->i_private;
-+      } else if (mask & MAY_NOT_BLOCK) {
-+              return -ECHILD;
-+      } else {
-+              /*
-+               * For non-directories find an alias and get the info
-+               * from there.
-+               */
-+              alias = d_find_any_alias(inode);
-+              if (WARN_ON(!alias))
-+                      return -ENOENT;
-+
-+              oe = alias->d_fsdata;
-+      }
-+
-+      realdentry = ovl_entry_real(oe, &is_upper);
-+
-+      /* Careful in RCU walk mode */
-+      realinode = ACCESS_ONCE(realdentry->d_inode);
-+      if (!realinode) {
-+              WARN_ON(!(mask & MAY_NOT_BLOCK));
-+              err = -ENOENT;
-+              goto out_dput;
-+      }
-+
-+      if (mask & MAY_WRITE) {
-+              umode_t mode = realinode->i_mode;
-+
-+              /*
-+               * Writes will always be redirected to upper layer, so
-+               * ignore lower layer being read-only.
-+               *
-+               * If the overlay itself is read-only then proceed
-+               * with the permission check, don't return EROFS.
-+               * This will only happen if this is the lower layer of
-+               * another overlayfs.
-+               *
-+               * If upper fs becomes read-only after the overlay was
-+               * constructed return EROFS to prevent modification of
-+               * upper layer.
-+               */
-+              err = -EROFS;
-+              if (is_upper && !IS_RDONLY(inode) && IS_RDONLY(realinode) &&
-+                  (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)))
-+                      goto out_dput;
-+      }
-+
-+      err = __inode_permission(realinode, mask);
-+out_dput:
-+      dput(alias);
-+      return err;
-+}
-+
-+
-+struct ovl_link_data {
-+      struct dentry *realdentry;
-+      void *cookie;
-+};
-+
-+static void *ovl_follow_link(struct dentry *dentry, struct nameidata *nd)
-+{
-+      void *ret;
-+      struct dentry *realdentry;
-+      struct inode *realinode;
-+
-+      realdentry = ovl_dentry_real(dentry);
-+      realinode = realdentry->d_inode;
-+
-+      if (WARN_ON(!realinode->i_op->follow_link))
-+              return ERR_PTR(-EPERM);
-+
-+      ret = realinode->i_op->follow_link(realdentry, nd);
-+      if (IS_ERR(ret))
-+              return ret;
-+
-+      if (realinode->i_op->put_link) {
-+              struct ovl_link_data *data;
-+
-+              data = kmalloc(sizeof(struct ovl_link_data), GFP_KERNEL);
-+              if (!data) {
-+                      realinode->i_op->put_link(realdentry, nd, ret);
-+                      return ERR_PTR(-ENOMEM);
-+              }
-+              data->realdentry = realdentry;
-+              data->cookie = ret;
-+
-+              return data;
-+      } else {
-+              return NULL;
-+      }
-+}
-+
-+static void ovl_put_link(struct dentry *dentry, struct nameidata *nd, void *c)
-+{
-+      struct inode *realinode;
-+      struct ovl_link_data *data = c;
-+
-+      if (!data)
-+              return;
-+
-+      realinode = data->realdentry->d_inode;
-+      realinode->i_op->put_link(data->realdentry, nd, data->cookie);
-+      kfree(data);
-+}
-+
-+static int ovl_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
-+{
-+      struct path realpath;
-+      struct inode *realinode;
-+
-+      ovl_path_real(dentry, &realpath);
-+      realinode = realpath.dentry->d_inode;
-+
-+      if (!realinode->i_op->readlink)
-+              return -EINVAL;
-+
-+      touch_atime(&realpath);
-+
-+      return realinode->i_op->readlink(realpath.dentry, buf, bufsiz);
-+}
-+
-+
-+static bool ovl_is_private_xattr(const char *name)
-+{
-+      return strncmp(name, "trusted.overlay.", 14) == 0;
-+}
-+
-+int ovl_setxattr(struct dentry *dentry, const char *name,
-+               const void *value, size_t size, int flags)
-+{
-+      int err;
-+      struct dentry *upperdentry;
-+
-+      if (ovl_is_private_xattr(name))
-+              return -EPERM;
-+
-+      err = ovl_copy_up(dentry);
-+      if (err)
-+              return err;
-+
-+      upperdentry = ovl_dentry_upper(dentry);
-+      return  vfs_setxattr(upperdentry, name, value, size, flags);
-+}
-+
-+ssize_t ovl_getxattr(struct dentry *dentry, const char *name,
-+                   void *value, size_t size)
-+{
-+      if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE &&
-+          ovl_is_private_xattr(name))
-+              return -ENODATA;
-+
-+      return vfs_getxattr(ovl_dentry_real(dentry), name, value, size);
-+}
-+
-+ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size)
-+{
-+      ssize_t res;
-+      int off;
-+
-+      res = vfs_listxattr(ovl_dentry_real(dentry), list, size);
-+      if (res <= 0 || size == 0)
-+              return res;
-+
-+      if (ovl_path_type(dentry->d_parent) != OVL_PATH_MERGE)
-+              return res;
-+
-+      /* filter out private xattrs */
-+      for (off = 0; off < res;) {
-+              char *s = list + off;
-+              size_t slen = strlen(s) + 1;
-+
-+              BUG_ON(off + slen > res);
-+
-+              if (ovl_is_private_xattr(s)) {
-+                      res -= slen;
-+                      memmove(s, s + slen, res - off);
-+              } else {
-+                      off += slen;
-+              }
-+      }
-+
-+      return res;
-+}
-+
-+int ovl_removexattr(struct dentry *dentry, const char *name)
-+{
-+      int err;
-+      struct path realpath;
-+      enum ovl_path_type type;
-+
-+      if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE &&
-+          ovl_is_private_xattr(name))
-+              return -ENODATA;
-+
-+      type = ovl_path_real(dentry, &realpath);
-+      if (type == OVL_PATH_LOWER) {
-+              err = vfs_getxattr(realpath.dentry, name, NULL, 0);
-+              if (err < 0)
-+                      return err;
-+
-+              err = ovl_copy_up(dentry);
-+              if (err)
-+                      return err;
-+
-+              ovl_path_upper(dentry, &realpath);
-+      }
-+
-+      return vfs_removexattr(realpath.dentry, name);
-+}
-+
-+static bool ovl_open_need_copy_up(int flags, enum ovl_path_type type,
-+                                struct dentry *realdentry)
-+{
-+      if (type != OVL_PATH_LOWER)
-+              return false;
-+
-+      if (special_file(realdentry->d_inode->i_mode))
-+              return false;
-+
-+      if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC))
-+              return false;
-+
-+      return true;
-+}
-+
-+static int ovl_dentry_open(struct dentry *dentry, struct file *file,
-+                  const struct cred *cred)
-+{
-+      int err;
-+      struct path realpath;
-+      enum ovl_path_type type;
-+
-+      type = ovl_path_real(dentry, &realpath);
-+      if (ovl_open_need_copy_up(file->f_flags, type, realpath.dentry)) {
-+              if (file->f_flags & O_TRUNC)
-+                      err = ovl_copy_up_truncate(dentry, 0);
-+              else
-+                      err = ovl_copy_up(dentry);
-+              if (err)
-+                      return err;
-+
-+              ovl_path_upper(dentry, &realpath);
-+      }
-+
-+      return vfs_open(&realpath, file, cred);
-+}
-+
-+static const struct inode_operations ovl_file_inode_operations = {
-+      .setattr        = ovl_setattr,
-+      .permission     = ovl_permission,
-+      .getattr        = ovl_getattr,
-+      .setxattr       = ovl_setxattr,
-+      .getxattr       = ovl_getxattr,
-+      .listxattr      = ovl_listxattr,
-+      .removexattr    = ovl_removexattr,
-+      .dentry_open    = ovl_dentry_open,
-+};
-+
-+static const struct inode_operations ovl_symlink_inode_operations = {
-+      .setattr        = ovl_setattr,
-+      .follow_link    = ovl_follow_link,
-+      .put_link       = ovl_put_link,
-+      .readlink       = ovl_readlink,
-+      .getattr        = ovl_getattr,
-+      .setxattr       = ovl_setxattr,
-+      .getxattr       = ovl_getxattr,
-+      .listxattr      = ovl_listxattr,
-+      .removexattr    = ovl_removexattr,
-+};
-+
-+struct inode *ovl_new_inode(struct super_block *sb, umode_t mode,
-+                          struct ovl_entry *oe)
-+{
-+      struct inode *inode;
-+
-+      inode = new_inode(sb);
-+      if (!inode)
-+              return NULL;
-+
-+      mode &= S_IFMT;
-+
-+      inode->i_ino = get_next_ino();
-+      inode->i_mode = mode;
-+      inode->i_flags |= S_NOATIME | S_NOCMTIME;
-+
-+      switch (mode) {
-+      case S_IFDIR:
-+              inode->i_private = oe;
-+              inode->i_op = &ovl_dir_inode_operations;
-+              inode->i_fop = &ovl_dir_operations;
-+              break;
-+
-+      case S_IFLNK:
-+              inode->i_op = &ovl_symlink_inode_operations;
-+              break;
-+
-+      case S_IFREG:
-+      case S_IFSOCK:
-+      case S_IFBLK:
-+      case S_IFCHR:
-+      case S_IFIFO:
-+              inode->i_op = &ovl_file_inode_operations;
-+              break;
-+
-+      default:
-+              WARN(1, "illegal file type: %i\n", mode);
-+              iput(inode);
-+              inode = NULL;
-+      }
-+
-+      return inode;
-+
-+}
---- /dev/null
-+++ b/fs/overlayfs/overlayfs.h
-@@ -0,0 +1,70 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+struct ovl_entry;
-+
-+enum ovl_path_type {
-+      OVL_PATH_UPPER,
-+      OVL_PATH_MERGE,
-+      OVL_PATH_LOWER,
-+};
-+
-+extern const char *ovl_opaque_xattr;
-+extern const char *ovl_whiteout_xattr;
-+extern const struct dentry_operations ovl_dentry_operations;
-+
-+enum ovl_path_type ovl_path_type(struct dentry *dentry);
-+u64 ovl_dentry_version_get(struct dentry *dentry);
-+void ovl_dentry_version_inc(struct dentry *dentry);
-+void ovl_path_upper(struct dentry *dentry, struct path *path);
-+void ovl_path_lower(struct dentry *dentry, struct path *path);
-+enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path);
-+struct dentry *ovl_dentry_upper(struct dentry *dentry);
-+struct dentry *ovl_dentry_lower(struct dentry *dentry);
-+struct dentry *ovl_dentry_real(struct dentry *dentry);
-+struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper);
-+bool ovl_dentry_is_opaque(struct dentry *dentry);
-+void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque);
-+bool ovl_is_whiteout(struct dentry *dentry);
-+void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry);
-+struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
-+                        unsigned int flags);
-+struct file *ovl_path_open(struct path *path, int flags);
-+
-+struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry,
-+                              struct kstat *stat, const char *link);
-+
-+/* readdir.c */
-+extern const struct file_operations ovl_dir_operations;
-+int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type);
-+
-+/* inode.c */
-+int ovl_setattr(struct dentry *dentry, struct iattr *attr);
-+int ovl_permission(struct inode *inode, int mask);
-+int ovl_setxattr(struct dentry *dentry, const char *name,
-+               const void *value, size_t size, int flags);
-+ssize_t ovl_getxattr(struct dentry *dentry, const char *name,
-+                   void *value, size_t size);
-+ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size);
-+int ovl_removexattr(struct dentry *dentry, const char *name);
-+
-+struct inode *ovl_new_inode(struct super_block *sb, umode_t mode,
-+                          struct ovl_entry *oe);
-+static inline void ovl_copyattr(struct inode *from, struct inode *to)
-+{
-+      to->i_uid = from->i_uid;
-+      to->i_gid = from->i_gid;
-+}
-+
-+/* dir.c */
-+extern const struct inode_operations ovl_dir_inode_operations;
-+
-+/* copy_up.c */
-+int ovl_copy_up(struct dentry *dentry);
-+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
---- /dev/null
-+++ b/fs/overlayfs/readdir.c
-@@ -0,0 +1,567 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/fs.h>
-+#include <linux/slab.h>
-+#include <linux/namei.h>
-+#include <linux/file.h>
-+#include <linux/xattr.h>
-+#include <linux/rbtree.h>
-+#include <linux/security.h>
-+#include <linux/cred.h>
-+#include "overlayfs.h"
-+
-+struct ovl_cache_entry {
-+      const char *name;
-+      unsigned int len;
-+      unsigned int type;
-+      u64 ino;
-+      bool is_whiteout;
-+      struct list_head l_node;
-+      struct rb_node node;
-+};
-+
-+struct ovl_readdir_data {
-+      struct dir_context ctx;
-+      bool is_merge;
-+      struct rb_root *root;
-+      struct list_head *list;
-+      struct list_head *middle;
-+      struct dentry *dir;
-+      int count;
-+      int err;
-+};
-+
-+struct ovl_dir_file {
-+      bool is_real;
-+      bool is_cached;
-+      struct list_head cursor;
-+      u64 cache_version;
-+      struct list_head cache;
-+      struct file *realfile;
-+};
-+
-+static struct ovl_cache_entry *ovl_cache_entry_from_node(struct rb_node *n)
-+{
-+      return container_of(n, struct ovl_cache_entry, node);
-+}
-+
-+static struct ovl_cache_entry *ovl_cache_entry_find(struct rb_root *root,
-+                                                  const char *name, int len)
-+{
-+      struct rb_node *node = root->rb_node;
-+      int cmp;
-+
-+      while (node) {
-+              struct ovl_cache_entry *p = ovl_cache_entry_from_node(node);
-+
-+              cmp = strncmp(name, p->name, len);
-+              if (cmp > 0)
-+                      node = p->node.rb_right;
-+              else if (cmp < 0 || len < p->len)
-+                      node = p->node.rb_left;
-+              else
-+                      return p;
-+      }
-+
-+      return NULL;
-+}
-+
-+static struct ovl_cache_entry *ovl_cache_entry_new(const char *name, int len,
-+                                                 u64 ino, unsigned int d_type)
-+{
-+      struct ovl_cache_entry *p;
-+
-+      p = kmalloc(sizeof(*p) + len + 1, GFP_KERNEL);
-+      if (p) {
-+              char *name_copy = (char *) (p + 1);
-+              memcpy(name_copy, name, len);
-+              name_copy[len] = '\0';
-+              p->name = name_copy;
-+              p->len = len;
-+              p->type = d_type;
-+              p->ino = ino;
-+              p->is_whiteout = false;
-+      }
-+
-+      return p;
-+}
-+
-+static int ovl_cache_entry_add_rb(struct ovl_readdir_data *rdd,
-+                                const char *name, int len, u64 ino,
-+                                unsigned int d_type)
-+{
-+      struct rb_node **newp = &rdd->root->rb_node;
-+      struct rb_node *parent = NULL;
-+      struct ovl_cache_entry *p;
-+
-+      while (*newp) {
-+              int cmp;
-+              struct ovl_cache_entry *tmp;
-+
-+              parent = *newp;
-+              tmp = ovl_cache_entry_from_node(*newp);
-+              cmp = strncmp(name, tmp->name, len);
-+              if (cmp > 0)
-+                      newp = &tmp->node.rb_right;
-+              else if (cmp < 0 || len < tmp->len)
-+                      newp = &tmp->node.rb_left;
-+              else
-+                      return 0;
-+      }
-+
-+      p = ovl_cache_entry_new(name, len, ino, d_type);
-+      if (p == NULL)
-+              return -ENOMEM;
-+
-+      list_add_tail(&p->l_node, rdd->list);
-+      rb_link_node(&p->node, parent, newp);
-+      rb_insert_color(&p->node, rdd->root);
-+
-+      return 0;
-+}
-+
-+static int ovl_fill_lower(struct ovl_readdir_data *rdd,
-+                        const char *name, int namelen,
-+                        loff_t offset, u64 ino, unsigned int d_type)
-+{
-+      struct ovl_cache_entry *p;
-+
-+      p = ovl_cache_entry_find(rdd->root, name, namelen);
-+      if (p) {
-+              list_move_tail(&p->l_node, rdd->middle);
-+      } else {
-+              p = ovl_cache_entry_new(name, namelen, ino, d_type);
-+              if (p == NULL)
-+                      rdd->err = -ENOMEM;
-+              else
-+                      list_add_tail(&p->l_node, rdd->middle);
-+      }
-+
-+      return rdd->err;
-+}
-+
-+static void ovl_cache_free(struct list_head *list)
-+{
-+      struct ovl_cache_entry *p;
-+      struct ovl_cache_entry *n;
-+
-+      list_for_each_entry_safe(p, n, list, l_node)
-+              kfree(p);
-+
-+      INIT_LIST_HEAD(list);
-+}
-+
-+static int ovl_fill_merge(void *buf, const char *name, int namelen,
-+                        loff_t offset, u64 ino, unsigned int d_type)
-+{
-+      struct ovl_readdir_data *rdd = buf;
-+
-+      rdd->count++;
-+      if (!rdd->is_merge)
-+              return ovl_cache_entry_add_rb(rdd, name, namelen, ino, d_type);
-+      else
-+              return ovl_fill_lower(rdd, name, namelen, offset, ino, d_type);
-+}
-+
-+static inline int ovl_dir_read(struct path *realpath,
-+                             struct ovl_readdir_data *rdd)
-+{
-+      struct file *realfile;
-+      int err;
-+
-+      realfile = ovl_path_open(realpath, O_RDONLY | O_DIRECTORY);
-+      if (IS_ERR(realfile))
-+              return PTR_ERR(realfile);
-+
-+      rdd->ctx.pos = 0;
-+      do {
-+              rdd->count = 0;
-+              rdd->err = 0;
-+              err = iterate_dir(realfile, &rdd->ctx);
-+              if (err >= 0)
-+                      err = rdd->err;
-+      } while (!err && rdd->count);
-+      fput(realfile);
-+
-+      return 0;
-+}
-+
-+static void ovl_dir_reset(struct file *file)
-+{
-+      struct ovl_dir_file *od = file->private_data;
-+      enum ovl_path_type type = ovl_path_type(file->f_path.dentry);
-+
-+      if (ovl_dentry_version_get(file->f_path.dentry) != od->cache_version) {
-+              list_del_init(&od->cursor);
-+              ovl_cache_free(&od->cache);
-+              od->is_cached = false;
-+      }
-+      WARN_ON(!od->is_real && type != OVL_PATH_MERGE);
-+      if (od->is_real && type == OVL_PATH_MERGE) {
-+              fput(od->realfile);
-+              od->realfile = NULL;
-+              od->is_real = false;
-+      }
-+}
-+
-+static int ovl_dir_mark_whiteouts(struct ovl_readdir_data *rdd)
-+{
-+      struct ovl_cache_entry *p;
-+      struct dentry *dentry;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+
-+      override_cred = prepare_creds();
-+      if (!override_cred) {
-+              ovl_cache_free(rdd->list);
-+              return -ENOMEM;
-+      }
-+
-+      /*
-+       * CAP_SYS_ADMIN for getxattr
-+       * CAP_DAC_OVERRIDE for lookup
-+       */
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+      old_cred = override_creds(override_cred);
-+
-+      mutex_lock(&rdd->dir->d_inode->i_mutex);
-+      list_for_each_entry(p, rdd->list, l_node) {
-+              if (p->type != DT_LNK)
-+                      continue;
-+
-+              dentry = lookup_one_len(p->name, rdd->dir, p->len);
-+              if (IS_ERR(dentry))
-+                      continue;
-+
-+              p->is_whiteout = ovl_is_whiteout(dentry);
-+              dput(dentry);
-+      }
-+      mutex_unlock(&rdd->dir->d_inode->i_mutex);
-+
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+
-+      return 0;
-+}
-+
-+static inline int ovl_dir_read_merged(struct path *upperpath,
-+                                    struct path *lowerpath,
-+                                    struct list_head *list)
-+{
-+      int err;
-+      struct rb_root root = RB_ROOT;
-+      struct list_head middle;
-+      struct ovl_readdir_data rdd = {
-+              .ctx.actor = ovl_fill_merge,
-+              .list = list,
-+              .root = &root,
-+              .is_merge = false,
-+      };
-+
-+      if (upperpath->dentry) {
-+              rdd.dir = upperpath->dentry;
-+              err = ovl_dir_read(upperpath, &rdd);
-+              if (err)
-+                      goto out;
-+
-+              err = ovl_dir_mark_whiteouts(&rdd);
-+              if (err)
-+                      goto out;
-+      }
-+      /*
-+       * Insert lowerpath entries before upperpath ones, this allows
-+       * offsets to be reasonably constant
-+       */
-+      list_add(&middle, rdd.list);
-+      rdd.middle = &middle;
-+      rdd.is_merge = true;
-+      err = ovl_dir_read(lowerpath, &rdd);
-+      list_del(&middle);
-+out:
-+      return err;
-+}
-+
-+static void ovl_seek_cursor(struct ovl_dir_file *od, loff_t pos)
-+{
-+      struct list_head *l;
-+      loff_t off;
-+
-+      l = od->cache.next;
-+      for (off = 0; off < pos; off++) {
-+              if (l == &od->cache)
-+                      break;
-+              l = l->next;
-+      }
-+      list_move_tail(&od->cursor, l);
-+}
-+
-+static int ovl_iterate(struct file *file, struct dir_context *ctx)
-+{
-+      struct ovl_dir_file *od = file->private_data;
-+      int res;
-+
-+      if (!ctx->pos)
-+              ovl_dir_reset(file);
-+
-+      if (od->is_real) {
-+              res = iterate_dir(od->realfile, ctx);
-+
-+              return res;
-+      }
-+
-+      if (!od->is_cached) {
-+              struct path lowerpath;
-+              struct path upperpath;
-+
-+              ovl_path_lower(file->f_path.dentry, &lowerpath);
-+              ovl_path_upper(file->f_path.dentry, &upperpath);
-+
-+              res = ovl_dir_read_merged(&upperpath, &lowerpath, &od->cache);
-+              if (res) {
-+                      ovl_cache_free(&od->cache);
-+                      return res;
-+              }
-+
-+              od->cache_version = ovl_dentry_version_get(file->f_path.dentry);
-+              od->is_cached = true;
-+
-+              ovl_seek_cursor(od, ctx->pos);
-+      }
-+
-+      while (od->cursor.next != &od->cache) {
-+              struct ovl_cache_entry *p;
-+
-+              p = list_entry(od->cursor.next, struct ovl_cache_entry, l_node);
-+              if (!p->is_whiteout) {
-+                      if (!dir_emit(ctx, p->name, p->len, p->ino, p->type))
-+                              break;
-+              }
-+              ctx->pos++;
-+              list_move(&od->cursor, &p->l_node);
-+      }
-+
-+      return 0;
-+}
-+
-+static loff_t ovl_dir_llseek(struct file *file, loff_t offset, int origin)
-+{
-+      loff_t res;
-+      struct ovl_dir_file *od = file->private_data;
-+
-+      mutex_lock(&file_inode(file)->i_mutex);
-+      if (!file->f_pos)
-+              ovl_dir_reset(file);
-+
-+      if (od->is_real) {
-+              res = vfs_llseek(od->realfile, offset, origin);
-+              file->f_pos = od->realfile->f_pos;
-+      } else {
-+              res = -EINVAL;
-+
-+              switch (origin) {
-+              case SEEK_CUR:
-+                      offset += file->f_pos;
-+                      break;
-+              case SEEK_SET:
-+                      break;
-+              default:
-+                      goto out_unlock;
-+              }
-+              if (offset < 0)
-+                      goto out_unlock;
-+
-+              if (offset != file->f_pos) {
-+                      file->f_pos = offset;
-+                      if (od->is_cached)
-+                              ovl_seek_cursor(od, offset);
-+              }
-+              res = offset;
-+      }
-+out_unlock:
-+      mutex_unlock(&file_inode(file)->i_mutex);
-+
-+      return res;
-+}
-+
-+static int ovl_dir_fsync(struct file *file, loff_t start, loff_t end,
-+                       int datasync)
-+{
-+      struct ovl_dir_file *od = file->private_data;
-+
-+      /* May need to reopen directory if it got copied up */
-+      if (!od->realfile) {
-+              struct path upperpath;
-+
-+              ovl_path_upper(file->f_path.dentry, &upperpath);
-+              od->realfile = ovl_path_open(&upperpath, O_RDONLY);
-+              if (IS_ERR(od->realfile))
-+                      return PTR_ERR(od->realfile);
-+      }
-+
-+      return vfs_fsync_range(od->realfile, start, end, datasync);
-+}
-+
-+static int ovl_dir_release(struct inode *inode, struct file *file)
-+{
-+      struct ovl_dir_file *od = file->private_data;
-+
-+      list_del(&od->cursor);
-+      ovl_cache_free(&od->cache);
-+      if (od->realfile)
-+              fput(od->realfile);
-+      kfree(od);
-+
-+      return 0;
-+}
-+
-+static int ovl_dir_open(struct inode *inode, struct file *file)
-+{
-+      struct path realpath;
-+      struct file *realfile;
-+      struct ovl_dir_file *od;
-+      enum ovl_path_type type;
-+
-+      od = kzalloc(sizeof(struct ovl_dir_file), GFP_KERNEL);
-+      if (!od)
-+              return -ENOMEM;
-+
-+      type = ovl_path_real(file->f_path.dentry, &realpath);
-+      realfile = ovl_path_open(&realpath, file->f_flags);
-+      if (IS_ERR(realfile)) {
-+              kfree(od);
-+              return PTR_ERR(realfile);
-+      }
-+      INIT_LIST_HEAD(&od->cache);
-+      INIT_LIST_HEAD(&od->cursor);
-+      od->is_cached = false;
-+      od->realfile = realfile;
-+      od->is_real = (type != OVL_PATH_MERGE);
-+      file->private_data = od;
-+
-+      return 0;
-+}
-+
-+const struct file_operations ovl_dir_operations = {
-+      .read           = generic_read_dir,
-+      .open           = ovl_dir_open,
-+      .iterate        = ovl_iterate,
-+      .llseek         = ovl_dir_llseek,
-+      .fsync          = ovl_dir_fsync,
-+      .release        = ovl_dir_release,
-+};
-+
-+static int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list)
-+{
-+      int err;
-+      struct path lowerpath;
-+      struct path upperpath;
-+      struct ovl_cache_entry *p;
-+
-+      ovl_path_upper(dentry, &upperpath);
-+      ovl_path_lower(dentry, &lowerpath);
-+
-+      err = ovl_dir_read_merged(&upperpath, &lowerpath, list);
-+      if (err)
-+              return err;
-+
-+      err = 0;
-+
-+      list_for_each_entry(p, list, l_node) {
-+              if (p->is_whiteout)
-+                      continue;
-+
-+              if (p->name[0] == '.') {
-+                      if (p->len == 1)
-+                              continue;
-+                      if (p->len == 2 && p->name[1] == '.')
-+                              continue;
-+              }
-+              err = -ENOTEMPTY;
-+              break;
-+      }
-+
-+      return err;
-+}
-+
-+static int ovl_remove_whiteouts(struct dentry *dir, struct list_head *list)
-+{
-+      struct path upperpath;
-+      struct dentry *upperdir;
-+      struct ovl_cache_entry *p;
-+      const struct cred *old_cred;
-+      struct cred *override_cred;
-+      int err;
-+
-+      ovl_path_upper(dir, &upperpath);
-+      upperdir = upperpath.dentry;
-+
-+      override_cred = prepare_creds();
-+      if (!override_cred)
-+              return -ENOMEM;
-+
-+      /*
-+       * CAP_DAC_OVERRIDE for lookup and unlink
-+       * CAP_SYS_ADMIN for setxattr of "trusted" namespace
-+       * CAP_FOWNER for unlink in sticky directory
-+       */
-+      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+      cap_raise(override_cred->cap_effective, CAP_FOWNER);
-+      old_cred = override_creds(override_cred);
-+
-+      err = vfs_setxattr(upperdir, ovl_opaque_xattr, "y", 1, 0);
-+      if (err)
-+              goto out_revert_creds;
-+
-+      mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT);
-+      list_for_each_entry(p, list, l_node) {
-+              struct dentry *dentry;
-+              int ret;
-+
-+              if (!p->is_whiteout)
-+                      continue;
-+
-+              dentry = lookup_one_len(p->name, upperdir, p->len);
-+              if (IS_ERR(dentry)) {
-+                      pr_warn(
-+                          "overlayfs: failed to lookup whiteout %.*s: %li\n",
-+                          p->len, p->name, PTR_ERR(dentry));
-+                      continue;
-+              }
-+              ret = vfs_unlink(upperdir->d_inode, dentry);
-+              dput(dentry);
-+              if (ret)
-+                      pr_warn(
-+                          "overlayfs: failed to unlink whiteout %.*s: %i\n",
-+                          p->len, p->name, ret);
-+      }
-+      mutex_unlock(&upperdir->d_inode->i_mutex);
-+
-+out_revert_creds:
-+      revert_creds(old_cred);
-+      put_cred(override_cred);
-+
-+      return err;
-+}
-+
-+int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type)
-+{
-+      int err;
-+      LIST_HEAD(list);
-+
-+      err = ovl_check_empty_dir(dentry, &list);
-+      if (!err && type == OVL_PATH_MERGE)
-+              err = ovl_remove_whiteouts(dentry, &list);
-+
-+      ovl_cache_free(&list);
-+
-+      return err;
-+}
---- /dev/null
-+++ b/fs/overlayfs/super.c
-@@ -0,0 +1,685 @@
-+/*
-+ *
-+ * Copyright (C) 2011 Novell Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+#include <linux/fs.h>
-+#include <linux/namei.h>
-+#include <linux/xattr.h>
-+#include <linux/security.h>
-+#include <linux/mount.h>
-+#include <linux/slab.h>
-+#include <linux/parser.h>
-+#include <linux/module.h>
-+#include <linux/cred.h>
-+#include <linux/sched.h>
-+#include <linux/statfs.h>
-+#include <linux/seq_file.h>
-+#include "overlayfs.h"
-+
-+MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>");
-+MODULE_DESCRIPTION("Overlay filesystem");
-+MODULE_LICENSE("GPL");
-+
-+#define OVERLAYFS_SUPER_MAGIC 0x794c764f
-+
-+struct ovl_config {
-+      char *lowerdir;
-+      char *upperdir;
-+};
-+
-+/* private information held for overlayfs's superblock */
-+struct ovl_fs {
-+      struct vfsmount *upper_mnt;
-+      struct vfsmount *lower_mnt;
-+      long lower_namelen;
-+      /* pathnames of lower and upper dirs, for show_options */
-+      struct ovl_config config;
-+};
-+
-+/* private information held for every overlayfs dentry */
-+struct ovl_entry {
-+      /*
-+       * Keep "double reference" on upper dentries, so that
-+       * d_delete() doesn't think it's OK to reset d_inode to NULL.
-+       */
-+      struct dentry *__upperdentry;
-+      struct dentry *lowerdentry;
-+      union {
-+              struct {
-+                      u64 version;
-+                      bool opaque;
-+              };
-+              struct rcu_head rcu;
-+      };
-+};
-+
-+const char *ovl_whiteout_xattr = "trusted.overlay.whiteout";
-+const char *ovl_opaque_xattr = "trusted.overlay.opaque";
-+
-+
-+enum ovl_path_type ovl_path_type(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      if (oe->__upperdentry) {
-+              if (oe->lowerdentry && S_ISDIR(dentry->d_inode->i_mode))
-+                      return OVL_PATH_MERGE;
-+              else
-+                      return OVL_PATH_UPPER;
-+      } else {
-+              return OVL_PATH_LOWER;
-+      }
-+}
-+
-+static struct dentry *ovl_upperdentry_dereference(struct ovl_entry *oe)
-+{
-+      struct dentry *upperdentry = ACCESS_ONCE(oe->__upperdentry);
-+      smp_read_barrier_depends();
-+      return upperdentry;
-+}
-+
-+void ovl_path_upper(struct dentry *dentry, struct path *path)
-+{
-+      struct ovl_fs *ofs = dentry->d_sb->s_fs_info;
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      path->mnt = ofs->upper_mnt;
-+      path->dentry = ovl_upperdentry_dereference(oe);
-+}
-+
-+void ovl_path_lower(struct dentry *dentry, struct path *path)
-+{
-+      struct ovl_fs *ofs = dentry->d_sb->s_fs_info;
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      path->mnt = ofs->lower_mnt;
-+      path->dentry = oe->lowerdentry;
-+}
-+
-+enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path)
-+{
-+
-+      enum ovl_path_type type = ovl_path_type(dentry);
-+
-+      if (type == OVL_PATH_LOWER)
-+              ovl_path_lower(dentry, path);
-+      else
-+              ovl_path_upper(dentry, path);
-+
-+      return type;
-+}
-+
-+struct dentry *ovl_dentry_upper(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      return ovl_upperdentry_dereference(oe);
-+}
-+
-+struct dentry *ovl_dentry_lower(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      return oe->lowerdentry;
-+}
-+
-+struct dentry *ovl_dentry_real(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+      struct dentry *realdentry;
-+
-+      realdentry = ovl_upperdentry_dereference(oe);
-+      if (!realdentry)
-+              realdentry = oe->lowerdentry;
-+
-+      return realdentry;
-+}
-+
-+struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper)
-+{
-+      struct dentry *realdentry;
-+
-+      realdentry = ovl_upperdentry_dereference(oe);
-+      if (realdentry) {
-+              *is_upper = true;
-+      } else {
-+              realdentry = oe->lowerdentry;
-+              *is_upper = false;
-+      }
-+      return realdentry;
-+}
-+
-+bool ovl_dentry_is_opaque(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+      return oe->opaque;
-+}
-+
-+void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+      oe->opaque = opaque;
-+}
-+
-+void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      WARN_ON(!mutex_is_locked(&upperdentry->d_parent->d_inode->i_mutex));
-+      WARN_ON(oe->__upperdentry);
-+      BUG_ON(!upperdentry->d_inode);
-+      smp_wmb();
-+      oe->__upperdentry = dget(upperdentry);
-+}
-+
-+void ovl_dentry_version_inc(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex));
-+      oe->version++;
-+}
-+
-+u64 ovl_dentry_version_get(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex));
-+      return oe->version;
-+}
-+
-+bool ovl_is_whiteout(struct dentry *dentry)
-+{
-+      int res;
-+      char val;
-+
-+      if (!dentry)
-+              return false;
-+      if (!dentry->d_inode)
-+              return false;
-+      if (!S_ISLNK(dentry->d_inode->i_mode))
-+              return false;
-+
-+      res = vfs_getxattr(dentry, ovl_whiteout_xattr, &val, 1);
-+      if (res == 1 && val == 'y')
-+              return true;
-+
-+      return false;
-+}
-+
-+static bool ovl_is_opaquedir(struct dentry *dentry)
-+{
-+      int res;
-+      char val;
-+
-+      if (!S_ISDIR(dentry->d_inode->i_mode))
-+              return false;
-+
-+      res = vfs_getxattr(dentry, ovl_opaque_xattr, &val, 1);
-+      if (res == 1 && val == 'y')
-+              return true;
-+
-+      return false;
-+}
-+
-+static void ovl_entry_free(struct rcu_head *head)
-+{
-+      struct ovl_entry *oe = container_of(head, struct ovl_entry, rcu);
-+      kfree(oe);
-+}
-+
-+static void ovl_dentry_release(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe = dentry->d_fsdata;
-+
-+      if (oe) {
-+              dput(oe->__upperdentry);
-+              dput(oe->__upperdentry);
-+              dput(oe->lowerdentry);
-+              call_rcu(&oe->rcu, ovl_entry_free);
-+      }
-+}
-+
-+const struct dentry_operations ovl_dentry_operations = {
-+      .d_release = ovl_dentry_release,
-+};
-+
-+static struct ovl_entry *ovl_alloc_entry(void)
-+{
-+      return kzalloc(sizeof(struct ovl_entry), GFP_KERNEL);
-+}
-+
-+static inline struct dentry *ovl_lookup_real(struct dentry *dir,
-+                                           struct qstr *name)
-+{
-+      struct dentry *dentry;
-+
-+      mutex_lock(&dir->d_inode->i_mutex);
-+      dentry = lookup_one_len(name->name, dir, name->len);
-+      mutex_unlock(&dir->d_inode->i_mutex);
-+
-+      if (IS_ERR(dentry)) {
-+              if (PTR_ERR(dentry) == -ENOENT)
-+                      dentry = NULL;
-+      } else if (!dentry->d_inode) {
-+              dput(dentry);
-+              dentry = NULL;
-+      }
-+      return dentry;
-+}
-+
-+static int ovl_do_lookup(struct dentry *dentry)
-+{
-+      struct ovl_entry *oe;
-+      struct dentry *upperdir;
-+      struct dentry *lowerdir;
-+      struct dentry *upperdentry = NULL;
-+      struct dentry *lowerdentry = NULL;
-+      struct inode *inode = NULL;
-+      int err;
-+
-+      err = -ENOMEM;
-+      oe = ovl_alloc_entry();
-+      if (!oe)
-+              goto out;
-+
-+      upperdir = ovl_dentry_upper(dentry->d_parent);
-+      lowerdir = ovl_dentry_lower(dentry->d_parent);
-+
-+      if (upperdir) {
-+              upperdentry = ovl_lookup_real(upperdir, &dentry->d_name);
-+              err = PTR_ERR(upperdentry);
-+              if (IS_ERR(upperdentry))
-+                      goto out_put_dir;
-+
-+              if (lowerdir && upperdentry &&
-+                  (S_ISLNK(upperdentry->d_inode->i_mode) ||
-+                   S_ISDIR(upperdentry->d_inode->i_mode))) {
-+                      const struct cred *old_cred;
-+                      struct cred *override_cred;
-+
-+                      err = -ENOMEM;
-+                      override_cred = prepare_creds();
-+                      if (!override_cred)
-+                              goto out_dput_upper;
-+
-+                      /* CAP_SYS_ADMIN needed for getxattr */
-+                      cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN);
-+                      old_cred = override_creds(override_cred);
-+
-+                      if (ovl_is_opaquedir(upperdentry)) {
-+                              oe->opaque = true;
-+                      } else if (ovl_is_whiteout(upperdentry)) {
-+                              dput(upperdentry);
-+                              upperdentry = NULL;
-+                              oe->opaque = true;
-+                      }
-+                      revert_creds(old_cred);
-+                      put_cred(override_cred);
-+              }
-+      }
-+      if (lowerdir && !oe->opaque) {
-+              lowerdentry = ovl_lookup_real(lowerdir, &dentry->d_name);
-+              err = PTR_ERR(lowerdentry);
-+              if (IS_ERR(lowerdentry))
-+                      goto out_dput_upper;
-+      }
-+
-+      if (lowerdentry && upperdentry &&
-+          (!S_ISDIR(upperdentry->d_inode->i_mode) ||
-+           !S_ISDIR(lowerdentry->d_inode->i_mode))) {
-+              dput(lowerdentry);
-+              lowerdentry = NULL;
-+              oe->opaque = true;
-+      }
-+
-+      if (lowerdentry || upperdentry) {
-+              struct dentry *realdentry;
-+
-+              realdentry = upperdentry ? upperdentry : lowerdentry;
-+              err = -ENOMEM;
-+              inode = ovl_new_inode(dentry->d_sb, realdentry->d_inode->i_mode,
-+                                    oe);
-+              if (!inode)
-+                      goto out_dput;
-+              ovl_copyattr(realdentry->d_inode, inode);
-+      }
-+
-+      if (upperdentry)
-+              oe->__upperdentry = dget(upperdentry);
-+
-+      if (lowerdentry)
-+              oe->lowerdentry = lowerdentry;
-+
-+      dentry->d_fsdata = oe;
-+      dentry->d_op = &ovl_dentry_operations;
-+      d_add(dentry, inode);
-+
-+      return 0;
-+
-+out_dput:
-+      dput(lowerdentry);
-+out_dput_upper:
-+      dput(upperdentry);
-+out_put_dir:
-+      kfree(oe);
-+out:
-+      return err;
-+}
-+
-+struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
-+                        unsigned int flags)
-+{
-+      int err = ovl_do_lookup(dentry);
-+
-+      if (err)
-+              return ERR_PTR(err);
-+
-+      return NULL;
-+}
-+
-+struct file *ovl_path_open(struct path *path, int flags)
-+{
-+      return dentry_open(path, flags, current_cred());
-+}
-+
-+static void ovl_put_super(struct super_block *sb)
-+{
-+      struct ovl_fs *ufs = sb->s_fs_info;
-+
-+      if (!(sb->s_flags & MS_RDONLY))
-+              mnt_drop_write(ufs->upper_mnt);
-+
-+      mntput(ufs->upper_mnt);
-+      mntput(ufs->lower_mnt);
-+
-+      kfree(ufs->config.lowerdir);
-+      kfree(ufs->config.upperdir);
-+      kfree(ufs);
-+}
-+
-+static int ovl_remount_fs(struct super_block *sb, int *flagsp, char *data)
-+{
-+      int flags = *flagsp;
-+      struct ovl_fs *ufs = sb->s_fs_info;
-+
-+      /* When remounting rw or ro, we need to adjust the write access to the
-+       * upper fs.
-+       */
-+      if (((flags ^ sb->s_flags) & MS_RDONLY) == 0)
-+              /* No change to readonly status */
-+              return 0;
-+
-+      if (flags & MS_RDONLY) {
-+              mnt_drop_write(ufs->upper_mnt);
-+              return 0;
-+      } else
-+              return mnt_want_write(ufs->upper_mnt);
-+}
-+
-+/**
-+ * ovl_statfs
-+ * @sb: The overlayfs super block
-+ * @buf: The struct kstatfs to fill in with stats
-+ *
-+ * Get the filesystem statistics.  As writes always target the upper layer
-+ * filesystem pass the statfs to the same filesystem.
-+ */
-+static int ovl_statfs(struct dentry *dentry, struct kstatfs *buf)
-+{
-+      struct ovl_fs *ofs = dentry->d_sb->s_fs_info;
-+      struct dentry *root_dentry = dentry->d_sb->s_root;
-+      struct path path;
-+      int err;
-+
-+      ovl_path_upper(root_dentry, &path);
-+
-+      err = vfs_statfs(&path, buf);
-+      if (!err) {
-+              buf->f_namelen = max(buf->f_namelen, ofs->lower_namelen);
-+              buf->f_type = OVERLAYFS_SUPER_MAGIC;
-+      }
-+
-+      return err;
-+}
-+
-+/**
-+ * ovl_show_options
-+ *
-+ * Prints the mount options for a given superblock.
-+ * Returns zero; does not fail.
-+ */
-+static int ovl_show_options(struct seq_file *m, struct dentry *dentry)
-+{
-+      struct super_block *sb = dentry->d_sb;
-+      struct ovl_fs *ufs = sb->s_fs_info;
-+
-+      seq_printf(m, ",lowerdir=%s", ufs->config.lowerdir);
-+      seq_printf(m, ",upperdir=%s", ufs->config.upperdir);
-+      return 0;
-+}
-+
-+static const struct super_operations ovl_super_operations = {
-+      .put_super      = ovl_put_super,
-+      .remount_fs     = ovl_remount_fs,
-+      .statfs         = ovl_statfs,
-+      .show_options   = ovl_show_options,
-+};
-+
-+enum {
-+      OPT_LOWERDIR,
-+      OPT_UPPERDIR,
-+      OPT_ERR,
-+};
-+
-+static const match_table_t ovl_tokens = {
-+      {OPT_LOWERDIR,                  "lowerdir=%s"},
-+      {OPT_UPPERDIR,                  "upperdir=%s"},
-+      {OPT_ERR,                       NULL}
-+};
-+
-+static int ovl_parse_opt(char *opt, struct ovl_config *config)
-+{
-+      char *p;
-+
-+      config->upperdir = NULL;
-+      config->lowerdir = NULL;
-+
-+      while ((p = strsep(&opt, ",")) != NULL) {
-+              int token;
-+              substring_t args[MAX_OPT_ARGS];
-+
-+              if (!*p)
-+                      continue;
-+
-+              token = match_token(p, ovl_tokens, args);
-+              switch (token) {
-+              case OPT_UPPERDIR:
-+                      kfree(config->upperdir);
-+                      config->upperdir = match_strdup(&args[0]);
-+                      if (!config->upperdir)
-+                              return -ENOMEM;
-+                      break;
-+
-+              case OPT_LOWERDIR:
-+                      kfree(config->lowerdir);
-+                      config->lowerdir = match_strdup(&args[0]);
-+                      if (!config->lowerdir)
-+                              return -ENOMEM;
-+                      break;
-+
-+              default:
-+                      return -EINVAL;
-+              }
-+      }
-+      return 0;
-+}
-+
-+static int ovl_fill_super(struct super_block *sb, void *data, int silent)
-+{
-+      struct path lowerpath;
-+      struct path upperpath;
-+      struct inode *root_inode;
-+      struct dentry *root_dentry;
-+      struct ovl_entry *oe;
-+      struct ovl_fs *ufs;
-+      struct kstatfs statfs;
-+      int err;
-+
-+      err = -ENOMEM;
-+      ufs = kmalloc(sizeof(struct ovl_fs), GFP_KERNEL);
-+      if (!ufs)
-+              goto out;
-+
-+      err = ovl_parse_opt((char *) data, &ufs->config);
-+      if (err)
-+              goto out_free_ufs;
-+
-+      err = -EINVAL;
-+      if (!ufs->config.upperdir || !ufs->config.lowerdir) {
-+              pr_err("overlayfs: missing upperdir or lowerdir\n");
-+              goto out_free_config;
-+      }
-+
-+      oe = ovl_alloc_entry();
-+      if (oe == NULL)
-+              goto out_free_config;
-+
-+      err = kern_path(ufs->config.upperdir, LOOKUP_FOLLOW, &upperpath);
-+      if (err)
-+              goto out_free_oe;
-+
-+      err = kern_path(ufs->config.lowerdir, LOOKUP_FOLLOW, &lowerpath);
-+      if (err)
-+              goto out_put_upperpath;
-+
-+      err = -ENOTDIR;
-+      if (!S_ISDIR(upperpath.dentry->d_inode->i_mode) ||
-+          !S_ISDIR(lowerpath.dentry->d_inode->i_mode))
-+              goto out_put_lowerpath;
-+
-+      err = vfs_statfs(&lowerpath, &statfs);
-+      if (err) {
-+              pr_err("overlayfs: statfs failed on lowerpath\n");
-+              goto out_put_lowerpath;
-+      }
-+      ufs->lower_namelen = statfs.f_namelen;
-+
-+      sb->s_stack_depth = max(upperpath.mnt->mnt_sb->s_stack_depth,
-+                              lowerpath.mnt->mnt_sb->s_stack_depth) + 1;
-+
-+      err = -EINVAL;
-+      if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
-+              pr_err("overlayfs: maximum fs stacking depth exceeded\n");
-+              goto out_put_lowerpath;
-+      }
-+
-+
-+      ufs->upper_mnt = clone_private_mount(&upperpath);
-+      err = PTR_ERR(ufs->upper_mnt);
-+      if (IS_ERR(ufs->upper_mnt)) {
-+              pr_err("overlayfs: failed to clone upperpath\n");
-+              goto out_put_lowerpath;
-+      }
-+
-+      ufs->lower_mnt = clone_private_mount(&lowerpath);
-+      err = PTR_ERR(ufs->lower_mnt);
-+      if (IS_ERR(ufs->lower_mnt)) {
-+              pr_err("overlayfs: failed to clone lowerpath\n");
-+              goto out_put_upper_mnt;
-+      }
-+
-+      /*
-+       * Make lower_mnt R/O.  That way fchmod/fchown on lower file
-+       * will fail instead of modifying lower fs.
-+       */
-+      ufs->lower_mnt->mnt_flags |= MNT_READONLY;
-+
-+      /* If the upper fs is r/o, we mark overlayfs r/o too */
-+      if (ufs->upper_mnt->mnt_sb->s_flags & MS_RDONLY)
-+              sb->s_flags |= MS_RDONLY;
-+
-+      if (!(sb->s_flags & MS_RDONLY)) {
-+              err = mnt_want_write(ufs->upper_mnt);
-+              if (err)
-+                      goto out_put_lower_mnt;
-+      }
-+
-+      err = -ENOMEM;
-+      root_inode = ovl_new_inode(sb, S_IFDIR, oe);
-+      if (!root_inode)
-+              goto out_drop_write;
-+
-+      root_dentry = d_make_root(root_inode);
-+      if (!root_dentry)
-+              goto out_drop_write;
-+
-+      mntput(upperpath.mnt);
-+      mntput(lowerpath.mnt);
-+
-+      oe->__upperdentry = dget(upperpath.dentry);
-+      oe->lowerdentry = lowerpath.dentry;
-+
-+      root_dentry->d_fsdata = oe;
-+      root_dentry->d_op = &ovl_dentry_operations;
-+
-+      sb->s_magic = OVERLAYFS_SUPER_MAGIC;
-+      sb->s_op = &ovl_super_operations;
-+      sb->s_root = root_dentry;
-+      sb->s_fs_info = ufs;
-+
-+      return 0;
-+
-+out_drop_write:
-+      if (!(sb->s_flags & MS_RDONLY))
-+              mnt_drop_write(ufs->upper_mnt);
-+out_put_lower_mnt:
-+      mntput(ufs->lower_mnt);
-+out_put_upper_mnt:
-+      mntput(ufs->upper_mnt);
-+out_put_lowerpath:
-+      path_put(&lowerpath);
-+out_put_upperpath:
-+      path_put(&upperpath);
-+out_free_oe:
-+      kfree(oe);
-+out_free_config:
-+      kfree(ufs->config.lowerdir);
-+      kfree(ufs->config.upperdir);
-+out_free_ufs:
-+      kfree(ufs);
-+out:
-+      return err;
-+}
-+
-+static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags,
-+                              const char *dev_name, void *raw_data)
-+{
-+      return mount_nodev(fs_type, flags, raw_data, ovl_fill_super);
-+}
-+
-+static struct file_system_type ovl_fs_type = {
-+      .owner          = THIS_MODULE,
-+      .name           = "overlayfs",
-+      .mount          = ovl_mount,
-+      .kill_sb        = kill_anon_super,
-+};
-+MODULE_ALIAS_FS("overlayfs");
-+
-+static int __init ovl_init(void)
-+{
-+      return register_filesystem(&ovl_fs_type);
-+}
-+
-+static void __exit ovl_exit(void)
-+{
-+      unregister_filesystem(&ovl_fs_type);
-+}
-+
-+module_init(ovl_init);
-+module_exit(ovl_exit);
---- a/fs/splice.c
-+++ b/fs/splice.c
-@@ -1309,6 +1309,7 @@ long do_splice_direct(struct file *in, l
-       return ret;
- }
-+EXPORT_SYMBOL(do_splice_direct);
- static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
-                              struct pipe_inode_info *opipe,
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -246,6 +246,12 @@ struct iattr {
-  */
- #include <linux/quota.h>
-+/*
-+ * Maximum number of layers of fs stack.  Needs to be limited to
-+ * prevent kernel stack overflow
-+ */
-+#define FILESYSTEM_MAX_STACK_DEPTH 2
-+
- /** 
-  * enum positive_aop_returns - aop return codes with specific semantics
-  *
-@@ -1330,6 +1336,11 @@ struct super_block {
-        */
-       struct list_lru         s_dentry_lru ____cacheline_aligned_in_smp;
-       struct list_lru         s_inode_lru ____cacheline_aligned_in_smp;
-+
-+      /*
-+       * Indicates how deep in a filesystem stack this SB is
-+       */
-+      int s_stack_depth;
- };
- extern struct timespec current_fs_time(struct super_block *sb);
-@@ -1585,6 +1596,7 @@ struct inode_operations {
-                          struct file *, unsigned open_flag,
-                          umode_t create_mode, int *opened);
-       int (*tmpfile) (struct inode *, struct dentry *, umode_t);
-+      int (*dentry_open)(struct dentry *, struct file *, const struct cred *);
- } ____cacheline_aligned;
- ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
-@@ -2019,6 +2031,7 @@ extern struct file *file_open_name(struc
- extern struct file *filp_open(const char *, int, umode_t);
- extern struct file *file_open_root(struct dentry *, struct vfsmount *,
-                                  const char *, int);
-+extern int vfs_open(const struct path *, struct file *, const struct cred *);
- extern struct file * dentry_open(const struct path *, int, const struct cred *);
- extern int filp_close(struct file *, fl_owner_t id);
-@@ -2225,6 +2238,7 @@ extern sector_t bmap(struct inode *, sec
- #endif
- extern int notify_change(struct dentry *, struct iattr *);
- extern int inode_permission(struct inode *, int);
-+extern int __inode_permission(struct inode *, int);
- extern int generic_permission(struct inode *, int);
- static inline bool execute_ok(struct inode *inode)
-@@ -2430,6 +2444,9 @@ extern ssize_t generic_file_splice_write
-               struct file *, loff_t *, size_t, unsigned int);
- extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
-               struct file *out, loff_t *, size_t len, unsigned int flags);
-+extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
-+              loff_t *opos, size_t len, unsigned int flags);
-+
- extern void
- file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
---- a/include/linux/mount.h
-+++ b/include/linux/mount.h
-@@ -69,6 +69,9 @@ extern void mnt_pin(struct vfsmount *mnt
- extern void mnt_unpin(struct vfsmount *mnt);
- extern int __mnt_is_readonly(struct vfsmount *mnt);
-+struct path;
-+extern struct vfsmount *clone_private_mount(struct path *path);
-+
- struct file_system_type;
- extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
-                                     int flags, const char *name,
diff --git a/target/linux/generic/patches-3.12/102-ehci_hcd_ignore_oc.patch b/target/linux/generic/patches-3.12/102-ehci_hcd_ignore_oc.patch
deleted file mode 100644 (file)
index de17652..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-From 1e311820ec3055e3f08e687de6564692a7cec675 Mon Sep 17 00:00:00 2001
-From: Florian Fainelli <florian@openwrt.org>
-Date: Mon, 28 Jan 2013 20:06:29 +0100
-Subject: [PATCH 11/12] USB: EHCI: add ignore_oc flag to disable overcurrent
- checking
-
-This patch adds an ignore_oc flag which can be set by EHCI controller
-not supporting or wanting to disable overcurrent checking. The EHCI
-platform data in include/linux/usb/ehci_pdriver.h is also augmented to
-take advantage of this new flag.
-
-Signed-off-by: Florian Fainelli <florian@openwrt.org>
----
- drivers/usb/host/ehci-hcd.c      |    2 +-
- drivers/usb/host/ehci-hub.c      |    4 ++--
- drivers/usb/host/ehci-platform.c |    1 +
- drivers/usb/host/ehci.h          |    1 +
- include/linux/usb/ehci_pdriver.h |    1 +
- 5 files changed, 6 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -630,7 +630,7 @@ static int ehci_run (struct usb_hcd *hcd
-               "USB %x.%x started, EHCI %x.%02x%s\n",
-               ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
-               temp >> 8, temp & 0xff,
--              ignore_oc ? ", overcurrent ignored" : "");
-+              (ignore_oc || ehci->ignore_oc) ? ", overcurrent ignored" : "");
-       ehci_writel(ehci, INTR_MASK,
-                   &ehci->regs->intr_enable); /* Turn On Interrupts */
---- a/drivers/usb/host/ehci-hub.c
-+++ b/drivers/usb/host/ehci-hub.c
-@@ -623,7 +623,7 @@ ehci_hub_status_data (struct usb_hcd *hc
-        * always set, seem to clear PORT_OCC and PORT_CSC when writing to
-        * PORT_POWER; that's surprising, but maybe within-spec.
-        */
--      if (!ignore_oc)
-+      if (!ignore_oc && !ehci->ignore_oc)
-               mask = PORT_CSC | PORT_PEC | PORT_OCC;
-       else
-               mask = PORT_CSC | PORT_PEC;
-@@ -983,7 +983,7 @@ static int ehci_hub_control (
-               if (temp & PORT_PEC)
-                       status |= USB_PORT_STAT_C_ENABLE << 16;
--              if ((temp & PORT_OCC) && !ignore_oc){
-+              if ((temp & PORT_OCC) && (!ignore_oc && !ehci->ignore_oc)){
-                       status |= USB_PORT_STAT_C_OVERCURRENT << 16;
-                       /*
---- a/drivers/usb/host/ehci-platform.c
-+++ b/drivers/usb/host/ehci-platform.c
-@@ -47,6 +47,7 @@ static int ehci_platform_reset(struct us
-       ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug;
-       ehci->big_endian_desc = pdata->big_endian_desc;
-       ehci->big_endian_mmio = pdata->big_endian_mmio;
-+      ehci->ignore_oc = pdata->ignore_oc;
-       if (pdata->pre_setup) {
-               retval = pdata->pre_setup(hcd);
---- a/drivers/usb/host/ehci.h
-+++ b/drivers/usb/host/ehci.h
-@@ -204,6 +204,7 @@ struct ehci_hcd {                  /* one per controlle
-       unsigned                frame_index_bug:1; /* MosChip (AKA NetMos) */
-       unsigned                need_oc_pp_cycle:1; /* MPC834X port power */
-       unsigned                imx28_write_fix:1; /* For Freescale i.MX28 */
-+      unsigned                ignore_oc:1;
-       /* required for usb32 quirk */
-       #define OHCI_CTRL_HCFS          (3 << 6)
---- a/include/linux/usb/ehci_pdriver.h
-+++ b/include/linux/usb/ehci_pdriver.h
-@@ -45,6 +45,7 @@ struct usb_ehci_pdata {
-       unsigned        big_endian_desc:1;
-       unsigned        big_endian_mmio:1;
-       unsigned        no_io_watchdog:1;
-+      unsigned        ignore_oc:1;
-       /* Turn on all power and clocks */
-       int (*power_on)(struct platform_device *pdev);
diff --git a/target/linux/generic/patches-3.12/120-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/patches-3.12/120-bridge_allow_receiption_on_disabled_port.patch
deleted file mode 100644 (file)
index 8a2fb41..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Stephen Hemminger <stephen@networkplumber.org>
-Subject: bridge: allow receiption on disabled port
-
-When an ethernet device is enslaved to a bridge, and the bridge STP
-detects loss of carrier (or operational state down), then normally
-packet receiption is blocked.
-
-This breaks control applications like WPA which maybe expecting to
-receive packets to negotiate to bring link up. The bridge needs to
-block forwarding packets from these disabled ports, but there is no
-hard requirement to not allow local packet delivery.
-
-Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-
---- a/net/bridge/br_input.c
-+++ b/net/bridge/br_input.c
-@@ -144,11 +144,13 @@ drop:
- static int br_handle_local_finish(struct sk_buff *skb)
- {
-       struct net_bridge_port *p = br_port_get_rcu(skb->dev);
--      u16 vid = 0;
-+      if (p->state != BR_STATE_DISABLED) {
-+              u16 vid = 0;
--      br_vlan_get_tag(skb, &vid);
--      if (p->flags & BR_LEARNING)
--              br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid);
-+              br_vlan_get_tag(skb, &vid);
-+              if (p->flags & BR_LEARNING)
-+                      br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid);
-+      }
-       return 0;        /* process further */
- }
-@@ -218,6 +220,18 @@ rx_handler_result_t br_handle_frame(stru
- forward:
-       switch (p->state) {
-+      case BR_STATE_DISABLED:
-+              if (ether_addr_equal(p->br->dev->dev_addr, dest))
-+                      skb->pkt_type = PACKET_HOST;
-+
-+              if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
-+                      br_handle_local_finish))
-+                      break;
-+
-+              BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
-+              br_pass_frame_up(skb);
-+              break;
-+
-       case BR_STATE_FORWARDING:
-               rhook = rcu_dereference(br_should_route_hook);
-               if (rhook) {
diff --git a/target/linux/generic/patches-3.12/130-mips_remove_plat_dma_functions.patch b/target/linux/generic/patches-3.12/130-mips_remove_plat_dma_functions.patch
deleted file mode 100644 (file)
index eec5ad8..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-From 151c4e4a06b0b8d16c2fd392bb0e33868b12357f Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Mon, 12 Aug 2013 12:45:52 +0200
-Subject: [PATCH] MIPS: remove unnecessary platform dma helper functions
-
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
----
- arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h | 12 ------------
- arch/mips/include/asm/mach-generic/dma-coherence.h       | 10 ----------
- arch/mips/include/asm/mach-ip27/dma-coherence.h          | 10 ----------
- arch/mips/include/asm/mach-ip32/dma-coherence.h          | 11 -----------
- arch/mips/include/asm/mach-jazz/dma-coherence.h          | 10 ----------
- arch/mips/include/asm/mach-loongson/dma-coherence.h      | 10 ----------
- arch/mips/include/asm/mach-powertv/dma-coherence.h       | 10 ----------
- arch/mips/mm/dma-default.c                               |  4 +---
- 8 files changed, 1 insertion(+), 76 deletions(-)
-
---- a/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h
-@@ -52,23 +52,11 @@ static inline int plat_dma_supported(str
-       return 0;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--      BUG();
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 1;
- }
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      BUG();
--      return 0;
--}
--
- dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr);
- phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr);
---- a/arch/mips/include/asm/mach-generic/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-generic/dma-coherence.h
-@@ -47,16 +47,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
- #ifdef CONFIG_DMA_COHERENT
---- a/arch/mips/include/asm/mach-ip27/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-ip27/dma-coherence.h
-@@ -58,16 +58,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 1;               /* IP27 non-cohernet mode is unsupported */
---- a/arch/mips/include/asm/mach-ip32/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-ip32/dma-coherence.h
-@@ -80,17 +80,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--      return;
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 0;               /* IP32 is non-cohernet */
---- a/arch/mips/include/asm/mach-jazz/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-jazz/dma-coherence.h
-@@ -48,16 +48,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 0;
---- a/arch/mips/include/asm/mach-loongson/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-loongson/dma-coherence.h
-@@ -53,16 +53,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 0;
---- a/arch/mips/include/asm/mach-powertv/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-powertv/dma-coherence.h
-@@ -99,16 +99,6 @@ static inline int plat_dma_supported(str
-       return 1;
- }
--static inline void plat_extra_sync_for_device(struct device *dev)
--{
--}
--
--static inline int plat_dma_mapping_error(struct device *dev,
--                                       dma_addr_t dma_addr)
--{
--      return 0;
--}
--
- static inline int plat_device_is_coherent(struct device *dev)
- {
-       return 0;
---- a/arch/mips/mm/dma-default.c
-+++ b/arch/mips/mm/dma-default.c
-@@ -297,7 +297,6 @@ static void mips_dma_sync_single_for_cpu
- static void mips_dma_sync_single_for_device(struct device *dev,
-       dma_addr_t dma_handle, size_t size, enum dma_data_direction direction)
- {
--      plat_extra_sync_for_device(dev);
-       if (!plat_device_is_coherent(dev))
-               __dma_sync(dma_addr_to_page(dev, dma_handle),
-                          dma_handle & ~PAGE_MASK, size, direction);
-@@ -327,7 +326,7 @@ static void mips_dma_sync_sg_for_device(
- int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
- {
--      return plat_dma_mapping_error(dev, dma_addr);
-+      return 0;
- }
- int mips_dma_supported(struct device *dev, u64 mask)
-@@ -340,7 +339,6 @@ void dma_cache_sync(struct device *dev,
- {
-       BUG_ON(direction == DMA_NONE);
--      plat_extra_sync_for_device(dev);
-       if (!plat_device_is_coherent(dev))
-               __dma_sync_virtual(vaddr, size, direction);
- }
diff --git a/target/linux/generic/patches-3.12/131-improve_noncoherent_dma_checks.patch b/target/linux/generic/patches-3.12/131-improve_noncoherent_dma_checks.patch
deleted file mode 100644 (file)
index ac83617..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-From d593f8fc627f8cdaee9c14e4d22b0770a09baaf1 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Thu, 15 Aug 2013 10:47:47 +0200
-Subject: [PATCH] MIPS: improve checks for noncoherent DMA
-
-Only one MIPS development board actually supports enabling/disabling DMA
-coherency at runtime, so it's not a good idea to push the overhead of
-checking that configuration setting onto every other supported target as
-well.
-
-Signed-off-by: Felix Fietkau <nbd@openwrt.org>
----
- arch/mips/Kconfig                                  | 6 +++++-
- arch/mips/include/asm/dma-coherence.h              | 7 +++++++
- arch/mips/include/asm/mach-generic/dma-coherence.h | 4 ----
- arch/mips/mm/dma-default.c                         | 2 ++
- 4 files changed, 14 insertions(+), 5 deletions(-)
-
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -299,7 +299,7 @@ config MIPS_MALTA
-       select CEVT_R4K
-       select CSRC_R4K
-       select CSRC_GIC
--      select DMA_NONCOHERENT
-+      select DMA_MAYBE_COHERENT
-       select GENERIC_ISA_DMA
-       select HAVE_PCSPKR_PLATFORM
-       select IRQ_CPU
-@@ -912,6 +912,10 @@ config FW_CFE
- config ARCH_DMA_ADDR_T_64BIT
-       def_bool (HIGHMEM && 64BIT_PHYS_ADDR) || 64BIT
-+config DMA_MAYBE_COHERENT
-+      select DMA_NONCOHERENT
-+      bool
-+
- config DMA_COHERENT
-       bool
---- a/arch/mips/include/asm/dma-coherence.h
-+++ b/arch/mips/include/asm/dma-coherence.h
-@@ -9,7 +9,16 @@
- #ifndef __ASM_DMA_COHERENCE_H
- #define __ASM_DMA_COHERENCE_H
-+#ifdef CONFIG_DMA_MAYBE_COHERENT
- extern int coherentio;
- extern int hw_coherentio;
-+#else
-+#ifdef CONFIG_DMA_COHERENT
-+#define coherentio    1
-+#else
-+#define coherentio    0
-+#endif
-+#define hw_coherentio 0
-+#endif /* CONFIG_DMA_MAYBE_COHERENT */
- #endif
---- a/arch/mips/include/asm/mach-generic/dma-coherence.h
-+++ b/arch/mips/include/asm/mach-generic/dma-coherence.h
-@@ -49,11 +49,7 @@ static inline int plat_dma_supported(str
- static inline int plat_device_is_coherent(struct device *dev)
- {
--#ifdef CONFIG_DMA_COHERENT
--      return 1;
--#else
-       return coherentio;
--#endif
- }
- #ifdef CONFIG_SWIOTLB
---- a/arch/mips/mm/dma-default.c
-+++ b/arch/mips/mm/dma-default.c
-@@ -23,6 +23,7 @@
- #include <dma-coherence.h>
-+#ifdef CONFIG_DMA_MAYBE_COHERENT
- int coherentio = 0;   /* User defined DMA coherency from command line. */
- EXPORT_SYMBOL_GPL(coherentio);
- int hw_coherentio = 0;        /* Actual hardware supported DMA coherency setting. */
-@@ -42,6 +43,7 @@ static int __init setnocoherentio(char *
-       return 0;
- }
- early_param("nocoherentio", setnocoherentio);
-+#endif
- static inline struct page *dma_addr_to_page(struct device *dev,
-       dma_addr_t dma_addr)
diff --git a/target/linux/generic/patches-3.12/132-mips_inline_dma_ops.patch b/target/linux/generic/patches-3.12/132-mips_inline_dma_ops.patch
deleted file mode 100644 (file)
index eddf306..0000000
+++ /dev/null
@@ -1,668 +0,0 @@
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -1394,6 +1394,7 @@ config CPU_CAVIUM_OCTEON
-       select LIBFDT
-       select USE_OF
-       select USB_EHCI_BIG_ENDIAN_MMIO
-+      select SYS_HAS_DMA_OPS
-       help
-         The Cavium Octeon processor is a highly integrated chip containing
-         many ethernet hardware widgets for networking tasks. The processor
-@@ -1614,6 +1615,9 @@ config SYS_HAS_CPU_XLR
- config SYS_HAS_CPU_XLP
-       bool
-+config SYS_HAS_DMA_OPS
-+      bool
-+
- #
- # CPU may reorder R->R, R->W, W->R, W->W
- # Reordering beyond LL and SC is handled in WEAK_REORDERING_BEYOND_LLSC
---- a/arch/mips/include/asm/dma-mapping.h
-+++ b/arch/mips/include/asm/dma-mapping.h
-@@ -1,9 +1,16 @@
- #ifndef _ASM_DMA_MAPPING_H
- #define _ASM_DMA_MAPPING_H
-+#include <linux/kmemcheck.h>
-+#include <linux/bug.h>
-+#include <linux/scatterlist.h>
-+#include <linux/dma-debug.h>
-+#include <linux/dma-attrs.h>
-+
- #include <asm/scatterlist.h>
- #include <asm/dma-coherence.h>
- #include <asm/cache.h>
-+#include <asm/cpu-type.h>
- #include <asm-generic/dma-coherent.h>
- #ifndef CONFIG_SGI_IP27 /* Kludge to fix 2.6.39 build for IP27 */
-@@ -12,12 +19,48 @@
- extern struct dma_map_ops *mips_dma_map_ops;
-+void __dma_sync(struct page *page, unsigned long offset, size_t size,
-+              enum dma_data_direction direction);
-+void *mips_dma_alloc_coherent(struct device *dev, size_t size,
-+                            dma_addr_t *dma_handle, gfp_t gfp,
-+                            struct dma_attrs *attrs);
-+void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
-+                          dma_addr_t dma_handle, struct dma_attrs *attrs);
-+
- static inline struct dma_map_ops *get_dma_ops(struct device *dev)
- {
-+#ifdef CONFIG_SYS_HAS_DMA_OPS
-       if (dev && dev->archdata.dma_ops)
-               return dev->archdata.dma_ops;
-       else
-               return mips_dma_map_ops;
-+#else
-+      return NULL;
-+#endif
-+}
-+
-+/*
-+ * Warning on the terminology - Linux calls an uncached area coherent;
-+ * MIPS terminology calls memory areas with hardware maintained coherency
-+ * coherent.
-+ */
-+
-+static inline int cpu_needs_post_dma_flush(struct device *dev)
-+{
-+#ifndef CONFIG_SYS_HAS_CPU_R10000
-+      return 0;
-+#endif
-+      return !plat_device_is_coherent(dev) &&
-+             (boot_cpu_type() == CPU_R10000 ||
-+              boot_cpu_type() == CPU_R12000 ||
-+              boot_cpu_type() == CPU_BMIPS5000);
-+}
-+
-+static inline struct page *dma_addr_to_page(struct device *dev,
-+      dma_addr_t dma_addr)
-+{
-+      return pfn_to_page(
-+              plat_dma_addr_to_phys(dev, dma_addr) >> PAGE_SHIFT);
- }
- static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
-@@ -30,12 +73,312 @@ static inline bool dma_capable(struct de
- static inline void dma_mark_clean(void *addr, size_t size) {}
--#include <asm-generic/dma-mapping-common.h>
-+static inline dma_addr_t dma_map_single_attrs(struct device *dev, void *ptr,
-+                                            size_t size,
-+                                            enum dma_data_direction dir,
-+                                            struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      unsigned long offset = (unsigned long)ptr & ~PAGE_MASK;
-+      struct page *page = virt_to_page(ptr);
-+      dma_addr_t addr;
-+
-+      kmemcheck_mark_initialized(ptr, size);
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops) {
-+              addr = ops->map_page(dev, page, offset, size, dir, attrs);
-+      } else {
-+              if (!plat_device_is_coherent(dev))
-+                      __dma_sync(page, offset, size, dir);
-+
-+              addr = plat_map_dma_mem_page(dev, page) + offset;
-+      }
-+      debug_dma_map_page(dev, page, offset, size, dir, addr, true);
-+      return addr;
-+}
-+
-+static inline void dma_unmap_single_attrs(struct device *dev, dma_addr_t addr,
-+                                        size_t size,
-+                                        enum dma_data_direction dir,
-+                                        struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops) {
-+              ops->unmap_page(dev, addr, size, dir, attrs);
-+      } else {
-+              if (cpu_needs_post_dma_flush(dev))
-+                      __dma_sync(dma_addr_to_page(dev, addr),
-+                                 addr & ~PAGE_MASK, size, dir);
-+
-+              plat_unmap_dma_mem(dev, addr, size, dir);
-+      }
-+      debug_dma_unmap_page(dev, addr, size, dir, true);
-+}
-+
-+static inline int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,
-+                                 int nents, enum dma_data_direction dir,
-+                                 struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      int i, ents;
-+      struct scatterlist *s;
-+
-+      for_each_sg(sg, s, nents, i)
-+              kmemcheck_mark_initialized(sg_virt(s), s->length);
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops) {
-+              ents = ops->map_sg(dev, sg, nents, dir, attrs);
-+      } else {
-+              for_each_sg(sg, s, nents, i) {
-+                      struct page *page = sg_page(s);
-+
-+                      if (!plat_device_is_coherent(dev))
-+                              __dma_sync(page, s->offset, s->length, dir);
-+#ifdef CONFIG_NEED_SG_DMA_LENGTH
-+                      s->dma_length = s->length;
-+#endif
-+                      s->dma_address =
-+                              plat_map_dma_mem_page(dev, page) + s->offset;
-+              }
-+              ents = nents;
-+      }
-+      debug_dma_map_sg(dev, sg, nents, ents, dir);
-+
-+      return ents;
-+}
-+
-+static inline void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,
-+                                    int nents, enum dma_data_direction dir,
-+                                    struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      struct scatterlist *s;
-+      int i;
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      debug_dma_unmap_sg(dev, sg, nents, dir);
-+      if (ops) {
-+              ops->unmap_sg(dev, sg, nents, dir, attrs);
-+              return;
-+      }
-+
-+      for_each_sg(sg, s, nents, i) {
-+              if (!plat_device_is_coherent(dev) && dir != DMA_TO_DEVICE)
-+                      __dma_sync(sg_page(s), s->offset, s->length, dir);
-+              plat_unmap_dma_mem(dev, s->dma_address, s->length, dir);
-+      }
-+}
-+
-+static inline dma_addr_t dma_map_page(struct device *dev, struct page *page,
-+                                    size_t offset, size_t size,
-+                                    enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      dma_addr_t addr;
-+
-+      kmemcheck_mark_initialized(page_address(page) + offset, size);
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops) {
-+              addr = ops->map_page(dev, page, offset, size, dir, NULL);
-+      } else {
-+              if (!plat_device_is_coherent(dev))
-+                      __dma_sync(page, offset, size, dir);
-+
-+              addr = plat_map_dma_mem_page(dev, page) + offset;
-+      }
-+      debug_dma_map_page(dev, page, offset, size, dir, addr, false);
-+
-+      return addr;
-+}
-+
-+static inline void dma_unmap_page(struct device *dev, dma_addr_t addr,
-+                                size_t size, enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops) {
-+              ops->unmap_page(dev, addr, size, dir, NULL);
-+      } else {
-+              if (cpu_needs_post_dma_flush(dev))
-+                      __dma_sync(dma_addr_to_page(dev, addr),
-+                                 addr & ~PAGE_MASK, size, dir);
-+
-+              plat_unmap_dma_mem(dev, addr, size, dir);
-+      }
-+      debug_dma_unmap_page(dev, addr, size, dir, false);
-+}
-+
-+static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr,
-+                                         size_t size,
-+                                         enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_single_for_cpu(dev, addr, size, dir);
-+      else if (cpu_needs_post_dma_flush(dev))
-+              __dma_sync(dma_addr_to_page(dev, addr),
-+                         addr & ~PAGE_MASK, size, dir);
-+      debug_dma_sync_single_for_cpu(dev, addr, size, dir);
-+}
-+
-+static inline void dma_sync_single_for_device(struct device *dev,
-+                                            dma_addr_t addr, size_t size,
-+                                            enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_single_for_device(dev, addr, size, dir);
-+      else if (!plat_device_is_coherent(dev))
-+              __dma_sync(dma_addr_to_page(dev, addr),
-+                         addr & ~PAGE_MASK, size, dir);
-+      debug_dma_sync_single_for_device(dev, addr, size, dir);
-+}
-+
-+static inline void dma_sync_single_range_for_cpu(struct device *dev,
-+                                               dma_addr_t addr,
-+                                               unsigned long offset,
-+                                               size_t size,
-+                                               enum dma_data_direction dir)
-+{
-+      const struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_single_for_cpu(dev, addr + offset, size, dir);
-+      else if (cpu_needs_post_dma_flush(dev))
-+              __dma_sync(dma_addr_to_page(dev, addr + offset),
-+                         (addr + offset) & ~PAGE_MASK, size, dir);
-+      debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir);
-+}
-+
-+static inline void dma_sync_single_range_for_device(struct device *dev,
-+                                                  dma_addr_t addr,
-+                                                  unsigned long offset,
-+                                                  size_t size,
-+                                                  enum dma_data_direction dir)
-+{
-+      const struct dma_map_ops *ops = get_dma_ops(dev);
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_single_for_device(dev, addr + offset, size, dir);
-+      else if (!plat_device_is_coherent(dev))
-+              __dma_sync(dma_addr_to_page(dev, addr + offset),
-+                         (addr + offset) & ~PAGE_MASK, size, dir);
-+      debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir);
-+}
-+
-+static inline void
-+dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
-+                  int nelems, enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      struct scatterlist *s;
-+      int i;
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_sg_for_cpu(dev, sg, nelems, dir);
-+      else if (cpu_needs_post_dma_flush(dev)) {
-+              for_each_sg(sg, s, nelems, i)
-+                      __dma_sync(sg_page(s), s->offset, s->length, dir);
-+      }
-+      debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir);
-+}
-+
-+static inline void
-+dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
-+                     int nelems, enum dma_data_direction dir)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      struct scatterlist *s;
-+      int i;
-+
-+      BUG_ON(!valid_dma_direction(dir));
-+      if (ops)
-+              ops->sync_sg_for_device(dev, sg, nelems, dir);
-+      else if (!plat_device_is_coherent(dev)) {
-+              for_each_sg(sg, s, nelems, i)
-+                      __dma_sync(sg_page(s), s->offset, s->length, dir);
-+      }
-+      debug_dma_sync_sg_for_device(dev, sg, nelems, dir);
-+
-+}
-+
-+#define dma_map_single(d, a, s, r) dma_map_single_attrs(d, a, s, r, NULL)
-+#define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, NULL)
-+#define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, NULL)
-+#define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, NULL)
-+
-+extern int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
-+                         void *cpu_addr, dma_addr_t dma_addr, size_t size);
-+
-+/**
-+ * dma_mmap_attrs - map a coherent DMA allocation into user space
-+ * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
-+ * @vma: vm_area_struct describing requested user mapping
-+ * @cpu_addr: kernel CPU-view address returned from dma_alloc_attrs
-+ * @handle: device-view address returned from dma_alloc_attrs
-+ * @size: size of memory originally requested in dma_alloc_attrs
-+ * @attrs: attributes of mapping properties requested in dma_alloc_attrs
-+ *
-+ * Map a coherent DMA buffer previously allocated by dma_alloc_attrs
-+ * into user space.  The coherent DMA buffer must not be freed by the
-+ * driver until the user space mapping has been released.
-+ */
-+static inline int
-+dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma, void *cpu_addr,
-+             dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      BUG_ON(!ops);
-+      if (ops && ops->mmap)
-+              return ops->mmap(dev, vma, cpu_addr, dma_addr, size, attrs);
-+      return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
-+}
-+
-+#define dma_mmap_coherent(d, v, c, h, s) dma_mmap_attrs(d, v, c, h, s, NULL)
-+
-+static inline int dma_mmap_writecombine(struct device *dev, struct vm_area_struct *vma,
-+                    void *cpu_addr, dma_addr_t dma_addr, size_t size)
-+{
-+      DEFINE_DMA_ATTRS(attrs);
-+      dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs);
-+      return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs);
-+}
-+
-+int
-+dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
-+                     void *cpu_addr, dma_addr_t dma_addr, size_t size);
-+
-+static inline int
-+dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt, void *cpu_addr,
-+                    dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs)
-+{
-+      struct dma_map_ops *ops = get_dma_ops(dev);
-+      BUG_ON(!ops);
-+      if (ops && ops->get_sgtable)
-+              return ops->get_sgtable(dev, sgt, cpu_addr, dma_addr, size,
-+                                      attrs);
-+      return dma_common_get_sgtable(dev, sgt, cpu_addr, dma_addr, size);
-+}
-+
-+#define dma_get_sgtable(d, t, v, h, s) dma_get_sgtable_attrs(d, t, v, h, s, NULL)
-+
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-       struct dma_map_ops *ops = get_dma_ops(dev);
--      return ops->dma_supported(dev, mask);
-+      if (ops)
-+              return ops->dma_supported(dev, mask);
-+      return plat_dma_supported(dev, mask);
- }
- static inline int dma_mapping_error(struct device *dev, u64 mask)
-@@ -43,7 +386,9 @@ static inline int dma_mapping_error(stru
-       struct dma_map_ops *ops = get_dma_ops(dev);
-       debug_dma_mapping_error(dev, mask);
--      return ops->mapping_error(dev, mask);
-+      if (ops)
-+              return ops->mapping_error(dev, mask);
-+      return 0;
- }
- static inline int
-@@ -69,7 +414,11 @@ static inline void *dma_alloc_attrs(stru
-       void *ret;
-       struct dma_map_ops *ops = get_dma_ops(dev);
--      ret = ops->alloc(dev, size, dma_handle, gfp, attrs);
-+      if (ops)
-+              ret = ops->alloc(dev, size, dma_handle, gfp, attrs);
-+      else
-+              ret = mips_dma_alloc_coherent(dev, size, dma_handle, gfp,
-+                                            attrs);
-       debug_dma_alloc_coherent(dev, size, *dma_handle, ret);
-@@ -84,7 +433,10 @@ static inline void dma_free_attrs(struct
- {
-       struct dma_map_ops *ops = get_dma_ops(dev);
--      ops->free(dev, size, vaddr, dma_handle, attrs);
-+      if (ops)
-+              ops->free(dev, size, vaddr, dma_handle, attrs);
-+      else
-+              mips_dma_free_coherent(dev, size, vaddr, dma_handle, attrs);
-       debug_dma_free_coherent(dev, size, vaddr, dma_handle);
- }
---- a/arch/mips/mm/dma-default.c
-+++ b/arch/mips/mm/dma-default.c
-@@ -25,7 +25,7 @@
- #ifdef CONFIG_DMA_MAYBE_COHERENT
- int coherentio = 0;   /* User defined DMA coherency from command line. */
--EXPORT_SYMBOL_GPL(coherentio);
-+EXPORT_SYMBOL(coherentio);
- int hw_coherentio = 0;        /* Actual hardware supported DMA coherency setting. */
- static int __init setcoherentio(char *str)
-@@ -45,30 +45,6 @@ static int __init setnocoherentio(char *
- early_param("nocoherentio", setnocoherentio);
- #endif
--static inline struct page *dma_addr_to_page(struct device *dev,
--      dma_addr_t dma_addr)
--{
--      return pfn_to_page(
--              plat_dma_addr_to_phys(dev, dma_addr) >> PAGE_SHIFT);
--}
--
--/*
-- * The affected CPUs below in 'cpu_needs_post_dma_flush()' can
-- * speculatively fill random cachelines with stale data at any time,
-- * requiring an extra flush post-DMA.
-- *
-- * Warning on the terminology - Linux calls an uncached area coherent;
-- * MIPS terminology calls memory areas with hardware maintained coherency
-- * coherent.
-- */
--static inline int cpu_needs_post_dma_flush(struct device *dev)
--{
--      return !plat_device_is_coherent(dev) &&
--             (boot_cpu_type() == CPU_R10000 ||
--              boot_cpu_type() == CPU_R12000 ||
--              boot_cpu_type() == CPU_BMIPS5000);
--}
--
- static gfp_t massage_gfp_flags(const struct device *dev, gfp_t gfp)
- {
-       gfp_t dma_flag;
-@@ -124,8 +100,9 @@ void *dma_alloc_noncoherent(struct devic
- }
- EXPORT_SYMBOL(dma_alloc_noncoherent);
--static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
--      dma_addr_t * dma_handle, gfp_t gfp, struct dma_attrs *attrs)
-+void *mips_dma_alloc_coherent(struct device *dev, size_t size,
-+                            dma_addr_t *dma_handle, gfp_t gfp,
-+                            struct dma_attrs *attrs)
- {
-       void *ret;
-@@ -149,6 +126,7 @@ static void *mips_dma_alloc_coherent(str
-       return ret;
- }
-+EXPORT_SYMBOL(mips_dma_alloc_coherent);
- void dma_free_noncoherent(struct device *dev, size_t size, void *vaddr,
-@@ -159,8 +137,8 @@ void dma_free_noncoherent(struct device
- }
- EXPORT_SYMBOL(dma_free_noncoherent);
--static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
--      dma_addr_t dma_handle, struct dma_attrs *attrs)
-+void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
-+                          dma_addr_t dma_handle, struct dma_attrs *attrs)
- {
-       unsigned long addr = (unsigned long) vaddr;
-       int order = get_order(size);
-@@ -175,6 +153,7 @@ static void mips_dma_free_coherent(struc
-       free_pages(addr, get_order(size));
- }
-+EXPORT_SYMBOL(mips_dma_free_coherent);
- static inline void __dma_sync_virtual(void *addr, size_t size,
-       enum dma_data_direction direction)
-@@ -203,8 +182,8 @@ static inline void __dma_sync_virtual(vo
-  * If highmem is not configured then the bulk of this loop gets
-  * optimized out.
-  */
--static inline void __dma_sync(struct page *page,
--      unsigned long offset, size_t size, enum dma_data_direction direction)
-+void __dma_sync(struct page *page, unsigned long offset, size_t size,
-+              enum dma_data_direction direction)
- {
-       size_t left = size;
-@@ -233,108 +212,7 @@ static inline void __dma_sync(struct pag
-               left -= len;
-       } while (left);
- }
--
--static void mips_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
--      size_t size, enum dma_data_direction direction, struct dma_attrs *attrs)
--{
--      if (cpu_needs_post_dma_flush(dev))
--              __dma_sync(dma_addr_to_page(dev, dma_addr),
--                         dma_addr & ~PAGE_MASK, size, direction);
--
--      plat_unmap_dma_mem(dev, dma_addr, size, direction);
--}
--
--static int mips_dma_map_sg(struct device *dev, struct scatterlist *sg,
--      int nents, enum dma_data_direction direction, struct dma_attrs *attrs)
--{
--      int i;
--
--      for (i = 0; i < nents; i++, sg++) {
--              if (!plat_device_is_coherent(dev))
--                      __dma_sync(sg_page(sg), sg->offset, sg->length,
--                                 direction);
--#ifdef CONFIG_NEED_SG_DMA_LENGTH
--              sg->dma_length = sg->length;
--#endif
--              sg->dma_address = plat_map_dma_mem_page(dev, sg_page(sg)) +
--                                sg->offset;
--      }
--
--      return nents;
--}
--
--static dma_addr_t mips_dma_map_page(struct device *dev, struct page *page,
--      unsigned long offset, size_t size, enum dma_data_direction direction,
--      struct dma_attrs *attrs)
--{
--      if (!plat_device_is_coherent(dev))
--              __dma_sync(page, offset, size, direction);
--
--      return pla