diff options
111 files changed, 2158 insertions, 2916 deletions
| diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf index 3f44dbdfda70..ceaf6f652b00 100644 --- a/Documentation/hwmon/w83627ehf +++ b/Documentation/hwmon/w83627ehf @@ -50,7 +50,7 @@ W83627DHG, W83627DHG-P, W83627UHG, W83667HG, W83667HG-B, W83667HG-I  (NCT6775F), and NCT6776F super I/O chips. We will refer to them collectively  as Winbond chips. -The chips implement 2 to 4 temperature sensors (9 for NCT6775F and NCT6776F), +The chips implement 3 to 4 temperature sensors (9 for NCT6775F and NCT6776F),  2 to 5 fan rotation speed sensors, 8 to 10 analog voltage sensors, one VID  (except for 627UHG), alarms with beep warnings (control unimplemented),  and some automatic fan regulation strategies (plus manual fan control mode). @@ -143,8 +143,13 @@ pwm[1-4]_min_output - minimum fan speed (range 1 - 255), when the temperature  pwm[1-4]_stop_time  - how many milliseconds [ms] must elapse to switch                        corresponding fan off. (when the temperature was below                        defined range). +pwm[1-4]_start_output-minimum fan speed (range 1 - 255) when spinning up +pwm[1-4]_step_output- rate of fan speed change (1 - 255) +pwm[1-4]_stop_output- minimum fan speed (range 1 - 255) when spinning down +pwm[1-4]_max_output - maximum fan speed (range 1 - 255), when the temperature +                      is above defined range. -Note: last two functions are influenced by other control bits, not yet exported +Note: last six functions are influenced by other control bits, not yet exported        by the driver, so a change might not have any effect.  Implementation Details diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100 index 51f76a189fee..a4e8d90f59f6 100644 --- a/Documentation/hwmon/zl6100 +++ b/Documentation/hwmon/zl6100 @@ -88,14 +88,12 @@ Module parameters  delay  ----- -Some Intersil/Zilker Labs DC-DC controllers require a minimum interval between -I2C bus accesses. According to Intersil, the minimum interval is 2 ms, though -1 ms appears to be sufficient and has not caused any problems in testing. -The problem is known to affect ZL6100, ZL2105, and ZL2008. It is known not to -affect ZL2004 and ZL6105. The driver automatically sets the interval to 1 ms -except for ZL2004 and ZL6105. To enable manual override, the driver provides a -writeable module parameter, 'delay', which can be used to set the interval to -a value between 0 and 65,535 microseconds. +Intersil/Zilker Labs DC-DC controllers require a minimum interval between I2C +bus accesses. According to Intersil, the minimum interval is 2 ms, though 1 ms +appears to be sufficient and has not caused any problems in testing. The problem +is known to affect all currently supported chips. For manual override, the +driver provides a writeable module parameter, 'delay', which can be used to set +the interval to a value between 0 and 65,535 microseconds.  Sysfs entries diff --git a/MAINTAINERS b/MAINTAINERS index 209a386214c2..9be34c42b677 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1514,19 +1514,23 @@ F:	drivers/mtd/devices/block2mtd.c  BLUETOOTH DRIVERS  M:	Marcel Holtmann <marcel@holtmann.org> -M:	"Gustavo F. Padovan" <padovan@profusion.mobi> +M:	Gustavo Padovan <gustavo@padovan.org> +M:	Johan Hedberg <johan.hedberg@gmail.com>  L:	linux-bluetooth@vger.kernel.org  W:	http://www.bluez.org/ -T:	git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git +T:	git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git +T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git  S:	Maintained  F:	drivers/bluetooth/  BLUETOOTH SUBSYSTEM  M:	Marcel Holtmann <marcel@holtmann.org> -M:	"Gustavo F. Padovan" <padovan@profusion.mobi> +M:	Gustavo Padovan <gustavo@padovan.org> +M:	Johan Hedberg <johan.hedberg@gmail.com>  L:	linux-bluetooth@vger.kernel.org  W:	http://www.bluez.org/ -T:	git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git +T:	git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth.git +T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jh/bluetooth.git  S:	Maintained  F:	net/bluetooth/  F:	include/net/bluetooth/ @@ -1717,6 +1721,14 @@ F:	include/linux/can/error.h  F:	include/linux/can/netlink.h  F:	include/linux/can/platform/ +CAPABILITIES +M:	Serge Hallyn <serge.hallyn@canonical.com> +L:	linux-security-module@vger.kernel.org +S:	Supported	 +F:	include/linux/capability.h +F:	security/capability.c +F:	security/commoncap.c  +  CELL BROADBAND ENGINE ARCHITECTURE  M:	Arnd Bergmann <arnd@arndb.de>  L:	linuxppc-dev@lists.ozlabs.org @@ -2352,6 +2364,15 @@ S:	Supported  F:	drivers/gpu/drm/exynos  F:	include/drm/exynos* +EXYNOS MIPI DISPLAY DRIVERS +M:	Inki Dae <inki.dae@samsung.com> +M:	Donghwa Lee <dh09.lee@samsung.com> +M:	Kyungmin Park <kyungmin.park@samsung.com> +L:	linux-fbdev@vger.kernel.org +S:	Maintained +F:	drivers/video/exynos/exynos_mipi* +F:	include/video/exynos_mipi* +  DSCC4 DRIVER  M:	Francois Romieu <romieu@fr.zoreil.com>  L:	netdev@vger.kernel.org @@ -2846,6 +2867,12 @@ S:	Maintained  F:	drivers/media/video/m5mols/  F:	include/media/m5mols.h +FUJITSU TABLET EXTRAS +M:	Robert Gerlach <khnz@gmx.de> +L:	platform-driver-x86@vger.kernel.org +S:	Maintained +F:	drivers/platform/x86/fujitsu-tablet.c +  FUSE: FILESYSTEM IN USERSPACE  M:	Miklos Szeredi <miklos@szeredi.hu>  L:	fuse-devel@lists.sourceforge.net @@ -5863,6 +5890,7 @@ F:	drivers/mmc/host/sdhci-s3c.c  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER  M:	Viresh Kumar <viresh.kumar@st.com> +L:	spear-devel@list.st.com  L:	linux-mmc@vger.kernel.org  S:	Maintained  F:	drivers/mmc/host/sdhci-spear.c @@ -6205,24 +6233,32 @@ F:	drivers/tty/serial/sunzilog.h  SPEAR PLATFORM SUPPORT  M:	Viresh Kumar <viresh.kumar@st.com> +L:	spear-devel@list.st.com +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  W:	http://www.st.com/spear  S:	Maintained  F:	arch/arm/plat-spear/  SPEAR3XX MACHINE SUPPORT  M:	Viresh Kumar <viresh.kumar@st.com> +L:	spear-devel@list.st.com +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  W:	http://www.st.com/spear  S:	Maintained  F:	arch/arm/mach-spear3xx/  SPEAR6XX MACHINE SUPPORT  M:	Rajeev Kumar <rajeev-dlh.kumar@st.com> +L:	spear-devel@list.st.com +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  W:	http://www.st.com/spear  S:	Maintained  F:	arch/arm/mach-spear6xx/  SPEAR CLOCK FRAMEWORK SUPPORT  M:	Viresh Kumar <viresh.kumar@st.com> +L:	spear-devel@list.st.com +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  W:	http://www.st.com/spear  S:	Maintained  F:	arch/arm/mach-spear*/clock.c @@ -6231,6 +6267,8 @@ F:	arch/arm/plat-spear/include/plat/clock.h  SPEAR PAD MULTIPLEXING SUPPORT  M:	Viresh Kumar <viresh.kumar@st.com> +L:	spear-devel@list.st.com +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  W:	http://www.st.com/spear  S:	Maintained  F:	arch/arm/plat-spear/include/plat/padmux.h @@ -1,7 +1,7 @@  VERSION = 3  PATCHLEVEL = 3  SUBLEVEL = 0 -EXTRAVERSION = -rc6 +EXTRAVERSION =  NAME = Saber-toothed Squirrel  # *DOCUMENTATION* diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 068b754bc348..8aea3a2dd889 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c @@ -38,6 +38,7 @@  #include <linux/mmc/sh_mobile_sdhi.h>  #include <linux/mfd/tmio.h>  #include <linux/sh_clk.h> +#include <linux/videodev2.h>  #include <video/sh_mobile_lcdc.h>  #include <video/sh_mipi_dsi.h>  #include <sound/sh_fsi.h> diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index eeb4d9664584..b4718b00e827 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c @@ -794,7 +794,7 @@ static struct fsi_ak4642_info fsi2_ak4643_info = {  static struct platform_device fsi_ak4643_device = {  	.name	= "fsi-ak4642-audio",  	.dev	= { -		.platform_data	= &fsi_info, +		.platform_data	= &fsi2_ak4643_info,  	},  }; diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index 4d2201622323..4bd1162ce0df 100644 --- a/arch/arm/mach-shmobile/board-bonito.c +++ b/arch/arm/mach-shmobile/board-bonito.c @@ -27,6 +27,7 @@  #include <linux/platform_device.h>  #include <linux/gpio.h>  #include <linux/smsc911x.h> +#include <linux/videodev2.h>  #include <mach/common.h>  #include <asm/mach-types.h>  #include <asm/mach/arch.h> @@ -241,7 +242,7 @@ static struct sh_mobile_lcdc_info lcdc0_info = {  	.clock_source	= LCDC_CLK_BUS,  	.ch[0] = {  		.chan			= LCDC_CHAN_MAINLCD, -		.bpp			= 16, +		.fourcc = V4L2_PIX_FMT_RGB565,  		.interface_type		= RGB24,  		.clock_divider		= 5,  		.flags			= 0, diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index a2813247b455..7b53cda41851 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c @@ -1352,6 +1352,10 @@ static struct map_desc mackerel_io_desc[] __initdata = {  static void __init mackerel_map_io(void)  {  	iotable_init(mackerel_io_desc, ARRAY_SIZE(mackerel_io_desc)); +	/* DMA memory at 0xff200000 - 0xffdfffff. The default 2MB size isn't +	 * enough to allocate the frame buffer memory. +	 */ +	init_consistent_dma_size(12 << 20);  	/* setup early devices and console here as well */  	sh7372_add_early_devices(); diff --git a/arch/c6x/kernel/entry.S b/arch/c6x/kernel/entry.S index 3e977ccda827..30b37e5f4a61 100644 --- a/arch/c6x/kernel/entry.S +++ b/arch/c6x/kernel/entry.S @@ -717,33 +717,6 @@ ENTRY(sys_ftruncate64_c6x)  #endif  ENDPROC(sys_ftruncate64_c6x) -#ifdef __ARCH_WANT_SYSCALL_OFF_T -;; On Entry -;;   A4 - fd -;;   B4 - offset_lo (LE), offset_hi (BE) -;;   A6 - offset_lo (BE), offset_hi (LE) -;;   B6 - len -;;   A8 - advice -ENTRY(sys_fadvise64_c6x) -#ifdef CONFIG_C6X_BIG_KERNEL -	MVKL	.S1	sys_fadvise64,A0 -	MVKH	.S1	sys_fadvise64,A0 -	BNOP	.S2X	A0,2 -#else -	B	.S2	sys_fadvise64 -	NOP	2 -#endif -#ifdef CONFIG_CPU_BIG_ENDIAN -	MV	.L2	B4,B5 - ||	MV	.D2X	A6,B4 -#else -	MV	.D2X	A6,B5 -#endif -	MV	.D1X	B6,A6 -	MV	.D2X	A8,B6 -#endif -ENDPROC(sys_fadvise64_c6x) -  ;; On Entry  ;;   A4 - fd  ;;   B4 - offset_lo (LE), offset_hi (BE) diff --git a/arch/sh/kernel/cpu/sh2a/ex.S b/arch/sh/kernel/cpu/sh2a/ex.S index 3ead9e63965a..4568066700cf 100644 --- a/arch/sh/kernel/cpu/sh2a/ex.S +++ b/arch/sh/kernel/cpu/sh2a/ex.S @@ -66,6 +66,7 @@ vector	=	0  	.long	exception_entry0 + vector * 6  vector	=	vector + 1  	.endr +vector	=	0  	.rept	256  	.long	exception_entry1 + vector * 6  vector	=	vector + 1 diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c index 0fbff1422f54..0bd21c82151b 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c @@ -79,7 +79,7 @@ struct clk div4_clks[DIV4_NR] = {  #define MSTPCR1		0xffc80034  #define MSTPCR2		0xffc10028 -enum { MSTP004, MSTP000, MSTP114, MSTP113, MSTP112, +enum { MSTP004, MSTP000, MSTP127, MSTP114, MSTP113, MSTP112,         MSTP111, MSTP110, MSTP103, MSTP102, MSTP220,         MSTP_NR }; @@ -89,6 +89,7 @@ static struct clk mstp_clks[MSTP_NR] = {  	[MSTP000] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR0, 0, 0),  	/* MSTPCR1 */ +	[MSTP127] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR1, 27, 0),  	[MSTP114] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR1, 14, 0),  	[MSTP113] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR1, 13, 0),  	[MSTP112] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR1, 12, 0), @@ -131,6 +132,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("usb_fck", &mstp_clks[MSTP103]),  	CLKDEV_DEV_ID("renesas_usbhs.0", &mstp_clks[MSTP102]),  	CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), +	CLKDEV_CON_ID("rspi2", &mstp_clks[MSTP127]),  };  int __init arch_clk_init(void) diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index e5b420cc1265..2b314439d359 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c @@ -156,7 +156,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("siof_fck", &mstp_clks[MSTP003]),  	CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]),  	CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]), -	CLKDEV_CON_ID("ubc_fck", &mstp_clks[MSTP117]), +	CLKDEV_CON_ID("ubc0", &mstp_clks[MSTP117]),  	CLKDEV_CON_ID("dmac_11_6_fck", &mstp_clks[MSTP105]),  	CLKDEV_CON_ID("dmac_5_0_fck", &mstp_clks[MSTP104]),  	CLKDEV_CON_ID("gdta_fck", &mstp_clks[MSTP100]), diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile index ad1fb5d969f3..eddcfb36aafb 100644 --- a/arch/sparc/Makefile +++ b/arch/sparc/Makefile @@ -31,7 +31,7 @@ UTS_MACHINE    := sparc  #KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7  KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 -KBUILD_AFLAGS += -m32 +KBUILD_AFLAGS += -m32 -Wa,-Av8  #LDFLAGS_vmlinux = -N -Ttext 0xf0004000  #  Since 2.5.40, the first stage is left not btfix-ed. diff --git a/arch/tile/configs/tilegx_defconfig b/arch/tile/configs/tilegx_defconfig index dafdbbae1124..b8d99aca5431 100644 --- a/arch/tile/configs/tilegx_defconfig +++ b/arch/tile/configs/tilegx_defconfig @@ -1,337 +1,93 @@ -# -# Automatically generated make config: don't edit -# Linux/tilegx 2.6.39-rc5 Kernel Configuration -# Wed May  4 11:08:04 2011 -# -CONFIG_TILE=y -CONFIG_MMU=y -CONFIG_GENERIC_CSUM=y -CONFIG_SEMAPHORE_SLEEPERS=y -CONFIG_HAVE_ARCH_ALLOC_REMAP=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_DEFAULT_MIGRATION_COST=10000000 -CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y -CONFIG_ARCH_PHYS_ADDR_T_64BIT=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y -CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_STRICT_DEVMEM=y -CONFIG_SMP=y -# CONFIG_DEBUG_COPY_FROM_USER is not set -CONFIG_HVC_TILE=y  CONFIG_TILEGX=y -CONFIG_64BIT=y -CONFIG_ARCH_DEFCONFIG="arch/tile/configs/tilegx_defconfig" -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" -CONFIG_CONSTRUCTORS=y - -# -# General setup -#  CONFIG_EXPERIMENTAL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_CROSS_COMPILE="" -CONFIG_LOCALVERSION=""  # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SWAP=y  CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y  CONFIG_POSIX_MQUEUE=y -CONFIG_POSIX_MQUEUE_SYSCTL=y  CONFIG_BSD_PROCESS_ACCT=y  CONFIG_BSD_PROCESS_ACCT_V3=y -# CONFIG_FHANDLE is not set +CONFIG_FHANDLE=y  CONFIG_TASKSTATS=y  CONFIG_TASK_DELAY_ACCT=y  CONFIG_TASK_XACCT=y  CONFIG_TASK_IO_ACCOUNTING=y  CONFIG_AUDIT=y -CONFIG_HAVE_GENERIC_HARDIRQS=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_PENDING_IRQ=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -# CONFIG_PREEMPT_RCU is not set -# CONFIG_RCU_TRACE is not set -CONFIG_RCU_FANOUT=64 -# CONFIG_RCU_FANOUT_EXACT is not set -# CONFIG_RCU_FAST_NO_HZ is not set -# CONFIG_TREE_RCU_TRACE is not set -# CONFIG_IKCONFIG is not set  CONFIG_LOG_BUF_SHIFT=19  CONFIG_CGROUPS=y  CONFIG_CGROUP_DEBUG=y -CONFIG_CGROUP_NS=y -# CONFIG_CGROUP_FREEZER is not set  CONFIG_CGROUP_DEVICE=y  CONFIG_CPUSETS=y -CONFIG_PROC_PID_CPUSET=y  CONFIG_CGROUP_CPUACCT=y  CONFIG_RESOURCE_COUNTERS=y  CONFIG_CGROUP_MEM_RES_CTLR=y  CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y -CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y  CONFIG_CGROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y  CONFIG_RT_GROUP_SCHED=y  CONFIG_BLK_CGROUP=y -# CONFIG_DEBUG_BLK_CGROUP is not set  CONFIG_NAMESPACES=y -CONFIG_UTS_NS=y -CONFIG_IPC_NS=y -CONFIG_USER_NS=y -CONFIG_PID_NS=y -CONFIG_NET_NS=y -# CONFIG_SCHED_AUTOGROUP is not set -CONFIG_MM_OWNER=y -# CONFIG_SYSFS_DEPRECATED is not set  CONFIG_RELAY=y  CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="usr/contents.txt" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 -CONFIG_RD_GZIP=y -# CONFIG_RD_BZIP2 is not set -# CONFIG_RD_LZMA is not set -# CONFIG_RD_XZ is not set -# CONFIG_RD_LZO is not set -CONFIG_INITRAMFS_COMPRESSION_NONE=y -# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_SYSCTL=y -CONFIG_ANON_INODES=y -CONFIG_EXPERT=y  CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y  CONFIG_EMBEDDED=y - -# -# Kernel Performance Events And Counters -# -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_PCI_QUIRKS=y -CONFIG_SLUB_DEBUG=y  # CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set  CONFIG_PROFILING=y -CONFIG_USE_GENERIC_SMP_HELPERS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_GCOV_KERNEL is not set -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set -CONFIG_SLABINFO=y -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0  CONFIG_MODULES=y  CONFIG_MODULE_FORCE_LOAD=y  CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_STOP_MACHINE=y -CONFIG_BLOCK=y -CONFIG_BLK_DEV_BSG=y  CONFIG_BLK_DEV_INTEGRITY=y -# CONFIG_BLK_DEV_THROTTLING is not set -CONFIG_BLOCK_COMPAT=y - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_SGI_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y  CONFIG_CFQ_GROUP_IOSCHED=y -# CONFIG_DEFAULT_DEADLINE is not set -CONFIG_DEFAULT_CFQ=y -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="cfq" -CONFIG_PADATA=y -# CONFIG_INLINE_SPIN_TRYLOCK is not set -# CONFIG_INLINE_SPIN_TRYLOCK_BH 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_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_READ_TRYLOCK is not set -# 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_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_WRITE_TRYLOCK 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_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_MUTEX_SPIN_ON_OWNER=y - -# -# Tilera-specific configuration -#  CONFIG_NR_CPUS=100 -CONFIG_TICK_ONESHOT=y  CONFIG_NO_HZ=y  CONFIG_HIGH_RES_TIMERS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y  CONFIG_HZ_100=y -# CONFIG_HZ_250 is not set -# CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 -CONFIG_SCHED_HRTICK=y -# CONFIG_KEXEC is not set -CONFIG_COMPAT=y -CONFIG_SYSVIPC_COMPAT=y -# CONFIG_HIGHMEM is not set -CONFIG_NUMA=y -CONFIG_NODES_SHIFT=2 -CONFIG_PAGE_OFFSET=0xC0000000 -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_DISCONTIGMEM_MANUAL=y -CONFIG_DISCONTIGMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -CONFIG_NEED_MULTIPLE_NODES=y -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -# CONFIG_COMPACTION is not set -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_ZONE_DMA_FLAG=0 -CONFIG_VIRT_TO_BUS=y -# CONFIG_KSM is not set -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -# CONFIG_CMDLINE_BOOL is not set -CONFIG_VMALLOC_RESERVE=0x1000000 -CONFIG_HARDWALL=y -CONFIG_KERNEL_PL=1 - -# -# Bus options -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -# CONFIG_NO_IOMEM is not set -# CONFIG_NO_IOPORT is not set -# CONFIG_ARCH_SUPPORTS_MSI is not set  CONFIG_PCI_DEBUG=y -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# Executable file formats -# -CONFIG_KCORE_ELF=y -CONFIG_BINFMT_ELF=y -CONFIG_COMPAT_BINFMT_ELF=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_HAVE_AOUT is not set  CONFIG_BINFMT_MISC=y  CONFIG_NET=y - -# -# Networking options -#  CONFIG_PACKET=y  CONFIG_UNIX=y -CONFIG_XFRM=y  CONFIG_XFRM_USER=y  CONFIG_XFRM_SUB_POLICY=y -CONFIG_XFRM_MIGRATE=y  CONFIG_XFRM_STATISTICS=y -CONFIG_XFRM_IPCOMP=m  CONFIG_NET_KEY=m  CONFIG_NET_KEY_MIGRATE=y  CONFIG_INET=y  CONFIG_IP_MULTICAST=y  CONFIG_IP_ADVANCED_ROUTER=y -# CONFIG_IP_FIB_TRIE_STATS is not set  CONFIG_IP_MULTIPLE_TABLES=y  CONFIG_IP_ROUTE_MULTIPATH=y  CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y -# CONFIG_IP_PNP is not set  CONFIG_NET_IPIP=m -# CONFIG_NET_IPGRE_DEMUX is not set  CONFIG_IP_MROUTE=y -# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set  CONFIG_IP_PIMSM_V1=y  CONFIG_IP_PIMSM_V2=y -# CONFIG_ARPD is not set  CONFIG_SYN_COOKIES=y  CONFIG_INET_AH=m  CONFIG_INET_ESP=m  CONFIG_INET_IPCOMP=m -CONFIG_INET_XFRM_TUNNEL=m -CONFIG_INET_TUNNEL=m  CONFIG_INET_XFRM_MODE_TRANSPORT=m  CONFIG_INET_XFRM_MODE_TUNNEL=m  CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_LRO=y  CONFIG_INET_DIAG=m -CONFIG_INET_TCP_DIAG=m  CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=m -CONFIG_TCP_CONG_CUBIC=y -CONFIG_TCP_CONG_WESTWOOD=m -CONFIG_TCP_CONG_HTCP=m  CONFIG_TCP_CONG_HSTCP=m  CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_VEGAS=m  CONFIG_TCP_CONG_SCALABLE=m  CONFIG_TCP_CONG_LP=m  CONFIG_TCP_CONG_VENO=m  CONFIG_TCP_CONG_YEAH=m  CONFIG_TCP_CONG_ILLINOIS=m -CONFIG_DEFAULT_CUBIC=y -# CONFIG_DEFAULT_RENO is not set -CONFIG_DEFAULT_TCP_CONG="cubic"  CONFIG_TCP_MD5SIG=y  CONFIG_IPV6=y  CONFIG_IPV6_PRIVACY=y @@ -342,108 +98,60 @@ CONFIG_INET6_AH=m  CONFIG_INET6_ESP=m  CONFIG_INET6_IPCOMP=m  CONFIG_IPV6_MIP6=m -CONFIG_INET6_XFRM_TUNNEL=m -CONFIG_INET6_TUNNEL=m  CONFIG_INET6_XFRM_MODE_TRANSPORT=m  CONFIG_INET6_XFRM_MODE_TUNNEL=m  CONFIG_INET6_XFRM_MODE_BEET=m  CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m  CONFIG_IPV6_SIT=m -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y  CONFIG_IPV6_TUNNEL=m  CONFIG_IPV6_MULTIPLE_TABLES=y -# CONFIG_IPV6_SUBTREES is not set  CONFIG_IPV6_MROUTE=y -# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set  CONFIG_IPV6_PIMSM_V2=y  CONFIG_NETLABEL=y -CONFIG_NETWORK_SECMARK=y -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set  CONFIG_NETFILTER=y -# CONFIG_NETFILTER_DEBUG is not set -CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=y - -# -# Core Netfilter Configuration -# -CONFIG_NETFILTER_NETLINK=m -CONFIG_NETFILTER_NETLINK_QUEUE=m -CONFIG_NETFILTER_NETLINK_LOG=m -CONFIG_NF_CONNTRACK=y -CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK=m  CONFIG_NF_CONNTRACK_SECMARK=y  CONFIG_NF_CONNTRACK_ZONES=y  CONFIG_NF_CONNTRACK_EVENTS=y -# CONFIG_NF_CONNTRACK_TIMESTAMP is not set  CONFIG_NF_CT_PROTO_DCCP=m -CONFIG_NF_CT_PROTO_GRE=m -CONFIG_NF_CT_PROTO_SCTP=m  CONFIG_NF_CT_PROTO_UDPLITE=m  CONFIG_NF_CONNTRACK_AMANDA=m  CONFIG_NF_CONNTRACK_FTP=m  CONFIG_NF_CONNTRACK_H323=m  CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m  CONFIG_NF_CONNTRACK_NETBIOS_NS=m -# CONFIG_NF_CONNTRACK_SNMP is not set  CONFIG_NF_CONNTRACK_PPTP=m  CONFIG_NF_CONNTRACK_SANE=m  CONFIG_NF_CONNTRACK_SIP=m  CONFIG_NF_CONNTRACK_TFTP=m -# CONFIG_NF_CT_NETLINK is not set  CONFIG_NETFILTER_TPROXY=m -CONFIG_NETFILTER_XTABLES=y - -# -# Xtables combined modules -# -CONFIG_NETFILTER_XT_MARK=m -CONFIG_NETFILTER_XT_CONNMARK=m - -# -# Xtables targets -# -# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set -# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set  CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m  CONFIG_NETFILTER_XT_TARGET_CONNMARK=m  CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m  CONFIG_NETFILTER_XT_TARGET_CT=m  CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m  CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m  CONFIG_NETFILTER_XT_TARGET_MARK=m  CONFIG_NETFILTER_XT_TARGET_NFLOG=m  CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m  CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_RATEEST=m  CONFIG_NETFILTER_XT_TARGET_TEE=m  CONFIG_NETFILTER_XT_TARGET_TPROXY=m  CONFIG_NETFILTER_XT_TARGET_TRACE=m  CONFIG_NETFILTER_XT_TARGET_SECMARK=m  CONFIG_NETFILTER_XT_TARGET_TCPMSS=m  CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m - -# -# Xtables matches -# -# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set  CONFIG_NETFILTER_XT_MATCH_CLUSTER=m  CONFIG_NETFILTER_XT_MATCH_COMMENT=m  CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m  CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m  CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y -# CONFIG_NETFILTER_XT_MATCH_CPU is not set +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m  CONFIG_NETFILTER_XT_MATCH_DCCP=m -# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set  CONFIG_NETFILTER_XT_MATCH_DSCP=m  CONFIG_NETFILTER_XT_MATCH_ESP=m  CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m  CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m  CONFIG_NETFILTER_XT_MATCH_IPRANGE=m  CONFIG_NETFILTER_XT_MATCH_IPVS=m  CONFIG_NETFILTER_XT_MATCH_LENGTH=m @@ -460,55 +168,29 @@ CONFIG_NETFILTER_XT_MATCH_QUOTA=m  CONFIG_NETFILTER_XT_MATCH_RATEEST=m  CONFIG_NETFILTER_XT_MATCH_REALM=m  CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m  CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NETFILTER_XT_MATCH_STATE=m  CONFIG_NETFILTER_XT_MATCH_STATISTIC=m  CONFIG_NETFILTER_XT_MATCH_STRING=m  CONFIG_NETFILTER_XT_MATCH_TCPMSS=m  CONFIG_NETFILTER_XT_MATCH_TIME=m  CONFIG_NETFILTER_XT_MATCH_U32=m -# CONFIG_IP_SET is not set  CONFIG_IP_VS=m  CONFIG_IP_VS_IPV6=y -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -#  CONFIG_IP_VS_PROTO_TCP=y  CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_AH_ESP=y  CONFIG_IP_VS_PROTO_ESP=y  CONFIG_IP_VS_PROTO_AH=y  CONFIG_IP_VS_PROTO_SCTP=y - -# -# IPVS scheduler -#  CONFIG_IP_VS_RR=m  CONFIG_IP_VS_WRR=m  CONFIG_IP_VS_LC=m  CONFIG_IP_VS_WLC=m  CONFIG_IP_VS_LBLC=m  CONFIG_IP_VS_LBLCR=m -# CONFIG_IP_VS_DH is not set -# CONFIG_IP_VS_SH is not set  CONFIG_IP_VS_SED=m  CONFIG_IP_VS_NQ=m - -# -# IPVS application helper -# -# CONFIG_IP_VS_NFCT is not set -# CONFIG_IP_VS_PE_SIP is not set - -# -# IP: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV4=y -CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=m  # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set  CONFIG_IP_NF_QUEUE=m  CONFIG_IP_NF_IPTABLES=y @@ -519,9 +201,7 @@ CONFIG_IP_NF_FILTER=y  CONFIG_IP_NF_TARGET_REJECT=y  CONFIG_IP_NF_TARGET_LOG=m  CONFIG_IP_NF_TARGET_ULOG=m -# CONFIG_NF_NAT is not set  CONFIG_IP_NF_MANGLE=m -# CONFIG_IP_NF_TARGET_CLUSTERIP is not set  CONFIG_IP_NF_TARGET_ECN=m  CONFIG_IP_NF_TARGET_TTL=m  CONFIG_IP_NF_RAW=m @@ -529,11 +209,6 @@ CONFIG_IP_NF_SECURITY=m  CONFIG_IP_NF_ARPTABLES=m  CONFIG_IP_NF_ARPFILTER=m  CONFIG_IP_NF_ARP_MANGLE=m - -# -# IPv6: Netfilter Configuration -# -CONFIG_NF_DEFRAG_IPV6=m  CONFIG_NF_CONNTRACK_IPV6=m  CONFIG_IP6_NF_QUEUE=m  CONFIG_IP6_NF_IPTABLES=m @@ -574,57 +249,20 @@ CONFIG_BRIDGE_EBT_SNAT=m  CONFIG_BRIDGE_EBT_LOG=m  CONFIG_BRIDGE_EBT_ULOG=m  CONFIG_BRIDGE_EBT_NFLOG=m -# CONFIG_IP_DCCP is not set -CONFIG_IP_SCTP=m -# CONFIG_SCTP_DBG_MSG is not set -# CONFIG_SCTP_DBG_OBJCNT is not set -# CONFIG_SCTP_HMAC_NONE is not set -# CONFIG_SCTP_HMAC_SHA1 is not set -CONFIG_SCTP_HMAC_MD5=y  CONFIG_RDS=m  CONFIG_RDS_TCP=m -# CONFIG_RDS_DEBUG is not set -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -# CONFIG_L2TP is not set -CONFIG_STP=m -CONFIG_GARP=m  CONFIG_BRIDGE=m -CONFIG_BRIDGE_IGMP_SNOOPING=y  CONFIG_NET_DSA=y -CONFIG_NET_DSA_TAG_DSA=y -CONFIG_NET_DSA_TAG_EDSA=y -CONFIG_NET_DSA_TAG_TRAILER=y -CONFIG_NET_DSA_MV88E6XXX=y -CONFIG_NET_DSA_MV88E6060=y -CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y -CONFIG_NET_DSA_MV88E6131=y -CONFIG_NET_DSA_MV88E6123_61_65=y  CONFIG_VLAN_8021Q=m  CONFIG_VLAN_8021Q_GVRP=y -# CONFIG_DECNET is not set -CONFIG_LLC=m -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set  CONFIG_PHONET=m -# CONFIG_IEEE802154 is not set  CONFIG_NET_SCHED=y - -# -# Queueing/Scheduling -#  CONFIG_NET_SCH_CBQ=m  CONFIG_NET_SCH_HTB=m  CONFIG_NET_SCH_HFSC=m  CONFIG_NET_SCH_PRIO=m  CONFIG_NET_SCH_MULTIQ=m  CONFIG_NET_SCH_RED=m -# CONFIG_NET_SCH_SFB is not set  CONFIG_NET_SCH_SFQ=m  CONFIG_NET_SCH_TEQL=m  CONFIG_NET_SCH_TBF=m @@ -632,14 +270,7 @@ CONFIG_NET_SCH_GRED=m  CONFIG_NET_SCH_DSMARK=m  CONFIG_NET_SCH_NETEM=m  CONFIG_NET_SCH_DRR=m -# CONFIG_NET_SCH_MQPRIO is not set -# CONFIG_NET_SCH_CHOKE is not set  CONFIG_NET_SCH_INGRESS=m - -# -# Classification -# -CONFIG_NET_CLS=y  CONFIG_NET_CLS_BASIC=m  CONFIG_NET_CLS_TCINDEX=m  CONFIG_NET_CLS_ROUTE4=m @@ -652,7 +283,6 @@ CONFIG_NET_CLS_RSVP6=m  CONFIG_NET_CLS_FLOW=m  CONFIG_NET_CLS_CGROUP=y  CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_STACK=32  CONFIG_NET_EMATCH_CMP=m  CONFIG_NET_EMATCH_NBYTE=m  CONFIG_NET_EMATCH_U32=m @@ -668,307 +298,46 @@ CONFIG_NET_ACT_NAT=m  CONFIG_NET_ACT_PEDIT=m  CONFIG_NET_ACT_SIMP=m  CONFIG_NET_ACT_SKBEDIT=m -# CONFIG_NET_ACT_CSUM is not set  CONFIG_NET_CLS_IND=y -CONFIG_NET_SCH_FIFO=y  CONFIG_DCB=y -CONFIG_DNS_RESOLVER=y -# CONFIG_BATMAN_ADV is not set -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_XPS=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -# CONFIG_AF_RXRPC is not set -CONFIG_FIB_RULES=y  # CONFIG_WIRELESS is not set -# CONFIG_WIMAX is not set -# CONFIG_RFKILL is not set -# CONFIG_NET_9P is not set -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -#  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y  # CONFIG_FIRMWARE_IN_KERNEL is not set -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_SYS_HYPERVISOR is not set  CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y -# CONFIG_MTD is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_COW_COMMON is not set  CONFIG_BLK_DEV_LOOP=y  CONFIG_BLK_DEV_CRYPTOLOOP=m -# CONFIG_BLK_DEV_DRBD is not set -# CONFIG_BLK_DEV_NBD is not set  CONFIG_BLK_DEV_SX8=m  CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16  CONFIG_BLK_DEV_RAM_SIZE=16384 -# CONFIG_BLK_DEV_XIP is not set -# CONFIG_CDROM_PKTCDVD is not set -CONFIG_ATA_OVER_ETH=y -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_SENSORS_LIS3LV02D is not set -CONFIG_MISC_DEVICES=y -# CONFIG_AD525X_DPOT is not set -# CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ICS932S401 is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO is not set -# CONFIG_APDS9802ALS is not set -# CONFIG_ISL29003 is not set -# CONFIG_ISL29020 is not set -# CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1780 is not set -# CONFIG_SENSORS_BH1770 is not set -# CONFIG_SENSORS_APDS990X is not set -# CONFIG_HMC6352 is not set -# CONFIG_DS1682 is not set -# CONFIG_BMP085 is not set -# CONFIG_PCH_PHUB is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_AT24 is not set -# CONFIG_EEPROM_LEGACY is not set -# CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# -# CONFIG_SENSORS_LIS3_I2C is not set - -# -# SCSI device support -# -CONFIG_SCSI_MOD=m +CONFIG_ATA_OVER_ETH=m  CONFIG_RAID_ATTRS=m -CONFIG_SCSI=m -CONFIG_SCSI_DMA=y  CONFIG_SCSI_TGT=m -# CONFIG_SCSI_NETLINK is not set -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=m -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set -# CONFIG_CHR_DEV_SCH is not set -# CONFIG_SCSI_MULTI_LUN is not set +CONFIG_BLK_DEV_SD=y  CONFIG_SCSI_CONSTANTS=y  CONFIG_SCSI_LOGGING=y -# CONFIG_SCSI_SCAN_ASYNC is not set -CONFIG_SCSI_WAIT_SCAN=m - -# -# SCSI Transports -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set -CONFIG_SCSI_SAS_ATTRS=m -# CONFIG_SCSI_SAS_LIBSAS is not set -# CONFIG_SCSI_SRP_ATTRS is not set -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_SCSI_BNX2X_FCOE is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_LIBFC is not set -# CONFIG_LIBFCOE is not set -# CONFIG_FCOE is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_FC is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_SRP is not set -# CONFIG_SCSI_BFA_FC is not set -# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set -# CONFIG_SCSI_DH is not set -# CONFIG_SCSI_OSD_INITIATOR is not set -CONFIG_ATA=m -# CONFIG_ATA_NONSTANDARD is not set -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# -# CONFIG_SATA_AHCI is not set -# CONFIG_SATA_AHCI_PLATFORM is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -CONFIG_SATA_SIL24=m -CONFIG_ATA_SFF=y - -# -# SFF controllers with custom DMA interface -# -# CONFIG_PDC_ADMA is not set -# CONFIG_SATA_QSTOR is not set -# CONFIG_SATA_SX4 is not set -CONFIG_ATA_BMDMA=y - -# -# SATA SFF controllers with BMDMA -# -# CONFIG_ATA_PIIX is not set -# CONFIG_SATA_MV is not set -# CONFIG_SATA_NV is not set -# CONFIG_SATA_PROMISE is not set -# CONFIG_SATA_SIL is not set -# CONFIG_SATA_SIS is not set -# CONFIG_SATA_SVW is not set -# CONFIG_SATA_ULI is not set -# CONFIG_SATA_VIA is not set -# CONFIG_SATA_VITESSE is not set - -# -# PATA SFF controllers with BMDMA -# -# 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_CMD64X is not set -# CONFIG_PATA_CS5520 is not set -# CONFIG_PATA_CS5530 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_IT8213 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_JMICRON is not set -# CONFIG_PATA_MARVELL is not set -# CONFIG_PATA_NETCELL is not set -# CONFIG_PATA_NINJA32 is not set -# CONFIG_PATA_NS87415 is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC2027X is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RDC 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 - -# -# PIO-only SFF controllers -# -# CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_MPIIX is not set -# CONFIG_PATA_NS87410 is not set -# CONFIG_PATA_OPTI is not set -# CONFIG_PATA_PLATFORM is not set -# CONFIG_PATA_RZ1000 is not set - -# -# Generic fallback / legacy drivers -# -# CONFIG_ATA_GENERIC is not set -# CONFIG_PATA_LEGACY is not set +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_MVSAS=y +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_MVSAS_TASKLET=y +CONFIG_ATA=y +CONFIG_SATA_SIL24=y +# CONFIG_ATA_SFF is not set  CONFIG_MD=y  CONFIG_BLK_DEV_MD=y -CONFIG_MD_AUTODETECT=y  CONFIG_MD_LINEAR=m  CONFIG_MD_RAID0=m  CONFIG_MD_RAID1=m  CONFIG_MD_RAID10=m  CONFIG_MD_RAID456=m  CONFIG_MULTICORE_RAID456=y -# CONFIG_MD_MULTIPATH is not set  CONFIG_MD_FAULTY=m  CONFIG_BLK_DEV_DM=m  CONFIG_DM_DEBUG=y  CONFIG_DM_CRYPT=m  CONFIG_DM_SNAPSHOT=m  CONFIG_DM_MIRROR=m -# CONFIG_DM_RAID is not set  CONFIG_DM_LOG_USERSPACE=m  CONFIG_DM_ZERO=m  CONFIG_DM_MULTIPATH=m @@ -976,558 +345,143 @@ CONFIG_DM_MULTIPATH_QL=m  CONFIG_DM_MULTIPATH_ST=m  CONFIG_DM_DELAY=m  CONFIG_DM_UEVENT=y -# CONFIG_DM_FLAKEY is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# CONFIG_I2O is not set +CONFIG_FUSION=y +CONFIG_FUSION_SAS=y  CONFIG_NETDEVICES=y -CONFIG_IFB=m -CONFIG_DUMMY=m  CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_IFB=m  CONFIG_MACVLAN=m  CONFIG_MACVTAP=m -# CONFIG_EQUALIZER is not set +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL_TRAP=y  CONFIG_TUN=y  CONFIG_VETH=m -# CONFIG_ARCNET is not set -# CONFIG_MII is not set -CONFIG_PHYLIB=y - -# -# MII PHY device drivers -# -# CONFIG_MARVELL_PHY is not set -# CONFIG_DAVICOM_PHY is not set -# CONFIG_QSEMI_PHY is not set -# CONFIG_LXT_PHY is not set -# CONFIG_CICADA_PHY is not set -# CONFIG_VITESSE_PHY is not set -# CONFIG_SMSC_PHY is not set -# CONFIG_BROADCOM_PHY is not set -# CONFIG_BCM63XX_PHY is not set -# CONFIG_ICPLUS_PHY is not set -# CONFIG_REALTEK_PHY is not set -# CONFIG_NATIONAL_PHY is not set -# CONFIG_STE10XP is not set -# CONFIG_LSI_ET1011C_PHY is not set -# CONFIG_MICREL_PHY is not set -# CONFIG_FIXED_PHY is not set -# CONFIG_MDIO_BITBANG is not set -# CONFIG_NET_ETHERNET is not set -CONFIG_NETDEV_1000=y -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -CONFIG_E1000E=m -# CONFIG_IP1000 is not set -# CONFIG_IGB is not set -# CONFIG_IGBVF is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SIS190 is not set -# CONFIG_SKGE is not set -# CONFIG_SKY2 is not set -# CONFIG_VIA_VELOCITY is not set -# CONFIG_TIGON3 is not set -# CONFIG_BNX2 is not set -# CONFIG_CNIC is not set -# CONFIG_QLA3XXX is not set -# CONFIG_ATL1 is not set -# CONFIG_ATL1E is not set -# CONFIG_ATL1C is not set -# CONFIG_JME is not set -# CONFIG_STMMAC_ETH is not set -# CONFIG_PCH_GBE is not set -# CONFIG_NETDEV_10000 is not set -# CONFIG_TR is not set -# CONFIG_WLAN is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set - -# -# CAIF transport drivers -# +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set  # CONFIG_TILE_NET is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_NETCONSOLE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_VMXNET3 is not set -# CONFIG_ISDN is not set -# CONFIG_PHONE is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_FF_MEMLESS is not set -# CONFIG_INPUT_POLLDEV is not set -# CONFIG_INPUT_SPARSEKMAP is not set - -# -# Userland interfaces -# +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_WLAN is not set  # CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -#  # CONFIG_INPUT_KEYBOARD is not set  # CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TABLET is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -#  # CONFIG_SERIO is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -#  # CONFIG_VT is not set -CONFIG_UNIX98_PTYS=y -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set  # CONFIG_LEGACY_PTYS is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -CONFIG_DEVKMEM=y - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_MFD_HSU is not set -# CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_TIMBERDALE is not set -# CONFIG_SERIAL_ALTERA_JTAGUART is not set -# CONFIG_SERIAL_ALTERA_UART is not set -# CONFIG_SERIAL_PCH_UART is not set -# CONFIG_TTY_PRINTK is not set -CONFIG_HVC_DRIVER=y -# CONFIG_IPMI_HANDLER is not set  CONFIG_HW_RANDOM=y  CONFIG_HW_RANDOM_TIMERIOMEM=m -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_RAW_DRIVER is not set -# CONFIG_TCG_TPM is not set -CONFIG_DEVPORT=y -# CONFIG_RAMOOPS is not set  CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y  CONFIG_I2C_CHARDEV=y -# CONFIG_I2C_MUX is not set -CONFIG_I2C_HELPER_AUTO=y - -# -# I2C Hardware Bus support -# - -# -# PC SMBus host controller drivers -# -# 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_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - -# -# I2C system bus drivers (mostly embedded / system-on-chip) -# -# CONFIG_I2C_INTEL_MID is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_PCA_PLATFORM is not set -# CONFIG_I2C_PXA_PCI is not set -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_XILINX is not set -# CONFIG_I2C_EG20T is not set - -# -# External I2C/SMBus adapter drivers -# -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_TAOS_EVM is not set - -# -# Other I2C/SMBus bus drivers -# -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_SPI is not set - -# -# PPS support -# -# CONFIG_PPS is not set - -# -# PPS generators support -# -# CONFIG_W1 is not set -# CONFIG_POWER_SUPPLY is not set  # CONFIG_HWMON is not set -# CONFIG_THERMAL is not set -# CONFIG_WATCHDOG is not set -CONFIG_SSB_POSSIBLE=y - -# -# Sonics Silicon Backplane -# -# CONFIG_SSB is not set -CONFIG_MFD_SUPPORT=y -# CONFIG_MFD_CORE is not set -# CONFIG_MFD_88PM860X is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_TPS6105X is not set -# CONFIG_TPS6507X is not set -# CONFIG_TWL4030_CORE is not set -# CONFIG_MFD_STMPE is not set -# CONFIG_MFD_TC3589X is not set -# CONFIG_MFD_TMIO is not set -# CONFIG_PMIC_DA903X is not set -# CONFIG_PMIC_ADP5520 is not set -# CONFIG_MFD_MAX8925 is not set -# CONFIG_MFD_MAX8997 is not set -# CONFIG_MFD_MAX8998 is not set -# CONFIG_MFD_WM8400 is not set -# CONFIG_MFD_WM831X_I2C is not set -# CONFIG_MFD_WM8350_I2C is not set -# CONFIG_MFD_WM8994 is not set -# CONFIG_MFD_PCF50633 is not set -# CONFIG_ABX500_CORE is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_JANZ_CMODIO is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_MFD_WL1273_CORE is not set -# CONFIG_REGULATOR is not set -# CONFIG_MEDIA_SUPPORT is not set - -# -# Graphics support -# +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y  # CONFIG_VGA_ARB is not set -# CONFIG_DRM is not set -# CONFIG_STUB_POULSBO is not set -# CONFIG_VGASTATE is not set -# CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set - -# -# Display device support -# -# CONFIG_DISPLAY_SUPPORT is not set -# CONFIG_SOUND is not set  # CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set -# CONFIG_UWB is not set -# CONFIG_MMC is not set -# CONFIG_MEMSTICK is not set -# CONFIG_NEW_LEDS is not set -# CONFIG_NFC_DEVICES is not set -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set -# CONFIG_EDAC is not set -CONFIG_RTC_LIB=y +CONFIG_USB=y +# CONFIG_USB_DEVICE_CLASS is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_USB_LIBUSUAL=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=y  CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1374 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_DS3232 is not set -# CONFIG_RTC_DRV_MAX6900 is not set -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_ISL12022 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set -# CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_S35390A is not set -# CONFIG_RTC_DRV_FM3130 is not set -# CONFIG_RTC_DRV_RX8581 is not set -# CONFIG_RTC_DRV_RX8025 is not set - -# -# SPI RTC drivers -# - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set - -# -# on-CPU RTC drivers -#  CONFIG_RTC_DRV_TILE=y -# CONFIG_DMADEVICES is not set -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_STAGING is not set - -# -# File systems -#  CONFIG_EXT2_FS=y  CONFIG_EXT2_FS_XATTR=y  CONFIG_EXT2_FS_POSIX_ACL=y  CONFIG_EXT2_FS_SECURITY=y  CONFIG_EXT2_FS_XIP=y  CONFIG_EXT3_FS=y -CONFIG_EXT3_DEFAULTS_TO_ORDERED=y -CONFIG_EXT3_FS_XATTR=y  CONFIG_EXT3_FS_POSIX_ACL=y  CONFIG_EXT3_FS_SECURITY=y  CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_XATTR=y  CONFIG_EXT4_FS_POSIX_ACL=y  CONFIG_EXT4_FS_SECURITY=y -# CONFIG_EXT4_DEBUG is not set -CONFIG_FS_XIP=y -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_JBD2=y -CONFIG_JBD2_DEBUG=y -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -CONFIG_XFS_FS=m +CONFIG_XFS_FS=y  CONFIG_XFS_QUOTA=y  CONFIG_XFS_POSIX_ACL=y -# CONFIG_XFS_RT is not set -# CONFIG_XFS_DEBUG is not set  CONFIG_GFS2_FS=m  CONFIG_GFS2_FS_LOCKING_DLM=y -# CONFIG_OCFS2_FS is not set  CONFIG_BTRFS_FS=m  CONFIG_BTRFS_FS_POSIX_ACL=y -# CONFIG_NILFS2_FS is not set -CONFIG_FS_POSIX_ACL=y -CONFIG_EXPORTFS=y -CONFIG_FILE_LOCKING=y -CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set  CONFIG_QUOTA=y  CONFIG_QUOTA_NETLINK_INTERFACE=y  # CONFIG_PRINT_QUOTA_WARNING is not set -# CONFIG_QUOTA_DEBUG is not set -CONFIG_QUOTA_TREE=y -# CONFIG_QFMT_V1 is not set  CONFIG_QFMT_V2=y -CONFIG_QUOTACTL=y -# CONFIG_AUTOFS4_FS is not set +CONFIG_AUTOFS4_FS=m  CONFIG_FUSE_FS=y  CONFIG_CUSE=m -CONFIG_GENERIC_ACL=y - -# -# Caches -#  CONFIG_FSCACHE=m  CONFIG_FSCACHE_STATS=y -# CONFIG_FSCACHE_HISTOGRAM is not set -# CONFIG_FSCACHE_DEBUG is not set -# CONFIG_FSCACHE_OBJECT_LIST is not set  CONFIG_CACHEFILES=m -# CONFIG_CACHEFILES_DEBUG is not set -# CONFIG_CACHEFILES_HISTOGRAM is not set - -# -# CD-ROM/DVD Filesystems -#  CONFIG_ISO9660_FS=m  CONFIG_JOLIET=y  CONFIG_ZISOFS=y  CONFIG_UDF_FS=m -CONFIG_UDF_NLS=y - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=m  CONFIG_MSDOS_FS=m  CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_CODEPAGE=437  CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y  CONFIG_PROC_KCORE=y -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_SYSFS=y  CONFIG_TMPFS=y  CONFIG_TMPFS_POSIX_ACL=y  CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -CONFIG_CONFIGFS_FS=m -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set  CONFIG_ECRYPT_FS=m -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_LOGFS is not set  CONFIG_CRAMFS=m  CONFIG_SQUASHFS=m -# CONFIG_SQUASHFS_XATTR is not set -# CONFIG_SQUASHFS_LZO is not set -# CONFIG_SQUASHFS_XZ is not set -# CONFIG_SQUASHFS_EMBEDDED is not set -CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -# CONFIG_VXFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_OMFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_PSTORE is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y  CONFIG_NFS_FS=m  CONFIG_NFS_V3=y  CONFIG_NFS_V3_ACL=y  CONFIG_NFS_V4=y  CONFIG_NFS_V4_1=y -CONFIG_PNFS_FILE_LAYOUT=m  CONFIG_NFS_FSCACHE=y -# CONFIG_NFS_USE_LEGACY_DNS is not set -CONFIG_NFS_USE_KERNEL_DNS=y -# CONFIG_NFS_USE_NEW_IDMAPPER is not set  CONFIG_NFSD=m -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3=y  CONFIG_NFSD_V3_ACL=y  CONFIG_NFSD_V4=y -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_NFS_ACL_SUPPORT=m -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m -CONFIG_SUNRPC_GSS=m -CONFIG_RPCSEC_GSS_KRB5=m -# CONFIG_CEPH_FS is not set  CONFIG_CIFS=m  CONFIG_CIFS_STATS=y -# CONFIG_CIFS_STATS2 is not set  CONFIG_CIFS_WEAK_PW_HASH=y  CONFIG_CIFS_UPCALL=y  CONFIG_CIFS_XATTR=y  CONFIG_CIFS_POSIX=y -# CONFIG_CIFS_DEBUG2 is not set  CONFIG_CIFS_DFS_UPCALL=y  CONFIG_CIFS_FSCACHE=y -# CONFIG_CIFS_ACL is not set -CONFIG_CIFS_EXPERIMENTAL=y -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -CONFIG_PARTITION_ADVANCED=y -# CONFIG_ACORN_PARTITION is not set -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -# CONFIG_ATARI_PARTITION is not set -CONFIG_MAC_PARTITION=y -CONFIG_MSDOS_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_MINIX_SUBPARTITION=y -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -# CONFIG_LDM_PARTITION is not set -CONFIG_SGI_PARTITION=y -# CONFIG_ULTRIX_PARTITION is not set -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_EFI_PARTITION=y -# CONFIG_SYSV68_PARTITION is not set -CONFIG_NLS=y  CONFIG_NLS_DEFAULT="utf8"  CONFIG_NLS_CODEPAGE_437=y  CONFIG_NLS_CODEPAGE_737=m @@ -1567,185 +521,47 @@ CONFIG_NLS_ISO8859_15=m  CONFIG_NLS_KOI8_R=m  CONFIG_NLS_KOI8_U=m  CONFIG_NLS_UTF8=m -CONFIG_DLM=m  CONFIG_DLM_DEBUG=y - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4  # CONFIG_ENABLE_WARN_DEPRECATED is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_FRAME_WARN=2048  CONFIG_MAGIC_SYSRQ=y  CONFIG_STRIP_ASM_SYMS=y -# CONFIG_UNUSED_SYMBOLS is not set  CONFIG_DEBUG_FS=y  CONFIG_HEADERS_CHECK=y -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SHIRQ=y  CONFIG_LOCKUP_DETECTOR=y -# CONFIG_HARDLOCKUP_DETECTOR is not set -# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -CONFIG_DETECT_HUNG_TASK=y -# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 -CONFIG_SCHED_DEBUG=y  CONFIG_SCHEDSTATS=y  CONFIG_TIMER_STATS=y -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_SLUB_STATS is not set -# CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_SPARSE_RCU_POINTER is not set -# CONFIG_LOCK_STAT is not set -CONFIG_DEBUG_SPINLOCK_SLEEP=y -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -CONFIG_STACKTRACE=y -# CONFIG_DEBUG_KOBJECT is not set  CONFIG_DEBUG_INFO=y  CONFIG_DEBUG_INFO_REDUCED=y  CONFIG_DEBUG_VM=y -# CONFIG_DEBUG_WRITECOUNT is not set  CONFIG_DEBUG_MEMORY_INIT=y  CONFIG_DEBUG_LIST=y -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set  CONFIG_DEBUG_CREDENTIALS=y -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set  CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y -# CONFIG_LKDTM is not set -# CONFIG_FAULT_INJECTION is not set -# CONFIG_SYSCTL_SYSCALL_CHECK is not set -# CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_ENABLE_DEFAULT_TRACERS is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_BUILD_DOCSRC is not set  CONFIG_DYNAMIC_DEBUG=y -# CONFIG_ATOMIC64_SELFTEST is not set  CONFIG_ASYNC_RAID6_TEST=m -# CONFIG_SAMPLES is not set -# CONFIG_TEST_KSTRTOX is not set -CONFIG_EARLY_PRINTK=y  CONFIG_DEBUG_STACKOVERFLOW=y -# CONFIG_DEBUG_STACK_USAGE is not set -CONFIG_DEBUG_EXTRA_FLAGS="" - -# -# Security options -# -CONFIG_KEYS=y  CONFIG_KEYS_DEBUG_PROC_KEYS=y -# CONFIG_SECURITY_DMESG_RESTRICT is not set  CONFIG_SECURITY=y  CONFIG_SECURITYFS=y  CONFIG_SECURITY_NETWORK=y  CONFIG_SECURITY_NETWORK_XFRM=y -# CONFIG_SECURITY_PATH is not set -CONFIG_LSM_MMAP_MIN_ADDR=65536  CONFIG_SECURITY_SELINUX=y  CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1  CONFIG_SECURITY_SELINUX_DISABLE=y -CONFIG_SECURITY_SELINUX_DEVELOP=y -CONFIG_SECURITY_SELINUX_AVC_STATS=y -CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 -# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set -# CONFIG_SECURITY_SMACK is not set -# CONFIG_SECURITY_TOMOYO is not set -# CONFIG_SECURITY_APPARMOR is not set -# CONFIG_IMA is not set -CONFIG_DEFAULT_SECURITY_SELINUX=y -# CONFIG_DEFAULT_SECURITY_DAC is not set -CONFIG_DEFAULT_SECURITY="selinux" -CONFIG_XOR_BLOCKS=m -CONFIG_ASYNC_CORE=m -CONFIG_ASYNC_MEMCPY=m -CONFIG_ASYNC_XOR=m -CONFIG_ASYNC_PQ=m -CONFIG_ASYNC_RAID6_RECOV=m -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_AEAD=m -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_RNG=m -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_PCOMP=m -CONFIG_CRYPTO_PCOMP2=y -CONFIG_CRYPTO_MANAGER=y -CONFIG_CRYPTO_MANAGER2=y -CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -CONFIG_CRYPTO_GF128MUL=m  CONFIG_CRYPTO_NULL=m  CONFIG_CRYPTO_PCRYPT=m -CONFIG_CRYPTO_WORKQUEUE=y  CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_AUTHENC=m  CONFIG_CRYPTO_TEST=m - -# -# Authenticated Encryption with Associated Data -#  CONFIG_CRYPTO_CCM=m  CONFIG_CRYPTO_GCM=m -CONFIG_CRYPTO_SEQIV=m - -# -# Block modes -# -CONFIG_CRYPTO_CBC=m -CONFIG_CRYPTO_CTR=m  CONFIG_CRYPTO_CTS=m -CONFIG_CRYPTO_ECB=m  CONFIG_CRYPTO_LRW=m  CONFIG_CRYPTO_PCBC=m  CONFIG_CRYPTO_XTS=m - -# -# Hash modes -#  CONFIG_CRYPTO_HMAC=y  CONFIG_CRYPTO_XCBC=m  CONFIG_CRYPTO_VMAC=m - -# -# Digest -#  CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_GHASH=m -CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=y  CONFIG_CRYPTO_MICHAEL_MIC=m  CONFIG_CRYPTO_RMD128=m  CONFIG_CRYPTO_RMD160=m @@ -1756,76 +572,16 @@ CONFIG_CRYPTO_SHA256=m  CONFIG_CRYPTO_SHA512=m  CONFIG_CRYPTO_TGR192=m  CONFIG_CRYPTO_WP512=m - -# -# Ciphers -# -CONFIG_CRYPTO_AES=m  CONFIG_CRYPTO_ANUBIS=m -CONFIG_CRYPTO_ARC4=m  CONFIG_CRYPTO_BLOWFISH=m  CONFIG_CRYPTO_CAMELLIA=m  CONFIG_CRYPTO_CAST5=m  CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_DES=m  CONFIG_CRYPTO_FCRYPT=m  CONFIG_CRYPTO_KHAZAD=m -# CONFIG_CRYPTO_SALSA20 is not set  CONFIG_CRYPTO_SEED=m  CONFIG_CRYPTO_SERPENT=m  CONFIG_CRYPTO_TEA=m  CONFIG_CRYPTO_TWOFISH=m -CONFIG_CRYPTO_TWOFISH_COMMON=m - -# -# Compression -# -CONFIG_CRYPTO_DEFLATE=m  CONFIG_CRYPTO_ZLIB=m  CONFIG_CRYPTO_LZO=m - -# -# Random Number Generation -# -CONFIG_CRYPTO_ANSI_CPRNG=m -# CONFIG_CRYPTO_USER_API_HASH is not set -# CONFIG_CRYPTO_USER_API_SKCIPHER is not set -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_DEV_HIFN_795X=m -CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y -# CONFIG_BINARY_PRINTF is not set - -# -# Library routines -# -CONFIG_RAID6_PQ=m -CONFIG_BITREVERSE=y -CONFIG_GENERIC_FIND_FIRST_BIT=y -CONFIG_GENERIC_FIND_NEXT_BIT=y -CONFIG_GENERIC_FIND_LAST_BIT=y -# CONFIG_CRC_CCITT is not set -CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=m -CONFIG_CRC32=y -# CONFIG_CRC7 is not set -CONFIG_LIBCRC32C=m -CONFIG_AUDIT_GENERIC=y -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=m -CONFIG_LZO_COMPRESS=m -CONFIG_LZO_DECOMPRESS=m -# CONFIG_XZ_DEC is not set -# CONFIG_XZ_DEC_BCJ is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_DMA=y -CONFIG_CPU_RMAP=y -CONFIG_NLATTR=y -# CONFIG_AVERAGE is not set -# CONFIG_VIRTUALIZATION is not set diff --git a/arch/tile/configs/tilepro_defconfig b/arch/tile/configs/tilepro_defconfig index 6f05f969b564..2b1fd31894f1 100644 --- a/arch/tile/configs/tilepro_defconfig +++ b/arch/tile/configs/tilepro_defconfig @@ -1,1162 +1,579 @@ -# -# Automatically generated make config: don't edit -# Linux/tile 2.6.39-rc5 Kernel Configuration -# Tue May  3 09:15:02 2011 -# -CONFIG_TILE=y -CONFIG_MMU=y -CONFIG_GENERIC_CSUM=y -CONFIG_SEMAPHORE_SLEEPERS=y -CONFIG_HAVE_ARCH_ALLOC_REMAP=y -CONFIG_HAVE_SETUP_PER_CPU_AREA=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -CONFIG_DEFAULT_MIGRATION_COST=10000000 -CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y -CONFIG_ARCH_PHYS_ADDR_T_64BIT=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y -CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_STRICT_DEVMEM=y -CONFIG_SMP=y -# CONFIG_DEBUG_COPY_FROM_USER is not set -CONFIG_HVC_TILE=y -# CONFIG_TILEGX is not set -CONFIG_ARCH_DEFCONFIG="arch/tile/configs/tile_defconfig" -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" -CONFIG_CONSTRUCTORS=y - -# -# General setup -#  CONFIG_EXPERIMENTAL=y -CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_CROSS_COMPILE="" -CONFIG_LOCALVERSION="" -CONFIG_LOCALVERSION_AUTO=y -# CONFIG_SWAP is not set +# CONFIG_LOCALVERSION_AUTO is not set  CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set -# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y  CONFIG_FHANDLE=y -# CONFIG_TASKSTATS is not set -# CONFIG_AUDIT is not set -CONFIG_HAVE_GENERIC_HARDIRQS=y - -# -# IRQ subsystem -# -CONFIG_GENERIC_HARDIRQS=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_PENDING_IRQ=y - -# -# RCU Subsystem -# -CONFIG_TREE_RCU=y -# CONFIG_PREEMPT_RCU is not set -# CONFIG_RCU_TRACE is not set -CONFIG_RCU_FANOUT=32 -# CONFIG_RCU_FANOUT_EXACT is not set -# CONFIG_RCU_FAST_NO_HZ is not set -# CONFIG_TREE_RCU_TRACE is not set -# CONFIG_IKCONFIG is not set -CONFIG_LOG_BUF_SHIFT=17 -# CONFIG_CGROUPS is not set -# CONFIG_NAMESPACES is not set -# CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SYSFS_DEPRECATED is not set -# CONFIG_RELAY is not set +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_AUDIT=y +CONFIG_LOG_BUF_SHIFT=19 +CONFIG_CGROUPS=y +CONFIG_CGROUP_DEBUG=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_MEM_RES_CTLR=y +CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y +CONFIG_CGROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y +CONFIG_RELAY=y  CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="usr/contents.txt" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 -CONFIG_RD_GZIP=y -# CONFIG_RD_BZIP2 is not set -# CONFIG_RD_LZMA is not set -# CONFIG_RD_XZ is not set -# CONFIG_RD_LZO is not set -CONFIG_INITRAMFS_COMPRESSION_NONE=y -# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_SYSCTL=y -CONFIG_ANON_INODES=y -CONFIG_EXPERT=y  CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_TIMERFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_AIO=y  CONFIG_EMBEDDED=y - -# -# Kernel Performance Events And Counters -# -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_PCI_QUIRKS=y -CONFIG_SLUB_DEBUG=y  # CONFIG_COMPAT_BRK is not set -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set  CONFIG_PROFILING=y -CONFIG_USE_GENERIC_SMP_HELPERS=y - -# -# GCOV-based kernel profiling -# -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set -CONFIG_SLABINFO=y -CONFIG_RT_MUTEXES=y -CONFIG_BASE_SMALL=0  CONFIG_MODULES=y -# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_FORCE_LOAD=y  CONFIG_MODULE_UNLOAD=y -# CONFIG_MODULE_FORCE_UNLOAD is not set -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_STOP_MACHINE=y -CONFIG_BLOCK=y -CONFIG_LBDAF=y -# CONFIG_BLK_DEV_BSG is not set -# CONFIG_BLK_DEV_INTEGRITY is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set -CONFIG_DEFAULT_NOOP=y -CONFIG_DEFAULT_IOSCHED="noop" -# CONFIG_INLINE_SPIN_TRYLOCK is not set -# CONFIG_INLINE_SPIN_TRYLOCK_BH 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_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_READ_TRYLOCK is not set -# 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_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_WRITE_TRYLOCK 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_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_MUTEX_SPIN_ON_OWNER=y - -# -# Tilera-specific configuration -# -CONFIG_NR_CPUS=64 -CONFIG_TICK_ONESHOT=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_SGI_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_CFQ_GROUP_IOSCHED=y  CONFIG_NO_HZ=y  CONFIG_HIGH_RES_TIMERS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y  CONFIG_HZ_100=y -# CONFIG_HZ_250 is not set -# CONFIG_HZ_300 is not set -# CONFIG_HZ_1000 is not set -CONFIG_HZ=100 -CONFIG_SCHED_HRTICK=y -# CONFIG_KEXEC is not set -CONFIG_HIGHMEM=y -CONFIG_NUMA=y -CONFIG_NODES_SHIFT=2 -# CONFIG_VMSPLIT_3_75G is not set -# CONFIG_VMSPLIT_3_5G is not set -CONFIG_VMSPLIT_3G=y -# CONFIG_VMSPLIT_2_75G is not set -# CONFIG_VMSPLIT_2_5G is not set -# CONFIG_VMSPLIT_2_25G is not set -# CONFIG_VMSPLIT_2G is not set -# CONFIG_VMSPLIT_1G is not set -CONFIG_PAGE_OFFSET=0xC0000000 -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_DISCONTIGMEM_MANUAL=y -CONFIG_DISCONTIGMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -CONFIG_NEED_MULTIPLE_NODES=y -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_SPLIT_PTLOCK_CPUS=4 -# CONFIG_COMPACTION is not set -CONFIG_MIGRATION=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_ZONE_DMA_FLAG=0 -CONFIG_BOUNCE=y -CONFIG_VIRT_TO_BUS=y -# CONFIG_KSM is not set -CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -# CONFIG_CMDLINE_BOOL is not set -CONFIG_VMALLOC_RESERVE=0x1000000 -CONFIG_HARDWALL=y -CONFIG_KERNEL_PL=1 - -# -# Bus options -# -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -# CONFIG_NO_IOMEM is not set -# CONFIG_NO_IOPORT is not set -# CONFIG_ARCH_SUPPORTS_MSI is not set -# CONFIG_PCI_DEBUG is not set -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# Executable file formats -# -CONFIG_KCORE_ELF=y -CONFIG_BINFMT_ELF=y +CONFIG_PCI_DEBUG=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_HAVE_AOUT is not set -# CONFIG_BINFMT_MISC is not set +CONFIG_BINFMT_MISC=y  CONFIG_NET=y - -# -# Networking options -#  CONFIG_PACKET=y  CONFIG_UNIX=y -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set -# CONFIG_NET_KEY is not set +CONFIG_XFRM_USER=y +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_STATISTICS=y +CONFIG_NET_KEY=m +CONFIG_NET_KEY_MIGRATE=y  CONFIG_INET=y  CONFIG_IP_MULTICAST=y -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_PNP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE_DEMUX is not set -# CONFIG_IP_MROUTE is not set -# CONFIG_ARPD is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_XFRM_TUNNEL is not set -CONFIG_INET_TUNNEL=y -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -CONFIG_INET_XFRM_MODE_BEET=y -# CONFIG_INET_LRO is not set -# CONFIG_INET_DIAG is not set -# CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_CUBIC=y -CONFIG_DEFAULT_TCP_CONG="cubic" -# CONFIG_TCP_MD5SIG is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_NET_IPIP=m +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_DIAG=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_MD5SIG=y  CONFIG_IPV6=y -# CONFIG_IPV6_PRIVACY is not set -# CONFIG_IPV6_ROUTER_PREF is not set -# CONFIG_IPV6_OPTIMISTIC_DAD is not set -# CONFIG_INET6_AH is not set -# CONFIG_INET6_ESP is not set -# CONFIG_INET6_IPCOMP is not set -# CONFIG_IPV6_MIP6 is not set -# CONFIG_INET6_XFRM_TUNNEL is not set -# CONFIG_INET6_TUNNEL is not set -CONFIG_INET6_XFRM_MODE_TRANSPORT=y -CONFIG_INET6_XFRM_MODE_TUNNEL=y -CONFIG_INET6_XFRM_MODE_BEET=y -# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set -CONFIG_IPV6_SIT=y -# CONFIG_IPV6_SIT_6RD is not set -CONFIG_IPV6_NDISC_NODETYPE=y -# CONFIG_IPV6_TUNNEL is not set -# CONFIG_IPV6_MULTIPLE_TABLES is not set -# CONFIG_IPV6_MROUTE is not set -# CONFIG_NETWORK_SECMARK is not set -# CONFIG_NETWORK_PHY_TIMESTAMPING is not set -# CONFIG_NETFILTER is not set -# CONFIG_IP_DCCP is not set -# CONFIG_IP_SCTP is not set -# CONFIG_RDS is not set -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -# CONFIG_L2TP is not set -# CONFIG_BRIDGE is not set -# CONFIG_NET_DSA is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set -# CONFIG_PHONET is not set -# CONFIG_IEEE802154 is not set -# CONFIG_NET_SCHED is not set -# CONFIG_DCB is not set -# CONFIG_BATMAN_ADV is not set -CONFIG_RPS=y -CONFIG_RFS_ACCEL=y -CONFIG_XPS=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_HAMRADIO is not set -# CONFIG_CAN is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set -# CONFIG_AF_RXRPC is not set +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_NETLABEL=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_NF_CONNTRACK_IPV4=m +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_RDS=m +CONFIG_RDS_TCP=m +CONFIG_BRIDGE=m +CONFIG_NET_DSA=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_PHONET=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_DCB=y  # CONFIG_WIRELESS is not set -# CONFIG_WIMAX is not set -# CONFIG_RFKILL is not set -# CONFIG_NET_9P is not set -# CONFIG_CAIF is not set -# CONFIG_CEPH_LIB is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -#  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -# CONFIG_DEVTMPFS is not set -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y -CONFIG_FIRMWARE_IN_KERNEL=y -CONFIG_EXTRA_FIRMWARE="" -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_SYS_HYPERVISOR is not set -# CONFIG_CONNECTOR is not set -# CONFIG_MTD is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_CPQ_DA is not set -# CONFIG_BLK_CPQ_CISS_DA is not set -# CONFIG_BLK_DEV_DAC960 is not set -# CONFIG_BLK_DEV_UMEM is not set -# CONFIG_BLK_DEV_COW_COMMON is not set -# CONFIG_BLK_DEV_LOOP is not set - -# -# DRBD disabled because PROC_FS, INET or CONNECTOR not selected -# -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_SX8 is not set -# CONFIG_BLK_DEV_RAM is not set -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -# CONFIG_BLK_DEV_RBD is not set -# CONFIG_SENSORS_LIS3LV02D is not set -CONFIG_MISC_DEVICES=y -# CONFIG_PHANTOM is not set -# CONFIG_SGI_IOC4 is not set -# CONFIG_TIFM_CORE is not set -# CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO is not set -# CONFIG_PCH_PHUB is not set -# CONFIG_C2PORT is not set - -# -# EEPROM support -# -# CONFIG_EEPROM_93CX6 is not set -# CONFIG_CB710_CORE is not set - -# -# Texas Instruments shared transport line discipline -# - -# -# SCSI device support -# -CONFIG_SCSI_MOD=y -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -# CONFIG_SCSI_TGT is not set -# CONFIG_SCSI_NETLINK is not set -CONFIG_SCSI_PROC_FS=y - -# -# SCSI support type (disk, tape, CD-ROM) -# +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_CONNECTOR=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_ATA_OVER_ETH=m +CONFIG_RAID_ATTRS=m +CONFIG_SCSI_TGT=m  CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set -# CONFIG_CHR_DEV_SCH is not set -# CONFIG_SCSI_MULTI_LUN is not set  CONFIG_SCSI_CONSTANTS=y  CONFIG_SCSI_LOGGING=y -# CONFIG_SCSI_SCAN_ASYNC is not set -CONFIG_SCSI_WAIT_SCAN=m - -# -# SCSI Transports -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set -# CONFIG_SCSI_SAS_ATTRS is not set -# CONFIG_SCSI_SAS_LIBSAS is not set -# CONFIG_SCSI_SRP_ATTRS is not set -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_SCSI_BNX2X_FCOE is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC7XXX_OLD is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_DPT_I2O is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -# CONFIG_MEGARAID_SAS is not set -# CONFIG_SCSI_MPT2SAS is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_LIBFC is not set -# CONFIG_LIBFCOE is not set -# CONFIG_FCOE is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FUTURE_DOMAIN is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_FC is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_LPFC is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_DC390T is not set -# CONFIG_SCSI_NSP32 is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_SRP is not set -# CONFIG_SCSI_BFA_FC is not set -# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set -# CONFIG_SCSI_DH is not set -# CONFIG_SCSI_OSD_INITIATOR is not set -# CONFIG_ATA is not set -# CONFIG_MD is not set -# CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# CONFIG_I2O is not set +CONFIG_ATA=y +CONFIG_SATA_SIL24=y +# CONFIG_ATA_SFF is not set +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MULTICORE_RAID456=y +CONFIG_MD_FAULTY=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_DEBUG=y +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_UEVENT=y +CONFIG_FUSION=y +CONFIG_FUSION_SAS=y  CONFIG_NETDEVICES=y -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_MACVLAN is not set -# CONFIG_EQUALIZER is not set +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_IFB=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL_TRAP=y  CONFIG_TUN=y -# CONFIG_VETH is not set -# CONFIG_ARCNET is not set -# CONFIG_MII is not set -# CONFIG_PHYLIB is not set -# CONFIG_NET_ETHERNET is not set -CONFIG_NETDEV_1000=y -# CONFIG_ACENIC is not set -# CONFIG_DL2K is not set -# CONFIG_E1000 is not set -# CONFIG_E1000E is not set -# CONFIG_IP1000 is not set -# CONFIG_IGB is not set -# CONFIG_IGBVF is not set -# CONFIG_NS83820 is not set -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -# CONFIG_R8169 is not set -# CONFIG_SIS190 is not set -# CONFIG_SKGE is not set -# CONFIG_SKY2 is not set -# CONFIG_VIA_VELOCITY is not set -# CONFIG_TIGON3 is not set -# CONFIG_BNX2 is not set -# CONFIG_CNIC is not set -# CONFIG_QLA3XXX is not set -# CONFIG_ATL1 is not set -# CONFIG_ATL1E is not set -# CONFIG_ATL1C is not set -# CONFIG_JME is not set -# CONFIG_STMMAC_ETH is not set -# CONFIG_PCH_GBE is not set -# CONFIG_NETDEV_10000 is not set -# CONFIG_TR is not set +CONFIG_VETH=m +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_MV88E6131=y +CONFIG_NET_DSA_MV88E6123_61_65=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set  # CONFIG_WLAN is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# -# CONFIG_WAN is not set - -# -# CAIF transport drivers -# -CONFIG_TILE_NET=y -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set -# CONFIG_PPP is not set -# CONFIG_SLIP is not set -# CONFIG_NET_FC is not set -# CONFIG_NETCONSOLE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_VMXNET3 is not set -# CONFIG_ISDN is not set -# CONFIG_PHONE is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_FF_MEMLESS is not set -# CONFIG_INPUT_POLLDEV is not set -# CONFIG_INPUT_SPARSEKMAP is not set - -# -# Userland interfaces -#  # CONFIG_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_EVDEV is not set -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -#  # CONFIG_INPUT_KEYBOARD is not set  # CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TABLET is not set -# CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -#  # CONFIG_SERIO is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -#  # CONFIG_VT is not set -CONFIG_UNIX98_PTYS=y -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set  # CONFIG_LEGACY_PTYS is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_NOZOMI is not set -# CONFIG_N_GSM is not set -CONFIG_DEVKMEM=y - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -# CONFIG_SERIAL_MFD_HSU is not set -# CONFIG_SERIAL_JSM is not set -# CONFIG_SERIAL_TIMBERDALE is not set -# CONFIG_SERIAL_ALTERA_JTAGUART is not set -# CONFIG_SERIAL_ALTERA_UART is not set -# CONFIG_SERIAL_PCH_UART is not set -# CONFIG_TTY_PRINTK is not set -CONFIG_HVC_DRIVER=y -# CONFIG_IPMI_HANDLER is not set -# CONFIG_HW_RANDOM is not set -# CONFIG_R3964 is not set -# CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_RAW_DRIVER is not set -# CONFIG_TCG_TPM is not set -CONFIG_DEVPORT=y -# CONFIG_RAMOOPS is not set -# CONFIG_I2C is not set -# CONFIG_SPI is not set - -# -# PPS support -# -# CONFIG_PPS is not set - -# -# PPS generators support -# -# CONFIG_W1 is not set -# CONFIG_POWER_SUPPLY is not set -CONFIG_HWMON=y -# CONFIG_HWMON_VID is not set -# CONFIG_HWMON_DEBUG_CHIP is not set - -# -# Native drivers -# -# CONFIG_SENSORS_I5K_AMB is not set -# CONFIG_SENSORS_F71805F is not set -# CONFIG_SENSORS_F71882FG is not set -# CONFIG_SENSORS_IT87 is not set -# CONFIG_SENSORS_PC87360 is not set -# CONFIG_SENSORS_PC87427 is not set -# CONFIG_SENSORS_SIS5595 is not set -# CONFIG_SENSORS_SMSC47M1 is not set -# CONFIG_SENSORS_SMSC47B397 is not set -# CONFIG_SENSORS_SCH5627 is not set -# CONFIG_SENSORS_VIA686A is not set -# CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set -# CONFIG_SENSORS_W83627HF is not set -# CONFIG_SENSORS_W83627EHF is not set -# CONFIG_THERMAL is not set +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +# CONFIG_HWMON is not set  CONFIG_WATCHDOG=y  CONFIG_WATCHDOG_NOWAYOUT=y - -# -# Watchdog Device Drivers -# -# CONFIG_SOFT_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set - -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set -CONFIG_SSB_POSSIBLE=y - -# -# Sonics Silicon Backplane -# -# CONFIG_SSB is not set -CONFIG_MFD_SUPPORT=y -# CONFIG_MFD_CORE is not set -# CONFIG_MFD_SM501 is not set -# CONFIG_HTC_PASIC3 is not set -# CONFIG_MFD_TMIO is not set -# CONFIG_ABX500_CORE is not set -# CONFIG_LPC_SCH is not set -# CONFIG_MFD_RDC321X is not set -# CONFIG_MFD_JANZ_CMODIO is not set -# CONFIG_MFD_VX855 is not set -# CONFIG_REGULATOR is not set -# CONFIG_MEDIA_SUPPORT is not set - -# -# Graphics support -# -CONFIG_VGA_ARB=y -CONFIG_VGA_ARB_MAX_GPUS=16 -# CONFIG_DRM is not set -# CONFIG_STUB_POULSBO is not set -# CONFIG_VGASTATE is not set -# CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set - -# -# Display device support -# -# CONFIG_DISPLAY_SUPPORT is not set -# CONFIG_SOUND is not set +# CONFIG_VGA_ARB is not set  # CONFIG_HID_SUPPORT is not set -CONFIG_USB_SUPPORT=y -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -CONFIG_USB_ARCH_HAS_EHCI=y -# CONFIG_USB is not set -# CONFIG_USB_OTG_WHITELIST is not set -# CONFIG_USB_OTG_BLACKLIST_HUB is not set - -# -# Enable Host or Gadget support to see Inventra options -# - -# -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may -# -# CONFIG_USB_GADGET is not set - -# -# OTG and related infrastructure -# -# CONFIG_UWB is not set -# CONFIG_MMC is not set -# CONFIG_MEMSTICK is not set -# CONFIG_NEW_LEDS is not set -# CONFIG_NFC_DEVICES is not set -# CONFIG_ACCESSIBILITY is not set -# CONFIG_INFINIBAND is not set +# CONFIG_USB_SUPPORT is not set  CONFIG_EDAC=y - -# -# Reporting subsystems -# -# CONFIG_EDAC_DEBUG is not set  CONFIG_EDAC_MM_EDAC=y -CONFIG_EDAC_TILE=y -CONFIG_RTC_LIB=y  CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set - -# -# RTC interfaces -# -# CONFIG_RTC_INTF_SYSFS is not set -# CONFIG_RTC_INTF_PROC is not set -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# SPI RTC drivers -# - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_DS1286 is not set -# CONFIG_RTC_DRV_DS1511 is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T35 is not set -# CONFIG_RTC_DRV_M48T59 is not set -# CONFIG_RTC_DRV_MSM6242 is not set -# CONFIG_RTC_DRV_BQ4802 is not set -# CONFIG_RTC_DRV_RP5C01 is not set -# CONFIG_RTC_DRV_V3020 is not set - -# -# on-CPU RTC drivers -#  CONFIG_RTC_DRV_TILE=y -# CONFIG_DMADEVICES is not set -# CONFIG_AUXDISPLAY is not set -# CONFIG_UIO is not set -# CONFIG_STAGING is not set - -# -# File systems -#  CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y  CONFIG_EXT3_FS=y -# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -# CONFIG_EXT4_FS is not set -CONFIG_JBD=y -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_XFS_FS is not set -# CONFIG_GFS2_FS is not set -# CONFIG_BTRFS_FS is not set -# CONFIG_NILFS2_FS is not set -# CONFIG_FS_POSIX_ACL is not set -CONFIG_EXPORTFS=y -CONFIG_FILE_LOCKING=y -CONFIG_FSNOTIFY=y -CONFIG_DNOTIFY=y -CONFIG_INOTIFY_USER=y -# CONFIG_FANOTIFY is not set -# CONFIG_QUOTA is not set -# CONFIG_QUOTACTL is not set -# CONFIG_AUTOFS4_FS is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_XFS_FS=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_QFMT_V2=y +CONFIG_AUTOFS4_FS=m  CONFIG_FUSE_FS=y -# CONFIG_CUSE is not set - -# -# Caches -# -# CONFIG_FSCACHE is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y +CONFIG_CUSE=m +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=m +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=m  CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -# CONFIG_PROC_KCORE is not set -CONFIG_PROC_SYSCTL=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_SYSFS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_PROC_KCORE=y  CONFIG_TMPFS=y -# CONFIG_TMPFS_POSIX_ACL is not set +CONFIG_TMPFS_POSIX_ACL=y  CONFIG_HUGETLBFS=y -CONFIG_HUGETLB_PAGE=y -# CONFIG_CONFIGFS_FS is not set -CONFIG_MISC_FILESYSTEMS=y -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -# CONFIG_LOGFS is not set -# CONFIG_CRAMFS is not set -# CONFIG_SQUASHFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_OMFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_PSTORE is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set -CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_ECRYPT_FS=m +CONFIG_CRAMFS=m +CONFIG_SQUASHFS=m  CONFIG_NFS_FS=m  CONFIG_NFS_V3=y -# CONFIG_NFS_V3_ACL is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFSD is not set -CONFIG_LOCKD=m -CONFIG_LOCKD_V4=y -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m -# CONFIG_RPCSEC_GSS_KRB5 is not set -# CONFIG_CEPH_FS is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y  CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_DEFAULT="utf8"  CONFIG_NLS_CODEPAGE_437=y -# 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_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ASCII is not set -CONFIG_NLS_ISO8859_1=y -# 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_9 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_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -# CONFIG_NLS_UTF8 is not set - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 -CONFIG_ENABLE_WARN_DEPRECATED=y -CONFIG_ENABLE_MUST_CHECK=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_DLM_DEBUG=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set  CONFIG_FRAME_WARN=2048  CONFIG_MAGIC_SYSRQ=y -# CONFIG_STRIP_ASM_SYMS is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set -# CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SHIRQ is not set -# CONFIG_LOCKUP_DETECTOR is not set -# CONFIG_HARDLOCKUP_DETECTOR is not set -CONFIG_DETECT_HUNG_TASK=y -# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 -CONFIG_SCHED_DEBUG=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_TIMER_STATS is not set -# CONFIG_DEBUG_OBJECTS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_SLUB_STATS is not set -# CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_SPARSE_RCU_POINTER is not set -# CONFIG_LOCK_STAT is not set -CONFIG_DEBUG_SPINLOCK_SLEEP=y -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -CONFIG_STACKTRACE=y -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_STRIP_ASM_SYMS=y +CONFIG_DEBUG_FS=y +CONFIG_HEADERS_CHECK=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y  CONFIG_DEBUG_INFO=y -# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_DEBUG_INFO_REDUCED=y  CONFIG_DEBUG_VM=y -# CONFIG_DEBUG_WRITECOUNT is not set -# CONFIG_DEBUG_MEMORY_INIT is not set -# CONFIG_DEBUG_LIST is not set -# CONFIG_TEST_LIST_SORT is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_NOTIFIERS is not set -# CONFIG_DEBUG_CREDENTIALS is not set -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_RCU_CPU_STALL_DETECTOR is not set -# CONFIG_BACKTRACE_SELF_TEST is not set -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -# CONFIG_FAULT_INJECTION is not set -# CONFIG_SYSCTL_SYSCALL_CHECK is not set -# CONFIG_DEBUG_PAGEALLOC is not set -CONFIG_TRACING_SUPPORT=y -CONFIG_FTRACE=y -# CONFIG_IRQSOFF_TRACER is not set -# CONFIG_SCHED_TRACER is not set -# CONFIG_ENABLE_DEFAULT_TRACERS is not set -CONFIG_BRANCH_PROFILE_NONE=y -# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -# CONFIG_PROFILE_ALL_BRANCHES is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_ATOMIC64_SELFTEST is not set -# CONFIG_SAMPLES is not set -# CONFIG_TEST_KSTRTOX is not set -CONFIG_EARLY_PRINTK=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_LIST=y +CONFIG_DEBUG_CREDENTIALS=y +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_ASYNC_RAID6_TEST=m  CONFIG_DEBUG_STACKOVERFLOW=y -# CONFIG_DEBUG_STACK_USAGE is not set -CONFIG_DEBUG_EXTRA_FLAGS="-femit-struct-debug-baseonly" - -# -# Security options -# -# CONFIG_KEYS is not set -# CONFIG_SECURITY_DMESG_RESTRICT is not set -# CONFIG_SECURITY is not set -# CONFIG_SECURITYFS is not set -CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" -CONFIG_CRYPTO=y - -# -# Crypto core or helper -# -# CONFIG_CRYPTO_FIPS is not set -CONFIG_CRYPTO_ALGAPI=m -CONFIG_CRYPTO_ALGAPI2=m -CONFIG_CRYPTO_RNG=m -CONFIG_CRYPTO_RNG2=m -# CONFIG_CRYPTO_MANAGER is not set -# CONFIG_CRYPTO_MANAGER2 is not set -# CONFIG_CRYPTO_GF128MUL is not set -# CONFIG_CRYPTO_NULL is not set -# CONFIG_CRYPTO_PCRYPT is not set -# CONFIG_CRYPTO_CRYPTD is not set -# CONFIG_CRYPTO_AUTHENC is not set -# CONFIG_CRYPTO_TEST is not set - -# -# Authenticated Encryption with Associated Data -# -# CONFIG_CRYPTO_CCM is not set -# CONFIG_CRYPTO_GCM is not set -# CONFIG_CRYPTO_SEQIV is not set - -# -# Block modes -# -# CONFIG_CRYPTO_CBC is not set -# CONFIG_CRYPTO_CTR is not set -# CONFIG_CRYPTO_CTS is not set -# CONFIG_CRYPTO_ECB is not set -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_PCBC is not set -# CONFIG_CRYPTO_XTS is not set - -# -# Hash modes -# -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_XCBC is not set -# CONFIG_CRYPTO_VMAC is not set - -# -# Digest -# -# CONFIG_CRYPTO_CRC32C is not set -# CONFIG_CRYPTO_GHASH is not set -# CONFIG_CRYPTO_MD4 is not set -# CONFIG_CRYPTO_MD5 is not set -# CONFIG_CRYPTO_MICHAEL_MIC 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_SHA1 is not set -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_WP512 is not set - -# -# Ciphers -# -CONFIG_CRYPTO_AES=m -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_ARC4 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_DES is not set -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set -# CONFIG_CRYPTO_SEED is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_TEA is not set -# CONFIG_CRYPTO_TWOFISH is not set - -# -# Compression -# -# CONFIG_CRYPTO_DEFLATE is not set -# CONFIG_CRYPTO_ZLIB is not set -# CONFIG_CRYPTO_LZO is not set - -# -# Random Number Generation -# -CONFIG_CRYPTO_ANSI_CPRNG=m -# CONFIG_CRYPTO_USER_API_HASH is not set -# CONFIG_CRYPTO_USER_API_SKCIPHER is not set -CONFIG_CRYPTO_HW=y -# CONFIG_CRYPTO_DEV_HIFN_795X is not set -# CONFIG_BINARY_PRINTF is not set - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_GENERIC_FIND_FIRST_BIT=y -CONFIG_GENERIC_FIND_NEXT_BIT=y -CONFIG_GENERIC_FIND_LAST_BIT=y -# CONFIG_CRC_CCITT is not set -# CONFIG_CRC16 is not set -# CONFIG_CRC_T10DIF is not set -# CONFIG_CRC_ITU_T is not set -CONFIG_CRC32=y -# CONFIG_CRC7 is not set -# CONFIG_LIBCRC32C is not set -CONFIG_ZLIB_INFLATE=y -# CONFIG_XZ_DEC is not set -# CONFIG_XZ_DEC_BCJ is not set -CONFIG_DECOMPRESS_GZIP=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_DMA=y -CONFIG_CPU_RMAP=y -CONFIG_NLATTR=y -# CONFIG_AVERAGE is not set -CONFIG_HAVE_KVM=y -# CONFIG_VIRTUALIZATION is not set +CONFIG_KEYS_DEBUG_PROC_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CRYPTO_LZO=m +CONFIG_CRC_CCITT=m +CONFIG_CRC7=m diff --git a/arch/tile/kernel/compat_signal.c b/arch/tile/kernel/compat_signal.c index a7869ad62776..77763ccd5a7d 100644 --- a/arch/tile/kernel/compat_signal.c +++ b/arch/tile/kernel/compat_signal.c @@ -303,10 +303,7 @@ long compat_sys_rt_sigreturn(struct pt_regs *regs)  		goto badframe;  	sigdelsetmask(&set, ~_BLOCKABLE); -	spin_lock_irq(¤t->sighand->siglock); -	current->blocked = set; -	recalc_sigpending(); -	spin_unlock_irq(¤t->sighand->siglock); +	set_current_blocked(&set);  	if (restore_sigcontext(regs, &frame->uc.uc_mcontext))  		goto badframe; diff --git a/arch/tile/kernel/signal.c b/arch/tile/kernel/signal.c index bedaf4e9f3a7..f79d4b88c747 100644 --- a/arch/tile/kernel/signal.c +++ b/arch/tile/kernel/signal.c @@ -97,10 +97,7 @@ SYSCALL_DEFINE1(rt_sigreturn, struct pt_regs *, regs)  		goto badframe;  	sigdelsetmask(&set, ~_BLOCKABLE); -	spin_lock_irq(¤t->sighand->siglock); -	current->blocked = set; -	recalc_sigpending(); -	spin_unlock_irq(¤t->sighand->siglock); +	set_current_blocked(&set);  	if (restore_sigcontext(regs, &frame->uc.uc_mcontext))  		goto badframe; @@ -286,13 +283,7 @@ static int handle_signal(unsigned long sig, siginfo_t *info,  		 * the work_pending path in the return-to-user code, and  		 * either way we can re-enable interrupts unconditionally.  		 */ -		spin_lock_irq(¤t->sighand->siglock); -		sigorsets(¤t->blocked, -			  ¤t->blocked, &ka->sa.sa_mask); -		if (!(ka->sa.sa_flags & SA_NODEFER)) -			sigaddset(¤t->blocked, sig); -		recalc_sigpending(); -		spin_unlock_irq(¤t->sighand->siglock); +		block_sigmask(ka, sig);  	}  	return ret; diff --git a/arch/tile/kernel/sysfs.c b/arch/tile/kernel/sysfs.c index f862b005eb73..71ae728e9d0b 100644 --- a/arch/tile/kernel/sysfs.c +++ b/arch/tile/kernel/sysfs.c @@ -163,7 +163,7 @@ static int __init create_sysfs_entries(void)  #define create_hv_attr(name)						\  	if (!err)							\ -		err = sysfs_create_file(hypervisor_kobj, &dev_attr_##name); +		err = sysfs_create_file(hypervisor_kobj, &dev_attr_##name.attr);  	create_hv_attr(type);  	create_hv_attr(version);  	create_hv_attr(config_version); diff --git a/arch/tile/lib/spinlock_32.c b/arch/tile/lib/spinlock_32.c index cb0999fb64b4..b16ac49a968e 100644 --- a/arch/tile/lib/spinlock_32.c +++ b/arch/tile/lib/spinlock_32.c @@ -144,7 +144,7 @@ void arch_read_unlock(arch_rwlock_t *rwlock)  	for (;;) {  		__insn_mtspr(SPR_INTERRUPT_CRITICAL_SECTION, 1);  		val = __insn_tns((int *)&rwlock->lock); -		if (likely(val & 1) == 0) { +		if (likely((val & 1) == 0)) {  			rwlock->lock = val - (1 << _RD_COUNT_SHIFT);  			__insn_mtspr(SPR_INTERRUPT_CRITICAL_SECTION, 0);  			break; diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 3bd37bdf1b8e..61d4f79a550e 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c @@ -385,14 +385,15 @@ static __initconst const u64 westmere_hw_cache_event_ids  #define NHM_LOCAL_DRAM		(1 << 14)  #define NHM_NON_DRAM		(1 << 15) -#define NHM_ALL_DRAM		(NHM_REMOTE_DRAM|NHM_LOCAL_DRAM) +#define NHM_LOCAL		(NHM_LOCAL_DRAM|NHM_REMOTE_CACHE_FWD) +#define NHM_REMOTE		(NHM_REMOTE_DRAM)  #define NHM_DMND_READ		(NHM_DMND_DATA_RD)  #define NHM_DMND_WRITE		(NHM_DMND_RFO|NHM_DMND_WB)  #define NHM_DMND_PREFETCH	(NHM_PF_DATA_RD|NHM_PF_DATA_RFO)  #define NHM_L3_HIT	(NHM_UNCORE_HIT|NHM_OTHER_CORE_HIT_SNP|NHM_OTHER_CORE_HITM) -#define NHM_L3_MISS	(NHM_NON_DRAM|NHM_ALL_DRAM|NHM_REMOTE_CACHE_FWD) +#define NHM_L3_MISS	(NHM_NON_DRAM|NHM_LOCAL_DRAM|NHM_REMOTE_DRAM|NHM_REMOTE_CACHE_FWD)  #define NHM_L3_ACCESS	(NHM_L3_HIT|NHM_L3_MISS)  static __initconst const u64 nehalem_hw_cache_extra_regs @@ -416,16 +417,16 @@ static __initconst const u64 nehalem_hw_cache_extra_regs   },   [ C(NODE) ] = {  	[ C(OP_READ) ] = { -		[ C(RESULT_ACCESS) ] = NHM_DMND_READ|NHM_ALL_DRAM, -		[ C(RESULT_MISS)   ] = NHM_DMND_READ|NHM_REMOTE_DRAM, +		[ C(RESULT_ACCESS) ] = NHM_DMND_READ|NHM_LOCAL|NHM_REMOTE, +		[ C(RESULT_MISS)   ] = NHM_DMND_READ|NHM_REMOTE,  	},  	[ C(OP_WRITE) ] = { -		[ C(RESULT_ACCESS) ] = NHM_DMND_WRITE|NHM_ALL_DRAM, -		[ C(RESULT_MISS)   ] = NHM_DMND_WRITE|NHM_REMOTE_DRAM, +		[ C(RESULT_ACCESS) ] = NHM_DMND_WRITE|NHM_LOCAL|NHM_REMOTE, +		[ C(RESULT_MISS)   ] = NHM_DMND_WRITE|NHM_REMOTE,  	},  	[ C(OP_PREFETCH) ] = { -		[ C(RESULT_ACCESS) ] = NHM_DMND_PREFETCH|NHM_ALL_DRAM, -		[ C(RESULT_MISS)   ] = NHM_DMND_PREFETCH|NHM_REMOTE_DRAM, +		[ C(RESULT_ACCESS) ] = NHM_DMND_PREFETCH|NHM_LOCAL|NHM_REMOTE, +		[ C(RESULT_MISS)   ] = NHM_DMND_PREFETCH|NHM_REMOTE,  	},   },  }; diff --git a/block/blk-ioc.c b/block/blk-ioc.c index 8b782a63c297..fb95dd2f889a 100644 --- a/block/blk-ioc.c +++ b/block/blk-ioc.c @@ -36,11 +36,23 @@ static void icq_free_icq_rcu(struct rcu_head *head)  	kmem_cache_free(icq->__rcu_icq_cache, icq);  } -/* - * Exit and free an icq.  Called with both ioc and q locked. - */ +/* Exit an icq. Called with both ioc and q locked. */  static void ioc_exit_icq(struct io_cq *icq)  { +	struct elevator_type *et = icq->q->elevator->type; + +	if (icq->flags & ICQ_EXITED) +		return; + +	if (et->ops.elevator_exit_icq_fn) +		et->ops.elevator_exit_icq_fn(icq); + +	icq->flags |= ICQ_EXITED; +} + +/* Release an icq.  Called with both ioc and q locked. */ +static void ioc_destroy_icq(struct io_cq *icq) +{  	struct io_context *ioc = icq->ioc;  	struct request_queue *q = icq->q;  	struct elevator_type *et = q->elevator->type; @@ -60,8 +72,7 @@ static void ioc_exit_icq(struct io_cq *icq)  	if (rcu_dereference_raw(ioc->icq_hint) == icq)  		rcu_assign_pointer(ioc->icq_hint, NULL); -	if (et->ops.elevator_exit_icq_fn) -		et->ops.elevator_exit_icq_fn(icq); +	ioc_exit_icq(icq);  	/*  	 * @icq->q might have gone away by the time RCU callback runs @@ -79,7 +90,6 @@ static void ioc_release_fn(struct work_struct *work)  {  	struct io_context *ioc = container_of(work, struct io_context,  					      release_work); -	struct request_queue *last_q = NULL;  	unsigned long flags;  	/* @@ -93,44 +103,19 @@ static void ioc_release_fn(struct work_struct *work)  	while (!hlist_empty(&ioc->icq_list)) {  		struct io_cq *icq = hlist_entry(ioc->icq_list.first,  						struct io_cq, ioc_node); -		struct request_queue *this_q = icq->q; - -		if (this_q != last_q) { -			/* -			 * Need to switch to @this_q.  Once we release -			 * @ioc->lock, it can go away along with @cic. -			 * Hold on to it. -			 */ -			__blk_get_queue(this_q); - -			/* -			 * blk_put_queue() might sleep thanks to kobject -			 * idiocy.  Always release both locks, put and -			 * restart. -			 */ -			if (last_q) { -				spin_unlock(last_q->queue_lock); -				spin_unlock_irqrestore(&ioc->lock, flags); -				blk_put_queue(last_q); -			} else { -				spin_unlock_irqrestore(&ioc->lock, flags); -			} - -			last_q = this_q; -			spin_lock_irqsave(this_q->queue_lock, flags); -			spin_lock_nested(&ioc->lock, 1); -			continue; +		struct request_queue *q = icq->q; + +		if (spin_trylock(q->queue_lock)) { +			ioc_destroy_icq(icq); +			spin_unlock(q->queue_lock); +		} else { +			spin_unlock_irqrestore(&ioc->lock, flags); +			cpu_relax(); +			spin_lock_irqsave_nested(&ioc->lock, flags, 1);  		} -		ioc_exit_icq(icq);  	} -	if (last_q) { -		spin_unlock(last_q->queue_lock); -		spin_unlock_irqrestore(&ioc->lock, flags); -		blk_put_queue(last_q); -	} else { -		spin_unlock_irqrestore(&ioc->lock, flags); -	} +	spin_unlock_irqrestore(&ioc->lock, flags);  	kmem_cache_free(iocontext_cachep, ioc);  } @@ -145,6 +130,7 @@ static void ioc_release_fn(struct work_struct *work)  void put_io_context(struct io_context *ioc)  {  	unsigned long flags; +	bool free_ioc = false;  	if (ioc == NULL)  		return; @@ -159,8 +145,13 @@ void put_io_context(struct io_context *ioc)  		spin_lock_irqsave(&ioc->lock, flags);  		if (!hlist_empty(&ioc->icq_list))  			schedule_work(&ioc->release_work); +		else +			free_ioc = true;  		spin_unlock_irqrestore(&ioc->lock, flags);  	} + +	if (free_ioc) +		kmem_cache_free(iocontext_cachep, ioc);  }  EXPORT_SYMBOL(put_io_context); @@ -168,13 +159,41 @@ EXPORT_SYMBOL(put_io_context);  void exit_io_context(struct task_struct *task)  {  	struct io_context *ioc; +	struct io_cq *icq; +	struct hlist_node *n; +	unsigned long flags;  	task_lock(task);  	ioc = task->io_context;  	task->io_context = NULL;  	task_unlock(task); -	atomic_dec(&ioc->nr_tasks); +	if (!atomic_dec_and_test(&ioc->nr_tasks)) { +		put_io_context(ioc); +		return; +	} + +	/* +	 * Need ioc lock to walk icq_list and q lock to exit icq.  Perform +	 * reverse double locking.  Read comment in ioc_release_fn() for +	 * explanation on the nested locking annotation. +	 */ +retry: +	spin_lock_irqsave_nested(&ioc->lock, flags, 1); +	hlist_for_each_entry(icq, n, &ioc->icq_list, ioc_node) { +		if (icq->flags & ICQ_EXITED) +			continue; +		if (spin_trylock(icq->q->queue_lock)) { +			ioc_exit_icq(icq); +			spin_unlock(icq->q->queue_lock); +		} else { +			spin_unlock_irqrestore(&ioc->lock, flags); +			cpu_relax(); +			goto retry; +		} +	} +	spin_unlock_irqrestore(&ioc->lock, flags); +  	put_io_context(ioc);  } @@ -194,7 +213,7 @@ void ioc_clear_queue(struct request_queue *q)  		struct io_context *ioc = icq->ioc;  		spin_lock(&ioc->lock); -		ioc_exit_icq(icq); +		ioc_destroy_icq(icq);  		spin_unlock(&ioc->lock);  	}  } @@ -363,13 +382,13 @@ struct io_cq *ioc_create_icq(struct request_queue *q, gfp_t gfp_mask)  	return icq;  } -void ioc_set_changed(struct io_context *ioc, int which) +void ioc_set_icq_flags(struct io_context *ioc, unsigned int flags)  {  	struct io_cq *icq;  	struct hlist_node *n;  	hlist_for_each_entry(icq, n, &ioc->icq_list, ioc_node) -		set_bit(which, &icq->changed); +		icq->flags |= flags;  }  /** @@ -387,7 +406,7 @@ void ioc_ioprio_changed(struct io_context *ioc, int ioprio)  	spin_lock_irqsave(&ioc->lock, flags);  	ioc->ioprio = ioprio; -	ioc_set_changed(ioc, ICQ_IOPRIO_CHANGED); +	ioc_set_icq_flags(ioc, ICQ_IOPRIO_CHANGED);  	spin_unlock_irqrestore(&ioc->lock, flags);  } @@ -404,11 +423,33 @@ void ioc_cgroup_changed(struct io_context *ioc)  	unsigned long flags;  	spin_lock_irqsave(&ioc->lock, flags); -	ioc_set_changed(ioc, ICQ_CGROUP_CHANGED); +	ioc_set_icq_flags(ioc, ICQ_CGROUP_CHANGED);  	spin_unlock_irqrestore(&ioc->lock, flags);  }  EXPORT_SYMBOL(ioc_cgroup_changed); +/** + * icq_get_changed - fetch and clear icq changed mask + * @icq: icq of interest + * + * Fetch and clear ICQ_*_CHANGED bits from @icq.  Grabs and releases + * @icq->ioc->lock. + */ +unsigned icq_get_changed(struct io_cq *icq) +{ +	unsigned int changed = 0; +	unsigned long flags; + +	if (unlikely(icq->flags & ICQ_CHANGED_MASK)) { +		spin_lock_irqsave(&icq->ioc->lock, flags); +		changed = icq->flags & ICQ_CHANGED_MASK; +		icq->flags &= ~ICQ_CHANGED_MASK; +		spin_unlock_irqrestore(&icq->ioc->lock, flags); +	} +	return changed; +} +EXPORT_SYMBOL(icq_get_changed); +  static int __init blk_ioc_init(void)  {  	iocontext_cachep = kmem_cache_create("blkdev_ioc", diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index d0ba50533668..457295253566 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -3470,20 +3470,20 @@ cfq_set_request(struct request_queue *q, struct request *rq, gfp_t gfp_mask)  	const int rw = rq_data_dir(rq);  	const bool is_sync = rq_is_sync(rq);  	struct cfq_queue *cfqq; +	unsigned int changed;  	might_sleep_if(gfp_mask & __GFP_WAIT);  	spin_lock_irq(q->queue_lock);  	/* handle changed notifications */ -	if (unlikely(cic->icq.changed)) { -		if (test_and_clear_bit(ICQ_IOPRIO_CHANGED, &cic->icq.changed)) -			changed_ioprio(cic); +	changed = icq_get_changed(&cic->icq); +	if (unlikely(changed & ICQ_IOPRIO_CHANGED)) +		changed_ioprio(cic);  #ifdef CONFIG_CFQ_GROUP_IOSCHED -		if (test_and_clear_bit(ICQ_CGROUP_CHANGED, &cic->icq.changed)) -			changed_cgroup(cic); +	if (unlikely(changed & ICQ_CGROUP_CHANGED)) +		changed_cgroup(cic);  #endif -	}  new_queue:  	cfqq = cic_to_cfqq(cic, is_sync); diff --git a/block/genhd.c b/block/genhd.c index 23b4f7063322..df9816ede75b 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -35,6 +35,7 @@ static DEFINE_IDR(ext_devt_idr);  static struct device_type disk_type; +static void disk_alloc_events(struct gendisk *disk);  static void disk_add_events(struct gendisk *disk);  static void disk_del_events(struct gendisk *disk);  static void disk_release_events(struct gendisk *disk); @@ -601,6 +602,8 @@ void add_disk(struct gendisk *disk)  	disk->major = MAJOR(devt);  	disk->first_minor = MINOR(devt); +	disk_alloc_events(disk); +  	/* Register BDI before referencing it from bdev */  	bdi = &disk->queue->backing_dev_info;  	bdi_register_dev(bdi, disk_devt(disk)); @@ -1475,9 +1478,9 @@ static void __disk_unblock_events(struct gendisk *disk, bool check_now)  	intv = disk_events_poll_jiffies(disk);  	set_timer_slack(&ev->dwork.timer, intv / 4);  	if (check_now) -		queue_delayed_work(system_nrt_wq, &ev->dwork, 0); +		queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);  	else if (intv) -		queue_delayed_work(system_nrt_wq, &ev->dwork, intv); +		queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);  out_unlock:  	spin_unlock_irqrestore(&ev->lock, flags);  } @@ -1521,7 +1524,7 @@ void disk_flush_events(struct gendisk *disk, unsigned int mask)  	ev->clearing |= mask;  	if (!ev->block) {  		cancel_delayed_work(&ev->dwork); -		queue_delayed_work(system_nrt_wq, &ev->dwork, 0); +		queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);  	}  	spin_unlock_irq(&ev->lock);  } @@ -1558,7 +1561,7 @@ unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask)  	/* uncondtionally schedule event check and wait for it to finish */  	disk_block_events(disk); -	queue_delayed_work(system_nrt_wq, &ev->dwork, 0); +	queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, 0);  	flush_delayed_work(&ev->dwork);  	__disk_unblock_events(disk, false); @@ -1595,7 +1598,7 @@ static void disk_events_workfn(struct work_struct *work)  	intv = disk_events_poll_jiffies(disk);  	if (!ev->block && intv) -		queue_delayed_work(system_nrt_wq, &ev->dwork, intv); +		queue_delayed_work(system_nrt_freezable_wq, &ev->dwork, intv);  	spin_unlock_irq(&ev->lock); @@ -1733,9 +1736,9 @@ module_param_cb(events_dfl_poll_msecs, &disk_events_dfl_poll_msecs_param_ops,  		&disk_events_dfl_poll_msecs, 0644);  /* - * disk_{add|del|release}_events - initialize and destroy disk_events. + * disk_{alloc|add|del|release}_events - initialize and destroy disk_events.   */ -static void disk_add_events(struct gendisk *disk) +static void disk_alloc_events(struct gendisk *disk)  {  	struct disk_events *ev; @@ -1748,16 +1751,6 @@ static void disk_add_events(struct gendisk *disk)  		return;  	} -	if (sysfs_create_files(&disk_to_dev(disk)->kobj, -			       disk_events_attrs) < 0) { -		pr_warn("%s: failed to create sysfs files for events\n", -			disk->disk_name); -		kfree(ev); -		return; -	} - -	disk->ev = ev; -  	INIT_LIST_HEAD(&ev->node);  	ev->disk = disk;  	spin_lock_init(&ev->lock); @@ -1766,8 +1759,21 @@ static void disk_add_events(struct gendisk *disk)  	ev->poll_msecs = -1;  	INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn); +	disk->ev = ev; +} + +static void disk_add_events(struct gendisk *disk) +{ +	if (!disk->ev) +		return; + +	/* FIXME: error handling */ +	if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0) +		pr_warn("%s: failed to create sysfs files for events\n", +			disk->disk_name); +  	mutex_lock(&disk_events_mutex); -	list_add_tail(&ev->node, &disk_events); +	list_add_tail(&disk->ev->node, &disk_events);  	mutex_unlock(&disk_events_mutex);  	/* diff --git a/block/partition-generic.c b/block/partition-generic.c index d06ec1c829c2..6df5d6928a44 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -389,17 +389,11 @@ static bool disk_unlock_native_capacity(struct gendisk *disk)  	}  } -int rescan_partitions(struct gendisk *disk, struct block_device *bdev) +static int drop_partitions(struct gendisk *disk, struct block_device *bdev)  { -	struct parsed_partitions *state = NULL;  	struct disk_part_iter piter;  	struct hd_struct *part; -	int p, highest, res; -rescan: -	if (state && !IS_ERR(state)) { -		kfree(state); -		state = NULL; -	} +	int res;  	if (bdev->bd_part_count)  		return -EBUSY; @@ -412,6 +406,24 @@ rescan:  		delete_partition(disk, part->partno);  	disk_part_iter_exit(&piter); +	return 0; +} + +int rescan_partitions(struct gendisk *disk, struct block_device *bdev) +{ +	struct parsed_partitions *state = NULL; +	struct hd_struct *part; +	int p, highest, res; +rescan: +	if (state && !IS_ERR(state)) { +		kfree(state); +		state = NULL; +	} + +	res = drop_partitions(disk, bdev); +	if (res) +		return res; +  	if (disk->fops->revalidate_disk)  		disk->fops->revalidate_disk(disk);  	check_disk_size_change(disk, bdev); @@ -515,6 +527,26 @@ rescan:  	return 0;  } +int invalidate_partitions(struct gendisk *disk, struct block_device *bdev) +{ +	int res; + +	if (!bdev->bd_invalidated) +		return 0; + +	res = drop_partitions(disk, bdev); +	if (res) +		return res; + +	set_capacity(disk, 0); +	check_disk_size_change(disk, bdev); +	bdev->bd_invalidated = 0; +	/* tell userspace that the media / partition table may have changed */ +	kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); + +	return 0; +} +  unsigned char *read_dev_sector(struct block_device *bdev, sector_t n, Sector *p)  {  	struct address_space *mapping = bdev->bd_inode->i_mapping; diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index e086fbbbe853..8db9089127c5 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -1177,7 +1177,8 @@ static bool DAC960_V1_EnableMemoryMailboxInterface(DAC960_Controller_T    int TimeoutCounter;    int i; -   +  memset(&CommandMailbox, 0, sizeof(DAC960_V1_CommandMailbox_T)); +    if (pci_set_dma_mask(Controller->PCIDevice, DMA_BIT_MASK(32)))  	return DAC960_Failure(Controller, "DMA mask out of range");    Controller->BounceBufferLimit = DMA_BIT_MASK(32); @@ -4627,7 +4628,8 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)    DAC960_Controller_T *Controller = Command->Controller;    DAC960_CommandType_T CommandType = Command->CommandType;    DAC960_V2_CommandMailbox_T *CommandMailbox = &Command->V2.CommandMailbox; -  DAC960_V2_IOCTL_Opcode_T CommandOpcode = CommandMailbox->Common.IOCTL_Opcode; +  DAC960_V2_IOCTL_Opcode_T IOCTLOpcode = CommandMailbox->Common.IOCTL_Opcode; +  DAC960_V2_CommandOpcode_T CommandOpcode = CommandMailbox->SCSI_10.CommandOpcode;    DAC960_V2_CommandStatus_T CommandStatus = Command->V2.CommandStatus;    if (CommandType == DAC960_ReadCommand || @@ -4699,7 +4701,7 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)      {        if (Controller->ShutdownMonitoringTimer)  	      return; -      if (CommandOpcode == DAC960_V2_GetControllerInfo) +      if (IOCTLOpcode == DAC960_V2_GetControllerInfo)  	{  	  DAC960_V2_ControllerInfo_T *NewControllerInfo =  	    Controller->V2.NewControllerInformation; @@ -4719,14 +4721,14 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)  	  memcpy(ControllerInfo, NewControllerInfo,  		 sizeof(DAC960_V2_ControllerInfo_T));  	} -      else if (CommandOpcode == DAC960_V2_GetEvent) +      else if (IOCTLOpcode == DAC960_V2_GetEvent)  	{  	  if (CommandStatus == DAC960_V2_NormalCompletion) {  	    DAC960_V2_ReportEvent(Controller, Controller->V2.Event);  	  }  	  Controller->V2.NextEventSequenceNumber++;  	} -      else if (CommandOpcode == DAC960_V2_GetPhysicalDeviceInfoValid && +      else if (IOCTLOpcode == DAC960_V2_GetPhysicalDeviceInfoValid &&  	       CommandStatus == DAC960_V2_NormalCompletion)  	{  	  DAC960_V2_PhysicalDeviceInfo_T *NewPhysicalDeviceInfo = @@ -4915,7 +4917,7 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)  	  NewPhysicalDeviceInfo->LogicalUnit++;  	  Controller->V2.PhysicalDeviceIndex++;  	} -      else if (CommandOpcode == DAC960_V2_GetPhysicalDeviceInfoValid) +      else if (IOCTLOpcode == DAC960_V2_GetPhysicalDeviceInfoValid)  	{  	  unsigned int DeviceIndex;  	  for (DeviceIndex = Controller->V2.PhysicalDeviceIndex; @@ -4938,7 +4940,7 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)  	    }  	  Controller->V2.NeedPhysicalDeviceInformation = false;  	} -      else if (CommandOpcode == DAC960_V2_GetLogicalDeviceInfoValid && +      else if (IOCTLOpcode == DAC960_V2_GetLogicalDeviceInfoValid &&  	       CommandStatus == DAC960_V2_NormalCompletion)  	{  	  DAC960_V2_LogicalDeviceInfo_T *NewLogicalDeviceInfo = @@ -5065,7 +5067,7 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)  			 [LogicalDeviceNumber] = true;  	  NewLogicalDeviceInfo->LogicalDeviceNumber++;  	} -      else if (CommandOpcode == DAC960_V2_GetLogicalDeviceInfoValid) +      else if (IOCTLOpcode == DAC960_V2_GetLogicalDeviceInfoValid)  	{  	  int LogicalDriveNumber;  	  for (LogicalDriveNumber = 0; diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c index e7472f567c9d..3fb6ab4c8b4e 100644 --- a/drivers/block/sx8.c +++ b/drivers/block/sx8.c @@ -1120,7 +1120,7 @@ static inline void carm_handle_resp(struct carm_host *host,  			break;  		case MISC_GET_FW_VER: {  			struct carm_fw_ver *ver = (struct carm_fw_ver *) -				mem + sizeof(struct carm_msg_get_fw_ver); +				(mem + sizeof(struct carm_msg_get_fw_ver));  			if (!error) {  				host->fw_ver = le32_to_cpu(ver->version);  				host->flags |= (ver->features & FL_FW_VER_MASK); diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c index 618bd4d87d28..99d5527b2ca6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c @@ -54,14 +54,14 @@ convert_to_display_mode(struct drm_display_mode *mode,  	mode->vrefresh = timing->refresh;  	mode->hdisplay = timing->xres; -	mode->hsync_start = mode->hdisplay + timing->left_margin; +	mode->hsync_start = mode->hdisplay + timing->right_margin;  	mode->hsync_end = mode->hsync_start + timing->hsync_len; -	mode->htotal = mode->hsync_end + timing->right_margin; +	mode->htotal = mode->hsync_end + timing->left_margin;  	mode->vdisplay = timing->yres; -	mode->vsync_start = mode->vdisplay + timing->upper_margin; +	mode->vsync_start = mode->vdisplay + timing->lower_margin;  	mode->vsync_end = mode->vsync_start + timing->vsync_len; -	mode->vtotal = mode->vsync_end + timing->lower_margin; +	mode->vtotal = mode->vsync_end + timing->upper_margin;  	mode->width_mm = panel->width_mm;  	mode->height_mm = panel->height_mm; @@ -85,14 +85,14 @@ convert_to_video_timing(struct fb_videomode *timing,  	timing->refresh = drm_mode_vrefresh(mode);  	timing->xres = mode->hdisplay; -	timing->left_margin = mode->hsync_start - mode->hdisplay; +	timing->right_margin = mode->hsync_start - mode->hdisplay;  	timing->hsync_len = mode->hsync_end - mode->hsync_start; -	timing->right_margin = mode->htotal - mode->hsync_end; +	timing->left_margin = mode->htotal - mode->hsync_end;  	timing->yres = mode->vdisplay; -	timing->upper_margin = mode->vsync_start - mode->vdisplay; +	timing->lower_margin = mode->vsync_start - mode->vdisplay;  	timing->vsync_len = mode->vsync_end - mode->vsync_start; -	timing->lower_margin = mode->vtotal - mode->vsync_end; +	timing->upper_margin = mode->vtotal - mode->vsync_end;  	if (mode->flags & DRM_MODE_FLAG_INTERLACE)  		timing->vmode = FB_VMODE_INTERLACED; diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 58820ebd3558..09cc13f791b3 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -246,7 +246,7 @@ static struct platform_driver exynos_drm_platform_driver = {  	.remove		= __devexit_p(exynos_drm_platform_remove),  	.driver		= {  		.owner	= THIS_MODULE, -		.name	= DRIVER_NAME, +		.name	= "exynos-drm",  	},  }; diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 3508700e529b..54f8f074822f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -46,39 +46,13 @@ struct exynos_drm_fbdev {  	struct exynos_drm_gem_obj	*exynos_gem_obj;  }; -static int exynos_drm_fbdev_set_par(struct fb_info *info) -{ -	struct fb_var_screeninfo *var = &info->var; - -	switch (var->bits_per_pixel) { -	case 32: -	case 24: -	case 18: -	case 16: -	case 12: -		info->fix.visual = FB_VISUAL_TRUECOLOR; -		break; -	case 1: -		info->fix.visual = FB_VISUAL_MONO01; -		break; -	default: -		info->fix.visual = FB_VISUAL_PSEUDOCOLOR; -		break; -	} - -	info->fix.line_length = (var->xres_virtual * var->bits_per_pixel) / 8; - -	return drm_fb_helper_set_par(info); -} - -  static struct fb_ops exynos_drm_fb_ops = {  	.owner		= THIS_MODULE,  	.fb_fillrect	= cfb_fillrect,  	.fb_copyarea	= cfb_copyarea,  	.fb_imageblit	= cfb_imageblit,  	.fb_check_var	= drm_fb_helper_check_var, -	.fb_set_par	= exynos_drm_fbdev_set_par, +	.fb_set_par	= drm_fb_helper_set_par,  	.fb_blank	= drm_fb_helper_blank,  	.fb_pan_display	= drm_fb_helper_pan_display,  	.fb_setcmap	= drm_fb_helper_setcmap, diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 360adf2bba04..56458eea0501 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -817,8 +817,6 @@ static int __devinit fimd_probe(struct platform_device *pdev)  		goto err_clk_get;  	} -	clk_enable(ctx->bus_clk); -  	ctx->lcd_clk = clk_get(dev, "sclk_fimd");  	if (IS_ERR(ctx->lcd_clk)) {  		dev_err(dev, "failed to get lcd clock\n"); @@ -826,8 +824,6 @@ static int __devinit fimd_probe(struct platform_device *pdev)  		goto err_bus_clk;  	} -	clk_enable(ctx->lcd_clk); -  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	if (!res) {  		dev_err(dev, "failed to find registers\n"); @@ -864,17 +860,11 @@ static int __devinit fimd_probe(struct platform_device *pdev)  		goto err_req_irq;  	} -	ctx->clkdiv = fimd_calc_clkdiv(ctx, &panel->timing);  	ctx->vidcon0 = pdata->vidcon0;  	ctx->vidcon1 = pdata->vidcon1;  	ctx->default_win = pdata->default_win;  	ctx->panel = panel; -	panel->timing.pixclock = clk_get_rate(ctx->lcd_clk) / ctx->clkdiv; - -	DRM_DEBUG_KMS("pixel clock = %d, clkdiv = %d\n", -			panel->timing.pixclock, ctx->clkdiv); -  	subdrv = &ctx->subdrv;  	subdrv->probe = fimd_subdrv_probe; @@ -889,10 +879,15 @@ static int __devinit fimd_probe(struct platform_device *pdev)  	platform_set_drvdata(pdev, ctx); -	pm_runtime_set_active(dev);  	pm_runtime_enable(dev);  	pm_runtime_get_sync(dev); +	ctx->clkdiv = fimd_calc_clkdiv(ctx, &panel->timing); +	panel->timing.pixclock = clk_get_rate(ctx->lcd_clk) / ctx->clkdiv; + +	DRM_DEBUG_KMS("pixel clock = %d, clkdiv = %d\n", +			panel->timing.pixclock, ctx->clkdiv); +  	for (win = 0; win < WINDOWS_NR; win++)  		fimd_clear_win(ctx, win); diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 03c53fcf8653..558ac716a328 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -2689,7 +2689,7 @@  #define   DVS_FORMAT_RGBX888	(2<<25)  #define   DVS_FORMAT_RGBX161616	(3<<25)  #define   DVS_SOURCE_KEY	(1<<22) -#define   DVS_RGB_ORDER_RGBX	(1<<20) +#define   DVS_RGB_ORDER_XBGR	(1<<20)  #define   DVS_YUV_BYTE_ORDER_MASK (3<<16)  #define   DVS_YUV_ORDER_YUYV	(0<<16)  #define   DVS_YUV_ORDER_UYVY	(1<<16) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f851db7be2cc..397087cf689e 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -7828,6 +7828,7 @@ int intel_framebuffer_init(struct drm_device *dev,  	case DRM_FORMAT_RGB332:  	case DRM_FORMAT_RGB565:  	case DRM_FORMAT_XRGB8888: +	case DRM_FORMAT_XBGR8888:  	case DRM_FORMAT_ARGB8888:  	case DRM_FORMAT_XRGB2101010:  	case DRM_FORMAT_ARGB2101010: diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 2288abf88cce..a0835040c86b 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c @@ -225,16 +225,16 @@ snb_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb,  	/* Mask out pixel format bits in case we change it */  	dvscntr &= ~DVS_PIXFORMAT_MASK; -	dvscntr &= ~DVS_RGB_ORDER_RGBX; +	dvscntr &= ~DVS_RGB_ORDER_XBGR;  	dvscntr &= ~DVS_YUV_BYTE_ORDER_MASK;  	switch (fb->pixel_format) {  	case DRM_FORMAT_XBGR8888: -		dvscntr |= DVS_FORMAT_RGBX888; +		dvscntr |= DVS_FORMAT_RGBX888 | DVS_RGB_ORDER_XBGR;  		pixel_size = 4;  		break;  	case DRM_FORMAT_XRGB8888: -		dvscntr |= DVS_FORMAT_RGBX888 | DVS_RGB_ORDER_RGBX; +		dvscntr |= DVS_FORMAT_RGBX888;  		pixel_size = 4;  		break;  	case DRM_FORMAT_YUYV: diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c index 880b90cf4d32..e3e8420b7b81 100644 --- a/drivers/hwmon/pmbus/zl6100.c +++ b/drivers/hwmon/pmbus/zl6100.c @@ -200,17 +200,11 @@ static int zl6100_probe(struct i2c_client *client,  	data->id = mid->driver_data;  	/* -	 * ZL2005, ZL2008, ZL2105, and ZL6100 are known to require a wait time -	 * between I2C accesses. ZL2004 and ZL6105 are known to be safe. -	 * Other chips have not yet been tested. -	 * -	 * Only clear the wait time for chips known to be safe. The wait time -	 * can be cleared later for additional chips if tests show that it -	 * is not needed (in other words, better be safe than sorry). +	 * According to information from the chip vendor, all currently +	 * supported chips are known to require a wait time between I2C +	 * accesses.  	 */  	data->delay = delay; -	if (data->id == zl2004 || data->id == zl6105) -		data->delay = 0;  	/*  	 * Since there was a direct I2C device access above, wait before diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c index 5276d1933dbc..a658d62c5e10 100644 --- a/drivers/hwmon/w83627ehf.c +++ b/drivers/hwmon/w83627ehf.c @@ -39,7 +39,7 @@  					       0x8860 0xa1      w83627dhg    9      5       4       3      0xa020 0xc1    0x5ca3      w83627dhg-p  9      5       4       3      0xb070 0xc1    0x5ca3 -    w83627uhg    8      2       2       2      0xa230 0xc1    0x5ca3 +    w83627uhg    8      2       2       3      0xa230 0xc1    0x5ca3      w83667hg     9      5       3       3      0xa510 0xc1    0x5ca3      w83667hg-b   9      5       3       4      0xb350 0xc1    0x5ca3      nct6775f     9      4       3       9      0xb470 0xc1    0x5ca3 @@ -1607,7 +1607,7 @@ store_##reg(struct device *dev, struct device_attribute *attr, \  	val = step_time_to_reg(val, data->pwm_mode[nr]); \  	mutex_lock(&data->update_lock); \  	data->reg[nr] = val; \ -	w83627ehf_write_value(data, W83627EHF_REG_##REG[nr], val); \ +	w83627ehf_write_value(data, data->REG_##REG[nr], val); \  	mutex_unlock(&data->update_lock); \  	return count; \  } \ @@ -2004,7 +2004,8 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)  		goto exit;  	} -	data = kzalloc(sizeof(struct w83627ehf_data), GFP_KERNEL); +	data = devm_kzalloc(&pdev->dev, sizeof(struct w83627ehf_data), +			    GFP_KERNEL);  	if (!data) {  		err = -ENOMEM;  		goto exit_release; @@ -2157,16 +2158,16 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)  		w83627ehf_set_temp_reg_ehf(data, 3);  		/* -		 * Temperature sources for temp1 and temp2 are selected with +		 * Temperature sources for temp2 and temp3 are selected with  		 * bank 0, registers 0x49 and 0x4a.  		 */  		data->temp_src[0] = 0;	/* SYSTIN */  		reg = w83627ehf_read_value(data, 0x49) & 0x07;  		/* Adjust to have the same mapping as other source registers */  		if (reg == 0) -			data->temp_src[1]++; +			data->temp_src[1] = 1;  		else if (reg >= 2 && reg <= 5) -			data->temp_src[1] += 2; +			data->temp_src[1] = reg + 2;  		else	/* should never happen */  			data->have_temp &= ~(1 << 1);  		reg = w83627ehf_read_value(data, 0x4a); @@ -2493,9 +2494,8 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)  exit_remove:  	w83627ehf_device_remove_files(dev); -	kfree(data); -	platform_set_drvdata(pdev, NULL);  exit_release: +	platform_set_drvdata(pdev, NULL);  	release_region(res->start, IOREGION_LENGTH);  exit:  	return err; @@ -2509,7 +2509,6 @@ static int __devexit w83627ehf_remove(struct platform_device *pdev)  	w83627ehf_device_remove_files(&pdev->dev);  	release_region(data->addr, IOREGION_LENGTH);  	platform_set_drvdata(pdev, NULL); -	kfree(data);  	return 0;  } diff --git a/drivers/i2c/algos/i2c-algo-bit.c b/drivers/i2c/algos/i2c-algo-bit.c index 525c7345fa0b..24f94f4ae395 100644 --- a/drivers/i2c/algos/i2c-algo-bit.c +++ b/drivers/i2c/algos/i2c-algo-bit.c @@ -103,8 +103,14 @@ static int sclhi(struct i2c_algo_bit_data *adap)  		 * chips may hold it low ("clock stretching") while they  		 * are processing data internally.  		 */ -		if (time_after(jiffies, start + adap->timeout)) +		if (time_after(jiffies, start + adap->timeout)) { +			/* Test one last time, as we may have been preempted +			 * between last check and timeout test. +			 */ +			if (getscl(adap)) +				break;  			return -ETIMEDOUT; +		}  		cond_resched();  	}  #ifdef DEBUG diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 1e5606185b4f..e9c18939eda7 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -1386,8 +1386,10 @@ int i2c_master_send(const struct i2c_client *client, const char *buf, int count)  	ret = i2c_transfer(adap, &msg, 1); -	/* If everything went ok (i.e. 1 msg transmitted), return #bytes -	   transmitted, else error code. */ +	/* +	 * If everything went ok (i.e. 1 msg transmitted), return #bytes +	 * transmitted, else error code. +	 */  	return (ret == 1) ? count : ret;  }  EXPORT_SYMBOL(i2c_master_send); @@ -1414,8 +1416,10 @@ int i2c_master_recv(const struct i2c_client *client, char *buf, int count)  	ret = i2c_transfer(adap, &msg, 1); -	/* If everything went ok (i.e. 1 msg transmitted), return #bytes -	   transmitted, else error code. */ +	/* +	 * If everything went ok (i.e. 1 msg received), return #bytes received, +	 * else error code. +	 */  	return (ret == 1) ? count : ret;  }  EXPORT_SYMBOL(i2c_master_recv); diff --git a/drivers/media/dvb/siano/smsdvb.c b/drivers/media/dvb/siano/smsdvb.c index 654685c9303e..aa77e54a8fae 100644 --- a/drivers/media/dvb/siano/smsdvb.c +++ b/drivers/media/dvb/siano/smsdvb.c @@ -49,9 +49,6 @@ struct smsdvb_client_t {  	struct completion       tune_done; -	/* todo: save freq/band instead whole struct */ -	struct dtv_frontend_properties fe_params; -  	struct SMSHOSTLIB_STATISTICS_DVB_S sms_stat_dvb;  	int event_fe_state;  	int event_unc_state; @@ -744,12 +741,124 @@ static int smsdvb_get_frontend(struct dvb_frontend *fe)  	struct dtv_frontend_properties *fep = &fe->dtv_property_cache;  	struct smsdvb_client_t *client =  		container_of(fe, struct smsdvb_client_t, frontend); +	struct smscore_device_t *coredev = client->coredev; +	struct TRANSMISSION_STATISTICS_S *td = +		&client->sms_stat_dvb.TransmissionData; -	sms_debug(""); +	switch (smscore_get_device_mode(coredev)) { +	case DEVICE_MODE_DVBT: +	case DEVICE_MODE_DVBT_BDA: +		fep->frequency = td->Frequency; + +		switch (td->Bandwidth) { +		case 6: +			fep->bandwidth_hz = 6000000; +			break; +		case 7: +			fep->bandwidth_hz = 7000000; +			break; +		case 8: +			fep->bandwidth_hz = 8000000; +			break; +		} + +		switch (td->TransmissionMode) { +		case 2: +			fep->transmission_mode = TRANSMISSION_MODE_2K; +			break; +		case 8: +			fep->transmission_mode = TRANSMISSION_MODE_8K; +		} + +		switch (td->GuardInterval) { +		case 0: +			fep->guard_interval = GUARD_INTERVAL_1_32; +			break; +		case 1: +			fep->guard_interval = GUARD_INTERVAL_1_16; +			break; +		case 2: +			fep->guard_interval = GUARD_INTERVAL_1_8; +			break; +		case 3: +			fep->guard_interval = GUARD_INTERVAL_1_4; +			break; +		} + +		switch (td->CodeRate) { +		case 0: +			fep->code_rate_HP = FEC_1_2; +			break; +		case 1: +			fep->code_rate_HP = FEC_2_3; +			break; +		case 2: +			fep->code_rate_HP = FEC_3_4; +			break; +		case 3: +			fep->code_rate_HP = FEC_5_6; +			break; +		case 4: +			fep->code_rate_HP = FEC_7_8; +			break; +		} + +		switch (td->LPCodeRate) { +		case 0: +			fep->code_rate_LP = FEC_1_2; +			break; +		case 1: +			fep->code_rate_LP = FEC_2_3; +			break; +		case 2: +			fep->code_rate_LP = FEC_3_4; +			break; +		case 3: +			fep->code_rate_LP = FEC_5_6; +			break; +		case 4: +			fep->code_rate_LP = FEC_7_8; +			break; +		} + +		switch (td->Constellation) { +		case 0: +			fep->modulation = QPSK; +			break; +		case 1: +			fep->modulation = QAM_16; +			break; +		case 2: +			fep->modulation = QAM_64; +			break; +		} + +		switch (td->Hierarchy) { +		case 0: +			fep->hierarchy = HIERARCHY_NONE; +			break; +		case 1: +			fep->hierarchy = HIERARCHY_1; +			break; +		case 2: +			fep->hierarchy = HIERARCHY_2; +			break; +		case 3: +			fep->hierarchy = HIERARCHY_4; +			break; +		} -	/* todo: */ -	memcpy(fep, &client->fe_params, -	       sizeof(struct dtv_frontend_properties)); +		fep->inversion = INVERSION_AUTO; +		break; +	case DEVICE_MODE_ISDBT: +	case DEVICE_MODE_ISDBT_BDA: +		fep->frequency = td->Frequency; +		fep->bandwidth_hz = 6000000; +		/* todo: retrive the other parameters */ +		break; +	default: +		return -EINVAL; +	}  	return 0;  } @@ -872,11 +981,11 @@ static int smsdvb_hotplug(struct smscore_device_t *coredev,  	switch (smscore_get_device_mode(coredev)) {  	case DEVICE_MODE_DVBT:  	case DEVICE_MODE_DVBT_BDA: -		smsdvb_fe_ops.delsys[0] = SYS_DVBT; +		client->frontend.ops.delsys[0] = SYS_DVBT;  		break;  	case DEVICE_MODE_ISDBT:  	case DEVICE_MODE_ISDBT_BDA: -		smsdvb_fe_ops.delsys[0] = SYS_ISDBT; +		client->frontend.ops.delsys[0] = SYS_ISDBT;  		break;  	} diff --git a/drivers/media/video/davinci/isif.c b/drivers/media/video/davinci/isif.c index 1e63852374be..5278fe7d6d0c 100644 --- a/drivers/media/video/davinci/isif.c +++ b/drivers/media/video/davinci/isif.c @@ -34,6 +34,7 @@  #include <linux/videodev2.h>  #include <linux/clk.h>  #include <linux/err.h> +#include <linux/module.h>  #include <mach/mux.h> diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c index c7e69b8f81c9..4a44f9a1bae0 100644 --- a/drivers/media/video/uvc/uvc_video.c +++ b/drivers/media/video/uvc/uvc_video.c @@ -611,9 +611,11 @@ void uvc_video_clock_update(struct uvc_streaming *stream,  	delta_stc = buf->pts - (1UL << 31);  	x1 = first->dev_stc - delta_stc;  	x2 = last->dev_stc - delta_stc; +	if (x1 == x2) +		goto done; +  	y1 = (first->dev_sof + 2048) << 16;  	y2 = (last->dev_sof + 2048) << 16; -  	if (y2 < y1)  		y2 += 2048 << 16; @@ -631,14 +633,16 @@ void uvc_video_clock_update(struct uvc_streaming *stream,  		  x1, x2, y1, y2, clock->sof_offset);  	/* Second step, SOF to host clock conversion. */ -	ts = timespec_sub(last->host_ts, first->host_ts);  	x1 = (uvc_video_clock_host_sof(first) + 2048) << 16;  	x2 = (uvc_video_clock_host_sof(last) + 2048) << 16; -	y1 = NSEC_PER_SEC; -	y2 = (ts.tv_sec + 1) * NSEC_PER_SEC + ts.tv_nsec; -  	if (x2 < x1)  		x2 += 2048 << 16; +	if (x1 == x2) +		goto done; + +	ts = timespec_sub(last->host_ts, first->host_ts); +	y1 = NSEC_PER_SEC; +	y2 = (ts.tv_sec + 1) * NSEC_PER_SEC + ts.tv_nsec;  	/* Interpolated and host SOF timestamps can wrap around at slightly  	 * different times. Handle this by adding or removing 2048 to or from diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index c11e50d328c4..b814f4eaed19 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -1992,7 +1992,7 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)  	}  	if (bp->port.pmf) -		bnx2x_update_drv_flags(bp, DRV_FLAGS_DCB_CONFIGURED, 0); +		bnx2x_update_drv_flags(bp, 1 << DRV_FLAGS_DCB_CONFIGURED, 0);  	else  		bnx2x__link_status_update(bp); diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h index cc02ae51a30d..5904b1b1dad4 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h @@ -1181,10 +1181,16 @@ static inline int bnx2x_alloc_rx_bds(struct bnx2x_fastpath *fp,   */  static inline u8 bnx2x_stats_id(struct bnx2x_fastpath *fp)  { -	if (!CHIP_IS_E1x(fp->bp)) +	struct bnx2x *bp = fp->bp; +	if (!CHIP_IS_E1x(bp)) { +#ifdef BCM_CNIC +		/* there are special statistics counters for FCoE 136..140 */ +		if (IS_FCOE_FP(fp)) +			return bp->cnic_base_cl_id + (bp->pf_num >> 1); +#endif  		return fp->cl_id; -	else -		return fp->cl_id + BP_PORT(fp->bp) * FP_SB_MAX_E1x; +	} +	return fp->cl_id + BP_PORT(bp) * FP_SB_MAX_E1x;  }  static inline void bnx2x_init_vlan_mac_fp_objs(struct bnx2x_fastpath *fp, diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c index 9a4ed05bb30a..4446a42e8bdc 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c @@ -735,7 +735,9 @@ void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)  						 bp->dcbx_error);  			/* mark DCBX result for PMF migration */ -			bnx2x_update_drv_flags(bp, DRV_FLAGS_DCB_CONFIGURED, 1); +			bnx2x_update_drv_flags(bp, +					       1 << DRV_FLAGS_DCB_CONFIGURED, +					       1);  #ifdef BCM_DCBNL  			/*  			 * Add new app tlvs to dcbnl @@ -1020,7 +1022,7 @@ void bnx2x_dcbx_init(struct bnx2x *bp)  		DP(NETIF_MSG_LINK, "dcbx_lldp_params_offset 0x%x\n",  		   dcbx_lldp_params_offset); -		bnx2x_update_drv_flags(bp, DRV_FLAGS_DCB_CONFIGURED, 0); +		bnx2x_update_drv_flags(bp, 1 << DRV_FLAGS_DCB_CONFIGURED, 0);  		if (SHMEM_LLDP_DCBX_PARAMS_NONE != dcbx_lldp_params_offset) {  			bnx2x_dcbx_admin_mib_updated_params(bp, @@ -1857,7 +1859,7 @@ void bnx2x_dcbx_pmf_update(struct bnx2x *bp)  	 * read it from shmem and update bp and netdev accordingly  	 */  	if (SHMEM2_HAS(bp, drv_flags) && -	   GET_FLAGS(SHMEM2_RD(bp, drv_flags), DRV_FLAGS_DCB_CONFIGURED)) { +	   GET_FLAGS(SHMEM2_RD(bp, drv_flags), 1 << DRV_FLAGS_DCB_CONFIGURED)) {  		/* Read neg results if dcbx is in the FW */  		if (bnx2x_dcbx_read_shmem_neg_results(bp))  			return; diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index bf14a08f0796..a743a5fcb22c 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -10907,38 +10907,36 @@ do {									\  int bnx2x_init_firmware(struct bnx2x *bp)  { +	const char *fw_file_name;  	struct bnx2x_fw_file_hdr *fw_hdr;  	int rc; +	if (bp->firmware) +		return 0; -	if (!bp->firmware) { -		const char *fw_file_name; - -		if (CHIP_IS_E1(bp)) -			fw_file_name = FW_FILE_NAME_E1; -		else if (CHIP_IS_E1H(bp)) -			fw_file_name = FW_FILE_NAME_E1H; -		else if (!CHIP_IS_E1x(bp)) -			fw_file_name = FW_FILE_NAME_E2; -		else { -			BNX2X_ERR("Unsupported chip revision\n"); -			return -EINVAL; -		} -		BNX2X_DEV_INFO("Loading %s\n", fw_file_name); +	if (CHIP_IS_E1(bp)) +		fw_file_name = FW_FILE_NAME_E1; +	else if (CHIP_IS_E1H(bp)) +		fw_file_name = FW_FILE_NAME_E1H; +	else if (!CHIP_IS_E1x(bp)) +		fw_file_name = FW_FILE_NAME_E2; +	else { +		BNX2X_ERR("Unsupported chip revision\n"); +		return -EINVAL; +	} +	BNX2X_DEV_INFO("Loading %s\n", fw_file_name); -		rc = request_firmware(&bp->firmware, fw_file_name, -				      &bp->pdev->dev); -		if (rc) { -			BNX2X_ERR("Can't load firmware file %s\n", -				  fw_file_name); -			goto request_firmware_exit; -		} +	rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev); +	if (rc) { +		BNX2X_ERR("Can't load firmware file %s\n", +			  fw_file_name); +		goto request_firmware_exit; +	} -		rc = bnx2x_check_firmware(bp); -		if (rc) { -			BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name); -			goto request_firmware_exit; -		} +	rc = bnx2x_check_firmware(bp); +	if (rc) { +		BNX2X_ERR("Corrupt firmware file %s\n", fw_file_name); +		goto request_firmware_exit;  	}  	fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data; @@ -10984,6 +10982,7 @@ init_ops_alloc_err:  	kfree(bp->init_data);  request_firmware_exit:  	release_firmware(bp->firmware); +	bp->firmware = NULL;  	return rc;  } diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c index 1999fa58704d..484498f6bf1e 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c @@ -5591,7 +5591,7 @@ static inline int bnx2x_func_send_start(struct bnx2x *bp,  	/* Fill the ramrod data with provided parameters */  	rdata->function_mode = cpu_to_le16(start_params->mf_mode); -	rdata->sd_vlan_tag   = start_params->sd_vlan_tag; +	rdata->sd_vlan_tag   = cpu_to_le16(start_params->sd_vlan_tag);  	rdata->path_id       = BP_PATH(bp);  	rdata->network_cos_mode = start_params->network_cos_mode; diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c index 14c961beaadb..4cd4f127fe79 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c @@ -554,23 +554,11 @@ static void bnx2x_bmac_stats_update(struct bnx2x *bp)  		UPDATE_STAT64(tx_stat_gtufl, tx_stat_mac_ufl);  		/* collect PFC stats */ -		DIFF_64(diff.hi, new->tx_stat_gtpp_hi, -			pstats->pfc_frames_tx_hi, -			diff.lo, new->tx_stat_gtpp_lo, -			pstats->pfc_frames_tx_lo);  		pstats->pfc_frames_tx_hi = new->tx_stat_gtpp_hi;  		pstats->pfc_frames_tx_lo = new->tx_stat_gtpp_lo; -		ADD_64(pstats->pfc_frames_tx_hi, diff.hi, -			pstats->pfc_frames_tx_lo, diff.lo); -		DIFF_64(diff.hi, new->rx_stat_grpp_hi, -			pstats->pfc_frames_rx_hi, -			diff.lo, new->rx_stat_grpp_lo, -			pstats->pfc_frames_rx_lo);  		pstats->pfc_frames_rx_hi = new->rx_stat_grpp_hi;  		pstats->pfc_frames_rx_lo = new->rx_stat_grpp_lo; -		ADD_64(pstats->pfc_frames_rx_hi, diff.hi, -			pstats->pfc_frames_rx_lo, diff.lo);  	}  	estats->pause_frames_received_hi = diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 0f8e8344891b..2517d209d602 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -167,7 +167,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)  		dev_kfree_skb(skb);  		net->stats.tx_dropped++; -		return NETDEV_TX_BUSY; +		return NETDEV_TX_OK;  	}  	packet->vlan_tci = skb->vlan_tci; @@ -229,7 +229,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)  		dev_kfree_skb_any(skb);  	} -	return ret ? NETDEV_TX_BUSY : NETDEV_TX_OK; +	return NETDEV_TX_OK;  }  /* diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 2c5d34957c57..74d7f76d14a3 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -359,7 +359,7 @@ static void tun_free_netdev(struct net_device *dev)  {  	struct tun_struct *tun = netdev_priv(dev); -	sock_put(tun->socket.sk); +	sk_release_kernel(tun->socket.sk);  }  /* Net device open. */ @@ -980,10 +980,18 @@ static int tun_recvmsg(struct kiocb *iocb, struct socket *sock,  	return ret;  } +static int tun_release(struct socket *sock) +{ +	if (sock->sk) +		sock_put(sock->sk); +	return 0; +} +  /* Ops structure to mimic raw sockets with tun */  static const struct proto_ops tun_socket_ops = {  	.sendmsg = tun_sendmsg,  	.recvmsg = tun_recvmsg, +	.release = tun_release,  };  static struct proto tun_proto = { @@ -1110,10 +1118,11 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)  		tun->vnet_hdr_sz = sizeof(struct virtio_net_hdr);  		err = -ENOMEM; -		sk = sk_alloc(net, AF_UNSPEC, GFP_KERNEL, &tun_proto); +		sk = sk_alloc(&init_net, AF_UNSPEC, GFP_KERNEL, &tun_proto);  		if (!sk)  			goto err_free_dev; +		sk_change_net(sk, net);  		tun->socket.wq = &tun->wq;  		init_waitqueue_head(&tun->wq.wait);  		tun->socket.ops = &tun_socket_ops; @@ -1174,7 +1183,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)  	return 0;   err_free_sk: -	sock_put(sk); +	tun_free_netdev(dev);   err_free_dev:  	free_netdev(dev);   failed: diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c index 25fe1838d886..5ee032cafade 100644 --- a/drivers/net/usb/asix.c +++ b/drivers/net/usb/asix.c @@ -1551,6 +1551,10 @@ static const struct usb_device_id	products [] = {  	USB_DEVICE (0x6189, 0x182d),  	.driver_info =  (unsigned long) &ax8817x_info,  }, { +	// Sitecom LN-031 "USB 2.0 10/100/1000 Ethernet adapter" +	USB_DEVICE (0x0df6, 0x0056), +	.driver_info =  (unsigned long) &ax88178_info, +}, {  	// corega FEther USB2-TX  	USB_DEVICE (0x07aa, 0x0017),  	.driver_info =  (unsigned long) &ax8817x_info, diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 5394b4eb00b0..4b8b52ca09d8 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -328,13 +328,13 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)  	unsigned long		lockflags;  	size_t			size = dev->rx_urb_size; -	if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) { +	skb = __netdev_alloc_skb_ip_align(dev->net, size, flags); +	if (!skb) {  		netif_dbg(dev, rx_err, dev->net, "no rx skb\n");  		usbnet_defer_kevent (dev, EVENT_RX_MEMORY);  		usb_free_urb (urb);  		return -ENOMEM;  	} -	skb_reserve (skb, NET_IP_ALIGN);  	entry = (struct skb_data *) skb->cb;  	entry->urb = urb; diff --git a/drivers/net/wimax/i2400m/netdev.c b/drivers/net/wimax/i2400m/netdev.c index 64a110604ad3..63e4b709efa9 100644 --- a/drivers/net/wimax/i2400m/netdev.c +++ b/drivers/net/wimax/i2400m/netdev.c @@ -367,38 +367,28 @@ netdev_tx_t i2400m_hard_start_xmit(struct sk_buff *skb,  {  	struct i2400m *i2400m = net_dev_to_i2400m(net_dev);  	struct device *dev = i2400m_dev(i2400m); -	int result; +	int result = -1;  	d_fnstart(3, dev, "(skb %p net_dev %p)\n", skb, net_dev); -	if (skb_header_cloned(skb)) { -		/* -		 * Make tcpdump/wireshark happy -- if they are -		 * running, the skb is cloned and we will overwrite -		 * the mac fields in i2400m_tx_prep_header. Expand -		 * seems to fix this... -		 */ -		result = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); -		if (result) { -			result = NETDEV_TX_BUSY; -			goto error_expand; -		} -	} + +	if (skb_header_cloned(skb) &&  +	    pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) +		goto drop;  	if (i2400m->state == I2400M_SS_IDLE)  		result = i2400m_net_wake_tx(i2400m, net_dev, skb);  	else  		result = i2400m_net_tx(i2400m, net_dev, skb); -	if (result <  0) +	if (result <  0) { +drop:  		net_dev->stats.tx_dropped++; -	else { +	} else {  		net_dev->stats.tx_packets++;  		net_dev->stats.tx_bytes += skb->len;  	} -	result = NETDEV_TX_OK; -error_expand: -	kfree_skb(skb); +	dev_kfree_skb(skb);  	d_fnend(3, dev, "(skb %p net_dev %p) = %d\n", skb, net_dev, result); -	return result; +	return NETDEV_TX_OK;  } diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c index 0ccc934a35bb..0c1209390169 100644 --- a/drivers/net/wireless/iwlegacy/3945-mac.c +++ b/drivers/net/wireless/iwlegacy/3945-mac.c @@ -2466,7 +2466,7 @@ il3945_bg_alive_start(struct work_struct *data)  	    container_of(data, struct il_priv, alive_start.work);  	mutex_lock(&il->mutex); -	if (test_bit(S_EXIT_PENDING, &il->status)) +	if (test_bit(S_EXIT_PENDING, &il->status) || il->txq == NULL)  		goto out;  	il3945_alive_start(il); diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c index 456f32da6b26..c5b1d199e0bc 100644 --- a/drivers/net/wireless/iwlegacy/3945.c +++ b/drivers/net/wireless/iwlegacy/3945.c @@ -1855,11 +1855,12 @@ il3945_bg_reg_txpower_periodic(struct work_struct *work)  	struct il_priv *il = container_of(work, struct il_priv,  					  _3945.thermal_periodic.work); -	if (test_bit(S_EXIT_PENDING, &il->status)) -		return; -  	mutex_lock(&il->mutex); +	if (test_bit(S_EXIT_PENDING, &il->status) || il->txq == NULL) +		goto out; +  	il3945_reg_txpower_periodic(il); +out:  	mutex_unlock(&il->mutex);  } diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index cffcf2ec990f..fc9901e027c1 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -430,10 +430,14 @@ void rt2x00lib_txdone(struct queue_entry *entry,  	/*  	 * If the data queue was below the threshold before the txdone  	 * handler we must make sure the packet queue in the mac80211 stack -	 * is reenabled when the txdone handler has finished. +	 * is reenabled when the txdone handler has finished. This has to be +	 * serialized with rt2x00mac_tx(), otherwise we can wake up queue +	 * before it was stopped.  	 */ +	spin_lock_bh(&entry->queue->tx_lock);  	if (!rt2x00queue_threshold(entry->queue))  		rt2x00queue_unpause_queue(entry->queue); +	spin_unlock_bh(&entry->queue->tx_lock);  }  EXPORT_SYMBOL_GPL(rt2x00lib_txdone); diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index ede3c58e6783..2df2eb6d3e06 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c @@ -152,13 +152,22 @@ void rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)  	if (unlikely(rt2x00queue_write_tx_frame(queue, skb, false)))  		goto exit_fail; +	/* +	 * Pausing queue has to be serialized with rt2x00lib_txdone(). Note +	 * we should not use spin_lock_bh variant as bottom halve was already +	 * disabled before ieee80211_xmit() call. +	 */ +	spin_lock(&queue->tx_lock);  	if (rt2x00queue_threshold(queue))  		rt2x00queue_pause_queue(queue); +	spin_unlock(&queue->tx_lock);  	return;   exit_fail: +	spin_lock(&queue->tx_lock);  	rt2x00queue_pause_queue(queue); +	spin_unlock(&queue->tx_lock);   exit_free_skb:  	ieee80211_free_txskb(hw, skb);  } diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index 5adfb3eab9cd..9b1b2b7a7807 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -619,6 +619,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,  	else if (test_bit(REQUIRE_DMA, &queue->rt2x00dev->cap_flags))  		rt2x00queue_align_frame(skb); +	/* +	 * That function must be called with bh disabled. +	 */  	spin_lock(&queue->tx_lock);  	if (unlikely(rt2x00queue_full(queue))) { diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 1cfbf228fbb1..24f049e73952 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -500,6 +500,9 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)  	int pos;  	u32 reg32; +	if (aspm_disabled) +		return 0; +  	/*  	 * Some functions in a slot might not all be PCIe functions,  	 * very strange. Disable ASPM for the whole slot diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index f995e6e2f78c..15dbd8cc445f 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig @@ -143,6 +143,30 @@ config FUJITSU_LAPTOP_DEBUG  	  If you are not sure, say N here. +config FUJITSU_TABLET +       tristate "Fujitsu Tablet Extras" +       depends on ACPI +       depends on INPUT +       ---help--- +         This is a driver for tablets built by Fujitsu: + +           * Lifebook P1510/P1610/P1620/Txxxx +           * Stylistic ST5xxx +           * Possibly other Fujitsu tablet models + +         It adds support for the panel buttons, docking station detection, +         tablet/notebook mode detection for convertible and +         orientation detection for docked slates. + +         If you have a Fujitsu convertible or slate, say Y or M here. + +config AMILO_RFKILL +	tristate "Fujitsu-Siemens Amilo rfkill support" +	depends on RFKILL +	---help--- +	  This is a driver for enabling wifi on some Fujitsu-Siemens Amilo +	  laptops. +  config TC1100_WMI  	tristate "HP Compaq TC1100 Tablet WMI Extras (EXPERIMENTAL)"  	depends on !X86_64 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile index 293a320d9faa..d328f21e9fdd 100644 --- a/drivers/platform/x86/Makefile +++ b/drivers/platform/x86/Makefile @@ -17,12 +17,14 @@ obj-$(CONFIG_ACER_WMI)		+= acer-wmi.o  obj-$(CONFIG_ACERHDF)		+= acerhdf.o  obj-$(CONFIG_HP_ACCEL)		+= hp_accel.o  obj-$(CONFIG_HP_WMI)		+= hp-wmi.o +obj-$(CONFIG_AMILO_RFKILL)	+= amilo-rfkill.o  obj-$(CONFIG_TC1100_WMI)	+= tc1100-wmi.o  obj-$(CONFIG_SONY_LAPTOP)	+= sony-laptop.o  obj-$(CONFIG_IDEAPAD_LAPTOP)	+= ideapad-laptop.o  obj-$(CONFIG_THINKPAD_ACPI)	+= thinkpad_acpi.o  obj-$(CONFIG_SENSORS_HDAPS)	+= hdaps.o  obj-$(CONFIG_FUJITSU_LAPTOP)	+= fujitsu-laptop.o +obj-$(CONFIG_FUJITSU_TABLET)	+= fujitsu-tablet.o  obj-$(CONFIG_PANASONIC_LAPTOP)	+= panasonic-laptop.o  obj-$(CONFIG_INTEL_MENLOW)	+= intel_menlow.o  obj-$(CONFIG_ACPI_WMI)		+= wmi.o diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index b848277171a4..1e5290b5396d 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void)  	return AE_OK;  } +static int AMW0_set_cap_acpi_check_device_found; + +static acpi_status AMW0_set_cap_acpi_check_device_cb(acpi_handle handle, +	u32 level, void *context, void **retval) +{ +	AMW0_set_cap_acpi_check_device_found = 1; +	return AE_OK; +} + +static const struct acpi_device_id norfkill_ids[] = { +	{ "VPC2004", 0}, +	{ "IBM0068", 0}, +	{ "LEN0068", 0}, +	{ "", 0}, +}; + +static int AMW0_set_cap_acpi_check_device(void) +{ +	const struct acpi_device_id *id; + +	for (id = norfkill_ids; id->id[0]; id++) +		acpi_get_devices(id->id, AMW0_set_cap_acpi_check_device_cb, +				NULL, NULL); +	return AMW0_set_cap_acpi_check_device_found; +} +  static acpi_status AMW0_set_capabilities(void)  {  	struct wmab_args args; @@ -692,7 +718,9 @@ static acpi_status AMW0_set_capabilities(void)  	 * work.  	 */  	if (wmi_has_guid(AMW0_GUID2)) { -		interface->capability |= ACER_CAP_WIRELESS; +		if ((quirks != &quirk_unknown) || +		    !AMW0_set_cap_acpi_check_device()) +			interface->capability |= ACER_CAP_WIRELESS;  		return AE_OK;  	} diff --git a/drivers/platform/x86/amilo-rfkill.c b/drivers/platform/x86/amilo-rfkill.c new file mode 100644 index 000000000000..19170bb7700b --- /dev/null +++ b/drivers/platform/x86/amilo-rfkill.c @@ -0,0 +1,173 @@ +/* + * Support for rfkill on some Fujitsu-Siemens Amilo laptops. + * Copyright 2011 Ben Hutchings. + * + * Based in part on the fsam7440 driver, which is: + * Copyright 2005 Alejandro Vidal Mata & Javier Vidal Mata. + * and on the fsaa1655g driver, which is: + * Copyright 2006 Martin Večeřa. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include <linux/module.h> +#include <linux/dmi.h> +#include <linux/i8042.h> +#include <linux/io.h> +#include <linux/moduleparam.h> +#include <linux/platform_device.h> +#include <linux/rfkill.h> + +/* + * These values were obtained from disassembling and debugging the + * PM.exe program installed in the Fujitsu-Siemens AMILO A1655G + */ +#define A1655_WIFI_COMMAND	0x10C5 +#define A1655_WIFI_ON		0x25 +#define A1655_WIFI_OFF		0x45 + +static int amilo_a1655_rfkill_set_block(void *data, bool blocked) +{ +	u8 param = blocked ? A1655_WIFI_OFF : A1655_WIFI_ON; +	int rc; + +	i8042_lock_chip(); +	rc = i8042_command(¶m, A1655_WIFI_COMMAND); +	i8042_unlock_chip(); +	return rc; +} + +static const struct rfkill_ops amilo_a1655_rfkill_ops = { +	.set_block = amilo_a1655_rfkill_set_block +}; + +/* + * These values were obtained from disassembling the PM.exe program + * installed in the Fujitsu-Siemens AMILO M 7440 + */ +#define M7440_PORT1		0x118f +#define M7440_PORT2		0x118e +#define M7440_RADIO_ON1		0x12 +#define M7440_RADIO_ON2		0x80 +#define M7440_RADIO_OFF1	0x10 +#define M7440_RADIO_OFF2	0x00 + +static int amilo_m7440_rfkill_set_block(void *data, bool blocked) +{ +	u8 val1 = blocked ? M7440_RADIO_OFF1 : M7440_RADIO_ON1; +	u8 val2 = blocked ? M7440_RADIO_OFF2 : M7440_RADIO_ON2; + +	outb(val1, M7440_PORT1); +	outb(val2, M7440_PORT2); + +	/* Check whether the state has changed correctly */ +	if (inb(M7440_PORT1) != val1 || inb(M7440_PORT2) != val2) +		return -EIO; + +	return 0; +} + +static const struct rfkill_ops amilo_m7440_rfkill_ops = { +	.set_block = amilo_m7440_rfkill_set_block +}; + +static const struct dmi_system_id __devinitdata amilo_rfkill_id_table[] = { +	{ +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), +			DMI_MATCH(DMI_BOARD_NAME, "AMILO A1655"), +		}, +		.driver_data = (void *)&amilo_a1655_rfkill_ops +	}, +	{ +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), +			DMI_MATCH(DMI_BOARD_NAME, "AMILO M7440"), +		}, +		.driver_data = (void *)&amilo_m7440_rfkill_ops +	}, +	{} +}; + +static struct platform_device *amilo_rfkill_pdev; +static struct rfkill *amilo_rfkill_dev; + +static int __devinit amilo_rfkill_probe(struct platform_device *device) +{ +	const struct dmi_system_id *system_id = +		dmi_first_match(amilo_rfkill_id_table); +	int rc; + +	amilo_rfkill_dev = rfkill_alloc(KBUILD_MODNAME, &device->dev, +					RFKILL_TYPE_WLAN, +					system_id->driver_data, NULL); +	if (!amilo_rfkill_dev) +		return -ENOMEM; + +	rc = rfkill_register(amilo_rfkill_dev); +	if (rc) +		goto fail; + +	return 0; + +fail: +	rfkill_destroy(amilo_rfkill_dev); +	return rc; +} + +static int amilo_rfkill_remove(struct platform_device *device) +{ +	rfkill_unregister(amilo_rfkill_dev); +	rfkill_destroy(amilo_rfkill_dev); +	return 0; +} + +static struct platform_driver amilo_rfkill_driver = { +	.driver = { +		.name	= KBUILD_MODNAME, +		.owner	= THIS_MODULE, +	}, +	.probe	= amilo_rfkill_probe, +	.remove	= amilo_rfkill_remove, +}; + +static int __init amilo_rfkill_init(void) +{ +	int rc; + +	if (dmi_first_match(amilo_rfkill_id_table) == NULL) +		return -ENODEV; + +	rc = platform_driver_register(&amilo_rfkill_driver); +	if (rc) +		return rc; + +	amilo_rfkill_pdev = platform_device_register_simple(KBUILD_MODNAME, -1, +							    NULL, 0); +	if (IS_ERR(amilo_rfkill_pdev)) { +		rc = PTR_ERR(amilo_rfkill_pdev); +		goto fail; +	} + +	return 0; + +fail: +	platform_driver_unregister(&amilo_rfkill_driver); +	return rc; +} + +static void __exit amilo_rfkill_exit(void) +{ +	platform_device_unregister(amilo_rfkill_pdev); +	platform_driver_unregister(&amilo_rfkill_driver); +} + +MODULE_AUTHOR("Ben Hutchings <ben@decadent.org.uk>"); +MODULE_LICENSE("GPL"); +MODULE_DEVICE_TABLE(dmi, amilo_rfkill_id_table); + +module_init(amilo_rfkill_init); +module_exit(amilo_rfkill_exit); diff --git a/drivers/platform/x86/fujitsu-tablet.c b/drivers/platform/x86/fujitsu-tablet.c new file mode 100644 index 000000000000..580d80a73c3a --- /dev/null +++ b/drivers/platform/x86/fujitsu-tablet.c @@ -0,0 +1,478 @@ +/* + * Copyright (C) 2006-2012 Robert Gerlach <khnz@gmx.de> + * Copyright (C) 2005-2006 Jan Rychter <jan@rychter.com> + * + * You can redistribute and/or modify this program under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place Suite 330, Boston, MA 02111-1307, USA. + */ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/init.h> +#include <linux/bitops.h> +#include <linux/io.h> +#include <linux/ioport.h> +#include <linux/acpi.h> +#include <linux/device.h> +#include <linux/interrupt.h> +#include <linux/input.h> +#include <linux/delay.h> +#include <linux/dmi.h> + +#define MODULENAME "fujitsu-tablet" + +#define ACPI_FUJITSU_CLASS "fujitsu" + +#define INVERT_TABLET_MODE_BIT      0x01 +#define FORCE_TABLET_MODE_IF_UNDOCK 0x02 + +#define KEYMAP_LEN 16 + +static const struct acpi_device_id fujitsu_ids[] = { +	{ .id = "FUJ02BD" }, +	{ .id = "FUJ02BF" }, +	{ .id = "" } +}; + +struct fujitsu_config { +	unsigned short keymap[KEYMAP_LEN]; +	unsigned int quirks; +}; + +static unsigned short keymap_Lifebook_Tseries[KEYMAP_LEN] __initconst = { +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_SCROLLDOWN, +	KEY_SCROLLUP, +	KEY_DIRECTION, +	KEY_LEFTCTRL, +	KEY_BRIGHTNESSUP, +	KEY_BRIGHTNESSDOWN, +	KEY_BRIGHTNESS_ZERO, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_LEFTALT +}; + +static unsigned short keymap_Lifebook_U810[KEYMAP_LEN] __initconst = { +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_PROG1, +	KEY_PROG2, +	KEY_DIRECTION, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_UP, +	KEY_DOWN, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_LEFTCTRL, +	KEY_LEFTALT +}; + +static unsigned short keymap_Stylistic_Tseries[KEYMAP_LEN] __initconst = { +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_PRINT, +	KEY_BACKSPACE, +	KEY_SPACE, +	KEY_ENTER, +	KEY_BRIGHTNESSUP, +	KEY_BRIGHTNESSDOWN, +	KEY_DOWN, +	KEY_UP, +	KEY_SCROLLUP, +	KEY_SCROLLDOWN, +	KEY_LEFTCTRL, +	KEY_LEFTALT +}; + +static unsigned short keymap_Stylistic_ST5xxx[KEYMAP_LEN] __initconst = { +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_RESERVED, +	KEY_MAIL, +	KEY_DIRECTION, +	KEY_ESC, +	KEY_ENTER, +	KEY_BRIGHTNESSUP, +	KEY_BRIGHTNESSDOWN, +	KEY_DOWN, +	KEY_UP, +	KEY_SCROLLUP, +	KEY_SCROLLDOWN, +	KEY_LEFTCTRL, +	KEY_LEFTALT +}; + +static struct { +	struct input_dev *idev; +	struct fujitsu_config config; +	unsigned long prev_keymask; + +	char phys[21]; + +	int irq; +	int io_base; +	int io_length; +} fujitsu; + +static u8 fujitsu_ack(void) +{ +	return inb(fujitsu.io_base + 2); +} + +static u8 fujitsu_status(void) +{ +	return inb(fujitsu.io_base + 6); +} + +static u8 fujitsu_read_register(const u8 addr) +{ +	outb(addr, fujitsu.io_base); +	return inb(fujitsu.io_base + 4); +} + +static void fujitsu_send_state(void) +{ +	int state; +	int dock, tablet_mode; + +	state = fujitsu_read_register(0xdd); + +	dock = state & 0x02; + +	if ((fujitsu.config.quirks & FORCE_TABLET_MODE_IF_UNDOCK) && (!dock)) { +		tablet_mode = 1; +	} else{ +		tablet_mode = state & 0x01; +		if (fujitsu.config.quirks & INVERT_TABLET_MODE_BIT) +			tablet_mode = !tablet_mode; +	} + +	input_report_switch(fujitsu.idev, SW_DOCK, dock); +	input_report_switch(fujitsu.idev, SW_TABLET_MODE, tablet_mode); +	input_sync(fujitsu.idev); +} + +static void fujitsu_reset(void) +{ +	int timeout = 50; + +	fujitsu_ack(); + +	while ((fujitsu_status() & 0x02) && (--timeout)) +		msleep(20); + +	fujitsu_send_state(); +} + +static int __devinit input_fujitsu_setup(struct device *parent, +					 const char *name, const char *phys) +{ +	struct input_dev *idev; +	int error; +	int i; + +	idev = input_allocate_device(); +	if (!idev) +		return -ENOMEM; + +	idev->dev.parent = parent; +	idev->phys = phys; +	idev->name = name; +	idev->id.bustype = BUS_HOST; +	idev->id.vendor  = 0x1734;	/* Fujitsu Siemens Computer GmbH */ +	idev->id.product = 0x0001; +	idev->id.version = 0x0101; + +	idev->keycode = fujitsu.config.keymap; +	idev->keycodesize = sizeof(fujitsu.config.keymap[0]); +	idev->keycodemax = ARRAY_SIZE(fujitsu.config.keymap); + +	__set_bit(EV_REP, idev->evbit); + +	for (i = 0; i < ARRAY_SIZE(fujitsu.config.keymap); i++) +		if (fujitsu.config.keymap[i]) +			input_set_capability(idev, EV_KEY, fujitsu.config.keymap[i]); + +	input_set_capability(idev, EV_MSC, MSC_SCAN); + +	input_set_capability(idev, EV_SW, SW_DOCK); +	input_set_capability(idev, EV_SW, SW_TABLET_MODE); + +	input_set_capability(idev, EV_SW, SW_DOCK); +	input_set_capability(idev, EV_SW, SW_TABLET_MODE); + +	error = input_register_device(idev); +	if (error) { +		input_free_device(idev); +		return error; +	} + +	fujitsu.idev = idev; +	return 0; +} + +static void input_fujitsu_remove(void) +{ +	input_unregister_device(fujitsu.idev); +} + +static irqreturn_t fujitsu_interrupt(int irq, void *dev_id) +{ +	unsigned long keymask, changed; +	unsigned int keycode; +	int pressed; +	int i; + +	if (unlikely(!(fujitsu_status() & 0x01))) +		return IRQ_NONE; + +	fujitsu_send_state(); + +	keymask  = fujitsu_read_register(0xde); +	keymask |= fujitsu_read_register(0xdf) << 8; +	keymask ^= 0xffff; + +	changed = keymask ^ fujitsu.prev_keymask; +	if (changed) { +		fujitsu.prev_keymask = keymask; + +		for_each_set_bit(i, &changed, KEYMAP_LEN) { +			keycode = fujitsu.config.keymap[i]; +			pressed = keymask & changed & BIT(i); + +			if (pressed) +				input_event(fujitsu.idev, EV_MSC, MSC_SCAN, i); + +			input_report_key(fujitsu.idev, keycode, pressed); +			input_sync(fujitsu.idev); +		} +	} + +	fujitsu_ack(); +	return IRQ_HANDLED; +} + +static int __devinit fujitsu_dmi_default(const struct dmi_system_id *dmi) +{ +	printk(KERN_INFO MODULENAME ": %s\n", dmi->ident); +	memcpy(fujitsu.config.keymap, dmi->driver_data, +			sizeof(fujitsu.config.keymap)); +	return 1; +} + +static int __devinit fujitsu_dmi_stylistic(const struct dmi_system_id *dmi) +{ +	fujitsu_dmi_default(dmi); +	fujitsu.config.quirks |= FORCE_TABLET_MODE_IF_UNDOCK; +	fujitsu.config.quirks |= INVERT_TABLET_MODE_BIT; +	return 1; +} + +static struct dmi_system_id dmi_ids[] __initconst = { +	{ +		.callback = fujitsu_dmi_default, +		.ident = "Fujitsu Siemens P/T Series", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK") +		}, +		.driver_data = keymap_Lifebook_Tseries +	}, +	{ +		.callback = fujitsu_dmi_default, +		.ident = "Fujitsu Lifebook T Series", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook T") +		}, +		.driver_data = keymap_Lifebook_Tseries +	}, +	{ +		.callback = fujitsu_dmi_stylistic, +		.ident = "Fujitsu Siemens Stylistic T Series", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "Stylistic T") +		}, +		.driver_data = keymap_Stylistic_Tseries +	}, +	{ +		.callback = fujitsu_dmi_default, +		.ident = "Fujitsu LifeBook U810", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook U810") +		}, +		.driver_data = keymap_Lifebook_U810 +	}, +	{ +		.callback = fujitsu_dmi_stylistic, +		.ident = "Fujitsu Siemens Stylistic ST5xxx Series", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "STYLISTIC ST5") +		}, +		.driver_data = keymap_Stylistic_ST5xxx +	}, +	{ +		.callback = fujitsu_dmi_stylistic, +		.ident = "Fujitsu Siemens Stylistic ST5xxx Series", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), +			DMI_MATCH(DMI_PRODUCT_NAME, "Stylistic ST5") +		}, +		.driver_data = keymap_Stylistic_ST5xxx +	}, +	{ +		.callback = fujitsu_dmi_default, +		.ident = "Unknown (using defaults)", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, ""), +			DMI_MATCH(DMI_PRODUCT_NAME, "") +		}, +		.driver_data = keymap_Lifebook_Tseries +	}, +	{ NULL } +}; + +static acpi_status __devinit +fujitsu_walk_resources(struct acpi_resource *res, void *data) +{ +	switch (res->type) { +	case ACPI_RESOURCE_TYPE_IRQ: +		fujitsu.irq = res->data.irq.interrupts[0]; +		return AE_OK; + +	case ACPI_RESOURCE_TYPE_IO: +		fujitsu.io_base = res->data.io.minimum; +		fujitsu.io_length = res->data.io.address_length; +		return AE_OK; + +	case ACPI_RESOURCE_TYPE_END_TAG: +		if (fujitsu.irq && fujitsu.io_base) +			return AE_OK; +		else +			return AE_NOT_FOUND; + +	default: +		return AE_ERROR; +	} +} + +static int __devinit acpi_fujitsu_add(struct acpi_device *adev) +{ +	acpi_status status; +	int error; + +	if (!adev) +		return -EINVAL; + +	status = acpi_walk_resources(adev->handle, METHOD_NAME__CRS, +			fujitsu_walk_resources, NULL); +	if (ACPI_FAILURE(status) || !fujitsu.irq || !fujitsu.io_base) +		return -ENODEV; + +	sprintf(acpi_device_name(adev), "Fujitsu %s", acpi_device_hid(adev)); +	sprintf(acpi_device_class(adev), "%s", ACPI_FUJITSU_CLASS); + +	snprintf(fujitsu.phys, sizeof(fujitsu.phys), +			"%s/input0", acpi_device_hid(adev)); + +	error = input_fujitsu_setup(&adev->dev, +		acpi_device_name(adev), fujitsu.phys); +	if (error) +		return error; + +	if (!request_region(fujitsu.io_base, fujitsu.io_length, MODULENAME)) { +		input_fujitsu_remove(); +		return -EBUSY; +	} + +	fujitsu_reset(); + +	error = request_irq(fujitsu.irq, fujitsu_interrupt, +			IRQF_SHARED, MODULENAME, fujitsu_interrupt); +	if (error) { +		release_region(fujitsu.io_base, fujitsu.io_length); +		input_fujitsu_remove(); +		return error; +	} + +	return 0; +} + +static int __devexit acpi_fujitsu_remove(struct acpi_device *adev, int type) +{ +	free_irq(fujitsu.irq, fujitsu_interrupt); +	release_region(fujitsu.io_base, fujitsu.io_length); +	input_fujitsu_remove(); +	return 0; +} + +static int acpi_fujitsu_resume(struct acpi_device *adev) +{ +	fujitsu_reset(); +	return 0; +} + +static struct acpi_driver acpi_fujitsu_driver = { +	.name  = MODULENAME, +	.class = "hotkey", +	.ids   = fujitsu_ids, +	.ops   = { +		.add    = acpi_fujitsu_add, +		.remove	= acpi_fujitsu_remove, +		.resume = acpi_fujitsu_resume, +	} +}; + +static int __init fujitsu_module_init(void) +{ +	int error; + +	dmi_check_system(dmi_ids); + +	error = acpi_bus_register_driver(&acpi_fujitsu_driver); +	if (error) +		return error; + +	return 0; +} + +static void __exit fujitsu_module_exit(void) +{ +	acpi_bus_unregister_driver(&acpi_fujitsu_driver); +} + +module_init(fujitsu_module_init); +module_exit(fujitsu_module_exit); + +MODULE_AUTHOR("Robert Gerlach <khnz@gmx.de>"); +MODULE_DESCRIPTION("Fujitsu tablet pc extras driver"); +MODULE_LICENSE("GPL"); +MODULE_VERSION("2.4"); + +MODULE_DEVICE_TABLE(acpi, fujitsu_ids); diff --git a/drivers/platform/x86/panasonic-laptop.c b/drivers/platform/x86/panasonic-laptop.c index 05be30ee158b..ffff8b4b4949 100644 --- a/drivers/platform/x86/panasonic-laptop.c +++ b/drivers/platform/x86/panasonic-laptop.c @@ -562,8 +562,8 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)  	num_sifr = acpi_pcc_get_sqty(device); -	if (num_sifr > 255) { -		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "num_sifr too large")); +	if (num_sifr < 0 || num_sifr > 255) { +		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "num_sifr out of range"));  		return -ENODEV;  	} diff --git a/drivers/rapidio/devices/tsi721.h b/drivers/rapidio/devices/tsi721.h index 822e54c394d5..1c226b31af13 100644 --- a/drivers/rapidio/devices/tsi721.h +++ b/drivers/rapidio/devices/tsi721.h @@ -118,34 +118,34 @@  #define TSI721_IDB_ENTRY_SIZE	64 -#define TSI721_IDQ_CTL(x)	(0x20000 + (x) * 1000) +#define TSI721_IDQ_CTL(x)	(0x20000 + (x) * 0x1000)  #define TSI721_IDQ_SUSPEND	0x00000002  #define TSI721_IDQ_INIT		0x00000001 -#define TSI721_IDQ_STS(x)	(0x20004 + (x) * 1000) +#define TSI721_IDQ_STS(x)	(0x20004 + (x) * 0x1000)  #define TSI721_IDQ_RUN		0x00200000 -#define TSI721_IDQ_MASK(x)	(0x20008 + (x) * 1000) +#define TSI721_IDQ_MASK(x)	(0x20008 + (x) * 0x1000)  #define TSI721_IDQ_MASK_MASK	0xffff0000  #define TSI721_IDQ_MASK_PATT	0x0000ffff -#define TSI721_IDQ_RP(x)	(0x2000c + (x) * 1000) +#define TSI721_IDQ_RP(x)	(0x2000c + (x) * 0x1000)  #define TSI721_IDQ_RP_PTR	0x0007ffff -#define TSI721_IDQ_WP(x)	(0x20010 + (x) * 1000) +#define TSI721_IDQ_WP(x)	(0x20010 + (x) * 0x1000)  #define TSI721_IDQ_WP_PTR	0x0007ffff -#define TSI721_IDQ_BASEL(x)	(0x20014 + (x) * 1000) +#define TSI721_IDQ_BASEL(x)	(0x20014 + (x) * 0x1000)  #define TSI721_IDQ_BASEL_ADDR	0xffffffc0 -#define TSI721_IDQ_BASEU(x)	(0x20018 + (x) * 1000) -#define TSI721_IDQ_SIZE(x)	(0x2001c + (x) * 1000) +#define TSI721_IDQ_BASEU(x)	(0x20018 + (x) * 0x1000) +#define TSI721_IDQ_SIZE(x)	(0x2001c + (x) * 0x1000)  #define TSI721_IDQ_SIZE_VAL(size)	(__fls(size) - 4)  #define TSI721_IDQ_SIZE_MIN	512  #define TSI721_IDQ_SIZE_MAX	(512 * 1024) -#define TSI721_SR_CHINT(x)	(0x20040 + (x) * 1000) -#define TSI721_SR_CHINTE(x)	(0x20044 + (x) * 1000) -#define TSI721_SR_CHINTSET(x)	(0x20048 + (x) * 1000) +#define TSI721_SR_CHINT(x)	(0x20040 + (x) * 0x1000) +#define TSI721_SR_CHINTE(x)	(0x20044 + (x) * 0x1000) +#define TSI721_SR_CHINTSET(x)	(0x20048 + (x) * 0x1000)  #define TSI721_SR_CHINT_ODBOK	0x00000020  #define TSI721_SR_CHINT_IDBQRCV	0x00000010  #define TSI721_SR_CHINT_SUSP	0x00000008 @@ -156,7 +156,7 @@  #define TSI721_IBWIN_NUM	8 -#define TSI721_IBWINLB(x)	(0x29000 + (x) * 20) +#define TSI721_IBWINLB(x)	(0x29000 + (x) * 0x20)  #define TSI721_IBWINLB_BA	0xfffff000  #define TSI721_IBWINLB_WEN	0x00000001 @@ -187,13 +187,13 @@   */  #define TSI721_OBWIN_NUM	TSI721_PC2SR_WINS -#define TSI721_OBWINLB(x)	(0x40000 + (x) * 20) +#define TSI721_OBWINLB(x)	(0x40000 + (x) * 0x20)  #define TSI721_OBWINLB_BA	0xffff8000  #define TSI721_OBWINLB_WEN	0x00000001 -#define TSI721_OBWINUB(x)	(0x40004 + (x) * 20) +#define TSI721_OBWINUB(x)	(0x40004 + (x) * 0x20) -#define TSI721_OBWINSZ(x)	(0x40008 + (x) * 20) +#define TSI721_OBWINSZ(x)	(0x40008 + (x) * 0x20)  #define TSI721_OBWINSZ_SIZE	0x00001f00  #define TSI721_OBWIN_SIZE(size)	(__fls(size) - 15) diff --git a/drivers/regulator/da9052-regulator.c b/drivers/regulator/da9052-regulator.c index ea4d8f575ac6..09915e89705d 100644 --- a/drivers/regulator/da9052-regulator.c +++ b/drivers/regulator/da9052-regulator.c @@ -226,7 +226,7 @@ static int da9052_regulator_set_voltage_int(struct regulator_dev *rdev,  	if (min_uV < info->min_uV)  		min_uV = info->min_uV; -	*selector = (min_uV - info->min_uV) / info->step_uV; +	*selector = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV);  	ret = da9052_list_voltage(rdev, *selector);  	if (ret < 0) @@ -318,10 +318,10 @@ static int da9052_set_buckperi_voltage(struct regulator_dev *rdev, int min_uV,  	if ((regulator->da9052->chip_id == DA9052) &&  	    (min_uV >= DA9052_CONST_3uV))  		*selector = DA9052_BUCK_PERI_REG_MAP_UPTO_3uV + -			    ((min_uV - DA9052_CONST_3uV) / -			    (DA9052_BUCK_PERI_3uV_STEP)); +			    DIV_ROUND_UP(min_uV - DA9052_CONST_3uV, +					 DA9052_BUCK_PERI_3uV_STEP);  	else -		*selector = (min_uV - info->min_uV) / info->step_uV; +		*selector = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV);  	ret = da9052_list_buckperi_voltage(rdev, *selector);  	if (ret < 0) @@ -400,6 +400,7 @@ static struct regulator_ops da9052_ldo_ops = {  		.ops = &da9052_ldo5_6_ops,\  		.type = REGULATOR_VOLTAGE,\  		.id = _id,\ +		.n_voltages = (max - min) / step + 1, \  		.owner = THIS_MODULE,\  	},\  	.min_uV = (min) * 1000,\ @@ -417,6 +418,7 @@ static struct regulator_ops da9052_ldo_ops = {  		.ops = &da9052_ldo_ops,\  		.type = REGULATOR_VOLTAGE,\  		.id = _id,\ +		.n_voltages = (max - min) / step + 1, \  		.owner = THIS_MODULE,\  	},\  	.min_uV = (min) * 1000,\ @@ -434,6 +436,7 @@ static struct regulator_ops da9052_ldo_ops = {  		.ops = &da9052_dcdc_ops,\  		.type = REGULATOR_VOLTAGE,\  		.id = _id,\ +		.n_voltages = (max - min) / step + 1, \  		.owner = THIS_MODULE,\  	},\  	.min_uV = (min) * 1000,\ @@ -451,6 +454,7 @@ static struct regulator_ops da9052_ldo_ops = {  		.ops = &da9052_buckperi_ops,\  		.type = REGULATOR_VOLTAGE,\  		.id = _id,\ +		.n_voltages = (max - min) / step + 1, \  		.owner = THIS_MODULE,\  	},\  	.min_uV = (min) * 1000,\ diff --git a/drivers/regulator/tps6524x-regulator.c b/drivers/regulator/tps6524x-regulator.c index 70b7b1f4f000..2e94686b6fe6 100644 --- a/drivers/regulator/tps6524x-regulator.c +++ b/drivers/regulator/tps6524x-regulator.c @@ -481,7 +481,7 @@ static int set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV,  	if (i >= info->n_voltages)  		i = info->n_voltages - 1; -	*selector = info->voltages[i]; +	*selector = i;  	return write_field(hw, &info->voltage, i);  } diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 44262908def5..501b27c18145 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -1028,7 +1028,7 @@ done:  		return iscsit_add_reject_from_cmd(  				ISCSI_REASON_BOOKMARK_NO_RESOURCES,  				1, 1, buf, cmd); -	} else if (transport_ret == -EINVAL) { +	} else if (transport_ret < 0) {  		/*  		 * Unsupported SAM Opcode.  CHECK_CONDITION will be sent  		 * in iscsit_execute_cmd() during the CmdSN OOO Execution diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index b7c779389eea..63e703bb6ac9 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -117,7 +117,7 @@ static struct t10_pr_registration *core_scsi3_locate_pr_reg(struct se_device *,  					struct se_node_acl *, struct se_session *);  static void core_scsi3_put_pr_reg(struct t10_pr_registration *); -static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret) +static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd)  {  	struct se_session *se_sess = cmd->se_sess;  	struct se_subsystem_dev *su_dev = cmd->se_dev->se_sub_dev; @@ -127,7 +127,7 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)  	int conflict = 0;  	if (!crh) -		return false; +		return -EINVAL;  	pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl,  			se_sess); @@ -155,16 +155,14 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)  		 */  		if (pr_reg->pr_res_holder) {  			core_scsi3_put_pr_reg(pr_reg); -			*ret = 0; -			return false; +			return 1;  		}  		if ((pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_REGONLY) ||  		    (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_REGONLY) ||  		    (pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_ALLREG) ||  		    (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_ALLREG)) {  			core_scsi3_put_pr_reg(pr_reg); -			*ret = 0; -			return true; +			return 1;  		}  		core_scsi3_put_pr_reg(pr_reg);  		conflict = 1; @@ -189,10 +187,10 @@ static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd, int *ret)  			" while active SPC-3 registrations exist,"  			" returning RESERVATION_CONFLICT\n");  		cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT; -		return true; +		return -EBUSY;  	} -	return false; +	return 0;  }  int target_scsi2_reservation_release(struct se_task *task) @@ -201,12 +199,18 @@ int target_scsi2_reservation_release(struct se_task *task)  	struct se_device *dev = cmd->se_dev;  	struct se_session *sess = cmd->se_sess;  	struct se_portal_group *tpg = sess->se_tpg; -	int ret = 0; +	int ret = 0, rc;  	if (!sess || !tpg)  		goto out; -	if (target_check_scsi2_reservation_conflict(cmd, &ret)) +	rc = target_check_scsi2_reservation_conflict(cmd); +	if (rc == 1) +		goto out; +	else if (rc < 0) { +		cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT; +		ret = -EINVAL;  		goto out; +	}  	ret = 0;  	spin_lock(&dev->dev_reservation_lock); @@ -243,7 +247,7 @@ int target_scsi2_reservation_reserve(struct se_task *task)  	struct se_device *dev = cmd->se_dev;  	struct se_session *sess = cmd->se_sess;  	struct se_portal_group *tpg = sess->se_tpg; -	int ret = 0; +	int ret = 0, rc;  	if ((cmd->t_task_cdb[1] & 0x01) &&  	    (cmd->t_task_cdb[1] & 0x02)) { @@ -259,8 +263,14 @@ int target_scsi2_reservation_reserve(struct se_task *task)  	 */  	if (!sess || !tpg)  		goto out; -	if (target_check_scsi2_reservation_conflict(cmd, &ret)) +	rc = target_check_scsi2_reservation_conflict(cmd); +	if (rc == 1)  		goto out; +	else if (rc < 0) { +		cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT; +		ret = -EINVAL; +		goto out; +	}  	ret = 0;  	spin_lock(&dev->dev_reservation_lock); diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 58cea07b12fb..cd5cd95812bb 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -2539,6 +2539,7 @@ static int transport_generic_cmd_sequencer(  					cmd, cdb, pr_reg_type) != 0) {  			cmd->se_cmd_flags |= SCF_SCSI_CDB_EXCEPTION;  			cmd->se_cmd_flags |= SCF_SCSI_RESERVATION_CONFLICT; +			cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT;  			cmd->scsi_sense_reason = TCM_RESERVATION_CONFLICT;  			return -EBUSY;  		} diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 75085795528e..61b7fd2729cd 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -1710,6 +1710,8 @@ static int sci_startup(struct uart_port *port)  	dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); +	pm_runtime_put_noidle(port->dev); +  	sci_port_enable(s);  	ret = sci_request_irq(s); @@ -1737,6 +1739,8 @@ static void sci_shutdown(struct uart_port *port)  	sci_free_irq(s);  	sci_port_disable(s); + +	pm_runtime_get_noresume(port->dev);  }  static unsigned int sci_scbrr_calc(unsigned int algo_id, unsigned int bps, @@ -2075,6 +2079,7 @@ static int __devinit sci_init_single(struct platform_device *dev,  		sci_init_gpios(sci_port);  		pm_runtime_irq_safe(&dev->dev); +		pm_runtime_get_noresume(&dev->dev);  		pm_runtime_enable(&dev->dev);  	} diff --git a/drivers/video/backlight/s6e63m0.c b/drivers/video/backlight/s6e63m0.c index e132157d8545..516db703dd24 100644 --- a/drivers/video/backlight/s6e63m0.c +++ b/drivers/video/backlight/s6e63m0.c @@ -690,7 +690,7 @@ static ssize_t s6e63m0_sysfs_store_gamma_mode(struct device *dev,  	struct backlight_device *bd = NULL;  	int brightness, rc; -	rc = strict_strtoul(buf, 0, (unsigned long *)&lcd->gamma_mode); +	rc = kstrtouint(buf, 0, &lcd->gamma_mode);  	if (rc < 0)  		return rc; diff --git a/fs/afs/internal.h b/fs/afs/internal.h index d2b0888126d4..a306bb6d88d9 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h @@ -109,7 +109,7 @@ struct afs_call {  	unsigned		reply_size;	/* current size of reply */  	unsigned		first_offset;	/* offset into mapping[first] */  	unsigned		last_to;	/* amount of mapping[last] */ -	unsigned short		offset;		/* offset into received data store */ +	unsigned		offset;		/* offset into received data store */  	unsigned char		unmarshall;	/* unmarshalling phase */  	bool			incoming;	/* T if incoming call */  	bool			send_pages;	/* T if data from mapping should be sent */ diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c index e45a323aebb4..8ad8c2a0703a 100644 --- a/fs/afs/rxrpc.c +++ b/fs/afs/rxrpc.c @@ -314,6 +314,7 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp,  	struct msghdr msg;  	struct kvec iov[1];  	int ret; +	struct sk_buff *skb;  	_enter("%x,{%d},", addr->s_addr, ntohs(call->port)); @@ -380,6 +381,8 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp,  error_do_abort:  	rxrpc_kernel_abort_call(rxcall, RX_USER_ABORT); +	while ((skb = skb_dequeue(&call->rx_queue))) +		afs_free_skb(skb);  	rxrpc_kernel_end_call(rxcall);  	call->rxcall = NULL;  error_kill_call: @@ -228,12 +228,6 @@ static void __put_ioctx(struct kioctx *ctx)  	call_rcu(&ctx->rcu_head, ctx_rcu_free);  } -static inline void get_ioctx(struct kioctx *kioctx) -{ -	BUG_ON(atomic_read(&kioctx->users) <= 0); -	atomic_inc(&kioctx->users); -} -  static inline int try_get_ioctx(struct kioctx *kioctx)  {  	return atomic_inc_not_zero(&kioctx->users); @@ -273,7 +267,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)  	mm = ctx->mm = current->mm;  	atomic_inc(&mm->mm_count); -	atomic_set(&ctx->users, 1); +	atomic_set(&ctx->users, 2);  	spin_lock_init(&ctx->ctx_lock);  	spin_lock_init(&ctx->ring_info.ring_lock);  	init_waitqueue_head(&ctx->wait); @@ -609,11 +603,16 @@ static void aio_fput_routine(struct work_struct *data)  			fput(req->ki_filp);  		/* Link the iocb into the context's free list */ +		rcu_read_lock();  		spin_lock_irq(&ctx->ctx_lock);  		really_put_req(ctx, req); +		/* +		 * at that point ctx might've been killed, but actual +		 * freeing is RCU'd +		 */  		spin_unlock_irq(&ctx->ctx_lock); +		rcu_read_unlock(); -		put_ioctx(ctx);  		spin_lock_irq(&fput_lock);  	}  	spin_unlock_irq(&fput_lock); @@ -644,7 +643,6 @@ static int __aio_put_req(struct kioctx *ctx, struct kiocb *req)  	 * this function will be executed w/out any aio kthread wakeup.  	 */  	if (unlikely(!fput_atomic(req->ki_filp))) { -		get_ioctx(ctx);  		spin_lock(&fput_lock);  		list_add(&req->ki_list, &fput_head);  		spin_unlock(&fput_lock); @@ -1338,10 +1336,10 @@ SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp)  	ret = PTR_ERR(ioctx);  	if (!IS_ERR(ioctx)) {  		ret = put_user(ioctx->user_id, ctxp); -		if (!ret) +		if (!ret) { +			put_ioctx(ioctx);  			return 0; - -		get_ioctx(ioctx); /* io_destroy() expects us to hold a ref */ +		}  		io_destroy(ioctx);  	} diff --git a/fs/block_dev.c b/fs/block_dev.c index 0e575d1304b4..5e9f198f7712 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1183,8 +1183,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)  			 * The latter is necessary to prevent ghost  			 * partitions on a removed medium.  			 */ -			if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM)) -				rescan_partitions(disk, bdev); +			if (bdev->bd_invalidated) { +				if (!ret) +					rescan_partitions(disk, bdev); +				else if (ret == -ENOMEDIUM) +					invalidate_partitions(disk, bdev); +			}  			if (ret)  				goto out_clear;  		} else { @@ -1214,8 +1218,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)  			if (bdev->bd_disk->fops->open)  				ret = bdev->bd_disk->fops->open(bdev, mode);  			/* the same as first opener case, read comment there */ -			if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM)) -				rescan_partitions(bdev->bd_disk, bdev); +			if (bdev->bd_invalidated) { +				if (!ret) +					rescan_partitions(bdev->bd_disk, bdev); +				else if (ret == -ENOMEDIUM) +					invalidate_partitions(bdev->bd_disk, bdev); +			}  			if (ret)  				goto out_unlock_bdev;  		} diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 98f6bf10bbd4..0436c12da8c2 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -583,7 +583,7 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,  	struct btrfs_path *path;  	struct btrfs_key info_key = { 0 };  	struct btrfs_delayed_ref_root *delayed_refs = NULL; -	struct btrfs_delayed_ref_head *head = NULL; +	struct btrfs_delayed_ref_head *head;  	int info_level = 0;  	int ret;  	struct list_head prefs_delayed; @@ -607,6 +607,8 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,  	 * at a specified point in time  	 */  again: +	head = NULL; +  	ret = btrfs_search_slot(trans, fs_info->extent_root, &key, path, 0, 0);  	if (ret < 0)  		goto out; @@ -635,8 +637,10 @@ again:  			goto again;  		}  		ret = __add_delayed_refs(head, seq, &info_key, &prefs_delayed); -		if (ret) +		if (ret) { +			spin_unlock(&delayed_refs->lock);  			goto out; +		}  	}  	spin_unlock(&delayed_refs->lock); diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c index 2373b39a132b..22db04550f6a 100644 --- a/fs/btrfs/reada.c +++ b/fs/btrfs/reada.c @@ -305,7 +305,7 @@ again:  	spin_lock(&fs_info->reada_lock);  	ret = radix_tree_insert(&dev->reada_zones, -				(unsigned long)zone->end >> PAGE_CACHE_SHIFT, +				(unsigned long)(zone->end >> PAGE_CACHE_SHIFT),  				zone);  	spin_unlock(&fs_info->reada_lock); diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 4dd9283885e7..5e64748a2917 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -920,16 +920,26 @@ cifs_push_mandatory_locks(struct cifsFileInfo *cfile)  	for (lockp = &inode->i_flock; *lockp != NULL; \  	     lockp = &(*lockp)->fl_next) +struct lock_to_push { +	struct list_head llist; +	__u64 offset; +	__u64 length; +	__u32 pid; +	__u16 netfid; +	__u8 type; +}; +  static int  cifs_push_posix_locks(struct cifsFileInfo *cfile)  {  	struct cifsInodeInfo *cinode = CIFS_I(cfile->dentry->d_inode);  	struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);  	struct file_lock *flock, **before; -	struct cifsLockInfo *lck, *tmp; +	unsigned int count = 0, i = 0;  	int rc = 0, xid, type; +	struct list_head locks_to_send, *el; +	struct lock_to_push *lck, *tmp;  	__u64 length; -	struct list_head locks_to_send;  	xid = GetXid(); @@ -940,29 +950,55 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)  		return rc;  	} +	lock_flocks(); +	cifs_for_each_lock(cfile->dentry->d_inode, before) { +		if ((*before)->fl_flags & FL_POSIX) +			count++; +	} +	unlock_flocks(); +  	INIT_LIST_HEAD(&locks_to_send); +	/* +	 * Allocating count locks is enough because no locks can be added to +	 * the list while we are holding cinode->lock_mutex that protects +	 * locking operations of this inode. +	 */ +	for (; i < count; i++) { +		lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL); +		if (!lck) { +			rc = -ENOMEM; +			goto err_out; +		} +		list_add_tail(&lck->llist, &locks_to_send); +	} + +	i = 0; +	el = locks_to_send.next;  	lock_flocks();  	cifs_for_each_lock(cfile->dentry->d_inode, before) { +		if (el == &locks_to_send) { +			/* something is really wrong */ +			cERROR(1, "Can't push all brlocks!"); +			break; +		}  		flock = *before; +		if ((flock->fl_flags & FL_POSIX) == 0) +			continue;  		length = 1 + flock->fl_end - flock->fl_start;  		if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK)  			type = CIFS_RDLCK;  		else  			type = CIFS_WRLCK; - -		lck = cifs_lock_init(flock->fl_start, length, type, -				     cfile->netfid); -		if (!lck) { -			rc = -ENOMEM; -			goto send_locks; -		} +		lck = list_entry(el, struct lock_to_push, llist);  		lck->pid = flock->fl_pid; - -		list_add_tail(&lck->llist, &locks_to_send); +		lck->netfid = cfile->netfid; +		lck->length = length; +		lck->type = type; +		lck->offset = flock->fl_start; +		i++; +		el = el->next;  	} - -send_locks:  	unlock_flocks();  	list_for_each_entry_safe(lck, tmp, &locks_to_send, llist) { @@ -979,11 +1015,18 @@ send_locks:  		kfree(lck);  	} +out:  	cinode->can_cache_brlcks = false;  	mutex_unlock(&cinode->lock_mutex);  	FreeXid(xid);  	return rc; +err_out: +	list_for_each_entry_safe(lck, tmp, &locks_to_send, llist) { +		list_del(&lck->llist); +		kfree(lck); +	} +	goto out;  }  static int diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c index 45f07c46f3ed..10d92cf57ab6 100644 --- a/fs/cifs/xattr.c +++ b/fs/cifs/xattr.c @@ -105,7 +105,6 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,  	struct cifs_tcon *pTcon;  	struct super_block *sb;  	char *full_path; -	struct cifs_ntsd *pacl;  	if (direntry == NULL)  		return -EIO; @@ -164,23 +163,24 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,  			cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);  	} else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL,  			strlen(CIFS_XATTR_CIFS_ACL)) == 0) { +#ifdef CONFIG_CIFS_ACL +		struct cifs_ntsd *pacl;  		pacl = kmalloc(value_size, GFP_KERNEL);  		if (!pacl) {  			cFYI(1, "%s: Can't allocate memory for ACL",  					__func__);  			rc = -ENOMEM;  		} else { -#ifdef CONFIG_CIFS_ACL  			memcpy(pacl, ea_value, value_size);  			rc = set_cifs_acl(pacl, value_size,  				direntry->d_inode, full_path, CIFS_ACL_DACL);  			if (rc == 0) /* force revalidate of the inode */  				CIFS_I(direntry->d_inode)->time = 0;  			kfree(pacl); +		}  #else  			cFYI(1, "Set CIFS ACL not supported yet");  #endif /* CONFIG_CIFS_ACL */ -		}  	} else {  		int temp;  		temp = strncmp(ea_name, POSIX_ACL_XATTR_ACCESS, diff --git a/fs/eventpoll.c b/fs/eventpoll.c index ea54cdef04dd..4d9d3a45e356 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -988,6 +988,10 @@ static int path_count[PATH_ARR_SIZE];  static int path_count_inc(int nests)  { +	/* Allow an arbitrary number of depth 1 paths */ +	if (nests == 0) +		return 0; +  	if (++path_count[nests] > path_limits[nests])  		return -1;  	return 0; diff --git a/fs/inode.c b/fs/inode.c index d3ebdbe723d0..83ab215baab1 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -938,8 +938,7 @@ void lockdep_annotate_inode_mutex_key(struct inode *inode)  		struct file_system_type *type = inode->i_sb->s_type;  		/* Set new key only if filesystem hasn't already changed it */ -		if (!lockdep_match_class(&inode->i_mutex, -		    &type->i_mutex_key)) { +		if (lockdep_match_class(&inode->i_mutex, &type->i_mutex_key)) {  			/*  			 * ensure nobody is actually holding i_mutex  			 */ @@ -966,6 +965,7 @@ void unlock_new_inode(struct inode *inode)  	spin_lock(&inode->i_lock);  	WARN_ON(!(inode->i_state & I_NEW));  	inode->i_state &= ~I_NEW; +	smp_mb();  	wake_up_bit(&inode->i_state, __I_NEW);  	spin_unlock(&inode->i_lock);  } diff --git a/fs/namei.c b/fs/namei.c index e2ba62820a0f..46ea9cc16647 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -2162,7 +2162,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,  		/* sayonara */  		error = complete_walk(nd);  		if (error) -			return ERR_PTR(-ECHILD); +			return ERR_PTR(error);  		error = -ENOTDIR;  		if (nd->flags & LOOKUP_DIRECTORY) { @@ -2261,7 +2261,7 @@ static struct file *do_last(struct nameidata *nd, struct path *path,  	/* Why this, you ask?  _Now_ we might have grown LOOKUP_JUMPED... */  	error = complete_walk(nd);  	if (error) -		goto exit; +		return ERR_PTR(error);  	error = -EISDIR;  	if (S_ISDIR(nd->inode->i_mode))  		goto exit; diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c index d32714094375..501b7f8b739f 100644 --- a/fs/nilfs2/the_nilfs.c +++ b/fs/nilfs2/the_nilfs.c @@ -409,6 +409,12 @@ static int nilfs_store_disk_layout(struct the_nilfs *nilfs,  	nilfs->ns_first_data_block = le64_to_cpu(sbp->s_first_data_block);  	nilfs->ns_r_segments_percentage =  		le32_to_cpu(sbp->s_r_segments_percentage); +	if (nilfs->ns_r_segments_percentage < 1 || +	    nilfs->ns_r_segments_percentage > 99) { +		printk(KERN_ERR "NILFS: invalid reserved segments percentage.\n"); +		return -EINVAL; +	} +  	nilfs_set_nsegments(nilfs, le64_to_cpu(sbp->s_nsegments));  	nilfs->ns_crc_seed = le32_to_cpu(sbp->s_crc_seed);  	return 0; @@ -515,6 +521,7 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs,  		brelse(sbh[1]);  		sbh[1] = NULL;  		sbp[1] = NULL; +		valid[1] = 0;  		swp = 0;  	}  	if (!valid[swp]) { diff --git a/fs/udf/file.c b/fs/udf/file.c index dca0c3881e82..d567b8448dfc 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -201,12 +201,10 @@ out:  static int udf_release_file(struct inode *inode, struct file *filp)  {  	if (filp->f_mode & FMODE_WRITE) { -		mutex_lock(&inode->i_mutex);  		down_write(&UDF_I(inode)->i_data_sem);  		udf_discard_prealloc(inode);  		udf_truncate_tail_extent(inode);  		up_write(&UDF_I(inode)->i_data_sem); -		mutex_unlock(&inode->i_mutex);  	}  	return 0;  } diff --git a/include/linux/genhd.h b/include/linux/genhd.h index fe23ee768589..e61d3192448e 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -596,6 +596,7 @@ extern char *disk_name (struct gendisk *hd, int partno, char *buf);  extern int disk_expand_part_tbl(struct gendisk *disk, int target);  extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev); +extern int invalidate_partitions(struct gendisk *disk, struct block_device *bdev);  extern struct hd_struct * __must_check add_partition(struct gendisk *disk,  						     int partno, sector_t start,  						     sector_t len, int flags, diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 119773eebe31..1a3018063034 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h @@ -6,8 +6,11 @@  #include <linux/workqueue.h>  enum { -	ICQ_IOPRIO_CHANGED, -	ICQ_CGROUP_CHANGED, +	ICQ_IOPRIO_CHANGED	= 1 << 0, +	ICQ_CGROUP_CHANGED	= 1 << 1, +	ICQ_EXITED		= 1 << 2, + +	ICQ_CHANGED_MASK	= ICQ_IOPRIO_CHANGED | ICQ_CGROUP_CHANGED,  };  /* @@ -88,7 +91,7 @@ struct io_cq {  		struct rcu_head		__rcu_head;  	}; -	unsigned long		changed; +	unsigned int		flags;  };  /* @@ -139,6 +142,7 @@ struct io_context *get_task_io_context(struct task_struct *task,  				       gfp_t gfp_flags, int node);  void ioc_ioprio_changed(struct io_context *ioc, int ioprio);  void ioc_cgroup_changed(struct io_context *ioc); +unsigned int icq_get_changed(struct io_cq *icq);  #else  struct io_context;  static inline void put_io_context(struct io_context *ioc) { } diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index eb8b9f15f2e0..af155450cabb 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -289,12 +289,16 @@ enum {   *   * system_freezable_wq is equivalent to system_wq except that it's   * freezable. + * + * system_nrt_freezable_wq is equivalent to system_nrt_wq except that + * it's freezable.   */  extern struct workqueue_struct *system_wq;  extern struct workqueue_struct *system_long_wq;  extern struct workqueue_struct *system_nrt_wq;  extern struct workqueue_struct *system_unbound_wq;  extern struct workqueue_struct *system_freezable_wq; +extern struct workqueue_struct *system_nrt_freezable_wq;  extern struct workqueue_struct *  __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, diff --git a/kernel/sys.c b/kernel/sys.c index 40701538fbd1..888d227fd195 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,  	if (arg4 | arg5)  		return -EINVAL; -	if (!capable(CAP_SYS_ADMIN)) +	if (!capable(CAP_SYS_RESOURCE))  		return -EPERM;  	if (addr >= TASK_SIZE) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index bec7b5b53e03..f2c5638bb5ab 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -253,11 +253,13 @@ struct workqueue_struct *system_long_wq __read_mostly;  struct workqueue_struct *system_nrt_wq __read_mostly;  struct workqueue_struct *system_unbound_wq __read_mostly;  struct workqueue_struct *system_freezable_wq __read_mostly; +struct workqueue_struct *system_nrt_freezable_wq __read_mostly;  EXPORT_SYMBOL_GPL(system_wq);  EXPORT_SYMBOL_GPL(system_long_wq);  EXPORT_SYMBOL_GPL(system_nrt_wq);  EXPORT_SYMBOL_GPL(system_unbound_wq);  EXPORT_SYMBOL_GPL(system_freezable_wq); +EXPORT_SYMBOL_GPL(system_nrt_freezable_wq);  #define CREATE_TRACE_POINTS  #include <trace/events/workqueue.h> @@ -3833,8 +3835,11 @@ static int __init init_workqueues(void)  					    WQ_UNBOUND_MAX_ACTIVE);  	system_freezable_wq = alloc_workqueue("events_freezable",  					      WQ_FREEZABLE, 0); +	system_nrt_freezable_wq = alloc_workqueue("events_nrt_freezable", +			WQ_NON_REENTRANT | WQ_FREEZABLE, 0);  	BUG_ON(!system_wq || !system_long_wq || !system_nrt_wq || -	       !system_unbound_wq || !system_freezable_wq); +	       !system_unbound_wq || !system_freezable_wq || +		!system_nrt_freezable_wq);  	return 0;  }  early_initcall(init_workqueues); diff --git a/lib/dynamic_queue_limits.c b/lib/dynamic_queue_limits.c index 3d1bdcdd7db4..6ab4587d052b 100644 --- a/lib/dynamic_queue_limits.c +++ b/lib/dynamic_queue_limits.c @@ -7,6 +7,7 @@  #include <linux/types.h>  #include <linux/ctype.h>  #include <linux/kernel.h> +#include <linux/jiffies.h>  #include <linux/dynamic_queue_limits.h>  #define POSDIFF(A, B) ((A) > (B) ? (A) - (B) : 0) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 5585dc3d3646..58a08fc7414a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -230,10 +230,30 @@ struct mem_cgroup {  	 * the counter to account for memory usage  	 */  	struct res_counter res; -	/* -	 * the counter to account for mem+swap usage. -	 */ -	struct res_counter memsw; + +	union { +		/* +		 * the counter to account for mem+swap usage. +		 */ +		struct res_counter memsw; + +		/* +		 * rcu_freeing is used only when freeing struct mem_cgroup, +		 * so put it into a union to avoid wasting more memory. +		 * It must be disjoint from the css field.  It could be +		 * in a union with the res field, but res plays a much +		 * larger part in mem_cgroup life than memsw, and might +		 * be of interest, even at time of free, when debugging. +		 * So share rcu_head with the less interesting memsw. +		 */ +		struct rcu_head rcu_freeing; +		/* +		 * But when using vfree(), that cannot be done at +		 * interrupt time, so we must then queue the work. +		 */ +		struct work_struct work_freeing; +	}; +  	/*  	 * Per cgroup active and inactive list, similar to the  	 * per zone LRU lists. @@ -4780,6 +4800,27 @@ out_free:  }  /* + * Helpers for freeing a vzalloc()ed mem_cgroup by RCU, + * but in process context.  The work_freeing structure is overlaid + * on the rcu_freeing structure, which itself is overlaid on memsw. + */ +static void vfree_work(struct work_struct *work) +{ +	struct mem_cgroup *memcg; + +	memcg = container_of(work, struct mem_cgroup, work_freeing); +	vfree(memcg); +} +static void vfree_rcu(struct rcu_head *rcu_head) +{ +	struct mem_cgroup *memcg; + +	memcg = container_of(rcu_head, struct mem_cgroup, rcu_freeing); +	INIT_WORK(&memcg->work_freeing, vfree_work); +	schedule_work(&memcg->work_freeing); +} + +/*   * At destroying mem_cgroup, references from swap_cgroup can remain.   * (scanning all at force_empty is too costly...)   * @@ -4802,9 +4843,9 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)  	free_percpu(memcg->stat);  	if (sizeof(struct mem_cgroup) < PAGE_SIZE) -		kfree(memcg); +		kfree_rcu(memcg, rcu_freeing);  	else -		vfree(memcg); +		call_rcu(&memcg->rcu_freeing, vfree_rcu);  }  static void mem_cgroup_get(struct mem_cgroup *memcg) @@ -5075,7 +5116,7 @@ static struct page *mc_handle_present_pte(struct vm_area_struct *vma,  		return NULL;  	if (PageAnon(page)) {  		/* we don't move shared anon */ -		if (!move_anon() || page_mapcount(page) > 1) +		if (!move_anon() || page_mapcount(page) > 2)  			return NULL;  	} else if (!move_file())  		/* we ignore mapcount for file pages */ diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c index 51fdbb490437..eab2a7fb15d1 100644 --- a/net/ipv4/syncookies.c +++ b/net/ipv4/syncookies.c @@ -278,6 +278,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,  	struct rtable *rt;  	__u8 rcv_wscale;  	bool ecn_ok = false; +	struct flowi4 fl4;  	if (!sysctl_tcp_syncookies || !th->ack || th->rst)  		goto out; @@ -346,20 +347,16 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,  	 * hasn't changed since we received the original syn, but I see  	 * no easy way to do this.  	 */ -	{ -		struct flowi4 fl4; - -		flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk), -				   RT_SCOPE_UNIVERSE, IPPROTO_TCP, -				   inet_sk_flowi_flags(sk), -				   (opt && opt->srr) ? opt->faddr : ireq->rmt_addr, -				   ireq->loc_addr, th->source, th->dest); -		security_req_classify_flow(req, flowi4_to_flowi(&fl4)); -		rt = ip_route_output_key(sock_net(sk), &fl4); -		if (IS_ERR(rt)) { -			reqsk_free(req); -			goto out; -		} +	flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk), +			   RT_SCOPE_UNIVERSE, IPPROTO_TCP, +			   inet_sk_flowi_flags(sk), +			   (opt && opt->srr) ? opt->faddr : ireq->rmt_addr, +			   ireq->loc_addr, th->source, th->dest); +	security_req_classify_flow(req, flowi4_to_flowi(&fl4)); +	rt = ip_route_output_key(sock_net(sk), &fl4); +	if (IS_ERR(rt)) { +		reqsk_free(req); +		goto out;  	}  	/* Try to redo what tcp_v4_send_synack did. */ @@ -373,5 +370,10 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,  	ireq->rcv_wscale  = rcv_wscale;  	ret = get_cookie_sock(sk, skb, req, &rt->dst); +	/* ip_queue_xmit() depends on our flow being setup +	 * Normal sockets get it right from inet_csk_route_child_sock() +	 */ +	if (ret) +		inet_sk(ret)->cork.fl.u.ip4 = fl4;  out:	return ret;  } diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index fe9f604ed1e2..3a25cf743f8b 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1470,9 +1470,13 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,  		inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen;  	newinet->inet_id = newtp->write_seq ^ jiffies; -	if (!dst && (dst = inet_csk_route_child_sock(sk, newsk, req)) == NULL) -		goto put_and_exit; - +	if (!dst) { +		dst = inet_csk_route_child_sock(sk, newsk, req); +		if (!dst) +			goto put_and_exit; +	} else { +		/* syncookie case : see end of cookie_v4_check() */ +	}  	sk_setup_caps(newsk, dst);  	tcp_mtup_init(newsk); diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index b853f06cc148..16c33e308121 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -257,7 +257,6 @@ static struct inet6_dev *ip6_mc_find_dev_rcu(struct net *net,  		if (rt) {  			dev = rt->dst.dev; -			dev_hold(dev);  			dst_release(&rt->dst);  		}  	} else diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 92be12bb8d23..24c456e8aa1d 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1090,7 +1090,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,  	struct net *net = dev_net(dev);  	if (unlikely(!idev)) -		return NULL; +		return ERR_PTR(-ENODEV);  	rt = ip6_dst_alloc(&net->ipv6.ip6_dst_ops, dev, 0);  	if (unlikely(!rt)) { diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index 2124977ac31d..ca7e8354e4f8 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c @@ -967,20 +967,21 @@ ctnetlink_del_conntrack(struct sock *ctnl, struct sk_buff *skb,  		}  	} -	if (nf_conntrack_event_report(IPCT_DESTROY, ct, -				      NETLINK_CB(skb).pid, -				      nlmsg_report(nlh)) < 0) { +	if (del_timer(&ct->timeout)) { +		if (nf_conntrack_event_report(IPCT_DESTROY, ct, +					      NETLINK_CB(skb).pid, +					      nlmsg_report(nlh)) < 0) { +			nf_ct_delete_from_lists(ct); +			/* we failed to report the event, try later */ +			nf_ct_insert_dying_list(ct); +			nf_ct_put(ct); +			return 0; +		} +		/* death_by_timeout would report the event again */ +		set_bit(IPS_DYING_BIT, &ct->status);  		nf_ct_delete_from_lists(ct); -		/* we failed to report the event, try later */ -		nf_ct_insert_dying_list(ct);  		nf_ct_put(ct); -		return 0;  	} - -	/* death_by_timeout would report the event again */ -	set_bit(IPS_DYING_BIT, &ct->status); - -	nf_ct_kill(ct);  	nf_ct_put(ct);  	return 0; diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c index 60d47180f043..02a21abea65e 100644 --- a/net/sched/sch_sfq.c +++ b/net/sched/sch_sfq.c @@ -469,11 +469,15 @@ enqueue:  	if (slot->qlen == 1) {		/* The flow is new */  		if (q->tail == NULL) {	/* It is the first flow */  			slot->next = x; -			q->tail = slot;  		} else {  			slot->next = q->tail->next;  			q->tail->next = x;  		} +		/* We put this flow at the end of our flow list. +		 * This might sound unfair for a new flow to wait after old ones, +		 * but we could endup servicing new flows only, and freeze old ones. +		 */ +		q->tail = slot;  		/* We could use a bigger initial quantum for new flows */  		slot->allot = q->scaled_quantum;  	} diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 7c12650165ae..8a4b9bccf8b2 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -249,6 +249,8 @@ LIB_H += util/include/asm/uaccess.h  LIB_H += util/include/dwarf-regs.h  LIB_H += util/include/asm/dwarf2.h  LIB_H += util/include/asm/cpufeature.h +LIB_H += util/include/asm/unistd_32.h +LIB_H += util/include/asm/unistd_64.h  LIB_H += perf.h  LIB_H += util/annotate.h  LIB_H += util/cache.h diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c index eba80c292945..2f7073d107fd 100644 --- a/tools/perf/arch/powerpc/util/header.c +++ b/tools/perf/arch/powerpc/util/header.c @@ -25,7 +25,7 @@ get_cpuid(char *buffer, size_t sz)  	pvr = mfspr(SPRN_PVR); -	nb = snprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr)); +	nb = scnprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));  	/* look for end marker to ensure the entire data fit */  	if (strchr(buffer, '$')) { diff --git a/tools/perf/arch/x86/util/header.c b/tools/perf/arch/x86/util/header.c index f94006068d2b..146d12a1cec0 100644 --- a/tools/perf/arch/x86/util/header.c +++ b/tools/perf/arch/x86/util/header.c @@ -48,7 +48,7 @@ get_cpuid(char *buffer, size_t sz)  		if (family >= 0x6)  			model += ((a >> 16) & 0xf) << 4;  	} -	nb = snprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step); +	nb = scnprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step);  	/* look for end marker to ensure the entire data fit */  	if (strchr(buffer, '$')) { diff --git a/tools/perf/perf.h b/tools/perf/perf.h index 16e7d20eee83..3afa39ac1d40 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h @@ -10,6 +10,9 @@ void get_term_dimensions(struct winsize *ws);  #define rmb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")  #define cpu_relax()	asm volatile("rep; nop" ::: "memory");  #define CPUINFO_PROC	"model name" +#ifndef __NR_perf_event_open +# define __NR_perf_event_open 336 +#endif  #endif  #if defined(__x86_64__) @@ -17,6 +20,9 @@ void get_term_dimensions(struct winsize *ws);  #define rmb()		asm volatile("lfence" ::: "memory")  #define cpu_relax()	asm volatile("rep; nop" ::: "memory");  #define CPUINFO_PROC	"model name" +#ifndef __NR_perf_event_open +# define __NR_perf_event_open 298 +#endif  #endif  #ifdef __powerpc__ diff --git a/tools/perf/util/color.c b/tools/perf/util/color.c index 521c38a79190..11e46da17bbb 100644 --- a/tools/perf/util/color.c +++ b/tools/perf/util/color.c @@ -1,3 +1,4 @@ +#include <linux/kernel.h>  #include "cache.h"  #include "color.h" @@ -182,12 +183,12 @@ static int __color_vsnprintf(char *bf, size_t size, const char *color,  	}  	if (perf_use_color_default && *color) -		r += snprintf(bf, size, "%s", color); -	r += vsnprintf(bf + r, size - r, fmt, args); +		r += scnprintf(bf, size, "%s", color); +	r += vscnprintf(bf + r, size - r, fmt, args);  	if (perf_use_color_default && *color) -		r += snprintf(bf + r, size - r, "%s", PERF_COLOR_RESET); +		r += scnprintf(bf + r, size - r, "%s", PERF_COLOR_RESET);  	if (trail) -		r += snprintf(bf + r, size - r, "%s", trail); +		r += scnprintf(bf + r, size - r, "%s", trail);  	return r;  } diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index ecd7f4dd7eea..14bb035c5fd9 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -280,7 +280,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,  	if (realname == NULL || filename == NULL || linkname == NULL)  		goto out_free; -	len = snprintf(filename, size, "%s%s%s", +	len = scnprintf(filename, size, "%s%s%s",  		       debugdir, is_kallsyms ? "/" : "", realname);  	if (mkdir_p(filename, 0755))  		goto out_free; @@ -295,7 +295,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,  			goto out_free;  	} -	len = snprintf(linkname, size, "%s/.build-id/%.2s", +	len = scnprintf(linkname, size, "%s/.build-id/%.2s",  		       debugdir, sbuild_id);  	if (access(linkname, X_OK) && mkdir_p(linkname, 0755)) diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 6f505d1abac7..e11e482bd185 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -768,7 +768,7 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,  						     sep ? "%.2f" : "   %6.2f%%",  						     (period * 100.0) / total);  		else -			ret = snprintf(s, size, sep ? "%.2f" : "   %6.2f%%", +			ret = scnprintf(s, size, sep ? "%.2f" : "   %6.2f%%",  				       (period * 100.0) / total);  		if (symbol_conf.show_cpu_utilization) {  			ret += percent_color_snprintf(s + ret, size - ret, @@ -791,20 +791,20 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,  			}  		}  	} else -		ret = snprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period); +		ret = scnprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period);  	if (symbol_conf.show_nr_samples) {  		if (sep) -			ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events); +			ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events);  		else -			ret += snprintf(s + ret, size - ret, "%11" PRIu64, nr_events); +			ret += scnprintf(s + ret, size - ret, "%11" PRIu64, nr_events);  	}  	if (symbol_conf.show_total_period) {  		if (sep) -			ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period); +			ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period);  		else -			ret += snprintf(s + ret, size - ret, " %12" PRIu64, period); +			ret += scnprintf(s + ret, size - ret, " %12" PRIu64, period);  	}  	if (pair_hists) { @@ -819,25 +819,25 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,  		diff = new_percent - old_percent;  		if (fabs(diff) >= 0.01) -			snprintf(bf, sizeof(bf), "%+4.2F%%", diff); +			ret += scnprintf(bf, sizeof(bf), "%+4.2F%%", diff);  		else -			snprintf(bf, sizeof(bf), " "); +			ret += scnprintf(bf, sizeof(bf), " ");  		if (sep) -			ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf); +			ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);  		else -			ret += snprintf(s + ret, size - ret, "%11.11s", bf); +			ret += scnprintf(s + ret, size - ret, "%11.11s", bf);  		if (show_displacement) {  			if (displacement) -				snprintf(bf, sizeof(bf), "%+4ld", displacement); +				ret += scnprintf(bf, sizeof(bf), "%+4ld", displacement);  			else -				snprintf(bf, sizeof(bf), " "); +				ret += scnprintf(bf, sizeof(bf), " ");  			if (sep) -				ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf); +				ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);  			else -				ret += snprintf(s + ret, size - ret, "%6.6s", bf); +				ret += scnprintf(s + ret, size - ret, "%6.6s", bf);  		}  	} @@ -855,7 +855,7 @@ int hist_entry__snprintf(struct hist_entry *he, char *s, size_t size,  		if (se->elide)  			continue; -		ret += snprintf(s + ret, size - ret, "%s", sep ?: "  "); +		ret += scnprintf(s + ret, size - ret, "%s", sep ?: "  ");  		ret += se->se_snprintf(he, s + ret, size - ret,  				       hists__col_len(hists, se->se_width_idx));  	} diff --git a/tools/perf/util/include/asm/unistd_32.h b/tools/perf/util/include/asm/unistd_32.h new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/tools/perf/util/include/asm/unistd_32.h @@ -0,0 +1 @@ + diff --git a/tools/perf/util/include/asm/unistd_64.h b/tools/perf/util/include/asm/unistd_64.h new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/tools/perf/util/include/asm/unistd_64.h @@ -0,0 +1 @@ + diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index b029296d20d9..c7a6f6faf91e 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -165,7 +165,7 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)  	struct tracepoint_path *path = NULL;  	DIR *sys_dir, *evt_dir;  	struct dirent *sys_next, *evt_next, sys_dirent, evt_dirent; -	char id_buf[4]; +	char id_buf[24];  	int fd;  	u64 id;  	char evt_path[MAXPATHLEN]; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 16da30d8d765..076c9d4e1ea4 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -33,6 +33,9 @@ static int repsep_snprintf(char *bf, size_t size, const char *fmt, ...)  		}  	}  	va_end(ap); + +	if (n >= (int)size) +		return size - 1;  	return n;  } diff --git a/tools/perf/util/strbuf.c b/tools/perf/util/strbuf.c index 92e068517c1a..2eeb51baf077 100644 --- a/tools/perf/util/strbuf.c +++ b/tools/perf/util/strbuf.c @@ -1,4 +1,5 @@  #include "cache.h" +#include <linux/kernel.h>  int prefixcmp(const char *str, const char *prefix)  { @@ -89,14 +90,14 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...)  	if (!strbuf_avail(sb))  		strbuf_grow(sb, 64);  	va_start(ap, fmt); -	len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); +	len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);  	va_end(ap);  	if (len < 0) -		die("your vsnprintf is broken"); +		die("your vscnprintf is broken");  	if (len > strbuf_avail(sb)) {  		strbuf_grow(sb, len);  		va_start(ap, fmt); -		len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); +		len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);  		va_end(ap);  		if (len > strbuf_avail(sb)) {  			die("this should not happen, your snprintf is broken"); diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c index e81aef1f2569..bb9197c9c4a4 100644 --- a/tools/perf/util/ui/browsers/hists.c +++ b/tools/perf/util/ui/browsers/hists.c @@ -837,15 +837,15 @@ static int hists__browser_title(struct hists *self, char *bf, size_t size,  	unsigned long nr_events = self->stats.nr_events[PERF_RECORD_SAMPLE];  	nr_events = convert_unit(nr_events, &unit); -	printed = snprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name); +	printed = scnprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);  	if (thread) -		printed += snprintf(bf + printed, size - printed, +		printed += scnprintf(bf + printed, size - printed,  				    ", Thread: %s(%d)",  				    (thread->comm_set ? thread->comm : ""),  				    thread->pid);  	if (dso) -		printed += snprintf(bf + printed, size - printed, +		printed += scnprintf(bf + printed, size - printed,  				    ", DSO: %s", dso->short_name);  	return printed;  } @@ -1095,7 +1095,7 @@ static void perf_evsel_menu__write(struct ui_browser *browser,  						       HE_COLORSET_NORMAL);  	nr_events = convert_unit(nr_events, &unit); -	printed = snprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events, +	printed = scnprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events,  			   unit, unit == ' ' ? "" : " ", ev_name);  	slsmg_printf("%s", bf); @@ -1105,8 +1105,8 @@ static void perf_evsel_menu__write(struct ui_browser *browser,  		if (!current_entry)  			ui_browser__set_color(browser, HE_COLORSET_TOP);  		nr_events = convert_unit(nr_events, &unit); -		snprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", nr_events, -			 unit, unit == ' ' ? "" : " "); +		printed += scnprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", +				     nr_events, unit, unit == ' ' ? "" : " ");  		warn = bf;  	} diff --git a/tools/perf/util/ui/helpline.c b/tools/perf/util/ui/helpline.c index 4f48f5901b30..2f950c2641c8 100644 --- a/tools/perf/util/ui/helpline.c +++ b/tools/perf/util/ui/helpline.c @@ -64,7 +64,7 @@ int ui_helpline__show_help(const char *format, va_list ap)  	static int backlog;  	pthread_mutex_lock(&ui__lock); -	ret = vsnprintf(ui_helpline__last_msg + backlog, +	ret = vscnprintf(ui_helpline__last_msg + backlog,  			sizeof(ui_helpline__last_msg) - backlog, format, ap);  	backlog += ret; |