aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS6
-rw-r--r--arch/arm/kernel/entry-common.S4
-rw-r--r--arch/arm/kernel/fiq.c4
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h2
-rw-r--r--arch/arm/mach-mx1/devices.c2
-rw-r--r--arch/arm/mach-mx1/mx1ads.c1
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c4
-rw-r--r--arch/arm/mach-orion5x/common.c7
-rw-r--r--arch/arm/mach-s3c6410/mach-smdk6410.c4
-rw-r--r--arch/arm/mm/copypage-feroceon.c2
-rw-r--r--arch/arm/mm/copypage-v3.c2
-rw-r--r--arch/arm/mm/copypage-v4mc.c2
-rw-r--r--arch/arm/mm/copypage-v4wb.c2
-rw-r--r--arch/arm/mm/copypage-v4wt.c2
-rw-r--r--arch/arm/mm/copypage-xsc3.c2
-rw-r--r--arch/arm/mm/copypage-xscale.c2
-rw-r--r--arch/arm/mm/dma-mapping.c20
-rw-r--r--arch/arm/mm/init.c2
-rw-r--r--arch/arm/mm/mmap.c2
-rw-r--r--arch/arm/plat-omap/Makefile3
-rw-r--r--arch/arm/plat-omap/common.c14
-rw-r--r--arch/arm/plat-omap/include/mach/common.h2
-rw-r--r--arch/arm/plat-omap/include/mach/pm.h2
-rw-r--r--arch/arm/plat-s3c64xx/clock.c2
-rw-r--r--arch/arm/plat-s3c64xx/gpiolib.c2
-rw-r--r--arch/arm/plat-s3c64xx/include/plat/irqs.h2
-rw-r--r--arch/arm/plat-s3c64xx/irq-eint.c15
-rw-r--r--arch/arm/plat-s3c64xx/irq.c2
-rw-r--r--arch/arm/plat-s3c64xx/s3c6400-clock.c24
-rw-r--r--arch/arm/tools/mach-types136
-rw-r--r--arch/mips/Kconfig26
-rw-r--r--arch/mips/Makefile2
-rw-r--r--arch/mips/configs/markeins_defconfig (renamed from arch/mips/configs/emma2rh_defconfig)10
-rw-r--r--arch/mips/emma/Kconfig29
-rw-r--r--arch/mips/emma/markeins/platform.c39
-rw-r--r--arch/mips/include/asm/seccomp.h4
-rw-r--r--arch/mips/include/asm/thread_info.h6
-rw-r--r--arch/parisc/configs/712_defconfig429
-rw-r--r--arch/parisc/configs/a500_defconfig490
-rw-r--r--arch/parisc/configs/b180_defconfig433
-rw-r--r--arch/parisc/configs/c3000_defconfig575
-rw-r--r--arch/parisc/configs/default_defconfig585
-rw-r--r--arch/parisc/hpux/fs.c1
-rw-r--r--arch/parisc/include/asm/assembly.h11
-rw-r--r--arch/parisc/include/asm/io.h51
-rw-r--r--arch/parisc/include/asm/irq.h2
-rw-r--r--arch/parisc/include/asm/uaccess.h1
-rw-r--r--arch/parisc/kernel/cache.c5
-rw-r--r--arch/parisc/kernel/entry.S6
-rw-r--r--arch/parisc/kernel/firmware.c12
-rw-r--r--arch/parisc/kernel/irq.c18
-rw-r--r--arch/parisc/kernel/pci-dma.c22
-rw-r--r--arch/parisc/mm/init.c6
-rw-r--r--arch/x86/Kconfig8
-rw-r--r--arch/x86/boot/Makefile23
-rw-r--r--arch/x86/boot/header.S29
-rw-r--r--arch/x86/boot/pm.c44
-rw-r--r--arch/x86/boot/tools/build.c9
-rw-r--r--arch/x86/include/asm/boot.h4
-rwxr-xr-xarch/x86/include/asm/cpu_debug.h193
-rw-r--r--arch/x86/include/asm/desc.h3
-rw-r--r--arch/x86/include/asm/ftrace.h7
-rw-r--r--arch/x86/include/asm/highmem.h1
-rw-r--r--arch/x86/include/asm/kexec.h13
-rw-r--r--arch/x86/include/asm/linkage.h13
-rw-r--r--arch/x86/kernel/Makefile3
-rw-r--r--arch/x86/kernel/cpu/Makefile2
-rw-r--r--arch/x86/kernel/cpu/common.c6
-rwxr-xr-xarch/x86/kernel/cpu/cpu_debug.c785
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_64.c4
-rw-r--r--arch/x86/kernel/entry_32.S18
-rw-r--r--arch/x86/kernel/entry_64.S4
-rw-r--r--arch/x86/kernel/ftrace.c63
-rw-r--r--arch/x86/kernel/machine_kexec_32.c17
-rw-r--r--arch/x86/kernel/machine_kexec_64.c99
-rw-r--r--arch/x86/kernel/quirks.c3
-rw-r--r--arch/x86/kernel/relocate_kernel_32.S24
-rw-r--r--arch/x86/kernel/relocate_kernel_64.S189
-rw-r--r--arch/x86/kernel/visws_quirks.c2
-rw-r--r--arch/x86/kernel/vmlinux_64.lds.S7
-rw-r--r--arch/x86/lib/memcpy_64.S143
-rw-r--r--arch/x86/mm/highmem_32.c19
-rw-r--r--arch/x86/mm/iomap_32.c13
-rw-r--r--arch/x86/mm/kmmio.c2
-rw-r--r--drivers/ata/ata_piix.c37
-rw-r--r--drivers/ata/libata-sff.c6
-rw-r--r--drivers/ata/sata_mv.c3
-rw-r--r--drivers/block/xsysace.c22
-rw-r--r--drivers/char/agp/parisc-agp.c23
-rw-r--r--drivers/ide/ide-atapi.c12
-rw-r--r--drivers/ide/ide-dma.c12
-rw-r--r--drivers/ide/ide-floppy.c6
-rw-r--r--drivers/media/dvb/bt8xx/dst.c2
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c7
-rw-r--r--drivers/media/dvb/frontends/stb0899_algo.c14
-rw-r--r--drivers/media/dvb/frontends/stb0899_drv.c2
-rw-r--r--drivers/media/dvb/frontends/stb0899_priv.h12
-rw-r--r--drivers/media/dvb/frontends/stb6100.c4
-rw-r--r--drivers/media/dvb/frontends/zl10353.c2
-rw-r--r--drivers/media/dvb/frontends/zl10353.h3
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k4aa.c6
-rw-r--r--drivers/media/video/saa7134/saa7134-dvb.c1
-rw-r--r--drivers/media/video/tvaudio.c2
-rw-r--r--drivers/media/video/zoran/Kconfig1
-rw-r--r--drivers/parisc/dino.c13
-rw-r--r--drivers/parisc/gsc.c39
-rw-r--r--drivers/parisc/iosapic.c16
-rw-r--r--drivers/parisc/lba_pci.c4
-rw-r--r--drivers/parisc/sba_iommu.c63
-rw-r--r--drivers/scsi/fcoe/fc_transport_fcoe.c91
-rw-r--r--drivers/scsi/fcoe/fcoe_sw.c56
-rw-r--r--drivers/scsi/fcoe/libfcoe.c318
-rw-r--r--drivers/scsi/lasi700.c2
-rw-r--r--drivers/scsi/libfc/fc_disc.c63
-rw-r--r--drivers/scsi/libfc/fc_exch.c32
-rw-r--r--drivers/scsi/libfc/fc_fcp.c56
-rw-r--r--drivers/scsi/libfc/fc_lport.c173
-rw-r--r--drivers/scsi/libfc/fc_rport.c197
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c9
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c19
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c3
-rw-r--r--drivers/scsi/qla2xxx/qla_mid.c10
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
-rw-r--r--drivers/scsi/sd.c26
-rw-r--r--drivers/scsi/zalon.c2
-rw-r--r--fs/bio-integrity.c5
-rw-r--r--fs/bio.c6
-rw-r--r--fs/ecryptfs/crypto.c2
-rw-r--r--fs/ecryptfs/ecryptfs_kernel.h3
-rw-r--r--fs/ecryptfs/keystore.c3
-rw-r--r--fs/ecryptfs/main.c5
-rw-r--r--fs/lockd/clntlock.c51
-rw-r--r--fs/nfs/client.c73
-rw-r--r--fs/nfs/dir.c8
-rw-r--r--fs/nfs/nfs3acl.c27
-rw-r--r--fs/nfs/nfs3xdr.c34
-rw-r--r--fs/nfs/nfs4namespace.c15
-rw-r--r--fs/ocfs2/alloc.c3
-rw-r--r--fs/ocfs2/aops.c7
-rw-r--r--fs/ocfs2/namei.c3
-rw-r--r--fs/ocfs2/ocfs2_fs.h6
-rw-r--r--fs/ocfs2/xattr.c30
-rw-r--r--fs/ramfs/file-nommu.c4
-rw-r--r--include/asm-generic/vmlinux.lds.h11
-rw-r--r--include/linux/bio.h4
-rw-r--r--include/linux/compiler-gcc.h10
-rw-r--r--include/linux/ftrace.h14
-rw-r--r--include/linux/ide.h1
-rw-r--r--include/linux/lockd/lockd.h8
-rw-r--r--include/linux/nfs_xdr.h2
-rw-r--r--include/linux/nfsacl.h3
-rw-r--r--include/linux/syscalls.h60
-rw-r--r--include/scsi/fc/fc_fcoe.h4
-rw-r--r--include/scsi/fc/fc_fs.h5
-rw-r--r--include/scsi/libfc.h138
-rw-r--r--include/scsi/libfcoe.h9
-rw-r--r--kernel/trace/trace.h17
-rw-r--r--kernel/trace/trace_syscalls.c146
-rw-r--r--mm/vmscan.c2
-rw-r--r--net/sunrpc/sched.c33
-rw-r--r--net/sunrpc/xprt.c2
-rw-r--r--net/sunrpc/xprtsock.c23
163 files changed, 4837 insertions, 2106 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index c0a662d1c284..a17f0b161e03 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3356,10 +3356,8 @@ S: Maintained
3356PARISC ARCHITECTURE 3356PARISC ARCHITECTURE
3357P: Kyle McMartin 3357P: Kyle McMartin
3358M: kyle@mcmartin.ca 3358M: kyle@mcmartin.ca
3359P: Matthew Wilcox 3359P: Helge Deller
3360M: matthew@wil.cx 3360M: deller@gmx.de
3361P: Grant Grundler
3362M: grundler@parisc-linux.org
3363L: linux-parisc@vger.kernel.org 3361L: linux-parisc@vger.kernel.org
3364W: http://www.parisc-linux.org/ 3362W: http://www.parisc-linux.org/
3365T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git 3363T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 49a6ba926c2b..159d0416f270 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -111,6 +111,7 @@ ENTRY(mcount)
111 .globl mcount_call 111 .globl mcount_call
112mcount_call: 112mcount_call:
113 bl ftrace_stub 113 bl ftrace_stub
114 ldr lr, [fp, #-4] @ restore lr
114 ldmia sp!, {r0-r3, pc} 115 ldmia sp!, {r0-r3, pc}
115 116
116ENTRY(ftrace_caller) 117ENTRY(ftrace_caller)
@@ -122,6 +123,7 @@ ENTRY(ftrace_caller)
122 .globl ftrace_call 123 .globl ftrace_call
123ftrace_call: 124ftrace_call:
124 bl ftrace_stub 125 bl ftrace_stub
126 ldr lr, [fp, #-4] @ restore lr
125 ldmia sp!, {r0-r3, pc} 127 ldmia sp!, {r0-r3, pc}
126 128
127#else 129#else
@@ -133,6 +135,7 @@ ENTRY(mcount)
133 adr r0, ftrace_stub 135 adr r0, ftrace_stub
134 cmp r0, r2 136 cmp r0, r2
135 bne trace 137 bne trace
138 ldr lr, [fp, #-4] @ restore lr
136 ldmia sp!, {r0-r3, pc} 139 ldmia sp!, {r0-r3, pc}
137 140
138trace: 141trace:
@@ -141,6 +144,7 @@ trace:
141 sub r0, r0, #MCOUNT_INSN_SIZE 144 sub r0, r0, #MCOUNT_INSN_SIZE
142 mov lr, pc 145 mov lr, pc
143 mov pc, r2 146 mov pc, r2
147 mov lr, r1 @ restore lr
144 ldmia sp!, {r0-r3, pc} 148 ldmia sp!, {r0-r3, pc}
145 149
146#endif /* CONFIG_DYNAMIC_FTRACE */ 150#endif /* CONFIG_DYNAMIC_FTRACE */
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
index 36f81d967979..6ff7919613d7 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -88,7 +88,7 @@ void set_fiq_handler(void *start, unsigned int length)
88 * disable irqs for the duration. Note - these functions are almost 88 * disable irqs for the duration. Note - these functions are almost
89 * entirely coded in assembly. 89 * entirely coded in assembly.
90 */ 90 */
91void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs) 91void __naked set_fiq_regs(struct pt_regs *regs)
92{ 92{
93 register unsigned long tmp; 93 register unsigned long tmp;
94 asm volatile ( 94 asm volatile (
@@ -106,7 +106,7 @@ void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
106 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); 106 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
107} 107}
108 108
109void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs) 109void __naked get_fiq_regs(struct pt_regs *regs)
110{ 110{
111 register unsigned long tmp; 111 register unsigned long tmp;
112 asm volatile ( 112 asm volatile (
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index 88f7e88f152f..05f0f4f2f3ce 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -4,6 +4,8 @@
4 4
5#ifndef __ASSEMBLY__ 5#ifndef __ASSEMBLY__
6 6
7struct i2c_board_info;
8
7struct ep93xx_eth_data 9struct ep93xx_eth_data
8{ 10{
9 unsigned char dev_addr[6]; 11 unsigned char dev_addr[6];
diff --git a/arch/arm/mach-mx1/devices.c b/arch/arm/mach-mx1/devices.c
index 686d8d2dbb24..a95644193f3f 100644
--- a/arch/arm/mach-mx1/devices.c
+++ b/arch/arm/mach-mx1/devices.c
@@ -23,6 +23,8 @@
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/platform_device.h> 24#include <linux/platform_device.h>
25#include <linux/gpio.h> 25#include <linux/gpio.h>
26
27#include <mach/irqs.h>
26#include <mach/hardware.h> 28#include <mach/hardware.h>
27 29
28static struct resource imx_csi_resources[] = { 30static struct resource imx_csi_resources[] = {
diff --git a/arch/arm/mach-mx1/mx1ads.c b/arch/arm/mach-mx1/mx1ads.c
index 2e4b185fe4a9..3200cf60e384 100644
--- a/arch/arm/mach-mx1/mx1ads.c
+++ b/arch/arm/mach-mx1/mx1ads.c
@@ -21,6 +21,7 @@
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include <asm/mach/time.h> 22#include <asm/mach/time.h>
23 23
24#include <mach/irqs.h>
24#include <mach/hardware.h> 25#include <mach/hardware.h>
25#include <mach/common.h> 26#include <mach/common.h>
26#include <mach/imx-uart.h> 27#include <mach/imx-uart.h>
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 38c88fbe658d..e39cd2c46cfa 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -178,7 +178,9 @@ static int __init omap3_beagle_i2c_init(void)
178#ifdef CONFIG_I2C2_OMAP_BEAGLE 178#ifdef CONFIG_I2C2_OMAP_BEAGLE
179 omap_register_i2c_bus(2, 400, NULL, 0); 179 omap_register_i2c_bus(2, 400, NULL, 0);
180#endif 180#endif
181 omap_register_i2c_bus(3, 400, NULL, 0); 181 /* Bus 3 is attached to the DVI port where devices like the pico DLP
182 * projector don't work reliably with 400kHz */
183 omap_register_i2c_bus(3, 100, NULL, 0);
182 return 0; 184 return 0;
183} 185}
184 186
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 0a623379789f..8a0e49d84256 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -431,6 +431,10 @@ void __init orion5x_uart1_init(void)
431/***************************************************************************** 431/*****************************************************************************
432 * XOR engine 432 * XOR engine
433 ****************************************************************************/ 433 ****************************************************************************/
434struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
435 .dram = &orion5x_mbus_dram_info,
436};
437
434static struct resource orion5x_xor_shared_resources[] = { 438static struct resource orion5x_xor_shared_resources[] = {
435 { 439 {
436 .name = "xor low", 440 .name = "xor low",
@@ -448,6 +452,9 @@ static struct resource orion5x_xor_shared_resources[] = {
448static struct platform_device orion5x_xor_shared = { 452static struct platform_device orion5x_xor_shared = {
449 .name = MV_XOR_SHARED_NAME, 453 .name = MV_XOR_SHARED_NAME,
450 .id = 0, 454 .id = 0,
455 .dev = {
456 .platform_data = &orion5x_xor_shared_data,
457 },
451 .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources), 458 .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
452 .resource = orion5x_xor_shared_resources, 459 .resource = orion5x_xor_shared_resources,
453}; 460};
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index 3c4d47145c83..25f7935576f8 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -129,7 +129,7 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = {
129 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, 129 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
130}; 130};
131 131
132struct map_desc smdk6410_iodesc[] = {}; 132static struct map_desc smdk6410_iodesc[] = {};
133 133
134static struct platform_device *smdk6410_devices[] __initdata = { 134static struct platform_device *smdk6410_devices[] __initdata = {
135#ifdef CONFIG_SMDK6410_SD_CH0 135#ifdef CONFIG_SMDK6410_SD_CH0
@@ -146,7 +146,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
146 146
147static struct i2c_board_info i2c_devs0[] __initdata = { 147static struct i2c_board_info i2c_devs0[] __initdata = {
148 { I2C_BOARD_INFO("24c08", 0x50), }, 148 { I2C_BOARD_INFO("24c08", 0x50), },
149 { I2C_BOARD_INFO("WM8580", 0X1b), }, 149 { I2C_BOARD_INFO("wm8580", 0x1b), },
150}; 150};
151 151
152static struct i2c_board_info i2c_devs1[] __initdata = { 152static struct i2c_board_info i2c_devs1[] __initdata = {
diff --git a/arch/arm/mm/copypage-feroceon.c b/arch/arm/mm/copypage-feroceon.c
index c3ba6a94da0c..70997d5bee2d 100644
--- a/arch/arm/mm/copypage-feroceon.c
+++ b/arch/arm/mm/copypage-feroceon.c
@@ -13,7 +13,7 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/highmem.h> 14#include <linux/highmem.h>
15 15
16static void __attribute__((naked)) 16static void __naked
17feroceon_copy_user_page(void *kto, const void *kfrom) 17feroceon_copy_user_page(void *kto, const void *kfrom)
18{ 18{
19 asm("\ 19 asm("\
diff --git a/arch/arm/mm/copypage-v3.c b/arch/arm/mm/copypage-v3.c
index 70ed96c8af8e..de9c06854ad7 100644
--- a/arch/arm/mm/copypage-v3.c
+++ b/arch/arm/mm/copypage-v3.c
@@ -15,7 +15,7 @@
15 * 15 *
16 * FIXME: do we need to handle cache stuff... 16 * FIXME: do we need to handle cache stuff...
17 */ 17 */
18static void __attribute__((naked)) 18static void __naked
19v3_copy_user_page(void *kto, const void *kfrom) 19v3_copy_user_page(void *kto, const void *kfrom)
20{ 20{
21 asm("\n\ 21 asm("\n\
diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c
index 1601698b9800..7370a7142b04 100644
--- a/arch/arm/mm/copypage-v4mc.c
+++ b/arch/arm/mm/copypage-v4mc.c
@@ -44,7 +44,7 @@ static DEFINE_SPINLOCK(minicache_lock);
44 * instruction. If your processor does not supply this, you have to write your 44 * instruction. If your processor does not supply this, you have to write your
45 * own copy_user_highpage that does the right thing. 45 * own copy_user_highpage that does the right thing.
46 */ 46 */
47static void __attribute__((naked)) 47static void __naked
48mc_copy_user_page(void *from, void *to) 48mc_copy_user_page(void *from, void *to)
49{ 49{
50 asm volatile( 50 asm volatile(
diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c
index 3ec93dab7656..9ab098414227 100644
--- a/arch/arm/mm/copypage-v4wb.c
+++ b/arch/arm/mm/copypage-v4wb.c
@@ -22,7 +22,7 @@
22 * instruction. If your processor does not supply this, you have to write your 22 * instruction. If your processor does not supply this, you have to write your
23 * own copy_user_highpage that does the right thing. 23 * own copy_user_highpage that does the right thing.
24 */ 24 */
25static void __attribute__((naked)) 25static void __naked
26v4wb_copy_user_page(void *kto, const void *kfrom) 26v4wb_copy_user_page(void *kto, const void *kfrom)
27{ 27{
28 asm("\ 28 asm("\
diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c
index 0f1188efae45..300efafd6643 100644
--- a/arch/arm/mm/copypage-v4wt.c
+++ b/arch/arm/mm/copypage-v4wt.c
@@ -20,7 +20,7 @@
20 * dirty data in the cache. However, we do have to ensure that 20 * dirty data in the cache. However, we do have to ensure that
21 * subsequent reads are up to date. 21 * subsequent reads are up to date.
22 */ 22 */
23static void __attribute__((naked)) 23static void __naked
24v4wt_copy_user_page(void *kto, const void *kfrom) 24v4wt_copy_user_page(void *kto, const void *kfrom)
25{ 25{
26 asm("\ 26 asm("\
diff --git a/arch/arm/mm/copypage-xsc3.c b/arch/arm/mm/copypage-xsc3.c
index 39a994542cad..bc4525f5ab23 100644
--- a/arch/arm/mm/copypage-xsc3.c
+++ b/arch/arm/mm/copypage-xsc3.c
@@ -29,7 +29,7 @@
29 * if we eventually end up using our copied page. 29 * if we eventually end up using our copied page.
30 * 30 *
31 */ 31 */
32static void __attribute__((naked)) 32static void __naked
33xsc3_mc_copy_user_page(void *kto, const void *kfrom) 33xsc3_mc_copy_user_page(void *kto, const void *kfrom)
34{ 34{
35 asm("\ 35 asm("\
diff --git a/arch/arm/mm/copypage-xscale.c b/arch/arm/mm/copypage-xscale.c
index d18f2397ee2d..76824d3e966a 100644
--- a/arch/arm/mm/copypage-xscale.c
+++ b/arch/arm/mm/copypage-xscale.c
@@ -42,7 +42,7 @@ static DEFINE_SPINLOCK(minicache_lock);
42 * Dcache aliasing issue. The writes will be forwarded to the write buffer, 42 * Dcache aliasing issue. The writes will be forwarded to the write buffer,
43 * and merged as appropriate. 43 * and merged as appropriate.
44 */ 44 */
45static void __attribute__((naked)) 45static void __naked
46mc_copy_user_page(void *from, void *to) 46mc_copy_user_page(void *from, void *to)
47{ 47{
48 /* 48 /*
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 310e479309ef..f1ef5613ccd4 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -490,26 +490,30 @@ core_initcall(consistent_init);
490 */ 490 */
491void dma_cache_maint(const void *start, size_t size, int direction) 491void dma_cache_maint(const void *start, size_t size, int direction)
492{ 492{
493 const void *end = start + size; 493 void (*inner_op)(const void *, const void *);
494 void (*outer_op)(unsigned long, unsigned long);
494 495
495 BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1)); 496 BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
496 497
497 switch (direction) { 498 switch (direction) {
498 case DMA_FROM_DEVICE: /* invalidate only */ 499 case DMA_FROM_DEVICE: /* invalidate only */
499 dmac_inv_range(start, end); 500 inner_op = dmac_inv_range;
500 outer_inv_range(__pa(start), __pa(end)); 501 outer_op = outer_inv_range;
501 break; 502 break;
502 case DMA_TO_DEVICE: /* writeback only */ 503 case DMA_TO_DEVICE: /* writeback only */
503 dmac_clean_range(start, end); 504 inner_op = dmac_clean_range;
504 outer_clean_range(__pa(start), __pa(end)); 505 outer_op = outer_clean_range;
505 break; 506 break;
506 case DMA_BIDIRECTIONAL: /* writeback and invalidate */ 507 case DMA_BIDIRECTIONAL: /* writeback and invalidate */
507 dmac_flush_range(start, end); 508 inner_op = dmac_flush_range;
508 outer_flush_range(__pa(start), __pa(end)); 509 outer_op = outer_flush_range;
509 break; 510 break;
510 default: 511 default:
511 BUG(); 512 BUG();
512 } 513 }
514
515 inner_op(start, start + size);
516 outer_op(__pa(start), __pa(start) + size);
513} 517}
514EXPORT_SYMBOL(dma_cache_maint); 518EXPORT_SYMBOL(dma_cache_maint);
515 519
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 34df4d9d03a6..80fd3b69ae1f 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -382,7 +382,7 @@ void __init bootmem_init(void)
382 for_each_node(node) 382 for_each_node(node)
383 bootmem_free_node(node, mi); 383 bootmem_free_node(node, mi);
384 384
385 high_memory = __va(memend_pfn << PAGE_SHIFT); 385 high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
386 386
387 /* 387 /*
388 * This doesn't seem to be used by the Linux memory manager any 388 * This doesn't seem to be used by the Linux memory manager any
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index 5358fcc7f61e..f7457fea6de8 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -124,7 +124,7 @@ int valid_phys_addr_range(unsigned long addr, size_t size)
124{ 124{
125 if (addr < PHYS_OFFSET) 125 if (addr < PHYS_OFFSET)
126 return 0; 126 return 0;
127 if (addr + size > __pa(high_memory)) 127 if (addr + size >= __pa(high_memory - 1))
128 return 0; 128 return 0;
129 129
130 return 1; 130 return 1;
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index deaff58878a2..04a100cfb8e5 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -18,7 +18,8 @@ obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
18obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o 18obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
19obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o 19obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
20obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o 20obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
21obj-$(CONFIG_I2C_OMAP) += i2c.o 21i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
22obj-y += $(i2c-omap-m) $(i2c-omap-y)
22 23
23# OMAP mailbox framework 24# OMAP mailbox framework
24obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o 25obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index 0843b8882f93..6825fbb5a056 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -200,20 +200,16 @@ static struct clocksource clocksource_32k = {
200}; 200};
201 201
202/* 202/*
203 * Rounds down to nearest nsec.
204 */
205unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
206{
207 return cyc2ns(&clocksource_32k, ticks_32k);
208}
209
210/*
211 * Returns current time from boot in nsecs. It's OK for this to wrap 203 * Returns current time from boot in nsecs. It's OK for this to wrap
212 * around for now, as it's just a relative time stamp. 204 * around for now, as it's just a relative time stamp.
213 */ 205 */
214unsigned long long sched_clock(void) 206unsigned long long sched_clock(void)
215{ 207{
216 return omap_32k_ticks_to_nsecs(omap_32k_read()); 208 unsigned long long ret;
209
210 ret = (unsigned long long)omap_32k_read();
211 ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
212 return ret;
217} 213}
218 214
219static int __init omap_init_clocksource_32k(void) 215static int __init omap_init_clocksource_32k(void)
diff --git a/arch/arm/plat-omap/include/mach/common.h b/arch/arm/plat-omap/include/mach/common.h
index ef70e2b0f054..e746ec7e785e 100644
--- a/arch/arm/plat-omap/include/mach/common.h
+++ b/arch/arm/plat-omap/include/mach/common.h
@@ -35,7 +35,7 @@ extern void omap_map_common_io(void);
35extern struct sys_timer omap_timer; 35extern struct sys_timer omap_timer;
36extern void omap_serial_init(void); 36extern void omap_serial_init(void);
37extern void omap_serial_enable_clocks(int enable); 37extern void omap_serial_enable_clocks(int enable);
38#ifdef CONFIG_I2C_OMAP 38#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
39extern int omap_register_i2c_bus(int bus_id, u32 clkrate, 39extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
40 struct i2c_board_info const *info, 40 struct i2c_board_info const *info,
41 unsigned len); 41 unsigned len);
diff --git a/arch/arm/plat-omap/include/mach/pm.h b/arch/arm/plat-omap/include/mach/pm.h
index 2a9c27ad4c37..37e2f0f38b46 100644
--- a/arch/arm/plat-omap/include/mach/pm.h
+++ b/arch/arm/plat-omap/include/mach/pm.h
@@ -108,7 +108,7 @@
108 !defined(CONFIG_ARCH_OMAP15XX) && \ 108 !defined(CONFIG_ARCH_OMAP15XX) && \
109 !defined(CONFIG_ARCH_OMAP16XX) && \ 109 !defined(CONFIG_ARCH_OMAP16XX) && \
110 !defined(CONFIG_ARCH_OMAP24XX) 110 !defined(CONFIG_ARCH_OMAP24XX)
111#error "Power management for this processor not implemented yet" 111#warning "Power management for this processor not implemented yet"
112#endif 112#endif
113 113
114#ifndef __ASSEMBLER__ 114#ifndef __ASSEMBLER__
diff --git a/arch/arm/plat-s3c64xx/clock.c b/arch/arm/plat-s3c64xx/clock.c
index 136c982c68e1..ad1b9682c9c3 100644
--- a/arch/arm/plat-s3c64xx/clock.c
+++ b/arch/arm/plat-s3c64xx/clock.c
@@ -248,7 +248,7 @@ static struct clk *clks[] __initdata = {
248 &clk_48m, 248 &clk_48m,
249}; 249};
250 250
251void s3c64xx_register_clocks(void) 251void __init s3c64xx_register_clocks(void)
252{ 252{
253 struct clk *clkp; 253 struct clk *clkp;
254 int ret; 254 int ret;
diff --git a/arch/arm/plat-s3c64xx/gpiolib.c b/arch/arm/plat-s3c64xx/gpiolib.c
index cc62941d7b5c..ee9188add8fb 100644
--- a/arch/arm/plat-s3c64xx/gpiolib.c
+++ b/arch/arm/plat-s3c64xx/gpiolib.c
@@ -417,4 +417,4 @@ static __init int s3c64xx_gpiolib_init(void)
417 return 0; 417 return 0;
418} 418}
419 419
420arch_initcall(s3c64xx_gpiolib_init); 420core_initcall(s3c64xx_gpiolib_init);
diff --git a/arch/arm/plat-s3c64xx/include/plat/irqs.h b/arch/arm/plat-s3c64xx/include/plat/irqs.h
index 2846f550b727..f865bf4d709e 100644
--- a/arch/arm/plat-s3c64xx/include/plat/irqs.h
+++ b/arch/arm/plat-s3c64xx/include/plat/irqs.h
@@ -117,7 +117,7 @@
117#define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12) 117#define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
118#define IRQ_NFC S3C64XX_IRQ_VIC1(13) 118#define IRQ_NFC S3C64XX_IRQ_VIC1(13)
119#define IRQ_CFCON S3C64XX_IRQ_VIC1(14) 119#define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
120#define IRQ_UHOST S3C64XX_IRQ_VIC1(15) 120#define IRQ_USBH S3C64XX_IRQ_VIC1(15)
121#define IRQ_SPI0 S3C64XX_IRQ_VIC1(16) 121#define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
122#define IRQ_SPI1 S3C64XX_IRQ_VIC1(17) 122#define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
123#define IRQ_IIC S3C64XX_IRQ_VIC1(18) 123#define IRQ_IIC S3C64XX_IRQ_VIC1(18)
diff --git a/arch/arm/plat-s3c64xx/irq-eint.c b/arch/arm/plat-s3c64xx/irq-eint.c
index ebb305ce7689..cf524826c93a 100644
--- a/arch/arm/plat-s3c64xx/irq-eint.c
+++ b/arch/arm/plat-s3c64xx/irq-eint.c
@@ -14,12 +14,15 @@
14 14
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/interrupt.h> 16#include <linux/interrupt.h>
17#include <linux/gpio.h>
17#include <linux/irq.h> 18#include <linux/irq.h>
18#include <linux/io.h> 19#include <linux/io.h>
19 20
20#include <asm/hardware/vic.h> 21#include <asm/hardware/vic.h>
21 22
22#include <plat/regs-irqtype.h> 23#include <plat/regs-irqtype.h>
24#include <plat/regs-gpio.h>
25#include <plat/gpio-cfg.h>
23 26
24#include <mach/map.h> 27#include <mach/map.h>
25#include <plat/cpu.h> 28#include <plat/cpu.h>
@@ -74,6 +77,7 @@ static void s3c_irq_eint_maskack(unsigned int irq)
74static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type) 77static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
75{ 78{
76 int offs = eint_offset(irq); 79 int offs = eint_offset(irq);
80 int pin;
77 int shift; 81 int shift;
78 u32 ctrl, mask; 82 u32 ctrl, mask;
79 u32 newvalue = 0; 83 u32 newvalue = 0;
@@ -125,6 +129,15 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
125 ctrl |= newvalue << shift; 129 ctrl |= newvalue << shift;
126 __raw_writel(ctrl, reg); 130 __raw_writel(ctrl, reg);
127 131
132 /* set the GPIO pin appropriately */
133
134 if (offs < 23)
135 pin = S3C64XX_GPN(offs);
136 else
137 pin = S3C64XX_GPM(offs - 23);
138
139 s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
140
128 return 0; 141 return 0;
129} 142}
130 143
@@ -181,7 +194,7 @@ static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
181 s3c_irq_demux_eint(20, 27); 194 s3c_irq_demux_eint(20, 27);
182} 195}
183 196
184int __init s3c64xx_init_irq_eint(void) 197static int __init s3c64xx_init_irq_eint(void)
185{ 198{
186 int irq; 199 int irq;
187 200
diff --git a/arch/arm/plat-s3c64xx/irq.c b/arch/arm/plat-s3c64xx/irq.c
index a94f1d5e819d..f22edf7c2d2d 100644
--- a/arch/arm/plat-s3c64xx/irq.c
+++ b/arch/arm/plat-s3c64xx/irq.c
@@ -207,7 +207,7 @@ static struct irq_chip s3c_irq_uart = {
207 207
208static void __init s3c64xx_uart_irq(struct uart_irq *uirq) 208static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
209{ 209{
210 void *reg_base = uirq->regs; 210 void __iomem *reg_base = uirq->regs;
211 unsigned int irq; 211 unsigned int irq;
212 int offs; 212 int offs;
213 213
diff --git a/arch/arm/plat-s3c64xx/s3c6400-clock.c b/arch/arm/plat-s3c64xx/s3c6400-clock.c
index 8d9a0cada668..05b17528041e 100644
--- a/arch/arm/plat-s3c64xx/s3c6400-clock.c
+++ b/arch/arm/plat-s3c64xx/s3c6400-clock.c
@@ -36,7 +36,7 @@
36 * ext_xtal_mux for want of an actual name from the manual. 36 * ext_xtal_mux for want of an actual name from the manual.
37*/ 37*/
38 38
39struct clk clk_ext_xtal_mux = { 39static struct clk clk_ext_xtal_mux = {
40 .name = "ext_xtal", 40 .name = "ext_xtal",
41 .id = -1, 41 .id = -1,
42}; 42};
@@ -63,7 +63,7 @@ struct clksrc_clk {
63 void __iomem *reg_divider; 63 void __iomem *reg_divider;
64}; 64};
65 65
66struct clk clk_fout_apll = { 66static struct clk clk_fout_apll = {
67 .name = "fout_apll", 67 .name = "fout_apll",
68 .id = -1, 68 .id = -1,
69}; 69};
@@ -78,7 +78,7 @@ static struct clk_sources clk_src_apll = {
78 .nr_sources = ARRAY_SIZE(clk_src_apll_list), 78 .nr_sources = ARRAY_SIZE(clk_src_apll_list),
79}; 79};
80 80
81struct clksrc_clk clk_mout_apll = { 81static struct clksrc_clk clk_mout_apll = {
82 .clk = { 82 .clk = {
83 .name = "mout_apll", 83 .name = "mout_apll",
84 .id = -1, 84 .id = -1,
@@ -88,7 +88,7 @@ struct clksrc_clk clk_mout_apll = {
88 .sources = &clk_src_apll, 88 .sources = &clk_src_apll,
89}; 89};
90 90
91struct clk clk_fout_epll = { 91static struct clk clk_fout_epll = {
92 .name = "fout_epll", 92 .name = "fout_epll",
93 .id = -1, 93 .id = -1,
94}; 94};
@@ -103,7 +103,7 @@ static struct clk_sources clk_src_epll = {
103 .nr_sources = ARRAY_SIZE(clk_src_epll_list), 103 .nr_sources = ARRAY_SIZE(clk_src_epll_list),
104}; 104};
105 105
106struct clksrc_clk clk_mout_epll = { 106static struct clksrc_clk clk_mout_epll = {
107 .clk = { 107 .clk = {
108 .name = "mout_epll", 108 .name = "mout_epll",
109 .id = -1, 109 .id = -1,
@@ -123,7 +123,7 @@ static struct clk_sources clk_src_mpll = {
123 .nr_sources = ARRAY_SIZE(clk_src_mpll_list), 123 .nr_sources = ARRAY_SIZE(clk_src_mpll_list),
124}; 124};
125 125
126struct clksrc_clk clk_mout_mpll = { 126static struct clksrc_clk clk_mout_mpll = {
127 .clk = { 127 .clk = {
128 .name = "mout_mpll", 128 .name = "mout_mpll",
129 .id = -1, 129 .id = -1,
@@ -145,7 +145,7 @@ static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk)
145 return rate; 145 return rate;
146} 146}
147 147
148struct clk clk_dout_mpll = { 148static struct clk clk_dout_mpll = {
149 .name = "dout_mpll", 149 .name = "dout_mpll",
150 .id = -1, 150 .id = -1,
151 .parent = &clk_mout_mpll.clk, 151 .parent = &clk_mout_mpll.clk,
@@ -189,10 +189,10 @@ static struct clk_sources clkset_uart = {
189}; 189};
190 190
191static struct clk *clkset_uhost_list[] = { 191static struct clk *clkset_uhost_list[] = {
192 &clk_48m,
192 &clk_mout_epll.clk, 193 &clk_mout_epll.clk,
193 &clk_dout_mpll, 194 &clk_dout_mpll,
194 &clk_fin_epll, 195 &clk_fin_epll,
195 &clk_48m,
196}; 196};
197 197
198static struct clk_sources clkset_uhost = { 198static struct clk_sources clkset_uhost = {
@@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate)
239 239
240 rate = clk_round_rate(clk, rate); 240 rate = clk_round_rate(clk, rate);
241 div = clk_get_rate(clk->parent) / rate; 241 div = clk_get_rate(clk->parent) / rate;
242 if (div > 16)
243 return -EINVAL;
242 244
243 val = __raw_readl(reg); 245 val = __raw_readl(reg);
244 val &= ~sclk->mask; 246 val &= ~(0xf << sclk->shift);
245 val |= (rate - 1) << sclk->shift; 247 val |= (div - 1) << sclk->shift;
246 __raw_writel(val, reg); 248 __raw_writel(val, reg);
247 249
248 return 0; 250 return 0;
@@ -351,7 +353,7 @@ static struct clksrc_clk clk_mmc2 = {
351 353
352static struct clksrc_clk clk_usbhost = { 354static struct clksrc_clk clk_usbhost = {
353 .clk = { 355 .clk = {
354 .name = "usb-host-bus", 356 .name = "usb-bus-host",
355 .id = -1, 357 .id = -1,
356 .ctrlbit = S3C_CLKCON_SCLK_UHOST, 358 .ctrlbit = S3C_CLKCON_SCLK_UHOST,
357 .enable = s3c64xx_sclk_ctrl, 359 .enable = s3c64xx_sclk_ctrl,
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index fd23c0e9e698..b4211d8b2ac7 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -12,7 +12,7 @@
12# 12#
13# http://www.arm.linux.org.uk/developer/machines/?action=new 13# http://www.arm.linux.org.uk/developer/machines/?action=new
14# 14#
15# Last update: Sun Nov 30 16:39:36 2008 15# Last update: Thu Mar 12 18:01:45 2009
16# 16#
17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
18# 18#
@@ -1811,7 +1811,7 @@ pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820
1811jade MACH_JADE JADE 1821 1811jade MACH_JADE JADE 1821
1812ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822 1812ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
1813gprisc3 MACH_GPRISC3 GPRISC3 1823 1813gprisc3 MACH_GPRISC3 GPRISC3 1823
1814stamp9260 MACH_STAMP9260 STAMP9260 1824 1814stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
1815smdk6430 MACH_SMDK6430 SMDK6430 1825 1815smdk6430 MACH_SMDK6430 SMDK6430 1825
1816smdkc100 MACH_SMDKC100 SMDKC100 1826 1816smdkc100 MACH_SMDKC100 SMDKC100 1826
1817tavorevb MACH_TAVOREVB TAVOREVB 1827 1817tavorevb MACH_TAVOREVB TAVOREVB 1827
@@ -1993,4 +1993,134 @@ spark MACH_SPARK SPARK 2002
1993benzina MACH_BENZINA BENZINA 2003 1993benzina MACH_BENZINA BENZINA 2003
1994blaze MACH_BLAZE BLAZE 2004 1994blaze MACH_BLAZE BLAZE 2004
1995linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005 1995linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
1996htcvenus MACH_HTCVENUS HTCVENUS 2006 1996htckovsky MACH_HTCVENUS HTCVENUS 2006
1997sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
1998hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
1999sapphira MACH_SAPPHIRA SAPPHIRA 2009
2000dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
2001armbox MACH_ARMBOX ARMBOX 2011
2002harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
2003ribaldo MACH_RIBALDO RIBALDO 2013
2004agora MACH_AGORA AGORA 2014
2005omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
2006a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
2007usg2410 MACH_USG2410 USG2410 2017
2008pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
2009mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
2010topas910 MACH_TOPAS910 TOPAS910 2020
2011hyena MACH_HYENA HYENA 2021
2012pospax MACH_POSPAX POSPAX 2022
2013hdl_gx MACH_HDL_GX HDL_GX 2023
2014ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
2015ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
2016crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
2017egauge2 MACH_EGAUGE2 EGAUGE2 2027
2018didj MACH_DIDJ DIDJ 2028
2019m_s3c2443 MACH_MEISTER MEISTER 2029
2020htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
2021cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
2022smdk6440 MACH_SMDK6440 SMDK6440 2032
2023omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
2024ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
2025pvg610_100 MACH_PVG610 PVG610 2035
2026hprw6815 MACH_HPRW6815 HPRW6815 2036
2027omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
2028nas4220b MACH_NAS4220B NAS4220B 2038
2029htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
2030htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
2031scaler MACH_SCALER SCALER 2041
2032zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
2033aspenite MACH_ASPENITE ASPENITE 2043
2034teton MACH_TETON TETON 2044
2035ttc_dkb MACH_TTC_DKB TTC_DKB 2045
2036bishop2 MACH_BISHOP2 BISHOP2 2046
2037ippv5 MACH_IPPV5 IPPV5 2047
2038farm926 MACH_FARM926 FARM926 2048
2039mmccpu MACH_MMCCPU MMCCPU 2049
2040sgmsfl MACH_SGMSFL SGMSFL 2050
2041tt8000 MACH_TT8000 TT8000 2051
2042zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
2043mptc MACH_MPTC MPTC 2053
2044h6051 MACH_H6051 H6051 2054
2045pvg610_101 MACH_PVG610_101 PVG610_101 2055
2046stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
2047pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
2048tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
2049tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
2050aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
2051dx900 MACH_DX900 DX900 2061
2052cpodc2 MACH_CPODC2 CPODC2 2062
2053tilt_8925 MACH_TILT_8925 TILT_8925 2063
2054davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
2055swordfish MACH_SWORDFISH SWORDFISH 2065
2056corvus MACH_CORVUS CORVUS 2066
2057taurus MACH_TAURUS TAURUS 2067
2058axm MACH_AXM AXM 2068
2059axc MACH_AXC AXC 2069
2060baby MACH_BABY BABY 2070
2061mp200 MACH_MP200 MP200 2071
2062pcm043 MACH_PCM043 PCM043 2072
2063hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
2064kbk9g20 MACH_KBK9G20 KBK9G20 2074
2065adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
2066avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
2067suc82x MACH_SUC SUC 2077
2068at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
2069mendoza MACH_MENDOZA MENDOZA 2079
2070kira MACH_KIRA KIRA 2080
2071mx1hbm MACH_MX1HBM MX1HBM 2081
2072quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
2073quatro4230 MACH_QUATRO4230 QUATRO4230 2083
2074nsb400 MACH_NSB400 NSB400 2084
2075drp255 MACH_DRP255 DRP255 2085
2076thoth MACH_THOTH THOTH 2086
2077firestone MACH_FIRESTONE FIRESTONE 2087
2078asusp750 MACH_ASUSP750 ASUSP750 2088
2079ctera_dl MACH_CTERA_DL CTERA_DL 2089
2080socr MACH_SOCR SOCR 2090
2081htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
2082heroc MACH_HEROC HEROC 2092
2083zeno6800 MACH_ZENO6800 ZENO6800 2093
2084sc2mcs MACH_SC2MCS SC2MCS 2094
2085gene100 MACH_GENE100 GENE100 2095
2086as353x MACH_AS353X AS353X 2096
2087sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
2088at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
2089mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
2090cc9200 MACH_CC9200 CC9200 2100
2091sm9200 MACH_SM9200 SM9200 2101
2092tp9200 MACH_TP9200 TP9200 2102
2093snapperdv MACH_SNAPPERDV SNAPPERDV 2103
2094avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
2095avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
2096omap3axon MACH_OMAP3AXON OMAP3AXON 2106
2097ma8xx MACH_MA8XX MA8XX 2107
2098mp201ek MACH_MP201EK MP201EK 2108
2099davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
2100mpa1600 MACH_MPA1600 MPA1600 2110
2101pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
2102nsb667 MACH_NSB667 NSB667 2112
2103rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
2104twocom MACH_TWOCOM TWOCOM 2114
2105ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
2106hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
2107afeusb MACH_AFEUSB AFEUSB 2117
2108t830 MACH_T830 T830 2118
2109spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
2110om_3d7k MACH_OM_3D7K OM_3D7K 2120
2111picocom2 MACH_PICOCOM2 PICOCOM2 2121
2112uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
2113uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
2114cherry MACH_CHERRY CHERRY 2124
2115mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
2116s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
2117tx37 MACH_TX37 TX37 2127
2118sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
2119benzglb MACH_BENZGLB BENZGLB 2129
2120benztd MACH_BENZTD BENZTD 2130
2121cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
2122solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
2123mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
2124fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
2125rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
2126smallogger MACH_SMALLOGGER SMALLOGGER 2136
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index e61465a18c7e..206cb7953b0c 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -238,8 +238,12 @@ config MIPS_SIM
238 This option enables support for MIPS Technologies MIPSsim software 238 This option enables support for MIPS Technologies MIPSsim software
239 emulator. 239 emulator.
240 240
241config MACH_EMMA 241config NEC_MARKEINS
242 bool "NEC EMMA series based machines" 242 bool "NEC EMMA2RH Mark-eins board"
243 select SOC_EMMA2RH
244 select HW_HAS_PCI
245 help
246 This enables support for the NEC Electronics Mark-eins boards.
243 247
244config MACH_VR41XX 248config MACH_VR41XX
245 bool "NEC VR4100 series based machines" 249 bool "NEC VR4100 series based machines"
@@ -637,7 +641,6 @@ endchoice
637 641
638source "arch/mips/alchemy/Kconfig" 642source "arch/mips/alchemy/Kconfig"
639source "arch/mips/basler/excite/Kconfig" 643source "arch/mips/basler/excite/Kconfig"
640source "arch/mips/emma/Kconfig"
641source "arch/mips/jazz/Kconfig" 644source "arch/mips/jazz/Kconfig"
642source "arch/mips/lasat/Kconfig" 645source "arch/mips/lasat/Kconfig"
643source "arch/mips/pmc-sierra/Kconfig" 646source "arch/mips/pmc-sierra/Kconfig"
@@ -895,6 +898,18 @@ config MIPS_RM9122
895 bool 898 bool
896 select SERIAL_RM9000 899 select SERIAL_RM9000
897 900
901config SOC_EMMA2RH
902 bool
903 select CEVT_R4K
904 select CSRC_R4K
905 select DMA_NONCOHERENT
906 select IRQ_CPU
907 select SWAP_IO_SPACE
908 select SYS_HAS_CPU_R5500
909 select SYS_SUPPORTS_32BIT_KERNEL
910 select SYS_SUPPORTS_64BIT_KERNEL
911 select SYS_SUPPORTS_BIG_ENDIAN
912
898config SOC_PNX833X 913config SOC_PNX833X
899 bool 914 bool
900 select CEVT_R4K 915 select CEVT_R4K
@@ -930,11 +945,6 @@ config SOC_PNX8550
930config SWAP_IO_SPACE 945config SWAP_IO_SPACE
931 bool 946 bool
932 947
933config EMMA2RH
934 bool
935 depends on MARKEINS
936 default y
937
938config SERIAL_RM9000 948config SERIAL_RM9000
939 bool 949 bool
940 950
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 21b00e95daef..22dab2e14348 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -416,7 +416,7 @@ load-$(CONFIG_PNX8550_STB810) += 0xffffffff80060000
416# 416#
417# Common NEC EMMAXXX 417# Common NEC EMMAXXX
418# 418#
419core-$(CONFIG_SOC_EMMA) += arch/mips/emma/common/ 419core-$(CONFIG_SOC_EMMA2RH) += arch/mips/emma/common/
420cflags-$(CONFIG_SOC_EMMA2RH) += -I$(srctree)/arch/mips/include/asm/mach-emma2rh 420cflags-$(CONFIG_SOC_EMMA2RH) += -I$(srctree)/arch/mips/include/asm/mach-emma2rh
421 421
422# 422#
diff --git a/arch/mips/configs/emma2rh_defconfig b/arch/mips/configs/markeins_defconfig
index fea9bc9865a3..bad8901f8f3c 100644
--- a/arch/mips/configs/emma2rh_defconfig
+++ b/arch/mips/configs/markeins_defconfig
@@ -35,7 +35,7 @@ CONFIG_ZONE_DMA=y
35# CONFIG_PNX8550_STB810 is not set 35# CONFIG_PNX8550_STB810 is not set
36# CONFIG_MACH_VR41XX is not set 36# CONFIG_MACH_VR41XX is not set
37# CONFIG_PMC_YOSEMITE is not set 37# CONFIG_PMC_YOSEMITE is not set
38CONFIG_MARKEINS=y 38CONFIG_NEC_MARKEINS=y
39# CONFIG_SGI_IP22 is not set 39# CONFIG_SGI_IP22 is not set
40# CONFIG_SGI_IP27 is not set 40# CONFIG_SGI_IP27 is not set
41# CONFIG_SGI_IP32 is not set 41# CONFIG_SGI_IP32 is not set
@@ -68,7 +68,7 @@ CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
68CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 68CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
69CONFIG_IRQ_CPU=y 69CONFIG_IRQ_CPU=y
70CONFIG_SWAP_IO_SPACE=y 70CONFIG_SWAP_IO_SPACE=y
71CONFIG_EMMA2RH=y 71CONFIG_SOC_EMMA2RH=y
72CONFIG_MIPS_L1_CACHE_SHIFT=5 72CONFIG_MIPS_L1_CACHE_SHIFT=5
73 73
74# 74#
@@ -574,9 +574,9 @@ CONFIG_MTD_CFI_UTIL=y
574# 574#
575# CONFIG_MTD_COMPLEX_MAPPINGS is not set 575# CONFIG_MTD_COMPLEX_MAPPINGS is not set
576CONFIG_MTD_PHYSMAP=y 576CONFIG_MTD_PHYSMAP=y
577CONFIG_MTD_PHYSMAP_START=0x1e000000 577CONFIG_MTD_PHYSMAP_START=0x0
578CONFIG_MTD_PHYSMAP_LEN=0x02000000 578CONFIG_MTD_PHYSMAP_LEN=0x0
579CONFIG_MTD_PHYSMAP_BANKWIDTH=2 579CONFIG_MTD_PHYSMAP_BANKWIDTH=0
580# CONFIG_MTD_PLATRAM is not set 580# CONFIG_MTD_PLATRAM is not set
581 581
582# 582#
diff --git a/arch/mips/emma/Kconfig b/arch/mips/emma/Kconfig
deleted file mode 100644
index 9669c72123c9..000000000000
--- a/arch/mips/emma/Kconfig
+++ /dev/null
@@ -1,29 +0,0 @@
1choice
2 prompt "Machine type"
3 depends on MACH_EMMA
4 default NEC_MARKEINS
5
6config NEC_MARKEINS
7 bool "NEC EMMA2RH Mark-eins board"
8 select SOC_EMMA2RH
9 select HW_HAS_PCI
10 help
11 This enables support for the NEC Electronics Mark-eins boards.
12
13endchoice
14
15config SOC_EMMA2RH
16 bool
17 select SOC_EMMA
18 select SYS_HAS_CPU_R5500
19 select SYS_SUPPORTS_32BIT_KERNEL
20 select SYS_SUPPORTS_64BIT_KERNEL
21
22config SOC_EMMA
23 bool
24 select CEVT_R4K
25 select CSRC_R4K
26 select DMA_NONCOHERENT
27 select IRQ_CPU
28 select SWAP_IO_SPACE
29 select SYS_SUPPORTS_BIG_ENDIAN
diff --git a/arch/mips/emma/markeins/platform.c b/arch/mips/emma/markeins/platform.c
index 88e87f6b3442..d5f47e4f0d18 100644
--- a/arch/mips/emma/markeins/platform.c
+++ b/arch/mips/emma/markeins/platform.c
@@ -141,13 +141,6 @@ static struct platform_device serial_emma = {
141 }, 141 },
142}; 142};
143 143
144static struct platform_device *devices[] = {
145 &i2c_emma_devices[0],
146 &i2c_emma_devices[1],
147 &i2c_emma_devices[2],
148 &serial_emma,
149};
150
151static struct mtd_partition markeins_parts[] = { 144static struct mtd_partition markeins_parts[] = {
152 [0] = { 145 [0] = {
153 .name = "RootFS", 146 .name = "RootFS",
@@ -181,11 +174,39 @@ static struct mtd_partition markeins_parts[] = {
181 }, 174 },
182}; 175};
183 176
177static struct physmap_flash_data markeins_flash_data = {
178 .width = 2,
179 .nr_parts = ARRAY_SIZE(markeins_parts),
180 .parts = markeins_parts
181};
182
183static struct resource markeins_flash_resource = {
184 .start = 0x1e000000,
185 .end = 0x02000000,
186 .flags = IORESOURCE_MEM
187};
188
189static struct platform_device markeins_flash_device = {
190 .name = "physmap-flash",
191 .id = 0,
192 .dev = {
193 .platform_data = &markeins_flash_data,
194 },
195 .num_resources = 1,
196 .resource = &markeins_flash_resource,
197};
198
199static struct platform_device *devices[] = {
200 i2c_emma_devices,
201 i2c_emma_devices + 1,
202 i2c_emma_devices + 2,
203 &serial_emma,
204 &markeins_flash_device,
205};
206
184static int __init platform_devices_setup(void) 207static int __init platform_devices_setup(void)
185{ 208{
186 physmap_set_partitions(markeins_parts, ARRAY_SIZE(markeins_parts));
187 return platform_add_devices(devices, ARRAY_SIZE(devices)); 209 return platform_add_devices(devices, ARRAY_SIZE(devices));
188} 210}
189 211
190arch_initcall(platform_devices_setup); 212arch_initcall(platform_devices_setup);
191
diff --git a/arch/mips/include/asm/seccomp.h b/arch/mips/include/asm/seccomp.h
index a6772e9507f5..ae6306ebdcad 100644
--- a/arch/mips/include/asm/seccomp.h
+++ b/arch/mips/include/asm/seccomp.h
@@ -15,8 +15,6 @@
15 */ 15 */
16#ifdef CONFIG_MIPS32_O32 16#ifdef CONFIG_MIPS32_O32
17 17
18#define TIF_32BIT TIF_32BIT_REGS
19
20#define __NR_seccomp_read_32 4003 18#define __NR_seccomp_read_32 4003
21#define __NR_seccomp_write_32 4004 19#define __NR_seccomp_write_32 4004
22#define __NR_seccomp_exit_32 4001 20#define __NR_seccomp_exit_32 4001
@@ -24,8 +22,6 @@
24 22
25#elif defined(CONFIG_MIPS32_N32) 23#elif defined(CONFIG_MIPS32_N32)
26 24
27#define TIF_32BIT _TIF_32BIT_ADDR
28
29#define __NR_seccomp_read_32 6000 25#define __NR_seccomp_read_32 6000
30#define __NR_seccomp_write_32 6001 26#define __NR_seccomp_write_32 6001
31#define __NR_seccomp_exit_32 6058 27#define __NR_seccomp_exit_32 6058
diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
index 3f76de73c943..676aa2ae1913 100644
--- a/arch/mips/include/asm/thread_info.h
+++ b/arch/mips/include/asm/thread_info.h
@@ -127,6 +127,12 @@ register struct thread_info *__current_thread_info __asm__("$28");
127#define TIF_LOAD_WATCH 25 /* If set, load watch registers */ 127#define TIF_LOAD_WATCH 25 /* If set, load watch registers */
128#define TIF_SYSCALL_TRACE 31 /* syscall trace active */ 128#define TIF_SYSCALL_TRACE 31 /* syscall trace active */
129 129
130#ifdef CONFIG_MIPS32_O32
131#define TIF_32BIT TIF_32BIT_REGS
132#elif defined(CONFIG_MIPS32_N32)
133#define TIF_32BIT _TIF_32BIT_ADDR
134#endif /* CONFIG_MIPS32_O32 */
135
130#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 136#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
131#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) 137#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
132#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) 138#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig
index 9fc96e727165..bf34a28895fa 100644
--- a/arch/parisc/configs/712_defconfig
+++ b/arch/parisc/configs/712_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.29-rc8
4# Fri Oct 12 21:00:07 2007 4# Fri Mar 13 01:32:55 2009
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -33,17 +33,35 @@ CONFIG_SYSVIPC_SYSCTL=y
33CONFIG_POSIX_MQUEUE=y 33CONFIG_POSIX_MQUEUE=y
34# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
35# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
37# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
38CONFIG_IKCONFIG=y 46CONFIG_IKCONFIG=y
39CONFIG_IKCONFIG_PROC=y 47CONFIG_IKCONFIG_PROC=y
40CONFIG_LOG_BUF_SHIFT=16 48CONFIG_LOG_BUF_SHIFT=16
49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
41CONFIG_SYSFS_DEPRECATED=y 51CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y
42# CONFIG_RELAY is not set 53# CONFIG_RELAY is not set
54CONFIG_NAMESPACES=y
55# CONFIG_UTS_NS is not set
56# CONFIG_IPC_NS is not set
57# CONFIG_USER_NS is not set
58# CONFIG_PID_NS is not set
59# CONFIG_NET_NS is not set
43CONFIG_BLK_DEV_INITRD=y 60CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 61CONFIG_INITRAMFS_SOURCE=""
45CONFIG_CC_OPTIMIZE_FOR_SIZE=y 62CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 63CONFIG_SYSCTL=y
64CONFIG_ANON_INODES=y
47# CONFIG_EMBEDDED is not set 65# CONFIG_EMBEDDED is not set
48CONFIG_SYSCTL_SYSCALL=y 66CONFIG_SYSCTL_SYSCALL=y
49CONFIG_KALLSYMS=y 67CONFIG_KALLSYMS=y
@@ -55,29 +73,38 @@ CONFIG_BUG=y
55CONFIG_ELF_CORE=y 73CONFIG_ELF_CORE=y
56CONFIG_BASE_FULL=y 74CONFIG_BASE_FULL=y
57CONFIG_FUTEX=y 75CONFIG_FUTEX=y
58CONFIG_ANON_INODES=y
59CONFIG_EPOLL=y 76CONFIG_EPOLL=y
60CONFIG_SIGNALFD=y 77CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y
61CONFIG_EVENTFD=y 79CONFIG_EVENTFD=y
62CONFIG_SHMEM=y 80CONFIG_SHMEM=y
81CONFIG_AIO=y
63CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_COMPAT_BRK=y
64CONFIG_SLAB=y 84CONFIG_SLAB=y
65# CONFIG_SLUB is not set 85# CONFIG_SLUB is not set
66# CONFIG_SLOB is not set 86# CONFIG_SLOB is not set
87CONFIG_PROFILING=y
88CONFIG_TRACEPOINTS=y
89# CONFIG_MARKERS is not set
90CONFIG_OPROFILE=m
91CONFIG_HAVE_OPROFILE=y
92# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
93CONFIG_SLABINFO=y
67CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
68# CONFIG_TINY_SHMEM is not set
69CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
70CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set
71CONFIG_MODULE_UNLOAD=y 98CONFIG_MODULE_UNLOAD=y
72CONFIG_MODULE_FORCE_UNLOAD=y 99CONFIG_MODULE_FORCE_UNLOAD=y
73# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
74# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
75CONFIG_KMOD=y 102CONFIG_INIT_ALL_POSSIBLE=y
76CONFIG_BLOCK=y 103CONFIG_BLOCK=y
77# CONFIG_LBD is not set 104# CONFIG_LBD is not set
78# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
79# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set 106# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set
81 108
82# 109#
83# IO Schedulers 110# IO Schedulers
@@ -91,6 +118,7 @@ CONFIG_DEFAULT_AS=y
91# CONFIG_DEFAULT_CFQ is not set 118# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set 119# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="anticipatory" 120CONFIG_DEFAULT_IOSCHED="anticipatory"
121# CONFIG_FREEZER is not set
94 122
95# 123#
96# Processor type and features 124# Processor type and features
@@ -114,17 +142,19 @@ CONFIG_HZ_250=y
114# CONFIG_HZ_300 is not set 142# CONFIG_HZ_300 is not set
115# CONFIG_HZ_1000 is not set 143# CONFIG_HZ_1000 is not set
116CONFIG_HZ=250 144CONFIG_HZ=250
145# CONFIG_SCHED_HRTICK is not set
117CONFIG_SELECT_MEMORY_MODEL=y 146CONFIG_SELECT_MEMORY_MODEL=y
118CONFIG_FLATMEM_MANUAL=y 147CONFIG_FLATMEM_MANUAL=y
119# CONFIG_DISCONTIGMEM_MANUAL is not set 148# CONFIG_DISCONTIGMEM_MANUAL is not set
120# CONFIG_SPARSEMEM_MANUAL is not set 149# CONFIG_SPARSEMEM_MANUAL is not set
121CONFIG_FLATMEM=y 150CONFIG_FLATMEM=y
122CONFIG_FLAT_NODE_MEM_MAP=y 151CONFIG_FLAT_NODE_MEM_MAP=y
123# CONFIG_SPARSEMEM_STATIC is not set 152CONFIG_PAGEFLAGS_EXTENDED=y
124CONFIG_SPLIT_PTLOCK_CPUS=4096 153CONFIG_SPLIT_PTLOCK_CPUS=4096
125# CONFIG_RESOURCES_64BIT is not set 154# CONFIG_PHYS_ADDR_T_64BIT is not set
126CONFIG_ZONE_DMA_FLAG=0 155CONFIG_ZONE_DMA_FLAG=0
127CONFIG_VIRT_TO_BUS=y 156CONFIG_VIRT_TO_BUS=y
157CONFIG_UNEVICTABLE_LRU=y
128# CONFIG_HPUX is not set 158# CONFIG_HPUX is not set
129 159
130# 160#
@@ -138,10 +168,6 @@ CONFIG_GSC_LASI=y
138# CONFIG_EISA is not set 168# CONFIG_EISA is not set
139# CONFIG_PCI is not set 169# CONFIG_PCI is not set
140# CONFIG_ARCH_SUPPORTS_MSI is not set 170# CONFIG_ARCH_SUPPORTS_MSI is not set
141
142#
143# PCCARD (PCMCIA/CardBus) support
144#
145# CONFIG_PCCARD is not set 171# CONFIG_PCCARD is not set
146 172
147# 173#
@@ -156,16 +182,15 @@ CONFIG_PDC_STABLE=y
156# Executable file formats 182# Executable file formats
157# 183#
158CONFIG_BINFMT_ELF=y 184CONFIG_BINFMT_ELF=y
185# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
186# CONFIG_HAVE_AOUT is not set
159CONFIG_BINFMT_MISC=m 187CONFIG_BINFMT_MISC=m
160
161#
162# Networking
163#
164CONFIG_NET=y 188CONFIG_NET=y
165 189
166# 190#
167# Networking options 191# Networking options
168# 192#
193CONFIG_COMPAT_NET_DEV_OPS=y
169CONFIG_PACKET=y 194CONFIG_PACKET=y
170CONFIG_PACKET_MMAP=y 195CONFIG_PACKET_MMAP=y
171CONFIG_UNIX=y 196CONFIG_UNIX=y
@@ -173,6 +198,7 @@ CONFIG_XFRM=y
173CONFIG_XFRM_USER=m 198CONFIG_XFRM_USER=m
174# CONFIG_XFRM_SUB_POLICY is not set 199# CONFIG_XFRM_SUB_POLICY is not set
175# CONFIG_XFRM_MIGRATE is not set 200# CONFIG_XFRM_MIGRATE is not set
201# CONFIG_XFRM_STATISTICS is not set
176CONFIG_NET_KEY=m 202CONFIG_NET_KEY=m
177# CONFIG_NET_KEY_MIGRATE is not set 203# CONFIG_NET_KEY_MIGRATE is not set
178CONFIG_INET=y 204CONFIG_INET=y
@@ -203,25 +229,25 @@ CONFIG_INET_TCP_DIAG=m
203CONFIG_TCP_CONG_CUBIC=y 229CONFIG_TCP_CONG_CUBIC=y
204CONFIG_DEFAULT_TCP_CONG="cubic" 230CONFIG_DEFAULT_TCP_CONG="cubic"
205# CONFIG_TCP_MD5SIG is not set 231# CONFIG_TCP_MD5SIG is not set
206# CONFIG_IP_VS is not set
207# CONFIG_IPV6 is not set 232# CONFIG_IPV6 is not set
208# CONFIG_INET6_XFRM_TUNNEL is not set
209# CONFIG_INET6_TUNNEL is not set
210# CONFIG_NETWORK_SECMARK is not set 233# CONFIG_NETWORK_SECMARK is not set
211CONFIG_NETFILTER=y 234CONFIG_NETFILTER=y
212# CONFIG_NETFILTER_DEBUG is not set 235# CONFIG_NETFILTER_DEBUG is not set
236CONFIG_NETFILTER_ADVANCED=y
213 237
214# 238#
215# Core Netfilter Configuration 239# Core Netfilter Configuration
216# 240#
217# CONFIG_NETFILTER_NETLINK is not set 241# CONFIG_NETFILTER_NETLINK_QUEUE is not set
218# CONFIG_NF_CONNTRACK_ENABLED is not set 242# CONFIG_NETFILTER_NETLINK_LOG is not set
219# CONFIG_NF_CONNTRACK is not set 243# CONFIG_NF_CONNTRACK is not set
220# CONFIG_NETFILTER_XTABLES is not set 244# CONFIG_NETFILTER_XTABLES is not set
245# CONFIG_IP_VS is not set
221 246
222# 247#
223# IP: Netfilter Configuration 248# IP: Netfilter Configuration
224# 249#
250# CONFIG_NF_DEFRAG_IPV4 is not set
225CONFIG_IP_NF_QUEUE=m 251CONFIG_IP_NF_QUEUE=m
226# CONFIG_IP_NF_IPTABLES is not set 252# CONFIG_IP_NF_IPTABLES is not set
227# CONFIG_IP_NF_ARPTABLES is not set 253# CONFIG_IP_NF_ARPTABLES is not set
@@ -230,6 +256,7 @@ CONFIG_IP_NF_QUEUE=m
230# CONFIG_TIPC is not set 256# CONFIG_TIPC is not set
231# CONFIG_ATM is not set 257# CONFIG_ATM is not set
232# CONFIG_BRIDGE is not set 258# CONFIG_BRIDGE is not set
259# CONFIG_NET_DSA is not set
233# CONFIG_VLAN_8021Q is not set 260# CONFIG_VLAN_8021Q is not set
234# CONFIG_DECNET is not set 261# CONFIG_DECNET is not set
235CONFIG_LLC=m 262CONFIG_LLC=m
@@ -240,28 +267,26 @@ CONFIG_LLC2=m
240# CONFIG_LAPB is not set 267# CONFIG_LAPB is not set
241# CONFIG_ECONET is not set 268# CONFIG_ECONET is not set
242# CONFIG_WAN_ROUTER is not set 269# CONFIG_WAN_ROUTER is not set
243
244#
245# QoS and/or fair queueing
246#
247# CONFIG_NET_SCHED is not set 270# CONFIG_NET_SCHED is not set
271# CONFIG_DCB is not set
248 272
249# 273#
250# Network testing 274# Network testing
251# 275#
252CONFIG_NET_PKTGEN=m 276CONFIG_NET_PKTGEN=m
253# CONFIG_HAMRADIO is not set 277# CONFIG_HAMRADIO is not set
278# CONFIG_CAN is not set
254# CONFIG_IRDA is not set 279# CONFIG_IRDA is not set
255# CONFIG_BT is not set 280# CONFIG_BT is not set
256# CONFIG_AF_RXRPC is not set 281# CONFIG_AF_RXRPC is not set
257 282# CONFIG_PHONET is not set
258# 283CONFIG_WIRELESS=y
259# Wireless
260#
261# CONFIG_CFG80211 is not set 284# CONFIG_CFG80211 is not set
285CONFIG_WIRELESS_OLD_REGULATORY=y
262# CONFIG_WIRELESS_EXT is not set 286# CONFIG_WIRELESS_EXT is not set
287# CONFIG_LIB80211 is not set
263# CONFIG_MAC80211 is not set 288# CONFIG_MAC80211 is not set
264# CONFIG_IEEE80211 is not set 289# CONFIG_WIMAX is not set
265# CONFIG_RFKILL is not set 290# CONFIG_RFKILL is not set
266# CONFIG_NET_9P is not set 291# CONFIG_NET_9P is not set
267 292
@@ -276,6 +301,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
276# CONFIG_STANDALONE is not set 301# CONFIG_STANDALONE is not set
277# CONFIG_PREVENT_FIRMWARE_BUILD is not set 302# CONFIG_PREVENT_FIRMWARE_BUILD is not set
278CONFIG_FW_LOADER=y 303CONFIG_FW_LOADER=y
304CONFIG_FIRMWARE_IN_KERNEL=y
305CONFIG_EXTRA_FIRMWARE=""
279# CONFIG_DEBUG_DRIVER is not set 306# CONFIG_DEBUG_DRIVER is not set
280# CONFIG_DEBUG_DEVRES is not set 307# CONFIG_DEBUG_DEVRES is not set
281# CONFIG_SYS_HYPERVISOR is not set 308# CONFIG_SYS_HYPERVISOR is not set
@@ -298,11 +325,19 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
298CONFIG_BLK_DEV_RAM=y 325CONFIG_BLK_DEV_RAM=y
299CONFIG_BLK_DEV_RAM_COUNT=16 326CONFIG_BLK_DEV_RAM_COUNT=16
300CONFIG_BLK_DEV_RAM_SIZE=6144 327CONFIG_BLK_DEV_RAM_SIZE=6144
301CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 328# CONFIG_BLK_DEV_XIP is not set
302# CONFIG_CDROM_PKTCDVD is not set 329# CONFIG_CDROM_PKTCDVD is not set
303CONFIG_ATA_OVER_ETH=m 330CONFIG_ATA_OVER_ETH=m
331# CONFIG_BLK_DEV_HD is not set
304CONFIG_MISC_DEVICES=y 332CONFIG_MISC_DEVICES=y
333# CONFIG_ENCLOSURE_SERVICES is not set
334# CONFIG_C2PORT is not set
335
336#
337# EEPROM support
338#
305# CONFIG_EEPROM_93CX6 is not set 339# CONFIG_EEPROM_93CX6 is not set
340CONFIG_HAVE_IDE=y
306# CONFIG_IDE is not set 341# CONFIG_IDE is not set
307 342
308# 343#
@@ -342,14 +377,17 @@ CONFIG_SCSI_SPI_ATTRS=y
342# CONFIG_SCSI_FC_ATTRS is not set 377# CONFIG_SCSI_FC_ATTRS is not set
343CONFIG_SCSI_ISCSI_ATTRS=m 378CONFIG_SCSI_ISCSI_ATTRS=m
344# CONFIG_SCSI_SAS_LIBSAS is not set 379# CONFIG_SCSI_SAS_LIBSAS is not set
380# CONFIG_SCSI_SRP_ATTRS is not set
345CONFIG_SCSI_LOWLEVEL=y 381CONFIG_SCSI_LOWLEVEL=y
346# CONFIG_ISCSI_TCP is not set 382# CONFIG_ISCSI_TCP is not set
383# CONFIG_LIBFC is not set
347# CONFIG_SCSI_PPA is not set 384# CONFIG_SCSI_PPA is not set
348# CONFIG_SCSI_IMM is not set 385# CONFIG_SCSI_IMM is not set
349CONFIG_SCSI_LASI700=y 386CONFIG_SCSI_LASI700=y
350CONFIG_53C700_LE_ON_BE=y 387CONFIG_53C700_LE_ON_BE=y
351# CONFIG_SCSI_ZALON is not set 388# CONFIG_SCSI_ZALON is not set
352CONFIG_SCSI_DEBUG=m 389CONFIG_SCSI_DEBUG=m
390# CONFIG_SCSI_DH is not set
353# CONFIG_ATA is not set 391# CONFIG_ATA is not set
354CONFIG_MD=y 392CONFIG_MD=y
355CONFIG_BLK_DEV_MD=m 393CONFIG_BLK_DEV_MD=m
@@ -362,7 +400,6 @@ CONFIG_MD_RAID1=m
362# CONFIG_MD_FAULTY is not set 400# CONFIG_MD_FAULTY is not set
363# CONFIG_BLK_DEV_DM is not set 401# CONFIG_BLK_DEV_DM is not set
364CONFIG_NETDEVICES=y 402CONFIG_NETDEVICES=y
365# CONFIG_NETDEVICES_MULTIQUEUE is not set
366CONFIG_DUMMY=m 403CONFIG_DUMMY=m
367CONFIG_BONDING=m 404CONFIG_BONDING=m
368# CONFIG_MACVLAN is not set 405# CONFIG_MACVLAN is not set
@@ -377,6 +414,9 @@ CONFIG_LASI_82596=y
377# CONFIG_IBM_NEW_EMAC_RGMII is not set 414# CONFIG_IBM_NEW_EMAC_RGMII is not set
378# CONFIG_IBM_NEW_EMAC_TAH is not set 415# CONFIG_IBM_NEW_EMAC_TAH is not set
379# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 416# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
417# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
418# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
419# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
380# CONFIG_B44 is not set 420# CONFIG_B44 is not set
381# CONFIG_NET_POCKET is not set 421# CONFIG_NET_POCKET is not set
382CONFIG_NETDEV_1000=y 422CONFIG_NETDEV_1000=y
@@ -387,6 +427,11 @@ CONFIG_NETDEV_10000=y
387# 427#
388# CONFIG_WLAN_PRE80211 is not set 428# CONFIG_WLAN_PRE80211 is not set
389# CONFIG_WLAN_80211 is not set 429# CONFIG_WLAN_80211 is not set
430# CONFIG_IWLWIFI_LEDS is not set
431
432#
433# Enable WiMAX (Networking options) to see the WiMAX drivers
434#
390# CONFIG_WAN is not set 435# CONFIG_WAN is not set
391# CONFIG_PLIP is not set 436# CONFIG_PLIP is not set
392CONFIG_PPP=m 437CONFIG_PPP=m
@@ -401,7 +446,6 @@ CONFIG_PPPOE=m
401# CONFIG_PPPOL2TP is not set 446# CONFIG_PPPOL2TP is not set
402# CONFIG_SLIP is not set 447# CONFIG_SLIP is not set
403CONFIG_SLHC=m 448CONFIG_SLHC=m
404# CONFIG_SHAPER is not set
405# CONFIG_NETCONSOLE is not set 449# CONFIG_NETCONSOLE is not set
406# CONFIG_NETPOLL is not set 450# CONFIG_NETPOLL is not set
407# CONFIG_NET_POLL_CONTROLLER is not set 451# CONFIG_NET_POLL_CONTROLLER is not set
@@ -423,7 +467,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
423CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 467CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
424CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 468CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
425# CONFIG_INPUT_JOYDEV is not set 469# CONFIG_INPUT_JOYDEV is not set
426# CONFIG_INPUT_TSDEV is not set
427# CONFIG_INPUT_EVDEV is not set 470# CONFIG_INPUT_EVDEV is not set
428# CONFIG_INPUT_EVBUG is not set 471# CONFIG_INPUT_EVBUG is not set
429 472
@@ -446,8 +489,8 @@ CONFIG_MOUSE_PS2=y
446CONFIG_MOUSE_PS2_ALPS=y 489CONFIG_MOUSE_PS2_ALPS=y
447CONFIG_MOUSE_PS2_LOGIPS2PP=y 490CONFIG_MOUSE_PS2_LOGIPS2PP=y
448CONFIG_MOUSE_PS2_SYNAPTICS=y 491CONFIG_MOUSE_PS2_SYNAPTICS=y
449CONFIG_MOUSE_PS2_LIFEBOOK=y
450CONFIG_MOUSE_PS2_TRACKPOINT=y 492CONFIG_MOUSE_PS2_TRACKPOINT=y
493# CONFIG_MOUSE_PS2_ELANTECH is not set
451# CONFIG_MOUSE_PS2_TOUCHKIT is not set 494# CONFIG_MOUSE_PS2_TOUCHKIT is not set
452CONFIG_MOUSE_SERIAL=m 495CONFIG_MOUSE_SERIAL=m
453# CONFIG_MOUSE_VSXXXAA is not set 496# CONFIG_MOUSE_VSXXXAA is not set
@@ -474,9 +517,11 @@ CONFIG_SERIO_LIBPS2=y
474# Character devices 517# Character devices
475# 518#
476CONFIG_VT=y 519CONFIG_VT=y
520CONFIG_CONSOLE_TRANSLATIONS=y
477CONFIG_VT_CONSOLE=y 521CONFIG_VT_CONSOLE=y
478CONFIG_HW_CONSOLE=y 522CONFIG_HW_CONSOLE=y
479# CONFIG_VT_HW_CONSOLE_BINDING is not set 523# CONFIG_VT_HW_CONSOLE_BINDING is not set
524CONFIG_DEVKMEM=y
480# CONFIG_SERIAL_NONSTANDARD is not set 525# CONFIG_SERIAL_NONSTANDARD is not set
481 526
482# 527#
@@ -501,72 +546,76 @@ CONFIG_PDC_CONSOLE=y
501CONFIG_SERIAL_CORE=y 546CONFIG_SERIAL_CORE=y
502CONFIG_SERIAL_CORE_CONSOLE=y 547CONFIG_SERIAL_CORE_CONSOLE=y
503CONFIG_UNIX98_PTYS=y 548CONFIG_UNIX98_PTYS=y
549# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
504CONFIG_LEGACY_PTYS=y 550CONFIG_LEGACY_PTYS=y
505CONFIG_LEGACY_PTY_COUNT=64 551CONFIG_LEGACY_PTY_COUNT=64
506CONFIG_PRINTER=m 552CONFIG_PRINTER=m
507# CONFIG_LP_CONSOLE is not set 553# CONFIG_LP_CONSOLE is not set
508CONFIG_PPDEV=m 554CONFIG_PPDEV=m
509# CONFIG_TIPAR is not set
510# CONFIG_IPMI_HANDLER is not set 555# CONFIG_IPMI_HANDLER is not set
511# CONFIG_WATCHDOG is not set
512# CONFIG_HW_RANDOM is not set 556# CONFIG_HW_RANDOM is not set
513CONFIG_GEN_RTC=y
514CONFIG_GEN_RTC_X=y
515# CONFIG_R3964 is not set 557# CONFIG_R3964 is not set
516CONFIG_RAW_DRIVER=y 558CONFIG_RAW_DRIVER=y
517CONFIG_MAX_RAW_DEVS=256 559CONFIG_MAX_RAW_DEVS=256
518# CONFIG_TCG_TPM is not set 560# CONFIG_TCG_TPM is not set
519# CONFIG_I2C is not set 561# CONFIG_I2C is not set
520
521#
522# SPI support
523#
524# CONFIG_SPI is not set 562# CONFIG_SPI is not set
525# CONFIG_SPI_MASTER is not set
526# CONFIG_W1 is not set 563# CONFIG_W1 is not set
527# CONFIG_POWER_SUPPLY is not set 564# CONFIG_POWER_SUPPLY is not set
528# CONFIG_HWMON is not set 565# CONFIG_HWMON is not set
566# CONFIG_THERMAL is not set
567# CONFIG_THERMAL_HWMON is not set
568# CONFIG_WATCHDOG is not set
569CONFIG_SSB_POSSIBLE=y
529 570
530# 571#
531# Sonics Silicon Backplane 572# Sonics Silicon Backplane
532# 573#
533CONFIG_SSB_POSSIBLE=y
534# CONFIG_SSB is not set 574# CONFIG_SSB is not set
535 575
536# 576#
537# Multifunction device drivers 577# Multifunction device drivers
538# 578#
579# CONFIG_MFD_CORE is not set
539# CONFIG_MFD_SM501 is not set 580# CONFIG_MFD_SM501 is not set
581# CONFIG_HTC_PASIC3 is not set
582# CONFIG_MFD_TMIO is not set
583# CONFIG_REGULATOR is not set
540 584
541# 585#
542# Multimedia devices 586# Multimedia devices
543# 587#
588
589#
590# Multimedia core support
591#
544# CONFIG_VIDEO_DEV is not set 592# CONFIG_VIDEO_DEV is not set
545# CONFIG_DVB_CORE is not set 593# CONFIG_DVB_CORE is not set
546# CONFIG_DAB is not set 594# CONFIG_VIDEO_MEDIA is not set
547 595
548# 596#
549# Graphics support 597# Multimedia drivers
550# 598#
551# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 599# CONFIG_DAB is not set
552 600
553# 601#
554# Display device support 602# Graphics support
555# 603#
556# CONFIG_DISPLAY_SUPPORT is not set
557# CONFIG_VGASTATE is not set 604# CONFIG_VGASTATE is not set
558CONFIG_VIDEO_OUTPUT_CONTROL=m 605CONFIG_VIDEO_OUTPUT_CONTROL=m
559CONFIG_FB=y 606CONFIG_FB=y
560# CONFIG_FIRMWARE_EDID is not set 607# CONFIG_FIRMWARE_EDID is not set
561# CONFIG_FB_DDC is not set 608# CONFIG_FB_DDC is not set
609# CONFIG_FB_BOOT_VESA_SUPPORT is not set
562CONFIG_FB_CFB_FILLRECT=y 610CONFIG_FB_CFB_FILLRECT=y
563CONFIG_FB_CFB_COPYAREA=y 611CONFIG_FB_CFB_COPYAREA=y
564CONFIG_FB_CFB_IMAGEBLIT=y 612CONFIG_FB_CFB_IMAGEBLIT=y
613# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
565# CONFIG_FB_SYS_FILLRECT is not set 614# CONFIG_FB_SYS_FILLRECT is not set
566# CONFIG_FB_SYS_COPYAREA is not set 615# CONFIG_FB_SYS_COPYAREA is not set
567# CONFIG_FB_SYS_IMAGEBLIT is not set 616# CONFIG_FB_SYS_IMAGEBLIT is not set
617# CONFIG_FB_FOREIGN_ENDIAN is not set
568# CONFIG_FB_SYS_FOPS is not set 618# CONFIG_FB_SYS_FOPS is not set
569CONFIG_FB_DEFERRED_IO=y
570# CONFIG_FB_SVGALIB is not set 619# CONFIG_FB_SVGALIB is not set
571# CONFIG_FB_MACMODES is not set 620# CONFIG_FB_MACMODES is not set
572# CONFIG_FB_BACKLIGHT is not set 621# CONFIG_FB_BACKLIGHT is not set
@@ -579,6 +628,14 @@ CONFIG_FB_TILEBLITTING=y
579CONFIG_FB_STI=y 628CONFIG_FB_STI=y
580# CONFIG_FB_S1D13XXX is not set 629# CONFIG_FB_S1D13XXX is not set
581# CONFIG_FB_VIRTUAL is not set 630# CONFIG_FB_VIRTUAL is not set
631# CONFIG_FB_METRONOME is not set
632# CONFIG_FB_MB862XX is not set
633# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
634
635#
636# Display device support
637#
638# CONFIG_DISPLAY_SUPPORT is not set
582 639
583# 640#
584# Console display driver support 641# Console display driver support
@@ -606,15 +663,8 @@ CONFIG_LOGO=y
606# CONFIG_LOGO_LINUX_VGA16 is not set 663# CONFIG_LOGO_LINUX_VGA16 is not set
607# CONFIG_LOGO_LINUX_CLUT224 is not set 664# CONFIG_LOGO_LINUX_CLUT224 is not set
608CONFIG_LOGO_PARISC_CLUT224=y 665CONFIG_LOGO_PARISC_CLUT224=y
609
610#
611# Sound
612#
613CONFIG_SOUND=y 666CONFIG_SOUND=y
614 667CONFIG_SOUND_OSS_CORE=y
615#
616# Advanced Linux Sound Architecture
617#
618CONFIG_SND=y 668CONFIG_SND=y
619CONFIG_SND_TIMER=y 669CONFIG_SND_TIMER=y
620CONFIG_SND_PCM=y 670CONFIG_SND_PCM=y
@@ -630,10 +680,7 @@ CONFIG_SND_SUPPORT_OLD_API=y
630CONFIG_SND_VERBOSE_PROCFS=y 680CONFIG_SND_VERBOSE_PROCFS=y
631# CONFIG_SND_VERBOSE_PRINTK is not set 681# CONFIG_SND_VERBOSE_PRINTK is not set
632# CONFIG_SND_DEBUG is not set 682# CONFIG_SND_DEBUG is not set
633 683CONFIG_SND_DRIVERS=y
634#
635# Generic devices
636#
637# CONFIG_SND_DUMMY is not set 684# CONFIG_SND_DUMMY is not set
638# CONFIG_SND_VIRMIDI is not set 685# CONFIG_SND_VIRMIDI is not set
639# CONFIG_SND_MTPAV is not set 686# CONFIG_SND_MTPAV is not set
@@ -641,63 +688,82 @@ CONFIG_SND_VERBOSE_PROCFS=y
641# CONFIG_SND_SERIAL_U16550 is not set 688# CONFIG_SND_SERIAL_U16550 is not set
642# CONFIG_SND_MPU401 is not set 689# CONFIG_SND_MPU401 is not set
643# CONFIG_SND_PORTMAN2X4 is not set 690# CONFIG_SND_PORTMAN2X4 is not set
644 691CONFIG_SND_GSC=y
645#
646# GSC devices
647#
648CONFIG_SND_HARMONY=y 692CONFIG_SND_HARMONY=y
649
650#
651# System on Chip audio support
652#
653# CONFIG_SND_SOC is not set 693# CONFIG_SND_SOC is not set
654
655#
656# SoC Audio support for SuperH
657#
658
659#
660# Open Sound System
661#
662# CONFIG_SOUND_PRIME is not set 694# CONFIG_SOUND_PRIME is not set
663CONFIG_HID_SUPPORT=y 695CONFIG_HID_SUPPORT=y
664CONFIG_HID=y 696CONFIG_HID=y
665CONFIG_HID_DEBUG=y 697CONFIG_HID_DEBUG=y
698# CONFIG_HIDRAW is not set
699# CONFIG_HID_PID is not set
700
701#
702# Special HID drivers
703#
704CONFIG_HID_COMPAT=y
666CONFIG_USB_SUPPORT=y 705CONFIG_USB_SUPPORT=y
667# CONFIG_USB_ARCH_HAS_HCD is not set 706# CONFIG_USB_ARCH_HAS_HCD is not set
668# CONFIG_USB_ARCH_HAS_OHCI is not set 707# CONFIG_USB_ARCH_HAS_OHCI is not set
669# CONFIG_USB_ARCH_HAS_EHCI is not set 708# CONFIG_USB_ARCH_HAS_EHCI is not set
670 709
671# 710#
672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 711# Enable Host or Gadget support to see Inventra options
673# 712#
674 713
675# 714#
676# USB Gadget Support 715# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
677# 716#
678# CONFIG_USB_GADGET is not set 717# CONFIG_USB_GADGET is not set
718
719#
720# OTG and related infrastructure
721#
679# CONFIG_MMC is not set 722# CONFIG_MMC is not set
723# CONFIG_MEMSTICK is not set
680# CONFIG_NEW_LEDS is not set 724# CONFIG_NEW_LEDS is not set
681# CONFIG_RTC_CLASS is not set 725# CONFIG_ACCESSIBILITY is not set
726CONFIG_RTC_LIB=y
727CONFIG_RTC_CLASS=y
728CONFIG_RTC_HCTOSYS=y
729CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
730# CONFIG_RTC_DEBUG is not set
682 731
683# 732#
684# DMA Engine support 733# RTC interfaces
685# 734#
686# CONFIG_DMA_ENGINE is not set 735CONFIG_RTC_INTF_SYSFS=y
736CONFIG_RTC_INTF_PROC=y
737CONFIG_RTC_INTF_DEV=y
738# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
739# CONFIG_RTC_DRV_TEST is not set
687 740
688# 741#
689# DMA Clients 742# SPI RTC drivers
690# 743#
691 744
692# 745#
693# DMA Devices 746# Platform RTC drivers
694# 747#
695# CONFIG_AUXDISPLAY is not set 748# CONFIG_RTC_DRV_DS1286 is not set
749# CONFIG_RTC_DRV_DS1511 is not set
750# CONFIG_RTC_DRV_DS1553 is not set
751# CONFIG_RTC_DRV_DS1742 is not set
752# CONFIG_RTC_DRV_STK17TA8 is not set
753# CONFIG_RTC_DRV_M48T86 is not set
754# CONFIG_RTC_DRV_M48T35 is not set
755# CONFIG_RTC_DRV_M48T59 is not set
756# CONFIG_RTC_DRV_BQ4802 is not set
757# CONFIG_RTC_DRV_V3020 is not set
696 758
697# 759#
698# Userspace I/O 760# on-CPU RTC drivers
699# 761#
762CONFIG_RTC_DRV_PARISC=y
763# CONFIG_DMADEVICES is not set
764# CONFIG_AUXDISPLAY is not set
700# CONFIG_UIO is not set 765# CONFIG_UIO is not set
766# CONFIG_STAGING is not set
701 767
702# 768#
703# File systems 769# File systems
@@ -707,7 +773,7 @@ CONFIG_EXT2_FS=y
707# CONFIG_EXT2_FS_XIP is not set 773# CONFIG_EXT2_FS_XIP is not set
708CONFIG_EXT3_FS=y 774CONFIG_EXT3_FS=y
709# CONFIG_EXT3_FS_XATTR is not set 775# CONFIG_EXT3_FS_XATTR is not set
710# CONFIG_EXT4DEV_FS is not set 776# CONFIG_EXT4_FS is not set
711CONFIG_JBD=y 777CONFIG_JBD=y
712# CONFIG_JBD_DEBUG is not set 778# CONFIG_JBD_DEBUG is not set
713# CONFIG_REISERFS_FS is not set 779# CONFIG_REISERFS_FS is not set
@@ -717,19 +783,18 @@ CONFIG_JFS_FS=m
717# CONFIG_JFS_DEBUG is not set 783# CONFIG_JFS_DEBUG is not set
718# CONFIG_JFS_STATISTICS is not set 784# CONFIG_JFS_STATISTICS is not set
719CONFIG_FS_POSIX_ACL=y 785CONFIG_FS_POSIX_ACL=y
786CONFIG_FILE_LOCKING=y
720CONFIG_XFS_FS=m 787CONFIG_XFS_FS=m
721# CONFIG_XFS_QUOTA is not set 788# CONFIG_XFS_QUOTA is not set
722# CONFIG_XFS_SECURITY is not set
723# CONFIG_XFS_POSIX_ACL is not set 789# CONFIG_XFS_POSIX_ACL is not set
724# CONFIG_XFS_RT is not set 790# CONFIG_XFS_RT is not set
725# CONFIG_GFS2_FS is not set 791# CONFIG_XFS_DEBUG is not set
726# CONFIG_OCFS2_FS is not set 792# CONFIG_OCFS2_FS is not set
727# CONFIG_MINIX_FS is not set 793# CONFIG_BTRFS_FS is not set
728# CONFIG_ROMFS_FS is not set 794CONFIG_DNOTIFY=y
729CONFIG_INOTIFY=y 795CONFIG_INOTIFY=y
730CONFIG_INOTIFY_USER=y 796CONFIG_INOTIFY_USER=y
731# CONFIG_QUOTA is not set 797# CONFIG_QUOTA is not set
732CONFIG_DNOTIFY=y
733# CONFIG_AUTOFS_FS is not set 798# CONFIG_AUTOFS_FS is not set
734CONFIG_AUTOFS4_FS=y 799CONFIG_AUTOFS4_FS=y
735# CONFIG_FUSE_FS is not set 800# CONFIG_FUSE_FS is not set
@@ -759,16 +824,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
759CONFIG_PROC_FS=y 824CONFIG_PROC_FS=y
760CONFIG_PROC_KCORE=y 825CONFIG_PROC_KCORE=y
761CONFIG_PROC_SYSCTL=y 826CONFIG_PROC_SYSCTL=y
827CONFIG_PROC_PAGE_MONITOR=y
762CONFIG_SYSFS=y 828CONFIG_SYSFS=y
763CONFIG_TMPFS=y 829CONFIG_TMPFS=y
764# CONFIG_TMPFS_POSIX_ACL is not set 830# CONFIG_TMPFS_POSIX_ACL is not set
765# CONFIG_HUGETLB_PAGE is not set 831# CONFIG_HUGETLB_PAGE is not set
766CONFIG_RAMFS=y
767# CONFIG_CONFIGFS_FS is not set 832# CONFIG_CONFIGFS_FS is not set
768 833CONFIG_MISC_FILESYSTEMS=y
769#
770# Miscellaneous filesystems
771#
772# CONFIG_ADFS_FS is not set 834# CONFIG_ADFS_FS is not set
773# CONFIG_AFFS_FS is not set 835# CONFIG_AFFS_FS is not set
774# CONFIG_ECRYPT_FS is not set 836# CONFIG_ECRYPT_FS is not set
@@ -778,35 +840,34 @@ CONFIG_RAMFS=y
778# CONFIG_BFS_FS is not set 840# CONFIG_BFS_FS is not set
779# CONFIG_EFS_FS is not set 841# CONFIG_EFS_FS is not set
780# CONFIG_CRAMFS is not set 842# CONFIG_CRAMFS is not set
843# CONFIG_SQUASHFS is not set
781# CONFIG_VXFS_FS is not set 844# CONFIG_VXFS_FS is not set
845# CONFIG_MINIX_FS is not set
846# CONFIG_OMFS_FS is not set
782# CONFIG_HPFS_FS is not set 847# CONFIG_HPFS_FS is not set
783# CONFIG_QNX4FS_FS is not set 848# CONFIG_QNX4FS_FS is not set
849# CONFIG_ROMFS_FS is not set
784# CONFIG_SYSV_FS is not set 850# CONFIG_SYSV_FS is not set
785CONFIG_UFS_FS=m 851CONFIG_UFS_FS=m
786# CONFIG_UFS_FS_WRITE is not set 852# CONFIG_UFS_FS_WRITE is not set
787# CONFIG_UFS_DEBUG is not set 853# CONFIG_UFS_DEBUG is not set
788 854CONFIG_NETWORK_FILESYSTEMS=y
789#
790# Network File Systems
791#
792CONFIG_NFS_FS=y 855CONFIG_NFS_FS=y
793CONFIG_NFS_V3=y 856CONFIG_NFS_V3=y
794# CONFIG_NFS_V3_ACL is not set 857# CONFIG_NFS_V3_ACL is not set
795CONFIG_NFS_V4=y 858CONFIG_NFS_V4=y
796CONFIG_NFS_DIRECTIO=y 859CONFIG_ROOT_NFS=y
797CONFIG_NFSD=m 860CONFIG_NFSD=m
798CONFIG_NFSD_V3=y 861CONFIG_NFSD_V3=y
799# CONFIG_NFSD_V3_ACL is not set 862# CONFIG_NFSD_V3_ACL is not set
800CONFIG_NFSD_V4=y 863CONFIG_NFSD_V4=y
801CONFIG_NFSD_TCP=y
802CONFIG_ROOT_NFS=y
803CONFIG_LOCKD=y 864CONFIG_LOCKD=y
804CONFIG_LOCKD_V4=y 865CONFIG_LOCKD_V4=y
805CONFIG_EXPORTFS=m 866CONFIG_EXPORTFS=m
806CONFIG_NFS_COMMON=y 867CONFIG_NFS_COMMON=y
807CONFIG_SUNRPC=y 868CONFIG_SUNRPC=y
808CONFIG_SUNRPC_GSS=y 869CONFIG_SUNRPC_GSS=y
809# CONFIG_SUNRPC_BIND34 is not set 870# CONFIG_SUNRPC_REGISTER_V4 is not set
810CONFIG_RPCSEC_GSS_KRB5=y 871CONFIG_RPCSEC_GSS_KRB5=y
811CONFIG_RPCSEC_GSS_SPKM3=m 872CONFIG_RPCSEC_GSS_SPKM3=m
812CONFIG_SMB_FS=m 873CONFIG_SMB_FS=m
@@ -815,6 +876,7 @@ CONFIG_SMB_NLS_REMOTE="cp437"
815CONFIG_CIFS=m 876CONFIG_CIFS=m
816# CONFIG_CIFS_STATS is not set 877# CONFIG_CIFS_STATS is not set
817# CONFIG_CIFS_WEAK_PW_HASH is not set 878# CONFIG_CIFS_WEAK_PW_HASH is not set
879# CONFIG_CIFS_UPCALL is not set
818# CONFIG_CIFS_XATTR is not set 880# CONFIG_CIFS_XATTR is not set
819# CONFIG_CIFS_DEBUG2 is not set 881# CONFIG_CIFS_DEBUG2 is not set
820# CONFIG_CIFS_EXPERIMENTAL is not set 882# CONFIG_CIFS_EXPERIMENTAL is not set
@@ -827,10 +889,6 @@ CONFIG_CIFS=m
827# 889#
828# CONFIG_PARTITION_ADVANCED is not set 890# CONFIG_PARTITION_ADVANCED is not set
829CONFIG_MSDOS_PARTITION=y 891CONFIG_MSDOS_PARTITION=y
830
831#
832# Native Language Support
833#
834CONFIG_NLS=y 892CONFIG_NLS=y
835CONFIG_NLS_DEFAULT="iso8859-1" 893CONFIG_NLS_DEFAULT="iso8859-1"
836CONFIG_NLS_CODEPAGE_437=m 894CONFIG_NLS_CODEPAGE_437=m
@@ -871,33 +929,28 @@ CONFIG_NLS_ISO8859_15=m
871CONFIG_NLS_KOI8_R=m 929CONFIG_NLS_KOI8_R=m
872CONFIG_NLS_KOI8_U=m 930CONFIG_NLS_KOI8_U=m
873CONFIG_NLS_UTF8=m 931CONFIG_NLS_UTF8=m
874
875#
876# Distributed Lock Manager
877#
878# CONFIG_DLM is not set 932# CONFIG_DLM is not set
879 933
880# 934#
881# Profiling support
882#
883CONFIG_PROFILING=y
884CONFIG_OPROFILE=m
885
886#
887# Kernel hacking 935# Kernel hacking
888# 936#
889# CONFIG_PRINTK_TIME is not set 937# CONFIG_PRINTK_TIME is not set
938CONFIG_ENABLE_WARN_DEPRECATED=y
890CONFIG_ENABLE_MUST_CHECK=y 939CONFIG_ENABLE_MUST_CHECK=y
940CONFIG_FRAME_WARN=1024
891CONFIG_MAGIC_SYSRQ=y 941CONFIG_MAGIC_SYSRQ=y
892# CONFIG_UNUSED_SYMBOLS is not set 942# CONFIG_UNUSED_SYMBOLS is not set
893# CONFIG_DEBUG_FS is not set 943CONFIG_DEBUG_FS=y
894# CONFIG_HEADERS_CHECK is not set 944# CONFIG_HEADERS_CHECK is not set
895CONFIG_DEBUG_KERNEL=y 945CONFIG_DEBUG_KERNEL=y
896# CONFIG_DEBUG_SHIRQ is not set 946# CONFIG_DEBUG_SHIRQ is not set
897CONFIG_DETECT_SOFTLOCKUP=y 947CONFIG_DETECT_SOFTLOCKUP=y
948# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
949CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
898CONFIG_SCHED_DEBUG=y 950CONFIG_SCHED_DEBUG=y
899# CONFIG_SCHEDSTATS is not set 951# CONFIG_SCHEDSTATS is not set
900# CONFIG_TIMER_STATS is not set 952# CONFIG_TIMER_STATS is not set
953# CONFIG_DEBUG_OBJECTS is not set
901# CONFIG_DEBUG_SLAB is not set 954# CONFIG_DEBUG_SLAB is not set
902# CONFIG_DEBUG_RT_MUTEXES is not set 955# CONFIG_DEBUG_RT_MUTEXES is not set
903# CONFIG_RT_MUTEX_TESTER is not set 956# CONFIG_RT_MUTEX_TESTER is not set
@@ -909,10 +962,32 @@ CONFIG_DEBUG_MUTEXES=y
909CONFIG_DEBUG_BUGVERBOSE=y 962CONFIG_DEBUG_BUGVERBOSE=y
910# CONFIG_DEBUG_INFO is not set 963# CONFIG_DEBUG_INFO is not set
911# CONFIG_DEBUG_VM is not set 964# CONFIG_DEBUG_VM is not set
965# CONFIG_DEBUG_WRITECOUNT is not set
966CONFIG_DEBUG_MEMORY_INIT=y
912# CONFIG_DEBUG_LIST is not set 967# CONFIG_DEBUG_LIST is not set
913CONFIG_FORCED_INLINING=y 968# CONFIG_DEBUG_SG is not set
969# CONFIG_DEBUG_NOTIFIERS is not set
970# CONFIG_BOOT_PRINTK_DELAY is not set
914# CONFIG_RCU_TORTURE_TEST is not set 971# CONFIG_RCU_TORTURE_TEST is not set
972# CONFIG_RCU_CPU_STALL_DETECTOR is not set
973# CONFIG_BACKTRACE_SELF_TEST is not set
974# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
915# CONFIG_FAULT_INJECTION is not set 975# CONFIG_FAULT_INJECTION is not set
976# CONFIG_SYSCTL_SYSCALL_CHECK is not set
977CONFIG_NOP_TRACER=y
978CONFIG_RING_BUFFER=y
979CONFIG_TRACING=y
980
981#
982# Tracers
983#
984# CONFIG_SCHED_TRACER is not set
985# CONFIG_CONTEXT_SWITCH_TRACER is not set
986# CONFIG_BOOT_TRACER is not set
987# CONFIG_TRACE_BRANCH_PROFILING is not set
988# CONFIG_FTRACE_STARTUP_TEST is not set
989# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
990# CONFIG_SAMPLES is not set
916CONFIG_DEBUG_RODATA=y 991CONFIG_DEBUG_RODATA=y
917 992
918# 993#
@@ -921,57 +996,113 @@ CONFIG_DEBUG_RODATA=y
921CONFIG_KEYS=y 996CONFIG_KEYS=y
922CONFIG_KEYS_DEBUG_PROC_KEYS=y 997CONFIG_KEYS_DEBUG_PROC_KEYS=y
923# CONFIG_SECURITY is not set 998# CONFIG_SECURITY is not set
999# CONFIG_SECURITYFS is not set
1000# CONFIG_SECURITY_FILE_CAPABILITIES is not set
924CONFIG_CRYPTO=y 1001CONFIG_CRYPTO=y
1002
1003#
1004# Crypto core or helper
1005#
1006# CONFIG_CRYPTO_FIPS is not set
925CONFIG_CRYPTO_ALGAPI=y 1007CONFIG_CRYPTO_ALGAPI=y
1008CONFIG_CRYPTO_ALGAPI2=y
1009CONFIG_CRYPTO_AEAD=m
1010CONFIG_CRYPTO_AEAD2=y
926CONFIG_CRYPTO_BLKCIPHER=y 1011CONFIG_CRYPTO_BLKCIPHER=y
1012CONFIG_CRYPTO_BLKCIPHER2=y
927CONFIG_CRYPTO_HASH=y 1013CONFIG_CRYPTO_HASH=y
1014CONFIG_CRYPTO_HASH2=y
1015CONFIG_CRYPTO_RNG2=y
928CONFIG_CRYPTO_MANAGER=y 1016CONFIG_CRYPTO_MANAGER=y
1017CONFIG_CRYPTO_MANAGER2=y
1018# CONFIG_CRYPTO_GF128MUL is not set
1019CONFIG_CRYPTO_NULL=m
1020# CONFIG_CRYPTO_CRYPTD is not set
1021CONFIG_CRYPTO_AUTHENC=m
1022CONFIG_CRYPTO_TEST=m
1023
1024#
1025# Authenticated Encryption with Associated Data
1026#
1027# CONFIG_CRYPTO_CCM is not set
1028# CONFIG_CRYPTO_GCM is not set
1029# CONFIG_CRYPTO_SEQIV is not set
1030
1031#
1032# Block modes
1033#
1034CONFIG_CRYPTO_CBC=y
1035# CONFIG_CRYPTO_CTR is not set
1036# CONFIG_CRYPTO_CTS is not set
1037CONFIG_CRYPTO_ECB=m
1038# CONFIG_CRYPTO_LRW is not set
1039# CONFIG_CRYPTO_PCBC is not set
1040# CONFIG_CRYPTO_XTS is not set
1041
1042#
1043# Hash modes
1044#
929CONFIG_CRYPTO_HMAC=y 1045CONFIG_CRYPTO_HMAC=y
930# CONFIG_CRYPTO_XCBC is not set 1046# CONFIG_CRYPTO_XCBC is not set
931CONFIG_CRYPTO_NULL=m 1047
1048#
1049# Digest
1050#
1051CONFIG_CRYPTO_CRC32C=m
932CONFIG_CRYPTO_MD4=m 1052CONFIG_CRYPTO_MD4=m
933CONFIG_CRYPTO_MD5=y 1053CONFIG_CRYPTO_MD5=y
1054CONFIG_CRYPTO_MICHAEL_MIC=m
1055# CONFIG_CRYPTO_RMD128 is not set
1056# CONFIG_CRYPTO_RMD160 is not set
1057# CONFIG_CRYPTO_RMD256 is not set
1058# CONFIG_CRYPTO_RMD320 is not set
934CONFIG_CRYPTO_SHA1=m 1059CONFIG_CRYPTO_SHA1=m
935CONFIG_CRYPTO_SHA256=m 1060CONFIG_CRYPTO_SHA256=m
936CONFIG_CRYPTO_SHA512=m 1061CONFIG_CRYPTO_SHA512=m
937CONFIG_CRYPTO_WP512=m
938CONFIG_CRYPTO_TGR192=m 1062CONFIG_CRYPTO_TGR192=m
939# CONFIG_CRYPTO_GF128MUL is not set 1063CONFIG_CRYPTO_WP512=m
940CONFIG_CRYPTO_ECB=m 1064
941CONFIG_CRYPTO_CBC=y 1065#
942# CONFIG_CRYPTO_PCBC is not set 1066# Ciphers
943# CONFIG_CRYPTO_LRW is not set 1067#
944# CONFIG_CRYPTO_XTS is not set
945# CONFIG_CRYPTO_CRYPTD is not set
946CONFIG_CRYPTO_DES=y
947# CONFIG_CRYPTO_FCRYPT is not set
948CONFIG_CRYPTO_BLOWFISH=m
949CONFIG_CRYPTO_TWOFISH=m
950CONFIG_CRYPTO_TWOFISH_COMMON=m
951CONFIG_CRYPTO_SERPENT=m
952CONFIG_CRYPTO_AES=m 1068CONFIG_CRYPTO_AES=m
1069CONFIG_CRYPTO_ANUBIS=m
1070CONFIG_CRYPTO_ARC4=m
1071CONFIG_CRYPTO_BLOWFISH=m
1072# CONFIG_CRYPTO_CAMELLIA is not set
953CONFIG_CRYPTO_CAST5=m 1073CONFIG_CRYPTO_CAST5=m
954CONFIG_CRYPTO_CAST6=m 1074CONFIG_CRYPTO_CAST6=m
955CONFIG_CRYPTO_TEA=m 1075CONFIG_CRYPTO_DES=y
956CONFIG_CRYPTO_ARC4=m 1076# CONFIG_CRYPTO_FCRYPT is not set
957CONFIG_CRYPTO_KHAZAD=m 1077CONFIG_CRYPTO_KHAZAD=m
958CONFIG_CRYPTO_ANUBIS=m 1078# CONFIG_CRYPTO_SALSA20 is not set
959# CONFIG_CRYPTO_SEED is not set 1079# CONFIG_CRYPTO_SEED is not set
1080CONFIG_CRYPTO_SERPENT=m
1081CONFIG_CRYPTO_TEA=m
1082CONFIG_CRYPTO_TWOFISH=m
1083CONFIG_CRYPTO_TWOFISH_COMMON=m
1084
1085#
1086# Compression
1087#
960CONFIG_CRYPTO_DEFLATE=m 1088CONFIG_CRYPTO_DEFLATE=m
961CONFIG_CRYPTO_MICHAEL_MIC=m 1089# CONFIG_CRYPTO_LZO is not set
962CONFIG_CRYPTO_CRC32C=m 1090
963# CONFIG_CRYPTO_CAMELLIA is not set 1091#
964CONFIG_CRYPTO_TEST=m 1092# Random Number Generation
965# CONFIG_CRYPTO_AUTHENC is not set 1093#
1094# CONFIG_CRYPTO_ANSI_CPRNG is not set
966# CONFIG_CRYPTO_HW is not set 1095# CONFIG_CRYPTO_HW is not set
967 1096
968# 1097#
969# Library routines 1098# Library routines
970# 1099#
971CONFIG_BITREVERSE=y 1100CONFIG_BITREVERSE=y
1101CONFIG_GENERIC_FIND_LAST_BIT=y
972CONFIG_CRC_CCITT=m 1102CONFIG_CRC_CCITT=m
973# CONFIG_CRC16 is not set 1103# CONFIG_CRC16 is not set
974# CONFIG_CRC_ITU_T is not set 1104# CONFIG_CRC_T10DIF is not set
1105CONFIG_CRC_ITU_T=m
975CONFIG_CRC32=y 1106CONFIG_CRC32=y
976# CONFIG_CRC7 is not set 1107# CONFIG_CRC7 is not set
977CONFIG_LIBCRC32C=m 1108CONFIG_LIBCRC32C=m
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig
index ddacc72e38fb..f12e4b8349d9 100644
--- a/arch/parisc/configs/a500_defconfig
+++ b/arch/parisc/configs/a500_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.29-rc8
4# Fri Oct 12 21:12:44 2007 4# Fri Mar 13 01:32:56 2009
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -34,18 +34,30 @@ CONFIG_SYSVIPC_SYSCTL=y
34CONFIG_POSIX_MQUEUE=y 34CONFIG_POSIX_MQUEUE=y
35# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
36# CONFIG_TASKSTATS is not set 36# CONFIG_TASKSTATS is not set
37# CONFIG_USER_NS is not set
38# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
38
39#
40# RCU Subsystem
41#
42CONFIG_CLASSIC_RCU=y
43# CONFIG_TREE_RCU is not set
44# CONFIG_PREEMPT_RCU is not set
45# CONFIG_TREE_RCU_TRACE is not set
46# CONFIG_PREEMPT_RCU_TRACE is not set
39CONFIG_IKCONFIG=y 47CONFIG_IKCONFIG=y
40CONFIG_IKCONFIG_PROC=y 48CONFIG_IKCONFIG_PROC=y
41CONFIG_LOG_BUF_SHIFT=16 49CONFIG_LOG_BUF_SHIFT=16
42# CONFIG_CPUSETS is not set 50# CONFIG_GROUP_SCHED is not set
51# CONFIG_CGROUPS is not set
43CONFIG_SYSFS_DEPRECATED=y 52CONFIG_SYSFS_DEPRECATED=y
53CONFIG_SYSFS_DEPRECATED_V2=y
44# CONFIG_RELAY is not set 54# CONFIG_RELAY is not set
55# CONFIG_NAMESPACES is not set
45CONFIG_BLK_DEV_INITRD=y 56CONFIG_BLK_DEV_INITRD=y
46CONFIG_INITRAMFS_SOURCE="" 57CONFIG_INITRAMFS_SOURCE=""
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 58# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y 59CONFIG_SYSCTL=y
60CONFIG_ANON_INODES=y
49CONFIG_EMBEDDED=y 61CONFIG_EMBEDDED=y
50CONFIG_SYSCTL_SYSCALL=y 62CONFIG_SYSCTL_SYSCALL=y
51CONFIG_KALLSYMS=y 63CONFIG_KALLSYMS=y
@@ -57,28 +69,40 @@ CONFIG_BUG=y
57CONFIG_ELF_CORE=y 69CONFIG_ELF_CORE=y
58CONFIG_BASE_FULL=y 70CONFIG_BASE_FULL=y
59CONFIG_FUTEX=y 71CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
61CONFIG_EPOLL=y 72CONFIG_EPOLL=y
62CONFIG_SIGNALFD=y 73CONFIG_SIGNALFD=y
74CONFIG_TIMERFD=y
63CONFIG_EVENTFD=y 75CONFIG_EVENTFD=y
64CONFIG_SHMEM=y 76CONFIG_SHMEM=y
77CONFIG_AIO=y
65CONFIG_VM_EVENT_COUNTERS=y 78CONFIG_VM_EVENT_COUNTERS=y
79CONFIG_PCI_QUIRKS=y
80CONFIG_COMPAT_BRK=y
66CONFIG_SLAB=y 81CONFIG_SLAB=y
67# CONFIG_SLUB is not set 82# CONFIG_SLUB is not set
68# CONFIG_SLOB is not set 83# CONFIG_SLOB is not set
84CONFIG_PROFILING=y
85CONFIG_TRACEPOINTS=y
86# CONFIG_MARKERS is not set
87CONFIG_OPROFILE=m
88CONFIG_HAVE_OPROFILE=y
89CONFIG_USE_GENERIC_SMP_HELPERS=y
90# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
91CONFIG_SLABINFO=y
69CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
70# CONFIG_TINY_SHMEM is not set
71CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
72CONFIG_MODULES=y 94CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set
73CONFIG_MODULE_UNLOAD=y 96CONFIG_MODULE_UNLOAD=y
74CONFIG_MODULE_FORCE_UNLOAD=y 97CONFIG_MODULE_FORCE_UNLOAD=y
75# CONFIG_MODVERSIONS is not set 98# CONFIG_MODVERSIONS is not set
76# CONFIG_MODULE_SRCVERSION_ALL is not set 99# CONFIG_MODULE_SRCVERSION_ALL is not set
77CONFIG_KMOD=y 100CONFIG_INIT_ALL_POSSIBLE=y
78CONFIG_STOP_MACHINE=y 101CONFIG_STOP_MACHINE=y
79CONFIG_BLOCK=y 102CONFIG_BLOCK=y
80# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
81# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
105# CONFIG_BLK_DEV_INTEGRITY is not set
82CONFIG_BLOCK_COMPAT=y 106CONFIG_BLOCK_COMPAT=y
83 107
84# 108#
@@ -93,6 +117,7 @@ CONFIG_IOSCHED_CFQ=y
93CONFIG_DEFAULT_CFQ=y 117CONFIG_DEFAULT_CFQ=y
94# CONFIG_DEFAULT_NOOP is not set 118# CONFIG_DEFAULT_NOOP is not set
95CONFIG_DEFAULT_IOSCHED="cfq" 119CONFIG_DEFAULT_IOSCHED="cfq"
120# CONFIG_FREEZER is not set
96 121
97# 122#
98# Processor type and features 123# Processor type and features
@@ -118,12 +143,12 @@ CONFIG_NODES_SHIFT=3
118CONFIG_PREEMPT_NONE=y 143CONFIG_PREEMPT_NONE=y
119# CONFIG_PREEMPT_VOLUNTARY is not set 144# CONFIG_PREEMPT_VOLUNTARY is not set
120# CONFIG_PREEMPT is not set 145# CONFIG_PREEMPT is not set
121CONFIG_PREEMPT_BKL=y
122# CONFIG_HZ_100 is not set 146# CONFIG_HZ_100 is not set
123CONFIG_HZ_250=y 147CONFIG_HZ_250=y
124# CONFIG_HZ_300 is not set 148# CONFIG_HZ_300 is not set
125# CONFIG_HZ_1000 is not set 149# CONFIG_HZ_1000 is not set
126CONFIG_HZ=250 150CONFIG_HZ=250
151# CONFIG_SCHED_HRTICK is not set
127CONFIG_SELECT_MEMORY_MODEL=y 152CONFIG_SELECT_MEMORY_MODEL=y
128# CONFIG_FLATMEM_MANUAL is not set 153# CONFIG_FLATMEM_MANUAL is not set
129CONFIG_DISCONTIGMEM_MANUAL=y 154CONFIG_DISCONTIGMEM_MANUAL=y
@@ -131,11 +156,12 @@ CONFIG_DISCONTIGMEM_MANUAL=y
131CONFIG_DISCONTIGMEM=y 156CONFIG_DISCONTIGMEM=y
132CONFIG_FLAT_NODE_MEM_MAP=y 157CONFIG_FLAT_NODE_MEM_MAP=y
133CONFIG_NEED_MULTIPLE_NODES=y 158CONFIG_NEED_MULTIPLE_NODES=y
134# CONFIG_SPARSEMEM_STATIC is not set 159CONFIG_PAGEFLAGS_EXTENDED=y
135CONFIG_SPLIT_PTLOCK_CPUS=4 160CONFIG_SPLIT_PTLOCK_CPUS=4
136CONFIG_RESOURCES_64BIT=y 161CONFIG_PHYS_ADDR_T_64BIT=y
137CONFIG_ZONE_DMA_FLAG=0 162CONFIG_ZONE_DMA_FLAG=0
138CONFIG_VIRT_TO_BUS=y 163CONFIG_VIRT_TO_BUS=y
164CONFIG_UNEVICTABLE_LRU=y
139CONFIG_COMPAT=y 165CONFIG_COMPAT=y
140CONFIG_NR_CPUS=8 166CONFIG_NR_CPUS=8
141 167
@@ -145,14 +171,13 @@ CONFIG_NR_CPUS=8
145# CONFIG_GSC is not set 171# CONFIG_GSC is not set
146CONFIG_PCI=y 172CONFIG_PCI=y
147# CONFIG_ARCH_SUPPORTS_MSI is not set 173# CONFIG_ARCH_SUPPORTS_MSI is not set
174CONFIG_PCI_LEGACY=y
148# CONFIG_PCI_DEBUG is not set 175# CONFIG_PCI_DEBUG is not set
176# CONFIG_PCI_STUB is not set
149CONFIG_PCI_LBA=y 177CONFIG_PCI_LBA=y
150CONFIG_IOSAPIC=y 178CONFIG_IOSAPIC=y
151CONFIG_IOMMU_SBA=y 179CONFIG_IOMMU_SBA=y
152 180CONFIG_IOMMU_HELPER=y
153#
154# PCCARD (PCMCIA/CardBus) support
155#
156CONFIG_PCCARD=m 181CONFIG_PCCARD=m
157# CONFIG_PCMCIA_DEBUG is not set 182# CONFIG_PCMCIA_DEBUG is not set
158CONFIG_PCMCIA=m 183CONFIG_PCMCIA=m
@@ -187,16 +212,15 @@ CONFIG_PDC_STABLE=y
187# Executable file formats 212# Executable file formats
188# 213#
189CONFIG_BINFMT_ELF=y 214CONFIG_BINFMT_ELF=y
215# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
216# CONFIG_HAVE_AOUT is not set
190# CONFIG_BINFMT_MISC is not set 217# CONFIG_BINFMT_MISC is not set
191
192#
193# Networking
194#
195CONFIG_NET=y 218CONFIG_NET=y
196 219
197# 220#
198# Networking options 221# Networking options
199# 222#
223CONFIG_COMPAT_NET_DEV_OPS=y
200CONFIG_PACKET=y 224CONFIG_PACKET=y
201CONFIG_PACKET_MMAP=y 225CONFIG_PACKET_MMAP=y
202CONFIG_UNIX=y 226CONFIG_UNIX=y
@@ -204,6 +228,8 @@ CONFIG_XFRM=y
204CONFIG_XFRM_USER=m 228CONFIG_XFRM_USER=m
205# CONFIG_XFRM_SUB_POLICY is not set 229# CONFIG_XFRM_SUB_POLICY is not set
206# CONFIG_XFRM_MIGRATE is not set 230# CONFIG_XFRM_MIGRATE is not set
231# CONFIG_XFRM_STATISTICS is not set
232CONFIG_XFRM_IPCOMP=m
207CONFIG_NET_KEY=m 233CONFIG_NET_KEY=m
208# CONFIG_NET_KEY_MIGRATE is not set 234# CONFIG_NET_KEY_MIGRATE is not set
209CONFIG_INET=y 235CONFIG_INET=y
@@ -234,7 +260,6 @@ CONFIG_INET_TCP_DIAG=y
234CONFIG_TCP_CONG_CUBIC=y 260CONFIG_TCP_CONG_CUBIC=y
235CONFIG_DEFAULT_TCP_CONG="cubic" 261CONFIG_DEFAULT_TCP_CONG="cubic"
236# CONFIG_TCP_MD5SIG is not set 262# CONFIG_TCP_MD5SIG is not set
237# CONFIG_IP_VS is not set
238CONFIG_IPV6=m 263CONFIG_IPV6=m
239# CONFIG_IPV6_PRIVACY is not set 264# CONFIG_IPV6_PRIVACY is not set
240# CONFIG_IPV6_ROUTER_PREF is not set 265# CONFIG_IPV6_ROUTER_PREF is not set
@@ -250,66 +275,72 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
250CONFIG_INET6_XFRM_MODE_BEET=m 275CONFIG_INET6_XFRM_MODE_BEET=m
251# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 276# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
252CONFIG_IPV6_SIT=m 277CONFIG_IPV6_SIT=m
278CONFIG_IPV6_NDISC_NODETYPE=y
253CONFIG_IPV6_TUNNEL=m 279CONFIG_IPV6_TUNNEL=m
254# CONFIG_IPV6_MULTIPLE_TABLES is not set 280# CONFIG_IPV6_MULTIPLE_TABLES is not set
281# CONFIG_IPV6_MROUTE is not set
255# CONFIG_NETWORK_SECMARK is not set 282# CONFIG_NETWORK_SECMARK is not set
256CONFIG_NETFILTER=y 283CONFIG_NETFILTER=y
257# CONFIG_NETFILTER_DEBUG is not set 284# CONFIG_NETFILTER_DEBUG is not set
285CONFIG_NETFILTER_ADVANCED=y
258 286
259# 287#
260# Core Netfilter Configuration 288# Core Netfilter Configuration
261# 289#
262# CONFIG_NETFILTER_NETLINK is not set 290# CONFIG_NETFILTER_NETLINK_QUEUE is not set
263# CONFIG_NF_CONNTRACK_ENABLED is not set 291# CONFIG_NETFILTER_NETLINK_LOG is not set
264# CONFIG_NF_CONNTRACK is not set 292# CONFIG_NF_CONNTRACK is not set
265CONFIG_NETFILTER_XTABLES=m 293CONFIG_NETFILTER_XTABLES=m
266# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set 294# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
267# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 295# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
268# CONFIG_NETFILTER_XT_TARGET_MARK is not set 296# CONFIG_NETFILTER_XT_TARGET_MARK is not set
269# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
270# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 297# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
298# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
299# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
271# CONFIG_NETFILTER_XT_TARGET_TRACE is not set 300# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
272# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set 301# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
302# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
273# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 303# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
274# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 304# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
275# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 305# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
276# CONFIG_NETFILTER_XT_MATCH_ESP is not set 306# CONFIG_NETFILTER_XT_MATCH_ESP is not set
307# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
308# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
277# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set 309# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
278# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set 310# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
279# CONFIG_NETFILTER_XT_MATCH_MAC is not set 311# CONFIG_NETFILTER_XT_MATCH_MAC is not set
280# CONFIG_NETFILTER_XT_MATCH_MARK is not set 312# CONFIG_NETFILTER_XT_MATCH_MARK is not set
281# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
282# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set 313# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
314# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
315# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
283# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set 316# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
284# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 317# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
318# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
285# CONFIG_NETFILTER_XT_MATCH_REALM is not set 319# CONFIG_NETFILTER_XT_MATCH_REALM is not set
320# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
286# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 321# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
287# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 322# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
288# CONFIG_NETFILTER_XT_MATCH_STRING is not set 323# CONFIG_NETFILTER_XT_MATCH_STRING is not set
289# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 324# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
290# CONFIG_NETFILTER_XT_MATCH_TIME is not set 325# CONFIG_NETFILTER_XT_MATCH_TIME is not set
291# CONFIG_NETFILTER_XT_MATCH_U32 is not set 326# CONFIG_NETFILTER_XT_MATCH_U32 is not set
292# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set 327# CONFIG_IP_VS is not set
293 328
294# 329#
295# IP: Netfilter Configuration 330# IP: Netfilter Configuration
296# 331#
332# CONFIG_NF_DEFRAG_IPV4 is not set
297CONFIG_IP_NF_QUEUE=m 333CONFIG_IP_NF_QUEUE=m
298CONFIG_IP_NF_IPTABLES=m 334CONFIG_IP_NF_IPTABLES=m
299CONFIG_IP_NF_MATCH_IPRANGE=m 335# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
300CONFIG_IP_NF_MATCH_TOS=m
301CONFIG_IP_NF_MATCH_RECENT=m
302CONFIG_IP_NF_MATCH_ECN=m
303# CONFIG_IP_NF_MATCH_AH is not set 336# CONFIG_IP_NF_MATCH_AH is not set
337CONFIG_IP_NF_MATCH_ECN=m
304CONFIG_IP_NF_MATCH_TTL=m 338CONFIG_IP_NF_MATCH_TTL=m
305CONFIG_IP_NF_MATCH_OWNER=m
306# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
307CONFIG_IP_NF_FILTER=m 339CONFIG_IP_NF_FILTER=m
308CONFIG_IP_NF_TARGET_REJECT=m 340CONFIG_IP_NF_TARGET_REJECT=m
309CONFIG_IP_NF_TARGET_LOG=m 341CONFIG_IP_NF_TARGET_LOG=m
310CONFIG_IP_NF_TARGET_ULOG=m 342CONFIG_IP_NF_TARGET_ULOG=m
311CONFIG_IP_NF_MANGLE=m 343CONFIG_IP_NF_MANGLE=m
312CONFIG_IP_NF_TARGET_TOS=m
313CONFIG_IP_NF_TARGET_ECN=m 344CONFIG_IP_NF_TARGET_ECN=m
314# CONFIG_IP_NF_TARGET_TTL is not set 345# CONFIG_IP_NF_TARGET_TTL is not set
315CONFIG_IP_NF_RAW=m 346CONFIG_IP_NF_RAW=m
@@ -318,33 +349,30 @@ CONFIG_IP_NF_ARPFILTER=m
318CONFIG_IP_NF_ARP_MANGLE=m 349CONFIG_IP_NF_ARP_MANGLE=m
319 350
320# 351#
321# IPv6: Netfilter Configuration (EXPERIMENTAL) 352# IPv6: Netfilter Configuration
322# 353#
323# CONFIG_IP6_NF_QUEUE is not set 354# CONFIG_IP6_NF_QUEUE is not set
324CONFIG_IP6_NF_IPTABLES=m 355CONFIG_IP6_NF_IPTABLES=m
325CONFIG_IP6_NF_MATCH_RT=m 356# CONFIG_IP6_NF_MATCH_AH is not set
326CONFIG_IP6_NF_MATCH_OPTS=m 357# CONFIG_IP6_NF_MATCH_EUI64 is not set
327CONFIG_IP6_NF_MATCH_FRAG=m 358CONFIG_IP6_NF_MATCH_FRAG=m
359CONFIG_IP6_NF_MATCH_OPTS=m
328CONFIG_IP6_NF_MATCH_HL=m 360CONFIG_IP6_NF_MATCH_HL=m
329# CONFIG_IP6_NF_MATCH_OWNER is not set
330CONFIG_IP6_NF_MATCH_IPV6HEADER=m 361CONFIG_IP6_NF_MATCH_IPV6HEADER=m
331# CONFIG_IP6_NF_MATCH_AH is not set
332# CONFIG_IP6_NF_MATCH_MH is not set 362# CONFIG_IP6_NF_MATCH_MH is not set
333# CONFIG_IP6_NF_MATCH_EUI64 is not set 363CONFIG_IP6_NF_MATCH_RT=m
334CONFIG_IP6_NF_FILTER=m
335CONFIG_IP6_NF_TARGET_LOG=m 364CONFIG_IP6_NF_TARGET_LOG=m
365CONFIG_IP6_NF_FILTER=m
336CONFIG_IP6_NF_TARGET_REJECT=m 366CONFIG_IP6_NF_TARGET_REJECT=m
337CONFIG_IP6_NF_MANGLE=m 367CONFIG_IP6_NF_MANGLE=m
338# CONFIG_IP6_NF_TARGET_HL is not set 368# CONFIG_IP6_NF_TARGET_HL is not set
339CONFIG_IP6_NF_RAW=m 369CONFIG_IP6_NF_RAW=m
340CONFIG_IP_DCCP=m 370CONFIG_IP_DCCP=m
341CONFIG_INET_DCCP_DIAG=m 371CONFIG_INET_DCCP_DIAG=m
342CONFIG_IP_DCCP_ACKVEC=y
343 372
344# 373#
345# DCCP CCIDs Configuration (EXPERIMENTAL) 374# DCCP CCIDs Configuration (EXPERIMENTAL)
346# 375#
347CONFIG_IP_DCCP_CCID2=m
348# CONFIG_IP_DCCP_CCID2_DEBUG is not set 376# CONFIG_IP_DCCP_CCID2_DEBUG is not set
349# CONFIG_IP_DCCP_CCID3 is not set 377# CONFIG_IP_DCCP_CCID3 is not set
350 378
@@ -356,6 +384,7 @@ CONFIG_IP_DCCP_CCID2=m
356# CONFIG_TIPC is not set 384# CONFIG_TIPC is not set
357# CONFIG_ATM is not set 385# CONFIG_ATM is not set
358# CONFIG_BRIDGE is not set 386# CONFIG_BRIDGE is not set
387# CONFIG_NET_DSA is not set
359# CONFIG_VLAN_8021Q is not set 388# CONFIG_VLAN_8021Q is not set
360# CONFIG_DECNET is not set 389# CONFIG_DECNET is not set
361CONFIG_LLC=m 390CONFIG_LLC=m
@@ -366,28 +395,26 @@ CONFIG_LLC2=m
366# CONFIG_LAPB is not set 395# CONFIG_LAPB is not set
367# CONFIG_ECONET is not set 396# CONFIG_ECONET is not set
368# CONFIG_WAN_ROUTER is not set 397# CONFIG_WAN_ROUTER is not set
369
370#
371# QoS and/or fair queueing
372#
373# CONFIG_NET_SCHED is not set 398# CONFIG_NET_SCHED is not set
399# CONFIG_DCB is not set
374 400
375# 401#
376# Network testing 402# Network testing
377# 403#
378CONFIG_NET_PKTGEN=m 404CONFIG_NET_PKTGEN=m
379# CONFIG_HAMRADIO is not set 405# CONFIG_HAMRADIO is not set
406# CONFIG_CAN is not set
380# CONFIG_IRDA is not set 407# CONFIG_IRDA is not set
381# CONFIG_BT is not set 408# CONFIG_BT is not set
382# CONFIG_AF_RXRPC is not set 409# CONFIG_AF_RXRPC is not set
383 410# CONFIG_PHONET is not set
384# 411CONFIG_WIRELESS=y
385# Wireless
386#
387# CONFIG_CFG80211 is not set 412# CONFIG_CFG80211 is not set
413CONFIG_WIRELESS_OLD_REGULATORY=y
388# CONFIG_WIRELESS_EXT is not set 414# CONFIG_WIRELESS_EXT is not set
415# CONFIG_LIB80211 is not set
389# CONFIG_MAC80211 is not set 416# CONFIG_MAC80211 is not set
390# CONFIG_IEEE80211 is not set 417# CONFIG_WIMAX is not set
391# CONFIG_RFKILL is not set 418# CONFIG_RFKILL is not set
392# CONFIG_NET_9P is not set 419# CONFIG_NET_9P is not set
393 420
@@ -402,6 +429,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
402# CONFIG_STANDALONE is not set 429# CONFIG_STANDALONE is not set
403# CONFIG_PREVENT_FIRMWARE_BUILD is not set 430# CONFIG_PREVENT_FIRMWARE_BUILD is not set
404CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
432CONFIG_FIRMWARE_IN_KERNEL=y
433CONFIG_EXTRA_FIRMWARE=""
405# CONFIG_DEBUG_DRIVER is not set 434# CONFIG_DEBUG_DRIVER is not set
406# CONFIG_DEBUG_DEVRES is not set 435# CONFIG_DEBUG_DEVRES is not set
407# CONFIG_SYS_HYPERVISOR is not set 436# CONFIG_SYS_HYPERVISOR is not set
@@ -421,14 +450,23 @@ CONFIG_BLK_DEV_LOOP=y
421CONFIG_BLK_DEV_RAM=y 450CONFIG_BLK_DEV_RAM=y
422CONFIG_BLK_DEV_RAM_COUNT=16 451CONFIG_BLK_DEV_RAM_COUNT=16
423CONFIG_BLK_DEV_RAM_SIZE=6144 452CONFIG_BLK_DEV_RAM_SIZE=6144
424CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 453# CONFIG_BLK_DEV_XIP is not set
425# CONFIG_CDROM_PKTCDVD is not set 454# CONFIG_CDROM_PKTCDVD is not set
426# CONFIG_ATA_OVER_ETH is not set 455# CONFIG_ATA_OVER_ETH is not set
456# CONFIG_BLK_DEV_HD is not set
427CONFIG_MISC_DEVICES=y 457CONFIG_MISC_DEVICES=y
428# CONFIG_PHANTOM is not set 458# CONFIG_PHANTOM is not set
429# CONFIG_EEPROM_93CX6 is not set
430# CONFIG_SGI_IOC4 is not set 459# CONFIG_SGI_IOC4 is not set
431# CONFIG_TIFM_CORE is not set 460# CONFIG_TIFM_CORE is not set
461# CONFIG_ENCLOSURE_SERVICES is not set
462# CONFIG_HP_ILO is not set
463# CONFIG_C2PORT is not set
464
465#
466# EEPROM support
467#
468# CONFIG_EEPROM_93CX6 is not set
469CONFIG_HAVE_IDE=y
432# CONFIG_IDE is not set 470# CONFIG_IDE is not set
433 471
434# 472#
@@ -468,8 +506,10 @@ CONFIG_SCSI_SPI_ATTRS=y
468CONFIG_SCSI_FC_ATTRS=m 506CONFIG_SCSI_FC_ATTRS=m
469CONFIG_SCSI_ISCSI_ATTRS=m 507CONFIG_SCSI_ISCSI_ATTRS=m
470# CONFIG_SCSI_SAS_LIBSAS is not set 508# CONFIG_SCSI_SAS_LIBSAS is not set
509# CONFIG_SCSI_SRP_ATTRS is not set
471CONFIG_SCSI_LOWLEVEL=y 510CONFIG_SCSI_LOWLEVEL=y
472# CONFIG_ISCSI_TCP is not set 511# CONFIG_ISCSI_TCP is not set
512# CONFIG_SCSI_CXGB3_ISCSI is not set
473# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 513# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
474# CONFIG_SCSI_3W_9XXX is not set 514# CONFIG_SCSI_3W_9XXX is not set
475# CONFIG_SCSI_ACARD is not set 515# CONFIG_SCSI_ACARD is not set
@@ -478,16 +518,21 @@ CONFIG_SCSI_LOWLEVEL=y
478# CONFIG_SCSI_AIC7XXX_OLD is not set 518# CONFIG_SCSI_AIC7XXX_OLD is not set
479# CONFIG_SCSI_AIC79XX is not set 519# CONFIG_SCSI_AIC79XX is not set
480# CONFIG_SCSI_AIC94XX is not set 520# CONFIG_SCSI_AIC94XX is not set
521# CONFIG_SCSI_DPT_I2O is not set
522# CONFIG_SCSI_ADVANSYS is not set
481# CONFIG_SCSI_ARCMSR is not set 523# CONFIG_SCSI_ARCMSR is not set
482# CONFIG_MEGARAID_NEWGEN is not set 524# CONFIG_MEGARAID_NEWGEN is not set
483# CONFIG_MEGARAID_LEGACY is not set 525# CONFIG_MEGARAID_LEGACY is not set
484# CONFIG_MEGARAID_SAS is not set 526# CONFIG_MEGARAID_SAS is not set
485# CONFIG_SCSI_HPTIOP is not set 527# CONFIG_SCSI_HPTIOP is not set
528# CONFIG_LIBFC is not set
529# CONFIG_FCOE is not set
486# CONFIG_SCSI_DMX3191D is not set 530# CONFIG_SCSI_DMX3191D is not set
487# CONFIG_SCSI_FUTURE_DOMAIN is not set 531# CONFIG_SCSI_FUTURE_DOMAIN is not set
488# CONFIG_SCSI_IPS is not set 532# CONFIG_SCSI_IPS is not set
489# CONFIG_SCSI_INITIO is not set 533# CONFIG_SCSI_INITIO is not set
490# CONFIG_SCSI_INIA100 is not set 534# CONFIG_SCSI_INIA100 is not set
535# CONFIG_SCSI_MVSAS is not set
491# CONFIG_SCSI_STEX is not set 536# CONFIG_SCSI_STEX is not set
492CONFIG_SCSI_SYM53C8XX_2=y 537CONFIG_SCSI_SYM53C8XX_2=y
493CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 538CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
@@ -503,9 +548,11 @@ CONFIG_SCSI_QLOGIC_1280=m
503CONFIG_SCSI_DEBUG=m 548CONFIG_SCSI_DEBUG=m
504# CONFIG_SCSI_SRP is not set 549# CONFIG_SCSI_SRP is not set
505# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 550# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
551# CONFIG_SCSI_DH is not set
506# CONFIG_ATA is not set 552# CONFIG_ATA is not set
507CONFIG_MD=y 553CONFIG_MD=y
508CONFIG_BLK_DEV_MD=y 554CONFIG_BLK_DEV_MD=y
555CONFIG_MD_AUTODETECT=y
509CONFIG_MD_LINEAR=y 556CONFIG_MD_LINEAR=y
510CONFIG_MD_RAID0=y 557CONFIG_MD_RAID0=y
511CONFIG_MD_RAID1=y 558CONFIG_MD_RAID1=y
@@ -514,10 +561,6 @@ CONFIG_MD_RAID1=y
514# CONFIG_MD_MULTIPATH is not set 561# CONFIG_MD_MULTIPATH is not set
515# CONFIG_MD_FAULTY is not set 562# CONFIG_MD_FAULTY is not set
516# CONFIG_BLK_DEV_DM is not set 563# CONFIG_BLK_DEV_DM is not set
517
518#
519# Fusion MPT device support
520#
521CONFIG_FUSION=y 564CONFIG_FUSION=y
522CONFIG_FUSION_SPI=m 565CONFIG_FUSION_SPI=m
523CONFIG_FUSION_FC=m 566CONFIG_FUSION_FC=m
@@ -529,20 +572,40 @@ CONFIG_FUSION_CTL=m
529# 572#
530# IEEE 1394 (FireWire) support 573# IEEE 1394 (FireWire) support
531# 574#
575
576#
577# Enable only one of the two stacks, unless you know what you are doing
578#
532# CONFIG_FIREWIRE is not set 579# CONFIG_FIREWIRE is not set
533# CONFIG_IEEE1394 is not set 580# CONFIG_IEEE1394 is not set
534# CONFIG_I2O is not set 581# CONFIG_I2O is not set
535CONFIG_NETDEVICES=y 582CONFIG_NETDEVICES=y
536# CONFIG_NETDEVICES_MULTIQUEUE is not set
537CONFIG_DUMMY=m 583CONFIG_DUMMY=m
538CONFIG_BONDING=m 584CONFIG_BONDING=m
539# CONFIG_MACVLAN is not set 585# CONFIG_MACVLAN is not set
540# CONFIG_EQUALIZER is not set 586# CONFIG_EQUALIZER is not set
541CONFIG_TUN=m 587CONFIG_TUN=m
542# CONFIG_VETH is not set 588# CONFIG_VETH is not set
543# CONFIG_IP1000 is not set
544# CONFIG_ARCNET is not set 589# CONFIG_ARCNET is not set
545# CONFIG_PHYLIB is not set 590CONFIG_PHYLIB=m
591
592#
593# MII PHY device drivers
594#
595# CONFIG_MARVELL_PHY is not set
596# CONFIG_DAVICOM_PHY is not set
597# CONFIG_QSEMI_PHY is not set
598# CONFIG_LXT_PHY is not set
599# CONFIG_CICADA_PHY is not set
600# CONFIG_VITESSE_PHY is not set
601# CONFIG_SMSC_PHY is not set
602# CONFIG_BROADCOM_PHY is not set
603# CONFIG_ICPLUS_PHY is not set
604# CONFIG_REALTEK_PHY is not set
605# CONFIG_NATIONAL_PHY is not set
606# CONFIG_STE10XP is not set
607# CONFIG_LSI_ET1011C_PHY is not set
608# CONFIG_MDIO_BITBANG is not set
546CONFIG_NET_ETHERNET=y 609CONFIG_NET_ETHERNET=y
547CONFIG_MII=m 610CONFIG_MII=m
548# CONFIG_HAPPYMEAL is not set 611# CONFIG_HAPPYMEAL is not set
@@ -567,33 +630,38 @@ CONFIG_HP100=m
567# CONFIG_IBM_NEW_EMAC_RGMII is not set 630# CONFIG_IBM_NEW_EMAC_RGMII is not set
568# CONFIG_IBM_NEW_EMAC_TAH is not set 631# CONFIG_IBM_NEW_EMAC_TAH is not set
569# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 632# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
633# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
634# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
635# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
570CONFIG_NET_PCI=y 636CONFIG_NET_PCI=y
571CONFIG_PCNET32=m 637CONFIG_PCNET32=m
572# CONFIG_PCNET32_NAPI is not set
573# CONFIG_AMD8111_ETH is not set 638# CONFIG_AMD8111_ETH is not set
574# CONFIG_ADAPTEC_STARFIRE is not set 639# CONFIG_ADAPTEC_STARFIRE is not set
575# CONFIG_B44 is not set 640# CONFIG_B44 is not set
576# CONFIG_FORCEDETH is not set 641# CONFIG_FORCEDETH is not set
577# CONFIG_EEPRO100 is not set
578CONFIG_E100=m 642CONFIG_E100=m
579# CONFIG_FEALNX is not set 643# CONFIG_FEALNX is not set
580# CONFIG_NATSEMI is not set 644# CONFIG_NATSEMI is not set
581# CONFIG_NE2K_PCI is not set 645# CONFIG_NE2K_PCI is not set
582# CONFIG_8139CP is not set 646# CONFIG_8139CP is not set
583# CONFIG_8139TOO is not set 647# CONFIG_8139TOO is not set
648# CONFIG_R6040 is not set
584# CONFIG_SIS900 is not set 649# CONFIG_SIS900 is not set
585# CONFIG_EPIC100 is not set 650# CONFIG_EPIC100 is not set
651# CONFIG_SMSC9420 is not set
586# CONFIG_SUNDANCE is not set 652# CONFIG_SUNDANCE is not set
653# CONFIG_TLAN is not set
587# CONFIG_VIA_RHINE is not set 654# CONFIG_VIA_RHINE is not set
588# CONFIG_SC92031 is not set 655# CONFIG_SC92031 is not set
656# CONFIG_ATL2 is not set
589CONFIG_NETDEV_1000=y 657CONFIG_NETDEV_1000=y
590CONFIG_ACENIC=m 658CONFIG_ACENIC=m
591CONFIG_ACENIC_OMIT_TIGON_I=y 659CONFIG_ACENIC_OMIT_TIGON_I=y
592# CONFIG_DL2K is not set 660# CONFIG_DL2K is not set
593CONFIG_E1000=m 661CONFIG_E1000=m
594CONFIG_E1000_NAPI=y
595# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
596# CONFIG_E1000E is not set 662# CONFIG_E1000E is not set
663# CONFIG_IP1000 is not set
664# CONFIG_IGB is not set
597# CONFIG_NS83820 is not set 665# CONFIG_NS83820 is not set
598# CONFIG_HAMACHI is not set 666# CONFIG_HAMACHI is not set
599# CONFIG_YELLOWFIN is not set 667# CONFIG_YELLOWFIN is not set
@@ -601,23 +669,31 @@ CONFIG_E1000_NAPI=y
601# CONFIG_SIS190 is not set 669# CONFIG_SIS190 is not set
602# CONFIG_SKGE is not set 670# CONFIG_SKGE is not set
603# CONFIG_SKY2 is not set 671# CONFIG_SKY2 is not set
604# CONFIG_SK98LIN is not set
605# CONFIG_VIA_VELOCITY is not set 672# CONFIG_VIA_VELOCITY is not set
606CONFIG_TIGON3=m 673CONFIG_TIGON3=m
607# CONFIG_BNX2 is not set 674# CONFIG_BNX2 is not set
608# CONFIG_QLA3XXX is not set 675# CONFIG_QLA3XXX is not set
609# CONFIG_ATL1 is not set 676# CONFIG_ATL1 is not set
677# CONFIG_ATL1E is not set
678# CONFIG_ATL1C is not set
679# CONFIG_JME is not set
610CONFIG_NETDEV_10000=y 680CONFIG_NETDEV_10000=y
611# CONFIG_CHELSIO_T1 is not set 681# CONFIG_CHELSIO_T1 is not set
682CONFIG_CHELSIO_T3_DEPENDS=y
612# CONFIG_CHELSIO_T3 is not set 683# CONFIG_CHELSIO_T3 is not set
684# CONFIG_ENIC is not set
613# CONFIG_IXGBE is not set 685# CONFIG_IXGBE is not set
614# CONFIG_IXGB is not set 686# CONFIG_IXGB is not set
615# CONFIG_S2IO is not set 687# CONFIG_S2IO is not set
616# CONFIG_MYRI10GE is not set 688# CONFIG_MYRI10GE is not set
617# CONFIG_NETXEN_NIC is not set 689# CONFIG_NETXEN_NIC is not set
618# CONFIG_NIU is not set 690# CONFIG_NIU is not set
691# CONFIG_MLX4_EN is not set
619# CONFIG_MLX4_CORE is not set 692# CONFIG_MLX4_CORE is not set
620# CONFIG_TEHUTI is not set 693# CONFIG_TEHUTI is not set
694# CONFIG_BNX2X is not set
695# CONFIG_QLGE is not set
696# CONFIG_SFC is not set
621# CONFIG_TR is not set 697# CONFIG_TR is not set
622 698
623# 699#
@@ -625,6 +701,11 @@ CONFIG_NETDEV_10000=y
625# 701#
626# CONFIG_WLAN_PRE80211 is not set 702# CONFIG_WLAN_PRE80211 is not set
627# CONFIG_WLAN_80211 is not set 703# CONFIG_WLAN_80211 is not set
704# CONFIG_IWLWIFI_LEDS is not set
705
706#
707# Enable WiMAX (Networking options) to see the WiMAX drivers
708#
628CONFIG_NET_PCMCIA=y 709CONFIG_NET_PCMCIA=y
629CONFIG_PCMCIA_3C589=m 710CONFIG_PCMCIA_3C589=m
630CONFIG_PCMCIA_3C574=m 711CONFIG_PCMCIA_3C574=m
@@ -650,7 +731,6 @@ CONFIG_PPP_BSDCOMP=m
650# CONFIG_SLIP is not set 731# CONFIG_SLIP is not set
651CONFIG_SLHC=m 732CONFIG_SLHC=m
652# CONFIG_NET_FC is not set 733# CONFIG_NET_FC is not set
653# CONFIG_SHAPER is not set
654# CONFIG_NETCONSOLE is not set 734# CONFIG_NETCONSOLE is not set
655# CONFIG_NETPOLL is not set 735# CONFIG_NETPOLL is not set
656# CONFIG_NET_POLL_CONTROLLER is not set 736# CONFIG_NET_POLL_CONTROLLER is not set
@@ -669,7 +749,6 @@ CONFIG_INPUT=y
669# 749#
670# CONFIG_INPUT_MOUSEDEV is not set 750# CONFIG_INPUT_MOUSEDEV is not set
671# CONFIG_INPUT_JOYDEV is not set 751# CONFIG_INPUT_JOYDEV is not set
672# CONFIG_INPUT_TSDEV is not set
673# CONFIG_INPUT_EVDEV is not set 752# CONFIG_INPUT_EVDEV is not set
674# CONFIG_INPUT_EVBUG is not set 753# CONFIG_INPUT_EVBUG is not set
675 754
@@ -693,10 +772,13 @@ CONFIG_INPUT=y
693# Character devices 772# Character devices
694# 773#
695CONFIG_VT=y 774CONFIG_VT=y
775CONFIG_CONSOLE_TRANSLATIONS=y
696CONFIG_VT_CONSOLE=y 776CONFIG_VT_CONSOLE=y
697CONFIG_HW_CONSOLE=y 777CONFIG_HW_CONSOLE=y
698# CONFIG_VT_HW_CONSOLE_BINDING is not set 778# CONFIG_VT_HW_CONSOLE_BINDING is not set
779CONFIG_DEVKMEM=y
699# CONFIG_SERIAL_NONSTANDARD is not set 780# CONFIG_SERIAL_NONSTANDARD is not set
781# CONFIG_NOZOMI is not set
700 782
701# 783#
702# Serial drivers 784# Serial drivers
@@ -721,17 +803,12 @@ CONFIG_SERIAL_CORE=y
721CONFIG_SERIAL_CORE_CONSOLE=y 803CONFIG_SERIAL_CORE_CONSOLE=y
722# CONFIG_SERIAL_JSM is not set 804# CONFIG_SERIAL_JSM is not set
723CONFIG_UNIX98_PTYS=y 805CONFIG_UNIX98_PTYS=y
806# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
724# CONFIG_LEGACY_PTYS is not set 807# CONFIG_LEGACY_PTYS is not set
725# CONFIG_IPMI_HANDLER is not set 808# CONFIG_IPMI_HANDLER is not set
726# CONFIG_WATCHDOG is not set
727# CONFIG_HW_RANDOM is not set 809# CONFIG_HW_RANDOM is not set
728CONFIG_GEN_RTC=y
729CONFIG_GEN_RTC_X=y
730# CONFIG_R3964 is not set 810# CONFIG_R3964 is not set
731# CONFIG_APPLICOM is not set 811# CONFIG_APPLICOM is not set
732CONFIG_AGP=y
733CONFIG_AGP_PARISC=y
734# CONFIG_DRM is not set
735 812
736# 813#
737# PCMCIA character devices 814# PCMCIA character devices
@@ -739,51 +816,66 @@ CONFIG_AGP_PARISC=y
739# CONFIG_SYNCLINK_CS is not set 816# CONFIG_SYNCLINK_CS is not set
740# CONFIG_CARDMAN_4000 is not set 817# CONFIG_CARDMAN_4000 is not set
741# CONFIG_CARDMAN_4040 is not set 818# CONFIG_CARDMAN_4040 is not set
819# CONFIG_IPWIRELESS is not set
742CONFIG_RAW_DRIVER=y 820CONFIG_RAW_DRIVER=y
743CONFIG_MAX_RAW_DEVS=256 821CONFIG_MAX_RAW_DEVS=256
744# CONFIG_TCG_TPM is not set 822# CONFIG_TCG_TPM is not set
745CONFIG_DEVPORT=y 823CONFIG_DEVPORT=y
746# CONFIG_I2C is not set 824# CONFIG_I2C is not set
747
748#
749# SPI support
750#
751# CONFIG_SPI is not set 825# CONFIG_SPI is not set
752# CONFIG_SPI_MASTER is not set
753# CONFIG_W1 is not set 826# CONFIG_W1 is not set
754# CONFIG_POWER_SUPPLY is not set 827# CONFIG_POWER_SUPPLY is not set
755# CONFIG_HWMON is not set 828# CONFIG_HWMON is not set
829# CONFIG_THERMAL is not set
830# CONFIG_THERMAL_HWMON is not set
831# CONFIG_WATCHDOG is not set
832CONFIG_SSB_POSSIBLE=y
756 833
757# 834#
758# Sonics Silicon Backplane 835# Sonics Silicon Backplane
759# 836#
760CONFIG_SSB_POSSIBLE=y
761# CONFIG_SSB is not set 837# CONFIG_SSB is not set
762 838
763# 839#
764# Multifunction device drivers 840# Multifunction device drivers
765# 841#
842# CONFIG_MFD_CORE is not set
766# CONFIG_MFD_SM501 is not set 843# CONFIG_MFD_SM501 is not set
844# CONFIG_HTC_PASIC3 is not set
845# CONFIG_MFD_TMIO is not set
846# CONFIG_REGULATOR is not set
767 847
768# 848#
769# Multimedia devices 849# Multimedia devices
770# 850#
851
852#
853# Multimedia core support
854#
771# CONFIG_VIDEO_DEV is not set 855# CONFIG_VIDEO_DEV is not set
772# CONFIG_DVB_CORE is not set 856# CONFIG_DVB_CORE is not set
857# CONFIG_VIDEO_MEDIA is not set
858
859#
860# Multimedia drivers
861#
773# CONFIG_DAB is not set 862# CONFIG_DAB is not set
774 863
775# 864#
776# Graphics support 865# Graphics support
777# 866#
867CONFIG_AGP=y
868CONFIG_AGP_PARISC=y
869# CONFIG_DRM is not set
870# CONFIG_VGASTATE is not set
871# CONFIG_VIDEO_OUTPUT_CONTROL is not set
872# CONFIG_FB is not set
778# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 873# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
779 874
780# 875#
781# Display device support 876# Display device support
782# 877#
783# CONFIG_DISPLAY_SUPPORT is not set 878# CONFIG_DISPLAY_SUPPORT is not set
784# CONFIG_VGASTATE is not set
785# CONFIG_VIDEO_OUTPUT_CONTROL is not set
786# CONFIG_FB is not set
787 879
788# 880#
789# Console display driver support 881# Console display driver support
@@ -792,50 +884,83 @@ CONFIG_DUMMY_CONSOLE=y
792CONFIG_DUMMY_CONSOLE_COLUMNS=160 884CONFIG_DUMMY_CONSOLE_COLUMNS=160
793CONFIG_DUMMY_CONSOLE_ROWS=64 885CONFIG_DUMMY_CONSOLE_ROWS=64
794# CONFIG_STI_CONSOLE is not set 886# CONFIG_STI_CONSOLE is not set
795
796#
797# Sound
798#
799# CONFIG_SOUND is not set 887# CONFIG_SOUND is not set
800CONFIG_HID_SUPPORT=y 888CONFIG_HID_SUPPORT=y
801CONFIG_HID=y 889CONFIG_HID=y
802# CONFIG_HID_DEBUG is not set 890# CONFIG_HID_DEBUG is not set
891# CONFIG_HIDRAW is not set
892# CONFIG_HID_PID is not set
893
894#
895# Special HID drivers
896#
897CONFIG_HID_COMPAT=y
803CONFIG_USB_SUPPORT=y 898CONFIG_USB_SUPPORT=y
804CONFIG_USB_ARCH_HAS_HCD=y 899CONFIG_USB_ARCH_HAS_HCD=y
805CONFIG_USB_ARCH_HAS_OHCI=y 900CONFIG_USB_ARCH_HAS_OHCI=y
806CONFIG_USB_ARCH_HAS_EHCI=y 901CONFIG_USB_ARCH_HAS_EHCI=y
807# CONFIG_USB is not set 902# CONFIG_USB is not set
903# CONFIG_USB_OTG_WHITELIST is not set
904# CONFIG_USB_OTG_BLACKLIST_HUB is not set
808 905
809# 906#
810# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 907# Enable Host or Gadget support to see Inventra options
811# 908#
812 909
813# 910#
814# USB Gadget Support 911# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
815# 912#
816# CONFIG_USB_GADGET is not set 913# CONFIG_USB_GADGET is not set
914
915#
916# OTG and related infrastructure
917#
918# CONFIG_UWB is not set
817# CONFIG_MMC is not set 919# CONFIG_MMC is not set
920# CONFIG_MEMSTICK is not set
818# CONFIG_NEW_LEDS is not set 921# CONFIG_NEW_LEDS is not set
922# CONFIG_ACCESSIBILITY is not set
819# CONFIG_INFINIBAND is not set 923# CONFIG_INFINIBAND is not set
820# CONFIG_RTC_CLASS is not set 924CONFIG_RTC_LIB=y
925CONFIG_RTC_CLASS=y
926CONFIG_RTC_HCTOSYS=y
927CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
928# CONFIG_RTC_DEBUG is not set
821 929
822# 930#
823# DMA Engine support 931# RTC interfaces
824# 932#
825# CONFIG_DMA_ENGINE is not set 933CONFIG_RTC_INTF_SYSFS=y
934CONFIG_RTC_INTF_PROC=y
935CONFIG_RTC_INTF_DEV=y
936# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
937# CONFIG_RTC_DRV_TEST is not set
826 938
827# 939#
828# DMA Clients 940# SPI RTC drivers
829# 941#
830 942
831# 943#
832# DMA Devices 944# Platform RTC drivers
833# 945#
946# CONFIG_RTC_DRV_DS1286 is not set
947# CONFIG_RTC_DRV_DS1511 is not set
948# CONFIG_RTC_DRV_DS1553 is not set
949# CONFIG_RTC_DRV_DS1742 is not set
950# CONFIG_RTC_DRV_STK17TA8 is not set
951# CONFIG_RTC_DRV_M48T86 is not set
952# CONFIG_RTC_DRV_M48T35 is not set
953# CONFIG_RTC_DRV_M48T59 is not set
954# CONFIG_RTC_DRV_BQ4802 is not set
955# CONFIG_RTC_DRV_V3020 is not set
834 956
835# 957#
836# Userspace I/O 958# on-CPU RTC drivers
837# 959#
960CONFIG_RTC_DRV_PARISC=y
961# CONFIG_DMADEVICES is not set
838# CONFIG_UIO is not set 962# CONFIG_UIO is not set
963# CONFIG_STAGING is not set
839 964
840# 965#
841# File systems 966# File systems
@@ -845,7 +970,7 @@ CONFIG_EXT2_FS=y
845# CONFIG_EXT2_FS_XIP is not set 970# CONFIG_EXT2_FS_XIP is not set
846CONFIG_EXT3_FS=y 971CONFIG_EXT3_FS=y
847# CONFIG_EXT3_FS_XATTR is not set 972# CONFIG_EXT3_FS_XATTR is not set
848# CONFIG_EXT4DEV_FS is not set 973# CONFIG_EXT4_FS is not set
849CONFIG_JBD=y 974CONFIG_JBD=y
850# CONFIG_JBD_DEBUG is not set 975# CONFIG_JBD_DEBUG is not set
851# CONFIG_REISERFS_FS is not set 976# CONFIG_REISERFS_FS is not set
@@ -855,19 +980,19 @@ CONFIG_JFS_FS=m
855# CONFIG_JFS_DEBUG is not set 980# CONFIG_JFS_DEBUG is not set
856# CONFIG_JFS_STATISTICS is not set 981# CONFIG_JFS_STATISTICS is not set
857CONFIG_FS_POSIX_ACL=y 982CONFIG_FS_POSIX_ACL=y
983CONFIG_FILE_LOCKING=y
858CONFIG_XFS_FS=m 984CONFIG_XFS_FS=m
859# CONFIG_XFS_QUOTA is not set 985# CONFIG_XFS_QUOTA is not set
860# CONFIG_XFS_SECURITY is not set
861# CONFIG_XFS_POSIX_ACL is not set 986# CONFIG_XFS_POSIX_ACL is not set
862# CONFIG_XFS_RT is not set 987# CONFIG_XFS_RT is not set
988# CONFIG_XFS_DEBUG is not set
863# CONFIG_GFS2_FS is not set 989# CONFIG_GFS2_FS is not set
864# CONFIG_OCFS2_FS is not set 990# CONFIG_OCFS2_FS is not set
865# CONFIG_MINIX_FS is not set 991# CONFIG_BTRFS_FS is not set
866# CONFIG_ROMFS_FS is not set 992CONFIG_DNOTIFY=y
867CONFIG_INOTIFY=y 993CONFIG_INOTIFY=y
868CONFIG_INOTIFY_USER=y 994CONFIG_INOTIFY_USER=y
869# CONFIG_QUOTA is not set 995# CONFIG_QUOTA is not set
870CONFIG_DNOTIFY=y
871# CONFIG_AUTOFS_FS is not set 996# CONFIG_AUTOFS_FS is not set
872CONFIG_AUTOFS4_FS=y 997CONFIG_AUTOFS4_FS=y
873# CONFIG_FUSE_FS is not set 998# CONFIG_FUSE_FS is not set
@@ -897,16 +1022,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
897CONFIG_PROC_FS=y 1022CONFIG_PROC_FS=y
898CONFIG_PROC_KCORE=y 1023CONFIG_PROC_KCORE=y
899CONFIG_PROC_SYSCTL=y 1024CONFIG_PROC_SYSCTL=y
1025CONFIG_PROC_PAGE_MONITOR=y
900CONFIG_SYSFS=y 1026CONFIG_SYSFS=y
901CONFIG_TMPFS=y 1027CONFIG_TMPFS=y
902# CONFIG_TMPFS_POSIX_ACL is not set 1028# CONFIG_TMPFS_POSIX_ACL is not set
903# CONFIG_HUGETLB_PAGE is not set 1029# CONFIG_HUGETLB_PAGE is not set
904CONFIG_RAMFS=y
905# CONFIG_CONFIGFS_FS is not set 1030# CONFIG_CONFIGFS_FS is not set
906 1031CONFIG_MISC_FILESYSTEMS=y
907#
908# Miscellaneous filesystems
909#
910# CONFIG_ADFS_FS is not set 1032# CONFIG_ADFS_FS is not set
911# CONFIG_AFFS_FS is not set 1033# CONFIG_AFFS_FS is not set
912# CONFIG_ECRYPT_FS is not set 1034# CONFIG_ECRYPT_FS is not set
@@ -916,34 +1038,33 @@ CONFIG_RAMFS=y
916# CONFIG_BFS_FS is not set 1038# CONFIG_BFS_FS is not set
917# CONFIG_EFS_FS is not set 1039# CONFIG_EFS_FS is not set
918# CONFIG_CRAMFS is not set 1040# CONFIG_CRAMFS is not set
1041# CONFIG_SQUASHFS is not set
919# CONFIG_VXFS_FS is not set 1042# CONFIG_VXFS_FS is not set
1043# CONFIG_MINIX_FS is not set
1044# CONFIG_OMFS_FS is not set
920# CONFIG_HPFS_FS is not set 1045# CONFIG_HPFS_FS is not set
921# CONFIG_QNX4FS_FS is not set 1046# CONFIG_QNX4FS_FS is not set
1047# CONFIG_ROMFS_FS is not set
922# CONFIG_SYSV_FS is not set 1048# CONFIG_SYSV_FS is not set
923CONFIG_UFS_FS=m 1049CONFIG_UFS_FS=m
924# CONFIG_UFS_FS_WRITE is not set 1050# CONFIG_UFS_FS_WRITE is not set
925# CONFIG_UFS_DEBUG is not set 1051# CONFIG_UFS_DEBUG is not set
926 1052CONFIG_NETWORK_FILESYSTEMS=y
927#
928# Network File Systems
929#
930CONFIG_NFS_FS=m 1053CONFIG_NFS_FS=m
931CONFIG_NFS_V3=y 1054CONFIG_NFS_V3=y
932# CONFIG_NFS_V3_ACL is not set 1055# CONFIG_NFS_V3_ACL is not set
933CONFIG_NFS_V4=y 1056CONFIG_NFS_V4=y
934CONFIG_NFS_DIRECTIO=y
935CONFIG_NFSD=m 1057CONFIG_NFSD=m
936CONFIG_NFSD_V3=y 1058CONFIG_NFSD_V3=y
937# CONFIG_NFSD_V3_ACL is not set 1059# CONFIG_NFSD_V3_ACL is not set
938CONFIG_NFSD_V4=y 1060CONFIG_NFSD_V4=y
939CONFIG_NFSD_TCP=y
940CONFIG_LOCKD=m 1061CONFIG_LOCKD=m
941CONFIG_LOCKD_V4=y 1062CONFIG_LOCKD_V4=y
942CONFIG_EXPORTFS=m 1063CONFIG_EXPORTFS=m
943CONFIG_NFS_COMMON=y 1064CONFIG_NFS_COMMON=y
944CONFIG_SUNRPC=m 1065CONFIG_SUNRPC=m
945CONFIG_SUNRPC_GSS=m 1066CONFIG_SUNRPC_GSS=m
946# CONFIG_SUNRPC_BIND34 is not set 1067# CONFIG_SUNRPC_REGISTER_V4 is not set
947CONFIG_RPCSEC_GSS_KRB5=m 1068CONFIG_RPCSEC_GSS_KRB5=m
948CONFIG_RPCSEC_GSS_SPKM3=m 1069CONFIG_RPCSEC_GSS_SPKM3=m
949CONFIG_SMB_FS=m 1070CONFIG_SMB_FS=m
@@ -952,6 +1073,7 @@ CONFIG_SMB_NLS_REMOTE="cp437"
952CONFIG_CIFS=m 1073CONFIG_CIFS=m
953# CONFIG_CIFS_STATS is not set 1074# CONFIG_CIFS_STATS is not set
954# CONFIG_CIFS_WEAK_PW_HASH is not set 1075# CONFIG_CIFS_WEAK_PW_HASH is not set
1076# CONFIG_CIFS_UPCALL is not set
955# CONFIG_CIFS_XATTR is not set 1077# CONFIG_CIFS_XATTR is not set
956# CONFIG_CIFS_DEBUG2 is not set 1078# CONFIG_CIFS_DEBUG2 is not set
957# CONFIG_CIFS_EXPERIMENTAL is not set 1079# CONFIG_CIFS_EXPERIMENTAL is not set
@@ -964,10 +1086,6 @@ CONFIG_CIFS=m
964# 1086#
965# CONFIG_PARTITION_ADVANCED is not set 1087# CONFIG_PARTITION_ADVANCED is not set
966CONFIG_MSDOS_PARTITION=y 1088CONFIG_MSDOS_PARTITION=y
967
968#
969# Native Language Support
970#
971CONFIG_NLS=y 1089CONFIG_NLS=y
972CONFIG_NLS_DEFAULT="iso8859-1" 1090CONFIG_NLS_DEFAULT="iso8859-1"
973CONFIG_NLS_CODEPAGE_437=m 1091CONFIG_NLS_CODEPAGE_437=m
@@ -1008,33 +1126,28 @@ CONFIG_NLS_ISO8859_15=m
1008# CONFIG_NLS_KOI8_R is not set 1126# CONFIG_NLS_KOI8_R is not set
1009# CONFIG_NLS_KOI8_U is not set 1127# CONFIG_NLS_KOI8_U is not set
1010CONFIG_NLS_UTF8=m 1128CONFIG_NLS_UTF8=m
1011
1012#
1013# Distributed Lock Manager
1014#
1015# CONFIG_DLM is not set 1129# CONFIG_DLM is not set
1016 1130
1017# 1131#
1018# Profiling support
1019#
1020CONFIG_PROFILING=y
1021CONFIG_OPROFILE=m
1022
1023#
1024# Kernel hacking 1132# Kernel hacking
1025# 1133#
1026# CONFIG_PRINTK_TIME is not set 1134# CONFIG_PRINTK_TIME is not set
1135CONFIG_ENABLE_WARN_DEPRECATED=y
1027CONFIG_ENABLE_MUST_CHECK=y 1136CONFIG_ENABLE_MUST_CHECK=y
1137CONFIG_FRAME_WARN=2048
1028CONFIG_MAGIC_SYSRQ=y 1138CONFIG_MAGIC_SYSRQ=y
1029# CONFIG_UNUSED_SYMBOLS is not set 1139# CONFIG_UNUSED_SYMBOLS is not set
1030# CONFIG_DEBUG_FS is not set 1140CONFIG_DEBUG_FS=y
1031CONFIG_HEADERS_CHECK=y 1141CONFIG_HEADERS_CHECK=y
1032CONFIG_DEBUG_KERNEL=y 1142CONFIG_DEBUG_KERNEL=y
1033# CONFIG_DEBUG_SHIRQ is not set 1143# CONFIG_DEBUG_SHIRQ is not set
1034CONFIG_DETECT_SOFTLOCKUP=y 1144CONFIG_DETECT_SOFTLOCKUP=y
1145# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1146CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1035CONFIG_SCHED_DEBUG=y 1147CONFIG_SCHED_DEBUG=y
1036# CONFIG_SCHEDSTATS is not set 1148# CONFIG_SCHEDSTATS is not set
1037# CONFIG_TIMER_STATS is not set 1149# CONFIG_TIMER_STATS is not set
1150# CONFIG_DEBUG_OBJECTS is not set
1038# CONFIG_DEBUG_SLAB is not set 1151# CONFIG_DEBUG_SLAB is not set
1039# CONFIG_DEBUG_RT_MUTEXES is not set 1152# CONFIG_DEBUG_RT_MUTEXES is not set
1040# CONFIG_RT_MUTEX_TESTER is not set 1153# CONFIG_RT_MUTEX_TESTER is not set
@@ -1046,10 +1159,33 @@ CONFIG_SCHED_DEBUG=y
1046# CONFIG_DEBUG_BUGVERBOSE is not set 1159# CONFIG_DEBUG_BUGVERBOSE is not set
1047# CONFIG_DEBUG_INFO is not set 1160# CONFIG_DEBUG_INFO is not set
1048# CONFIG_DEBUG_VM is not set 1161# CONFIG_DEBUG_VM is not set
1162# CONFIG_DEBUG_WRITECOUNT is not set
1163# CONFIG_DEBUG_MEMORY_INIT is not set
1049# CONFIG_DEBUG_LIST is not set 1164# CONFIG_DEBUG_LIST is not set
1050CONFIG_FORCED_INLINING=y 1165# CONFIG_DEBUG_SG is not set
1166# CONFIG_DEBUG_NOTIFIERS is not set
1167# CONFIG_BOOT_PRINTK_DELAY is not set
1051# CONFIG_RCU_TORTURE_TEST is not set 1168# CONFIG_RCU_TORTURE_TEST is not set
1169# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1170# CONFIG_BACKTRACE_SELF_TEST is not set
1171# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1052# CONFIG_FAULT_INJECTION is not set 1172# CONFIG_FAULT_INJECTION is not set
1173# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1174CONFIG_NOP_TRACER=y
1175CONFIG_RING_BUFFER=y
1176CONFIG_TRACING=y
1177
1178#
1179# Tracers
1180#
1181# CONFIG_SCHED_TRACER is not set
1182# CONFIG_CONTEXT_SWITCH_TRACER is not set
1183# CONFIG_BOOT_TRACER is not set
1184# CONFIG_TRACE_BRANCH_PROFILING is not set
1185# CONFIG_FTRACE_STARTUP_TEST is not set
1186# CONFIG_BUILD_DOCSRC is not set
1187# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1188# CONFIG_SAMPLES is not set
1053# CONFIG_DEBUG_RODATA is not set 1189# CONFIG_DEBUG_RODATA is not set
1054 1190
1055# 1191#
@@ -1058,56 +1194,112 @@ CONFIG_FORCED_INLINING=y
1058CONFIG_KEYS=y 1194CONFIG_KEYS=y
1059CONFIG_KEYS_DEBUG_PROC_KEYS=y 1195CONFIG_KEYS_DEBUG_PROC_KEYS=y
1060# CONFIG_SECURITY is not set 1196# CONFIG_SECURITY is not set
1197# CONFIG_SECURITYFS is not set
1198# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1061CONFIG_CRYPTO=y 1199CONFIG_CRYPTO=y
1200
1201#
1202# Crypto core or helper
1203#
1204# CONFIG_CRYPTO_FIPS is not set
1062CONFIG_CRYPTO_ALGAPI=y 1205CONFIG_CRYPTO_ALGAPI=y
1206CONFIG_CRYPTO_ALGAPI2=y
1207CONFIG_CRYPTO_AEAD=m
1208CONFIG_CRYPTO_AEAD2=y
1063CONFIG_CRYPTO_BLKCIPHER=m 1209CONFIG_CRYPTO_BLKCIPHER=m
1210CONFIG_CRYPTO_BLKCIPHER2=y
1064CONFIG_CRYPTO_HASH=y 1211CONFIG_CRYPTO_HASH=y
1212CONFIG_CRYPTO_HASH2=y
1213CONFIG_CRYPTO_RNG2=y
1065CONFIG_CRYPTO_MANAGER=y 1214CONFIG_CRYPTO_MANAGER=y
1215CONFIG_CRYPTO_MANAGER2=y
1216# CONFIG_CRYPTO_GF128MUL is not set
1217CONFIG_CRYPTO_NULL=m
1218# CONFIG_CRYPTO_CRYPTD is not set
1219CONFIG_CRYPTO_AUTHENC=m
1220CONFIG_CRYPTO_TEST=m
1221
1222#
1223# Authenticated Encryption with Associated Data
1224#
1225# CONFIG_CRYPTO_CCM is not set
1226# CONFIG_CRYPTO_GCM is not set
1227# CONFIG_CRYPTO_SEQIV is not set
1228
1229#
1230# Block modes
1231#
1232CONFIG_CRYPTO_CBC=m
1233# CONFIG_CRYPTO_CTR is not set
1234# CONFIG_CRYPTO_CTS is not set
1235# CONFIG_CRYPTO_ECB is not set
1236# CONFIG_CRYPTO_LRW is not set
1237# CONFIG_CRYPTO_PCBC is not set
1238# CONFIG_CRYPTO_XTS is not set
1239
1240#
1241# Hash modes
1242#
1066CONFIG_CRYPTO_HMAC=y 1243CONFIG_CRYPTO_HMAC=y
1067# CONFIG_CRYPTO_XCBC is not set 1244# CONFIG_CRYPTO_XCBC is not set
1068CONFIG_CRYPTO_NULL=m 1245
1246#
1247# Digest
1248#
1249CONFIG_CRYPTO_CRC32C=m
1069# CONFIG_CRYPTO_MD4 is not set 1250# CONFIG_CRYPTO_MD4 is not set
1070CONFIG_CRYPTO_MD5=y 1251CONFIG_CRYPTO_MD5=y
1252# CONFIG_CRYPTO_MICHAEL_MIC is not set
1253# CONFIG_CRYPTO_RMD128 is not set
1254# CONFIG_CRYPTO_RMD160 is not set
1255# CONFIG_CRYPTO_RMD256 is not set
1256# CONFIG_CRYPTO_RMD320 is not set
1071CONFIG_CRYPTO_SHA1=m 1257CONFIG_CRYPTO_SHA1=m
1072# CONFIG_CRYPTO_SHA256 is not set 1258# CONFIG_CRYPTO_SHA256 is not set
1073# CONFIG_CRYPTO_SHA512 is not set 1259# CONFIG_CRYPTO_SHA512 is not set
1074# CONFIG_CRYPTO_WP512 is not set
1075# CONFIG_CRYPTO_TGR192 is not set 1260# CONFIG_CRYPTO_TGR192 is not set
1076# CONFIG_CRYPTO_GF128MUL is not set 1261# CONFIG_CRYPTO_WP512 is not set
1077# CONFIG_CRYPTO_ECB is not set 1262
1078CONFIG_CRYPTO_CBC=m 1263#
1079# CONFIG_CRYPTO_PCBC is not set 1264# Ciphers
1080# CONFIG_CRYPTO_LRW is not set 1265#
1081# CONFIG_CRYPTO_XTS is not set
1082# CONFIG_CRYPTO_CRYPTD is not set
1083CONFIG_CRYPTO_DES=m
1084# CONFIG_CRYPTO_FCRYPT is not set
1085CONFIG_CRYPTO_BLOWFISH=m
1086# CONFIG_CRYPTO_TWOFISH is not set
1087# CONFIG_CRYPTO_SERPENT is not set
1088# CONFIG_CRYPTO_AES is not set 1266# CONFIG_CRYPTO_AES is not set
1267# CONFIG_CRYPTO_ANUBIS is not set
1268# CONFIG_CRYPTO_ARC4 is not set
1269CONFIG_CRYPTO_BLOWFISH=m
1270# CONFIG_CRYPTO_CAMELLIA is not set
1089CONFIG_CRYPTO_CAST5=m 1271CONFIG_CRYPTO_CAST5=m
1090# CONFIG_CRYPTO_CAST6 is not set 1272# CONFIG_CRYPTO_CAST6 is not set
1091# CONFIG_CRYPTO_TEA is not set 1273CONFIG_CRYPTO_DES=m
1092# CONFIG_CRYPTO_ARC4 is not set 1274# CONFIG_CRYPTO_FCRYPT is not set
1093# CONFIG_CRYPTO_KHAZAD is not set 1275# CONFIG_CRYPTO_KHAZAD is not set
1094# CONFIG_CRYPTO_ANUBIS is not set 1276# CONFIG_CRYPTO_SALSA20 is not set
1095# CONFIG_CRYPTO_SEED is not set 1277# CONFIG_CRYPTO_SEED is not set
1278# CONFIG_CRYPTO_SERPENT is not set
1279# CONFIG_CRYPTO_TEA is not set
1280# CONFIG_CRYPTO_TWOFISH is not set
1281
1282#
1283# Compression
1284#
1096CONFIG_CRYPTO_DEFLATE=m 1285CONFIG_CRYPTO_DEFLATE=m
1097# CONFIG_CRYPTO_MICHAEL_MIC is not set 1286# CONFIG_CRYPTO_LZO is not set
1098CONFIG_CRYPTO_CRC32C=m 1287
1099# CONFIG_CRYPTO_CAMELLIA is not set 1288#
1100CONFIG_CRYPTO_TEST=m 1289# Random Number Generation
1101# CONFIG_CRYPTO_AUTHENC is not set 1290#
1291# CONFIG_CRYPTO_ANSI_CPRNG is not set
1102# CONFIG_CRYPTO_HW is not set 1292# CONFIG_CRYPTO_HW is not set
1103 1293
1104# 1294#
1105# Library routines 1295# Library routines
1106# 1296#
1107CONFIG_BITREVERSE=y 1297CONFIG_BITREVERSE=y
1298CONFIG_GENERIC_FIND_LAST_BIT=y
1108CONFIG_CRC_CCITT=m 1299CONFIG_CRC_CCITT=m
1109# CONFIG_CRC16 is not set 1300# CONFIG_CRC16 is not set
1110# CONFIG_CRC_ITU_T is not set 1301# CONFIG_CRC_T10DIF is not set
1302CONFIG_CRC_ITU_T=m
1111CONFIG_CRC32=y 1303CONFIG_CRC32=y
1112# CONFIG_CRC7 is not set 1304# CONFIG_CRC7 is not set
1113CONFIG_LIBCRC32C=m 1305CONFIG_LIBCRC32C=m
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig
index 1bf22c9a4614..98bb05ee6e8d 100644
--- a/arch/parisc/configs/b180_defconfig
+++ b/arch/parisc/configs/b180_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.29-rc8
4# Fri Oct 12 21:16:46 2007 4# Fri Mar 13 01:32:57 2009
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -33,13 +33,29 @@ CONFIG_SYSVIPC_SYSCTL=y
33# CONFIG_BSD_PROCESS_ACCT is not set 33# CONFIG_BSD_PROCESS_ACCT is not set
34# CONFIG_TASKSTATS is not set 34# CONFIG_TASKSTATS is not set
35# CONFIG_AUDIT is not set 35# CONFIG_AUDIT is not set
36
37#
38# RCU Subsystem
39#
40CONFIG_CLASSIC_RCU=y
41# CONFIG_TREE_RCU is not set
42# CONFIG_PREEMPT_RCU is not set
43# CONFIG_TREE_RCU_TRACE is not set
44# CONFIG_PREEMPT_RCU_TRACE is not set
36CONFIG_IKCONFIG=y 45CONFIG_IKCONFIG=y
37CONFIG_IKCONFIG_PROC=y 46CONFIG_IKCONFIG_PROC=y
38CONFIG_LOG_BUF_SHIFT=16 47CONFIG_LOG_BUF_SHIFT=16
48# CONFIG_CGROUPS is not set
39CONFIG_SYSFS_DEPRECATED=y 49CONFIG_SYSFS_DEPRECATED=y
50CONFIG_SYSFS_DEPRECATED_V2=y
40# CONFIG_RELAY is not set 51# CONFIG_RELAY is not set
52CONFIG_NAMESPACES=y
53# CONFIG_UTS_NS is not set
54# CONFIG_IPC_NS is not set
41# CONFIG_BLK_DEV_INITRD is not set 55# CONFIG_BLK_DEV_INITRD is not set
56CONFIG_CC_OPTIMIZE_FOR_SIZE=y
42CONFIG_SYSCTL=y 57CONFIG_SYSCTL=y
58CONFIG_ANON_INODES=y
43# CONFIG_EMBEDDED is not set 59# CONFIG_EMBEDDED is not set
44CONFIG_SYSCTL_SYSCALL=y 60CONFIG_SYSCTL_SYSCALL=y
45CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
@@ -51,27 +67,34 @@ CONFIG_BUG=y
51CONFIG_ELF_CORE=y 67CONFIG_ELF_CORE=y
52CONFIG_BASE_FULL=y 68CONFIG_BASE_FULL=y
53CONFIG_FUTEX=y 69CONFIG_FUTEX=y
54CONFIG_ANON_INODES=y
55CONFIG_EPOLL=y 70CONFIG_EPOLL=y
56CONFIG_SIGNALFD=y 71CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y
57CONFIG_EVENTFD=y 73CONFIG_EVENTFD=y
58CONFIG_SHMEM=y 74CONFIG_SHMEM=y
75CONFIG_AIO=y
59CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_COMPAT_BRK=y
60CONFIG_SLAB=y 79CONFIG_SLAB=y
61# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
62# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
82# CONFIG_PROFILING is not set
83CONFIG_HAVE_OPROFILE=y
84# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
85CONFIG_SLABINFO=y
63CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
64# CONFIG_TINY_SHMEM is not set
65CONFIG_BASE_SMALL=0 87CONFIG_BASE_SMALL=0
66CONFIG_MODULES=y 88CONFIG_MODULES=y
89# CONFIG_MODULE_FORCE_LOAD is not set
67# CONFIG_MODULE_UNLOAD is not set 90# CONFIG_MODULE_UNLOAD is not set
68CONFIG_MODVERSIONS=y 91CONFIG_MODVERSIONS=y
69# CONFIG_MODULE_SRCVERSION_ALL is not set 92# CONFIG_MODULE_SRCVERSION_ALL is not set
70# CONFIG_KMOD is not set 93CONFIG_INIT_ALL_POSSIBLE=y
71CONFIG_BLOCK=y 94CONFIG_BLOCK=y
72# CONFIG_LBD is not set 95# CONFIG_LBD is not set
73# CONFIG_BLK_DEV_IO_TRACE is not set 96# CONFIG_BLK_DEV_IO_TRACE is not set
74# CONFIG_LSF is not set 97# CONFIG_BLK_DEV_INTEGRITY is not set
75 98
76# 99#
77# IO Schedulers 100# IO Schedulers
@@ -85,6 +108,7 @@ CONFIG_IOSCHED_CFQ=y
85CONFIG_DEFAULT_CFQ=y 108CONFIG_DEFAULT_CFQ=y
86# CONFIG_DEFAULT_NOOP is not set 109# CONFIG_DEFAULT_NOOP is not set
87CONFIG_DEFAULT_IOSCHED="cfq" 110CONFIG_DEFAULT_IOSCHED="cfq"
111# CONFIG_FREEZER is not set
88 112
89# 113#
90# Processor type and features 114# Processor type and features
@@ -108,13 +132,15 @@ CONFIG_HZ_250=y
108# CONFIG_HZ_300 is not set 132# CONFIG_HZ_300 is not set
109# CONFIG_HZ_1000 is not set 133# CONFIG_HZ_1000 is not set
110CONFIG_HZ=250 134CONFIG_HZ=250
135# CONFIG_SCHED_HRTICK is not set
111CONFIG_FLATMEM=y 136CONFIG_FLATMEM=y
112CONFIG_FLAT_NODE_MEM_MAP=y 137CONFIG_FLAT_NODE_MEM_MAP=y
113# CONFIG_SPARSEMEM_STATIC is not set 138CONFIG_PAGEFLAGS_EXTENDED=y
114CONFIG_SPLIT_PTLOCK_CPUS=4096 139CONFIG_SPLIT_PTLOCK_CPUS=4096
115# CONFIG_RESOURCES_64BIT is not set 140# CONFIG_PHYS_ADDR_T_64BIT is not set
116CONFIG_ZONE_DMA_FLAG=0 141CONFIG_ZONE_DMA_FLAG=0
117CONFIG_VIRT_TO_BUS=y 142CONFIG_VIRT_TO_BUS=y
143CONFIG_UNEVICTABLE_LRU=y
118# CONFIG_HPUX is not set 144# CONFIG_HPUX is not set
119 145
120# 146#
@@ -130,14 +156,14 @@ CONFIG_EISA_NAMES=y
130CONFIG_ISA=y 156CONFIG_ISA=y
131CONFIG_PCI=y 157CONFIG_PCI=y
132# CONFIG_ARCH_SUPPORTS_MSI is not set 158# CONFIG_ARCH_SUPPORTS_MSI is not set
159CONFIG_PCI_LEGACY=y
133# CONFIG_PCI_DEBUG is not set 160# CONFIG_PCI_DEBUG is not set
161# CONFIG_PCI_STUB is not set
134CONFIG_GSC_DINO=y 162CONFIG_GSC_DINO=y
135# CONFIG_PCI_LBA is not set 163# CONFIG_PCI_LBA is not set
136 164CONFIG_IOMMU_HELPER=y
137#
138# PCCARD (PCMCIA/CardBus) support
139#
140# CONFIG_PCCARD is not set 165# CONFIG_PCCARD is not set
166# CONFIG_HOTPLUG_PCI is not set
141 167
142# 168#
143# PA-RISC specific drivers 169# PA-RISC specific drivers
@@ -151,16 +177,15 @@ CONFIG_PDC_STABLE=y
151# Executable file formats 177# Executable file formats
152# 178#
153CONFIG_BINFMT_ELF=y 179CONFIG_BINFMT_ELF=y
180# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
181# CONFIG_HAVE_AOUT is not set
154# CONFIG_BINFMT_MISC is not set 182# CONFIG_BINFMT_MISC is not set
155
156#
157# Networking
158#
159CONFIG_NET=y 183CONFIG_NET=y
160 184
161# 185#
162# Networking options 186# Networking options
163# 187#
188CONFIG_COMPAT_NET_DEV_OPS=y
164CONFIG_PACKET=y 189CONFIG_PACKET=y
165CONFIG_PACKET_MMAP=y 190CONFIG_PACKET_MMAP=y
166CONFIG_UNIX=y 191CONFIG_UNIX=y
@@ -205,36 +230,37 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=y
205CONFIG_INET6_XFRM_MODE_TUNNEL=y 230CONFIG_INET6_XFRM_MODE_TUNNEL=y
206CONFIG_INET6_XFRM_MODE_BEET=y 231CONFIG_INET6_XFRM_MODE_BEET=y
207CONFIG_IPV6_SIT=y 232CONFIG_IPV6_SIT=y
233CONFIG_IPV6_NDISC_NODETYPE=y
208# CONFIG_IPV6_TUNNEL is not set 234# CONFIG_IPV6_TUNNEL is not set
209# CONFIG_NETLABEL is not set 235# CONFIG_NETLABEL is not set
210# CONFIG_NETWORK_SECMARK is not set 236# CONFIG_NETWORK_SECMARK is not set
211# CONFIG_NETFILTER is not set 237# CONFIG_NETFILTER is not set
238# CONFIG_ATM is not set
212# CONFIG_BRIDGE is not set 239# CONFIG_BRIDGE is not set
213# CONFIG_VLAN_8021Q is not set 240# CONFIG_VLAN_8021Q is not set
214# CONFIG_DECNET is not set 241# CONFIG_DECNET is not set
215# CONFIG_LLC2 is not set 242# CONFIG_LLC2 is not set
216# CONFIG_IPX is not set 243# CONFIG_IPX is not set
217# CONFIG_ATALK is not set 244# CONFIG_ATALK is not set
218
219#
220# QoS and/or fair queueing
221#
222# CONFIG_NET_SCHED is not set 245# CONFIG_NET_SCHED is not set
246# CONFIG_DCB is not set
223 247
224# 248#
225# Network testing 249# Network testing
226# 250#
227# CONFIG_NET_PKTGEN is not set 251# CONFIG_NET_PKTGEN is not set
228# CONFIG_HAMRADIO is not set 252# CONFIG_HAMRADIO is not set
253# CONFIG_CAN is not set
229# CONFIG_IRDA is not set 254# CONFIG_IRDA is not set
230# CONFIG_BT is not set 255# CONFIG_BT is not set
231 256# CONFIG_PHONET is not set
232# 257CONFIG_WIRELESS=y
233# Wireless
234#
235# CONFIG_CFG80211 is not set 258# CONFIG_CFG80211 is not set
259CONFIG_WIRELESS_OLD_REGULATORY=y
236# CONFIG_WIRELESS_EXT is not set 260# CONFIG_WIRELESS_EXT is not set
237# CONFIG_IEEE80211 is not set 261# CONFIG_LIB80211 is not set
262# CONFIG_MAC80211 is not set
263# CONFIG_WIMAX is not set
238# CONFIG_RFKILL is not set 264# CONFIG_RFKILL is not set
239 265
240# 266#
@@ -247,7 +273,9 @@ CONFIG_IPV6_SIT=y
247CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 273CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
248CONFIG_STANDALONE=y 274CONFIG_STANDALONE=y
249# CONFIG_PREVENT_FIRMWARE_BUILD is not set 275# CONFIG_PREVENT_FIRMWARE_BUILD is not set
250# CONFIG_FW_LOADER is not set 276CONFIG_FW_LOADER=y
277CONFIG_FIRMWARE_IN_KERNEL=y
278CONFIG_EXTRA_FIRMWARE=""
251# CONFIG_DEBUG_DRIVER is not set 279# CONFIG_DEBUG_DRIVER is not set
252# CONFIG_DEBUG_DEVRES is not set 280# CONFIG_DEBUG_DEVRES is not set
253# CONFIG_SYS_HYPERVISOR is not set 281# CONFIG_SYS_HYPERVISOR is not set
@@ -275,10 +303,18 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
275CONFIG_CDROM_PKTCDVD=m 303CONFIG_CDROM_PKTCDVD=m
276CONFIG_CDROM_PKTCDVD_BUFFERS=8 304CONFIG_CDROM_PKTCDVD_BUFFERS=8
277CONFIG_ATA_OVER_ETH=y 305CONFIG_ATA_OVER_ETH=y
306# CONFIG_BLK_DEV_HD is not set
278CONFIG_MISC_DEVICES=y 307CONFIG_MISC_DEVICES=y
279# CONFIG_PHANTOM is not set 308# CONFIG_PHANTOM is not set
280# CONFIG_EEPROM_93CX6 is not set
281# CONFIG_SGI_IOC4 is not set 309# CONFIG_SGI_IOC4 is not set
310# CONFIG_ENCLOSURE_SERVICES is not set
311# CONFIG_HP_ILO is not set
312
313#
314# EEPROM support
315#
316# CONFIG_EEPROM_93CX6 is not set
317CONFIG_HAVE_IDE=y
282# CONFIG_IDE is not set 318# CONFIG_IDE is not set
283 319
284# 320#
@@ -317,8 +353,10 @@ CONFIG_SCSI_SPI_ATTRS=y
317# CONFIG_SCSI_FC_ATTRS is not set 353# CONFIG_SCSI_FC_ATTRS is not set
318# CONFIG_SCSI_ISCSI_ATTRS is not set 354# CONFIG_SCSI_ISCSI_ATTRS is not set
319# CONFIG_SCSI_SAS_LIBSAS is not set 355# CONFIG_SCSI_SAS_LIBSAS is not set
356# CONFIG_SCSI_SRP_ATTRS is not set
320CONFIG_SCSI_LOWLEVEL=y 357CONFIG_SCSI_LOWLEVEL=y
321# CONFIG_ISCSI_TCP is not set 358# CONFIG_ISCSI_TCP is not set
359# CONFIG_SCSI_CXGB3_ISCSI is not set
322# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 360# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
323# CONFIG_SCSI_3W_9XXX is not set 361# CONFIG_SCSI_3W_9XXX is not set
324# CONFIG_SCSI_ACARD is not set 362# CONFIG_SCSI_ACARD is not set
@@ -330,12 +368,15 @@ CONFIG_SCSI_LOWLEVEL=y
330# CONFIG_SCSI_AIC79XX is not set 368# CONFIG_SCSI_AIC79XX is not set
331# CONFIG_SCSI_AIC94XX is not set 369# CONFIG_SCSI_AIC94XX is not set
332# CONFIG_SCSI_DPT_I2O is not set 370# CONFIG_SCSI_DPT_I2O is not set
371# CONFIG_SCSI_ADVANSYS is not set
333# CONFIG_SCSI_IN2000 is not set 372# CONFIG_SCSI_IN2000 is not set
334# CONFIG_SCSI_ARCMSR is not set 373# CONFIG_SCSI_ARCMSR is not set
335# CONFIG_MEGARAID_NEWGEN is not set 374# CONFIG_MEGARAID_NEWGEN is not set
336# CONFIG_MEGARAID_LEGACY is not set 375# CONFIG_MEGARAID_LEGACY is not set
337# CONFIG_MEGARAID_SAS is not set 376# CONFIG_MEGARAID_SAS is not set
338# CONFIG_SCSI_HPTIOP is not set 377# CONFIG_SCSI_HPTIOP is not set
378# CONFIG_LIBFC is not set
379# CONFIG_FCOE is not set
339# CONFIG_SCSI_DMX3191D is not set 380# CONFIG_SCSI_DMX3191D is not set
340# CONFIG_SCSI_DTC3280 is not set 381# CONFIG_SCSI_DTC3280 is not set
341# CONFIG_SCSI_FUTURE_DOMAIN is not set 382# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -346,6 +387,7 @@ CONFIG_SCSI_LOWLEVEL=y
346# CONFIG_SCSI_INIA100 is not set 387# CONFIG_SCSI_INIA100 is not set
347# CONFIG_SCSI_PPA is not set 388# CONFIG_SCSI_PPA is not set
348# CONFIG_SCSI_IMM is not set 389# CONFIG_SCSI_IMM is not set
390# CONFIG_SCSI_MVSAS is not set
349# CONFIG_SCSI_NCR53C406A is not set 391# CONFIG_SCSI_NCR53C406A is not set
350CONFIG_SCSI_LASI700=y 392CONFIG_SCSI_LASI700=y
351CONFIG_53C700_LE_ON_BE=y 393CONFIG_53C700_LE_ON_BE=y
@@ -360,7 +402,6 @@ CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
360CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 402CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
361CONFIG_SCSI_NCR53C8XX_SYNC=40 403CONFIG_SCSI_NCR53C8XX_SYNC=40
362# CONFIG_SCSI_PAS16 is not set 404# CONFIG_SCSI_PAS16 is not set
363# CONFIG_SCSI_PSI240I is not set
364# CONFIG_SCSI_QLOGIC_FAS is not set 405# CONFIG_SCSI_QLOGIC_FAS is not set
365# CONFIG_SCSI_QLOGIC_1280 is not set 406# CONFIG_SCSI_QLOGIC_1280 is not set
366# CONFIG_SCSI_QLA_FC is not set 407# CONFIG_SCSI_QLA_FC is not set
@@ -373,9 +414,11 @@ CONFIG_SCSI_NCR53C8XX_SYNC=40
373# CONFIG_SCSI_NSP32 is not set 414# CONFIG_SCSI_NSP32 is not set
374# CONFIG_SCSI_DEBUG is not set 415# CONFIG_SCSI_DEBUG is not set
375# CONFIG_SCSI_SRP is not set 416# CONFIG_SCSI_SRP is not set
417# CONFIG_SCSI_DH is not set
376# CONFIG_ATA is not set 418# CONFIG_ATA is not set
377CONFIG_MD=y 419CONFIG_MD=y
378CONFIG_BLK_DEV_MD=y 420CONFIG_BLK_DEV_MD=y
421CONFIG_MD_AUTODETECT=y
379CONFIG_MD_LINEAR=y 422CONFIG_MD_LINEAR=y
380CONFIG_MD_RAID0=y 423CONFIG_MD_RAID0=y
381CONFIG_MD_RAID1=y 424CONFIG_MD_RAID1=y
@@ -383,26 +426,18 @@ CONFIG_MD_RAID1=y
383# CONFIG_MD_MULTIPATH is not set 426# CONFIG_MD_MULTIPATH is not set
384# CONFIG_MD_FAULTY is not set 427# CONFIG_MD_FAULTY is not set
385# CONFIG_BLK_DEV_DM is not set 428# CONFIG_BLK_DEV_DM is not set
386
387#
388# Fusion MPT device support
389#
390# CONFIG_FUSION is not set 429# CONFIG_FUSION is not set
391# CONFIG_FUSION_SPI is not set
392# CONFIG_FUSION_FC is not set
393# CONFIG_FUSION_SAS is not set
394 430
395# 431#
396# IEEE 1394 (FireWire) support 432# IEEE 1394 (FireWire) support
397# 433#
398 434
399# 435#
400# An alternative FireWire stack is available with EXPERIMENTAL=y 436# A new alternative FireWire stack is available with EXPERIMENTAL=y
401# 437#
402# CONFIG_IEEE1394 is not set 438# CONFIG_IEEE1394 is not set
403# CONFIG_I2O is not set 439# CONFIG_I2O is not set
404CONFIG_NETDEVICES=y 440CONFIG_NETDEVICES=y
405# CONFIG_NETDEVICES_MULTIQUEUE is not set
406# CONFIG_DUMMY is not set 441# CONFIG_DUMMY is not set
407# CONFIG_BONDING is not set 442# CONFIG_BONDING is not set
408# CONFIG_EQUALIZER is not set 443# CONFIG_EQUALIZER is not set
@@ -434,36 +469,49 @@ CONFIG_TULIP=y
434# CONFIG_IBM_NEW_EMAC_RGMII is not set 469# CONFIG_IBM_NEW_EMAC_RGMII is not set
435# CONFIG_IBM_NEW_EMAC_TAH is not set 470# CONFIG_IBM_NEW_EMAC_TAH is not set
436# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 471# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
472# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
473# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
474# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
437# CONFIG_NET_PCI is not set 475# CONFIG_NET_PCI is not set
438# CONFIG_B44 is not set 476# CONFIG_B44 is not set
477# CONFIG_CS89x0 is not set
439# CONFIG_NET_POCKET is not set 478# CONFIG_NET_POCKET is not set
479# CONFIG_ATL2 is not set
440CONFIG_NETDEV_1000=y 480CONFIG_NETDEV_1000=y
441# CONFIG_ACENIC is not set 481# CONFIG_ACENIC is not set
442# CONFIG_DL2K is not set 482# CONFIG_DL2K is not set
443# CONFIG_E1000 is not set 483# CONFIG_E1000 is not set
444# CONFIG_E1000E is not set 484# CONFIG_E1000E is not set
485# CONFIG_IGB is not set
445# CONFIG_NS83820 is not set 486# CONFIG_NS83820 is not set
446# CONFIG_HAMACHI is not set 487# CONFIG_HAMACHI is not set
447# CONFIG_R8169 is not set 488# CONFIG_R8169 is not set
448# CONFIG_SIS190 is not set 489# CONFIG_SIS190 is not set
449# CONFIG_SKGE is not set 490# CONFIG_SKGE is not set
450# CONFIG_SKY2 is not set 491# CONFIG_SKY2 is not set
451# CONFIG_SK98LIN is not set
452# CONFIG_VIA_VELOCITY is not set 492# CONFIG_VIA_VELOCITY is not set
453# CONFIG_TIGON3 is not set 493# CONFIG_TIGON3 is not set
454# CONFIG_BNX2 is not set 494# CONFIG_BNX2 is not set
455# CONFIG_QLA3XXX is not set 495# CONFIG_QLA3XXX is not set
496# CONFIG_ATL1 is not set
497# CONFIG_JME is not set
456CONFIG_NETDEV_10000=y 498CONFIG_NETDEV_10000=y
457# CONFIG_CHELSIO_T1 is not set 499# CONFIG_CHELSIO_T1 is not set
500CONFIG_CHELSIO_T3_DEPENDS=y
458# CONFIG_CHELSIO_T3 is not set 501# CONFIG_CHELSIO_T3 is not set
502# CONFIG_ENIC is not set
459# CONFIG_IXGBE is not set 503# CONFIG_IXGBE is not set
460# CONFIG_IXGB is not set 504# CONFIG_IXGB is not set
461# CONFIG_S2IO is not set 505# CONFIG_S2IO is not set
462# CONFIG_MYRI10GE is not set 506# CONFIG_MYRI10GE is not set
463# CONFIG_NETXEN_NIC is not set 507# CONFIG_NETXEN_NIC is not set
464# CONFIG_NIU is not set 508# CONFIG_NIU is not set
509# CONFIG_MLX4_EN is not set
465# CONFIG_MLX4_CORE is not set 510# CONFIG_MLX4_CORE is not set
466# CONFIG_TEHUTI is not set 511# CONFIG_TEHUTI is not set
512# CONFIG_BNX2X is not set
513# CONFIG_QLGE is not set
514# CONFIG_SFC is not set
467# CONFIG_TR is not set 515# CONFIG_TR is not set
468 516
469# 517#
@@ -471,6 +519,11 @@ CONFIG_NETDEV_10000=y
471# 519#
472# CONFIG_WLAN_PRE80211 is not set 520# CONFIG_WLAN_PRE80211 is not set
473# CONFIG_WLAN_80211 is not set 521# CONFIG_WLAN_80211 is not set
522# CONFIG_IWLWIFI_LEDS is not set
523
524#
525# Enable WiMAX (Networking options) to see the WiMAX drivers
526#
474# CONFIG_WAN is not set 527# CONFIG_WAN is not set
475# CONFIG_FDDI is not set 528# CONFIG_FDDI is not set
476# CONFIG_PLIP is not set 529# CONFIG_PLIP is not set
@@ -503,7 +556,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
503CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 556CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
504CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 557CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
505# CONFIG_INPUT_JOYDEV is not set 558# CONFIG_INPUT_JOYDEV is not set
506# CONFIG_INPUT_TSDEV is not set
507CONFIG_INPUT_EVDEV=y 559CONFIG_INPUT_EVDEV=y
508# CONFIG_INPUT_EVBUG is not set 560# CONFIG_INPUT_EVBUG is not set
509 561
@@ -526,11 +578,12 @@ CONFIG_MOUSE_PS2=y
526CONFIG_MOUSE_PS2_ALPS=y 578CONFIG_MOUSE_PS2_ALPS=y
527CONFIG_MOUSE_PS2_LOGIPS2PP=y 579CONFIG_MOUSE_PS2_LOGIPS2PP=y
528CONFIG_MOUSE_PS2_SYNAPTICS=y 580CONFIG_MOUSE_PS2_SYNAPTICS=y
529CONFIG_MOUSE_PS2_LIFEBOOK=y
530CONFIG_MOUSE_PS2_TRACKPOINT=y 581CONFIG_MOUSE_PS2_TRACKPOINT=y
582# CONFIG_MOUSE_PS2_ELANTECH is not set
531# CONFIG_MOUSE_PS2_TOUCHKIT is not set 583# CONFIG_MOUSE_PS2_TOUCHKIT is not set
532# CONFIG_MOUSE_SERIAL is not set 584# CONFIG_MOUSE_SERIAL is not set
533# CONFIG_MOUSE_APPLETOUCH is not set 585# CONFIG_MOUSE_APPLETOUCH is not set
586# CONFIG_MOUSE_BCM5974 is not set
534# CONFIG_MOUSE_INPORT is not set 587# CONFIG_MOUSE_INPORT is not set
535# CONFIG_MOUSE_LOGIBM is not set 588# CONFIG_MOUSE_LOGIBM is not set
536# CONFIG_MOUSE_PC110PAD is not set 589# CONFIG_MOUSE_PC110PAD is not set
@@ -564,9 +617,11 @@ CONFIG_SERIO_LIBPS2=y
564# Character devices 617# Character devices
565# 618#
566CONFIG_VT=y 619CONFIG_VT=y
620CONFIG_CONSOLE_TRANSLATIONS=y
567CONFIG_VT_CONSOLE=y 621CONFIG_VT_CONSOLE=y
568CONFIG_HW_CONSOLE=y 622CONFIG_HW_CONSOLE=y
569# CONFIG_VT_HW_CONSOLE_BINDING is not set 623# CONFIG_VT_HW_CONSOLE_BINDING is not set
624CONFIG_DEVKMEM=y
570# CONFIG_SERIAL_NONSTANDARD is not set 625# CONFIG_SERIAL_NONSTANDARD is not set
571 626
572# 627#
@@ -598,75 +653,79 @@ CONFIG_SERIAL_CORE=y
598CONFIG_SERIAL_CORE_CONSOLE=y 653CONFIG_SERIAL_CORE_CONSOLE=y
599# CONFIG_SERIAL_JSM is not set 654# CONFIG_SERIAL_JSM is not set
600CONFIG_UNIX98_PTYS=y 655CONFIG_UNIX98_PTYS=y
656# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
601CONFIG_LEGACY_PTYS=y 657CONFIG_LEGACY_PTYS=y
602CONFIG_LEGACY_PTY_COUNT=256 658CONFIG_LEGACY_PTY_COUNT=256
603CONFIG_PRINTER=y 659CONFIG_PRINTER=y
604# CONFIG_LP_CONSOLE is not set 660# CONFIG_LP_CONSOLE is not set
605# CONFIG_PPDEV is not set 661# CONFIG_PPDEV is not set
606# CONFIG_TIPAR is not set
607# CONFIG_IPMI_HANDLER is not set 662# CONFIG_IPMI_HANDLER is not set
608# CONFIG_WATCHDOG is not set
609# CONFIG_HW_RANDOM is not set 663# CONFIG_HW_RANDOM is not set
610CONFIG_GEN_RTC=y
611# CONFIG_GEN_RTC_X is not set
612# CONFIG_DTLK is not set 664# CONFIG_DTLK is not set
613# CONFIG_R3964 is not set 665# CONFIG_R3964 is not set
614# CONFIG_APPLICOM is not set 666# CONFIG_APPLICOM is not set
615# CONFIG_AGP is not set
616# CONFIG_DRM is not set
617# CONFIG_RAW_DRIVER is not set 667# CONFIG_RAW_DRIVER is not set
618CONFIG_DEVPORT=y 668CONFIG_DEVPORT=y
619# CONFIG_I2C is not set 669# CONFIG_I2C is not set
620
621#
622# SPI support
623#
624# CONFIG_SPI is not set 670# CONFIG_SPI is not set
625# CONFIG_SPI_MASTER is not set
626# CONFIG_W1 is not set 671# CONFIG_W1 is not set
627# CONFIG_POWER_SUPPLY is not set 672# CONFIG_POWER_SUPPLY is not set
628# CONFIG_HWMON is not set 673# CONFIG_HWMON is not set
674# CONFIG_THERMAL is not set
675# CONFIG_THERMAL_HWMON is not set
676# CONFIG_WATCHDOG is not set
677CONFIG_SSB_POSSIBLE=y
629 678
630# 679#
631# Sonics Silicon Backplane 680# Sonics Silicon Backplane
632# 681#
633CONFIG_SSB_POSSIBLE=y
634# CONFIG_SSB is not set 682# CONFIG_SSB is not set
635 683
636# 684#
637# Multifunction device drivers 685# Multifunction device drivers
638# 686#
687# CONFIG_MFD_CORE is not set
639# CONFIG_MFD_SM501 is not set 688# CONFIG_MFD_SM501 is not set
689# CONFIG_HTC_PASIC3 is not set
690# CONFIG_MFD_TMIO is not set
691# CONFIG_REGULATOR is not set
640 692
641# 693#
642# Multimedia devices 694# Multimedia devices
643# 695#
696
697#
698# Multimedia core support
699#
644# CONFIG_VIDEO_DEV is not set 700# CONFIG_VIDEO_DEV is not set
645# CONFIG_DVB_CORE is not set 701# CONFIG_DVB_CORE is not set
646# CONFIG_DAB is not set 702# CONFIG_VIDEO_MEDIA is not set
647 703
648# 704#
649# Graphics support 705# Multimedia drivers
650# 706#
651# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 707# CONFIG_DAB is not set
652 708
653# 709#
654# Display device support 710# Graphics support
655# 711#
656# CONFIG_DISPLAY_SUPPORT is not set 712# CONFIG_AGP is not set
713# CONFIG_DRM is not set
657# CONFIG_VGASTATE is not set 714# CONFIG_VGASTATE is not set
658CONFIG_VIDEO_OUTPUT_CONTROL=m 715CONFIG_VIDEO_OUTPUT_CONTROL=m
659CONFIG_FB=y 716CONFIG_FB=y
660# CONFIG_FIRMWARE_EDID is not set 717# CONFIG_FIRMWARE_EDID is not set
661# CONFIG_FB_DDC is not set 718# CONFIG_FB_DDC is not set
719# CONFIG_FB_BOOT_VESA_SUPPORT is not set
662CONFIG_FB_CFB_FILLRECT=y 720CONFIG_FB_CFB_FILLRECT=y
663CONFIG_FB_CFB_COPYAREA=y 721CONFIG_FB_CFB_COPYAREA=y
664CONFIG_FB_CFB_IMAGEBLIT=y 722CONFIG_FB_CFB_IMAGEBLIT=y
723# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
665# CONFIG_FB_SYS_FILLRECT is not set 724# CONFIG_FB_SYS_FILLRECT is not set
666# CONFIG_FB_SYS_COPYAREA is not set 725# CONFIG_FB_SYS_COPYAREA is not set
667# CONFIG_FB_SYS_IMAGEBLIT is not set 726# CONFIG_FB_SYS_IMAGEBLIT is not set
727# CONFIG_FB_FOREIGN_ENDIAN is not set
668# CONFIG_FB_SYS_FOPS is not set 728# CONFIG_FB_SYS_FOPS is not set
669CONFIG_FB_DEFERRED_IO=y
670# CONFIG_FB_SVGALIB is not set 729# CONFIG_FB_SVGALIB is not set
671# CONFIG_FB_MACMODES is not set 730# CONFIG_FB_MACMODES is not set
672# CONFIG_FB_BACKLIGHT is not set 731# CONFIG_FB_BACKLIGHT is not set
@@ -691,6 +750,7 @@ CONFIG_FB_STI=y
691# CONFIG_FB_ATY is not set 750# CONFIG_FB_ATY is not set
692# CONFIG_FB_S3 is not set 751# CONFIG_FB_S3 is not set
693# CONFIG_FB_SIS is not set 752# CONFIG_FB_SIS is not set
753# CONFIG_FB_VIA is not set
694# CONFIG_FB_NEOMAGIC is not set 754# CONFIG_FB_NEOMAGIC is not set
695# CONFIG_FB_KYRO is not set 755# CONFIG_FB_KYRO is not set
696# CONFIG_FB_3DFX is not set 756# CONFIG_FB_3DFX is not set
@@ -698,7 +758,16 @@ CONFIG_FB_STI=y
698# CONFIG_FB_VT8623 is not set 758# CONFIG_FB_VT8623 is not set
699# CONFIG_FB_TRIDENT is not set 759# CONFIG_FB_TRIDENT is not set
700# CONFIG_FB_ARK is not set 760# CONFIG_FB_ARK is not set
761# CONFIG_FB_CARMINE is not set
701# CONFIG_FB_VIRTUAL is not set 762# CONFIG_FB_VIRTUAL is not set
763# CONFIG_FB_METRONOME is not set
764# CONFIG_FB_MB862XX is not set
765# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
766
767#
768# Display device support
769#
770# CONFIG_DISPLAY_SUPPORT is not set
702 771
703# 772#
704# Console display driver support 773# Console display driver support
@@ -718,15 +787,8 @@ CONFIG_LOGO_LINUX_MONO=y
718CONFIG_LOGO_LINUX_VGA16=y 787CONFIG_LOGO_LINUX_VGA16=y
719CONFIG_LOGO_LINUX_CLUT224=y 788CONFIG_LOGO_LINUX_CLUT224=y
720CONFIG_LOGO_PARISC_CLUT224=y 789CONFIG_LOGO_PARISC_CLUT224=y
721
722#
723# Sound
724#
725CONFIG_SOUND=y 790CONFIG_SOUND=y
726 791CONFIG_SOUND_OSS_CORE=y
727#
728# Advanced Linux Sound Architecture
729#
730CONFIG_SND=y 792CONFIG_SND=y
731CONFIG_SND_TIMER=y 793CONFIG_SND_TIMER=y
732CONFIG_SND_PCM=y 794CONFIG_SND_PCM=y
@@ -742,10 +804,7 @@ CONFIG_SND_SUPPORT_OLD_API=y
742CONFIG_SND_VERBOSE_PROCFS=y 804CONFIG_SND_VERBOSE_PROCFS=y
743# CONFIG_SND_VERBOSE_PRINTK is not set 805# CONFIG_SND_VERBOSE_PRINTK is not set
744# CONFIG_SND_DEBUG is not set 806# CONFIG_SND_DEBUG is not set
745 807CONFIG_SND_DRIVERS=y
746#
747# Generic devices
748#
749# CONFIG_SND_DUMMY is not set 808# CONFIG_SND_DUMMY is not set
750# CONFIG_SND_VIRMIDI is not set 809# CONFIG_SND_VIRMIDI is not set
751# CONFIG_SND_MTPAV is not set 810# CONFIG_SND_MTPAV is not set
@@ -753,10 +812,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
753# CONFIG_SND_SERIAL_U16550 is not set 812# CONFIG_SND_SERIAL_U16550 is not set
754# CONFIG_SND_MPU401 is not set 813# CONFIG_SND_MPU401 is not set
755# CONFIG_SND_PORTMAN2X4 is not set 814# CONFIG_SND_PORTMAN2X4 is not set
756 815CONFIG_SND_PCI=y
757#
758# PCI devices
759#
760# CONFIG_SND_AD1889 is not set 816# CONFIG_SND_AD1889 is not set
761# CONFIG_SND_ALS300 is not set 817# CONFIG_SND_ALS300 is not set
762# CONFIG_SND_ALI5451 is not set 818# CONFIG_SND_ALI5451 is not set
@@ -765,9 +821,11 @@ CONFIG_SND_VERBOSE_PROCFS=y
765# CONFIG_SND_AU8810 is not set 821# CONFIG_SND_AU8810 is not set
766# CONFIG_SND_AU8820 is not set 822# CONFIG_SND_AU8820 is not set
767# CONFIG_SND_AU8830 is not set 823# CONFIG_SND_AU8830 is not set
824# CONFIG_SND_AW2 is not set
768# CONFIG_SND_BT87X is not set 825# CONFIG_SND_BT87X is not set
769# CONFIG_SND_CA0106 is not set 826# CONFIG_SND_CA0106 is not set
770# CONFIG_SND_CMIPCI is not set 827# CONFIG_SND_CMIPCI is not set
828# CONFIG_SND_OXYGEN is not set
771# CONFIG_SND_CS4281 is not set 829# CONFIG_SND_CS4281 is not set
772# CONFIG_SND_CS46XX is not set 830# CONFIG_SND_CS46XX is not set
773# CONFIG_SND_DARLA20 is not set 831# CONFIG_SND_DARLA20 is not set
@@ -792,6 +850,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
792# CONFIG_SND_HDA_INTEL is not set 850# CONFIG_SND_HDA_INTEL is not set
793# CONFIG_SND_HDSP is not set 851# CONFIG_SND_HDSP is not set
794# CONFIG_SND_HDSPM is not set 852# CONFIG_SND_HDSPM is not set
853# CONFIG_SND_HIFIER is not set
795# CONFIG_SND_ICE1712 is not set 854# CONFIG_SND_ICE1712 is not set
796# CONFIG_SND_ICE1724 is not set 855# CONFIG_SND_ICE1724 is not set
797# CONFIG_SND_INTEL8X0 is not set 856# CONFIG_SND_INTEL8X0 is not set
@@ -809,30 +868,23 @@ CONFIG_SND_VERBOSE_PROCFS=y
809# CONFIG_SND_TRIDENT is not set 868# CONFIG_SND_TRIDENT is not set
810# CONFIG_SND_VIA82XX is not set 869# CONFIG_SND_VIA82XX is not set
811# CONFIG_SND_VIA82XX_MODEM is not set 870# CONFIG_SND_VIA82XX_MODEM is not set
871# CONFIG_SND_VIRTUOSO is not set
812# CONFIG_SND_VX222 is not set 872# CONFIG_SND_VX222 is not set
813# CONFIG_SND_YMFPCI is not set 873# CONFIG_SND_YMFPCI is not set
814 874CONFIG_SND_GSC=y
815#
816# GSC devices
817#
818CONFIG_SND_HARMONY=y 875CONFIG_SND_HARMONY=y
819
820#
821# System on Chip audio support
822#
823# CONFIG_SND_SOC is not set 876# CONFIG_SND_SOC is not set
824
825#
826# SoC Audio support for SuperH
827#
828
829#
830# Open Sound System
831#
832# CONFIG_SOUND_PRIME is not set 877# CONFIG_SOUND_PRIME is not set
833CONFIG_HID_SUPPORT=y 878CONFIG_HID_SUPPORT=y
834CONFIG_HID=y 879CONFIG_HID=y
835CONFIG_HID_DEBUG=y 880CONFIG_HID_DEBUG=y
881# CONFIG_HIDRAW is not set
882# CONFIG_HID_PID is not set
883
884#
885# Special HID drivers
886#
887CONFIG_HID_COMPAT=y
836CONFIG_USB_SUPPORT=y 888CONFIG_USB_SUPPORT=y
837CONFIG_USB_ARCH_HAS_HCD=y 889CONFIG_USB_ARCH_HAS_HCD=y
838CONFIG_USB_ARCH_HAS_OHCI=y 890CONFIG_USB_ARCH_HAS_OHCI=y
@@ -840,36 +892,63 @@ CONFIG_USB_ARCH_HAS_EHCI=y
840# CONFIG_USB is not set 892# CONFIG_USB is not set
841 893
842# 894#
843# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 895# Enable Host or Gadget support to see Inventra options
844# 896#
845 897
846# 898#
847# USB Gadget Support 899# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
848# 900#
849# CONFIG_USB_GADGET is not set 901# CONFIG_USB_GADGET is not set
902
903#
904# OTG and related infrastructure
905#
850# CONFIG_MMC is not set 906# CONFIG_MMC is not set
907# CONFIG_MEMSTICK is not set
851# CONFIG_NEW_LEDS is not set 908# CONFIG_NEW_LEDS is not set
909# CONFIG_ACCESSIBILITY is not set
852# CONFIG_INFINIBAND is not set 910# CONFIG_INFINIBAND is not set
853# CONFIG_RTC_CLASS is not set 911CONFIG_RTC_LIB=y
912CONFIG_RTC_CLASS=y
913CONFIG_RTC_HCTOSYS=y
914CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
915# CONFIG_RTC_DEBUG is not set
854 916
855# 917#
856# DMA Engine support 918# RTC interfaces
857# 919#
858# CONFIG_DMA_ENGINE is not set 920CONFIG_RTC_INTF_SYSFS=y
921CONFIG_RTC_INTF_PROC=y
922CONFIG_RTC_INTF_DEV=y
923# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
924# CONFIG_RTC_DRV_TEST is not set
859 925
860# 926#
861# DMA Clients 927# SPI RTC drivers
862# 928#
863 929
864# 930#
865# DMA Devices 931# Platform RTC drivers
866# 932#
867# CONFIG_AUXDISPLAY is not set 933# CONFIG_RTC_DRV_DS1286 is not set
934# CONFIG_RTC_DRV_DS1511 is not set
935# CONFIG_RTC_DRV_DS1553 is not set
936# CONFIG_RTC_DRV_DS1742 is not set
937# CONFIG_RTC_DRV_STK17TA8 is not set
938# CONFIG_RTC_DRV_M48T86 is not set
939# CONFIG_RTC_DRV_M48T35 is not set
940# CONFIG_RTC_DRV_M48T59 is not set
941# CONFIG_RTC_DRV_BQ4802 is not set
942# CONFIG_RTC_DRV_V3020 is not set
868 943
869# 944#
870# Userspace I/O 945# on-CPU RTC drivers
871# 946#
947CONFIG_RTC_DRV_PARISC=y
948# CONFIG_DMADEVICES is not set
949# CONFIG_AUXDISPLAY is not set
872# CONFIG_UIO is not set 950# CONFIG_UIO is not set
951# CONFIG_STAGING is not set
873 952
874# 953#
875# File systems 954# File systems
@@ -879,19 +958,18 @@ CONFIG_EXT2_FS=y
879# CONFIG_EXT2_FS_XIP is not set 958# CONFIG_EXT2_FS_XIP is not set
880CONFIG_EXT3_FS=y 959CONFIG_EXT3_FS=y
881# CONFIG_EXT3_FS_XATTR is not set 960# CONFIG_EXT3_FS_XATTR is not set
961# CONFIG_EXT4_FS is not set
882CONFIG_JBD=y 962CONFIG_JBD=y
883# CONFIG_JBD_DEBUG is not set
884# CONFIG_REISERFS_FS is not set 963# CONFIG_REISERFS_FS is not set
885# CONFIG_JFS_FS is not set 964# CONFIG_JFS_FS is not set
886# CONFIG_FS_POSIX_ACL is not set 965# CONFIG_FS_POSIX_ACL is not set
966CONFIG_FILE_LOCKING=y
887# CONFIG_XFS_FS is not set 967# CONFIG_XFS_FS is not set
888# CONFIG_OCFS2_FS is not set 968# CONFIG_OCFS2_FS is not set
889# CONFIG_MINIX_FS is not set 969CONFIG_DNOTIFY=y
890# CONFIG_ROMFS_FS is not set
891CONFIG_INOTIFY=y 970CONFIG_INOTIFY=y
892CONFIG_INOTIFY_USER=y 971CONFIG_INOTIFY_USER=y
893# CONFIG_QUOTA is not set 972# CONFIG_QUOTA is not set
894CONFIG_DNOTIFY=y
895# CONFIG_AUTOFS_FS is not set 973# CONFIG_AUTOFS_FS is not set
896CONFIG_AUTOFS4_FS=y 974CONFIG_AUTOFS4_FS=y
897# CONFIG_FUSE_FS is not set 975# CONFIG_FUSE_FS is not set
@@ -917,35 +995,32 @@ CONFIG_JOLIET=y
917CONFIG_PROC_FS=y 995CONFIG_PROC_FS=y
918CONFIG_PROC_KCORE=y 996CONFIG_PROC_KCORE=y
919CONFIG_PROC_SYSCTL=y 997CONFIG_PROC_SYSCTL=y
998CONFIG_PROC_PAGE_MONITOR=y
920CONFIG_SYSFS=y 999CONFIG_SYSFS=y
921CONFIG_TMPFS=y 1000CONFIG_TMPFS=y
922# CONFIG_TMPFS_POSIX_ACL is not set 1001# CONFIG_TMPFS_POSIX_ACL is not set
923# CONFIG_HUGETLB_PAGE is not set 1002# CONFIG_HUGETLB_PAGE is not set
924CONFIG_RAMFS=y 1003# CONFIG_CONFIGFS_FS is not set
925 1004CONFIG_MISC_FILESYSTEMS=y
926#
927# Miscellaneous filesystems
928#
929# CONFIG_HFSPLUS_FS is not set 1005# CONFIG_HFSPLUS_FS is not set
930# CONFIG_CRAMFS is not set 1006# CONFIG_CRAMFS is not set
1007# CONFIG_SQUASHFS is not set
931# CONFIG_VXFS_FS is not set 1008# CONFIG_VXFS_FS is not set
1009# CONFIG_MINIX_FS is not set
1010# CONFIG_OMFS_FS is not set
932# CONFIG_HPFS_FS is not set 1011# CONFIG_HPFS_FS is not set
933# CONFIG_QNX4FS_FS is not set 1012# CONFIG_QNX4FS_FS is not set
1013# CONFIG_ROMFS_FS is not set
934# CONFIG_SYSV_FS is not set 1014# CONFIG_SYSV_FS is not set
935# CONFIG_UFS_FS is not set 1015# CONFIG_UFS_FS is not set
936 1016CONFIG_NETWORK_FILESYSTEMS=y
937#
938# Network File Systems
939#
940CONFIG_NFS_FS=y 1017CONFIG_NFS_FS=y
941CONFIG_NFS_V3=y 1018CONFIG_NFS_V3=y
942# CONFIG_NFS_V3_ACL is not set 1019# CONFIG_NFS_V3_ACL is not set
943# CONFIG_NFS_DIRECTIO is not set 1020CONFIG_ROOT_NFS=y
944CONFIG_NFSD=y 1021CONFIG_NFSD=y
945CONFIG_NFSD_V3=y 1022CONFIG_NFSD_V3=y
946# CONFIG_NFSD_V3_ACL is not set 1023# CONFIG_NFSD_V3_ACL is not set
947CONFIG_NFSD_TCP=y
948CONFIG_ROOT_NFS=y
949CONFIG_LOCKD=y 1024CONFIG_LOCKD=y
950CONFIG_LOCKD_V4=y 1025CONFIG_LOCKD_V4=y
951CONFIG_EXPORTFS=y 1026CONFIG_EXPORTFS=y
@@ -962,10 +1037,6 @@ CONFIG_SMB_FS=y
962# 1037#
963# CONFIG_PARTITION_ADVANCED is not set 1038# CONFIG_PARTITION_ADVANCED is not set
964CONFIG_MSDOS_PARTITION=y 1039CONFIG_MSDOS_PARTITION=y
965
966#
967# Native Language Support
968#
969CONFIG_NLS=y 1040CONFIG_NLS=y
970CONFIG_NLS_DEFAULT="iso8859-1" 1041CONFIG_NLS_DEFAULT="iso8859-1"
971CONFIG_NLS_CODEPAGE_437=m 1042CONFIG_NLS_CODEPAGE_437=m
@@ -1011,7 +1082,9 @@ CONFIG_NLS_UTF8=m
1011# Kernel hacking 1082# Kernel hacking
1012# 1083#
1013# CONFIG_PRINTK_TIME is not set 1084# CONFIG_PRINTK_TIME is not set
1085CONFIG_ENABLE_WARN_DEPRECATED=y
1014CONFIG_ENABLE_MUST_CHECK=y 1086CONFIG_ENABLE_MUST_CHECK=y
1087CONFIG_FRAME_WARN=1024
1015CONFIG_MAGIC_SYSRQ=y 1088CONFIG_MAGIC_SYSRQ=y
1016# CONFIG_UNUSED_SYMBOLS is not set 1089# CONFIG_UNUSED_SYMBOLS is not set
1017# CONFIG_DEBUG_FS is not set 1090# CONFIG_DEBUG_FS is not set
@@ -1019,9 +1092,12 @@ CONFIG_HEADERS_CHECK=y
1019CONFIG_DEBUG_KERNEL=y 1092CONFIG_DEBUG_KERNEL=y
1020# CONFIG_DEBUG_SHIRQ is not set 1093# CONFIG_DEBUG_SHIRQ is not set
1021CONFIG_DETECT_SOFTLOCKUP=y 1094CONFIG_DETECT_SOFTLOCKUP=y
1095# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1096CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1022CONFIG_SCHED_DEBUG=y 1097CONFIG_SCHED_DEBUG=y
1023# CONFIG_SCHEDSTATS is not set 1098# CONFIG_SCHEDSTATS is not set
1024# CONFIG_TIMER_STATS is not set 1099# CONFIG_TIMER_STATS is not set
1100# CONFIG_DEBUG_OBJECTS is not set
1025# CONFIG_DEBUG_SLAB is not set 1101# CONFIG_DEBUG_SLAB is not set
1026# CONFIG_DEBUG_RT_MUTEXES is not set 1102# CONFIG_DEBUG_RT_MUTEXES is not set
1027# CONFIG_RT_MUTEX_TESTER is not set 1103# CONFIG_RT_MUTEX_TESTER is not set
@@ -1033,10 +1109,29 @@ CONFIG_SCHED_DEBUG=y
1033CONFIG_DEBUG_BUGVERBOSE=y 1109CONFIG_DEBUG_BUGVERBOSE=y
1034# CONFIG_DEBUG_INFO is not set 1110# CONFIG_DEBUG_INFO is not set
1035# CONFIG_DEBUG_VM is not set 1111# CONFIG_DEBUG_VM is not set
1112# CONFIG_DEBUG_WRITECOUNT is not set
1113CONFIG_DEBUG_MEMORY_INIT=y
1036# CONFIG_DEBUG_LIST is not set 1114# CONFIG_DEBUG_LIST is not set
1037CONFIG_FORCED_INLINING=y 1115# CONFIG_DEBUG_SG is not set
1116# CONFIG_DEBUG_NOTIFIERS is not set
1117# CONFIG_BOOT_PRINTK_DELAY is not set
1038# CONFIG_RCU_TORTURE_TEST is not set 1118# CONFIG_RCU_TORTURE_TEST is not set
1119# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1120# CONFIG_BACKTRACE_SELF_TEST is not set
1121# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1039# CONFIG_FAULT_INJECTION is not set 1122# CONFIG_FAULT_INJECTION is not set
1123# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1124
1125#
1126# Tracers
1127#
1128# CONFIG_SCHED_TRACER is not set
1129# CONFIG_CONTEXT_SWITCH_TRACER is not set
1130# CONFIG_BOOT_TRACER is not set
1131# CONFIG_TRACE_BRANCH_PROFILING is not set
1132# CONFIG_BUILD_DOCSRC is not set
1133# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1134# CONFIG_SAMPLES is not set
1040# CONFIG_DEBUG_RODATA is not set 1135# CONFIG_DEBUG_RODATA is not set
1041 1136
1042# 1137#
@@ -1044,52 +1139,108 @@ CONFIG_FORCED_INLINING=y
1044# 1139#
1045# CONFIG_KEYS is not set 1140# CONFIG_KEYS is not set
1046CONFIG_SECURITY=y 1141CONFIG_SECURITY=y
1142# CONFIG_SECURITYFS is not set
1047# CONFIG_SECURITY_NETWORK is not set 1143# CONFIG_SECURITY_NETWORK is not set
1048CONFIG_SECURITY_CAPABILITIES=y 1144# CONFIG_SECURITY_PATH is not set
1145# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1146CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
1049CONFIG_CRYPTO=y 1147CONFIG_CRYPTO=y
1148
1149#
1150# Crypto core or helper
1151#
1152# CONFIG_CRYPTO_FIPS is not set
1050CONFIG_CRYPTO_ALGAPI=y 1153CONFIG_CRYPTO_ALGAPI=y
1154CONFIG_CRYPTO_ALGAPI2=y
1155CONFIG_CRYPTO_AEAD2=y
1051CONFIG_CRYPTO_BLKCIPHER=y 1156CONFIG_CRYPTO_BLKCIPHER=y
1157CONFIG_CRYPTO_BLKCIPHER2=y
1158CONFIG_CRYPTO_HASH2=y
1159CONFIG_CRYPTO_RNG2=y
1052CONFIG_CRYPTO_MANAGER=y 1160CONFIG_CRYPTO_MANAGER=y
1053# CONFIG_CRYPTO_HMAC is not set 1161CONFIG_CRYPTO_MANAGER2=y
1054# CONFIG_CRYPTO_NULL is not set 1162# CONFIG_CRYPTO_NULL is not set
1163# CONFIG_CRYPTO_CRYPTD is not set
1164# CONFIG_CRYPTO_AUTHENC is not set
1165# CONFIG_CRYPTO_TEST is not set
1166
1167#
1168# Authenticated Encryption with Associated Data
1169#
1170# CONFIG_CRYPTO_CCM is not set
1171# CONFIG_CRYPTO_GCM is not set
1172# CONFIG_CRYPTO_SEQIV is not set
1173
1174#
1175# Block modes
1176#
1177CONFIG_CRYPTO_CBC=y
1178# CONFIG_CRYPTO_CTR is not set
1179# CONFIG_CRYPTO_CTS is not set
1180# CONFIG_CRYPTO_ECB is not set
1181# CONFIG_CRYPTO_PCBC is not set
1182
1183#
1184# Hash modes
1185#
1186# CONFIG_CRYPTO_HMAC is not set
1187
1188#
1189# Digest
1190#
1191# CONFIG_CRYPTO_CRC32C is not set
1055# CONFIG_CRYPTO_MD4 is not set 1192# CONFIG_CRYPTO_MD4 is not set
1056# CONFIG_CRYPTO_MD5 is not set 1193# CONFIG_CRYPTO_MD5 is not set
1194# CONFIG_CRYPTO_MICHAEL_MIC is not set
1195# CONFIG_CRYPTO_RMD128 is not set
1196# CONFIG_CRYPTO_RMD160 is not set
1197# CONFIG_CRYPTO_RMD256 is not set
1198# CONFIG_CRYPTO_RMD320 is not set
1057# CONFIG_CRYPTO_SHA1 is not set 1199# CONFIG_CRYPTO_SHA1 is not set
1058# CONFIG_CRYPTO_SHA256 is not set 1200# CONFIG_CRYPTO_SHA256 is not set
1059# CONFIG_CRYPTO_SHA512 is not set 1201# CONFIG_CRYPTO_SHA512 is not set
1060# CONFIG_CRYPTO_WP512 is not set
1061# CONFIG_CRYPTO_TGR192 is not set 1202# CONFIG_CRYPTO_TGR192 is not set
1062# CONFIG_CRYPTO_ECB is not set 1203# CONFIG_CRYPTO_WP512 is not set
1063CONFIG_CRYPTO_CBC=y 1204
1064# CONFIG_CRYPTO_PCBC is not set 1205#
1065# CONFIG_CRYPTO_CRYPTD is not set 1206# Ciphers
1066# CONFIG_CRYPTO_DES is not set 1207#
1067# CONFIG_CRYPTO_FCRYPT is not set
1068# CONFIG_CRYPTO_BLOWFISH is not set
1069# CONFIG_CRYPTO_TWOFISH is not set
1070# CONFIG_CRYPTO_SERPENT is not set
1071# CONFIG_CRYPTO_AES is not set 1208# CONFIG_CRYPTO_AES is not set
1209# CONFIG_CRYPTO_ANUBIS is not set
1210# CONFIG_CRYPTO_ARC4 is not set
1211# CONFIG_CRYPTO_BLOWFISH is not set
1212# CONFIG_CRYPTO_CAMELLIA is not set
1072# CONFIG_CRYPTO_CAST5 is not set 1213# CONFIG_CRYPTO_CAST5 is not set
1073# CONFIG_CRYPTO_CAST6 is not set 1214# CONFIG_CRYPTO_CAST6 is not set
1074# CONFIG_CRYPTO_TEA is not set 1215# CONFIG_CRYPTO_DES is not set
1075# CONFIG_CRYPTO_ARC4 is not set 1216# CONFIG_CRYPTO_FCRYPT is not set
1076# CONFIG_CRYPTO_KHAZAD is not set 1217# CONFIG_CRYPTO_KHAZAD is not set
1077# CONFIG_CRYPTO_ANUBIS is not set
1078# CONFIG_CRYPTO_SEED is not set 1218# CONFIG_CRYPTO_SEED is not set
1219# CONFIG_CRYPTO_SERPENT is not set
1220# CONFIG_CRYPTO_TEA is not set
1221# CONFIG_CRYPTO_TWOFISH is not set
1222
1223#
1224# Compression
1225#
1079# CONFIG_CRYPTO_DEFLATE is not set 1226# CONFIG_CRYPTO_DEFLATE is not set
1080# CONFIG_CRYPTO_MICHAEL_MIC is not set 1227# CONFIG_CRYPTO_LZO is not set
1081# CONFIG_CRYPTO_CRC32C is not set 1228
1082# CONFIG_CRYPTO_CAMELLIA is not set 1229#
1083# CONFIG_CRYPTO_TEST is not set 1230# Random Number Generation
1084# CONFIG_CRYPTO_AUTHENC is not set 1231#
1232# CONFIG_CRYPTO_ANSI_CPRNG is not set
1085CONFIG_CRYPTO_HW=y 1233CONFIG_CRYPTO_HW=y
1234# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1086 1235
1087# 1236#
1088# Library routines 1237# Library routines
1089# 1238#
1090CONFIG_BITREVERSE=y 1239CONFIG_BITREVERSE=y
1240CONFIG_GENERIC_FIND_LAST_BIT=y
1091# CONFIG_CRC_CCITT is not set 1241# CONFIG_CRC_CCITT is not set
1092# CONFIG_CRC16 is not set 1242# CONFIG_CRC16 is not set
1243# CONFIG_CRC_T10DIF is not set
1093# CONFIG_CRC_ITU_T is not set 1244# CONFIG_CRC_ITU_T is not set
1094CONFIG_CRC32=y 1245CONFIG_CRC32=y
1095# CONFIG_CRC7 is not set 1246# CONFIG_CRC7 is not set
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig
index c6def3c1d209..0aa8014f758c 100644
--- a/arch/parisc/configs/c3000_defconfig
+++ b/arch/parisc/configs/c3000_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.29-rc8
4# Fri Oct 12 21:24:00 2007 4# Fri Mar 13 01:32:58 2009
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -33,16 +33,29 @@ CONFIG_SYSVIPC_SYSCTL=y
33# CONFIG_POSIX_MQUEUE is not set 33# CONFIG_POSIX_MQUEUE is not set
34# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
35# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
37# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
38CONFIG_IKCONFIG=y 46CONFIG_IKCONFIG=y
39CONFIG_IKCONFIG_PROC=y 47CONFIG_IKCONFIG_PROC=y
40CONFIG_LOG_BUF_SHIFT=16 48CONFIG_LOG_BUF_SHIFT=16
49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
41CONFIG_SYSFS_DEPRECATED=y 51CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y
42# CONFIG_RELAY is not set 53# CONFIG_RELAY is not set
54# CONFIG_NAMESPACES is not set
43# CONFIG_BLK_DEV_INITRD is not set 55# CONFIG_BLK_DEV_INITRD is not set
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 56# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SYSCTL=y 57CONFIG_SYSCTL=y
58CONFIG_ANON_INODES=y
46CONFIG_EMBEDDED=y 59CONFIG_EMBEDDED=y
47CONFIG_SYSCTL_SYSCALL=y 60CONFIG_SYSCTL_SYSCALL=y
48CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
@@ -54,29 +67,39 @@ CONFIG_BUG=y
54CONFIG_ELF_CORE=y 67CONFIG_ELF_CORE=y
55CONFIG_BASE_FULL=y 68CONFIG_BASE_FULL=y
56CONFIG_FUTEX=y 69CONFIG_FUTEX=y
57CONFIG_ANON_INODES=y
58CONFIG_EPOLL=y 70CONFIG_EPOLL=y
59CONFIG_SIGNALFD=y 71CONFIG_SIGNALFD=y
72CONFIG_TIMERFD=y
60CONFIG_EVENTFD=y 73CONFIG_EVENTFD=y
61CONFIG_SHMEM=y 74CONFIG_SHMEM=y
75CONFIG_AIO=y
62CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_COMPAT_BRK=y
63CONFIG_SLAB=y 79CONFIG_SLAB=y
64# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
65# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
82CONFIG_PROFILING=y
83CONFIG_TRACEPOINTS=y
84# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=m
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
88CONFIG_SLABINFO=y
66CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
67# CONFIG_TINY_SHMEM is not set
68CONFIG_BASE_SMALL=0 90CONFIG_BASE_SMALL=0
69CONFIG_MODULES=y 91CONFIG_MODULES=y
92# CONFIG_MODULE_FORCE_LOAD is not set
70CONFIG_MODULE_UNLOAD=y 93CONFIG_MODULE_UNLOAD=y
71CONFIG_MODULE_FORCE_UNLOAD=y 94CONFIG_MODULE_FORCE_UNLOAD=y
72# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
73# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
74CONFIG_KMOD=y 97CONFIG_INIT_ALL_POSSIBLE=y
75CONFIG_BLOCK=y 98CONFIG_BLOCK=y
76# CONFIG_LBD is not set 99# CONFIG_LBD is not set
77# CONFIG_BLK_DEV_IO_TRACE is not set 100# CONFIG_BLK_DEV_IO_TRACE is not set
78# CONFIG_LSF is not set
79# CONFIG_BLK_DEV_BSG is not set 101# CONFIG_BLK_DEV_BSG is not set
102# CONFIG_BLK_DEV_INTEGRITY is not set
80 103
81# 104#
82# IO Schedulers 105# IO Schedulers
@@ -90,6 +113,7 @@ CONFIG_DEFAULT_AS=y
90# CONFIG_DEFAULT_CFQ is not set 113# CONFIG_DEFAULT_CFQ is not set
91# CONFIG_DEFAULT_NOOP is not set 114# CONFIG_DEFAULT_NOOP is not set
92CONFIG_DEFAULT_IOSCHED="anticipatory" 115CONFIG_DEFAULT_IOSCHED="anticipatory"
116# CONFIG_FREEZER is not set
93 117
94# 118#
95# Processor type and features 119# Processor type and features
@@ -115,17 +139,19 @@ CONFIG_HZ_250=y
115# CONFIG_HZ_300 is not set 139# CONFIG_HZ_300 is not set
116# CONFIG_HZ_1000 is not set 140# CONFIG_HZ_1000 is not set
117CONFIG_HZ=250 141CONFIG_HZ=250
142# CONFIG_SCHED_HRTICK is not set
118CONFIG_SELECT_MEMORY_MODEL=y 143CONFIG_SELECT_MEMORY_MODEL=y
119CONFIG_FLATMEM_MANUAL=y 144CONFIG_FLATMEM_MANUAL=y
120# CONFIG_DISCONTIGMEM_MANUAL is not set 145# CONFIG_DISCONTIGMEM_MANUAL is not set
121# CONFIG_SPARSEMEM_MANUAL is not set 146# CONFIG_SPARSEMEM_MANUAL is not set
122CONFIG_FLATMEM=y 147CONFIG_FLATMEM=y
123CONFIG_FLAT_NODE_MEM_MAP=y 148CONFIG_FLAT_NODE_MEM_MAP=y
124# CONFIG_SPARSEMEM_STATIC is not set 149CONFIG_PAGEFLAGS_EXTENDED=y
125CONFIG_SPLIT_PTLOCK_CPUS=4 150CONFIG_SPLIT_PTLOCK_CPUS=4
126# CONFIG_RESOURCES_64BIT is not set 151# CONFIG_PHYS_ADDR_T_64BIT is not set
127CONFIG_ZONE_DMA_FLAG=0 152CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y 153CONFIG_VIRT_TO_BUS=y
154CONFIG_UNEVICTABLE_LRU=y
129# CONFIG_HPUX is not set 155# CONFIG_HPUX is not set
130 156
131# 157#
@@ -134,14 +160,13 @@ CONFIG_VIRT_TO_BUS=y
134# CONFIG_GSC is not set 160# CONFIG_GSC is not set
135CONFIG_PCI=y 161CONFIG_PCI=y
136# CONFIG_ARCH_SUPPORTS_MSI is not set 162# CONFIG_ARCH_SUPPORTS_MSI is not set
163CONFIG_PCI_LEGACY=y
137# CONFIG_PCI_DEBUG is not set 164# CONFIG_PCI_DEBUG is not set
165# CONFIG_PCI_STUB is not set
138CONFIG_PCI_LBA=y 166CONFIG_PCI_LBA=y
139CONFIG_IOSAPIC=y 167CONFIG_IOSAPIC=y
140CONFIG_IOMMU_SBA=y 168CONFIG_IOMMU_SBA=y
141 169CONFIG_IOMMU_HELPER=y
142#
143# PCCARD (PCMCIA/CardBus) support
144#
145# CONFIG_PCCARD is not set 170# CONFIG_PCCARD is not set
146# CONFIG_HOTPLUG_PCI is not set 171# CONFIG_HOTPLUG_PCI is not set
147 172
@@ -158,16 +183,15 @@ CONFIG_PDC_STABLE=y
158# Executable file formats 183# Executable file formats
159# 184#
160CONFIG_BINFMT_ELF=y 185CONFIG_BINFMT_ELF=y
186# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
187# CONFIG_HAVE_AOUT is not set
161# CONFIG_BINFMT_MISC is not set 188# CONFIG_BINFMT_MISC is not set
162
163#
164# Networking
165#
166CONFIG_NET=y 189CONFIG_NET=y
167 190
168# 191#
169# Networking options 192# Networking options
170# 193#
194CONFIG_COMPAT_NET_DEV_OPS=y
171CONFIG_PACKET=y 195CONFIG_PACKET=y
172CONFIG_PACKET_MMAP=y 196CONFIG_PACKET_MMAP=y
173CONFIG_UNIX=y 197CONFIG_UNIX=y
@@ -175,6 +199,8 @@ CONFIG_XFRM=y
175CONFIG_XFRM_USER=m 199CONFIG_XFRM_USER=m
176# CONFIG_XFRM_SUB_POLICY is not set 200# CONFIG_XFRM_SUB_POLICY is not set
177# CONFIG_XFRM_MIGRATE is not set 201# CONFIG_XFRM_MIGRATE is not set
202# CONFIG_XFRM_STATISTICS is not set
203CONFIG_XFRM_IPCOMP=m
178CONFIG_NET_KEY=m 204CONFIG_NET_KEY=m
179# CONFIG_NET_KEY_MIGRATE is not set 205# CONFIG_NET_KEY_MIGRATE is not set
180CONFIG_INET=y 206CONFIG_INET=y
@@ -204,7 +230,6 @@ CONFIG_INET_XFRM_MODE_BEET=y
204CONFIG_TCP_CONG_CUBIC=y 230CONFIG_TCP_CONG_CUBIC=y
205CONFIG_DEFAULT_TCP_CONG="cubic" 231CONFIG_DEFAULT_TCP_CONG="cubic"
206# CONFIG_TCP_MD5SIG is not set 232# CONFIG_TCP_MD5SIG is not set
207# CONFIG_IP_VS is not set
208CONFIG_IPV6=m 233CONFIG_IPV6=m
209# CONFIG_IPV6_PRIVACY is not set 234# CONFIG_IPV6_PRIVACY is not set
210# CONFIG_IPV6_ROUTER_PREF is not set 235# CONFIG_IPV6_ROUTER_PREF is not set
@@ -220,29 +245,34 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
220CONFIG_INET6_XFRM_MODE_BEET=m 245CONFIG_INET6_XFRM_MODE_BEET=m
221# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 246# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
222CONFIG_IPV6_SIT=m 247CONFIG_IPV6_SIT=m
248CONFIG_IPV6_NDISC_NODETYPE=y
223CONFIG_IPV6_TUNNEL=m 249CONFIG_IPV6_TUNNEL=m
224# CONFIG_IPV6_MULTIPLE_TABLES is not set 250# CONFIG_IPV6_MULTIPLE_TABLES is not set
251# CONFIG_IPV6_MROUTE is not set
225# CONFIG_NETWORK_SECMARK is not set 252# CONFIG_NETWORK_SECMARK is not set
226CONFIG_NETFILTER=y 253CONFIG_NETFILTER=y
227CONFIG_NETFILTER_DEBUG=y 254CONFIG_NETFILTER_DEBUG=y
255CONFIG_NETFILTER_ADVANCED=y
228 256
229# 257#
230# Core Netfilter Configuration 258# Core Netfilter Configuration
231# 259#
232# CONFIG_NETFILTER_NETLINK is not set 260# CONFIG_NETFILTER_NETLINK_QUEUE is not set
233# CONFIG_NF_CONNTRACK_ENABLED is not set 261# CONFIG_NETFILTER_NETLINK_LOG is not set
234# CONFIG_NF_CONNTRACK is not set 262# CONFIG_NF_CONNTRACK is not set
235# CONFIG_NETFILTER_XTABLES is not set 263# CONFIG_NETFILTER_XTABLES is not set
264# CONFIG_IP_VS is not set
236 265
237# 266#
238# IP: Netfilter Configuration 267# IP: Netfilter Configuration
239# 268#
269# CONFIG_NF_DEFRAG_IPV4 is not set
240CONFIG_IP_NF_QUEUE=m 270CONFIG_IP_NF_QUEUE=m
241# CONFIG_IP_NF_IPTABLES is not set 271# CONFIG_IP_NF_IPTABLES is not set
242# CONFIG_IP_NF_ARPTABLES is not set 272# CONFIG_IP_NF_ARPTABLES is not set
243 273
244# 274#
245# IPv6: Netfilter Configuration (EXPERIMENTAL) 275# IPv6: Netfilter Configuration
246# 276#
247# CONFIG_IP6_NF_QUEUE is not set 277# CONFIG_IP6_NF_QUEUE is not set
248# CONFIG_IP6_NF_IPTABLES is not set 278# CONFIG_IP6_NF_IPTABLES is not set
@@ -251,6 +281,7 @@ CONFIG_IP_NF_QUEUE=m
251# CONFIG_TIPC is not set 281# CONFIG_TIPC is not set
252# CONFIG_ATM is not set 282# CONFIG_ATM is not set
253# CONFIG_BRIDGE is not set 283# CONFIG_BRIDGE is not set
284# CONFIG_NET_DSA is not set
254# CONFIG_VLAN_8021Q is not set 285# CONFIG_VLAN_8021Q is not set
255# CONFIG_DECNET is not set 286# CONFIG_DECNET is not set
256# CONFIG_LLC2 is not set 287# CONFIG_LLC2 is not set
@@ -260,28 +291,26 @@ CONFIG_IP_NF_QUEUE=m
260# CONFIG_LAPB is not set 291# CONFIG_LAPB is not set
261# CONFIG_ECONET is not set 292# CONFIG_ECONET is not set
262# CONFIG_WAN_ROUTER is not set 293# CONFIG_WAN_ROUTER is not set
263
264#
265# QoS and/or fair queueing
266#
267# CONFIG_NET_SCHED is not set 294# CONFIG_NET_SCHED is not set
295# CONFIG_DCB is not set
268 296
269# 297#
270# Network testing 298# Network testing
271# 299#
272CONFIG_NET_PKTGEN=m 300CONFIG_NET_PKTGEN=m
273# CONFIG_HAMRADIO is not set 301# CONFIG_HAMRADIO is not set
302# CONFIG_CAN is not set
274# CONFIG_IRDA is not set 303# CONFIG_IRDA is not set
275# CONFIG_BT is not set 304# CONFIG_BT is not set
276# CONFIG_AF_RXRPC is not set 305# CONFIG_AF_RXRPC is not set
277 306# CONFIG_PHONET is not set
278# 307CONFIG_WIRELESS=y
279# Wireless
280#
281# CONFIG_CFG80211 is not set 308# CONFIG_CFG80211 is not set
309CONFIG_WIRELESS_OLD_REGULATORY=y
282# CONFIG_WIRELESS_EXT is not set 310# CONFIG_WIRELESS_EXT is not set
311# CONFIG_LIB80211 is not set
283# CONFIG_MAC80211 is not set 312# CONFIG_MAC80211 is not set
284# CONFIG_IEEE80211 is not set 313# CONFIG_WIMAX is not set
285# CONFIG_RFKILL is not set 314# CONFIG_RFKILL is not set
286# CONFIG_NET_9P is not set 315# CONFIG_NET_9P is not set
287 316
@@ -296,6 +325,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
296# CONFIG_STANDALONE is not set 325# CONFIG_STANDALONE is not set
297# CONFIG_PREVENT_FIRMWARE_BUILD is not set 326# CONFIG_PREVENT_FIRMWARE_BUILD is not set
298CONFIG_FW_LOADER=y 327CONFIG_FW_LOADER=y
328CONFIG_FIRMWARE_IN_KERNEL=y
329CONFIG_EXTRA_FIRMWARE=""
299# CONFIG_DEBUG_DRIVER is not set 330# CONFIG_DEBUG_DRIVER is not set
300# CONFIG_DEBUG_DEVRES is not set 331# CONFIG_DEBUG_DEVRES is not set
301# CONFIG_SYS_HYPERVISOR is not set 332# CONFIG_SYS_HYPERVISOR is not set
@@ -316,59 +347,62 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
316# CONFIG_BLK_DEV_RAM is not set 347# CONFIG_BLK_DEV_RAM is not set
317# CONFIG_CDROM_PKTCDVD is not set 348# CONFIG_CDROM_PKTCDVD is not set
318# CONFIG_ATA_OVER_ETH is not set 349# CONFIG_ATA_OVER_ETH is not set
350# CONFIG_BLK_DEV_HD is not set
319CONFIG_MISC_DEVICES=y 351CONFIG_MISC_DEVICES=y
320# CONFIG_PHANTOM is not set 352# CONFIG_PHANTOM is not set
321# CONFIG_EEPROM_93CX6 is not set
322# CONFIG_SGI_IOC4 is not set 353# CONFIG_SGI_IOC4 is not set
323# CONFIG_TIFM_CORE is not set 354# CONFIG_TIFM_CORE is not set
355# CONFIG_ENCLOSURE_SERVICES is not set
356# CONFIG_HP_ILO is not set
357# CONFIG_C2PORT is not set
358
359#
360# EEPROM support
361#
362# CONFIG_EEPROM_93CX6 is not set
363CONFIG_HAVE_IDE=y
324CONFIG_IDE=y 364CONFIG_IDE=y
325CONFIG_IDE_MAX_HWIFS=4
326CONFIG_BLK_DEV_IDE=y
327 365
328# 366#
329# Please see Documentation/ide.txt for help/info on IDE drives 367# Please see Documentation/ide/ide.txt for help/info on IDE drives
330# 368#
369CONFIG_IDE_ATAPI=y
331# CONFIG_BLK_DEV_IDE_SATA is not set 370# CONFIG_BLK_DEV_IDE_SATA is not set
332CONFIG_BLK_DEV_IDEDISK=m 371CONFIG_IDE_GD=y
333# CONFIG_IDEDISK_MULTI_MODE is not set 372CONFIG_IDE_GD_ATA=y
373# CONFIG_IDE_GD_ATAPI is not set
334CONFIG_BLK_DEV_IDECD=y 374CONFIG_BLK_DEV_IDECD=y
375CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
335# CONFIG_BLK_DEV_IDETAPE is not set 376# CONFIG_BLK_DEV_IDETAPE is not set
336# CONFIG_BLK_DEV_IDEFLOPPY is not set
337CONFIG_BLK_DEV_IDESCSI=y
338# CONFIG_IDE_TASK_IOCTL is not set 377# CONFIG_IDE_TASK_IOCTL is not set
339CONFIG_IDE_PROC_FS=y 378CONFIG_IDE_PROC_FS=y
340 379
341# 380#
342# IDE chipset support/bugfixes 381# IDE chipset support/bugfixes
343# 382#
344CONFIG_IDE_GENERIC=y
345# CONFIG_BLK_DEV_PLATFORM is not set 383# CONFIG_BLK_DEV_PLATFORM is not set
384CONFIG_BLK_DEV_IDEDMA_SFF=y
346 385
347# 386#
348# PCI IDE chipsets support 387# PCI IDE chipsets support
349# 388#
350CONFIG_BLK_DEV_IDEPCI=y 389CONFIG_BLK_DEV_IDEPCI=y
351CONFIG_IDEPCI_SHARE_IRQ=y
352CONFIG_IDEPCI_PCIBUS_ORDER=y 390CONFIG_IDEPCI_PCIBUS_ORDER=y
353# CONFIG_BLK_DEV_OFFBOARD is not set
354# CONFIG_BLK_DEV_GENERIC is not set 391# CONFIG_BLK_DEV_GENERIC is not set
355# CONFIG_BLK_DEV_OPTI621 is not set 392# CONFIG_BLK_DEV_OPTI621 is not set
356CONFIG_BLK_DEV_IDEDMA_PCI=y 393CONFIG_BLK_DEV_IDEDMA_PCI=y
357# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
358CONFIG_IDEDMA_ONLYDISK=y
359# CONFIG_BLK_DEV_AEC62XX is not set 394# CONFIG_BLK_DEV_AEC62XX is not set
360# CONFIG_BLK_DEV_ALI15X3 is not set 395# CONFIG_BLK_DEV_ALI15X3 is not set
361# CONFIG_BLK_DEV_AMD74XX is not set 396# CONFIG_BLK_DEV_AMD74XX is not set
362# CONFIG_BLK_DEV_CMD64X is not set 397# CONFIG_BLK_DEV_CMD64X is not set
363# CONFIG_BLK_DEV_TRIFLEX is not set 398# CONFIG_BLK_DEV_TRIFLEX is not set
364# CONFIG_BLK_DEV_CY82C693 is not set
365# CONFIG_BLK_DEV_CS5520 is not set 399# CONFIG_BLK_DEV_CS5520 is not set
366# CONFIG_BLK_DEV_CS5530 is not set 400# CONFIG_BLK_DEV_CS5530 is not set
367# CONFIG_BLK_DEV_HPT34X is not set
368# CONFIG_BLK_DEV_HPT366 is not set 401# CONFIG_BLK_DEV_HPT366 is not set
369# CONFIG_BLK_DEV_JMICRON is not set 402# CONFIG_BLK_DEV_JMICRON is not set
370# CONFIG_BLK_DEV_SC1200 is not set 403# CONFIG_BLK_DEV_SC1200 is not set
371# CONFIG_BLK_DEV_PIIX is not set 404# CONFIG_BLK_DEV_PIIX is not set
405# CONFIG_BLK_DEV_IT8172 is not set
372# CONFIG_BLK_DEV_IT8213 is not set 406# CONFIG_BLK_DEV_IT8213 is not set
373# CONFIG_BLK_DEV_IT821X is not set 407# CONFIG_BLK_DEV_IT821X is not set
374CONFIG_BLK_DEV_NS87415=y 408CONFIG_BLK_DEV_NS87415=y
@@ -380,10 +414,7 @@ CONFIG_BLK_DEV_SIIMAGE=m
380# CONFIG_BLK_DEV_TRM290 is not set 414# CONFIG_BLK_DEV_TRM290 is not set
381# CONFIG_BLK_DEV_VIA82CXXX is not set 415# CONFIG_BLK_DEV_VIA82CXXX is not set
382# CONFIG_BLK_DEV_TC86C001 is not set 416# CONFIG_BLK_DEV_TC86C001 is not set
383# CONFIG_IDE_ARM is not set
384CONFIG_BLK_DEV_IDEDMA=y 417CONFIG_BLK_DEV_IDEDMA=y
385# CONFIG_IDEDMA_IVB is not set
386# CONFIG_BLK_DEV_HD is not set
387 418
388# 419#
389# SCSI device support 420# SCSI device support
@@ -422,8 +453,10 @@ CONFIG_SCSI_SPI_ATTRS=y
422# CONFIG_SCSI_FC_ATTRS is not set 453# CONFIG_SCSI_FC_ATTRS is not set
423CONFIG_SCSI_ISCSI_ATTRS=m 454CONFIG_SCSI_ISCSI_ATTRS=m
424# CONFIG_SCSI_SAS_LIBSAS is not set 455# CONFIG_SCSI_SAS_LIBSAS is not set
456# CONFIG_SCSI_SRP_ATTRS is not set
425CONFIG_SCSI_LOWLEVEL=y 457CONFIG_SCSI_LOWLEVEL=y
426# CONFIG_ISCSI_TCP is not set 458# CONFIG_ISCSI_TCP is not set
459# CONFIG_SCSI_CXGB3_ISCSI is not set
427# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 460# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
428# CONFIG_SCSI_3W_9XXX is not set 461# CONFIG_SCSI_3W_9XXX is not set
429# CONFIG_SCSI_ACARD is not set 462# CONFIG_SCSI_ACARD is not set
@@ -433,16 +466,20 @@ CONFIG_SCSI_LOWLEVEL=y
433# CONFIG_SCSI_AIC79XX is not set 466# CONFIG_SCSI_AIC79XX is not set
434# CONFIG_SCSI_AIC94XX is not set 467# CONFIG_SCSI_AIC94XX is not set
435# CONFIG_SCSI_DPT_I2O is not set 468# CONFIG_SCSI_DPT_I2O is not set
469# CONFIG_SCSI_ADVANSYS is not set
436# CONFIG_SCSI_ARCMSR is not set 470# CONFIG_SCSI_ARCMSR is not set
437# CONFIG_MEGARAID_NEWGEN is not set 471# CONFIG_MEGARAID_NEWGEN is not set
438# CONFIG_MEGARAID_LEGACY is not set 472# CONFIG_MEGARAID_LEGACY is not set
439# CONFIG_MEGARAID_SAS is not set 473# CONFIG_MEGARAID_SAS is not set
440# CONFIG_SCSI_HPTIOP is not set 474# CONFIG_SCSI_HPTIOP is not set
475# CONFIG_LIBFC is not set
476# CONFIG_FCOE is not set
441# CONFIG_SCSI_DMX3191D is not set 477# CONFIG_SCSI_DMX3191D is not set
442# CONFIG_SCSI_FUTURE_DOMAIN is not set 478# CONFIG_SCSI_FUTURE_DOMAIN is not set
443# CONFIG_SCSI_IPS is not set 479# CONFIG_SCSI_IPS is not set
444# CONFIG_SCSI_INITIO is not set 480# CONFIG_SCSI_INITIO is not set
445# CONFIG_SCSI_INIA100 is not set 481# CONFIG_SCSI_INIA100 is not set
482# CONFIG_SCSI_MVSAS is not set
446# CONFIG_SCSI_STEX is not set 483# CONFIG_SCSI_STEX is not set
447CONFIG_SCSI_SYM53C8XX_2=y 484CONFIG_SCSI_SYM53C8XX_2=y
448CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 485CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -458,9 +495,11 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y
458# CONFIG_SCSI_NSP32 is not set 495# CONFIG_SCSI_NSP32 is not set
459CONFIG_SCSI_DEBUG=m 496CONFIG_SCSI_DEBUG=m
460# CONFIG_SCSI_SRP is not set 497# CONFIG_SCSI_SRP is not set
498# CONFIG_SCSI_DH is not set
461# CONFIG_ATA is not set 499# CONFIG_ATA is not set
462CONFIG_MD=y 500CONFIG_MD=y
463CONFIG_BLK_DEV_MD=y 501CONFIG_BLK_DEV_MD=y
502CONFIG_MD_AUTODETECT=y
464CONFIG_MD_LINEAR=y 503CONFIG_MD_LINEAR=y
465CONFIG_MD_RAID0=y 504CONFIG_MD_RAID0=y
466CONFIG_MD_RAID1=y 505CONFIG_MD_RAID1=y
@@ -475,13 +514,8 @@ CONFIG_DM_SNAPSHOT=m
475CONFIG_DM_MIRROR=m 514CONFIG_DM_MIRROR=m
476CONFIG_DM_ZERO=m 515CONFIG_DM_ZERO=m
477CONFIG_DM_MULTIPATH=m 516CONFIG_DM_MULTIPATH=m
478# CONFIG_DM_MULTIPATH_EMC is not set
479# CONFIG_DM_MULTIPATH_RDAC is not set
480# CONFIG_DM_DELAY is not set 517# CONFIG_DM_DELAY is not set
481 518# CONFIG_DM_UEVENT is not set
482#
483# Fusion MPT device support
484#
485CONFIG_FUSION=y 519CONFIG_FUSION=y
486CONFIG_FUSION_SPI=m 520CONFIG_FUSION_SPI=m
487# CONFIG_FUSION_FC is not set 521# CONFIG_FUSION_FC is not set
@@ -493,20 +527,40 @@ CONFIG_FUSION_CTL=m
493# 527#
494# IEEE 1394 (FireWire) support 528# IEEE 1394 (FireWire) support
495# 529#
530
531#
532# Enable only one of the two stacks, unless you know what you are doing
533#
496# CONFIG_FIREWIRE is not set 534# CONFIG_FIREWIRE is not set
497# CONFIG_IEEE1394 is not set 535# CONFIG_IEEE1394 is not set
498# CONFIG_I2O is not set 536# CONFIG_I2O is not set
499CONFIG_NETDEVICES=y 537CONFIG_NETDEVICES=y
500# CONFIG_NETDEVICES_MULTIQUEUE is not set
501CONFIG_DUMMY=m 538CONFIG_DUMMY=m
502CONFIG_BONDING=m 539CONFIG_BONDING=m
503# CONFIG_MACVLAN is not set 540# CONFIG_MACVLAN is not set
504# CONFIG_EQUALIZER is not set 541# CONFIG_EQUALIZER is not set
505CONFIG_TUN=m 542CONFIG_TUN=m
506# CONFIG_VETH is not set 543# CONFIG_VETH is not set
507# CONFIG_IP1000 is not set
508# CONFIG_ARCNET is not set 544# CONFIG_ARCNET is not set
509# CONFIG_PHYLIB is not set 545CONFIG_PHYLIB=m
546
547#
548# MII PHY device drivers
549#
550# CONFIG_MARVELL_PHY is not set
551# CONFIG_DAVICOM_PHY is not set
552# CONFIG_QSEMI_PHY is not set
553# CONFIG_LXT_PHY is not set
554# CONFIG_CICADA_PHY is not set
555# CONFIG_VITESSE_PHY is not set
556# CONFIG_SMSC_PHY is not set
557# CONFIG_BROADCOM_PHY is not set
558# CONFIG_ICPLUS_PHY is not set
559# CONFIG_REALTEK_PHY is not set
560# CONFIG_NATIONAL_PHY is not set
561# CONFIG_STE10XP is not set
562# CONFIG_LSI_ET1011C_PHY is not set
563# CONFIG_MDIO_BITBANG is not set
510CONFIG_NET_ETHERNET=y 564CONFIG_NET_ETHERNET=y
511CONFIG_MII=m 565CONFIG_MII=m
512# CONFIG_HAPPYMEAL is not set 566# CONFIG_HAPPYMEAL is not set
@@ -528,33 +582,38 @@ CONFIG_TULIP_MMIO=y
528# CONFIG_IBM_NEW_EMAC_RGMII is not set 582# CONFIG_IBM_NEW_EMAC_RGMII is not set
529# CONFIG_IBM_NEW_EMAC_TAH is not set 583# CONFIG_IBM_NEW_EMAC_TAH is not set
530# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 584# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
585# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
586# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
587# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
531CONFIG_NET_PCI=y 588CONFIG_NET_PCI=y
532# CONFIG_PCNET32 is not set 589# CONFIG_PCNET32 is not set
533# CONFIG_AMD8111_ETH is not set 590# CONFIG_AMD8111_ETH is not set
534# CONFIG_ADAPTEC_STARFIRE is not set 591# CONFIG_ADAPTEC_STARFIRE is not set
535# CONFIG_B44 is not set 592# CONFIG_B44 is not set
536# CONFIG_FORCEDETH is not set 593# CONFIG_FORCEDETH is not set
537# CONFIG_EEPRO100 is not set
538CONFIG_E100=m 594CONFIG_E100=m
539# CONFIG_FEALNX is not set 595# CONFIG_FEALNX is not set
540# CONFIG_NATSEMI is not set 596# CONFIG_NATSEMI is not set
541# CONFIG_NE2K_PCI is not set 597# CONFIG_NE2K_PCI is not set
542# CONFIG_8139CP is not set 598# CONFIG_8139CP is not set
543# CONFIG_8139TOO is not set 599# CONFIG_8139TOO is not set
600# CONFIG_R6040 is not set
544# CONFIG_SIS900 is not set 601# CONFIG_SIS900 is not set
545# CONFIG_EPIC100 is not set 602# CONFIG_EPIC100 is not set
603# CONFIG_SMSC9420 is not set
546# CONFIG_SUNDANCE is not set 604# CONFIG_SUNDANCE is not set
547# CONFIG_TLAN is not set 605# CONFIG_TLAN is not set
548# CONFIG_VIA_RHINE is not set 606# CONFIG_VIA_RHINE is not set
549# CONFIG_SC92031 is not set 607# CONFIG_SC92031 is not set
608# CONFIG_ATL2 is not set
550CONFIG_NETDEV_1000=y 609CONFIG_NETDEV_1000=y
551CONFIG_ACENIC=m 610CONFIG_ACENIC=m
552# CONFIG_ACENIC_OMIT_TIGON_I is not set 611# CONFIG_ACENIC_OMIT_TIGON_I is not set
553# CONFIG_DL2K is not set 612# CONFIG_DL2K is not set
554CONFIG_E1000=m 613CONFIG_E1000=m
555# CONFIG_E1000_NAPI is not set
556# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
557# CONFIG_E1000E is not set 614# CONFIG_E1000E is not set
615# CONFIG_IP1000 is not set
616# CONFIG_IGB is not set
558# CONFIG_NS83820 is not set 617# CONFIG_NS83820 is not set
559# CONFIG_HAMACHI is not set 618# CONFIG_HAMACHI is not set
560# CONFIG_YELLOWFIN is not set 619# CONFIG_YELLOWFIN is not set
@@ -562,23 +621,31 @@ CONFIG_E1000=m
562# CONFIG_SIS190 is not set 621# CONFIG_SIS190 is not set
563# CONFIG_SKGE is not set 622# CONFIG_SKGE is not set
564# CONFIG_SKY2 is not set 623# CONFIG_SKY2 is not set
565# CONFIG_SK98LIN is not set
566# CONFIG_VIA_VELOCITY is not set 624# CONFIG_VIA_VELOCITY is not set
567CONFIG_TIGON3=m 625CONFIG_TIGON3=m
568# CONFIG_BNX2 is not set 626# CONFIG_BNX2 is not set
569# CONFIG_QLA3XXX is not set 627# CONFIG_QLA3XXX is not set
570# CONFIG_ATL1 is not set 628# CONFIG_ATL1 is not set
629# CONFIG_ATL1E is not set
630# CONFIG_ATL1C is not set
631# CONFIG_JME is not set
571CONFIG_NETDEV_10000=y 632CONFIG_NETDEV_10000=y
572# CONFIG_CHELSIO_T1 is not set 633# CONFIG_CHELSIO_T1 is not set
634CONFIG_CHELSIO_T3_DEPENDS=y
573# CONFIG_CHELSIO_T3 is not set 635# CONFIG_CHELSIO_T3 is not set
636# CONFIG_ENIC is not set
574# CONFIG_IXGBE is not set 637# CONFIG_IXGBE is not set
575# CONFIG_IXGB is not set 638# CONFIG_IXGB is not set
576# CONFIG_S2IO is not set 639# CONFIG_S2IO is not set
577# CONFIG_MYRI10GE is not set 640# CONFIG_MYRI10GE is not set
578# CONFIG_NETXEN_NIC is not set 641# CONFIG_NETXEN_NIC is not set
579# CONFIG_NIU is not set 642# CONFIG_NIU is not set
643# CONFIG_MLX4_EN is not set
580# CONFIG_MLX4_CORE is not set 644# CONFIG_MLX4_CORE is not set
581# CONFIG_TEHUTI is not set 645# CONFIG_TEHUTI is not set
646# CONFIG_BNX2X is not set
647# CONFIG_QLGE is not set
648# CONFIG_SFC is not set
582# CONFIG_TR is not set 649# CONFIG_TR is not set
583 650
584# 651#
@@ -586,6 +653,11 @@ CONFIG_NETDEV_10000=y
586# 653#
587# CONFIG_WLAN_PRE80211 is not set 654# CONFIG_WLAN_PRE80211 is not set
588# CONFIG_WLAN_80211 is not set 655# CONFIG_WLAN_80211 is not set
656# CONFIG_IWLWIFI_LEDS is not set
657
658#
659# Enable WiMAX (Networking options) to see the WiMAX drivers
660#
589 661
590# 662#
591# USB Network Adapters 663# USB Network Adapters
@@ -594,7 +666,6 @@ CONFIG_NETDEV_10000=y
594# CONFIG_USB_KAWETH is not set 666# CONFIG_USB_KAWETH is not set
595# CONFIG_USB_PEGASUS is not set 667# CONFIG_USB_PEGASUS is not set
596# CONFIG_USB_RTL8150 is not set 668# CONFIG_USB_RTL8150 is not set
597# CONFIG_USB_USBNET_MII is not set
598# CONFIG_USB_USBNET is not set 669# CONFIG_USB_USBNET is not set
599# CONFIG_WAN is not set 670# CONFIG_WAN is not set
600# CONFIG_FDDI is not set 671# CONFIG_FDDI is not set
@@ -612,7 +683,6 @@ CONFIG_PPPOE=m
612# CONFIG_SLIP is not set 683# CONFIG_SLIP is not set
613CONFIG_SLHC=m 684CONFIG_SLHC=m
614# CONFIG_NET_FC is not set 685# CONFIG_NET_FC is not set
615# CONFIG_SHAPER is not set
616# CONFIG_NETCONSOLE is not set 686# CONFIG_NETCONSOLE is not set
617# CONFIG_NETPOLL is not set 687# CONFIG_NETPOLL is not set
618# CONFIG_NET_POLL_CONTROLLER is not set 688# CONFIG_NET_POLL_CONTROLLER is not set
@@ -634,7 +704,6 @@ CONFIG_INPUT_MOUSEDEV=y
634CONFIG_INPUT_MOUSEDEV_SCREEN_X=1600 704CONFIG_INPUT_MOUSEDEV_SCREEN_X=1600
635CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200 705CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200
636# CONFIG_INPUT_JOYDEV is not set 706# CONFIG_INPUT_JOYDEV is not set
637# CONFIG_INPUT_TSDEV is not set
638# CONFIG_INPUT_EVDEV is not set 707# CONFIG_INPUT_EVDEV is not set
639# CONFIG_INPUT_EVBUG is not set 708# CONFIG_INPUT_EVBUG is not set
640 709
@@ -652,6 +721,7 @@ CONFIG_INPUT_MOUSE=y
652# CONFIG_MOUSE_PS2 is not set 721# CONFIG_MOUSE_PS2 is not set
653# CONFIG_MOUSE_SERIAL is not set 722# CONFIG_MOUSE_SERIAL is not set
654# CONFIG_MOUSE_APPLETOUCH is not set 723# CONFIG_MOUSE_APPLETOUCH is not set
724# CONFIG_MOUSE_BCM5974 is not set
655# CONFIG_MOUSE_VSXXXAA is not set 725# CONFIG_MOUSE_VSXXXAA is not set
656# CONFIG_INPUT_JOYSTICK is not set 726# CONFIG_INPUT_JOYSTICK is not set
657# CONFIG_INPUT_TABLET is not set 727# CONFIG_INPUT_TABLET is not set
@@ -672,10 +742,13 @@ CONFIG_SERIO_LIBPS2=m
672# Character devices 742# Character devices
673# 743#
674CONFIG_VT=y 744CONFIG_VT=y
745CONFIG_CONSOLE_TRANSLATIONS=y
675CONFIG_VT_CONSOLE=y 746CONFIG_VT_CONSOLE=y
676CONFIG_HW_CONSOLE=y 747CONFIG_HW_CONSOLE=y
677# CONFIG_VT_HW_CONSOLE_BINDING is not set 748# CONFIG_VT_HW_CONSOLE_BINDING is not set
749CONFIG_DEVKMEM=y
678# CONFIG_SERIAL_NONSTANDARD is not set 750# CONFIG_SERIAL_NONSTANDARD is not set
751# CONFIG_NOZOMI is not set
679 752
680# 753#
681# Serial drivers 754# Serial drivers
@@ -699,72 +772,77 @@ CONFIG_SERIAL_CORE=y
699CONFIG_SERIAL_CORE_CONSOLE=y 772CONFIG_SERIAL_CORE_CONSOLE=y
700# CONFIG_SERIAL_JSM is not set 773# CONFIG_SERIAL_JSM is not set
701CONFIG_UNIX98_PTYS=y 774CONFIG_UNIX98_PTYS=y
775# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
702CONFIG_LEGACY_PTYS=y 776CONFIG_LEGACY_PTYS=y
703CONFIG_LEGACY_PTY_COUNT=256 777CONFIG_LEGACY_PTY_COUNT=256
704# CONFIG_IPMI_HANDLER is not set 778# CONFIG_IPMI_HANDLER is not set
705# CONFIG_WATCHDOG is not set
706# CONFIG_HW_RANDOM is not set 779# CONFIG_HW_RANDOM is not set
707CONFIG_GEN_RTC=y
708CONFIG_GEN_RTC_X=y
709# CONFIG_R3964 is not set 780# CONFIG_R3964 is not set
710# CONFIG_APPLICOM is not set 781# CONFIG_APPLICOM is not set
711# CONFIG_AGP is not set
712# CONFIG_DRM is not set
713CONFIG_RAW_DRIVER=y 782CONFIG_RAW_DRIVER=y
714CONFIG_MAX_RAW_DEVS=256 783CONFIG_MAX_RAW_DEVS=256
715# CONFIG_TCG_TPM is not set 784# CONFIG_TCG_TPM is not set
716CONFIG_DEVPORT=y 785CONFIG_DEVPORT=y
717# CONFIG_I2C is not set 786# CONFIG_I2C is not set
718
719#
720# SPI support
721#
722# CONFIG_SPI is not set 787# CONFIG_SPI is not set
723# CONFIG_SPI_MASTER is not set
724# CONFIG_W1 is not set 788# CONFIG_W1 is not set
725# CONFIG_POWER_SUPPLY is not set 789# CONFIG_POWER_SUPPLY is not set
726# CONFIG_HWMON is not set 790# CONFIG_HWMON is not set
791# CONFIG_THERMAL is not set
792# CONFIG_THERMAL_HWMON is not set
793# CONFIG_WATCHDOG is not set
794CONFIG_SSB_POSSIBLE=y
727 795
728# 796#
729# Sonics Silicon Backplane 797# Sonics Silicon Backplane
730# 798#
731CONFIG_SSB_POSSIBLE=y
732# CONFIG_SSB is not set 799# CONFIG_SSB is not set
733 800
734# 801#
735# Multifunction device drivers 802# Multifunction device drivers
736# 803#
804# CONFIG_MFD_CORE is not set
737# CONFIG_MFD_SM501 is not set 805# CONFIG_MFD_SM501 is not set
806# CONFIG_HTC_PASIC3 is not set
807# CONFIG_MFD_TMIO is not set
808# CONFIG_REGULATOR is not set
738 809
739# 810#
740# Multimedia devices 811# Multimedia devices
741# 812#
813
814#
815# Multimedia core support
816#
742# CONFIG_VIDEO_DEV is not set 817# CONFIG_VIDEO_DEV is not set
743# CONFIG_DVB_CORE is not set 818# CONFIG_DVB_CORE is not set
744# CONFIG_DAB is not set 819# CONFIG_VIDEO_MEDIA is not set
745 820
746# 821#
747# Graphics support 822# Multimedia drivers
748# 823#
749# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 824# CONFIG_DAB is not set
750 825
751# 826#
752# Display device support 827# Graphics support
753# 828#
754# CONFIG_DISPLAY_SUPPORT is not set 829# CONFIG_AGP is not set
830# CONFIG_DRM is not set
755# CONFIG_VGASTATE is not set 831# CONFIG_VGASTATE is not set
756CONFIG_VIDEO_OUTPUT_CONTROL=m 832CONFIG_VIDEO_OUTPUT_CONTROL=m
757CONFIG_FB=y 833CONFIG_FB=y
758# CONFIG_FIRMWARE_EDID is not set 834# CONFIG_FIRMWARE_EDID is not set
759# CONFIG_FB_DDC is not set 835# CONFIG_FB_DDC is not set
836# CONFIG_FB_BOOT_VESA_SUPPORT is not set
760CONFIG_FB_CFB_FILLRECT=y 837CONFIG_FB_CFB_FILLRECT=y
761CONFIG_FB_CFB_COPYAREA=y 838CONFIG_FB_CFB_COPYAREA=y
762CONFIG_FB_CFB_IMAGEBLIT=y 839CONFIG_FB_CFB_IMAGEBLIT=y
840# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
763# CONFIG_FB_SYS_FILLRECT is not set 841# CONFIG_FB_SYS_FILLRECT is not set
764# CONFIG_FB_SYS_COPYAREA is not set 842# CONFIG_FB_SYS_COPYAREA is not set
765# CONFIG_FB_SYS_IMAGEBLIT is not set 843# CONFIG_FB_SYS_IMAGEBLIT is not set
844# CONFIG_FB_FOREIGN_ENDIAN is not set
766# CONFIG_FB_SYS_FOPS is not set 845# CONFIG_FB_SYS_FOPS is not set
767CONFIG_FB_DEFERRED_IO=y
768# CONFIG_FB_SVGALIB is not set 846# CONFIG_FB_SVGALIB is not set
769# CONFIG_FB_MACMODES is not set 847# CONFIG_FB_MACMODES is not set
770# CONFIG_FB_BACKLIGHT is not set 848# CONFIG_FB_BACKLIGHT is not set
@@ -790,6 +868,7 @@ CONFIG_FB_STI=y
790# CONFIG_FB_S3 is not set 868# CONFIG_FB_S3 is not set
791# CONFIG_FB_SAVAGE is not set 869# CONFIG_FB_SAVAGE is not set
792# CONFIG_FB_SIS is not set 870# CONFIG_FB_SIS is not set
871# CONFIG_FB_VIA is not set
793# CONFIG_FB_NEOMAGIC is not set 872# CONFIG_FB_NEOMAGIC is not set
794# CONFIG_FB_KYRO is not set 873# CONFIG_FB_KYRO is not set
795# CONFIG_FB_3DFX is not set 874# CONFIG_FB_3DFX is not set
@@ -798,7 +877,16 @@ CONFIG_FB_STI=y
798# CONFIG_FB_TRIDENT is not set 877# CONFIG_FB_TRIDENT is not set
799# CONFIG_FB_ARK is not set 878# CONFIG_FB_ARK is not set
800# CONFIG_FB_PM3 is not set 879# CONFIG_FB_PM3 is not set
880# CONFIG_FB_CARMINE is not set
801# CONFIG_FB_VIRTUAL is not set 881# CONFIG_FB_VIRTUAL is not set
882# CONFIG_FB_METRONOME is not set
883# CONFIG_FB_MB862XX is not set
884# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
885
886#
887# Display device support
888#
889# CONFIG_DISPLAY_SUPPORT is not set
802 890
803# 891#
804# Console display driver support 892# Console display driver support
@@ -818,15 +906,8 @@ CONFIG_LOGO=y
818# CONFIG_LOGO_LINUX_VGA16 is not set 906# CONFIG_LOGO_LINUX_VGA16 is not set
819# CONFIG_LOGO_LINUX_CLUT224 is not set 907# CONFIG_LOGO_LINUX_CLUT224 is not set
820CONFIG_LOGO_PARISC_CLUT224=y 908CONFIG_LOGO_PARISC_CLUT224=y
821
822#
823# Sound
824#
825CONFIG_SOUND=y 909CONFIG_SOUND=y
826 910CONFIG_SOUND_OSS_CORE=y
827#
828# Advanced Linux Sound Architecture
829#
830CONFIG_SND=y 911CONFIG_SND=y
831CONFIG_SND_TIMER=y 912CONFIG_SND_TIMER=y
832CONFIG_SND_PCM=y 913CONFIG_SND_PCM=y
@@ -842,20 +923,16 @@ CONFIG_SND_SUPPORT_OLD_API=y
842CONFIG_SND_VERBOSE_PROCFS=y 923CONFIG_SND_VERBOSE_PROCFS=y
843# CONFIG_SND_VERBOSE_PRINTK is not set 924# CONFIG_SND_VERBOSE_PRINTK is not set
844# CONFIG_SND_DEBUG is not set 925# CONFIG_SND_DEBUG is not set
845 926CONFIG_SND_VMASTER=y
846#
847# Generic devices
848#
849CONFIG_SND_AC97_CODEC=y 927CONFIG_SND_AC97_CODEC=y
928CONFIG_SND_DRIVERS=y
850# CONFIG_SND_DUMMY is not set 929# CONFIG_SND_DUMMY is not set
851# CONFIG_SND_VIRMIDI is not set 930# CONFIG_SND_VIRMIDI is not set
852# CONFIG_SND_MTPAV is not set 931# CONFIG_SND_MTPAV is not set
853# CONFIG_SND_SERIAL_U16550 is not set 932# CONFIG_SND_SERIAL_U16550 is not set
854# CONFIG_SND_MPU401 is not set 933# CONFIG_SND_MPU401 is not set
855 934# CONFIG_SND_AC97_POWER_SAVE is not set
856# 935CONFIG_SND_PCI=y
857# PCI devices
858#
859CONFIG_SND_AD1889=y 936CONFIG_SND_AD1889=y
860# CONFIG_SND_ALS300 is not set 937# CONFIG_SND_ALS300 is not set
861# CONFIG_SND_ALI5451 is not set 938# CONFIG_SND_ALI5451 is not set
@@ -864,10 +941,12 @@ CONFIG_SND_AD1889=y
864# CONFIG_SND_AU8810 is not set 941# CONFIG_SND_AU8810 is not set
865# CONFIG_SND_AU8820 is not set 942# CONFIG_SND_AU8820 is not set
866# CONFIG_SND_AU8830 is not set 943# CONFIG_SND_AU8830 is not set
944# CONFIG_SND_AW2 is not set
867# CONFIG_SND_AZT3328 is not set 945# CONFIG_SND_AZT3328 is not set
868# CONFIG_SND_BT87X is not set 946# CONFIG_SND_BT87X is not set
869# CONFIG_SND_CA0106 is not set 947# CONFIG_SND_CA0106 is not set
870# CONFIG_SND_CMIPCI is not set 948# CONFIG_SND_CMIPCI is not set
949# CONFIG_SND_OXYGEN is not set
871# CONFIG_SND_CS4281 is not set 950# CONFIG_SND_CS4281 is not set
872# CONFIG_SND_CS46XX is not set 951# CONFIG_SND_CS46XX is not set
873# CONFIG_SND_DARLA20 is not set 952# CONFIG_SND_DARLA20 is not set
@@ -892,6 +971,7 @@ CONFIG_SND_AD1889=y
892# CONFIG_SND_HDA_INTEL is not set 971# CONFIG_SND_HDA_INTEL is not set
893# CONFIG_SND_HDSP is not set 972# CONFIG_SND_HDSP is not set
894# CONFIG_SND_HDSPM is not set 973# CONFIG_SND_HDSPM is not set
974# CONFIG_SND_HIFIER is not set
895# CONFIG_SND_ICE1712 is not set 975# CONFIG_SND_ICE1712 is not set
896# CONFIG_SND_ICE1724 is not set 976# CONFIG_SND_ICE1724 is not set
897# CONFIG_SND_INTEL8X0 is not set 977# CONFIG_SND_INTEL8X0 is not set
@@ -909,47 +989,59 @@ CONFIG_SND_AD1889=y
909# CONFIG_SND_TRIDENT is not set 989# CONFIG_SND_TRIDENT is not set
910# CONFIG_SND_VIA82XX is not set 990# CONFIG_SND_VIA82XX is not set
911# CONFIG_SND_VIA82XX_MODEM is not set 991# CONFIG_SND_VIA82XX_MODEM is not set
992# CONFIG_SND_VIRTUOSO is not set
912# CONFIG_SND_VX222 is not set 993# CONFIG_SND_VX222 is not set
913# CONFIG_SND_YMFPCI is not set 994# CONFIG_SND_YMFPCI is not set
914# CONFIG_SND_AC97_POWER_SAVE is not set 995CONFIG_SND_USB=y
915
916#
917# USB devices
918#
919# CONFIG_SND_USB_AUDIO is not set 996# CONFIG_SND_USB_AUDIO is not set
920# CONFIG_SND_USB_CAIAQ is not set 997# CONFIG_SND_USB_CAIAQ is not set
921
922#
923# System on Chip audio support
924#
925# CONFIG_SND_SOC is not set 998# CONFIG_SND_SOC is not set
926
927#
928# SoC Audio support for SuperH
929#
930
931#
932# Open Sound System
933#
934# CONFIG_SOUND_PRIME is not set 999# CONFIG_SOUND_PRIME is not set
935CONFIG_AC97_BUS=y 1000CONFIG_AC97_BUS=y
936CONFIG_HID_SUPPORT=y 1001CONFIG_HID_SUPPORT=y
937CONFIG_HID=y 1002CONFIG_HID=y
938# CONFIG_HID_DEBUG is not set 1003# CONFIG_HID_DEBUG is not set
1004# CONFIG_HIDRAW is not set
939 1005
940# 1006#
941# USB Input Devices 1007# USB Input Devices
942# 1008#
943CONFIG_USB_HID=y 1009CONFIG_USB_HID=y
944# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1010# CONFIG_HID_PID is not set
945# CONFIG_HID_FF is not set
946CONFIG_USB_HIDDEV=y 1011CONFIG_USB_HIDDEV=y
1012
1013#
1014# Special HID drivers
1015#
1016CONFIG_HID_COMPAT=y
1017# CONFIG_HID_A4TECH is not set
1018# CONFIG_HID_APPLE is not set
1019# CONFIG_HID_BELKIN is not set
1020# CONFIG_HID_CHERRY is not set
1021# CONFIG_HID_CHICONY is not set
1022# CONFIG_HID_CYPRESS is not set
1023# CONFIG_HID_EZKEY is not set
1024# CONFIG_HID_GYRATION is not set
1025# CONFIG_HID_LOGITECH is not set
1026# CONFIG_HID_MICROSOFT is not set
1027# CONFIG_HID_MONTEREY is not set
1028# CONFIG_HID_NTRIG is not set
1029# CONFIG_HID_PANTHERLORD is not set
1030# CONFIG_HID_PETALYNX is not set
1031# CONFIG_HID_SAMSUNG is not set
1032# CONFIG_HID_SONY is not set
1033# CONFIG_HID_SUNPLUS is not set
1034# CONFIG_GREENASIA_FF is not set
1035# CONFIG_HID_TOPSEED is not set
1036# CONFIG_THRUSTMASTER_FF is not set
1037# CONFIG_ZEROPLUS_FF is not set
947CONFIG_USB_SUPPORT=y 1038CONFIG_USB_SUPPORT=y
948CONFIG_USB_ARCH_HAS_HCD=y 1039CONFIG_USB_ARCH_HAS_HCD=y
949CONFIG_USB_ARCH_HAS_OHCI=y 1040CONFIG_USB_ARCH_HAS_OHCI=y
950CONFIG_USB_ARCH_HAS_EHCI=y 1041CONFIG_USB_ARCH_HAS_EHCI=y
951CONFIG_USB=y 1042CONFIG_USB=y
952CONFIG_USB_DEBUG=y 1043CONFIG_USB_DEBUG=y
1044# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
953 1045
954# 1046#
955# Miscellaneous USB options 1047# Miscellaneous USB options
@@ -958,12 +1050,20 @@ CONFIG_USB_DEVICEFS=y
958CONFIG_USB_DEVICE_CLASS=y 1050CONFIG_USB_DEVICE_CLASS=y
959# CONFIG_USB_DYNAMIC_MINORS is not set 1051# CONFIG_USB_DYNAMIC_MINORS is not set
960# CONFIG_USB_OTG is not set 1052# CONFIG_USB_OTG is not set
1053# CONFIG_USB_OTG_WHITELIST is not set
1054# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1055# CONFIG_USB_MON is not set
1056# CONFIG_USB_WUSB is not set
1057# CONFIG_USB_WUSB_CBAF is not set
961 1058
962# 1059#
963# USB Host Controller Drivers 1060# USB Host Controller Drivers
964# 1061#
1062# CONFIG_USB_C67X00_HCD is not set
965# CONFIG_USB_EHCI_HCD is not set 1063# CONFIG_USB_EHCI_HCD is not set
1064# CONFIG_USB_OXU210HP_HCD is not set
966# CONFIG_USB_ISP116X_HCD is not set 1065# CONFIG_USB_ISP116X_HCD is not set
1066# CONFIG_USB_ISP1760_HCD is not set
967CONFIG_USB_OHCI_HCD=y 1067CONFIG_USB_OHCI_HCD=y
968# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1068# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
969# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1069# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -971,32 +1071,37 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
971# CONFIG_USB_UHCI_HCD is not set 1071# CONFIG_USB_UHCI_HCD is not set
972# CONFIG_USB_SL811_HCD is not set 1072# CONFIG_USB_SL811_HCD is not set
973# CONFIG_USB_R8A66597_HCD is not set 1073# CONFIG_USB_R8A66597_HCD is not set
1074# CONFIG_USB_WHCI_HCD is not set
1075# CONFIG_USB_HWA_HCD is not set
974 1076
975# 1077#
976# USB Device Class drivers 1078# USB Device Class drivers
977# 1079#
978# CONFIG_USB_ACM is not set 1080# CONFIG_USB_ACM is not set
979CONFIG_USB_PRINTER=m 1081CONFIG_USB_PRINTER=m
1082# CONFIG_USB_WDM is not set
1083# CONFIG_USB_TMC is not set
980 1084
981# 1085#
982# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1086# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
983# 1087#
984 1088
985# 1089#
986# may also be needed; see USB_STORAGE Help for more information 1090# see USB_STORAGE Help for more information
987# 1091#
988CONFIG_USB_STORAGE=m 1092CONFIG_USB_STORAGE=m
989# CONFIG_USB_STORAGE_DEBUG is not set 1093# CONFIG_USB_STORAGE_DEBUG is not set
990# CONFIG_USB_STORAGE_DATAFAB is not set 1094# CONFIG_USB_STORAGE_DATAFAB is not set
991# CONFIG_USB_STORAGE_FREECOM is not set 1095# CONFIG_USB_STORAGE_FREECOM is not set
992# CONFIG_USB_STORAGE_ISD200 is not set 1096# CONFIG_USB_STORAGE_ISD200 is not set
993CONFIG_USB_STORAGE_DPCM=y
994CONFIG_USB_STORAGE_USBAT=y 1097CONFIG_USB_STORAGE_USBAT=y
995CONFIG_USB_STORAGE_SDDR09=y 1098CONFIG_USB_STORAGE_SDDR09=y
996CONFIG_USB_STORAGE_SDDR55=y 1099CONFIG_USB_STORAGE_SDDR55=y
997CONFIG_USB_STORAGE_JUMPSHOT=y 1100CONFIG_USB_STORAGE_JUMPSHOT=y
998# CONFIG_USB_STORAGE_ALAUDA is not set 1101# CONFIG_USB_STORAGE_ALAUDA is not set
1102# CONFIG_USB_STORAGE_ONETOUCH is not set
999# CONFIG_USB_STORAGE_KARMA is not set 1103# CONFIG_USB_STORAGE_KARMA is not set
1104# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1000# CONFIG_USB_LIBUSUAL is not set 1105# CONFIG_USB_LIBUSUAL is not set
1001 1106
1002# 1107#
@@ -1004,15 +1109,10 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
1004# 1109#
1005CONFIG_USB_MDC800=m 1110CONFIG_USB_MDC800=m
1006CONFIG_USB_MICROTEK=m 1111CONFIG_USB_MICROTEK=m
1007# CONFIG_USB_MON is not set
1008 1112
1009# 1113#
1010# USB port drivers 1114# USB port drivers
1011# 1115#
1012
1013#
1014# USB Serial Converter support
1015#
1016# CONFIG_USB_SERIAL is not set 1116# CONFIG_USB_SERIAL is not set
1017 1117
1018# 1118#
@@ -1021,7 +1121,7 @@ CONFIG_USB_MICROTEK=m
1021# CONFIG_USB_EMI62 is not set 1121# CONFIG_USB_EMI62 is not set
1022# CONFIG_USB_EMI26 is not set 1122# CONFIG_USB_EMI26 is not set
1023# CONFIG_USB_ADUTUX is not set 1123# CONFIG_USB_ADUTUX is not set
1024# CONFIG_USB_AUERSWALD is not set 1124# CONFIG_USB_SEVSEG is not set
1025# CONFIG_USB_RIO500 is not set 1125# CONFIG_USB_RIO500 is not set
1026CONFIG_USB_LEGOTOWER=m 1126CONFIG_USB_LEGOTOWER=m
1027# CONFIG_USB_LCD is not set 1127# CONFIG_USB_LCD is not set
@@ -1037,37 +1137,59 @@ CONFIG_USB_LEGOTOWER=m
1037# CONFIG_USB_TRANCEVIBRATOR is not set 1137# CONFIG_USB_TRANCEVIBRATOR is not set
1038# CONFIG_USB_IOWARRIOR is not set 1138# CONFIG_USB_IOWARRIOR is not set
1039# CONFIG_USB_TEST is not set 1139# CONFIG_USB_TEST is not set
1140# CONFIG_USB_ISIGHTFW is not set
1141# CONFIG_USB_VST is not set
1142# CONFIG_USB_GADGET is not set
1040 1143
1041# 1144#
1042# USB DSL modem support 1145# OTG and related infrastructure
1043#
1044
1045#
1046# USB Gadget Support
1047# 1146#
1048# CONFIG_USB_GADGET is not set 1147# CONFIG_UWB is not set
1049# CONFIG_MMC is not set 1148# CONFIG_MMC is not set
1149# CONFIG_MEMSTICK is not set
1050# CONFIG_NEW_LEDS is not set 1150# CONFIG_NEW_LEDS is not set
1151# CONFIG_ACCESSIBILITY is not set
1051# CONFIG_INFINIBAND is not set 1152# CONFIG_INFINIBAND is not set
1052# CONFIG_RTC_CLASS is not set 1153CONFIG_RTC_LIB=y
1154CONFIG_RTC_CLASS=y
1155CONFIG_RTC_HCTOSYS=y
1156CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1157# CONFIG_RTC_DEBUG is not set
1053 1158
1054# 1159#
1055# DMA Engine support 1160# RTC interfaces
1056# 1161#
1057# CONFIG_DMA_ENGINE is not set 1162CONFIG_RTC_INTF_SYSFS=y
1163CONFIG_RTC_INTF_PROC=y
1164CONFIG_RTC_INTF_DEV=y
1165# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1166# CONFIG_RTC_DRV_TEST is not set
1058 1167
1059# 1168#
1060# DMA Clients 1169# SPI RTC drivers
1061# 1170#
1062 1171
1063# 1172#
1064# DMA Devices 1173# Platform RTC drivers
1065# 1174#
1175# CONFIG_RTC_DRV_DS1286 is not set
1176# CONFIG_RTC_DRV_DS1511 is not set
1177# CONFIG_RTC_DRV_DS1553 is not set
1178# CONFIG_RTC_DRV_DS1742 is not set
1179# CONFIG_RTC_DRV_STK17TA8 is not set
1180# CONFIG_RTC_DRV_M48T86 is not set
1181# CONFIG_RTC_DRV_M48T35 is not set
1182# CONFIG_RTC_DRV_M48T59 is not set
1183# CONFIG_RTC_DRV_BQ4802 is not set
1184# CONFIG_RTC_DRV_V3020 is not set
1066 1185
1067# 1186#
1068# Userspace I/O 1187# on-CPU RTC drivers
1069# 1188#
1189CONFIG_RTC_DRV_PARISC=y
1190# CONFIG_DMADEVICES is not set
1070# CONFIG_UIO is not set 1191# CONFIG_UIO is not set
1192# CONFIG_STAGING is not set
1071 1193
1072# 1194#
1073# File systems 1195# File systems
@@ -1077,25 +1199,24 @@ CONFIG_EXT2_FS=y
1077# CONFIG_EXT2_FS_XIP is not set 1199# CONFIG_EXT2_FS_XIP is not set
1078CONFIG_EXT3_FS=y 1200CONFIG_EXT3_FS=y
1079# CONFIG_EXT3_FS_XATTR is not set 1201# CONFIG_EXT3_FS_XATTR is not set
1080# CONFIG_EXT4DEV_FS is not set 1202# CONFIG_EXT4_FS is not set
1081CONFIG_JBD=y 1203CONFIG_JBD=y
1082# CONFIG_JBD_DEBUG is not set 1204# CONFIG_JBD_DEBUG is not set
1083# CONFIG_REISERFS_FS is not set 1205# CONFIG_REISERFS_FS is not set
1084# CONFIG_JFS_FS is not set 1206# CONFIG_JFS_FS is not set
1085# CONFIG_FS_POSIX_ACL is not set 1207# CONFIG_FS_POSIX_ACL is not set
1208CONFIG_FILE_LOCKING=y
1086CONFIG_XFS_FS=m 1209CONFIG_XFS_FS=m
1087# CONFIG_XFS_QUOTA is not set 1210# CONFIG_XFS_QUOTA is not set
1088# CONFIG_XFS_SECURITY is not set
1089# CONFIG_XFS_POSIX_ACL is not set 1211# CONFIG_XFS_POSIX_ACL is not set
1090# CONFIG_XFS_RT is not set 1212# CONFIG_XFS_RT is not set
1091# CONFIG_GFS2_FS is not set 1213# CONFIG_XFS_DEBUG is not set
1092# CONFIG_OCFS2_FS is not set 1214# CONFIG_OCFS2_FS is not set
1093# CONFIG_MINIX_FS is not set 1215# CONFIG_BTRFS_FS is not set
1094# CONFIG_ROMFS_FS is not set 1216CONFIG_DNOTIFY=y
1095CONFIG_INOTIFY=y 1217CONFIG_INOTIFY=y
1096CONFIG_INOTIFY_USER=y 1218CONFIG_INOTIFY_USER=y
1097# CONFIG_QUOTA is not set 1219# CONFIG_QUOTA is not set
1098CONFIG_DNOTIFY=y
1099# CONFIG_AUTOFS_FS is not set 1220# CONFIG_AUTOFS_FS is not set
1100CONFIG_AUTOFS4_FS=y 1221CONFIG_AUTOFS4_FS=y
1101# CONFIG_FUSE_FS is not set 1222# CONFIG_FUSE_FS is not set
@@ -1124,16 +1245,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1124CONFIG_PROC_FS=y 1245CONFIG_PROC_FS=y
1125CONFIG_PROC_KCORE=y 1246CONFIG_PROC_KCORE=y
1126CONFIG_PROC_SYSCTL=y 1247CONFIG_PROC_SYSCTL=y
1248CONFIG_PROC_PAGE_MONITOR=y
1127CONFIG_SYSFS=y 1249CONFIG_SYSFS=y
1128CONFIG_TMPFS=y 1250CONFIG_TMPFS=y
1129# CONFIG_TMPFS_POSIX_ACL is not set 1251# CONFIG_TMPFS_POSIX_ACL is not set
1130# CONFIG_HUGETLB_PAGE is not set 1252# CONFIG_HUGETLB_PAGE is not set
1131CONFIG_RAMFS=y
1132# CONFIG_CONFIGFS_FS is not set 1253# CONFIG_CONFIGFS_FS is not set
1133 1254CONFIG_MISC_FILESYSTEMS=y
1134#
1135# Miscellaneous filesystems
1136#
1137# CONFIG_ADFS_FS is not set 1255# CONFIG_ADFS_FS is not set
1138# CONFIG_AFFS_FS is not set 1256# CONFIG_AFFS_FS is not set
1139# CONFIG_HFS_FS is not set 1257# CONFIG_HFS_FS is not set
@@ -1142,32 +1260,31 @@ CONFIG_RAMFS=y
1142# CONFIG_BFS_FS is not set 1260# CONFIG_BFS_FS is not set
1143# CONFIG_EFS_FS is not set 1261# CONFIG_EFS_FS is not set
1144# CONFIG_CRAMFS is not set 1262# CONFIG_CRAMFS is not set
1263# CONFIG_SQUASHFS is not set
1145# CONFIG_VXFS_FS is not set 1264# CONFIG_VXFS_FS is not set
1265# CONFIG_MINIX_FS is not set
1266# CONFIG_OMFS_FS is not set
1146# CONFIG_HPFS_FS is not set 1267# CONFIG_HPFS_FS is not set
1147# CONFIG_QNX4FS_FS is not set 1268# CONFIG_QNX4FS_FS is not set
1269# CONFIG_ROMFS_FS is not set
1148# CONFIG_SYSV_FS is not set 1270# CONFIG_SYSV_FS is not set
1149# CONFIG_UFS_FS is not set 1271# CONFIG_UFS_FS is not set
1150 1272CONFIG_NETWORK_FILESYSTEMS=y
1151#
1152# Network File Systems
1153#
1154CONFIG_NFS_FS=y 1273CONFIG_NFS_FS=y
1155CONFIG_NFS_V3=y 1274CONFIG_NFS_V3=y
1156# CONFIG_NFS_V3_ACL is not set 1275# CONFIG_NFS_V3_ACL is not set
1157# CONFIG_NFS_V4 is not set 1276# CONFIG_NFS_V4 is not set
1158# CONFIG_NFS_DIRECTIO is not set 1277CONFIG_ROOT_NFS=y
1159CONFIG_NFSD=y 1278CONFIG_NFSD=y
1160CONFIG_NFSD_V3=y 1279CONFIG_NFSD_V3=y
1161# CONFIG_NFSD_V3_ACL is not set 1280# CONFIG_NFSD_V3_ACL is not set
1162# CONFIG_NFSD_V4 is not set 1281# CONFIG_NFSD_V4 is not set
1163# CONFIG_NFSD_TCP is not set
1164CONFIG_ROOT_NFS=y
1165CONFIG_LOCKD=y 1282CONFIG_LOCKD=y
1166CONFIG_LOCKD_V4=y 1283CONFIG_LOCKD_V4=y
1167CONFIG_EXPORTFS=y 1284CONFIG_EXPORTFS=y
1168CONFIG_NFS_COMMON=y 1285CONFIG_NFS_COMMON=y
1169CONFIG_SUNRPC=y 1286CONFIG_SUNRPC=y
1170# CONFIG_SUNRPC_BIND34 is not set 1287# CONFIG_SUNRPC_REGISTER_V4 is not set
1171# CONFIG_RPCSEC_GSS_KRB5 is not set 1288# CONFIG_RPCSEC_GSS_KRB5 is not set
1172# CONFIG_RPCSEC_GSS_SPKM3 is not set 1289# CONFIG_RPCSEC_GSS_SPKM3 is not set
1173# CONFIG_SMB_FS is not set 1290# CONFIG_SMB_FS is not set
@@ -1181,10 +1298,6 @@ CONFIG_SUNRPC=y
1181# 1298#
1182# CONFIG_PARTITION_ADVANCED is not set 1299# CONFIG_PARTITION_ADVANCED is not set
1183CONFIG_MSDOS_PARTITION=y 1300CONFIG_MSDOS_PARTITION=y
1184
1185#
1186# Native Language Support
1187#
1188CONFIG_NLS=y 1301CONFIG_NLS=y
1189CONFIG_NLS_DEFAULT="iso8859-1" 1302CONFIG_NLS_DEFAULT="iso8859-1"
1190CONFIG_NLS_CODEPAGE_437=m 1303CONFIG_NLS_CODEPAGE_437=m
@@ -1225,33 +1338,28 @@ CONFIG_NLS_ISO8859_15=m
1225# CONFIG_NLS_KOI8_R is not set 1338# CONFIG_NLS_KOI8_R is not set
1226# CONFIG_NLS_KOI8_U is not set 1339# CONFIG_NLS_KOI8_U is not set
1227CONFIG_NLS_UTF8=m 1340CONFIG_NLS_UTF8=m
1228
1229#
1230# Distributed Lock Manager
1231#
1232# CONFIG_DLM is not set 1341# CONFIG_DLM is not set
1233 1342
1234# 1343#
1235# Profiling support
1236#
1237CONFIG_PROFILING=y
1238CONFIG_OPROFILE=m
1239
1240#
1241# Kernel hacking 1344# Kernel hacking
1242# 1345#
1243# CONFIG_PRINTK_TIME is not set 1346# CONFIG_PRINTK_TIME is not set
1347CONFIG_ENABLE_WARN_DEPRECATED=y
1244CONFIG_ENABLE_MUST_CHECK=y 1348CONFIG_ENABLE_MUST_CHECK=y
1349CONFIG_FRAME_WARN=1024
1245CONFIG_MAGIC_SYSRQ=y 1350CONFIG_MAGIC_SYSRQ=y
1246# CONFIG_UNUSED_SYMBOLS is not set 1351# CONFIG_UNUSED_SYMBOLS is not set
1247# CONFIG_DEBUG_FS is not set 1352CONFIG_DEBUG_FS=y
1248CONFIG_HEADERS_CHECK=y 1353CONFIG_HEADERS_CHECK=y
1249CONFIG_DEBUG_KERNEL=y 1354CONFIG_DEBUG_KERNEL=y
1250# CONFIG_DEBUG_SHIRQ is not set 1355# CONFIG_DEBUG_SHIRQ is not set
1251CONFIG_DETECT_SOFTLOCKUP=y 1356CONFIG_DETECT_SOFTLOCKUP=y
1357# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1358CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1252CONFIG_SCHED_DEBUG=y 1359CONFIG_SCHED_DEBUG=y
1253# CONFIG_SCHEDSTATS is not set 1360# CONFIG_SCHEDSTATS is not set
1254# CONFIG_TIMER_STATS is not set 1361# CONFIG_TIMER_STATS is not set
1362# CONFIG_DEBUG_OBJECTS is not set
1255# CONFIG_DEBUG_SLAB is not set 1363# CONFIG_DEBUG_SLAB is not set
1256# CONFIG_DEBUG_RT_MUTEXES is not set 1364# CONFIG_DEBUG_RT_MUTEXES is not set
1257# CONFIG_RT_MUTEX_TESTER is not set 1365# CONFIG_RT_MUTEX_TESTER is not set
@@ -1263,10 +1371,33 @@ CONFIG_DEBUG_MUTEXES=y
1263# CONFIG_DEBUG_BUGVERBOSE is not set 1371# CONFIG_DEBUG_BUGVERBOSE is not set
1264# CONFIG_DEBUG_INFO is not set 1372# CONFIG_DEBUG_INFO is not set
1265# CONFIG_DEBUG_VM is not set 1373# CONFIG_DEBUG_VM is not set
1374# CONFIG_DEBUG_WRITECOUNT is not set
1375# CONFIG_DEBUG_MEMORY_INIT is not set
1266# CONFIG_DEBUG_LIST is not set 1376# CONFIG_DEBUG_LIST is not set
1267CONFIG_FORCED_INLINING=y 1377# CONFIG_DEBUG_SG is not set
1378# CONFIG_DEBUG_NOTIFIERS is not set
1379# CONFIG_BOOT_PRINTK_DELAY is not set
1268# CONFIG_RCU_TORTURE_TEST is not set 1380# CONFIG_RCU_TORTURE_TEST is not set
1381# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1382# CONFIG_BACKTRACE_SELF_TEST is not set
1383# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1269# CONFIG_FAULT_INJECTION is not set 1384# CONFIG_FAULT_INJECTION is not set
1385# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1386CONFIG_NOP_TRACER=y
1387CONFIG_RING_BUFFER=y
1388CONFIG_TRACING=y
1389
1390#
1391# Tracers
1392#
1393# CONFIG_SCHED_TRACER is not set
1394# CONFIG_CONTEXT_SWITCH_TRACER is not set
1395# CONFIG_BOOT_TRACER is not set
1396# CONFIG_TRACE_BRANCH_PROFILING is not set
1397# CONFIG_FTRACE_STARTUP_TEST is not set
1398# CONFIG_BUILD_DOCSRC is not set
1399# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1400# CONFIG_SAMPLES is not set
1270CONFIG_DEBUG_RODATA=y 1401CONFIG_DEBUG_RODATA=y
1271 1402
1272# 1403#
@@ -1274,54 +1405,110 @@ CONFIG_DEBUG_RODATA=y
1274# 1405#
1275# CONFIG_KEYS is not set 1406# CONFIG_KEYS is not set
1276# CONFIG_SECURITY is not set 1407# CONFIG_SECURITY is not set
1408# CONFIG_SECURITYFS is not set
1409# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1277CONFIG_CRYPTO=y 1410CONFIG_CRYPTO=y
1411
1412#
1413# Crypto core or helper
1414#
1415# CONFIG_CRYPTO_FIPS is not set
1278CONFIG_CRYPTO_ALGAPI=m 1416CONFIG_CRYPTO_ALGAPI=m
1417CONFIG_CRYPTO_ALGAPI2=m
1418CONFIG_CRYPTO_AEAD2=m
1279CONFIG_CRYPTO_BLKCIPHER=m 1419CONFIG_CRYPTO_BLKCIPHER=m
1420CONFIG_CRYPTO_BLKCIPHER2=m
1421CONFIG_CRYPTO_HASH=m
1422CONFIG_CRYPTO_HASH2=m
1423CONFIG_CRYPTO_RNG2=m
1280CONFIG_CRYPTO_MANAGER=m 1424CONFIG_CRYPTO_MANAGER=m
1425CONFIG_CRYPTO_MANAGER2=m
1426# CONFIG_CRYPTO_GF128MUL is not set
1427CONFIG_CRYPTO_NULL=m
1428# CONFIG_CRYPTO_CRYPTD is not set
1429# CONFIG_CRYPTO_AUTHENC is not set
1430CONFIG_CRYPTO_TEST=m
1431
1432#
1433# Authenticated Encryption with Associated Data
1434#
1435# CONFIG_CRYPTO_CCM is not set
1436# CONFIG_CRYPTO_GCM is not set
1437# CONFIG_CRYPTO_SEQIV is not set
1438
1439#
1440# Block modes
1441#
1442CONFIG_CRYPTO_CBC=m
1443# CONFIG_CRYPTO_CTR is not set
1444# CONFIG_CRYPTO_CTS is not set
1445# CONFIG_CRYPTO_ECB is not set
1446# CONFIG_CRYPTO_LRW is not set
1447# CONFIG_CRYPTO_PCBC is not set
1448# CONFIG_CRYPTO_XTS is not set
1449
1450#
1451# Hash modes
1452#
1281# CONFIG_CRYPTO_HMAC is not set 1453# CONFIG_CRYPTO_HMAC is not set
1282# CONFIG_CRYPTO_XCBC is not set 1454# CONFIG_CRYPTO_XCBC is not set
1283CONFIG_CRYPTO_NULL=m 1455
1456#
1457# Digest
1458#
1459CONFIG_CRYPTO_CRC32C=m
1284# CONFIG_CRYPTO_MD4 is not set 1460# CONFIG_CRYPTO_MD4 is not set
1285CONFIG_CRYPTO_MD5=m 1461CONFIG_CRYPTO_MD5=m
1462# CONFIG_CRYPTO_MICHAEL_MIC is not set
1463# CONFIG_CRYPTO_RMD128 is not set
1464# CONFIG_CRYPTO_RMD160 is not set
1465# CONFIG_CRYPTO_RMD256 is not set
1466# CONFIG_CRYPTO_RMD320 is not set
1286# CONFIG_CRYPTO_SHA1 is not set 1467# CONFIG_CRYPTO_SHA1 is not set
1287# CONFIG_CRYPTO_SHA256 is not set 1468# CONFIG_CRYPTO_SHA256 is not set
1288# CONFIG_CRYPTO_SHA512 is not set 1469# CONFIG_CRYPTO_SHA512 is not set
1289# CONFIG_CRYPTO_WP512 is not set
1290# CONFIG_CRYPTO_TGR192 is not set 1470# CONFIG_CRYPTO_TGR192 is not set
1291# CONFIG_CRYPTO_GF128MUL is not set 1471# CONFIG_CRYPTO_WP512 is not set
1292# CONFIG_CRYPTO_ECB is not set 1472
1293CONFIG_CRYPTO_CBC=m 1473#
1294# CONFIG_CRYPTO_PCBC is not set 1474# Ciphers
1295# CONFIG_CRYPTO_LRW is not set 1475#
1296# CONFIG_CRYPTO_XTS is not set
1297# CONFIG_CRYPTO_CRYPTD is not set
1298CONFIG_CRYPTO_DES=m
1299# CONFIG_CRYPTO_FCRYPT is not set
1300CONFIG_CRYPTO_BLOWFISH=m
1301# CONFIG_CRYPTO_TWOFISH is not set
1302# CONFIG_CRYPTO_SERPENT is not set
1303# CONFIG_CRYPTO_AES is not set 1476# CONFIG_CRYPTO_AES is not set
1477# CONFIG_CRYPTO_ANUBIS is not set
1478# CONFIG_CRYPTO_ARC4 is not set
1479CONFIG_CRYPTO_BLOWFISH=m
1480# CONFIG_CRYPTO_CAMELLIA is not set
1304# CONFIG_CRYPTO_CAST5 is not set 1481# CONFIG_CRYPTO_CAST5 is not set
1305# CONFIG_CRYPTO_CAST6 is not set 1482# CONFIG_CRYPTO_CAST6 is not set
1306# CONFIG_CRYPTO_TEA is not set 1483CONFIG_CRYPTO_DES=m
1307# CONFIG_CRYPTO_ARC4 is not set 1484# CONFIG_CRYPTO_FCRYPT is not set
1308# CONFIG_CRYPTO_KHAZAD is not set 1485# CONFIG_CRYPTO_KHAZAD is not set
1309# CONFIG_CRYPTO_ANUBIS is not set 1486# CONFIG_CRYPTO_SALSA20 is not set
1310# CONFIG_CRYPTO_SEED is not set 1487# CONFIG_CRYPTO_SEED is not set
1488# CONFIG_CRYPTO_SERPENT is not set
1489# CONFIG_CRYPTO_TEA is not set
1490# CONFIG_CRYPTO_TWOFISH is not set
1491
1492#
1493# Compression
1494#
1311CONFIG_CRYPTO_DEFLATE=m 1495CONFIG_CRYPTO_DEFLATE=m
1312# CONFIG_CRYPTO_MICHAEL_MIC is not set 1496# CONFIG_CRYPTO_LZO is not set
1313CONFIG_CRYPTO_CRC32C=m 1497
1314# CONFIG_CRYPTO_CAMELLIA is not set 1498#
1315CONFIG_CRYPTO_TEST=m 1499# Random Number Generation
1316# CONFIG_CRYPTO_AUTHENC is not set 1500#
1501# CONFIG_CRYPTO_ANSI_CPRNG is not set
1317# CONFIG_CRYPTO_HW is not set 1502# CONFIG_CRYPTO_HW is not set
1318 1503
1319# 1504#
1320# Library routines 1505# Library routines
1321# 1506#
1322CONFIG_BITREVERSE=y 1507CONFIG_BITREVERSE=y
1508CONFIG_GENERIC_FIND_LAST_BIT=y
1323CONFIG_CRC_CCITT=m 1509CONFIG_CRC_CCITT=m
1324# CONFIG_CRC16 is not set 1510# CONFIG_CRC16 is not set
1511# CONFIG_CRC_T10DIF is not set
1325# CONFIG_CRC_ITU_T is not set 1512# CONFIG_CRC_ITU_T is not set
1326CONFIG_CRC32=y 1513CONFIG_CRC32=y
1327# CONFIG_CRC7 is not set 1514# CONFIG_CRC7 is not set
diff --git a/arch/parisc/configs/default_defconfig b/arch/parisc/configs/default_defconfig
index 448a757b06c6..283a96c1b5ea 100644
--- a/arch/parisc/configs/default_defconfig
+++ b/arch/parisc/configs/default_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.29-rc8
4# Fri Oct 12 20:54:57 2007 4# Fri Mar 13 01:32:59 2009
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -33,17 +33,35 @@ CONFIG_SYSVIPC_SYSCTL=y
33CONFIG_POSIX_MQUEUE=y 33CONFIG_POSIX_MQUEUE=y
34# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
35# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
37# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
37
38#
39# RCU Subsystem
40#
41CONFIG_CLASSIC_RCU=y
42# CONFIG_TREE_RCU is not set
43# CONFIG_PREEMPT_RCU is not set
44# CONFIG_TREE_RCU_TRACE is not set
45# CONFIG_PREEMPT_RCU_TRACE is not set
38CONFIG_IKCONFIG=y 46CONFIG_IKCONFIG=y
39CONFIG_IKCONFIG_PROC=y 47CONFIG_IKCONFIG_PROC=y
40CONFIG_LOG_BUF_SHIFT=16 48CONFIG_LOG_BUF_SHIFT=16
49# CONFIG_GROUP_SCHED is not set
50# CONFIG_CGROUPS is not set
41CONFIG_SYSFS_DEPRECATED=y 51CONFIG_SYSFS_DEPRECATED=y
52CONFIG_SYSFS_DEPRECATED_V2=y
42# CONFIG_RELAY is not set 53# CONFIG_RELAY is not set
54CONFIG_NAMESPACES=y
55# CONFIG_UTS_NS is not set
56# CONFIG_IPC_NS is not set
57# CONFIG_USER_NS is not set
58# CONFIG_PID_NS is not set
59# CONFIG_NET_NS is not set
43CONFIG_BLK_DEV_INITRD=y 60CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 61CONFIG_INITRAMFS_SOURCE=""
45CONFIG_CC_OPTIMIZE_FOR_SIZE=y 62CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 63CONFIG_SYSCTL=y
64CONFIG_ANON_INODES=y
47# CONFIG_EMBEDDED is not set 65# CONFIG_EMBEDDED is not set
48CONFIG_SYSCTL_SYSCALL=y 66CONFIG_SYSCTL_SYSCALL=y
49CONFIG_KALLSYMS=y 67CONFIG_KALLSYMS=y
@@ -55,29 +73,39 @@ CONFIG_BUG=y
55CONFIG_ELF_CORE=y 73CONFIG_ELF_CORE=y
56CONFIG_BASE_FULL=y 74CONFIG_BASE_FULL=y
57CONFIG_FUTEX=y 75CONFIG_FUTEX=y
58CONFIG_ANON_INODES=y
59CONFIG_EPOLL=y 76CONFIG_EPOLL=y
60CONFIG_SIGNALFD=y 77CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y
61CONFIG_EVENTFD=y 79CONFIG_EVENTFD=y
62CONFIG_SHMEM=y 80CONFIG_SHMEM=y
81CONFIG_AIO=y
63CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_PCI_QUIRKS=y
84CONFIG_COMPAT_BRK=y
64CONFIG_SLAB=y 85CONFIG_SLAB=y
65# CONFIG_SLUB is not set 86# CONFIG_SLUB is not set
66# CONFIG_SLOB is not set 87# CONFIG_SLOB is not set
88CONFIG_PROFILING=y
89CONFIG_TRACEPOINTS=y
90# CONFIG_MARKERS is not set
91CONFIG_OPROFILE=m
92CONFIG_HAVE_OPROFILE=y
93# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
94CONFIG_SLABINFO=y
67CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
68# CONFIG_TINY_SHMEM is not set
69CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
70CONFIG_MODULES=y 97CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set
71CONFIG_MODULE_UNLOAD=y 99CONFIG_MODULE_UNLOAD=y
72CONFIG_MODULE_FORCE_UNLOAD=y 100CONFIG_MODULE_FORCE_UNLOAD=y
73# CONFIG_MODVERSIONS is not set 101# CONFIG_MODVERSIONS is not set
74# CONFIG_MODULE_SRCVERSION_ALL is not set 102# CONFIG_MODULE_SRCVERSION_ALL is not set
75CONFIG_KMOD=y 103CONFIG_INIT_ALL_POSSIBLE=y
76CONFIG_BLOCK=y 104CONFIG_BLOCK=y
77# CONFIG_LBD is not set 105# CONFIG_LBD is not set
78# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
79# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set 107# CONFIG_BLK_DEV_BSG is not set
108# CONFIG_BLK_DEV_INTEGRITY is not set
81 109
82# 110#
83# IO Schedulers 111# IO Schedulers
@@ -91,6 +119,7 @@ CONFIG_DEFAULT_AS=y
91# CONFIG_DEFAULT_CFQ is not set 119# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
122# CONFIG_FREEZER is not set
94 123
95# 124#
96# Processor type and features 125# Processor type and features
@@ -114,17 +143,19 @@ CONFIG_HZ_250=y
114# CONFIG_HZ_300 is not set 143# CONFIG_HZ_300 is not set
115# CONFIG_HZ_1000 is not set 144# CONFIG_HZ_1000 is not set
116CONFIG_HZ=250 145CONFIG_HZ=250
146# CONFIG_SCHED_HRTICK is not set
117CONFIG_SELECT_MEMORY_MODEL=y 147CONFIG_SELECT_MEMORY_MODEL=y
118CONFIG_FLATMEM_MANUAL=y 148CONFIG_FLATMEM_MANUAL=y
119# CONFIG_DISCONTIGMEM_MANUAL is not set 149# CONFIG_DISCONTIGMEM_MANUAL is not set
120# CONFIG_SPARSEMEM_MANUAL is not set 150# CONFIG_SPARSEMEM_MANUAL is not set
121CONFIG_FLATMEM=y 151CONFIG_FLATMEM=y
122CONFIG_FLAT_NODE_MEM_MAP=y 152CONFIG_FLAT_NODE_MEM_MAP=y
123# CONFIG_SPARSEMEM_STATIC is not set 153CONFIG_PAGEFLAGS_EXTENDED=y
124CONFIG_SPLIT_PTLOCK_CPUS=4096 154CONFIG_SPLIT_PTLOCK_CPUS=4096
125# CONFIG_RESOURCES_64BIT is not set 155# CONFIG_PHYS_ADDR_T_64BIT is not set
126CONFIG_ZONE_DMA_FLAG=0 156CONFIG_ZONE_DMA_FLAG=0
127CONFIG_VIRT_TO_BUS=y 157CONFIG_VIRT_TO_BUS=y
158CONFIG_UNEVICTABLE_LRU=y
128# CONFIG_HPUX is not set 159# CONFIG_HPUX is not set
129 160
130# 161#
@@ -140,15 +171,14 @@ CONFIG_EISA_NAMES=y
140# CONFIG_ISA is not set 171# CONFIG_ISA is not set
141CONFIG_PCI=y 172CONFIG_PCI=y
142# CONFIG_ARCH_SUPPORTS_MSI is not set 173# CONFIG_ARCH_SUPPORTS_MSI is not set
174CONFIG_PCI_LEGACY=y
143# CONFIG_PCI_DEBUG is not set 175# CONFIG_PCI_DEBUG is not set
176# CONFIG_PCI_STUB is not set
144CONFIG_GSC_DINO=y 177CONFIG_GSC_DINO=y
145CONFIG_PCI_LBA=y 178CONFIG_PCI_LBA=y
146CONFIG_IOSAPIC=y 179CONFIG_IOSAPIC=y
147CONFIG_IOMMU_SBA=y 180CONFIG_IOMMU_SBA=y
148 181CONFIG_IOMMU_HELPER=y
149#
150# PCCARD (PCMCIA/CardBus) support
151#
152CONFIG_PCCARD=y 182CONFIG_PCCARD=y
153# CONFIG_PCMCIA_DEBUG is not set 183# CONFIG_PCMCIA_DEBUG is not set
154CONFIG_PCMCIA=y 184CONFIG_PCMCIA=y
@@ -183,16 +213,15 @@ CONFIG_PDC_STABLE=y
183# Executable file formats 213# Executable file formats
184# 214#
185CONFIG_BINFMT_ELF=y 215CONFIG_BINFMT_ELF=y
216# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
217# CONFIG_HAVE_AOUT is not set
186CONFIG_BINFMT_MISC=m 218CONFIG_BINFMT_MISC=m
187
188#
189# Networking
190#
191CONFIG_NET=y 219CONFIG_NET=y
192 220
193# 221#
194# Networking options 222# Networking options
195# 223#
224CONFIG_COMPAT_NET_DEV_OPS=y
196CONFIG_PACKET=y 225CONFIG_PACKET=y
197CONFIG_PACKET_MMAP=y 226CONFIG_PACKET_MMAP=y
198CONFIG_UNIX=y 227CONFIG_UNIX=y
@@ -200,6 +229,8 @@ CONFIG_XFRM=y
200CONFIG_XFRM_USER=m 229CONFIG_XFRM_USER=m
201# CONFIG_XFRM_SUB_POLICY is not set 230# CONFIG_XFRM_SUB_POLICY is not set
202# CONFIG_XFRM_MIGRATE is not set 231# CONFIG_XFRM_MIGRATE is not set
232# CONFIG_XFRM_STATISTICS is not set
233CONFIG_XFRM_IPCOMP=y
203CONFIG_NET_KEY=m 234CONFIG_NET_KEY=m
204# CONFIG_NET_KEY_MIGRATE is not set 235# CONFIG_NET_KEY_MIGRATE is not set
205CONFIG_INET=y 236CONFIG_INET=y
@@ -245,8 +276,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
245CONFIG_INET6_XFRM_MODE_BEET=y 276CONFIG_INET6_XFRM_MODE_BEET=y
246# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 277# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
247CONFIG_IPV6_SIT=y 278CONFIG_IPV6_SIT=y
279CONFIG_IPV6_NDISC_NODETYPE=y
248# CONFIG_IPV6_TUNNEL is not set 280# CONFIG_IPV6_TUNNEL is not set
249# CONFIG_IPV6_MULTIPLE_TABLES is not set 281# CONFIG_IPV6_MULTIPLE_TABLES is not set
282# CONFIG_IPV6_MROUTE is not set
250# CONFIG_NETWORK_SECMARK is not set 283# CONFIG_NETWORK_SECMARK is not set
251# CONFIG_NETFILTER is not set 284# CONFIG_NETFILTER is not set
252# CONFIG_IP_DCCP is not set 285# CONFIG_IP_DCCP is not set
@@ -254,6 +287,7 @@ CONFIG_IPV6_SIT=y
254# CONFIG_TIPC is not set 287# CONFIG_TIPC is not set
255# CONFIG_ATM is not set 288# CONFIG_ATM is not set
256# CONFIG_BRIDGE is not set 289# CONFIG_BRIDGE is not set
290# CONFIG_NET_DSA is not set
257# CONFIG_VLAN_8021Q is not set 291# CONFIG_VLAN_8021Q is not set
258# CONFIG_DECNET is not set 292# CONFIG_DECNET is not set
259CONFIG_LLC=m 293CONFIG_LLC=m
@@ -264,28 +298,26 @@ CONFIG_LLC2=m
264# CONFIG_LAPB is not set 298# CONFIG_LAPB is not set
265# CONFIG_ECONET is not set 299# CONFIG_ECONET is not set
266# CONFIG_WAN_ROUTER is not set 300# CONFIG_WAN_ROUTER is not set
267
268#
269# QoS and/or fair queueing
270#
271# CONFIG_NET_SCHED is not set 301# CONFIG_NET_SCHED is not set
302# CONFIG_DCB is not set
272 303
273# 304#
274# Network testing 305# Network testing
275# 306#
276# CONFIG_NET_PKTGEN is not set 307# CONFIG_NET_PKTGEN is not set
277# CONFIG_HAMRADIO is not set 308# CONFIG_HAMRADIO is not set
309# CONFIG_CAN is not set
278# CONFIG_IRDA is not set 310# CONFIG_IRDA is not set
279# CONFIG_BT is not set 311# CONFIG_BT is not set
280# CONFIG_AF_RXRPC is not set 312# CONFIG_AF_RXRPC is not set
281 313# CONFIG_PHONET is not set
282# 314CONFIG_WIRELESS=y
283# Wireless
284#
285# CONFIG_CFG80211 is not set 315# CONFIG_CFG80211 is not set
316CONFIG_WIRELESS_OLD_REGULATORY=y
286# CONFIG_WIRELESS_EXT is not set 317# CONFIG_WIRELESS_EXT is not set
318# CONFIG_LIB80211 is not set
287# CONFIG_MAC80211 is not set 319# CONFIG_MAC80211 is not set
288# CONFIG_IEEE80211 is not set 320# CONFIG_WIMAX is not set
289# CONFIG_RFKILL is not set 321# CONFIG_RFKILL is not set
290# CONFIG_NET_9P is not set 322# CONFIG_NET_9P is not set
291 323
@@ -300,6 +332,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
300# CONFIG_STANDALONE is not set 332# CONFIG_STANDALONE is not set
301# CONFIG_PREVENT_FIRMWARE_BUILD is not set 333# CONFIG_PREVENT_FIRMWARE_BUILD is not set
302CONFIG_FW_LOADER=y 334CONFIG_FW_LOADER=y
335CONFIG_FIRMWARE_IN_KERNEL=y
336CONFIG_EXTRA_FIRMWARE=""
303# CONFIG_DEBUG_DRIVER is not set 337# CONFIG_DEBUG_DRIVER is not set
304# CONFIG_DEBUG_DEVRES is not set 338# CONFIG_DEBUG_DEVRES is not set
305# CONFIG_SYS_HYPERVISOR is not set 339# CONFIG_SYS_HYPERVISOR is not set
@@ -330,63 +364,68 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
330CONFIG_BLK_DEV_RAM=y 364CONFIG_BLK_DEV_RAM=y
331CONFIG_BLK_DEV_RAM_COUNT=16 365CONFIG_BLK_DEV_RAM_COUNT=16
332CONFIG_BLK_DEV_RAM_SIZE=6144 366CONFIG_BLK_DEV_RAM_SIZE=6144
333CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 367# CONFIG_BLK_DEV_XIP is not set
334# CONFIG_CDROM_PKTCDVD is not set 368# CONFIG_CDROM_PKTCDVD is not set
335# CONFIG_ATA_OVER_ETH is not set 369# CONFIG_ATA_OVER_ETH is not set
370# CONFIG_BLK_DEV_HD is not set
336CONFIG_MISC_DEVICES=y 371CONFIG_MISC_DEVICES=y
337# CONFIG_PHANTOM is not set 372# CONFIG_PHANTOM is not set
338# CONFIG_EEPROM_93CX6 is not set
339# CONFIG_SGI_IOC4 is not set 373# CONFIG_SGI_IOC4 is not set
340# CONFIG_TIFM_CORE is not set 374# CONFIG_TIFM_CORE is not set
375# CONFIG_ENCLOSURE_SERVICES is not set
376# CONFIG_HP_ILO is not set
377# CONFIG_C2PORT is not set
378
379#
380# EEPROM support
381#
382# CONFIG_EEPROM_93CX6 is not set
383CONFIG_HAVE_IDE=y
341CONFIG_IDE=y 384CONFIG_IDE=y
342CONFIG_BLK_DEV_IDE=y
343 385
344# 386#
345# Please see Documentation/ide.txt for help/info on IDE drives 387# Please see Documentation/ide/ide.txt for help/info on IDE drives
346# 388#
389CONFIG_IDE_ATAPI=y
347# CONFIG_BLK_DEV_IDE_SATA is not set 390# CONFIG_BLK_DEV_IDE_SATA is not set
348CONFIG_BLK_DEV_IDEDISK=y 391CONFIG_IDE_GD=y
349CONFIG_IDEDISK_MULTI_MODE=y 392CONFIG_IDE_GD_ATA=y
393# CONFIG_IDE_GD_ATAPI is not set
350CONFIG_BLK_DEV_IDECS=y 394CONFIG_BLK_DEV_IDECS=y
351# CONFIG_BLK_DEV_DELKIN is not set 395# CONFIG_BLK_DEV_DELKIN is not set
352CONFIG_BLK_DEV_IDECD=y 396CONFIG_BLK_DEV_IDECD=y
397CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
353# CONFIG_BLK_DEV_IDETAPE is not set 398# CONFIG_BLK_DEV_IDETAPE is not set
354# CONFIG_BLK_DEV_IDEFLOPPY is not set
355CONFIG_BLK_DEV_IDESCSI=y
356# CONFIG_IDE_TASK_IOCTL is not set 399# CONFIG_IDE_TASK_IOCTL is not set
357CONFIG_IDE_PROC_FS=y 400CONFIG_IDE_PROC_FS=y
358 401
359# 402#
360# IDE chipset support/bugfixes 403# IDE chipset support/bugfixes
361# 404#
362CONFIG_IDE_GENERIC=y
363# CONFIG_BLK_DEV_PLATFORM is not set 405# CONFIG_BLK_DEV_PLATFORM is not set
406CONFIG_BLK_DEV_IDEDMA_SFF=y
364 407
365# 408#
366# PCI IDE chipsets support 409# PCI IDE chipsets support
367# 410#
368CONFIG_BLK_DEV_IDEPCI=y 411CONFIG_BLK_DEV_IDEPCI=y
369CONFIG_IDEPCI_SHARE_IRQ=y
370CONFIG_IDEPCI_PCIBUS_ORDER=y 412CONFIG_IDEPCI_PCIBUS_ORDER=y
371# CONFIG_BLK_DEV_OFFBOARD is not set 413# CONFIG_BLK_DEV_OFFBOARD is not set
372CONFIG_BLK_DEV_GENERIC=y 414CONFIG_BLK_DEV_GENERIC=y
373# CONFIG_BLK_DEV_OPTI621 is not set 415# CONFIG_BLK_DEV_OPTI621 is not set
374CONFIG_BLK_DEV_IDEDMA_PCI=y 416CONFIG_BLK_DEV_IDEDMA_PCI=y
375# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
376CONFIG_IDEDMA_ONLYDISK=y
377# CONFIG_BLK_DEV_AEC62XX is not set 417# CONFIG_BLK_DEV_AEC62XX is not set
378# CONFIG_BLK_DEV_ALI15X3 is not set 418# CONFIG_BLK_DEV_ALI15X3 is not set
379# CONFIG_BLK_DEV_AMD74XX is not set 419# CONFIG_BLK_DEV_AMD74XX is not set
380# CONFIG_BLK_DEV_CMD64X is not set 420# CONFIG_BLK_DEV_CMD64X is not set
381# CONFIG_BLK_DEV_TRIFLEX is not set 421# CONFIG_BLK_DEV_TRIFLEX is not set
382# CONFIG_BLK_DEV_CY82C693 is not set
383# CONFIG_BLK_DEV_CS5520 is not set 422# CONFIG_BLK_DEV_CS5520 is not set
384# CONFIG_BLK_DEV_CS5530 is not set 423# CONFIG_BLK_DEV_CS5530 is not set
385# CONFIG_BLK_DEV_HPT34X is not set
386# CONFIG_BLK_DEV_HPT366 is not set 424# CONFIG_BLK_DEV_HPT366 is not set
387# CONFIG_BLK_DEV_JMICRON is not set 425# CONFIG_BLK_DEV_JMICRON is not set
388# CONFIG_BLK_DEV_SC1200 is not set 426# CONFIG_BLK_DEV_SC1200 is not set
389# CONFIG_BLK_DEV_PIIX is not set 427# CONFIG_BLK_DEV_PIIX is not set
428# CONFIG_BLK_DEV_IT8172 is not set
390# CONFIG_BLK_DEV_IT8213 is not set 429# CONFIG_BLK_DEV_IT8213 is not set
391# CONFIG_BLK_DEV_IT821X is not set 430# CONFIG_BLK_DEV_IT821X is not set
392CONFIG_BLK_DEV_NS87415=y 431CONFIG_BLK_DEV_NS87415=y
@@ -398,10 +437,7 @@ CONFIG_BLK_DEV_NS87415=y
398# CONFIG_BLK_DEV_TRM290 is not set 437# CONFIG_BLK_DEV_TRM290 is not set
399# CONFIG_BLK_DEV_VIA82CXXX is not set 438# CONFIG_BLK_DEV_VIA82CXXX is not set
400# CONFIG_BLK_DEV_TC86C001 is not set 439# CONFIG_BLK_DEV_TC86C001 is not set
401# CONFIG_IDE_ARM is not set
402CONFIG_BLK_DEV_IDEDMA=y 440CONFIG_BLK_DEV_IDEDMA=y
403# CONFIG_IDEDMA_IVB is not set
404# CONFIG_BLK_DEV_HD is not set
405 441
406# 442#
407# SCSI device support 443# SCSI device support
@@ -440,8 +476,10 @@ CONFIG_SCSI_SPI_ATTRS=y
440# CONFIG_SCSI_FC_ATTRS is not set 476# CONFIG_SCSI_FC_ATTRS is not set
441# CONFIG_SCSI_ISCSI_ATTRS is not set 477# CONFIG_SCSI_ISCSI_ATTRS is not set
442# CONFIG_SCSI_SAS_LIBSAS is not set 478# CONFIG_SCSI_SAS_LIBSAS is not set
479# CONFIG_SCSI_SRP_ATTRS is not set
443CONFIG_SCSI_LOWLEVEL=y 480CONFIG_SCSI_LOWLEVEL=y
444# CONFIG_ISCSI_TCP is not set 481# CONFIG_ISCSI_TCP is not set
482# CONFIG_SCSI_CXGB3_ISCSI is not set
445# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 483# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
446# CONFIG_SCSI_3W_9XXX is not set 484# CONFIG_SCSI_3W_9XXX is not set
447# CONFIG_SCSI_ACARD is not set 485# CONFIG_SCSI_ACARD is not set
@@ -452,11 +490,14 @@ CONFIG_SCSI_LOWLEVEL=y
452# CONFIG_SCSI_AIC79XX is not set 490# CONFIG_SCSI_AIC79XX is not set
453# CONFIG_SCSI_AIC94XX is not set 491# CONFIG_SCSI_AIC94XX is not set
454# CONFIG_SCSI_DPT_I2O is not set 492# CONFIG_SCSI_DPT_I2O is not set
493# CONFIG_SCSI_ADVANSYS is not set
455# CONFIG_SCSI_ARCMSR is not set 494# CONFIG_SCSI_ARCMSR is not set
456# CONFIG_MEGARAID_NEWGEN is not set 495# CONFIG_MEGARAID_NEWGEN is not set
457# CONFIG_MEGARAID_LEGACY is not set 496# CONFIG_MEGARAID_LEGACY is not set
458# CONFIG_MEGARAID_SAS is not set 497# CONFIG_MEGARAID_SAS is not set
459# CONFIG_SCSI_HPTIOP is not set 498# CONFIG_SCSI_HPTIOP is not set
499# CONFIG_LIBFC is not set
500# CONFIG_FCOE is not set
460# CONFIG_SCSI_DMX3191D is not set 501# CONFIG_SCSI_DMX3191D is not set
461# CONFIG_SCSI_FUTURE_DOMAIN is not set 502# CONFIG_SCSI_FUTURE_DOMAIN is not set
462# CONFIG_SCSI_IPS is not set 503# CONFIG_SCSI_IPS is not set
@@ -464,6 +505,7 @@ CONFIG_SCSI_LOWLEVEL=y
464# CONFIG_SCSI_INIA100 is not set 505# CONFIG_SCSI_INIA100 is not set
465# CONFIG_SCSI_PPA is not set 506# CONFIG_SCSI_PPA is not set
466# CONFIG_SCSI_IMM is not set 507# CONFIG_SCSI_IMM is not set
508# CONFIG_SCSI_MVSAS is not set
467CONFIG_SCSI_LASI700=y 509CONFIG_SCSI_LASI700=y
468CONFIG_53C700_LE_ON_BE=y 510CONFIG_53C700_LE_ON_BE=y
469# CONFIG_SCSI_STEX is not set 511# CONFIG_SCSI_STEX is not set
@@ -487,9 +529,11 @@ CONFIG_SCSI_NCR53C8XX_SYNC=20
487# CONFIG_SCSI_DEBUG is not set 529# CONFIG_SCSI_DEBUG is not set
488# CONFIG_SCSI_SRP is not set 530# CONFIG_SCSI_SRP is not set
489# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 531# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
532# CONFIG_SCSI_DH is not set
490# CONFIG_ATA is not set 533# CONFIG_ATA is not set
491CONFIG_MD=y 534CONFIG_MD=y
492CONFIG_BLK_DEV_MD=y 535CONFIG_BLK_DEV_MD=y
536CONFIG_MD_AUTODETECT=y
493CONFIG_MD_LINEAR=y 537CONFIG_MD_LINEAR=y
494CONFIG_MD_RAID0=y 538CONFIG_MD_RAID0=y
495CONFIG_MD_RAID1=y 539CONFIG_MD_RAID1=y
@@ -505,32 +549,47 @@ CONFIG_BLK_DEV_DM=y
505# CONFIG_DM_ZERO is not set 549# CONFIG_DM_ZERO is not set
506# CONFIG_DM_MULTIPATH is not set 550# CONFIG_DM_MULTIPATH is not set
507# CONFIG_DM_DELAY is not set 551# CONFIG_DM_DELAY is not set
552# CONFIG_DM_UEVENT is not set
553# CONFIG_FUSION is not set
508 554
509# 555#
510# Fusion MPT device support 556# IEEE 1394 (FireWire) support
511# 557#
512# CONFIG_FUSION is not set
513# CONFIG_FUSION_SPI is not set
514# CONFIG_FUSION_FC is not set
515# CONFIG_FUSION_SAS is not set
516 558
517# 559#
518# IEEE 1394 (FireWire) support 560# Enable only one of the two stacks, unless you know what you are doing
519# 561#
520# CONFIG_FIREWIRE is not set 562# CONFIG_FIREWIRE is not set
521# CONFIG_IEEE1394 is not set 563# CONFIG_IEEE1394 is not set
522# CONFIG_I2O is not set 564# CONFIG_I2O is not set
523CONFIG_NETDEVICES=y 565CONFIG_NETDEVICES=y
524# CONFIG_NETDEVICES_MULTIQUEUE is not set
525CONFIG_DUMMY=m 566CONFIG_DUMMY=m
526CONFIG_BONDING=m 567CONFIG_BONDING=m
527# CONFIG_MACVLAN is not set 568# CONFIG_MACVLAN is not set
528# CONFIG_EQUALIZER is not set 569# CONFIG_EQUALIZER is not set
529CONFIG_TUN=m 570CONFIG_TUN=m
530# CONFIG_VETH is not set 571# CONFIG_VETH is not set
531# CONFIG_IP1000 is not set
532# CONFIG_ARCNET is not set 572# CONFIG_ARCNET is not set
533# CONFIG_PHYLIB is not set 573CONFIG_PHYLIB=y
574
575#
576# MII PHY device drivers
577#
578# CONFIG_MARVELL_PHY is not set
579# CONFIG_DAVICOM_PHY is not set
580# CONFIG_QSEMI_PHY is not set
581# CONFIG_LXT_PHY is not set
582# CONFIG_CICADA_PHY is not set
583# CONFIG_VITESSE_PHY is not set
584# CONFIG_SMSC_PHY is not set
585# CONFIG_BROADCOM_PHY is not set
586# CONFIG_ICPLUS_PHY is not set
587# CONFIG_REALTEK_PHY is not set
588# CONFIG_NATIONAL_PHY is not set
589# CONFIG_STE10XP is not set
590# CONFIG_LSI_ET1011C_PHY is not set
591# CONFIG_FIXED_PHY is not set
592# CONFIG_MDIO_BITBANG is not set
534CONFIG_NET_ETHERNET=y 593CONFIG_NET_ETHERNET=y
535CONFIG_MII=m 594CONFIG_MII=m
536CONFIG_LASI_82596=y 595CONFIG_LASI_82596=y
@@ -550,13 +609,15 @@ CONFIG_TULIP=y
550# CONFIG_DM9102 is not set 609# CONFIG_DM9102 is not set
551# CONFIG_ULI526X is not set 610# CONFIG_ULI526X is not set
552# CONFIG_PCMCIA_XIRCOM is not set 611# CONFIG_PCMCIA_XIRCOM is not set
553# CONFIG_PCMCIA_XIRTULIP is not set
554# CONFIG_DEPCA is not set 612# CONFIG_DEPCA is not set
555# CONFIG_HP100 is not set 613# CONFIG_HP100 is not set
556# CONFIG_IBM_NEW_EMAC_ZMII is not set 614# CONFIG_IBM_NEW_EMAC_ZMII is not set
557# CONFIG_IBM_NEW_EMAC_RGMII is not set 615# CONFIG_IBM_NEW_EMAC_RGMII is not set
558# CONFIG_IBM_NEW_EMAC_TAH is not set 616# CONFIG_IBM_NEW_EMAC_TAH is not set
559# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 617# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
618# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
619# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
620# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
560CONFIG_NET_PCI=y 621CONFIG_NET_PCI=y
561# CONFIG_PCNET32 is not set 622# CONFIG_PCNET32 is not set
562# CONFIG_AMD8111_ETH is not set 623# CONFIG_AMD8111_ETH is not set
@@ -564,7 +625,7 @@ CONFIG_NET_PCI=y
564# CONFIG_AC3200 is not set 625# CONFIG_AC3200 is not set
565# CONFIG_B44 is not set 626# CONFIG_B44 is not set
566# CONFIG_FORCEDETH is not set 627# CONFIG_FORCEDETH is not set
567# CONFIG_EEPRO100 is not set 628# CONFIG_CS89x0 is not set
568# CONFIG_E100 is not set 629# CONFIG_E100 is not set
569# CONFIG_LNE390 is not set 630# CONFIG_LNE390 is not set
570# CONFIG_FEALNX is not set 631# CONFIG_FEALNX is not set
@@ -574,19 +635,24 @@ CONFIG_NET_PCI=y
574# CONFIG_ES3210 is not set 635# CONFIG_ES3210 is not set
575# CONFIG_8139CP is not set 636# CONFIG_8139CP is not set
576# CONFIG_8139TOO is not set 637# CONFIG_8139TOO is not set
638# CONFIG_R6040 is not set
577# CONFIG_SIS900 is not set 639# CONFIG_SIS900 is not set
578# CONFIG_EPIC100 is not set 640# CONFIG_EPIC100 is not set
641# CONFIG_SMSC9420 is not set
579# CONFIG_SUNDANCE is not set 642# CONFIG_SUNDANCE is not set
580# CONFIG_TLAN is not set 643# CONFIG_TLAN is not set
581# CONFIG_VIA_RHINE is not set 644# CONFIG_VIA_RHINE is not set
582# CONFIG_SC92031 is not set 645# CONFIG_SC92031 is not set
583# CONFIG_NET_POCKET is not set 646# CONFIG_NET_POCKET is not set
647# CONFIG_ATL2 is not set
584CONFIG_NETDEV_1000=y 648CONFIG_NETDEV_1000=y
585CONFIG_ACENIC=y 649CONFIG_ACENIC=y
586# CONFIG_ACENIC_OMIT_TIGON_I is not set 650# CONFIG_ACENIC_OMIT_TIGON_I is not set
587# CONFIG_DL2K is not set 651# CONFIG_DL2K is not set
588# CONFIG_E1000 is not set 652# CONFIG_E1000 is not set
589# CONFIG_E1000E is not set 653# CONFIG_E1000E is not set
654# CONFIG_IP1000 is not set
655# CONFIG_IGB is not set
590# CONFIG_NS83820 is not set 656# CONFIG_NS83820 is not set
591# CONFIG_HAMACHI is not set 657# CONFIG_HAMACHI is not set
592# CONFIG_YELLOWFIN is not set 658# CONFIG_YELLOWFIN is not set
@@ -594,23 +660,31 @@ CONFIG_ACENIC=y
594# CONFIG_SIS190 is not set 660# CONFIG_SIS190 is not set
595# CONFIG_SKGE is not set 661# CONFIG_SKGE is not set
596# CONFIG_SKY2 is not set 662# CONFIG_SKY2 is not set
597# CONFIG_SK98LIN is not set
598# CONFIG_VIA_VELOCITY is not set 663# CONFIG_VIA_VELOCITY is not set
599CONFIG_TIGON3=y 664CONFIG_TIGON3=y
600# CONFIG_BNX2 is not set 665# CONFIG_BNX2 is not set
601# CONFIG_QLA3XXX is not set 666# CONFIG_QLA3XXX is not set
602# CONFIG_ATL1 is not set 667# CONFIG_ATL1 is not set
668# CONFIG_ATL1E is not set
669# CONFIG_ATL1C is not set
670# CONFIG_JME is not set
603CONFIG_NETDEV_10000=y 671CONFIG_NETDEV_10000=y
604# CONFIG_CHELSIO_T1 is not set 672# CONFIG_CHELSIO_T1 is not set
673CONFIG_CHELSIO_T3_DEPENDS=y
605# CONFIG_CHELSIO_T3 is not set 674# CONFIG_CHELSIO_T3 is not set
675# CONFIG_ENIC is not set
606# CONFIG_IXGBE is not set 676# CONFIG_IXGBE is not set
607# CONFIG_IXGB is not set 677# CONFIG_IXGB is not set
608# CONFIG_S2IO is not set 678# CONFIG_S2IO is not set
609# CONFIG_MYRI10GE is not set 679# CONFIG_MYRI10GE is not set
610# CONFIG_NETXEN_NIC is not set 680# CONFIG_NETXEN_NIC is not set
611# CONFIG_NIU is not set 681# CONFIG_NIU is not set
682# CONFIG_MLX4_EN is not set
612# CONFIG_MLX4_CORE is not set 683# CONFIG_MLX4_CORE is not set
613# CONFIG_TEHUTI is not set 684# CONFIG_TEHUTI is not set
685# CONFIG_BNX2X is not set
686# CONFIG_QLGE is not set
687# CONFIG_SFC is not set
614# CONFIG_TR is not set 688# CONFIG_TR is not set
615 689
616# 690#
@@ -618,6 +692,11 @@ CONFIG_NETDEV_10000=y
618# 692#
619# CONFIG_WLAN_PRE80211 is not set 693# CONFIG_WLAN_PRE80211 is not set
620# CONFIG_WLAN_80211 is not set 694# CONFIG_WLAN_80211 is not set
695# CONFIG_IWLWIFI_LEDS is not set
696
697#
698# Enable WiMAX (Networking options) to see the WiMAX drivers
699#
621 700
622# 701#
623# USB Network Adapters 702# USB Network Adapters
@@ -626,7 +705,6 @@ CONFIG_NETDEV_10000=y
626# CONFIG_USB_KAWETH is not set 705# CONFIG_USB_KAWETH is not set
627# CONFIG_USB_PEGASUS is not set 706# CONFIG_USB_PEGASUS is not set
628# CONFIG_USB_RTL8150 is not set 707# CONFIG_USB_RTL8150 is not set
629# CONFIG_USB_USBNET_MII is not set
630# CONFIG_USB_USBNET is not set 708# CONFIG_USB_USBNET is not set
631CONFIG_NET_PCMCIA=y 709CONFIG_NET_PCMCIA=y
632# CONFIG_PCMCIA_3C589 is not set 710# CONFIG_PCMCIA_3C589 is not set
@@ -654,7 +732,6 @@ CONFIG_PPPOE=m
654# CONFIG_SLIP is not set 732# CONFIG_SLIP is not set
655CONFIG_SLHC=m 733CONFIG_SLHC=m
656# CONFIG_NET_FC is not set 734# CONFIG_NET_FC is not set
657# CONFIG_SHAPER is not set
658# CONFIG_NETCONSOLE is not set 735# CONFIG_NETCONSOLE is not set
659# CONFIG_NETPOLL is not set 736# CONFIG_NETPOLL is not set
660# CONFIG_NET_POLL_CONTROLLER is not set 737# CONFIG_NET_POLL_CONTROLLER is not set
@@ -676,7 +753,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
676CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 753CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
677CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 754CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
678# CONFIG_INPUT_JOYDEV is not set 755# CONFIG_INPUT_JOYDEV is not set
679# CONFIG_INPUT_TSDEV is not set
680# CONFIG_INPUT_EVDEV is not set 756# CONFIG_INPUT_EVDEV is not set
681# CONFIG_INPUT_EVBUG is not set 757# CONFIG_INPUT_EVBUG is not set
682 758
@@ -699,11 +775,12 @@ CONFIG_MOUSE_PS2=y
699CONFIG_MOUSE_PS2_ALPS=y 775CONFIG_MOUSE_PS2_ALPS=y
700CONFIG_MOUSE_PS2_LOGIPS2PP=y 776CONFIG_MOUSE_PS2_LOGIPS2PP=y
701CONFIG_MOUSE_PS2_SYNAPTICS=y 777CONFIG_MOUSE_PS2_SYNAPTICS=y
702CONFIG_MOUSE_PS2_LIFEBOOK=y
703CONFIG_MOUSE_PS2_TRACKPOINT=y 778CONFIG_MOUSE_PS2_TRACKPOINT=y
779# CONFIG_MOUSE_PS2_ELANTECH is not set
704# CONFIG_MOUSE_PS2_TOUCHKIT is not set 780# CONFIG_MOUSE_PS2_TOUCHKIT is not set
705CONFIG_MOUSE_SERIAL=y 781CONFIG_MOUSE_SERIAL=y
706# CONFIG_MOUSE_APPLETOUCH is not set 782# CONFIG_MOUSE_APPLETOUCH is not set
783# CONFIG_MOUSE_BCM5974 is not set
707# CONFIG_MOUSE_VSXXXAA is not set 784# CONFIG_MOUSE_VSXXXAA is not set
708CONFIG_MOUSE_HIL=y 785CONFIG_MOUSE_HIL=y
709# CONFIG_INPUT_JOYSTICK is not set 786# CONFIG_INPUT_JOYSTICK is not set
@@ -729,10 +806,13 @@ CONFIG_SERIO_LIBPS2=y
729# Character devices 806# Character devices
730# 807#
731CONFIG_VT=y 808CONFIG_VT=y
809CONFIG_CONSOLE_TRANSLATIONS=y
732CONFIG_VT_CONSOLE=y 810CONFIG_VT_CONSOLE=y
733CONFIG_HW_CONSOLE=y 811CONFIG_HW_CONSOLE=y
734# CONFIG_VT_HW_CONSOLE_BINDING is not set 812# CONFIG_VT_HW_CONSOLE_BINDING is not set
813CONFIG_DEVKMEM=y
735# CONFIG_SERIAL_NONSTANDARD is not set 814# CONFIG_SERIAL_NONSTANDARD is not set
815# CONFIG_NOZOMI is not set
736 816
737# 817#
738# Serial drivers 818# Serial drivers
@@ -759,21 +839,16 @@ CONFIG_SERIAL_CORE=y
759CONFIG_SERIAL_CORE_CONSOLE=y 839CONFIG_SERIAL_CORE_CONSOLE=y
760# CONFIG_SERIAL_JSM is not set 840# CONFIG_SERIAL_JSM is not set
761CONFIG_UNIX98_PTYS=y 841CONFIG_UNIX98_PTYS=y
842# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
762CONFIG_LEGACY_PTYS=y 843CONFIG_LEGACY_PTYS=y
763CONFIG_LEGACY_PTY_COUNT=64 844CONFIG_LEGACY_PTY_COUNT=64
764CONFIG_PRINTER=m 845CONFIG_PRINTER=m
765# CONFIG_LP_CONSOLE is not set 846# CONFIG_LP_CONSOLE is not set
766CONFIG_PPDEV=m 847CONFIG_PPDEV=m
767# CONFIG_TIPAR is not set
768# CONFIG_IPMI_HANDLER is not set 848# CONFIG_IPMI_HANDLER is not set
769# CONFIG_WATCHDOG is not set
770# CONFIG_HW_RANDOM is not set 849# CONFIG_HW_RANDOM is not set
771CONFIG_GEN_RTC=y
772CONFIG_GEN_RTC_X=y
773# CONFIG_R3964 is not set 850# CONFIG_R3964 is not set
774# CONFIG_APPLICOM is not set 851# CONFIG_APPLICOM is not set
775# CONFIG_AGP is not set
776# CONFIG_DRM is not set
777 852
778# 853#
779# PCMCIA character devices 854# PCMCIA character devices
@@ -781,60 +856,70 @@ CONFIG_GEN_RTC_X=y
781# CONFIG_SYNCLINK_CS is not set 856# CONFIG_SYNCLINK_CS is not set
782# CONFIG_CARDMAN_4000 is not set 857# CONFIG_CARDMAN_4000 is not set
783# CONFIG_CARDMAN_4040 is not set 858# CONFIG_CARDMAN_4040 is not set
859# CONFIG_IPWIRELESS is not set
784# CONFIG_RAW_DRIVER is not set 860# CONFIG_RAW_DRIVER is not set
785# CONFIG_TCG_TPM is not set 861# CONFIG_TCG_TPM is not set
786CONFIG_DEVPORT=y 862CONFIG_DEVPORT=y
787# CONFIG_I2C is not set 863# CONFIG_I2C is not set
788
789#
790# SPI support
791#
792# CONFIG_SPI is not set 864# CONFIG_SPI is not set
793# CONFIG_SPI_MASTER is not set
794# CONFIG_W1 is not set 865# CONFIG_W1 is not set
795# CONFIG_POWER_SUPPLY is not set 866# CONFIG_POWER_SUPPLY is not set
796# CONFIG_HWMON is not set 867# CONFIG_HWMON is not set
868# CONFIG_THERMAL is not set
869# CONFIG_THERMAL_HWMON is not set
870# CONFIG_WATCHDOG is not set
871CONFIG_SSB_POSSIBLE=y
797 872
798# 873#
799# Sonics Silicon Backplane 874# Sonics Silicon Backplane
800# 875#
801CONFIG_SSB_POSSIBLE=y
802# CONFIG_SSB is not set 876# CONFIG_SSB is not set
803 877
804# 878#
805# Multifunction device drivers 879# Multifunction device drivers
806# 880#
881# CONFIG_MFD_CORE is not set
807# CONFIG_MFD_SM501 is not set 882# CONFIG_MFD_SM501 is not set
883# CONFIG_HTC_PASIC3 is not set
884# CONFIG_MFD_TMIO is not set
885# CONFIG_REGULATOR is not set
808 886
809# 887#
810# Multimedia devices 888# Multimedia devices
811# 889#
890
891#
892# Multimedia core support
893#
812# CONFIG_VIDEO_DEV is not set 894# CONFIG_VIDEO_DEV is not set
813# CONFIG_DVB_CORE is not set 895# CONFIG_DVB_CORE is not set
814# CONFIG_DAB is not set 896# CONFIG_VIDEO_MEDIA is not set
815 897
816# 898#
817# Graphics support 899# Multimedia drivers
818# 900#
819# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 901# CONFIG_DAB is not set
820 902
821# 903#
822# Display device support 904# Graphics support
823# 905#
824# CONFIG_DISPLAY_SUPPORT is not set 906# CONFIG_AGP is not set
907# CONFIG_DRM is not set
825# CONFIG_VGASTATE is not set 908# CONFIG_VGASTATE is not set
826CONFIG_VIDEO_OUTPUT_CONTROL=m 909CONFIG_VIDEO_OUTPUT_CONTROL=m
827CONFIG_FB=y 910CONFIG_FB=y
828# CONFIG_FIRMWARE_EDID is not set 911# CONFIG_FIRMWARE_EDID is not set
829# CONFIG_FB_DDC is not set 912# CONFIG_FB_DDC is not set
913# CONFIG_FB_BOOT_VESA_SUPPORT is not set
830CONFIG_FB_CFB_FILLRECT=y 914CONFIG_FB_CFB_FILLRECT=y
831CONFIG_FB_CFB_COPYAREA=y 915CONFIG_FB_CFB_COPYAREA=y
832CONFIG_FB_CFB_IMAGEBLIT=y 916CONFIG_FB_CFB_IMAGEBLIT=y
917# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
833# CONFIG_FB_SYS_FILLRECT is not set 918# CONFIG_FB_SYS_FILLRECT is not set
834# CONFIG_FB_SYS_COPYAREA is not set 919# CONFIG_FB_SYS_COPYAREA is not set
835# CONFIG_FB_SYS_IMAGEBLIT is not set 920# CONFIG_FB_SYS_IMAGEBLIT is not set
921# CONFIG_FB_FOREIGN_ENDIAN is not set
836# CONFIG_FB_SYS_FOPS is not set 922# CONFIG_FB_SYS_FOPS is not set
837CONFIG_FB_DEFERRED_IO=y
838# CONFIG_FB_SVGALIB is not set 923# CONFIG_FB_SVGALIB is not set
839# CONFIG_FB_MACMODES is not set 924# CONFIG_FB_MACMODES is not set
840# CONFIG_FB_BACKLIGHT is not set 925# CONFIG_FB_BACKLIGHT is not set
@@ -860,6 +945,7 @@ CONFIG_FB_STI=y
860# CONFIG_FB_S3 is not set 945# CONFIG_FB_S3 is not set
861# CONFIG_FB_SAVAGE is not set 946# CONFIG_FB_SAVAGE is not set
862# CONFIG_FB_SIS is not set 947# CONFIG_FB_SIS is not set
948# CONFIG_FB_VIA is not set
863# CONFIG_FB_NEOMAGIC is not set 949# CONFIG_FB_NEOMAGIC is not set
864# CONFIG_FB_KYRO is not set 950# CONFIG_FB_KYRO is not set
865# CONFIG_FB_3DFX is not set 951# CONFIG_FB_3DFX is not set
@@ -868,7 +954,16 @@ CONFIG_FB_STI=y
868# CONFIG_FB_TRIDENT is not set 954# CONFIG_FB_TRIDENT is not set
869# CONFIG_FB_ARK is not set 955# CONFIG_FB_ARK is not set
870# CONFIG_FB_PM3 is not set 956# CONFIG_FB_PM3 is not set
957# CONFIG_FB_CARMINE is not set
871# CONFIG_FB_VIRTUAL is not set 958# CONFIG_FB_VIRTUAL is not set
959# CONFIG_FB_METRONOME is not set
960# CONFIG_FB_MB862XX is not set
961# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
962
963#
964# Display device support
965#
966# CONFIG_DISPLAY_SUPPORT is not set
872 967
873# 968#
874# Console display driver support 969# Console display driver support
@@ -896,15 +991,8 @@ CONFIG_LOGO=y
896# CONFIG_LOGO_LINUX_VGA16 is not set 991# CONFIG_LOGO_LINUX_VGA16 is not set
897# CONFIG_LOGO_LINUX_CLUT224 is not set 992# CONFIG_LOGO_LINUX_CLUT224 is not set
898CONFIG_LOGO_PARISC_CLUT224=y 993CONFIG_LOGO_PARISC_CLUT224=y
899
900#
901# Sound
902#
903CONFIG_SOUND=y 994CONFIG_SOUND=y
904 995CONFIG_SOUND_OSS_CORE=y
905#
906# Advanced Linux Sound Architecture
907#
908CONFIG_SND=y 996CONFIG_SND=y
909CONFIG_SND_TIMER=y 997CONFIG_SND_TIMER=y
910CONFIG_SND_PCM=y 998CONFIG_SND_PCM=y
@@ -920,11 +1008,9 @@ CONFIG_SND_SUPPORT_OLD_API=y
920CONFIG_SND_VERBOSE_PROCFS=y 1008CONFIG_SND_VERBOSE_PROCFS=y
921# CONFIG_SND_VERBOSE_PRINTK is not set 1009# CONFIG_SND_VERBOSE_PRINTK is not set
922# CONFIG_SND_DEBUG is not set 1010# CONFIG_SND_DEBUG is not set
923 1011CONFIG_SND_VMASTER=y
924#
925# Generic devices
926#
927CONFIG_SND_AC97_CODEC=y 1012CONFIG_SND_AC97_CODEC=y
1013CONFIG_SND_DRIVERS=y
928# CONFIG_SND_DUMMY is not set 1014# CONFIG_SND_DUMMY is not set
929# CONFIG_SND_VIRMIDI is not set 1015# CONFIG_SND_VIRMIDI is not set
930# CONFIG_SND_MTPAV is not set 1016# CONFIG_SND_MTPAV is not set
@@ -932,10 +1018,8 @@ CONFIG_SND_AC97_CODEC=y
932# CONFIG_SND_SERIAL_U16550 is not set 1018# CONFIG_SND_SERIAL_U16550 is not set
933# CONFIG_SND_MPU401 is not set 1019# CONFIG_SND_MPU401 is not set
934# CONFIG_SND_PORTMAN2X4 is not set 1020# CONFIG_SND_PORTMAN2X4 is not set
935 1021# CONFIG_SND_AC97_POWER_SAVE is not set
936# 1022CONFIG_SND_PCI=y
937# PCI devices
938#
939CONFIG_SND_AD1889=y 1023CONFIG_SND_AD1889=y
940# CONFIG_SND_ALS300 is not set 1024# CONFIG_SND_ALS300 is not set
941# CONFIG_SND_ALI5451 is not set 1025# CONFIG_SND_ALI5451 is not set
@@ -944,10 +1028,12 @@ CONFIG_SND_AD1889=y
944# CONFIG_SND_AU8810 is not set 1028# CONFIG_SND_AU8810 is not set
945# CONFIG_SND_AU8820 is not set 1029# CONFIG_SND_AU8820 is not set
946# CONFIG_SND_AU8830 is not set 1030# CONFIG_SND_AU8830 is not set
1031# CONFIG_SND_AW2 is not set
947# CONFIG_SND_AZT3328 is not set 1032# CONFIG_SND_AZT3328 is not set
948# CONFIG_SND_BT87X is not set 1033# CONFIG_SND_BT87X is not set
949# CONFIG_SND_CA0106 is not set 1034# CONFIG_SND_CA0106 is not set
950# CONFIG_SND_CMIPCI is not set 1035# CONFIG_SND_CMIPCI is not set
1036# CONFIG_SND_OXYGEN is not set
951# CONFIG_SND_CS4281 is not set 1037# CONFIG_SND_CS4281 is not set
952# CONFIG_SND_CS46XX is not set 1038# CONFIG_SND_CS46XX is not set
953# CONFIG_SND_DARLA20 is not set 1039# CONFIG_SND_DARLA20 is not set
@@ -972,6 +1058,7 @@ CONFIG_SND_AD1889=y
972# CONFIG_SND_HDA_INTEL is not set 1058# CONFIG_SND_HDA_INTEL is not set
973# CONFIG_SND_HDSP is not set 1059# CONFIG_SND_HDSP is not set
974# CONFIG_SND_HDSPM is not set 1060# CONFIG_SND_HDSPM is not set
1061# CONFIG_SND_HIFIER is not set
975# CONFIG_SND_ICE1712 is not set 1062# CONFIG_SND_ICE1712 is not set
976# CONFIG_SND_ICE1724 is not set 1063# CONFIG_SND_ICE1724 is not set
977# CONFIG_SND_INTEL8X0 is not set 1064# CONFIG_SND_INTEL8X0 is not set
@@ -989,58 +1076,67 @@ CONFIG_SND_AD1889=y
989# CONFIG_SND_TRIDENT is not set 1076# CONFIG_SND_TRIDENT is not set
990# CONFIG_SND_VIA82XX is not set 1077# CONFIG_SND_VIA82XX is not set
991# CONFIG_SND_VIA82XX_MODEM is not set 1078# CONFIG_SND_VIA82XX_MODEM is not set
1079# CONFIG_SND_VIRTUOSO is not set
992# CONFIG_SND_VX222 is not set 1080# CONFIG_SND_VX222 is not set
993# CONFIG_SND_YMFPCI is not set 1081# CONFIG_SND_YMFPCI is not set
994# CONFIG_SND_AC97_POWER_SAVE is not set 1082CONFIG_SND_USB=y
995
996#
997# USB devices
998#
999# CONFIG_SND_USB_AUDIO is not set 1083# CONFIG_SND_USB_AUDIO is not set
1000# CONFIG_SND_USB_CAIAQ is not set 1084# CONFIG_SND_USB_CAIAQ is not set
1001 1085CONFIG_SND_PCMCIA=y
1002#
1003# PCMCIA devices
1004#
1005# CONFIG_SND_VXPOCKET is not set 1086# CONFIG_SND_VXPOCKET is not set
1006# CONFIG_SND_PDAUDIOCF is not set 1087# CONFIG_SND_PDAUDIOCF is not set
1007 1088CONFIG_SND_GSC=y
1008#
1009# GSC devices
1010#
1011CONFIG_SND_HARMONY=y 1089CONFIG_SND_HARMONY=y
1012
1013#
1014# System on Chip audio support
1015#
1016# CONFIG_SND_SOC is not set 1090# CONFIG_SND_SOC is not set
1017
1018#
1019# SoC Audio support for SuperH
1020#
1021
1022#
1023# Open Sound System
1024#
1025# CONFIG_SOUND_PRIME is not set 1091# CONFIG_SOUND_PRIME is not set
1026CONFIG_AC97_BUS=y 1092CONFIG_AC97_BUS=y
1027CONFIG_HID_SUPPORT=y 1093CONFIG_HID_SUPPORT=y
1028CONFIG_HID=y 1094CONFIG_HID=y
1029CONFIG_HID_DEBUG=y 1095CONFIG_HID_DEBUG=y
1096# CONFIG_HIDRAW is not set
1030 1097
1031# 1098#
1032# USB Input Devices 1099# USB Input Devices
1033# 1100#
1034CONFIG_USB_HID=y 1101CONFIG_USB_HID=y
1035# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1102# CONFIG_HID_PID is not set
1036# CONFIG_HID_FF is not set
1037# CONFIG_USB_HIDDEV is not set 1103# CONFIG_USB_HIDDEV is not set
1104
1105#
1106# Special HID drivers
1107#
1108CONFIG_HID_COMPAT=y
1109CONFIG_HID_A4TECH=y
1110CONFIG_HID_APPLE=y
1111CONFIG_HID_BELKIN=y
1112CONFIG_HID_CHERRY=y
1113CONFIG_HID_CHICONY=y
1114CONFIG_HID_CYPRESS=y
1115CONFIG_HID_EZKEY=y
1116CONFIG_HID_GYRATION=y
1117CONFIG_HID_LOGITECH=y
1118# CONFIG_LOGITECH_FF is not set
1119# CONFIG_LOGIRUMBLEPAD2_FF is not set
1120CONFIG_HID_MICROSOFT=y
1121CONFIG_HID_MONTEREY=y
1122CONFIG_HID_NTRIG=y
1123CONFIG_HID_PANTHERLORD=y
1124# CONFIG_PANTHERLORD_FF is not set
1125CONFIG_HID_PETALYNX=y
1126CONFIG_HID_SAMSUNG=y
1127CONFIG_HID_SONY=y
1128CONFIG_HID_SUNPLUS=y
1129# CONFIG_GREENASIA_FF is not set
1130CONFIG_HID_TOPSEED=y
1131# CONFIG_THRUSTMASTER_FF is not set
1132# CONFIG_ZEROPLUS_FF is not set
1038CONFIG_USB_SUPPORT=y 1133CONFIG_USB_SUPPORT=y
1039CONFIG_USB_ARCH_HAS_HCD=y 1134CONFIG_USB_ARCH_HAS_HCD=y
1040CONFIG_USB_ARCH_HAS_OHCI=y 1135CONFIG_USB_ARCH_HAS_OHCI=y
1041CONFIG_USB_ARCH_HAS_EHCI=y 1136CONFIG_USB_ARCH_HAS_EHCI=y
1042CONFIG_USB=y 1137CONFIG_USB=y
1043# CONFIG_USB_DEBUG is not set 1138# CONFIG_USB_DEBUG is not set
1139# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1044 1140
1045# 1141#
1046# Miscellaneous USB options 1142# Miscellaneous USB options
@@ -1049,12 +1145,18 @@ CONFIG_USB_DEVICEFS=y
1049CONFIG_USB_DEVICE_CLASS=y 1145CONFIG_USB_DEVICE_CLASS=y
1050# CONFIG_USB_DYNAMIC_MINORS is not set 1146# CONFIG_USB_DYNAMIC_MINORS is not set
1051# CONFIG_USB_OTG is not set 1147# CONFIG_USB_OTG is not set
1148CONFIG_USB_MON=y
1149# CONFIG_USB_WUSB is not set
1150# CONFIG_USB_WUSB_CBAF is not set
1052 1151
1053# 1152#
1054# USB Host Controller Drivers 1153# USB Host Controller Drivers
1055# 1154#
1155# CONFIG_USB_C67X00_HCD is not set
1056# CONFIG_USB_EHCI_HCD is not set 1156# CONFIG_USB_EHCI_HCD is not set
1157# CONFIG_USB_OXU210HP_HCD is not set
1057# CONFIG_USB_ISP116X_HCD is not set 1158# CONFIG_USB_ISP116X_HCD is not set
1159# CONFIG_USB_ISP1760_HCD is not set
1058CONFIG_USB_OHCI_HCD=y 1160CONFIG_USB_OHCI_HCD=y
1059# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1161# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1060# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1162# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -1062,19 +1164,23 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1062CONFIG_USB_UHCI_HCD=y 1164CONFIG_USB_UHCI_HCD=y
1063# CONFIG_USB_SL811_HCD is not set 1165# CONFIG_USB_SL811_HCD is not set
1064# CONFIG_USB_R8A66597_HCD is not set 1166# CONFIG_USB_R8A66597_HCD is not set
1167# CONFIG_USB_WHCI_HCD is not set
1168# CONFIG_USB_HWA_HCD is not set
1065 1169
1066# 1170#
1067# USB Device Class drivers 1171# USB Device Class drivers
1068# 1172#
1069# CONFIG_USB_ACM is not set 1173# CONFIG_USB_ACM is not set
1070# CONFIG_USB_PRINTER is not set 1174# CONFIG_USB_PRINTER is not set
1175# CONFIG_USB_WDM is not set
1176# CONFIG_USB_TMC is not set
1071 1177
1072# 1178#
1073# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1179# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1074# 1180#
1075 1181
1076# 1182#
1077# may also be needed; see USB_STORAGE Help for more information 1183# see USB_STORAGE Help for more information
1078# 1184#
1079# CONFIG_USB_STORAGE is not set 1185# CONFIG_USB_STORAGE is not set
1080# CONFIG_USB_LIBUSUAL is not set 1186# CONFIG_USB_LIBUSUAL is not set
@@ -1084,16 +1190,11 @@ CONFIG_USB_UHCI_HCD=y
1084# 1190#
1085# CONFIG_USB_MDC800 is not set 1191# CONFIG_USB_MDC800 is not set
1086# CONFIG_USB_MICROTEK is not set 1192# CONFIG_USB_MICROTEK is not set
1087CONFIG_USB_MON=y
1088 1193
1089# 1194#
1090# USB port drivers 1195# USB port drivers
1091# 1196#
1092# CONFIG_USB_USS720 is not set 1197# CONFIG_USB_USS720 is not set
1093
1094#
1095# USB Serial Converter support
1096#
1097# CONFIG_USB_SERIAL is not set 1198# CONFIG_USB_SERIAL is not set
1098 1199
1099# 1200#
@@ -1102,7 +1203,7 @@ CONFIG_USB_MON=y
1102# CONFIG_USB_EMI62 is not set 1203# CONFIG_USB_EMI62 is not set
1103# CONFIG_USB_EMI26 is not set 1204# CONFIG_USB_EMI26 is not set
1104# CONFIG_USB_ADUTUX is not set 1205# CONFIG_USB_ADUTUX is not set
1105# CONFIG_USB_AUERSWALD is not set 1206# CONFIG_USB_SEVSEG is not set
1106# CONFIG_USB_RIO500 is not set 1207# CONFIG_USB_RIO500 is not set
1107# CONFIG_USB_LEGOTOWER is not set 1208# CONFIG_USB_LEGOTOWER is not set
1108# CONFIG_USB_LCD is not set 1209# CONFIG_USB_LCD is not set
@@ -1118,38 +1219,60 @@ CONFIG_USB_MON=y
1118# CONFIG_USB_TRANCEVIBRATOR is not set 1219# CONFIG_USB_TRANCEVIBRATOR is not set
1119# CONFIG_USB_IOWARRIOR is not set 1220# CONFIG_USB_IOWARRIOR is not set
1120# CONFIG_USB_TEST is not set 1221# CONFIG_USB_TEST is not set
1222# CONFIG_USB_ISIGHTFW is not set
1223# CONFIG_USB_VST is not set
1224# CONFIG_USB_GADGET is not set
1121 1225
1122# 1226#
1123# USB DSL modem support 1227# OTG and related infrastructure
1124#
1125
1126#
1127# USB Gadget Support
1128# 1228#
1129# CONFIG_USB_GADGET is not set 1229# CONFIG_UWB is not set
1130# CONFIG_MMC is not set 1230# CONFIG_MMC is not set
1231# CONFIG_MEMSTICK is not set
1131# CONFIG_NEW_LEDS is not set 1232# CONFIG_NEW_LEDS is not set
1233# CONFIG_ACCESSIBILITY is not set
1132# CONFIG_INFINIBAND is not set 1234# CONFIG_INFINIBAND is not set
1133# CONFIG_RTC_CLASS is not set 1235CONFIG_RTC_LIB=y
1236CONFIG_RTC_CLASS=y
1237CONFIG_RTC_HCTOSYS=y
1238CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1239# CONFIG_RTC_DEBUG is not set
1134 1240
1135# 1241#
1136# DMA Engine support 1242# RTC interfaces
1137# 1243#
1138# CONFIG_DMA_ENGINE is not set 1244CONFIG_RTC_INTF_SYSFS=y
1245CONFIG_RTC_INTF_PROC=y
1246CONFIG_RTC_INTF_DEV=y
1247# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1248# CONFIG_RTC_DRV_TEST is not set
1139 1249
1140# 1250#
1141# DMA Clients 1251# SPI RTC drivers
1142# 1252#
1143 1253
1144# 1254#
1145# DMA Devices 1255# Platform RTC drivers
1146# 1256#
1147# CONFIG_AUXDISPLAY is not set 1257# CONFIG_RTC_DRV_DS1286 is not set
1258# CONFIG_RTC_DRV_DS1511 is not set
1259# CONFIG_RTC_DRV_DS1553 is not set
1260# CONFIG_RTC_DRV_DS1742 is not set
1261# CONFIG_RTC_DRV_STK17TA8 is not set
1262# CONFIG_RTC_DRV_M48T86 is not set
1263# CONFIG_RTC_DRV_M48T35 is not set
1264# CONFIG_RTC_DRV_M48T59 is not set
1265# CONFIG_RTC_DRV_BQ4802 is not set
1266# CONFIG_RTC_DRV_V3020 is not set
1148 1267
1149# 1268#
1150# Userspace I/O 1269# on-CPU RTC drivers
1151# 1270#
1271CONFIG_RTC_DRV_PARISC=y
1272# CONFIG_DMADEVICES is not set
1273# CONFIG_AUXDISPLAY is not set
1152# CONFIG_UIO is not set 1274# CONFIG_UIO is not set
1275# CONFIG_STAGING is not set
1153 1276
1154# 1277#
1155# File systems 1278# File systems
@@ -1159,21 +1282,20 @@ CONFIG_EXT2_FS=y
1159# CONFIG_EXT2_FS_XIP is not set 1282# CONFIG_EXT2_FS_XIP is not set
1160CONFIG_EXT3_FS=y 1283CONFIG_EXT3_FS=y
1161# CONFIG_EXT3_FS_XATTR is not set 1284# CONFIG_EXT3_FS_XATTR is not set
1162# CONFIG_EXT4DEV_FS is not set 1285# CONFIG_EXT4_FS is not set
1163CONFIG_JBD=y 1286CONFIG_JBD=y
1164# CONFIG_JBD_DEBUG is not set 1287# CONFIG_JBD_DEBUG is not set
1165# CONFIG_REISERFS_FS is not set 1288# CONFIG_REISERFS_FS is not set
1166# CONFIG_JFS_FS is not set 1289# CONFIG_JFS_FS is not set
1167CONFIG_FS_POSIX_ACL=y 1290CONFIG_FS_POSIX_ACL=y
1291CONFIG_FILE_LOCKING=y
1168# CONFIG_XFS_FS is not set 1292# CONFIG_XFS_FS is not set
1169# CONFIG_GFS2_FS is not set
1170# CONFIG_OCFS2_FS is not set 1293# CONFIG_OCFS2_FS is not set
1171# CONFIG_MINIX_FS is not set 1294# CONFIG_BTRFS_FS is not set
1172# CONFIG_ROMFS_FS is not set 1295CONFIG_DNOTIFY=y
1173CONFIG_INOTIFY=y 1296CONFIG_INOTIFY=y
1174CONFIG_INOTIFY_USER=y 1297CONFIG_INOTIFY_USER=y
1175# CONFIG_QUOTA is not set 1298# CONFIG_QUOTA is not set
1176CONFIG_DNOTIFY=y
1177CONFIG_AUTOFS_FS=y 1299CONFIG_AUTOFS_FS=y
1178# CONFIG_AUTOFS4_FS is not set 1300# CONFIG_AUTOFS4_FS is not set
1179# CONFIG_FUSE_FS is not set 1301# CONFIG_FUSE_FS is not set
@@ -1202,16 +1324,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1202CONFIG_PROC_FS=y 1324CONFIG_PROC_FS=y
1203CONFIG_PROC_KCORE=y 1325CONFIG_PROC_KCORE=y
1204CONFIG_PROC_SYSCTL=y 1326CONFIG_PROC_SYSCTL=y
1327CONFIG_PROC_PAGE_MONITOR=y
1205CONFIG_SYSFS=y 1328CONFIG_SYSFS=y
1206CONFIG_TMPFS=y 1329CONFIG_TMPFS=y
1207# CONFIG_TMPFS_POSIX_ACL is not set 1330# CONFIG_TMPFS_POSIX_ACL is not set
1208# CONFIG_HUGETLB_PAGE is not set 1331# CONFIG_HUGETLB_PAGE is not set
1209CONFIG_RAMFS=y
1210# CONFIG_CONFIGFS_FS is not set 1332# CONFIG_CONFIGFS_FS is not set
1211 1333CONFIG_MISC_FILESYSTEMS=y
1212#
1213# Miscellaneous filesystems
1214#
1215# CONFIG_ADFS_FS is not set 1334# CONFIG_ADFS_FS is not set
1216# CONFIG_AFFS_FS is not set 1335# CONFIG_AFFS_FS is not set
1217# CONFIG_ECRYPT_FS is not set 1336# CONFIG_ECRYPT_FS is not set
@@ -1221,33 +1340,32 @@ CONFIG_RAMFS=y
1221# CONFIG_BFS_FS is not set 1340# CONFIG_BFS_FS is not set
1222# CONFIG_EFS_FS is not set 1341# CONFIG_EFS_FS is not set
1223# CONFIG_CRAMFS is not set 1342# CONFIG_CRAMFS is not set
1343# CONFIG_SQUASHFS is not set
1224# CONFIG_VXFS_FS is not set 1344# CONFIG_VXFS_FS is not set
1345# CONFIG_MINIX_FS is not set
1346# CONFIG_OMFS_FS is not set
1225# CONFIG_HPFS_FS is not set 1347# CONFIG_HPFS_FS is not set
1226# CONFIG_QNX4FS_FS is not set 1348# CONFIG_QNX4FS_FS is not set
1349# CONFIG_ROMFS_FS is not set
1227# CONFIG_SYSV_FS is not set 1350# CONFIG_SYSV_FS is not set
1228# CONFIG_UFS_FS is not set 1351# CONFIG_UFS_FS is not set
1229 1352CONFIG_NETWORK_FILESYSTEMS=y
1230#
1231# Network File Systems
1232#
1233CONFIG_NFS_FS=y 1353CONFIG_NFS_FS=y
1234CONFIG_NFS_V3=y 1354CONFIG_NFS_V3=y
1235# CONFIG_NFS_V3_ACL is not set 1355# CONFIG_NFS_V3_ACL is not set
1236# CONFIG_NFS_V4 is not set 1356# CONFIG_NFS_V4 is not set
1237# CONFIG_NFS_DIRECTIO is not set 1357CONFIG_ROOT_NFS=y
1238CONFIG_NFSD=y 1358CONFIG_NFSD=y
1239CONFIG_NFSD_V3=y 1359CONFIG_NFSD_V3=y
1240# CONFIG_NFSD_V3_ACL is not set 1360# CONFIG_NFSD_V3_ACL is not set
1241CONFIG_NFSD_V4=y 1361CONFIG_NFSD_V4=y
1242CONFIG_NFSD_TCP=y
1243CONFIG_ROOT_NFS=y
1244CONFIG_LOCKD=y 1362CONFIG_LOCKD=y
1245CONFIG_LOCKD_V4=y 1363CONFIG_LOCKD_V4=y
1246CONFIG_EXPORTFS=y 1364CONFIG_EXPORTFS=y
1247CONFIG_NFS_COMMON=y 1365CONFIG_NFS_COMMON=y
1248CONFIG_SUNRPC=y 1366CONFIG_SUNRPC=y
1249CONFIG_SUNRPC_GSS=y 1367CONFIG_SUNRPC_GSS=y
1250# CONFIG_SUNRPC_BIND34 is not set 1368# CONFIG_SUNRPC_REGISTER_V4 is not set
1251CONFIG_RPCSEC_GSS_KRB5=y 1369CONFIG_RPCSEC_GSS_KRB5=y
1252CONFIG_RPCSEC_GSS_SPKM3=m 1370CONFIG_RPCSEC_GSS_SPKM3=m
1253CONFIG_SMB_FS=m 1371CONFIG_SMB_FS=m
@@ -1256,6 +1374,7 @@ CONFIG_SMB_NLS_REMOTE="cp437"
1256CONFIG_CIFS=m 1374CONFIG_CIFS=m
1257# CONFIG_CIFS_STATS is not set 1375# CONFIG_CIFS_STATS is not set
1258# CONFIG_CIFS_WEAK_PW_HASH is not set 1376# CONFIG_CIFS_WEAK_PW_HASH is not set
1377# CONFIG_CIFS_UPCALL is not set
1259# CONFIG_CIFS_XATTR is not set 1378# CONFIG_CIFS_XATTR is not set
1260# CONFIG_CIFS_DEBUG2 is not set 1379# CONFIG_CIFS_DEBUG2 is not set
1261# CONFIG_CIFS_EXPERIMENTAL is not set 1380# CONFIG_CIFS_EXPERIMENTAL is not set
@@ -1268,10 +1387,6 @@ CONFIG_CIFS=m
1268# 1387#
1269# CONFIG_PARTITION_ADVANCED is not set 1388# CONFIG_PARTITION_ADVANCED is not set
1270CONFIG_MSDOS_PARTITION=y 1389CONFIG_MSDOS_PARTITION=y
1271
1272#
1273# Native Language Support
1274#
1275CONFIG_NLS=y 1390CONFIG_NLS=y
1276CONFIG_NLS_DEFAULT="iso8859-1" 1391CONFIG_NLS_DEFAULT="iso8859-1"
1277CONFIG_NLS_CODEPAGE_437=y 1392CONFIG_NLS_CODEPAGE_437=y
@@ -1312,33 +1427,28 @@ CONFIG_NLS_ISO8859_15=m
1312CONFIG_NLS_KOI8_R=m 1427CONFIG_NLS_KOI8_R=m
1313CONFIG_NLS_KOI8_U=m 1428CONFIG_NLS_KOI8_U=m
1314CONFIG_NLS_UTF8=y 1429CONFIG_NLS_UTF8=y
1315
1316#
1317# Distributed Lock Manager
1318#
1319# CONFIG_DLM is not set 1430# CONFIG_DLM is not set
1320 1431
1321# 1432#
1322# Profiling support
1323#
1324CONFIG_PROFILING=y
1325CONFIG_OPROFILE=m
1326
1327#
1328# Kernel hacking 1433# Kernel hacking
1329# 1434#
1330# CONFIG_PRINTK_TIME is not set 1435# CONFIG_PRINTK_TIME is not set
1436CONFIG_ENABLE_WARN_DEPRECATED=y
1331CONFIG_ENABLE_MUST_CHECK=y 1437CONFIG_ENABLE_MUST_CHECK=y
1438CONFIG_FRAME_WARN=1024
1332CONFIG_MAGIC_SYSRQ=y 1439CONFIG_MAGIC_SYSRQ=y
1333# CONFIG_UNUSED_SYMBOLS is not set 1440# CONFIG_UNUSED_SYMBOLS is not set
1334# CONFIG_DEBUG_FS is not set 1441CONFIG_DEBUG_FS=y
1335CONFIG_HEADERS_CHECK=y 1442CONFIG_HEADERS_CHECK=y
1336CONFIG_DEBUG_KERNEL=y 1443CONFIG_DEBUG_KERNEL=y
1337# CONFIG_DEBUG_SHIRQ is not set 1444# CONFIG_DEBUG_SHIRQ is not set
1338CONFIG_DETECT_SOFTLOCKUP=y 1445CONFIG_DETECT_SOFTLOCKUP=y
1446# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1447CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1339CONFIG_SCHED_DEBUG=y 1448CONFIG_SCHED_DEBUG=y
1340# CONFIG_SCHEDSTATS is not set 1449# CONFIG_SCHEDSTATS is not set
1341# CONFIG_TIMER_STATS is not set 1450# CONFIG_TIMER_STATS is not set
1451# CONFIG_DEBUG_OBJECTS is not set
1342# CONFIG_DEBUG_SLAB is not set 1452# CONFIG_DEBUG_SLAB is not set
1343# CONFIG_DEBUG_RT_MUTEXES is not set 1453# CONFIG_DEBUG_RT_MUTEXES is not set
1344# CONFIG_RT_MUTEX_TESTER is not set 1454# CONFIG_RT_MUTEX_TESTER is not set
@@ -1350,10 +1460,33 @@ CONFIG_DEBUG_MUTEXES=y
1350CONFIG_DEBUG_BUGVERBOSE=y 1460CONFIG_DEBUG_BUGVERBOSE=y
1351# CONFIG_DEBUG_INFO is not set 1461# CONFIG_DEBUG_INFO is not set
1352# CONFIG_DEBUG_VM is not set 1462# CONFIG_DEBUG_VM is not set
1463# CONFIG_DEBUG_WRITECOUNT is not set
1464CONFIG_DEBUG_MEMORY_INIT=y
1353# CONFIG_DEBUG_LIST is not set 1465# CONFIG_DEBUG_LIST is not set
1354CONFIG_FORCED_INLINING=y 1466# CONFIG_DEBUG_SG is not set
1467# CONFIG_DEBUG_NOTIFIERS is not set
1468# CONFIG_BOOT_PRINTK_DELAY is not set
1355# CONFIG_RCU_TORTURE_TEST is not set 1469# CONFIG_RCU_TORTURE_TEST is not set
1470# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1471# CONFIG_BACKTRACE_SELF_TEST is not set
1472# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1356# CONFIG_FAULT_INJECTION is not set 1473# CONFIG_FAULT_INJECTION is not set
1474# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1475CONFIG_NOP_TRACER=y
1476CONFIG_RING_BUFFER=y
1477CONFIG_TRACING=y
1478
1479#
1480# Tracers
1481#
1482# CONFIG_SCHED_TRACER is not set
1483# CONFIG_CONTEXT_SWITCH_TRACER is not set
1484# CONFIG_BOOT_TRACER is not set
1485# CONFIG_TRACE_BRANCH_PROFILING is not set
1486# CONFIG_FTRACE_STARTUP_TEST is not set
1487# CONFIG_BUILD_DOCSRC is not set
1488# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1489# CONFIG_SAMPLES is not set
1357# CONFIG_DEBUG_RODATA is not set 1490# CONFIG_DEBUG_RODATA is not set
1358 1491
1359# 1492#
@@ -1362,56 +1495,112 @@ CONFIG_FORCED_INLINING=y
1362CONFIG_KEYS=y 1495CONFIG_KEYS=y
1363CONFIG_KEYS_DEBUG_PROC_KEYS=y 1496CONFIG_KEYS_DEBUG_PROC_KEYS=y
1364# CONFIG_SECURITY is not set 1497# CONFIG_SECURITY is not set
1498# CONFIG_SECURITYFS is not set
1499# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1365CONFIG_CRYPTO=y 1500CONFIG_CRYPTO=y
1501
1502#
1503# Crypto core or helper
1504#
1505# CONFIG_CRYPTO_FIPS is not set
1366CONFIG_CRYPTO_ALGAPI=y 1506CONFIG_CRYPTO_ALGAPI=y
1507CONFIG_CRYPTO_ALGAPI2=y
1508CONFIG_CRYPTO_AEAD=y
1509CONFIG_CRYPTO_AEAD2=y
1367CONFIG_CRYPTO_BLKCIPHER=y 1510CONFIG_CRYPTO_BLKCIPHER=y
1511CONFIG_CRYPTO_BLKCIPHER2=y
1368CONFIG_CRYPTO_HASH=y 1512CONFIG_CRYPTO_HASH=y
1513CONFIG_CRYPTO_HASH2=y
1514CONFIG_CRYPTO_RNG2=y
1369CONFIG_CRYPTO_MANAGER=y 1515CONFIG_CRYPTO_MANAGER=y
1516CONFIG_CRYPTO_MANAGER2=y
1517# CONFIG_CRYPTO_GF128MUL is not set
1518CONFIG_CRYPTO_NULL=m
1519# CONFIG_CRYPTO_CRYPTD is not set
1520CONFIG_CRYPTO_AUTHENC=y
1521CONFIG_CRYPTO_TEST=m
1522
1523#
1524# Authenticated Encryption with Associated Data
1525#
1526# CONFIG_CRYPTO_CCM is not set
1527# CONFIG_CRYPTO_GCM is not set
1528# CONFIG_CRYPTO_SEQIV is not set
1529
1530#
1531# Block modes
1532#
1533CONFIG_CRYPTO_CBC=y
1534# CONFIG_CRYPTO_CTR is not set
1535# CONFIG_CRYPTO_CTS is not set
1536# CONFIG_CRYPTO_ECB is not set
1537# CONFIG_CRYPTO_LRW is not set
1538# CONFIG_CRYPTO_PCBC is not set
1539# CONFIG_CRYPTO_XTS is not set
1540
1541#
1542# Hash modes
1543#
1370CONFIG_CRYPTO_HMAC=y 1544CONFIG_CRYPTO_HMAC=y
1371# CONFIG_CRYPTO_XCBC is not set 1545# CONFIG_CRYPTO_XCBC is not set
1372CONFIG_CRYPTO_NULL=m 1546
1547#
1548# Digest
1549#
1550CONFIG_CRYPTO_CRC32C=m
1373CONFIG_CRYPTO_MD4=m 1551CONFIG_CRYPTO_MD4=m
1374CONFIG_CRYPTO_MD5=y 1552CONFIG_CRYPTO_MD5=y
1553CONFIG_CRYPTO_MICHAEL_MIC=m
1554# CONFIG_CRYPTO_RMD128 is not set
1555# CONFIG_CRYPTO_RMD160 is not set
1556# CONFIG_CRYPTO_RMD256 is not set
1557# CONFIG_CRYPTO_RMD320 is not set
1375CONFIG_CRYPTO_SHA1=y 1558CONFIG_CRYPTO_SHA1=y
1376CONFIG_CRYPTO_SHA256=m 1559CONFIG_CRYPTO_SHA256=m
1377CONFIG_CRYPTO_SHA512=m 1560CONFIG_CRYPTO_SHA512=m
1378CONFIG_CRYPTO_WP512=m
1379CONFIG_CRYPTO_TGR192=m 1561CONFIG_CRYPTO_TGR192=m
1380# CONFIG_CRYPTO_GF128MUL is not set 1562CONFIG_CRYPTO_WP512=m
1381# CONFIG_CRYPTO_ECB is not set 1563
1382CONFIG_CRYPTO_CBC=y 1564#
1383# CONFIG_CRYPTO_PCBC is not set 1565# Ciphers
1384# CONFIG_CRYPTO_LRW is not set 1566#
1385# CONFIG_CRYPTO_XTS is not set
1386# CONFIG_CRYPTO_CRYPTD is not set
1387CONFIG_CRYPTO_DES=y
1388# CONFIG_CRYPTO_FCRYPT is not set
1389CONFIG_CRYPTO_BLOWFISH=m
1390CONFIG_CRYPTO_TWOFISH=m
1391CONFIG_CRYPTO_TWOFISH_COMMON=m
1392CONFIG_CRYPTO_SERPENT=m
1393CONFIG_CRYPTO_AES=m 1567CONFIG_CRYPTO_AES=m
1568CONFIG_CRYPTO_ANUBIS=m
1569CONFIG_CRYPTO_ARC4=m
1570CONFIG_CRYPTO_BLOWFISH=m
1571# CONFIG_CRYPTO_CAMELLIA is not set
1394CONFIG_CRYPTO_CAST5=m 1572CONFIG_CRYPTO_CAST5=m
1395CONFIG_CRYPTO_CAST6=m 1573CONFIG_CRYPTO_CAST6=m
1396CONFIG_CRYPTO_TEA=m 1574CONFIG_CRYPTO_DES=y
1397CONFIG_CRYPTO_ARC4=m 1575# CONFIG_CRYPTO_FCRYPT is not set
1398CONFIG_CRYPTO_KHAZAD=m 1576CONFIG_CRYPTO_KHAZAD=m
1399CONFIG_CRYPTO_ANUBIS=m 1577# CONFIG_CRYPTO_SALSA20 is not set
1400# CONFIG_CRYPTO_SEED is not set 1578# CONFIG_CRYPTO_SEED is not set
1579CONFIG_CRYPTO_SERPENT=m
1580CONFIG_CRYPTO_TEA=m
1581CONFIG_CRYPTO_TWOFISH=m
1582CONFIG_CRYPTO_TWOFISH_COMMON=m
1583
1584#
1585# Compression
1586#
1401CONFIG_CRYPTO_DEFLATE=y 1587CONFIG_CRYPTO_DEFLATE=y
1402CONFIG_CRYPTO_MICHAEL_MIC=m 1588# CONFIG_CRYPTO_LZO is not set
1403CONFIG_CRYPTO_CRC32C=m 1589
1404# CONFIG_CRYPTO_CAMELLIA is not set 1590#
1405CONFIG_CRYPTO_TEST=m 1591# Random Number Generation
1406# CONFIG_CRYPTO_AUTHENC is not set 1592#
1593# CONFIG_CRYPTO_ANSI_CPRNG is not set
1407# CONFIG_CRYPTO_HW is not set 1594# CONFIG_CRYPTO_HW is not set
1408 1595
1409# 1596#
1410# Library routines 1597# Library routines
1411# 1598#
1412CONFIG_BITREVERSE=y 1599CONFIG_BITREVERSE=y
1600CONFIG_GENERIC_FIND_LAST_BIT=y
1413CONFIG_CRC_CCITT=m 1601CONFIG_CRC_CCITT=m
1414# CONFIG_CRC16 is not set 1602# CONFIG_CRC16 is not set
1603# CONFIG_CRC_T10DIF is not set
1415# CONFIG_CRC_ITU_T is not set 1604# CONFIG_CRC_ITU_T is not set
1416CONFIG_CRC32=y 1605CONFIG_CRC32=y
1417# CONFIG_CRC7 is not set 1606# CONFIG_CRC7 is not set
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c
index bd9a4db3bd4c..5cbe9f9e5d9e 100644
--- a/arch/parisc/hpux/fs.c
+++ b/arch/parisc/hpux/fs.c
@@ -137,7 +137,6 @@ int hpux_getdents(unsigned int fd, struct hpux_dirent __user *dirent, unsigned i
137 error = count - buf.count; 137 error = count - buf.count;
138 } 138 }
139 139
140out_putf:
141 fput(file); 140 fput(file);
142out: 141out:
143 return error; 142 return error;
diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h
index ffb208840ecc..89fb40005e3f 100644
--- a/arch/parisc/include/asm/assembly.h
+++ b/arch/parisc/include/asm/assembly.h
@@ -79,6 +79,7 @@
79 79
80#include <asm/asm-offsets.h> 80#include <asm/asm-offsets.h>
81#include <asm/page.h> 81#include <asm/page.h>
82#include <asm/types.h>
82 83
83#include <asm/asmregs.h> 84#include <asm/asmregs.h>
84 85
@@ -129,27 +130,27 @@
129 130
130 /* Shift Left - note the r and t can NOT be the same! */ 131 /* Shift Left - note the r and t can NOT be the same! */
131 .macro shl r, sa, t 132 .macro shl r, sa, t
132 dep,z \r, 31-\sa, 32-\sa, \t 133 dep,z \r, 31-(\sa), 32-(\sa), \t
133 .endm 134 .endm
134 135
135 /* The PA 2.0 shift left */ 136 /* The PA 2.0 shift left */
136 .macro shlw r, sa, t 137 .macro shlw r, sa, t
137 depw,z \r, 31-\sa, 32-\sa, \t 138 depw,z \r, 31-(\sa), 32-(\sa), \t
138 .endm 139 .endm
139 140
140 /* And the PA 2.0W shift left */ 141 /* And the PA 2.0W shift left */
141 .macro shld r, sa, t 142 .macro shld r, sa, t
142 depd,z \r, 63-\sa, 64-\sa, \t 143 depd,z \r, 63-(\sa), 64-(\sa), \t
143 .endm 144 .endm
144 145
145 /* Shift Right - note the r and t can NOT be the same! */ 146 /* Shift Right - note the r and t can NOT be the same! */
146 .macro shr r, sa, t 147 .macro shr r, sa, t
147 extru \r, 31-\sa, 32-\sa, \t 148 extru \r, 31-(\sa), 32-(\sa), \t
148 .endm 149 .endm
149 150
150 /* pa20w version of shift right */ 151 /* pa20w version of shift right */
151 .macro shrd r, sa, t 152 .macro shrd r, sa, t
152 extrd,u \r, 63-\sa, 64-\sa, \t 153 extrd,u \r, 63-(\sa), 64-(\sa), \t
153 .endm 154 .endm
154 155
155 /* load 32-bit 'value' into 'reg' compensating for the ldil 156 /* load 32-bit 'value' into 'reg' compensating for the ldil
diff --git a/arch/parisc/include/asm/io.h b/arch/parisc/include/asm/io.h
index d3031d1f9d03..1f6d2ae7aba5 100644
--- a/arch/parisc/include/asm/io.h
+++ b/arch/parisc/include/asm/io.h
@@ -174,15 +174,48 @@ static inline void __raw_writeq(unsigned long long b, volatile void __iomem *add
174 *(volatile unsigned long long __force *) addr = b; 174 *(volatile unsigned long long __force *) addr = b;
175} 175}
176 176
177/* readb can never be const, so use __fswab instead of le*_to_cpu */ 177static inline unsigned char readb(const volatile void __iomem *addr)
178#define readb(addr) __raw_readb(addr) 178{
179#define readw(addr) le16_to_cpu(__raw_readw(addr)) 179 return __raw_readb(addr);
180#define readl(addr) le32_to_cpu(__raw_readl(addr)) 180}
181#define readq(addr) le64_to_cpu(__raw_readq(addr)) 181static inline unsigned short readw(const volatile void __iomem *addr)
182#define writeb(b, addr) __raw_writeb(b, addr) 182{
183#define writew(b, addr) __raw_writew(cpu_to_le16(b), addr) 183 return le16_to_cpu(__raw_readw(addr));
184#define writel(b, addr) __raw_writel(cpu_to_le32(b), addr) 184}
185#define writeq(b, addr) __raw_writeq(cpu_to_le64(b), addr) 185static inline unsigned int readl(const volatile void __iomem *addr)
186{
187 return le32_to_cpu(__raw_readl(addr));
188}
189static inline unsigned long long readq(const volatile void __iomem *addr)
190{
191 return le64_to_cpu(__raw_readq(addr));
192}
193
194static inline void writeb(unsigned char b, volatile void __iomem *addr)
195{
196 __raw_writeb(b, addr);
197}
198static inline void writew(unsigned short w, volatile void __iomem *addr)
199{
200 __raw_writew(cpu_to_le16(w), addr);
201}
202static inline void writel(unsigned int l, volatile void __iomem *addr)
203{
204 __raw_writel(cpu_to_le32(l), addr);
205}
206static inline void writeq(unsigned long long q, volatile void __iomem *addr)
207{
208 __raw_writeq(cpu_to_le64(q), addr);
209}
210
211#define readb readb
212#define readw readw
213#define readl readl
214#define readq readq
215#define writeb writeb
216#define writew writew
217#define writel writel
218#define writeq writeq
186 219
187#define readb_relaxed(addr) readb(addr) 220#define readb_relaxed(addr) readb(addr)
188#define readw_relaxed(addr) readw(addr) 221#define readw_relaxed(addr) readw(addr)
diff --git a/arch/parisc/include/asm/irq.h b/arch/parisc/include/asm/irq.h
index 399c81981ed5..dfa26b67f919 100644
--- a/arch/parisc/include/asm/irq.h
+++ b/arch/parisc/include/asm/irq.h
@@ -49,7 +49,7 @@ extern unsigned long txn_alloc_addr(unsigned int);
49extern unsigned long txn_affinity_addr(unsigned int irq, int cpu); 49extern unsigned long txn_affinity_addr(unsigned int irq, int cpu);
50 50
51extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *); 51extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *);
52extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest); 52extern int cpu_check_affinity(unsigned int irq, const struct cpumask *dest);
53 53
54/* soft power switch support (power.c) */ 54/* soft power switch support (power.c) */
55extern struct tasklet_struct power_tasklet; 55extern struct tasklet_struct power_tasklet;
diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
index 1c6dbb6f6e56..cd4c0b2a8e70 100644
--- a/arch/parisc/include/asm/uaccess.h
+++ b/arch/parisc/include/asm/uaccess.h
@@ -241,6 +241,7 @@ unsigned long copy_in_user(void __user *dst, const void __user *src, unsigned lo
241#define __copy_to_user_inatomic __copy_to_user 241#define __copy_to_user_inatomic __copy_to_user
242#define __copy_from_user_inatomic __copy_from_user 242#define __copy_from_user_inatomic __copy_from_user
243 243
244struct pt_regs;
244int fixup_exception(struct pt_regs *regs); 245int fixup_exception(struct pt_regs *regs);
245 246
246#endif /* __PARISC_UACCESS_H */ 247#endif /* __PARISC_UACCESS_H */
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index 5259d8c20676..837530ea32e7 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -551,10 +551,7 @@ void flush_cache_range(struct vm_area_struct *vma,
551{ 551{
552 int sr3; 552 int sr3;
553 553
554 if (!vma->vm_mm->context) { 554 BUG_ON(!vma->vm_mm->context);
555 BUG();
556 return;
557 }
558 555
559 sr3 = mfsp(3); 556 sr3 = mfsp(3);
560 if (vma->vm_mm->context == sr3) { 557 if (vma->vm_mm->context == sr3) {
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index d1fa4edd2d80..0db9fdcb7709 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -368,7 +368,7 @@
368 * abstractions for the macros */ 368 * abstractions for the macros */
369 .macro EXTR reg1,start,length,reg2 369 .macro EXTR reg1,start,length,reg2
370#ifdef CONFIG_64BIT 370#ifdef CONFIG_64BIT
371 extrd,u \reg1,32+\start,\length,\reg2 371 extrd,u \reg1,32+(\start),\length,\reg2
372#else 372#else
373 extrw,u \reg1,\start,\length,\reg2 373 extrw,u \reg1,\start,\length,\reg2
374#endif 374#endif
@@ -376,7 +376,7 @@
376 376
377 .macro DEP reg1,start,length,reg2 377 .macro DEP reg1,start,length,reg2
378#ifdef CONFIG_64BIT 378#ifdef CONFIG_64BIT
379 depd \reg1,32+\start,\length,\reg2 379 depd \reg1,32+(\start),\length,\reg2
380#else 380#else
381 depw \reg1,\start,\length,\reg2 381 depw \reg1,\start,\length,\reg2
382#endif 382#endif
@@ -384,7 +384,7 @@
384 384
385 .macro DEPI val,start,length,reg 385 .macro DEPI val,start,length,reg
386#ifdef CONFIG_64BIT 386#ifdef CONFIG_64BIT
387 depdi \val,32+\start,\length,\reg 387 depdi \val,32+(\start),\length,\reg
388#else 388#else
389 depwi \val,\start,\length,\reg 389 depwi \val,\start,\length,\reg
390#endif 390#endif
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index 03f26bd75bd8..f6d241238a78 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -151,7 +151,7 @@ static void convert_to_wide(unsigned long *addr)
151} 151}
152 152
153#ifdef CONFIG_64BIT 153#ifdef CONFIG_64BIT
154void __init set_firmware_width_unlocked(void) 154void __cpuinit set_firmware_width_unlocked(void)
155{ 155{
156 int ret; 156 int ret;
157 157
@@ -168,7 +168,7 @@ void __init set_firmware_width_unlocked(void)
168 * This function must be called before any pdc_* function that uses the 168 * This function must be called before any pdc_* function that uses the
169 * convert_to_wide function. 169 * convert_to_wide function.
170 */ 170 */
171void __init set_firmware_width(void) 171void __cpuinit set_firmware_width(void)
172{ 172{
173 unsigned long flags; 173 unsigned long flags;
174 spin_lock_irqsave(&pdc_lock, flags); 174 spin_lock_irqsave(&pdc_lock, flags);
@@ -176,11 +176,11 @@ void __init set_firmware_width(void)
176 spin_unlock_irqrestore(&pdc_lock, flags); 176 spin_unlock_irqrestore(&pdc_lock, flags);
177} 177}
178#else 178#else
179void __init set_firmware_width_unlocked(void) { 179void __cpuinit set_firmware_width_unlocked(void) {
180 return; 180 return;
181} 181}
182 182
183void __init set_firmware_width(void) { 183void __cpuinit set_firmware_width(void) {
184 return; 184 return;
185} 185}
186#endif /*CONFIG_64BIT*/ 186#endif /*CONFIG_64BIT*/
@@ -302,7 +302,7 @@ int pdc_chassis_warn(unsigned long *warn)
302 return retval; 302 return retval;
303} 303}
304 304
305int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info) 305int __cpuinit pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
306{ 306{
307 int ret; 307 int ret;
308 308
@@ -323,7 +323,7 @@ int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
323 * This PDC call returns the presence and status of all the coprocessors 323 * This PDC call returns the presence and status of all the coprocessors
324 * attached to the processor. 324 * attached to the processor.
325 */ 325 */
326int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) 326int __cpuinit pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info)
327{ 327{
328 int ret; 328 int ret;
329 unsigned long flags; 329 unsigned long flags;
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index 49482806863f..2b5f5915dd1d 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -112,7 +112,7 @@ void cpu_end_irq(unsigned int irq)
112} 112}
113 113
114#ifdef CONFIG_SMP 114#ifdef CONFIG_SMP
115int cpu_check_affinity(unsigned int irq, cpumask_t *dest) 115int cpu_check_affinity(unsigned int irq, const struct cpumask *dest)
116{ 116{
117 int cpu_dest; 117 int cpu_dest;
118 118
@@ -120,23 +120,25 @@ int cpu_check_affinity(unsigned int irq, cpumask_t *dest)
120 if (CHECK_IRQ_PER_CPU(irq)) { 120 if (CHECK_IRQ_PER_CPU(irq)) {
121 /* Bad linux design decision. The mask has already 121 /* Bad linux design decision. The mask has already
122 * been set; we must reset it */ 122 * been set; we must reset it */
123 cpumask_setall(irq_desc[irq].affinity); 123 cpumask_setall(&irq_desc[irq].affinity);
124 return -EINVAL; 124 return -EINVAL;
125 } 125 }
126 126
127 /* whatever mask they set, we just allow one CPU */ 127 /* whatever mask they set, we just allow one CPU */
128 cpu_dest = first_cpu(*dest); 128 cpu_dest = first_cpu(*dest);
129 *dest = cpumask_of_cpu(cpu_dest);
130 129
131 return 0; 130 return cpu_dest;
132} 131}
133 132
134static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest) 133static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest)
135{ 134{
136 if (cpu_check_affinity(irq, dest)) 135 int cpu_dest;
136
137 cpu_dest = cpu_check_affinity(irq, dest);
138 if (cpu_dest < 0)
137 return; 139 return;
138 140
139 cpumask_copy(irq_desc[irq].affinity, dest); 141 cpumask_copy(&irq_desc[irq].affinity, dest);
140} 142}
141#endif 143#endif
142 144
@@ -295,7 +297,7 @@ int txn_alloc_irq(unsigned int bits_wide)
295unsigned long txn_affinity_addr(unsigned int irq, int cpu) 297unsigned long txn_affinity_addr(unsigned int irq, int cpu)
296{ 298{
297#ifdef CONFIG_SMP 299#ifdef CONFIG_SMP
298 cpumask_copy(irq_desc[irq].affinity, cpumask_of(cpu)); 300 cpumask_copy(&irq_desc[irq].affinity, cpumask_of(cpu));
299#endif 301#endif
300 302
301 return per_cpu(cpu_data, cpu).txn_addr; 303 return per_cpu(cpu_data, cpu).txn_addr;
@@ -352,7 +354,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
352 irq = eirr_to_irq(eirr_val); 354 irq = eirr_to_irq(eirr_val);
353 355
354#ifdef CONFIG_SMP 356#ifdef CONFIG_SMP
355 cpumask_copy(&dest, irq_desc[irq].affinity); 357 cpumask_copy(&dest, &irq_desc[irq].affinity);
356 if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) && 358 if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) &&
357 !cpu_isset(smp_processor_id(), dest)) { 359 !cpu_isset(smp_processor_id(), dest)) {
358 int cpu = first_cpu(dest); 360 int cpu = first_cpu(dest);
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index df47895db828..7d927eac932b 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -447,10 +447,7 @@ static void pa11_dma_free_consistent (struct device *dev, size_t size, void *vad
447 447
448static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t size, enum dma_data_direction direction) 448static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t size, enum dma_data_direction direction)
449{ 449{
450 if (direction == DMA_NONE) { 450 BUG_ON(direction == DMA_NONE);
451 printk(KERN_ERR "pa11_dma_map_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
452 BUG();
453 }
454 451
455 flush_kernel_dcache_range((unsigned long) addr, size); 452 flush_kernel_dcache_range((unsigned long) addr, size);
456 return virt_to_phys(addr); 453 return virt_to_phys(addr);
@@ -458,10 +455,7 @@ static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t siz
458 455
459static void pa11_dma_unmap_single(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction) 456static void pa11_dma_unmap_single(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction)
460{ 457{
461 if (direction == DMA_NONE) { 458 BUG_ON(direction == DMA_NONE);
462 printk(KERN_ERR "pa11_dma_unmap_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
463 BUG();
464 }
465 459
466 if (direction == DMA_TO_DEVICE) 460 if (direction == DMA_TO_DEVICE)
467 return; 461 return;
@@ -480,8 +474,7 @@ static int pa11_dma_map_sg(struct device *dev, struct scatterlist *sglist, int n
480{ 474{
481 int i; 475 int i;
482 476
483 if (direction == DMA_NONE) 477 BUG_ON(direction == DMA_NONE);
484 BUG();
485 478
486 for (i = 0; i < nents; i++, sglist++ ) { 479 for (i = 0; i < nents; i++, sglist++ ) {
487 unsigned long vaddr = sg_virt_addr(sglist); 480 unsigned long vaddr = sg_virt_addr(sglist);
@@ -496,8 +489,7 @@ static void pa11_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, in
496{ 489{
497 int i; 490 int i;
498 491
499 if (direction == DMA_NONE) 492 BUG_ON(direction == DMA_NONE);
500 BUG();
501 493
502 if (direction == DMA_TO_DEVICE) 494 if (direction == DMA_TO_DEVICE)
503 return; 495 return;
@@ -511,16 +503,14 @@ static void pa11_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, in
511 503
512static void pa11_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) 504static void pa11_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
513{ 505{
514 if (direction == DMA_NONE) 506 BUG_ON(direction == DMA_NONE);
515 BUG();
516 507
517 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size); 508 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
518} 509}
519 510
520static void pa11_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) 511static void pa11_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
521{ 512{
522 if (direction == DMA_NONE) 513 BUG_ON(direction == DMA_NONE);
523 BUG();
524 514
525 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size); 515 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
526} 516}
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 7c155c254e72..9d704d9831d1 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -304,10 +304,8 @@ static void __init setup_bootmem(void)
304 */ 304 */
305 max_low_pfn = max_pfn; 305 max_low_pfn = max_pfn;
306 306
307 if ((bootmap_pfn - bootmap_start_pfn) != bootmap_pages) { 307 /* bootmap sizing messed up? */
308 printk(KERN_WARNING "WARNING! bootmap sizing is messed up!\n"); 308 BUG_ON((bootmap_pfn - bootmap_start_pfn) != bootmap_pages);
309 BUG();
310 }
311 309
312 /* reserve PAGE0 pdc memory, kernel text/data/bss & bootmap */ 310 /* reserve PAGE0 pdc memory, kernel text/data/bss & bootmap */
313 311
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b0a638b4199a..1a3150570785 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -933,6 +933,12 @@ config X86_CPUID
933 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 933 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
934 /dev/cpu/31/cpuid. 934 /dev/cpu/31/cpuid.
935 935
936config X86_CPU_DEBUG
937 tristate "/sys/kernel/debug/x86/cpu/* - CPU Debug support"
938 ---help---
939 If you select this option, this will provide various x86 CPUs
940 information through debugfs.
941
936choice 942choice
937 prompt "High Memory Support" 943 prompt "High Memory Support"
938 default HIGHMEM4G if !X86_NUMAQ 944 default HIGHMEM4G if !X86_NUMAQ
@@ -1433,7 +1439,7 @@ config CRASH_DUMP
1433config KEXEC_JUMP 1439config KEXEC_JUMP
1434 bool "kexec jump (EXPERIMENTAL)" 1440 bool "kexec jump (EXPERIMENTAL)"
1435 depends on EXPERIMENTAL 1441 depends on EXPERIMENTAL
1436 depends on KEXEC && HIBERNATION && X86_32 1442 depends on KEXEC && HIBERNATION
1437 ---help--- 1443 ---help---
1438 Jump between original kernel and kexeced kernel and invoke 1444 Jump between original kernel and kexeced kernel and invoke
1439 code in physical address mode via KEXEC 1445 code in physical address mode via KEXEC
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
index c70eff69a1fb..57a29fecf6bb 100644
--- a/arch/x86/boot/Makefile
+++ b/arch/x86/boot/Makefile
@@ -6,26 +6,23 @@
6# for more details. 6# for more details.
7# 7#
8# Copyright (C) 1994 by Linus Torvalds 8# Copyright (C) 1994 by Linus Torvalds
9# Changed by many, many contributors over the years.
9# 10#
10 11
11# ROOT_DEV specifies the default root-device when making the image. 12# ROOT_DEV specifies the default root-device when making the image.
12# This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case 13# This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
13# the default of FLOPPY is used by 'build'. 14# the default of FLOPPY is used by 'build'.
14 15
15ROOT_DEV := CURRENT 16ROOT_DEV := CURRENT
16 17
17# If you want to preset the SVGA mode, uncomment the next line and 18# If you want to preset the SVGA mode, uncomment the next line and
18# set SVGA_MODE to whatever number you want. 19# set SVGA_MODE to whatever number you want.
19# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode. 20# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
20# The number is the same as you would ordinarily press at bootup. 21# The number is the same as you would ordinarily press at bootup.
21 22
22SVGA_MODE := -DSVGA_MODE=NORMAL_VGA 23SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
23 24
24# If you want the RAM disk device, define this to be the size in blocks. 25targets := vmlinux.bin setup.bin setup.elf bzImage
25
26#RAMDISK := -DRAMDISK=512
27
28targets := vmlinux.bin setup.bin setup.elf zImage bzImage
29subdir- := compressed 26subdir- := compressed
30 27
31setup-y += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o 28setup-y += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o
@@ -71,17 +68,13 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
71KBUILD_CFLAGS += $(call cc-option,-m32) 68KBUILD_CFLAGS += $(call cc-option,-m32)
72KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ 69KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
73 70
74$(obj)/zImage: asflags-y := $(SVGA_MODE) $(RAMDISK) 71$(obj)/bzImage: asflags-y := $(SVGA_MODE)
75$(obj)/bzImage: ccflags-y := -D__BIG_KERNEL__
76$(obj)/bzImage: asflags-y := $(SVGA_MODE) $(RAMDISK) -D__BIG_KERNEL__
77$(obj)/bzImage: BUILDFLAGS := -b
78 72
79quiet_cmd_image = BUILD $@ 73quiet_cmd_image = BUILD $@
80cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/setup.bin \ 74cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
81 $(obj)/vmlinux.bin $(ROOT_DEV) > $@ 75 $(ROOT_DEV) > $@
82 76
83$(obj)/zImage $(obj)/bzImage: $(obj)/setup.bin \ 77$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
84 $(obj)/vmlinux.bin $(obj)/tools/build FORCE
85 $(call if_changed,image) 78 $(call if_changed,image)
86 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')' 79 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
87 80
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index 7ccff4884a23..5d84d1c74e4c 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -24,12 +24,8 @@
24#include "boot.h" 24#include "boot.h"
25#include "offsets.h" 25#include "offsets.h"
26 26
27SETUPSECTS = 4 /* default nr of setup-sectors */
28BOOTSEG = 0x07C0 /* original address of boot-sector */ 27BOOTSEG = 0x07C0 /* original address of boot-sector */
29SYSSEG = DEF_SYSSEG /* system loaded at 0x10000 (65536) */ 28SYSSEG = 0x1000 /* historical load address >> 4 */
30SYSSIZE = DEF_SYSSIZE /* system size: # of 16-byte clicks */
31 /* to be loaded */
32ROOT_DEV = 0 /* ROOT_DEV is now written by "build" */
33 29
34#ifndef SVGA_MODE 30#ifndef SVGA_MODE
35#define SVGA_MODE ASK_VGA 31#define SVGA_MODE ASK_VGA
@@ -97,12 +93,12 @@ bugger_off_msg:
97 .section ".header", "a" 93 .section ".header", "a"
98 .globl hdr 94 .globl hdr
99hdr: 95hdr:
100setup_sects: .byte SETUPSECTS 96setup_sects: .byte 0 /* Filled in by build.c */
101root_flags: .word ROOT_RDONLY 97root_flags: .word ROOT_RDONLY
102syssize: .long SYSSIZE 98syssize: .long 0 /* Filled in by build.c */
103ram_size: .word RAMDISK 99ram_size: .word 0 /* Obsolete */
104vid_mode: .word SVGA_MODE 100vid_mode: .word SVGA_MODE
105root_dev: .word ROOT_DEV 101root_dev: .word 0 /* Filled in by build.c */
106boot_flag: .word 0xAA55 102boot_flag: .word 0xAA55
107 103
108 # offset 512, entry point 104 # offset 512, entry point
@@ -123,14 +119,15 @@ _start:
123 # or else old loadlin-1.5 will fail) 119 # or else old loadlin-1.5 will fail)
124 .globl realmode_swtch 120 .globl realmode_swtch
125realmode_swtch: .word 0, 0 # default_switch, SETUPSEG 121realmode_swtch: .word 0, 0 # default_switch, SETUPSEG
126start_sys_seg: .word SYSSEG 122start_sys_seg: .word SYSSEG # obsolete and meaningless, but just
123 # in case something decided to "use" it
127 .word kernel_version-512 # pointing to kernel version string 124 .word kernel_version-512 # pointing to kernel version string
128 # above section of header is compatible 125 # above section of header is compatible
129 # with loadlin-1.5 (header v1.5). Don't 126 # with loadlin-1.5 (header v1.5). Don't
130 # change it. 127 # change it.
131 128
132type_of_loader: .byte 0 # = 0, old one (LILO, Loadlin, 129type_of_loader: .byte 0 # 0 means ancient bootloader, newer
133 # Bootlin, SYSLX, bootsect...) 130 # bootloaders know to change this.
134 # See Documentation/i386/boot.txt for 131 # See Documentation/i386/boot.txt for
135 # assigned ids 132 # assigned ids
136 133
@@ -142,11 +139,7 @@ CAN_USE_HEAP = 0x80 # If set, the loader also has set
142 # space behind setup.S can be used for 139 # space behind setup.S can be used for
143 # heap purposes. 140 # heap purposes.
144 # Only the loader knows what is free 141 # Only the loader knows what is free
145#ifndef __BIG_KERNEL__
146 .byte 0
147#else
148 .byte LOADED_HIGH 142 .byte LOADED_HIGH
149#endif
150 143
151setup_move_size: .word 0x8000 # size to move, when setup is not 144setup_move_size: .word 0x8000 # size to move, when setup is not
152 # loaded at 0x90000. We will move setup 145 # loaded at 0x90000. We will move setup
@@ -157,11 +150,7 @@ setup_move_size: .word 0x8000 # size to move, when setup is not
157 150
158code32_start: # here loaders can put a different 151code32_start: # here loaders can put a different
159 # start address for 32-bit code. 152 # start address for 32-bit code.
160#ifndef __BIG_KERNEL__
161 .long 0x1000 # 0x1000 = default for zImage
162#else
163 .long 0x100000 # 0x100000 = default for big kernel 153 .long 0x100000 # 0x100000 = default for big kernel
164#endif
165 154
166ramdisk_image: .long 0 # address of loaded ramdisk image 155ramdisk_image: .long 0 # address of loaded ramdisk image
167 # Here the loader puts the 32-bit 156 # Here the loader puts the 32-bit
diff --git a/arch/x86/boot/pm.c b/arch/x86/boot/pm.c
index 85a1cd8a8ff8..8062f8915250 100644
--- a/arch/x86/boot/pm.c
+++ b/arch/x86/boot/pm.c
@@ -33,47 +33,6 @@ static void realmode_switch_hook(void)
33} 33}
34 34
35/* 35/*
36 * A zImage kernel is loaded at 0x10000 but wants to run at 0x1000.
37 * A bzImage kernel is loaded and runs at 0x100000.
38 */
39static void move_kernel_around(void)
40{
41 /* Note: rely on the compile-time option here rather than
42 the LOADED_HIGH flag. The Qemu kernel loader unconditionally
43 sets the loadflags to zero. */
44#ifndef __BIG_KERNEL__
45 u16 dst_seg, src_seg;
46 u32 syssize;
47
48 dst_seg = 0x1000 >> 4;
49 src_seg = 0x10000 >> 4;
50 syssize = boot_params.hdr.syssize; /* Size in 16-byte paragraphs */
51
52 while (syssize) {
53 int paras = (syssize >= 0x1000) ? 0x1000 : syssize;
54 int dwords = paras << 2;
55
56 asm volatile("pushw %%es ; "
57 "pushw %%ds ; "
58 "movw %1,%%es ; "
59 "movw %2,%%ds ; "
60 "xorw %%di,%%di ; "
61 "xorw %%si,%%si ; "
62 "rep;movsl ; "
63 "popw %%ds ; "
64 "popw %%es"
65 : "+c" (dwords)
66 : "r" (dst_seg), "r" (src_seg)
67 : "esi", "edi");
68
69 syssize -= paras;
70 dst_seg += paras;
71 src_seg += paras;
72 }
73#endif
74}
75
76/*
77 * Disable all interrupts at the legacy PIC. 36 * Disable all interrupts at the legacy PIC.
78 */ 37 */
79static void mask_all_interrupts(void) 38static void mask_all_interrupts(void)
@@ -147,9 +106,6 @@ void go_to_protected_mode(void)
147 /* Hook before leaving real mode, also disables interrupts */ 106 /* Hook before leaving real mode, also disables interrupts */
148 realmode_switch_hook(); 107 realmode_switch_hook();
149 108
150 /* Move the kernel/setup to their final resting places */
151 move_kernel_around();
152
153 /* Enable the A20 gate */ 109 /* Enable the A20 gate */
154 if (enable_a20()) { 110 if (enable_a20()) {
155 puts("A20 gate not responding, unable to boot...\n"); 111 puts("A20 gate not responding, unable to boot...\n");
diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
index 44dc1923c0e3..ee3a4ea923ac 100644
--- a/arch/x86/boot/tools/build.c
+++ b/arch/x86/boot/tools/build.c
@@ -130,7 +130,7 @@ static void die(const char * str, ...)
130 130
131static void usage(void) 131static void usage(void)
132{ 132{
133 die("Usage: build [-b] setup system [rootdev] [> image]"); 133 die("Usage: build setup system [rootdev] [> image]");
134} 134}
135 135
136int main(int argc, char ** argv) 136int main(int argc, char ** argv)
@@ -145,11 +145,6 @@ int main(int argc, char ** argv)
145 void *kernel; 145 void *kernel;
146 u32 crc = 0xffffffffUL; 146 u32 crc = 0xffffffffUL;
147 147
148 if (argc > 2 && !strcmp(argv[1], "-b"))
149 {
150 is_big_kernel = 1;
151 argc--, argv++;
152 }
153 if ((argc < 3) || (argc > 4)) 148 if ((argc < 3) || (argc > 4))
154 usage(); 149 usage();
155 if (argc > 3) { 150 if (argc > 3) {
@@ -216,8 +211,6 @@ int main(int argc, char ** argv)
216 die("Unable to mmap '%s': %m", argv[2]); 211 die("Unable to mmap '%s': %m", argv[2]);
217 /* Number of 16-byte paragraphs, including space for a 4-byte CRC */ 212 /* Number of 16-byte paragraphs, including space for a 4-byte CRC */
218 sys_size = (sz + 15 + 4) / 16; 213 sys_size = (sz + 15 + 4) / 16;
219 if (!is_big_kernel && sys_size > DEF_SYSSIZE)
220 die("System is too big. Try using bzImage or modules.");
221 214
222 /* Patch the setup code with the appropriate size parameters */ 215 /* Patch the setup code with the appropriate size parameters */
223 buf[0x1f1] = setup_sectors-1; 216 buf[0x1f1] = setup_sectors-1;
diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h
index 6526cf08b0e4..6ba23dd9fc92 100644
--- a/arch/x86/include/asm/boot.h
+++ b/arch/x86/include/asm/boot.h
@@ -1,10 +1,6 @@
1#ifndef _ASM_X86_BOOT_H 1#ifndef _ASM_X86_BOOT_H
2#define _ASM_X86_BOOT_H 2#define _ASM_X86_BOOT_H
3 3
4/* Don't touch these, unless you really know what you're doing. */
5#define DEF_SYSSEG 0x1000
6#define DEF_SYSSIZE 0x7F00
7
8/* Internal svga startup constants */ 4/* Internal svga startup constants */
9#define NORMAL_VGA 0xffff /* 80x25 mode */ 5#define NORMAL_VGA 0xffff /* 80x25 mode */
10#define EXTENDED_VGA 0xfffe /* 80x50 mode */ 6#define EXTENDED_VGA 0xfffe /* 80x50 mode */
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h
new file mode 100755
index 000000000000..d24d64fcee04
--- /dev/null
+++ b/arch/x86/include/asm/cpu_debug.h
@@ -0,0 +1,193 @@
1#ifndef _ASM_X86_CPU_DEBUG_H
2#define _ASM_X86_CPU_DEBUG_H
3
4/*
5 * CPU x86 architecture debug
6 *
7 * Copyright(C) 2009 Jaswinder Singh Rajput
8 */
9
10/* Register flags */
11enum cpu_debug_bit {
12/* Model Specific Registers (MSRs) */
13 CPU_MC_BIT, /* Machine Check */
14 CPU_MONITOR_BIT, /* Monitor */
15 CPU_TIME_BIT, /* Time */
16 CPU_PMC_BIT, /* Performance Monitor */
17 CPU_PLATFORM_BIT, /* Platform */
18 CPU_APIC_BIT, /* APIC */
19 CPU_POWERON_BIT, /* Power-on */
20 CPU_CONTROL_BIT, /* Control */
21 CPU_FEATURES_BIT, /* Features control */
22 CPU_LBRANCH_BIT, /* Last Branch */
23 CPU_BIOS_BIT, /* BIOS */
24 CPU_FREQ_BIT, /* Frequency */
25 CPU_MTTR_BIT, /* MTRR */
26 CPU_PERF_BIT, /* Performance */
27 CPU_CACHE_BIT, /* Cache */
28 CPU_SYSENTER_BIT, /* Sysenter */
29 CPU_THERM_BIT, /* Thermal */
30 CPU_MISC_BIT, /* Miscellaneous */
31 CPU_DEBUG_BIT, /* Debug */
32 CPU_PAT_BIT, /* PAT */
33 CPU_VMX_BIT, /* VMX */
34 CPU_CALL_BIT, /* System Call */
35 CPU_BASE_BIT, /* BASE Address */
36 CPU_SMM_BIT, /* System mgmt mode */
37 CPU_SVM_BIT, /*Secure Virtual Machine*/
38 CPU_OSVM_BIT, /* OS-Visible Workaround*/
39/* Standard Registers */
40 CPU_TSS_BIT, /* Task Stack Segment */
41 CPU_CR_BIT, /* Control Registers */
42 CPU_DT_BIT, /* Descriptor Table */
43/* End of Registers flags */
44 CPU_REG_ALL_BIT, /* Select all Registers */
45};
46
47#define CPU_REG_ALL (~0) /* Select all Registers */
48
49#define CPU_MC (1 << CPU_MC_BIT)
50#define CPU_MONITOR (1 << CPU_MONITOR_BIT)
51#define CPU_TIME (1 << CPU_TIME_BIT)
52#define CPU_PMC (1 << CPU_PMC_BIT)
53#define CPU_PLATFORM (1 << CPU_PLATFORM_BIT)
54#define CPU_APIC (1 << CPU_APIC_BIT)
55#define CPU_POWERON (1 << CPU_POWERON_BIT)
56#define CPU_CONTROL (1 << CPU_CONTROL_BIT)
57#define CPU_FEATURES (1 << CPU_FEATURES_BIT)
58#define CPU_LBRANCH (1 << CPU_LBRANCH_BIT)
59#define CPU_BIOS (1 << CPU_BIOS_BIT)
60#define CPU_FREQ (1 << CPU_FREQ_BIT)
61#define CPU_MTRR (1 << CPU_MTTR_BIT)
62#define CPU_PERF (1 << CPU_PERF_BIT)
63#define CPU_CACHE (1 << CPU_CACHE_BIT)
64#define CPU_SYSENTER (1 << CPU_SYSENTER_BIT)
65#define CPU_THERM (1 << CPU_THERM_BIT)
66#define CPU_MISC (1 << CPU_MISC_BIT)
67#define CPU_DEBUG (1 << CPU_DEBUG_BIT)
68#define CPU_PAT (1 << CPU_PAT_BIT)
69#define CPU_VMX (1 << CPU_VMX_BIT)
70#define CPU_CALL (1 << CPU_CALL_BIT)
71#define CPU_BASE (1 << CPU_BASE_BIT)
72#define CPU_SMM (1 << CPU_SMM_BIT)
73#define CPU_SVM (1 << CPU_SVM_BIT)
74#define CPU_OSVM (1 << CPU_OSVM_BIT)
75#define CPU_TSS (1 << CPU_TSS_BIT)
76#define CPU_CR (1 << CPU_CR_BIT)
77#define CPU_DT (1 << CPU_DT_BIT)
78
79/* Register file flags */
80enum cpu_file_bit {
81 CPU_INDEX_BIT, /* index */
82 CPU_VALUE_BIT, /* value */
83};
84
85#define CPU_FILE_VALUE (1 << CPU_VALUE_BIT)
86
87/*
88 * DisplayFamily_DisplayModel Processor Families/Processor Number Series
89 * -------------------------- ------------------------------------------
90 * 05_01, 05_02, 05_04 Pentium, Pentium with MMX
91 *
92 * 06_01 Pentium Pro
93 * 06_03, 06_05 Pentium II Xeon, Pentium II
94 * 06_07, 06_08, 06_0A, 06_0B Pentium III Xeon, Pentum III
95 *
96 * 06_09, 060D Pentium M
97 *
98 * 06_0E Core Duo, Core Solo
99 *
100 * 06_0F Xeon 3000, 3200, 5100, 5300, 7300 series,
101 * Core 2 Quad, Core 2 Extreme, Core 2 Duo,
102 * Pentium dual-core
103 * 06_17 Xeon 5200, 5400 series, Core 2 Quad Q9650
104 *
105 * 06_1C Atom
106 *
107 * 0F_00, 0F_01, 0F_02 Xeon, Xeon MP, Pentium 4
108 * 0F_03, 0F_04 Xeon, Xeon MP, Pentium 4, Pentium D
109 *
110 * 0F_06 Xeon 7100, 5000 Series, Xeon MP,
111 * Pentium 4, Pentium D
112 */
113
114/* Register processors bits */
115enum cpu_processor_bit {
116 CPU_NONE,
117/* Intel */
118 CPU_INTEL_PENTIUM_BIT,
119 CPU_INTEL_P6_BIT,
120 CPU_INTEL_PENTIUM_M_BIT,
121 CPU_INTEL_CORE_BIT,
122 CPU_INTEL_CORE2_BIT,
123 CPU_INTEL_ATOM_BIT,
124 CPU_INTEL_XEON_P4_BIT,
125 CPU_INTEL_XEON_MP_BIT,
126};
127
128#define CPU_ALL (~0) /* Select all CPUs */
129
130#define CPU_INTEL_PENTIUM (1 << CPU_INTEL_PENTIUM_BIT)
131#define CPU_INTEL_P6 (1 << CPU_INTEL_P6_BIT)
132#define CPU_INTEL_PENTIUM_M (1 << CPU_INTEL_PENTIUM_M_BIT)
133#define CPU_INTEL_CORE (1 << CPU_INTEL_CORE_BIT)
134#define CPU_INTEL_CORE2 (1 << CPU_INTEL_CORE2_BIT)
135#define CPU_INTEL_ATOM (1 << CPU_INTEL_ATOM_BIT)
136#define CPU_INTEL_XEON_P4 (1 << CPU_INTEL_XEON_P4_BIT)
137#define CPU_INTEL_XEON_MP (1 << CPU_INTEL_XEON_MP_BIT)
138
139#define CPU_INTEL_PX (CPU_INTEL_P6 | CPU_INTEL_PENTIUM_M)
140#define CPU_INTEL_COREX (CPU_INTEL_CORE | CPU_INTEL_CORE2)
141#define CPU_INTEL_XEON (CPU_INTEL_XEON_P4 | CPU_INTEL_XEON_MP)
142#define CPU_CO_AT (CPU_INTEL_CORE | CPU_INTEL_ATOM)
143#define CPU_C2_AT (CPU_INTEL_CORE2 | CPU_INTEL_ATOM)
144#define CPU_CX_AT (CPU_INTEL_COREX | CPU_INTEL_ATOM)
145#define CPU_CX_XE (CPU_INTEL_COREX | CPU_INTEL_XEON)
146#define CPU_P6_XE (CPU_INTEL_P6 | CPU_INTEL_XEON)
147#define CPU_PM_CO_AT (CPU_INTEL_PENTIUM_M | CPU_CO_AT)
148#define CPU_C2_AT_XE (CPU_C2_AT | CPU_INTEL_XEON)
149#define CPU_CX_AT_XE (CPU_CX_AT | CPU_INTEL_XEON)
150#define CPU_P6_CX_AT (CPU_INTEL_P6 | CPU_CX_AT)
151#define CPU_P6_CX_XE (CPU_P6_XE | CPU_INTEL_COREX)
152#define CPU_P6_CX_AT_XE (CPU_INTEL_P6 | CPU_CX_AT_XE)
153#define CPU_PM_CX_AT_XE (CPU_INTEL_PENTIUM_M | CPU_CX_AT_XE)
154#define CPU_PM_CX_AT (CPU_INTEL_PENTIUM_M | CPU_CX_AT)
155#define CPU_PM_CX_XE (CPU_INTEL_PENTIUM_M | CPU_CX_XE)
156#define CPU_PX_CX_AT (CPU_INTEL_PX | CPU_CX_AT)
157#define CPU_PX_CX_AT_XE (CPU_INTEL_PX | CPU_CX_AT_XE)
158
159/* Select all Intel CPUs*/
160#define CPU_INTEL_ALL (CPU_INTEL_PENTIUM | CPU_PX_CX_AT_XE)
161
162#define MAX_CPU_FILES 512
163
164struct cpu_private {
165 unsigned cpu;
166 unsigned type;
167 unsigned reg;
168 unsigned file;
169};
170
171struct cpu_debug_base {
172 char *name; /* Register name */
173 unsigned flag; /* Register flag */
174};
175
176struct cpu_cpuX_base {
177 struct dentry *dentry; /* Register dentry */
178 int init; /* Register index file */
179};
180
181struct cpu_file_base {
182 char *name; /* Register file name */
183 unsigned flag; /* Register file flag */
184};
185
186struct cpu_debug_range {
187 unsigned min; /* Register range min */
188 unsigned max; /* Register range max */
189 unsigned flag; /* Supported flags */
190 unsigned model; /* Supported models */
191};
192
193#endif /* _ASM_X86_CPU_DEBUG_H */
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
index dc27705f5443..5623c50d67b2 100644
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -91,7 +91,6 @@ static inline int desc_empty(const void *ptr)
91#define store_gdt(dtr) native_store_gdt(dtr) 91#define store_gdt(dtr) native_store_gdt(dtr)
92#define store_idt(dtr) native_store_idt(dtr) 92#define store_idt(dtr) native_store_idt(dtr)
93#define store_tr(tr) (tr = native_store_tr()) 93#define store_tr(tr) (tr = native_store_tr())
94#define store_ldt(ldt) asm("sldt %0":"=m" (ldt))
95 94
96#define load_TLS(t, cpu) native_load_tls(t, cpu) 95#define load_TLS(t, cpu) native_load_tls(t, cpu)
97#define set_ldt native_set_ldt 96#define set_ldt native_set_ldt
@@ -112,6 +111,8 @@ static inline void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries)
112} 111}
113#endif /* CONFIG_PARAVIRT */ 112#endif /* CONFIG_PARAVIRT */
114 113
114#define store_ldt(ldt) asm("sldt %0" : "=m"(ldt))
115
115static inline void native_write_idt_entry(gate_desc *idt, int entry, 116static inline void native_write_idt_entry(gate_desc *idt, int entry,
116 const gate_desc *gate) 117 const gate_desc *gate)
117{ 118{
diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
index db24c2278be0..bd2c6511c887 100644
--- a/arch/x86/include/asm/ftrace.h
+++ b/arch/x86/include/asm/ftrace.h
@@ -28,6 +28,13 @@
28 28
29#endif 29#endif
30 30
31/* FIXME: I don't want to stay hardcoded */
32#ifdef CONFIG_X86_64
33# define FTRACE_SYSCALL_MAX 296
34#else
35# define FTRACE_SYSCALL_MAX 333
36#endif
37
31#ifdef CONFIG_FUNCTION_TRACER 38#ifdef CONFIG_FUNCTION_TRACER
32#define MCOUNT_ADDR ((long)(mcount)) 39#define MCOUNT_ADDR ((long)(mcount))
33#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */ 40#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h
index bf9276bea660..014c2b85ae45 100644
--- a/arch/x86/include/asm/highmem.h
+++ b/arch/x86/include/asm/highmem.h
@@ -63,6 +63,7 @@ void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot);
63void *kmap_atomic(struct page *page, enum km_type type); 63void *kmap_atomic(struct page *page, enum km_type type);
64void kunmap_atomic(void *kvaddr, enum km_type type); 64void kunmap_atomic(void *kvaddr, enum km_type type);
65void *kmap_atomic_pfn(unsigned long pfn, enum km_type type); 65void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
66void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot);
66struct page *kmap_atomic_to_page(void *ptr); 67struct page *kmap_atomic_to_page(void *ptr);
67 68
68#ifndef CONFIG_PARAVIRT 69#ifndef CONFIG_PARAVIRT
diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
index 0ceb6d19ed30..317ff1703d0b 100644
--- a/arch/x86/include/asm/kexec.h
+++ b/arch/x86/include/asm/kexec.h
@@ -9,13 +9,13 @@
9# define PAGES_NR 4 9# define PAGES_NR 4
10#else 10#else
11# define PA_CONTROL_PAGE 0 11# define PA_CONTROL_PAGE 0
12# define PA_TABLE_PAGE 1 12# define VA_CONTROL_PAGE 1
13# define PAGES_NR 2 13# define PA_TABLE_PAGE 2
14# define PA_SWAP_PAGE 3
15# define PAGES_NR 4
14#endif 16#endif
15 17
16#ifdef CONFIG_X86_32
17# define KEXEC_CONTROL_CODE_MAX_SIZE 2048 18# define KEXEC_CONTROL_CODE_MAX_SIZE 2048
18#endif
19 19
20#ifndef __ASSEMBLY__ 20#ifndef __ASSEMBLY__
21 21
@@ -136,10 +136,11 @@ relocate_kernel(unsigned long indirection_page,
136 unsigned int has_pae, 136 unsigned int has_pae,
137 unsigned int preserve_context); 137 unsigned int preserve_context);
138#else 138#else
139NORET_TYPE void 139unsigned long
140relocate_kernel(unsigned long indirection_page, 140relocate_kernel(unsigned long indirection_page,
141 unsigned long page_list, 141 unsigned long page_list,
142 unsigned long start_address) ATTRIB_NORET; 142 unsigned long start_address,
143 unsigned int preserve_context);
143#endif 144#endif
144 145
145#define ARCH_HAS_KIMAGE_ARCH 146#define ARCH_HAS_KIMAGE_ARCH
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index a0d70b46c27c..12d55e773eb6 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -1,6 +1,8 @@
1#ifndef _ASM_X86_LINKAGE_H 1#ifndef _ASM_X86_LINKAGE_H
2#define _ASM_X86_LINKAGE_H 2#define _ASM_X86_LINKAGE_H
3 3
4#include <linux/stringify.h>
5
4#undef notrace 6#undef notrace
5#define notrace __attribute__((no_instrument_function)) 7#define notrace __attribute__((no_instrument_function))
6 8
@@ -53,14 +55,9 @@
53 .globl name; \ 55 .globl name; \
54 name: 56 name:
55 57
56#ifdef CONFIG_X86_64 58#if defined(CONFIG_X86_64) || defined(CONFIG_X86_ALIGNMENT_16)
57#define __ALIGN .p2align 4,,15 59#define __ALIGN .p2align 4, 0x90
58#define __ALIGN_STR ".p2align 4,,15" 60#define __ALIGN_STR __stringify(__ALIGN)
59#endif
60
61#ifdef CONFIG_X86_ALIGNMENT_16
62#define __ALIGN .align 16,0x90
63#define __ALIGN_STR ".align 16,0x90"
64#endif 61#endif
65 62
66#endif /* __ASSEMBLY__ */ 63#endif /* __ASSEMBLY__ */
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 339ce35648e6..84000eb931ff 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -66,7 +66,8 @@ obj-$(CONFIG_X86_MPPARSE) += mpparse.o
66obj-y += apic/ 66obj-y += apic/
67obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups_32.o 67obj-$(CONFIG_X86_REBOOTFIXUPS) += reboot_fixups_32.o
68obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o 68obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o
69obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o 69obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o
70obj-$(CONFIG_FTRACE_SYSCALLS) += ftrace.o
70obj-$(CONFIG_KEXEC) += machine_kexec_$(BITS).o 71obj-$(CONFIG_KEXEC) += machine_kexec_$(BITS).o
71obj-$(CONFIG_KEXEC) += relocate_kernel_$(BITS).o crash.o 72obj-$(CONFIG_KEXEC) += relocate_kernel_$(BITS).o crash.o
72obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o 73obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 82db7f45e2de..d4356f8b7522 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -14,6 +14,8 @@ obj-y += vmware.o hypervisor.o
14obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o 14obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o
15obj-$(CONFIG_X86_64) += bugs_64.o 15obj-$(CONFIG_X86_64) += bugs_64.o
16 16
17obj-$(CONFIG_X86_CPU_DEBUG) += cpu_debug.o
18
17obj-$(CONFIG_CPU_SUP_INTEL) += intel.o 19obj-$(CONFIG_CPU_SUP_INTEL) += intel.o
18obj-$(CONFIG_CPU_SUP_AMD) += amd.o 20obj-$(CONFIG_CPU_SUP_AMD) += amd.o
19obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o 21obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 826d5c876278..f8869978bbb7 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1078,8 +1078,7 @@ void __cpuinit cpu_init(void)
1078 1078
1079 atomic_inc(&init_mm.mm_count); 1079 atomic_inc(&init_mm.mm_count);
1080 me->active_mm = &init_mm; 1080 me->active_mm = &init_mm;
1081 if (me->mm) 1081 BUG_ON(me->mm);
1082 BUG();
1083 enter_lazy_tlb(&init_mm, me); 1082 enter_lazy_tlb(&init_mm, me);
1084 1083
1085 load_sp0(t, &current->thread); 1084 load_sp0(t, &current->thread);
@@ -1145,8 +1144,7 @@ void __cpuinit cpu_init(void)
1145 */ 1144 */
1146 atomic_inc(&init_mm.mm_count); 1145 atomic_inc(&init_mm.mm_count);
1147 curr->active_mm = &init_mm; 1146 curr->active_mm = &init_mm;
1148 if (curr->mm) 1147 BUG_ON(curr->mm);
1149 BUG();
1150 enter_lazy_tlb(&init_mm, curr); 1148 enter_lazy_tlb(&init_mm, curr);
1151 1149
1152 load_sp0(t, thread); 1150 load_sp0(t, thread);
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c
new file mode 100755
index 000000000000..9abbcbd933cc
--- /dev/null
+++ b/arch/x86/kernel/cpu/cpu_debug.c
@@ -0,0 +1,785 @@
1/*
2 * CPU x86 architecture debug code
3 *
4 * Copyright(C) 2009 Jaswinder Singh Rajput
5 *
6 * For licencing details see kernel-base/COPYING
7 */
8
9#include <linux/interrupt.h>
10#include <linux/compiler.h>
11#include <linux/seq_file.h>
12#include <linux/debugfs.h>
13#include <linux/kprobes.h>
14#include <linux/kernel.h>
15#include <linux/module.h>
16#include <linux/percpu.h>
17#include <linux/signal.h>
18#include <linux/errno.h>
19#include <linux/sched.h>
20#include <linux/types.h>
21#include <linux/init.h>
22#include <linux/slab.h>
23#include <linux/smp.h>
24
25#include <asm/cpu_debug.h>
26#include <asm/paravirt.h>
27#include <asm/system.h>
28#include <asm/traps.h>
29#include <asm/apic.h>
30#include <asm/desc.h>
31
32static DEFINE_PER_CPU(struct cpu_cpuX_base, cpu_arr[CPU_REG_ALL_BIT]);
33static DEFINE_PER_CPU(struct cpu_private *, priv_arr[MAX_CPU_FILES]);
34static DEFINE_PER_CPU(unsigned, cpu_modelflag);
35static DEFINE_PER_CPU(int, cpu_priv_count);
36static DEFINE_PER_CPU(unsigned, cpu_model);
37
38static DEFINE_MUTEX(cpu_debug_lock);
39
40static struct dentry *cpu_debugfs_dir;
41
42static struct cpu_debug_base cpu_base[] = {
43 { "mc", CPU_MC }, /* Machine Check */
44 { "monitor", CPU_MONITOR }, /* Monitor */
45 { "time", CPU_TIME }, /* Time */
46 { "pmc", CPU_PMC }, /* Performance Monitor */
47 { "platform", CPU_PLATFORM }, /* Platform */
48 { "apic", CPU_APIC }, /* APIC */
49 { "poweron", CPU_POWERON }, /* Power-on */
50 { "control", CPU_CONTROL }, /* Control */
51 { "features", CPU_FEATURES }, /* Features control */
52 { "lastbranch", CPU_LBRANCH }, /* Last Branch */
53 { "bios", CPU_BIOS }, /* BIOS */
54 { "freq", CPU_FREQ }, /* Frequency */
55 { "mtrr", CPU_MTRR }, /* MTRR */
56 { "perf", CPU_PERF }, /* Performance */
57 { "cache", CPU_CACHE }, /* Cache */
58 { "sysenter", CPU_SYSENTER }, /* Sysenter */
59 { "therm", CPU_THERM }, /* Thermal */
60 { "misc", CPU_MISC }, /* Miscellaneous */
61 { "debug", CPU_DEBUG }, /* Debug */
62 { "pat", CPU_PAT }, /* PAT */
63 { "vmx", CPU_VMX }, /* VMX */
64 { "call", CPU_CALL }, /* System Call */
65 { "base", CPU_BASE }, /* BASE Address */
66 { "smm", CPU_SMM }, /* System mgmt mode */
67 { "svm", CPU_SVM }, /*Secure Virtial Machine*/
68 { "osvm", CPU_OSVM }, /* OS-Visible Workaround*/
69 { "tss", CPU_TSS }, /* Task Stack Segment */
70 { "cr", CPU_CR }, /* Control Registers */
71 { "dt", CPU_DT }, /* Descriptor Table */
72 { "registers", CPU_REG_ALL }, /* Select all Registers */
73};
74
75static struct cpu_file_base cpu_file[] = {
76 { "index", CPU_REG_ALL }, /* index */
77 { "value", CPU_REG_ALL }, /* value */
78};
79
80/* Intel Registers Range */
81static struct cpu_debug_range cpu_intel_range[] = {
82 { 0x00000000, 0x00000001, CPU_MC, CPU_INTEL_ALL },
83 { 0x00000006, 0x00000007, CPU_MONITOR, CPU_CX_AT_XE },
84 { 0x00000010, 0x00000010, CPU_TIME, CPU_INTEL_ALL },
85 { 0x00000011, 0x00000013, CPU_PMC, CPU_INTEL_PENTIUM },
86 { 0x00000017, 0x00000017, CPU_PLATFORM, CPU_PX_CX_AT_XE },
87 { 0x0000001B, 0x0000001B, CPU_APIC, CPU_P6_CX_AT_XE },
88
89 { 0x0000002A, 0x0000002A, CPU_POWERON, CPU_PX_CX_AT_XE },
90 { 0x0000002B, 0x0000002B, CPU_POWERON, CPU_INTEL_XEON },
91 { 0x0000002C, 0x0000002C, CPU_FREQ, CPU_INTEL_XEON },
92 { 0x0000003A, 0x0000003A, CPU_CONTROL, CPU_CX_AT_XE },
93
94 { 0x00000040, 0x00000043, CPU_LBRANCH, CPU_PM_CX_AT_XE },
95 { 0x00000044, 0x00000047, CPU_LBRANCH, CPU_PM_CO_AT },
96 { 0x00000060, 0x00000063, CPU_LBRANCH, CPU_C2_AT },
97 { 0x00000064, 0x00000067, CPU_LBRANCH, CPU_INTEL_ATOM },
98
99 { 0x00000079, 0x00000079, CPU_BIOS, CPU_P6_CX_AT_XE },
100 { 0x00000088, 0x0000008A, CPU_CACHE, CPU_INTEL_P6 },
101 { 0x0000008B, 0x0000008B, CPU_BIOS, CPU_P6_CX_AT_XE },
102 { 0x0000009B, 0x0000009B, CPU_MONITOR, CPU_INTEL_XEON },
103
104 { 0x000000C1, 0x000000C2, CPU_PMC, CPU_P6_CX_AT },
105 { 0x000000CD, 0x000000CD, CPU_FREQ, CPU_CX_AT },
106 { 0x000000E7, 0x000000E8, CPU_PERF, CPU_CX_AT },
107 { 0x000000FE, 0x000000FE, CPU_MTRR, CPU_P6_CX_XE },
108
109 { 0x00000116, 0x00000116, CPU_CACHE, CPU_INTEL_P6 },
110 { 0x00000118, 0x00000118, CPU_CACHE, CPU_INTEL_P6 },
111 { 0x00000119, 0x00000119, CPU_CACHE, CPU_INTEL_PX },
112 { 0x0000011A, 0x0000011B, CPU_CACHE, CPU_INTEL_P6 },
113 { 0x0000011E, 0x0000011E, CPU_CACHE, CPU_PX_CX_AT },
114
115 { 0x00000174, 0x00000176, CPU_SYSENTER, CPU_P6_CX_AT_XE },
116 { 0x00000179, 0x0000017A, CPU_MC, CPU_PX_CX_AT_XE },
117 { 0x0000017B, 0x0000017B, CPU_MC, CPU_P6_XE },
118 { 0x00000186, 0x00000187, CPU_PMC, CPU_P6_CX_AT },
119 { 0x00000198, 0x00000199, CPU_PERF, CPU_PM_CX_AT_XE },
120 { 0x0000019A, 0x0000019A, CPU_TIME, CPU_PM_CX_AT_XE },
121 { 0x0000019B, 0x0000019D, CPU_THERM, CPU_PM_CX_AT_XE },
122 { 0x000001A0, 0x000001A0, CPU_MISC, CPU_PM_CX_AT_XE },
123
124 { 0x000001C9, 0x000001C9, CPU_LBRANCH, CPU_PM_CX_AT },
125 { 0x000001D7, 0x000001D8, CPU_LBRANCH, CPU_INTEL_XEON },
126 { 0x000001D9, 0x000001D9, CPU_DEBUG, CPU_CX_AT_XE },
127 { 0x000001DA, 0x000001DA, CPU_LBRANCH, CPU_INTEL_XEON },
128 { 0x000001DB, 0x000001DB, CPU_LBRANCH, CPU_P6_XE },
129 { 0x000001DC, 0x000001DC, CPU_LBRANCH, CPU_INTEL_P6 },
130 { 0x000001DD, 0x000001DE, CPU_LBRANCH, CPU_PX_CX_AT_XE },
131 { 0x000001E0, 0x000001E0, CPU_LBRANCH, CPU_INTEL_P6 },
132
133 { 0x00000200, 0x0000020F, CPU_MTRR, CPU_P6_CX_XE },
134 { 0x00000250, 0x00000250, CPU_MTRR, CPU_P6_CX_XE },
135 { 0x00000258, 0x00000259, CPU_MTRR, CPU_P6_CX_XE },
136 { 0x00000268, 0x0000026F, CPU_MTRR, CPU_P6_CX_XE },
137 { 0x00000277, 0x00000277, CPU_PAT, CPU_C2_AT_XE },
138 { 0x000002FF, 0x000002FF, CPU_MTRR, CPU_P6_CX_XE },
139
140 { 0x00000300, 0x00000308, CPU_PMC, CPU_INTEL_XEON },
141 { 0x00000309, 0x0000030B, CPU_PMC, CPU_C2_AT_XE },
142 { 0x0000030C, 0x00000311, CPU_PMC, CPU_INTEL_XEON },
143 { 0x00000345, 0x00000345, CPU_PMC, CPU_C2_AT },
144 { 0x00000360, 0x00000371, CPU_PMC, CPU_INTEL_XEON },
145 { 0x0000038D, 0x00000390, CPU_PMC, CPU_C2_AT },
146 { 0x000003A0, 0x000003BE, CPU_PMC, CPU_INTEL_XEON },
147 { 0x000003C0, 0x000003CD, CPU_PMC, CPU_INTEL_XEON },
148 { 0x000003E0, 0x000003E1, CPU_PMC, CPU_INTEL_XEON },
149 { 0x000003F0, 0x000003F0, CPU_PMC, CPU_INTEL_XEON },
150 { 0x000003F1, 0x000003F1, CPU_PMC, CPU_C2_AT_XE },
151 { 0x000003F2, 0x000003F2, CPU_PMC, CPU_INTEL_XEON },
152
153 { 0x00000400, 0x00000402, CPU_MC, CPU_PM_CX_AT_XE },
154 { 0x00000403, 0x00000403, CPU_MC, CPU_INTEL_XEON },
155 { 0x00000404, 0x00000406, CPU_MC, CPU_PM_CX_AT_XE },
156 { 0x00000407, 0x00000407, CPU_MC, CPU_INTEL_XEON },
157 { 0x00000408, 0x0000040A, CPU_MC, CPU_PM_CX_AT_XE },
158 { 0x0000040B, 0x0000040B, CPU_MC, CPU_INTEL_XEON },
159 { 0x0000040C, 0x0000040E, CPU_MC, CPU_PM_CX_XE },
160 { 0x0000040F, 0x0000040F, CPU_MC, CPU_INTEL_XEON },
161 { 0x00000410, 0x00000412, CPU_MC, CPU_PM_CX_AT_XE },
162 { 0x00000413, 0x00000417, CPU_MC, CPU_CX_AT_XE },
163 { 0x00000480, 0x0000048B, CPU_VMX, CPU_CX_AT_XE },
164
165 { 0x00000600, 0x00000600, CPU_DEBUG, CPU_PM_CX_AT_XE },
166 { 0x00000680, 0x0000068F, CPU_LBRANCH, CPU_INTEL_XEON },
167 { 0x000006C0, 0x000006CF, CPU_LBRANCH, CPU_INTEL_XEON },
168
169 { 0x000107CC, 0x000107D3, CPU_PMC, CPU_INTEL_XEON_MP },
170
171 { 0xC0000080, 0xC0000080, CPU_FEATURES, CPU_INTEL_XEON },
172 { 0xC0000081, 0xC0000082, CPU_CALL, CPU_INTEL_XEON },
173 { 0xC0000084, 0xC0000084, CPU_CALL, CPU_INTEL_XEON },
174 { 0xC0000100, 0xC0000102, CPU_BASE, CPU_INTEL_XEON },
175};
176
177/* AMD Registers Range */
178static struct cpu_debug_range cpu_amd_range[] = {
179 { 0x00000010, 0x00000010, CPU_TIME, CPU_ALL, },
180 { 0x0000001B, 0x0000001B, CPU_APIC, CPU_ALL, },
181 { 0x000000FE, 0x000000FE, CPU_MTRR, CPU_ALL, },
182
183 { 0x00000174, 0x00000176, CPU_SYSENTER, CPU_ALL, },
184 { 0x00000179, 0x0000017A, CPU_MC, CPU_ALL, },
185 { 0x0000017B, 0x0000017B, CPU_MC, CPU_ALL, },
186 { 0x000001D9, 0x000001D9, CPU_DEBUG, CPU_ALL, },
187 { 0x000001DB, 0x000001DE, CPU_LBRANCH, CPU_ALL, },
188
189 { 0x00000200, 0x0000020F, CPU_MTRR, CPU_ALL, },
190 { 0x00000250, 0x00000250, CPU_MTRR, CPU_ALL, },
191 { 0x00000258, 0x00000259, CPU_MTRR, CPU_ALL, },
192 { 0x00000268, 0x0000026F, CPU_MTRR, CPU_ALL, },
193 { 0x00000277, 0x00000277, CPU_PAT, CPU_ALL, },
194 { 0x000002FF, 0x000002FF, CPU_MTRR, CPU_ALL, },
195
196 { 0x00000400, 0x00000417, CPU_MC, CPU_ALL, },
197
198 { 0xC0000080, 0xC0000080, CPU_FEATURES, CPU_ALL, },
199 { 0xC0000081, 0xC0000084, CPU_CALL, CPU_ALL, },
200 { 0xC0000100, 0xC0000102, CPU_BASE, CPU_ALL, },
201 { 0xC0000103, 0xC0000103, CPU_TIME, CPU_ALL, },
202
203 { 0xC0000408, 0xC000040A, CPU_MC, CPU_ALL, },
204
205 { 0xc0010000, 0xc0010007, CPU_PMC, CPU_ALL, },
206 { 0xc0010010, 0xc0010010, CPU_MTRR, CPU_ALL, },
207 { 0xc0010016, 0xc001001A, CPU_MTRR, CPU_ALL, },
208 { 0xc001001D, 0xc001001D, CPU_MTRR, CPU_ALL, },
209 { 0xc0010030, 0xc0010035, CPU_BIOS, CPU_ALL, },
210 { 0xc0010056, 0xc0010056, CPU_SMM, CPU_ALL, },
211 { 0xc0010061, 0xc0010063, CPU_SMM, CPU_ALL, },
212 { 0xc0010074, 0xc0010074, CPU_MC, CPU_ALL, },
213 { 0xc0010111, 0xc0010113, CPU_SMM, CPU_ALL, },
214 { 0xc0010114, 0xc0010118, CPU_SVM, CPU_ALL, },
215 { 0xc0010119, 0xc001011A, CPU_SMM, CPU_ALL, },
216 { 0xc0010140, 0xc0010141, CPU_OSVM, CPU_ALL, },
217 { 0xc0010156, 0xc0010156, CPU_SMM, CPU_ALL, },
218};
219
220
221static int get_cpu_modelflag(unsigned cpu)
222{
223 int flag;
224
225 switch (per_cpu(cpu_model, cpu)) {
226 /* Intel */
227 case 0x0501:
228 case 0x0502:
229 case 0x0504:
230 flag = CPU_INTEL_PENTIUM;
231 break;
232 case 0x0601:
233 case 0x0603:
234 case 0x0605:
235 case 0x0607:
236 case 0x0608:
237 case 0x060A:
238 case 0x060B:
239 flag = CPU_INTEL_P6;
240 break;
241 case 0x0609:
242 case 0x060D:
243 flag = CPU_INTEL_PENTIUM_M;
244 break;
245 case 0x060E:
246 flag = CPU_INTEL_CORE;
247 break;
248 case 0x060F:
249 case 0x0617:
250 flag = CPU_INTEL_CORE2;
251 break;
252 case 0x061C:
253 flag = CPU_INTEL_ATOM;
254 break;
255 case 0x0F00:
256 case 0x0F01:
257 case 0x0F02:
258 case 0x0F03:
259 case 0x0F04:
260 flag = CPU_INTEL_XEON_P4;
261 break;
262 case 0x0F06:
263 flag = CPU_INTEL_XEON_MP;
264 break;
265 default:
266 flag = CPU_NONE;
267 break;
268 }
269
270 return flag;
271}
272
273static int get_cpu_range_count(unsigned cpu)
274{
275 int index;
276
277 switch (per_cpu(cpu_model, cpu) >> 16) {
278 case X86_VENDOR_INTEL:
279 index = ARRAY_SIZE(cpu_intel_range);
280 break;
281 case X86_VENDOR_AMD:
282 index = ARRAY_SIZE(cpu_amd_range);
283 break;
284 default:
285 index = 0;
286 break;
287 }
288
289 return index;
290}
291
292static int is_typeflag_valid(unsigned cpu, unsigned flag)
293{
294 unsigned vendor, modelflag;
295 int i, index;
296
297 /* Standard Registers should be always valid */
298 if (flag >= CPU_TSS)
299 return 1;
300
301 modelflag = per_cpu(cpu_modelflag, cpu);
302 vendor = per_cpu(cpu_model, cpu) >> 16;
303 index = get_cpu_range_count(cpu);
304
305 for (i = 0; i < index; i++) {
306 switch (vendor) {
307 case X86_VENDOR_INTEL:
308 if ((cpu_intel_range[i].model & modelflag) &&
309 (cpu_intel_range[i].flag & flag))
310 return 1;
311 break;
312 case X86_VENDOR_AMD:
313 if (cpu_amd_range[i].flag & flag)
314 return 1;
315 break;
316 }
317 }
318
319 /* Invalid */
320 return 0;
321}
322
323static unsigned get_cpu_range(unsigned cpu, unsigned *min, unsigned *max,
324 int index, unsigned flag)
325{
326 unsigned modelflag;
327
328 modelflag = per_cpu(cpu_modelflag, cpu);
329 *max = 0;
330 switch (per_cpu(cpu_model, cpu) >> 16) {
331 case X86_VENDOR_INTEL:
332 if ((cpu_intel_range[index].model & modelflag) &&
333 (cpu_intel_range[index].flag & flag)) {
334 *min = cpu_intel_range[index].min;
335 *max = cpu_intel_range[index].max;
336 }
337 break;
338 case X86_VENDOR_AMD:
339 if (cpu_amd_range[index].flag & flag) {
340 *min = cpu_amd_range[index].min;
341 *max = cpu_amd_range[index].max;
342 }
343 break;
344 }
345
346 return *max;
347}
348
349/* This function can also be called with seq = NULL for printk */
350static void print_cpu_data(struct seq_file *seq, unsigned type,
351 u32 low, u32 high)
352{
353 struct cpu_private *priv;
354 u64 val = high;
355
356 if (seq) {
357 priv = seq->private;
358 if (priv->file) {
359 val = (val << 32) | low;
360 seq_printf(seq, "0x%llx\n", val);
361 } else
362 seq_printf(seq, " %08x: %08x_%08x\n",
363 type, high, low);
364 } else
365 printk(KERN_INFO " %08x: %08x_%08x\n", type, high, low);
366}
367
368/* This function can also be called with seq = NULL for printk */
369static void print_msr(struct seq_file *seq, unsigned cpu, unsigned flag)
370{
371 unsigned msr, msr_min, msr_max;
372 struct cpu_private *priv;
373 u32 low, high;
374 int i, range;
375
376 if (seq) {
377 priv = seq->private;
378 if (priv->file) {
379 if (!rdmsr_safe_on_cpu(priv->cpu, priv->reg,
380 &low, &high))
381 print_cpu_data(seq, priv->reg, low, high);
382 return;
383 }
384 }
385
386 range = get_cpu_range_count(cpu);
387
388 for (i = 0; i < range; i++) {
389 if (!get_cpu_range(cpu, &msr_min, &msr_max, i, flag))
390 continue;
391
392 for (msr = msr_min; msr <= msr_max; msr++) {
393 if (rdmsr_safe_on_cpu(cpu, msr, &low, &high))
394 continue;
395 print_cpu_data(seq, msr, low, high);
396 }
397 }
398}
399
400static void print_tss(void *arg)
401{
402 struct pt_regs *regs = task_pt_regs(current);
403 struct seq_file *seq = arg;
404 unsigned int seg;
405
406 seq_printf(seq, " RAX\t: %016lx\n", regs->ax);
407 seq_printf(seq, " RBX\t: %016lx\n", regs->bx);
408 seq_printf(seq, " RCX\t: %016lx\n", regs->cx);
409 seq_printf(seq, " RDX\t: %016lx\n", regs->dx);
410
411 seq_printf(seq, " RSI\t: %016lx\n", regs->si);
412 seq_printf(seq, " RDI\t: %016lx\n", regs->di);
413 seq_printf(seq, " RBP\t: %016lx\n", regs->bp);
414 seq_printf(seq, " ESP\t: %016lx\n", regs->sp);
415
416#ifdef CONFIG_X86_64
417 seq_printf(seq, " R08\t: %016lx\n", regs->r8);
418 seq_printf(seq, " R09\t: %016lx\n", regs->r9);
419 seq_printf(seq, " R10\t: %016lx\n", regs->r10);
420 seq_printf(seq, " R11\t: %016lx\n", regs->r11);
421 seq_printf(seq, " R12\t: %016lx\n", regs->r12);
422 seq_printf(seq, " R13\t: %016lx\n", regs->r13);
423 seq_printf(seq, " R14\t: %016lx\n", regs->r14);
424 seq_printf(seq, " R15\t: %016lx\n", regs->r15);
425#endif
426
427 asm("movl %%cs,%0" : "=r" (seg));
428 seq_printf(seq, " CS\t: %04x\n", seg);
429 asm("movl %%ds,%0" : "=r" (seg));
430 seq_printf(seq, " DS\t: %04x\n", seg);
431 seq_printf(seq, " SS\t: %04lx\n", regs->ss & 0xffff);
432 asm("movl %%es,%0" : "=r" (seg));
433 seq_printf(seq, " ES\t: %04x\n", seg);
434 asm("movl %%fs,%0" : "=r" (seg));
435 seq_printf(seq, " FS\t: %04x\n", seg);
436 asm("movl %%gs,%0" : "=r" (seg));
437 seq_printf(seq, " GS\t: %04x\n", seg);
438
439 seq_printf(seq, " EFLAGS\t: %016lx\n", regs->flags);
440
441 seq_printf(seq, " EIP\t: %016lx\n", regs->ip);
442}
443
444static void print_cr(void *arg)
445{
446 struct seq_file *seq = arg;
447
448 seq_printf(seq, " cr0\t: %016lx\n", read_cr0());
449 seq_printf(seq, " cr2\t: %016lx\n", read_cr2());
450 seq_printf(seq, " cr3\t: %016lx\n", read_cr3());
451 seq_printf(seq, " cr4\t: %016lx\n", read_cr4_safe());
452#ifdef CONFIG_X86_64
453 seq_printf(seq, " cr8\t: %016lx\n", read_cr8());
454#endif
455}
456
457static void print_desc_ptr(char *str, struct seq_file *seq, struct desc_ptr dt)
458{
459 seq_printf(seq, " %s\t: %016llx\n", str, (u64)(dt.address | dt.size));
460}
461
462static void print_dt(void *seq)
463{
464 struct desc_ptr dt;
465 unsigned long ldt;
466
467 /* IDT */
468 store_idt((struct desc_ptr *)&dt);
469 print_desc_ptr("IDT", seq, dt);
470
471 /* GDT */
472 store_gdt((struct desc_ptr *)&dt);
473 print_desc_ptr("GDT", seq, dt);
474
475 /* LDT */
476 store_ldt(ldt);
477 seq_printf(seq, " LDT\t: %016lx\n", ldt);
478
479 /* TR */
480 store_tr(ldt);
481 seq_printf(seq, " TR\t: %016lx\n", ldt);
482}
483
484static void print_dr(void *arg)
485{
486 struct seq_file *seq = arg;
487 unsigned long dr;
488 int i;
489
490 for (i = 0; i < 8; i++) {
491 /* Ignore db4, db5 */
492 if ((i == 4) || (i == 5))
493 continue;
494 get_debugreg(dr, i);
495 seq_printf(seq, " dr%d\t: %016lx\n", i, dr);
496 }
497
498 seq_printf(seq, "\n MSR\t:\n");
499}
500
501static void print_apic(void *arg)
502{
503 struct seq_file *seq = arg;
504
505#ifdef CONFIG_X86_LOCAL_APIC
506 seq_printf(seq, " LAPIC\t:\n");
507 seq_printf(seq, " ID\t\t: %08x\n", apic_read(APIC_ID) >> 24);
508 seq_printf(seq, " LVR\t\t: %08x\n", apic_read(APIC_LVR));
509 seq_printf(seq, " TASKPRI\t: %08x\n", apic_read(APIC_TASKPRI));
510 seq_printf(seq, " ARBPRI\t\t: %08x\n", apic_read(APIC_ARBPRI));
511 seq_printf(seq, " PROCPRI\t: %08x\n", apic_read(APIC_PROCPRI));
512 seq_printf(seq, " LDR\t\t: %08x\n", apic_read(APIC_LDR));
513 seq_printf(seq, " DFR\t\t: %08x\n", apic_read(APIC_DFR));
514 seq_printf(seq, " SPIV\t\t: %08x\n", apic_read(APIC_SPIV));
515 seq_printf(seq, " ISR\t\t: %08x\n", apic_read(APIC_ISR));
516 seq_printf(seq, " ESR\t\t: %08x\n", apic_read(APIC_ESR));
517 seq_printf(seq, " ICR\t\t: %08x\n", apic_read(APIC_ICR));
518 seq_printf(seq, " ICR2\t\t: %08x\n", apic_read(APIC_ICR2));
519 seq_printf(seq, " LVTT\t\t: %08x\n", apic_read(APIC_LVTT));
520 seq_printf(seq, " LVTTHMR\t: %08x\n", apic_read(APIC_LVTTHMR));
521 seq_printf(seq, " LVTPC\t\t: %08x\n", apic_read(APIC_LVTPC));
522 seq_printf(seq, " LVT0\t\t: %08x\n", apic_read(APIC_LVT0));
523 seq_printf(seq, " LVT1\t\t: %08x\n", apic_read(APIC_LVT1));
524 seq_printf(seq, " LVTERR\t\t: %08x\n", apic_read(APIC_LVTERR));
525 seq_printf(seq, " TMICT\t\t: %08x\n", apic_read(APIC_TMICT));
526 seq_printf(seq, " TMCCT\t\t: %08x\n", apic_read(APIC_TMCCT));
527 seq_printf(seq, " TDCR\t\t: %08x\n", apic_read(APIC_TDCR));
528#endif /* CONFIG_X86_LOCAL_APIC */
529
530 seq_printf(seq, "\n MSR\t:\n");
531}
532
533static int cpu_seq_show(struct seq_file *seq, void *v)
534{
535 struct cpu_private *priv = seq->private;
536
537 if (priv == NULL)
538 return -EINVAL;
539
540 switch (cpu_base[priv->type].flag) {
541 case CPU_TSS:
542 smp_call_function_single(priv->cpu, print_tss, seq, 1);
543 break;
544 case CPU_CR:
545 smp_call_function_single(priv->cpu, print_cr, seq, 1);
546 break;
547 case CPU_DT:
548 smp_call_function_single(priv->cpu, print_dt, seq, 1);
549 break;
550 case CPU_DEBUG:
551 if (priv->file == CPU_INDEX_BIT)
552 smp_call_function_single(priv->cpu, print_dr, seq, 1);
553 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
554 break;
555 case CPU_APIC:
556 if (priv->file == CPU_INDEX_BIT)
557 smp_call_function_single(priv->cpu, print_apic, seq, 1);
558 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
559 break;
560
561 default:
562 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
563 break;
564 }
565 seq_printf(seq, "\n");
566
567 return 0;
568}
569
570static void *cpu_seq_start(struct seq_file *seq, loff_t *pos)
571{
572 if (*pos == 0) /* One time is enough ;-) */
573 return seq;
574
575 return NULL;
576}
577
578static void *cpu_seq_next(struct seq_file *seq, void *v, loff_t *pos)
579{
580 (*pos)++;
581
582 return cpu_seq_start(seq, pos);
583}
584
585static void cpu_seq_stop(struct seq_file *seq, void *v)
586{
587}
588
589static const struct seq_operations cpu_seq_ops = {
590 .start = cpu_seq_start,
591 .next = cpu_seq_next,
592 .stop = cpu_seq_stop,
593 .show = cpu_seq_show,
594};
595
596static int cpu_seq_open(struct inode *inode, struct file *file)
597{
598 struct cpu_private *priv = inode->i_private;
599 struct seq_file *seq;
600 int err;
601
602 err = seq_open(file, &cpu_seq_ops);
603 if (!err) {
604 seq = file->private_data;
605 seq->private = priv;
606 }
607
608 return err;
609}
610
611static const struct file_operations cpu_fops = {
612 .open = cpu_seq_open,
613 .read = seq_read,
614 .llseek = seq_lseek,
615 .release = seq_release,
616};
617
618static int cpu_create_file(unsigned cpu, unsigned type, unsigned reg,
619 unsigned file, struct dentry *dentry)
620{
621 struct cpu_private *priv = NULL;
622
623 /* Already intialized */
624 if (file == CPU_INDEX_BIT)
625 if (per_cpu(cpu_arr[type].init, cpu))
626 return 0;
627
628 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
629 if (priv == NULL)
630 return -ENOMEM;
631
632 priv->cpu = cpu;
633 priv->type = type;
634 priv->reg = reg;
635 priv->file = file;
636 mutex_lock(&cpu_debug_lock);
637 per_cpu(priv_arr[type], cpu) = priv;
638 per_cpu(cpu_priv_count, cpu)++;
639 mutex_unlock(&cpu_debug_lock);
640
641 if (file)
642 debugfs_create_file(cpu_file[file].name, S_IRUGO,
643 dentry, (void *)priv, &cpu_fops);
644 else {
645 debugfs_create_file(cpu_base[type].name, S_IRUGO,
646 per_cpu(cpu_arr[type].dentry, cpu),
647 (void *)priv, &cpu_fops);
648 mutex_lock(&cpu_debug_lock);
649 per_cpu(cpu_arr[type].init, cpu) = 1;
650 mutex_unlock(&cpu_debug_lock);
651 }
652
653 return 0;
654}
655
656static int cpu_init_regfiles(unsigned cpu, unsigned int type, unsigned reg,
657 struct dentry *dentry)
658{
659 unsigned file;
660 int err = 0;
661
662 for (file = 0; file < ARRAY_SIZE(cpu_file); file++) {
663 err = cpu_create_file(cpu, type, reg, file, dentry);
664 if (err)
665 return err;
666 }
667
668 return err;
669}
670
671static int cpu_init_msr(unsigned cpu, unsigned type, struct dentry *dentry)
672{
673 struct dentry *cpu_dentry = NULL;
674 unsigned reg, reg_min, reg_max;
675 int i, range, err = 0;
676 char reg_dir[12];
677 u32 low, high;
678
679 range = get_cpu_range_count(cpu);
680
681 for (i = 0; i < range; i++) {
682 if (!get_cpu_range(cpu, &reg_min, &reg_max, i,
683 cpu_base[type].flag))
684 continue;
685
686 for (reg = reg_min; reg <= reg_max; reg++) {
687 if (rdmsr_safe_on_cpu(cpu, reg, &low, &high))
688 continue;
689
690 sprintf(reg_dir, "0x%x", reg);
691 cpu_dentry = debugfs_create_dir(reg_dir, dentry);
692 err = cpu_init_regfiles(cpu, type, reg, cpu_dentry);
693 if (err)
694 return err;
695 }
696 }
697
698 return err;
699}
700
701static int cpu_init_allreg(unsigned cpu, struct dentry *dentry)
702{
703 struct dentry *cpu_dentry = NULL;
704 unsigned type;
705 int err = 0;
706
707 for (type = 0; type < ARRAY_SIZE(cpu_base) - 1; type++) {
708 if (!is_typeflag_valid(cpu, cpu_base[type].flag))
709 continue;
710 cpu_dentry = debugfs_create_dir(cpu_base[type].name, dentry);
711 per_cpu(cpu_arr[type].dentry, cpu) = cpu_dentry;
712
713 if (type < CPU_TSS_BIT)
714 err = cpu_init_msr(cpu, type, cpu_dentry);
715 else
716 err = cpu_create_file(cpu, type, 0, CPU_INDEX_BIT,
717 cpu_dentry);
718 if (err)
719 return err;
720 }
721
722 return err;
723}
724
725static int cpu_init_cpu(void)
726{
727 struct dentry *cpu_dentry = NULL;
728 struct cpuinfo_x86 *cpui;
729 char cpu_dir[12];
730 unsigned cpu;
731 int err = 0;
732
733 for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
734 cpui = &cpu_data(cpu);
735 if (!cpu_has(cpui, X86_FEATURE_MSR))
736 continue;
737 per_cpu(cpu_model, cpu) = ((cpui->x86_vendor << 16) |
738 (cpui->x86 << 8) |
739 (cpui->x86_model));
740 per_cpu(cpu_modelflag, cpu) = get_cpu_modelflag(cpu);
741
742 sprintf(cpu_dir, "cpu%d", cpu);
743 cpu_dentry = debugfs_create_dir(cpu_dir, cpu_debugfs_dir);
744 err = cpu_init_allreg(cpu, cpu_dentry);
745
746 pr_info("cpu%d(%d) debug files %d\n",
747 cpu, nr_cpu_ids, per_cpu(cpu_priv_count, cpu));
748 if (per_cpu(cpu_priv_count, cpu) > MAX_CPU_FILES) {
749 pr_err("Register files count %d exceeds limit %d\n",
750 per_cpu(cpu_priv_count, cpu), MAX_CPU_FILES);
751 per_cpu(cpu_priv_count, cpu) = MAX_CPU_FILES;
752 err = -ENFILE;
753 }
754 if (err)
755 return err;
756 }
757
758 return err;
759}
760
761static int __init cpu_debug_init(void)
762{
763 cpu_debugfs_dir = debugfs_create_dir("cpu", arch_debugfs_dir);
764
765 return cpu_init_cpu();
766}
767
768static void __exit cpu_debug_exit(void)
769{
770 int i, cpu;
771
772 if (cpu_debugfs_dir)
773 debugfs_remove_recursive(cpu_debugfs_dir);
774
775 for (cpu = 0; cpu < nr_cpu_ids; cpu++)
776 for (i = 0; i < per_cpu(cpu_priv_count, cpu); i++)
777 kfree(per_cpu(priv_arr[i], cpu));
778}
779
780module_init(cpu_debug_init);
781module_exit(cpu_debug_exit);
782
783MODULE_AUTHOR("Jaswinder Singh Rajput");
784MODULE_DESCRIPTION("CPU Debug module");
785MODULE_LICENSE("GPL");
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
index bfbd5323a635..ca14604611ec 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -639,7 +639,7 @@ static void mce_init_timer(void)
639 if (!next_interval) 639 if (!next_interval)
640 return; 640 return;
641 setup_timer(t, mcheck_timer, smp_processor_id()); 641 setup_timer(t, mcheck_timer, smp_processor_id());
642 t->expires = round_jiffies_relative(jiffies + next_interval); 642 t->expires = round_jiffies(jiffies + next_interval);
643 add_timer(t); 643 add_timer(t);
644} 644}
645 645
@@ -1110,7 +1110,7 @@ static int __cpuinit mce_cpu_callback(struct notifier_block *nfb,
1110 break; 1110 break;
1111 case CPU_DOWN_FAILED: 1111 case CPU_DOWN_FAILED:
1112 case CPU_DOWN_FAILED_FROZEN: 1112 case CPU_DOWN_FAILED_FROZEN:
1113 t->expires = round_jiffies_relative(jiffies + next_interval); 1113 t->expires = round_jiffies(jiffies + next_interval);
1114 add_timer_on(t, cpu); 1114 add_timer_on(t, cpu);
1115 smp_call_function_single(cpu, mce_reenable_cpu, &action, 1); 1115 smp_call_function_single(cpu, mce_reenable_cpu, &action, 1);
1116 break; 1116 break;
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index 899e8938e79f..c929add475c9 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -442,8 +442,7 @@ sysenter_past_esp:
442 442
443 GET_THREAD_INFO(%ebp) 443 GET_THREAD_INFO(%ebp)
444 444
445 /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ 445 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
446 testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
447 jnz sysenter_audit 446 jnz sysenter_audit
448sysenter_do_call: 447sysenter_do_call:
449 cmpl $(nr_syscalls), %eax 448 cmpl $(nr_syscalls), %eax
@@ -454,7 +453,7 @@ sysenter_do_call:
454 DISABLE_INTERRUPTS(CLBR_ANY) 453 DISABLE_INTERRUPTS(CLBR_ANY)
455 TRACE_IRQS_OFF 454 TRACE_IRQS_OFF
456 movl TI_flags(%ebp), %ecx 455 movl TI_flags(%ebp), %ecx
457 testw $_TIF_ALLWORK_MASK, %cx 456 testl $_TIF_ALLWORK_MASK, %ecx
458 jne sysexit_audit 457 jne sysexit_audit
459sysenter_exit: 458sysenter_exit:
460/* if something modifies registers it must also disable sysexit */ 459/* if something modifies registers it must also disable sysexit */
@@ -468,7 +467,7 @@ sysenter_exit:
468 467
469#ifdef CONFIG_AUDITSYSCALL 468#ifdef CONFIG_AUDITSYSCALL
470sysenter_audit: 469sysenter_audit:
471 testw $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 470 testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
472 jnz syscall_trace_entry 471 jnz syscall_trace_entry
473 addl $4,%esp 472 addl $4,%esp
474 CFI_ADJUST_CFA_OFFSET -4 473 CFI_ADJUST_CFA_OFFSET -4
@@ -485,7 +484,7 @@ sysenter_audit:
485 jmp sysenter_do_call 484 jmp sysenter_do_call
486 485
487sysexit_audit: 486sysexit_audit:
488 testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx 487 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx
489 jne syscall_exit_work 488 jne syscall_exit_work
490 TRACE_IRQS_ON 489 TRACE_IRQS_ON
491 ENABLE_INTERRUPTS(CLBR_ANY) 490 ENABLE_INTERRUPTS(CLBR_ANY)
@@ -498,7 +497,7 @@ sysexit_audit:
498 DISABLE_INTERRUPTS(CLBR_ANY) 497 DISABLE_INTERRUPTS(CLBR_ANY)
499 TRACE_IRQS_OFF 498 TRACE_IRQS_OFF
500 movl TI_flags(%ebp), %ecx 499 movl TI_flags(%ebp), %ecx
501 testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx 500 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx
502 jne syscall_exit_work 501 jne syscall_exit_work
503 movl PT_EAX(%esp),%eax /* reload syscall return value */ 502 movl PT_EAX(%esp),%eax /* reload syscall return value */
504 jmp sysenter_exit 503 jmp sysenter_exit
@@ -523,8 +522,7 @@ ENTRY(system_call)
523 SAVE_ALL 522 SAVE_ALL
524 GET_THREAD_INFO(%ebp) 523 GET_THREAD_INFO(%ebp)
525 # system call tracing in operation / emulation 524 # system call tracing in operation / emulation
526 /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ 525 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
527 testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
528 jnz syscall_trace_entry 526 jnz syscall_trace_entry
529 cmpl $(nr_syscalls), %eax 527 cmpl $(nr_syscalls), %eax
530 jae syscall_badsys 528 jae syscall_badsys
@@ -538,7 +536,7 @@ syscall_exit:
538 # between sampling and the iret 536 # between sampling and the iret
539 TRACE_IRQS_OFF 537 TRACE_IRQS_OFF
540 movl TI_flags(%ebp), %ecx 538 movl TI_flags(%ebp), %ecx
541 testw $_TIF_ALLWORK_MASK, %cx # current->work 539 testl $_TIF_ALLWORK_MASK, %ecx # current->work
542 jne syscall_exit_work 540 jne syscall_exit_work
543 541
544restore_all: 542restore_all:
@@ -673,7 +671,7 @@ END(syscall_trace_entry)
673 # perform syscall exit tracing 671 # perform syscall exit tracing
674 ALIGN 672 ALIGN
675syscall_exit_work: 673syscall_exit_work:
676 testb $_TIF_WORK_SYSCALL_EXIT, %cl 674 testl $_TIF_WORK_SYSCALL_EXIT, %ecx
677 jz work_pending 675 jz work_pending
678 TRACE_IRQS_ON 676 TRACE_IRQS_ON
679 ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call 677 ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 7ba4621c0dfa..a331ec38af9e 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -368,6 +368,7 @@ ENTRY(save_rest)
368END(save_rest) 368END(save_rest)
369 369
370/* save complete stack frame */ 370/* save complete stack frame */
371 .pushsection .kprobes.text, "ax"
371ENTRY(save_paranoid) 372ENTRY(save_paranoid)
372 XCPT_FRAME 1 RDI+8 373 XCPT_FRAME 1 RDI+8
373 cld 374 cld
@@ -396,6 +397,7 @@ ENTRY(save_paranoid)
3961: ret 3971: ret
397 CFI_ENDPROC 398 CFI_ENDPROC
398END(save_paranoid) 399END(save_paranoid)
400 .popsection
399 401
400/* 402/*
401 * A newly forked process directly context switches into this address. 403 * A newly forked process directly context switches into this address.
@@ -416,7 +418,6 @@ ENTRY(ret_from_fork)
416 418
417 GET_THREAD_INFO(%rcx) 419 GET_THREAD_INFO(%rcx)
418 420
419 CFI_REMEMBER_STATE
420 RESTORE_REST 421 RESTORE_REST
421 422
422 testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread? 423 testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread?
@@ -428,7 +429,6 @@ ENTRY(ret_from_fork)
428 RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET 429 RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET
429 jmp ret_from_sys_call # go to the SYSRET fastpath 430 jmp ret_from_sys_call # go to the SYSRET fastpath
430 431
431 CFI_RESTORE_STATE
432 CFI_ENDPROC 432 CFI_ENDPROC
433END(ret_from_fork) 433END(ret_from_fork)
434 434
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index a85da1764b1c..1d0d7f42efe3 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -453,3 +453,66 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr)
453 } 453 }
454} 454}
455#endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 455#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
456
457#ifdef CONFIG_FTRACE_SYSCALLS
458
459extern unsigned long __start_syscalls_metadata[];
460extern unsigned long __stop_syscalls_metadata[];
461extern unsigned long *sys_call_table;
462
463static struct syscall_metadata **syscalls_metadata;
464
465static struct syscall_metadata *find_syscall_meta(unsigned long *syscall)
466{
467 struct syscall_metadata *start;
468 struct syscall_metadata *stop;
469 char str[KSYM_SYMBOL_LEN];
470
471
472 start = (struct syscall_metadata *)__start_syscalls_metadata;
473 stop = (struct syscall_metadata *)__stop_syscalls_metadata;
474 kallsyms_lookup((unsigned long) syscall, NULL, NULL, NULL, str);
475
476 for ( ; start < stop; start++) {
477 if (start->name && !strcmp(start->name, str))
478 return start;
479 }
480 return NULL;
481}
482
483struct syscall_metadata *syscall_nr_to_meta(int nr)
484{
485 if (!syscalls_metadata || nr >= FTRACE_SYSCALL_MAX || nr < 0)
486 return NULL;
487
488 return syscalls_metadata[nr];
489}
490
491void arch_init_ftrace_syscalls(void)
492{
493 int i;
494 struct syscall_metadata *meta;
495 unsigned long **psys_syscall_table = &sys_call_table;
496 static atomic_t refs;
497
498 if (atomic_inc_return(&refs) != 1)
499 goto end;
500
501 syscalls_metadata = kzalloc(sizeof(*syscalls_metadata) *
502 FTRACE_SYSCALL_MAX, GFP_KERNEL);
503 if (!syscalls_metadata) {
504 WARN_ON(1);
505 return;
506 }
507
508 for (i = 0; i < FTRACE_SYSCALL_MAX; i++) {
509 meta = find_syscall_meta(psys_syscall_table[i]);
510 syscalls_metadata[i] = meta;
511 }
512 return;
513
514 /* Paranoid: avoid overflow */
515end:
516 atomic_dec(&refs);
517}
518#endif
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
index f5fc8c781a62..e7368c1da01d 100644
--- a/arch/x86/kernel/machine_kexec_32.c
+++ b/arch/x86/kernel/machine_kexec_32.c
@@ -14,12 +14,12 @@
14#include <linux/ftrace.h> 14#include <linux/ftrace.h>
15#include <linux/suspend.h> 15#include <linux/suspend.h>
16#include <linux/gfp.h> 16#include <linux/gfp.h>
17#include <linux/io.h>
17 18
18#include <asm/pgtable.h> 19#include <asm/pgtable.h>
19#include <asm/pgalloc.h> 20#include <asm/pgalloc.h>
20#include <asm/tlbflush.h> 21#include <asm/tlbflush.h>
21#include <asm/mmu_context.h> 22#include <asm/mmu_context.h>
22#include <asm/io.h>
23#include <asm/apic.h> 23#include <asm/apic.h>
24#include <asm/cpufeature.h> 24#include <asm/cpufeature.h>
25#include <asm/desc.h> 25#include <asm/desc.h>
@@ -63,7 +63,7 @@ static void load_segments(void)
63 "\tmovl %%eax,%%fs\n" 63 "\tmovl %%eax,%%fs\n"
64 "\tmovl %%eax,%%gs\n" 64 "\tmovl %%eax,%%gs\n"
65 "\tmovl %%eax,%%ss\n" 65 "\tmovl %%eax,%%ss\n"
66 ::: "eax", "memory"); 66 : : : "eax", "memory");
67#undef STR 67#undef STR
68#undef __STR 68#undef __STR
69} 69}
@@ -205,7 +205,8 @@ void machine_kexec(struct kimage *image)
205 205
206 if (image->preserve_context) { 206 if (image->preserve_context) {
207#ifdef CONFIG_X86_IO_APIC 207#ifdef CONFIG_X86_IO_APIC
208 /* We need to put APICs in legacy mode so that we can 208 /*
209 * We need to put APICs in legacy mode so that we can
209 * get timer interrupts in second kernel. kexec/kdump 210 * get timer interrupts in second kernel. kexec/kdump
210 * paths already have calls to disable_IO_APIC() in 211 * paths already have calls to disable_IO_APIC() in
211 * one form or other. kexec jump path also need 212 * one form or other. kexec jump path also need
@@ -227,7 +228,8 @@ void machine_kexec(struct kimage *image)
227 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) 228 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page)
228 << PAGE_SHIFT); 229 << PAGE_SHIFT);
229 230
230 /* The segment registers are funny things, they have both a 231 /*
232 * The segment registers are funny things, they have both a
231 * visible and an invisible part. Whenever the visible part is 233 * visible and an invisible part. Whenever the visible part is
232 * set to a specific selector, the invisible part is loaded 234 * set to a specific selector, the invisible part is loaded
233 * with from a table in memory. At no other time is the 235 * with from a table in memory. At no other time is the
@@ -237,11 +239,12 @@ void machine_kexec(struct kimage *image)
237 * segments, before I zap the gdt with an invalid value. 239 * segments, before I zap the gdt with an invalid value.
238 */ 240 */
239 load_segments(); 241 load_segments();
240 /* The gdt & idt are now invalid. 242 /*
243 * The gdt & idt are now invalid.
241 * If you want to load them you must set up your own idt & gdt. 244 * If you want to load them you must set up your own idt & gdt.
242 */ 245 */
243 set_gdt(phys_to_virt(0),0); 246 set_gdt(phys_to_virt(0), 0);
244 set_idt(phys_to_virt(0),0); 247 set_idt(phys_to_virt(0), 0);
245 248
246 /* now call it */ 249 /* now call it */
247 image->start = relocate_kernel_ptr((unsigned long)image->head, 250 image->start = relocate_kernel_ptr((unsigned long)image->head,
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
index 6993d51b7fd8..89cea4d44679 100644
--- a/arch/x86/kernel/machine_kexec_64.c
+++ b/arch/x86/kernel/machine_kexec_64.c
@@ -12,11 +12,47 @@
12#include <linux/reboot.h> 12#include <linux/reboot.h>
13#include <linux/numa.h> 13#include <linux/numa.h>
14#include <linux/ftrace.h> 14#include <linux/ftrace.h>
15#include <linux/io.h>
16#include <linux/suspend.h>
15 17
16#include <asm/pgtable.h> 18#include <asm/pgtable.h>
17#include <asm/tlbflush.h> 19#include <asm/tlbflush.h>
18#include <asm/mmu_context.h> 20#include <asm/mmu_context.h>
19#include <asm/io.h> 21
22static int init_one_level2_page(struct kimage *image, pgd_t *pgd,
23 unsigned long addr)
24{
25 pud_t *pud;
26 pmd_t *pmd;
27 struct page *page;
28 int result = -ENOMEM;
29
30 addr &= PMD_MASK;
31 pgd += pgd_index(addr);
32 if (!pgd_present(*pgd)) {
33 page = kimage_alloc_control_pages(image, 0);
34 if (!page)
35 goto out;
36 pud = (pud_t *)page_address(page);
37 memset(pud, 0, PAGE_SIZE);
38 set_pgd(pgd, __pgd(__pa(pud) | _KERNPG_TABLE));
39 }
40 pud = pud_offset(pgd, addr);
41 if (!pud_present(*pud)) {
42 page = kimage_alloc_control_pages(image, 0);
43 if (!page)
44 goto out;
45 pmd = (pmd_t *)page_address(page);
46 memset(pmd, 0, PAGE_SIZE);
47 set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE));
48 }
49 pmd = pmd_offset(pud, addr);
50 if (!pmd_present(*pmd))
51 set_pmd(pmd, __pmd(addr | __PAGE_KERNEL_LARGE_EXEC));
52 result = 0;
53out:
54 return result;
55}
20 56
21static void init_level2_page(pmd_t *level2p, unsigned long addr) 57static void init_level2_page(pmd_t *level2p, unsigned long addr)
22{ 58{
@@ -83,9 +119,8 @@ static int init_level4_page(struct kimage *image, pgd_t *level4p,
83 } 119 }
84 level3p = (pud_t *)page_address(page); 120 level3p = (pud_t *)page_address(page);
85 result = init_level3_page(image, level3p, addr, last_addr); 121 result = init_level3_page(image, level3p, addr, last_addr);
86 if (result) { 122 if (result)
87 goto out; 123 goto out;
88 }
89 set_pgd(level4p++, __pgd(__pa(level3p) | _KERNPG_TABLE)); 124 set_pgd(level4p++, __pgd(__pa(level3p) | _KERNPG_TABLE));
90 addr += PGDIR_SIZE; 125 addr += PGDIR_SIZE;
91 } 126 }
@@ -156,6 +191,13 @@ static int init_pgtable(struct kimage *image, unsigned long start_pgtable)
156 result = init_level4_page(image, level4p, 0, max_pfn << PAGE_SHIFT); 191 result = init_level4_page(image, level4p, 0, max_pfn << PAGE_SHIFT);
157 if (result) 192 if (result)
158 return result; 193 return result;
194 /*
195 * image->start may be outside 0 ~ max_pfn, for example when
196 * jump back to original kernel from kexeced kernel
197 */
198 result = init_one_level2_page(image, level4p, image->start);
199 if (result)
200 return result;
159 return init_transition_pgtable(image, level4p); 201 return init_transition_pgtable(image, level4p);
160} 202}
161 203
@@ -229,20 +271,45 @@ void machine_kexec(struct kimage *image)
229{ 271{
230 unsigned long page_list[PAGES_NR]; 272 unsigned long page_list[PAGES_NR];
231 void *control_page; 273 void *control_page;
274 int save_ftrace_enabled;
232 275
233 tracer_disable(); 276#ifdef CONFIG_KEXEC_JUMP
277 if (kexec_image->preserve_context)
278 save_processor_state();
279#endif
280
281 save_ftrace_enabled = __ftrace_enabled_save();
234 282
235 /* Interrupts aren't acceptable while we reboot */ 283 /* Interrupts aren't acceptable while we reboot */
236 local_irq_disable(); 284 local_irq_disable();
237 285
286 if (image->preserve_context) {
287#ifdef CONFIG_X86_IO_APIC
288 /*
289 * We need to put APICs in legacy mode so that we can
290 * get timer interrupts in second kernel. kexec/kdump
291 * paths already have calls to disable_IO_APIC() in
292 * one form or other. kexec jump path also need
293 * one.
294 */
295 disable_IO_APIC();
296#endif
297 }
298
238 control_page = page_address(image->control_code_page) + PAGE_SIZE; 299 control_page = page_address(image->control_code_page) + PAGE_SIZE;
239 memcpy(control_page, relocate_kernel, PAGE_SIZE); 300 memcpy(control_page, relocate_kernel, KEXEC_CONTROL_CODE_MAX_SIZE);
240 301
241 page_list[PA_CONTROL_PAGE] = virt_to_phys(control_page); 302 page_list[PA_CONTROL_PAGE] = virt_to_phys(control_page);
303 page_list[VA_CONTROL_PAGE] = (unsigned long)control_page;
242 page_list[PA_TABLE_PAGE] = 304 page_list[PA_TABLE_PAGE] =
243 (unsigned long)__pa(page_address(image->control_code_page)); 305 (unsigned long)__pa(page_address(image->control_code_page));
244 306
245 /* The segment registers are funny things, they have both a 307 if (image->type == KEXEC_TYPE_DEFAULT)
308 page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page)
309 << PAGE_SHIFT);
310
311 /*
312 * The segment registers are funny things, they have both a
246 * visible and an invisible part. Whenever the visible part is 313 * visible and an invisible part. Whenever the visible part is
247 * set to a specific selector, the invisible part is loaded 314 * set to a specific selector, the invisible part is loaded
248 * with from a table in memory. At no other time is the 315 * with from a table in memory. At no other time is the
@@ -252,15 +319,25 @@ void machine_kexec(struct kimage *image)
252 * segments, before I zap the gdt with an invalid value. 319 * segments, before I zap the gdt with an invalid value.
253 */ 320 */
254 load_segments(); 321 load_segments();
255 /* The gdt & idt are now invalid. 322 /*
323 * The gdt & idt are now invalid.
256 * If you want to load them you must set up your own idt & gdt. 324 * If you want to load them you must set up your own idt & gdt.
257 */ 325 */
258 set_gdt(phys_to_virt(0),0); 326 set_gdt(phys_to_virt(0), 0);
259 set_idt(phys_to_virt(0),0); 327 set_idt(phys_to_virt(0), 0);
260 328
261 /* now call it */ 329 /* now call it */
262 relocate_kernel((unsigned long)image->head, (unsigned long)page_list, 330 image->start = relocate_kernel((unsigned long)image->head,
263 image->start); 331 (unsigned long)page_list,
332 image->start,
333 image->preserve_context);
334
335#ifdef CONFIG_KEXEC_JUMP
336 if (kexec_image->preserve_context)
337 restore_processor_state();
338#endif
339
340 __ftrace_enabled_restore(save_ftrace_enabled);
264} 341}
265 342
266void arch_crash_save_vmcoreinfo(void) 343void arch_crash_save_vmcoreinfo(void)
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 309949e9e1c1..6a5a2970f4c5 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -74,8 +74,7 @@ static void ich_force_hpet_resume(void)
74 if (!force_hpet_address) 74 if (!force_hpet_address)
75 return; 75 return;
76 76
77 if (rcba_base == NULL) 77 BUG_ON(rcba_base == NULL);
78 BUG();
79 78
80 /* read the Function Disable register, dword mode only */ 79 /* read the Function Disable register, dword mode only */
81 val = readl(rcba_base + 0x3404); 80 val = readl(rcba_base + 0x3404);
diff --git a/arch/x86/kernel/relocate_kernel_32.S b/arch/x86/kernel/relocate_kernel_32.S
index 2064d0aa8d28..41235531b11c 100644
--- a/arch/x86/kernel/relocate_kernel_32.S
+++ b/arch/x86/kernel/relocate_kernel_32.S
@@ -17,7 +17,8 @@
17 17
18#define PTR(x) (x << 2) 18#define PTR(x) (x << 2)
19 19
20/* control_page + KEXEC_CONTROL_CODE_MAX_SIZE 20/*
21 * control_page + KEXEC_CONTROL_CODE_MAX_SIZE
21 * ~ control_page + PAGE_SIZE are used as data storage and stack for 22 * ~ control_page + PAGE_SIZE are used as data storage and stack for
22 * jumping back 23 * jumping back
23 */ 24 */
@@ -76,8 +77,10 @@ relocate_kernel:
76 movl %eax, CP_PA_SWAP_PAGE(%edi) 77 movl %eax, CP_PA_SWAP_PAGE(%edi)
77 movl %ebx, CP_PA_BACKUP_PAGES_MAP(%edi) 78 movl %ebx, CP_PA_BACKUP_PAGES_MAP(%edi)
78 79
79 /* get physical address of control page now */ 80 /*
80 /* this is impossible after page table switch */ 81 * get physical address of control page now
82 * this is impossible after page table switch
83 */
81 movl PTR(PA_CONTROL_PAGE)(%ebp), %edi 84 movl PTR(PA_CONTROL_PAGE)(%ebp), %edi
82 85
83 /* switch to new set of page tables */ 86 /* switch to new set of page tables */
@@ -97,7 +100,8 @@ identity_mapped:
97 /* store the start address on the stack */ 100 /* store the start address on the stack */
98 pushl %edx 101 pushl %edx
99 102
100 /* Set cr0 to a known state: 103 /*
104 * Set cr0 to a known state:
101 * - Paging disabled 105 * - Paging disabled
102 * - Alignment check disabled 106 * - Alignment check disabled
103 * - Write protect disabled 107 * - Write protect disabled
@@ -113,7 +117,8 @@ identity_mapped:
113 /* clear cr4 if applicable */ 117 /* clear cr4 if applicable */
114 testl %ecx, %ecx 118 testl %ecx, %ecx
115 jz 1f 119 jz 1f
116 /* Set cr4 to a known state: 120 /*
121 * Set cr4 to a known state:
117 * Setting everything to zero seems safe. 122 * Setting everything to zero seems safe.
118 */ 123 */
119 xorl %eax, %eax 124 xorl %eax, %eax
@@ -132,15 +137,18 @@ identity_mapped:
132 call swap_pages 137 call swap_pages
133 addl $8, %esp 138 addl $8, %esp
134 139
135 /* To be certain of avoiding problems with self-modifying code 140 /*
141 * To be certain of avoiding problems with self-modifying code
136 * I need to execute a serializing instruction here. 142 * I need to execute a serializing instruction here.
137 * So I flush the TLB, it's handy, and not processor dependent. 143 * So I flush the TLB, it's handy, and not processor dependent.
138 */ 144 */
139 xorl %eax, %eax 145 xorl %eax, %eax
140 movl %eax, %cr3 146 movl %eax, %cr3
141 147
142 /* set all of the registers to known values */ 148 /*
143 /* leave %esp alone */ 149 * set all of the registers to known values
150 * leave %esp alone
151 */
144 152
145 testl %esi, %esi 153 testl %esi, %esi
146 jnz 1f 154 jnz 1f
diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S
index d32cfb27a479..4de8f5b3d476 100644
--- a/arch/x86/kernel/relocate_kernel_64.S
+++ b/arch/x86/kernel/relocate_kernel_64.S
@@ -19,29 +19,77 @@
19#define PTR(x) (x << 3) 19#define PTR(x) (x << 3)
20#define PAGE_ATTR (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY) 20#define PAGE_ATTR (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
21 21
22/*
23 * control_page + KEXEC_CONTROL_CODE_MAX_SIZE
24 * ~ control_page + PAGE_SIZE are used as data storage and stack for
25 * jumping back
26 */
27#define DATA(offset) (KEXEC_CONTROL_CODE_MAX_SIZE+(offset))
28
29/* Minimal CPU state */
30#define RSP DATA(0x0)
31#define CR0 DATA(0x8)
32#define CR3 DATA(0x10)
33#define CR4 DATA(0x18)
34
35/* other data */
36#define CP_PA_TABLE_PAGE DATA(0x20)
37#define CP_PA_SWAP_PAGE DATA(0x28)
38#define CP_PA_BACKUP_PAGES_MAP DATA(0x30)
39
22 .text 40 .text
23 .align PAGE_SIZE 41 .align PAGE_SIZE
24 .code64 42 .code64
25 .globl relocate_kernel 43 .globl relocate_kernel
26relocate_kernel: 44relocate_kernel:
27 /* %rdi indirection_page 45 /*
46 * %rdi indirection_page
28 * %rsi page_list 47 * %rsi page_list
29 * %rdx start address 48 * %rdx start address
49 * %rcx preserve_context
30 */ 50 */
31 51
52 /* Save the CPU context, used for jumping back */
53 pushq %rbx
54 pushq %rbp
55 pushq %r12
56 pushq %r13
57 pushq %r14
58 pushq %r15
59 pushf
60
61 movq PTR(VA_CONTROL_PAGE)(%rsi), %r11
62 movq %rsp, RSP(%r11)
63 movq %cr0, %rax
64 movq %rax, CR0(%r11)
65 movq %cr3, %rax
66 movq %rax, CR3(%r11)
67 movq %cr4, %rax
68 movq %rax, CR4(%r11)
69
32 /* zero out flags, and disable interrupts */ 70 /* zero out flags, and disable interrupts */
33 pushq $0 71 pushq $0
34 popfq 72 popfq
35 73
36 /* get physical address of control page now */ 74 /*
37 /* this is impossible after page table switch */ 75 * get physical address of control page now
76 * this is impossible after page table switch
77 */
38 movq PTR(PA_CONTROL_PAGE)(%rsi), %r8 78 movq PTR(PA_CONTROL_PAGE)(%rsi), %r8
39 79
40 /* get physical address of page table now too */ 80 /* get physical address of page table now too */
41 movq PTR(PA_TABLE_PAGE)(%rsi), %rcx 81 movq PTR(PA_TABLE_PAGE)(%rsi), %r9
82
83 /* get physical address of swap page now */
84 movq PTR(PA_SWAP_PAGE)(%rsi), %r10
85
86 /* save some information for jumping back */
87 movq %r9, CP_PA_TABLE_PAGE(%r11)
88 movq %r10, CP_PA_SWAP_PAGE(%r11)
89 movq %rdi, CP_PA_BACKUP_PAGES_MAP(%r11)
42 90
43 /* Switch to the identity mapped page tables */ 91 /* Switch to the identity mapped page tables */
44 movq %rcx, %cr3 92 movq %r9, %cr3
45 93
46 /* setup a new stack at the end of the physical control page */ 94 /* setup a new stack at the end of the physical control page */
47 lea PAGE_SIZE(%r8), %rsp 95 lea PAGE_SIZE(%r8), %rsp
@@ -55,7 +103,8 @@ identity_mapped:
55 /* store the start address on the stack */ 103 /* store the start address on the stack */
56 pushq %rdx 104 pushq %rdx
57 105
58 /* Set cr0 to a known state: 106 /*
107 * Set cr0 to a known state:
59 * - Paging enabled 108 * - Paging enabled
60 * - Alignment check disabled 109 * - Alignment check disabled
61 * - Write protect disabled 110 * - Write protect disabled
@@ -68,7 +117,8 @@ identity_mapped:
68 orl $(X86_CR0_PG | X86_CR0_PE), %eax 117 orl $(X86_CR0_PG | X86_CR0_PE), %eax
69 movq %rax, %cr0 118 movq %rax, %cr0
70 119
71 /* Set cr4 to a known state: 120 /*
121 * Set cr4 to a known state:
72 * - physical address extension enabled 122 * - physical address extension enabled
73 */ 123 */
74 movq $X86_CR4_PAE, %rax 124 movq $X86_CR4_PAE, %rax
@@ -78,9 +128,87 @@ identity_mapped:
781: 1281:
79 129
80 /* Flush the TLB (needed?) */ 130 /* Flush the TLB (needed?) */
81 movq %rcx, %cr3 131 movq %r9, %cr3
132
133 movq %rcx, %r11
134 call swap_pages
135
136 /*
137 * To be certain of avoiding problems with self-modifying code
138 * I need to execute a serializing instruction here.
139 * So I flush the TLB by reloading %cr3 here, it's handy,
140 * and not processor dependent.
141 */
142 movq %cr3, %rax
143 movq %rax, %cr3
144
145 /*
146 * set all of the registers to known values
147 * leave %rsp alone
148 */
149
150 testq %r11, %r11
151 jnz 1f
152 xorq %rax, %rax
153 xorq %rbx, %rbx
154 xorq %rcx, %rcx
155 xorq %rdx, %rdx
156 xorq %rsi, %rsi
157 xorq %rdi, %rdi
158 xorq %rbp, %rbp
159 xorq %r8, %r8
160 xorq %r9, %r9
161 xorq %r10, %r9
162 xorq %r11, %r11
163 xorq %r12, %r12
164 xorq %r13, %r13
165 xorq %r14, %r14
166 xorq %r15, %r15
167
168 ret
169
1701:
171 popq %rdx
172 leaq PAGE_SIZE(%r10), %rsp
173 call *%rdx
174
175 /* get the re-entry point of the peer system */
176 movq 0(%rsp), %rbp
177 call 1f
1781:
179 popq %r8
180 subq $(1b - relocate_kernel), %r8
181 movq CP_PA_SWAP_PAGE(%r8), %r10
182 movq CP_PA_BACKUP_PAGES_MAP(%r8), %rdi
183 movq CP_PA_TABLE_PAGE(%r8), %rax
184 movq %rax, %cr3
185 lea PAGE_SIZE(%r8), %rsp
186 call swap_pages
187 movq $virtual_mapped, %rax
188 pushq %rax
189 ret
190
191virtual_mapped:
192 movq RSP(%r8), %rsp
193 movq CR4(%r8), %rax
194 movq %rax, %cr4
195 movq CR3(%r8), %rax
196 movq CR0(%r8), %r8
197 movq %rax, %cr3
198 movq %r8, %cr0
199 movq %rbp, %rax
200
201 popf
202 popq %r15
203 popq %r14
204 popq %r13
205 popq %r12
206 popq %rbp
207 popq %rbx
208 ret
82 209
83 /* Do the copies */ 210 /* Do the copies */
211swap_pages:
84 movq %rdi, %rcx /* Put the page_list in %rcx */ 212 movq %rdi, %rcx /* Put the page_list in %rcx */
85 xorq %rdi, %rdi 213 xorq %rdi, %rdi
86 xorq %rsi, %rsi 214 xorq %rsi, %rsi
@@ -112,36 +240,27 @@ identity_mapped:
112 movq %rcx, %rsi /* For ever source page do a copy */ 240 movq %rcx, %rsi /* For ever source page do a copy */
113 andq $0xfffffffffffff000, %rsi 241 andq $0xfffffffffffff000, %rsi
114 242
243 movq %rdi, %rdx
244 movq %rsi, %rax
245
246 movq %r10, %rdi
115 movq $512, %rcx 247 movq $512, %rcx
116 rep ; movsq 248 rep ; movsq
117 jmp 0b
1183:
119
120 /* To be certain of avoiding problems with self-modifying code
121 * I need to execute a serializing instruction here.
122 * So I flush the TLB by reloading %cr3 here, it's handy,
123 * and not processor dependent.
124 */
125 movq %cr3, %rax
126 movq %rax, %cr3
127 249
128 /* set all of the registers to known values */ 250 movq %rax, %rdi
129 /* leave %rsp alone */ 251 movq %rdx, %rsi
252 movq $512, %rcx
253 rep ; movsq
130 254
131 xorq %rax, %rax 255 movq %rdx, %rdi
132 xorq %rbx, %rbx 256 movq %r10, %rsi
133 xorq %rcx, %rcx 257 movq $512, %rcx
134 xorq %rdx, %rdx 258 rep ; movsq
135 xorq %rsi, %rsi
136 xorq %rdi, %rdi
137 xorq %rbp, %rbp
138 xorq %r8, %r8
139 xorq %r9, %r9
140 xorq %r10, %r9
141 xorq %r11, %r11
142 xorq %r12, %r12
143 xorq %r13, %r13
144 xorq %r14, %r14
145 xorq %r15, %r15
146 259
260 lea PAGE_SIZE(%rax), %rsi
261 jmp 0b
2623:
147 ret 263 ret
264
265 .globl kexec_control_code_size
266.set kexec_control_code_size, . - relocate_kernel
diff --git a/arch/x86/kernel/visws_quirks.c b/arch/x86/kernel/visws_quirks.c
index 191a876e9e87..31ffc24eec4d 100644
--- a/arch/x86/kernel/visws_quirks.c
+++ b/arch/x86/kernel/visws_quirks.c
@@ -578,7 +578,7 @@ static struct irq_chip piix4_virtual_irq_type = {
578static irqreturn_t piix4_master_intr(int irq, void *dev_id) 578static irqreturn_t piix4_master_intr(int irq, void *dev_id)
579{ 579{
580 int realirq; 580 int realirq;
581 irq_desc_t *desc; 581 struct irq_desc *desc;
582 unsigned long flags; 582 unsigned long flags;
583 583
584 spin_lock_irqsave(&i8259A_lock, flags); 584 spin_lock_irqsave(&i8259A_lock, flags);
diff --git a/arch/x86/kernel/vmlinux_64.lds.S b/arch/x86/kernel/vmlinux_64.lds.S
index fbfced6f6800..5bf54e40c6ef 100644
--- a/arch/x86/kernel/vmlinux_64.lds.S
+++ b/arch/x86/kernel/vmlinux_64.lds.S
@@ -275,3 +275,10 @@ ASSERT((_end - _text <= KERNEL_IMAGE_SIZE),
275ASSERT((per_cpu__irq_stack_union == 0), 275ASSERT((per_cpu__irq_stack_union == 0),
276 "irq_stack_union is not at start of per-cpu area"); 276 "irq_stack_union is not at start of per-cpu area");
277#endif 277#endif
278
279#ifdef CONFIG_KEXEC
280#include <asm/kexec.h>
281
282ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE,
283 "kexec control code size is too big")
284#endif
diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
index c22981fa2f3a..ad5441ed1b57 100644
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -1,30 +1,38 @@
1/* Copyright 2002 Andi Kleen */ 1/* Copyright 2002 Andi Kleen */
2 2
3#include <linux/linkage.h> 3#include <linux/linkage.h>
4#include <asm/dwarf2.h> 4
5#include <asm/cpufeature.h> 5#include <asm/cpufeature.h>
6#include <asm/dwarf2.h>
6 7
7/* 8/*
8 * memcpy - Copy a memory block. 9 * memcpy - Copy a memory block.
9 * 10 *
10 * Input: 11 * Input:
11 * rdi destination 12 * rdi destination
12 * rsi source 13 * rsi source
13 * rdx count 14 * rdx count
14 * 15 *
15 * Output: 16 * Output:
16 * rax original destination 17 * rax original destination
17 */ 18 */
18 19
20/*
21 * memcpy_c() - fast string ops (REP MOVSQ) based variant.
22 *
23 * Calls to this get patched into the kernel image via the
24 * alternative instructions framework:
25 */
19 ALIGN 26 ALIGN
20memcpy_c: 27memcpy_c:
21 CFI_STARTPROC 28 CFI_STARTPROC
22 movq %rdi,%rax 29 movq %rdi, %rax
23 movl %edx,%ecx 30
24 shrl $3,%ecx 31 movl %edx, %ecx
25 andl $7,%edx 32 shrl $3, %ecx
33 andl $7, %edx
26 rep movsq 34 rep movsq
27 movl %edx,%ecx 35 movl %edx, %ecx
28 rep movsb 36 rep movsb
29 ret 37 ret
30 CFI_ENDPROC 38 CFI_ENDPROC
@@ -33,99 +41,110 @@ ENDPROC(memcpy_c)
33ENTRY(__memcpy) 41ENTRY(__memcpy)
34ENTRY(memcpy) 42ENTRY(memcpy)
35 CFI_STARTPROC 43 CFI_STARTPROC
36 pushq %rbx
37 CFI_ADJUST_CFA_OFFSET 8
38 CFI_REL_OFFSET rbx, 0
39 movq %rdi,%rax
40 44
41 movl %edx,%ecx 45 /*
42 shrl $6,%ecx 46 * Put the number of full 64-byte blocks into %ecx.
47 * Tail portion is handled at the end:
48 */
49 movq %rdi, %rax
50 movl %edx, %ecx
51 shrl $6, %ecx
43 jz .Lhandle_tail 52 jz .Lhandle_tail
44 53
45 .p2align 4 54 .p2align 4
46.Lloop_64: 55.Lloop_64:
56 /*
57 * We decrement the loop index here - and the zero-flag is
58 * checked at the end of the loop (instructions inbetween do
59 * not change the zero flag):
60 */
47 decl %ecx 61 decl %ecx
48 62
49 movq (%rsi),%r11 63 /*
50 movq 8(%rsi),%r8 64 * Move in blocks of 4x16 bytes:
65 */
66 movq 0*8(%rsi), %r11
67 movq 1*8(%rsi), %r8
68 movq %r11, 0*8(%rdi)
69 movq %r8, 1*8(%rdi)
51 70
52 movq %r11,(%rdi) 71 movq 2*8(%rsi), %r9
53 movq %r8,1*8(%rdi) 72 movq 3*8(%rsi), %r10
73 movq %r9, 2*8(%rdi)
74 movq %r10, 3*8(%rdi)
54 75
55 movq 2*8(%rsi),%r9 76 movq 4*8(%rsi), %r11
56 movq 3*8(%rsi),%r10 77 movq 5*8(%rsi), %r8
78 movq %r11, 4*8(%rdi)
79 movq %r8, 5*8(%rdi)
57 80
58 movq %r9,2*8(%rdi) 81 movq 6*8(%rsi), %r9
59 movq %r10,3*8(%rdi) 82 movq 7*8(%rsi), %r10
83 movq %r9, 6*8(%rdi)
84 movq %r10, 7*8(%rdi)
60 85
61 movq 4*8(%rsi),%r11 86 leaq 64(%rsi), %rsi
62 movq 5*8(%rsi),%r8 87 leaq 64(%rdi), %rdi
63 88
64 movq %r11,4*8(%rdi)
65 movq %r8,5*8(%rdi)
66
67 movq 6*8(%rsi),%r9
68 movq 7*8(%rsi),%r10
69
70 movq %r9,6*8(%rdi)
71 movq %r10,7*8(%rdi)
72
73 leaq 64(%rsi),%rsi
74 leaq 64(%rdi),%rdi
75 jnz .Lloop_64 89 jnz .Lloop_64
76 90
77.Lhandle_tail: 91.Lhandle_tail:
78 movl %edx,%ecx 92 movl %edx, %ecx
79 andl $63,%ecx 93 andl $63, %ecx
80 shrl $3,%ecx 94 shrl $3, %ecx
81 jz .Lhandle_7 95 jz .Lhandle_7
96
82 .p2align 4 97 .p2align 4
83.Lloop_8: 98.Lloop_8:
84 decl %ecx 99 decl %ecx
85 movq (%rsi),%r8 100 movq (%rsi), %r8
86 movq %r8,(%rdi) 101 movq %r8, (%rdi)
87 leaq 8(%rdi),%rdi 102 leaq 8(%rdi), %rdi
88 leaq 8(%rsi),%rsi 103 leaq 8(%rsi), %rsi
89 jnz .Lloop_8 104 jnz .Lloop_8
90 105
91.Lhandle_7: 106.Lhandle_7:
92 movl %edx,%ecx 107 movl %edx, %ecx
93 andl $7,%ecx 108 andl $7, %ecx
94 jz .Lende 109 jz .Lend
110
95 .p2align 4 111 .p2align 4
96.Lloop_1: 112.Lloop_1:
97 movb (%rsi),%r8b 113 movb (%rsi), %r8b
98 movb %r8b,(%rdi) 114 movb %r8b, (%rdi)
99 incq %rdi 115 incq %rdi
100 incq %rsi 116 incq %rsi
101 decl %ecx 117 decl %ecx
102 jnz .Lloop_1 118 jnz .Lloop_1
103 119
104.Lende: 120.Lend:
105 popq %rbx
106 CFI_ADJUST_CFA_OFFSET -8
107 CFI_RESTORE rbx
108 ret 121 ret
109.Lfinal:
110 CFI_ENDPROC 122 CFI_ENDPROC
111ENDPROC(memcpy) 123ENDPROC(memcpy)
112ENDPROC(__memcpy) 124ENDPROC(__memcpy)
113 125
114 /* Some CPUs run faster using the string copy instructions. 126 /*
115 It is also a lot simpler. Use this when possible */ 127 * Some CPUs run faster using the string copy instructions.
128 * It is also a lot simpler. Use this when possible:
129 */
116 130
117 .section .altinstr_replacement,"ax" 131 .section .altinstr_replacement, "ax"
1181: .byte 0xeb /* jmp <disp8> */ 1321: .byte 0xeb /* jmp <disp8> */
119 .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */ 133 .byte (memcpy_c - memcpy) - (2f - 1b) /* offset */
1202: 1342:
121 .previous 135 .previous
122 .section .altinstructions,"a" 136
137 .section .altinstructions, "a"
123 .align 8 138 .align 8
124 .quad memcpy 139 .quad memcpy
125 .quad 1b 140 .quad 1b
126 .byte X86_FEATURE_REP_GOOD 141 .byte X86_FEATURE_REP_GOOD
127 /* Replace only beginning, memcpy is used to apply alternatives, so it 142
128 * is silly to overwrite itself with nops - reboot is only outcome... */ 143 /*
144 * Replace only beginning, memcpy is used to apply alternatives,
145 * so it is silly to overwrite itself with nops - reboot is the
146 * only outcome...
147 */
129 .byte 2b - 1b 148 .byte 2b - 1b
130 .byte 2b - 1b 149 .byte 2b - 1b
131 .previous 150 .previous
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
index d11745334a67..f256e73542d7 100644
--- a/arch/x86/mm/highmem_32.c
+++ b/arch/x86/mm/highmem_32.c
@@ -121,23 +121,30 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
121 pagefault_enable(); 121 pagefault_enable();
122} 122}
123 123
124/* This is the same as kmap_atomic() but can map memory that doesn't 124void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
125 * have a struct page associated with it.
126 */
127void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
128{ 125{
129 enum fixed_addresses idx; 126 enum fixed_addresses idx;
130 unsigned long vaddr; 127 unsigned long vaddr;
131 128
132 pagefault_disable(); 129 pagefault_disable();
133 130
134 idx = type + KM_TYPE_NR*smp_processor_id(); 131 debug_kmap_atomic_prot(type);
132
133 idx = type + KM_TYPE_NR * smp_processor_id();
135 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); 134 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
136 set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot)); 135 set_pte(kmap_pte - idx, pfn_pte(pfn, prot));
137 arch_flush_lazy_mmu_mode(); 136 arch_flush_lazy_mmu_mode();
138 137
139 return (void*) vaddr; 138 return (void*) vaddr;
140} 139}
140
141/* This is the same as kmap_atomic() but can map memory that doesn't
142 * have a struct page associated with it.
143 */
144void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
145{
146 return kmap_atomic_prot_pfn(pfn, type, kmap_prot);
147}
141EXPORT_SYMBOL_GPL(kmap_atomic_pfn); /* temporarily in use by i915 GEM until vmap */ 148EXPORT_SYMBOL_GPL(kmap_atomic_pfn); /* temporarily in use by i915 GEM until vmap */
142 149
143struct page *kmap_atomic_to_page(void *ptr) 150struct page *kmap_atomic_to_page(void *ptr)
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c
index 04102d42ff42..592984e5496b 100644
--- a/arch/x86/mm/iomap_32.c
+++ b/arch/x86/mm/iomap_32.c
@@ -18,6 +18,7 @@
18 18
19#include <asm/iomap.h> 19#include <asm/iomap.h>
20#include <asm/pat.h> 20#include <asm/pat.h>
21#include <asm/highmem.h>
21#include <linux/module.h> 22#include <linux/module.h>
22 23
23int is_io_mapping_possible(resource_size_t base, unsigned long size) 24int is_io_mapping_possible(resource_size_t base, unsigned long size)
@@ -36,11 +37,6 @@ EXPORT_SYMBOL_GPL(is_io_mapping_possible);
36void * 37void *
37iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) 38iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
38{ 39{
39 enum fixed_addresses idx;
40 unsigned long vaddr;
41
42 pagefault_disable();
43
44 /* 40 /*
45 * For non-PAT systems, promote PAGE_KERNEL_WC to PAGE_KERNEL_UC_MINUS. 41 * For non-PAT systems, promote PAGE_KERNEL_WC to PAGE_KERNEL_UC_MINUS.
46 * PAGE_KERNEL_WC maps to PWT, which translates to uncached if the 42 * PAGE_KERNEL_WC maps to PWT, which translates to uncached if the
@@ -50,12 +46,7 @@ iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
50 if (!pat_enabled && pgprot_val(prot) == pgprot_val(PAGE_KERNEL_WC)) 46 if (!pat_enabled && pgprot_val(prot) == pgprot_val(PAGE_KERNEL_WC))
51 prot = PAGE_KERNEL_UC_MINUS; 47 prot = PAGE_KERNEL_UC_MINUS;
52 48
53 idx = type + KM_TYPE_NR*smp_processor_id(); 49 return kmap_atomic_prot_pfn(pfn, type, prot);
54 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
55 set_pte(kmap_pte-idx, pfn_pte(pfn, prot));
56 arch_flush_lazy_mmu_mode();
57
58 return (void*) vaddr;
59} 50}
60EXPORT_SYMBOL_GPL(iomap_atomic_prot_pfn); 51EXPORT_SYMBOL_GPL(iomap_atomic_prot_pfn);
61 52
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
index 6a518dd08a36..4f115e00486b 100644
--- a/arch/x86/mm/kmmio.c
+++ b/arch/x86/mm/kmmio.c
@@ -310,7 +310,7 @@ static int post_kmmio_handler(unsigned long condition, struct pt_regs *regs)
310 struct kmmio_context *ctx = &get_cpu_var(kmmio_ctx); 310 struct kmmio_context *ctx = &get_cpu_var(kmmio_ctx);
311 311
312 if (!ctx->active) { 312 if (!ctx->active) {
313 pr_warning("kmmio: spurious debug trap on CPU %d.\n", 313 pr_debug("kmmio: spurious debug trap on CPU %d.\n",
314 smp_processor_id()); 314 smp_processor_id());
315 goto out; 315 goto out;
316 } 316 }
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 54961c0b2c73..ef8b30d577bd 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1289,6 +1289,39 @@ static const int *__devinit piix_init_sata_map(struct pci_dev *pdev,
1289 return map; 1289 return map;
1290} 1290}
1291 1291
1292static bool piix_no_sidpr(struct ata_host *host)
1293{
1294 struct pci_dev *pdev = to_pci_dev(host->dev);
1295
1296 /*
1297 * Samsung DB-P70 only has three ATA ports exposed and
1298 * curiously the unconnected first port reports link online
1299 * while not responding to SRST protocol causing excessive
1300 * detection delay.
1301 *
1302 * Unfortunately, the system doesn't carry enough DMI
1303 * information to identify the machine but does have subsystem
1304 * vendor and device set. As it's unclear whether the
1305 * subsystem vendor/device is used only for this specific
1306 * board, the port can't be disabled solely with the
1307 * information; however, turning off SIDPR access works around
1308 * the problem. Turn it off.
1309 *
1310 * This problem is reported in bnc#441240.
1311 *
1312 * https://bugzilla.novell.com/show_bug.cgi?id=441420
1313 */
1314 if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x2920 &&
1315 pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG &&
1316 pdev->subsystem_device == 0xb049) {
1317 dev_printk(KERN_WARNING, host->dev,
1318 "Samsung DB-P70 detected, disabling SIDPR\n");
1319 return true;
1320 }
1321
1322 return false;
1323}
1324
1292static int __devinit piix_init_sidpr(struct ata_host *host) 1325static int __devinit piix_init_sidpr(struct ata_host *host)
1293{ 1326{
1294 struct pci_dev *pdev = to_pci_dev(host->dev); 1327 struct pci_dev *pdev = to_pci_dev(host->dev);
@@ -1302,6 +1335,10 @@ static int __devinit piix_init_sidpr(struct ata_host *host)
1302 if (hpriv->map[i] == IDE) 1335 if (hpriv->map[i] == IDE)
1303 return 0; 1336 return 0;
1304 1337
1338 /* is it blacklisted? */
1339 if (piix_no_sidpr(host))
1340 return 0;
1341
1305 if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR)) 1342 if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR))
1306 return 0; 1343 return 0;
1307 1344
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 714cb046b594..f93dc029dfde 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -2066,6 +2066,7 @@ static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask,
2066 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr); 2066 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
2067 udelay(20); /* FIXME: flush */ 2067 udelay(20); /* FIXME: flush */
2068 iowrite8(ap->ctl, ioaddr->ctl_addr); 2068 iowrite8(ap->ctl, ioaddr->ctl_addr);
2069 ap->last_ctl = ap->ctl;
2069 2070
2070 /* wait the port to become ready */ 2071 /* wait the port to become ready */
2071 return ata_sff_wait_after_reset(&ap->link, devmask, deadline); 2072 return ata_sff_wait_after_reset(&ap->link, devmask, deadline);
@@ -2190,8 +2191,10 @@ void ata_sff_postreset(struct ata_link *link, unsigned int *classes)
2190 } 2191 }
2191 2192
2192 /* set up device control */ 2193 /* set up device control */
2193 if (ap->ioaddr.ctl_addr) 2194 if (ap->ioaddr.ctl_addr) {
2194 iowrite8(ap->ctl, ap->ioaddr.ctl_addr); 2195 iowrite8(ap->ctl, ap->ioaddr.ctl_addr);
2196 ap->last_ctl = ap->ctl;
2197 }
2195} 2198}
2196EXPORT_SYMBOL_GPL(ata_sff_postreset); 2199EXPORT_SYMBOL_GPL(ata_sff_postreset);
2197 2200
@@ -2534,6 +2537,7 @@ void ata_bus_reset(struct ata_port *ap)
2534 if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) { 2537 if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
2535 /* set up device control for ATA_FLAG_SATA_RESET */ 2538 /* set up device control for ATA_FLAG_SATA_RESET */
2536 iowrite8(ap->ctl, ioaddr->ctl_addr); 2539 iowrite8(ap->ctl, ioaddr->ctl_addr);
2540 ap->last_ctl = ap->ctl;
2537 } 2541 }
2538 2542
2539 DPRINTK("EXIT\n"); 2543 DPRINTK("EXIT\n");
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 7007edd2d451..74b1080d116d 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -2218,12 +2218,13 @@ static irqreturn_t mv_interrupt(int irq, void *dev_instance)
2218 else 2218 else
2219 handled = mv_host_intr(host, pending_irqs); 2219 handled = mv_host_intr(host, pending_irqs);
2220 } 2220 }
2221 spin_unlock(&host->lock);
2222 2221
2223 /* for MSI: unmask; interrupt cause bits will retrigger now */ 2222 /* for MSI: unmask; interrupt cause bits will retrigger now */
2224 if (using_msi) 2223 if (using_msi)
2225 writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr); 2224 writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr);
2226 2225
2226 spin_unlock(&host->lock);
2227
2227 return IRQ_RETVAL(handled); 2228 return IRQ_RETVAL(handled);
2228} 2229}
2229 2230
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 381d686fc1a3..119be3442f28 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -489,6 +489,28 @@ static void ace_fsm_dostate(struct ace_device *ace)
489 ace->fsm_state, ace->id_req_count); 489 ace->fsm_state, ace->id_req_count);
490#endif 490#endif
491 491
492 /* Verify that there is actually a CF in the slot. If not, then
493 * bail out back to the idle state and wake up all the waiters */
494 status = ace_in32(ace, ACE_STATUS);
495 if ((status & ACE_STATUS_CFDETECT) == 0) {
496 ace->fsm_state = ACE_FSM_STATE_IDLE;
497 ace->media_change = 1;
498 set_capacity(ace->gd, 0);
499 dev_info(ace->dev, "No CF in slot\n");
500
501 /* Drop all pending requests */
502 while ((req = elv_next_request(ace->queue)) != NULL)
503 end_request(req, 0);
504
505 /* Drop back to IDLE state and notify waiters */
506 ace->fsm_state = ACE_FSM_STATE_IDLE;
507 ace->id_result = -EIO;
508 while (ace->id_req_count) {
509 complete(&ace->id_completion);
510 ace->id_req_count--;
511 }
512 }
513
492 switch (ace->fsm_state) { 514 switch (ace->fsm_state) {
493 case ACE_FSM_STATE_IDLE: 515 case ACE_FSM_STATE_IDLE:
494 /* See if there is anything to do */ 516 /* See if there is anything to do */
diff --git a/drivers/char/agp/parisc-agp.c b/drivers/char/agp/parisc-agp.c
index db60539bf67a..699e3422ad93 100644
--- a/drivers/char/agp/parisc-agp.c
+++ b/drivers/char/agp/parisc-agp.c
@@ -359,9 +359,16 @@ fail:
359 return error; 359 return error;
360} 360}
361 361
362static struct device *next_device(struct klist_iter *i) { 362static int
363 struct klist_node * n = klist_next(i); 363find_quicksilver(struct device *dev, void *data)
364 return n ? container_of(n, struct device, knode_parent) : NULL; 364{
365 struct parisc_device **lba = data;
366 struct parisc_device *padev = to_parisc_device(dev);
367
368 if (IS_QUICKSILVER(padev))
369 *lba = padev;
370
371 return 0;
365} 372}
366 373
367static int 374static int
@@ -372,8 +379,6 @@ parisc_agp_init(void)
372 int err = -1; 379 int err = -1;
373 struct parisc_device *sba = NULL, *lba = NULL; 380 struct parisc_device *sba = NULL, *lba = NULL;
374 struct lba_device *lbadev = NULL; 381 struct lba_device *lbadev = NULL;
375 struct device *dev = NULL;
376 struct klist_iter i;
377 382
378 if (!sba_list) 383 if (!sba_list)
379 goto out; 384 goto out;
@@ -386,13 +391,7 @@ parisc_agp_init(void)
386 } 391 }
387 392
388 /* Now search our Pluto for our precious AGP device... */ 393 /* Now search our Pluto for our precious AGP device... */
389 klist_iter_init(&sba->dev.klist_children, &i); 394 device_for_each_child(&sba->dev, &lba, find_quicksilver);
390 while ((dev = next_device(&i))) {
391 struct parisc_device *padev = to_parisc_device(dev);
392 if (IS_QUICKSILVER(padev))
393 lba = padev;
394 }
395 klist_iter_exit(&i);
396 395
397 if (!lba) { 396 if (!lba) {
398 printk(KERN_INFO DRVPFX "No AGP devices found.\n"); 397 printk(KERN_INFO DRVPFX "No AGP devices found.\n");
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index e96c01260598..e9d042dba0e0 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -140,6 +140,12 @@ static void ide_queue_pc_head(ide_drive_t *drive, struct gendisk *disk,
140 rq->cmd_flags |= REQ_PREEMPT; 140 rq->cmd_flags |= REQ_PREEMPT;
141 rq->buffer = (char *)pc; 141 rq->buffer = (char *)pc;
142 rq->rq_disk = disk; 142 rq->rq_disk = disk;
143
144 if (pc->req_xfer) {
145 rq->data = pc->buf;
146 rq->data_len = pc->req_xfer;
147 }
148
143 memcpy(rq->cmd, pc->c, 12); 149 memcpy(rq->cmd, pc->c, 12);
144 if (drive->media == ide_tape) 150 if (drive->media == ide_tape)
145 rq->cmd[13] = REQ_IDETAPE_PC1; 151 rq->cmd[13] = REQ_IDETAPE_PC1;
@@ -159,6 +165,12 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk,
159 rq = blk_get_request(drive->queue, READ, __GFP_WAIT); 165 rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
160 rq->cmd_type = REQ_TYPE_SPECIAL; 166 rq->cmd_type = REQ_TYPE_SPECIAL;
161 rq->buffer = (char *)pc; 167 rq->buffer = (char *)pc;
168
169 if (pc->req_xfer) {
170 rq->data = pc->buf;
171 rq->data_len = pc->req_xfer;
172 }
173
162 memcpy(rq->cmd, pc->c, 12); 174 memcpy(rq->cmd, pc->c, 12);
163 if (drive->media == ide_tape) 175 if (drive->media == ide_tape)
164 rq->cmd[13] = REQ_IDETAPE_PC1; 176 rq->cmd[13] = REQ_IDETAPE_PC1;
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 72ebab0bc755..059c90bb5ad2 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -128,6 +128,7 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq)
128{ 128{
129 ide_hwif_t *hwif = drive->hwif; 129 ide_hwif_t *hwif = drive->hwif;
130 struct scatterlist *sg = hwif->sg_table; 130 struct scatterlist *sg = hwif->sg_table;
131 int i;
131 132
132 ide_map_sg(drive, rq); 133 ide_map_sg(drive, rq);
133 134
@@ -136,8 +137,13 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq)
136 else 137 else
137 hwif->sg_dma_direction = DMA_TO_DEVICE; 138 hwif->sg_dma_direction = DMA_TO_DEVICE;
138 139
139 return dma_map_sg(hwif->dev, sg, hwif->sg_nents, 140 i = dma_map_sg(hwif->dev, sg, hwif->sg_nents, hwif->sg_dma_direction);
140 hwif->sg_dma_direction); 141 if (i) {
142 hwif->orig_sg_nents = hwif->sg_nents;
143 hwif->sg_nents = i;
144 }
145
146 return i;
141} 147}
142EXPORT_SYMBOL_GPL(ide_build_sglist); 148EXPORT_SYMBOL_GPL(ide_build_sglist);
143 149
@@ -156,7 +162,7 @@ void ide_destroy_dmatable(ide_drive_t *drive)
156{ 162{
157 ide_hwif_t *hwif = drive->hwif; 163 ide_hwif_t *hwif = drive->hwif;
158 164
159 dma_unmap_sg(hwif->dev, hwif->sg_table, hwif->sg_nents, 165 dma_unmap_sg(hwif->dev, hwif->sg_table, hwif->orig_sg_nents,
160 hwif->sg_dma_direction); 166 hwif->sg_dma_direction);
161} 167}
162EXPORT_SYMBOL_GPL(ide_destroy_dmatable); 168EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 3eab1c6c9b31..317ec62c33d4 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -327,8 +327,10 @@ static ide_startstop_t ide_floppy_do_request(ide_drive_t *drive,
327 return ide_stopped; 327 return ide_stopped;
328 } 328 }
329 329
330 ide_init_sg_cmd(drive, rq); 330 if (blk_fs_request(rq) || pc->req_xfer) {
331 ide_map_sg(drive, rq); 331 ide_init_sg_cmd(drive, rq);
332 ide_map_sg(drive, rq);
333 }
332 334
333 pc->sg = hwif->sg_table; 335 pc->sg = hwif->sg_table;
334 pc->sg_cnt = hwif->sg_nents; 336 pc->sg_cnt = hwif->sg_nents;
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index 29e8f1546ab6..fec1d77fa855 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -1683,7 +1683,7 @@ static int dst_tune_frontend(struct dvb_frontend* fe,
1683 1683
1684static int dst_get_tuning_algo(struct dvb_frontend *fe) 1684static int dst_get_tuning_algo(struct dvb_frontend *fe)
1685{ 1685{
1686 return dst_algo; 1686 return dst_algo ? DVBFE_ALGO_HW : DVBFE_ALGO_SW;
1687} 1687}
1688 1688
1689static int dst_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p) 1689static int dst_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 843407785083..8dcb3fbf7acd 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -1290,9 +1290,6 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
1290 dprintk("%s() Finalised property cache\n", __func__); 1290 dprintk("%s() Finalised property cache\n", __func__);
1291 dtv_property_cache_submit(fe); 1291 dtv_property_cache_submit(fe);
1292 1292
1293 /* Request the search algorithm to search */
1294 fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
1295
1296 r |= dvb_frontend_ioctl_legacy(inode, file, FE_SET_FRONTEND, 1293 r |= dvb_frontend_ioctl_legacy(inode, file, FE_SET_FRONTEND,
1297 &fepriv->parameters); 1294 &fepriv->parameters);
1298 break; 1295 break;
@@ -1717,6 +1714,10 @@ static int dvb_frontend_ioctl_legacy(struct inode *inode, struct file *file,
1717 fepriv->min_delay = (dvb_override_tune_delay * HZ) / 1000; 1714 fepriv->min_delay = (dvb_override_tune_delay * HZ) / 1000;
1718 1715
1719 fepriv->state = FESTATE_RETUNE; 1716 fepriv->state = FESTATE_RETUNE;
1717
1718 /* Request the search algorithm to search */
1719 fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
1720
1720 dvb_frontend_wakeup(fe); 1721 dvb_frontend_wakeup(fe);
1721 dvb_frontend_add_event(fe, 0); 1722 dvb_frontend_add_event(fe, 0);
1722 fepriv->status = 0; 1723 fepriv->status = 0;
diff --git a/drivers/media/dvb/frontends/stb0899_algo.c b/drivers/media/dvb/frontends/stb0899_algo.c
index a67d1775a43c..2da55ec20392 100644
--- a/drivers/media/dvb/frontends/stb0899_algo.c
+++ b/drivers/media/dvb/frontends/stb0899_algo.c
@@ -156,7 +156,7 @@ static void stb0899_first_subrange(struct stb0899_state *state)
156 } 156 }
157 157
158 if (range > 0) 158 if (range > 0)
159 internal->sub_range = MIN(internal->srch_range, range); 159 internal->sub_range = min(internal->srch_range, range);
160 else 160 else
161 internal->sub_range = 0; 161 internal->sub_range = 0;
162 162
@@ -185,7 +185,7 @@ static enum stb0899_status stb0899_check_tmg(struct stb0899_state *state)
185 timing = stb0899_read_reg(state, STB0899_RTF); 185 timing = stb0899_read_reg(state, STB0899_RTF);
186 186
187 if (lock >= 42) { 187 if (lock >= 42) {
188 if ((lock > 48) && (ABS(timing) >= 110)) { 188 if ((lock > 48) && (abs(timing) >= 110)) {
189 internal->status = ANALOGCARRIER; 189 internal->status = ANALOGCARRIER;
190 dprintk(state->verbose, FE_DEBUG, 1, "-->ANALOG Carrier !"); 190 dprintk(state->verbose, FE_DEBUG, 1, "-->ANALOG Carrier !");
191 } else { 191 } else {
@@ -222,7 +222,7 @@ static enum stb0899_status stb0899_search_tmg(struct stb0899_state *state)
222 index++; 222 index++;
223 derot_freq += index * internal->direction * derot_step; /* next derot zig zag position */ 223 derot_freq += index * internal->direction * derot_step; /* next derot zig zag position */
224 224
225 if (ABS(derot_freq) > derot_limit) 225 if (abs(derot_freq) > derot_limit)
226 next_loop--; 226 next_loop--;
227 227
228 if (next_loop) { 228 if (next_loop) {
@@ -298,7 +298,7 @@ static enum stb0899_status stb0899_search_carrier(struct stb0899_state *state)
298 last_derot_freq = derot_freq; 298 last_derot_freq = derot_freq;
299 derot_freq += index * internal->direction * internal->derot_step; /* next zig zag derotator position */ 299 derot_freq += index * internal->direction * internal->derot_step; /* next zig zag derotator position */
300 300
301 if(ABS(derot_freq) > derot_limit) 301 if(abs(derot_freq) > derot_limit)
302 next_loop--; 302 next_loop--;
303 303
304 if (next_loop) { 304 if (next_loop) {
@@ -400,7 +400,7 @@ static enum stb0899_status stb0899_search_data(struct stb0899_state *state)
400 if ((internal->status != CARRIEROK) || (stb0899_check_data(state) != DATAOK)) { 400 if ((internal->status != CARRIEROK) || (stb0899_check_data(state) != DATAOK)) {
401 401
402 derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */ 402 derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
403 if (ABS(derot_freq) > derot_limit) 403 if (abs(derot_freq) > derot_limit)
404 next_loop--; 404 next_loop--;
405 405
406 if (next_loop) { 406 if (next_loop) {
@@ -467,7 +467,7 @@ static void next_sub_range(struct stb0899_state *state)
467 467
468 if (internal->sub_dir > 0) { 468 if (internal->sub_dir > 0) {
469 old_sub_range = internal->sub_range; 469 old_sub_range = internal->sub_range;
470 internal->sub_range = MIN((internal->srch_range / 2) - 470 internal->sub_range = min((internal->srch_range / 2) -
471 (internal->tuner_offst + internal->sub_range / 2), 471 (internal->tuner_offst + internal->sub_range / 2),
472 internal->sub_range); 472 internal->sub_range);
473 473
@@ -771,7 +771,7 @@ static long Log2Int(int number)
771 int i; 771 int i;
772 772
773 i = 0; 773 i = 0;
774 while ((1 << i) <= ABS(number)) 774 while ((1 << i) <= abs(number))
775 i++; 775 i++;
776 776
777 if (number == 0) 777 if (number == 0)
diff --git a/drivers/media/dvb/frontends/stb0899_drv.c b/drivers/media/dvb/frontends/stb0899_drv.c
index 10613acf18f5..a04c782fff8d 100644
--- a/drivers/media/dvb/frontends/stb0899_drv.c
+++ b/drivers/media/dvb/frontends/stb0899_drv.c
@@ -794,7 +794,7 @@ static int stb0899_send_diseqc_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t
794 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); 794 reg = stb0899_read_reg(state, STB0899_DISCNTRL1);
795 old_state = reg; 795 old_state = reg;
796 /* set to burst mode */ 796 /* set to burst mode */
797 STB0899_SETFIELD_VAL(DISEQCMODE, reg, 0x02); 797 STB0899_SETFIELD_VAL(DISEQCMODE, reg, 0x03);
798 STB0899_SETFIELD_VAL(DISPRECHARGE, reg, 0x01); 798 STB0899_SETFIELD_VAL(DISPRECHARGE, reg, 0x01);
799 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); 799 stb0899_write_reg(state, STB0899_DISCNTRL1, reg);
800 switch (burst) { 800 switch (burst) {
diff --git a/drivers/media/dvb/frontends/stb0899_priv.h b/drivers/media/dvb/frontends/stb0899_priv.h
index 24619e3689db..82395b912815 100644
--- a/drivers/media/dvb/frontends/stb0899_priv.h
+++ b/drivers/media/dvb/frontends/stb0899_priv.h
@@ -59,10 +59,6 @@
59#define MAKEWORD32(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) 59#define MAKEWORD32(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
60#define MAKEWORD16(a, b) (((a) << 8) | (b)) 60#define MAKEWORD16(a, b) (((a) << 8) | (b))
61 61
62#define MIN(x, y) ((x) <= (y) ? (x) : (y))
63#define MAX(x, y) ((x) >= (y) ? (x) : (y))
64#define ABS(x) ((x) >= 0 ? (x) : -(x))
65
66#define LSB(x) ((x & 0xff)) 62#define LSB(x) ((x & 0xff))
67#define MSB(y) ((y >> 8) & 0xff) 63#define MSB(y) ((y >> 8) & 0xff)
68 64
@@ -168,10 +164,10 @@ struct stb0899_internal {
168 u32 freq; /* Demod internal Frequency */ 164 u32 freq; /* Demod internal Frequency */
169 u32 srate; /* Demod internal Symbol rate */ 165 u32 srate; /* Demod internal Symbol rate */
170 enum stb0899_fec fecrate; /* Demod internal FEC rate */ 166 enum stb0899_fec fecrate; /* Demod internal FEC rate */
171 u32 srch_range; /* Demod internal Search Range */ 167 s32 srch_range; /* Demod internal Search Range */
172 u32 sub_range; /* Demod current sub range (Hz) */ 168 s32 sub_range; /* Demod current sub range (Hz) */
173 u32 tuner_step; /* Tuner step (Hz) */ 169 s32 tuner_step; /* Tuner step (Hz) */
174 u32 tuner_offst; /* Relative offset to carrier (Hz) */ 170 s32 tuner_offst; /* Relative offset to carrier (Hz) */
175 u32 tuner_bw; /* Current bandwidth of the tuner (Hz) */ 171 u32 tuner_bw; /* Current bandwidth of the tuner (Hz) */
176 172
177 s32 mclk; /* Masterclock Divider factor (binary) */ 173 s32 mclk; /* Masterclock Divider factor (binary) */
diff --git a/drivers/media/dvb/frontends/stb6100.c b/drivers/media/dvb/frontends/stb6100.c
index ff39275ab49c..1ed5a7db4c5e 100644
--- a/drivers/media/dvb/frontends/stb6100.c
+++ b/drivers/media/dvb/frontends/stb6100.c
@@ -427,11 +427,11 @@ static int stb6100_init(struct dvb_frontend *fe)
427 status->refclock = 27000000; /* Hz */ 427 status->refclock = 27000000; /* Hz */
428 status->iqsense = 1; 428 status->iqsense = 1;
429 status->bandwidth = 36000; /* kHz */ 429 status->bandwidth = 36000; /* kHz */
430 state->bandwidth = status->bandwidth * 1000; /* MHz */ 430 state->bandwidth = status->bandwidth * 1000; /* Hz */
431 state->reference = status->refclock / 1000; /* kHz */ 431 state->reference = status->refclock / 1000; /* kHz */
432 432
433 /* Set default bandwidth. */ 433 /* Set default bandwidth. */
434 return stb6100_set_bandwidth(fe, status->bandwidth); 434 return stb6100_set_bandwidth(fe, state->bandwidth);
435} 435}
436 436
437static int stb6100_get_state(struct dvb_frontend *fe, 437static int stb6100_get_state(struct dvb_frontend *fe,
diff --git a/drivers/media/dvb/frontends/zl10353.c b/drivers/media/dvb/frontends/zl10353.c
index 170720b02815..b150ed306696 100644
--- a/drivers/media/dvb/frontends/zl10353.c
+++ b/drivers/media/dvb/frontends/zl10353.c
@@ -590,7 +590,7 @@ static int zl10353_i2c_gate_ctrl(struct dvb_frontend* fe, int enable)
590 struct zl10353_state *state = fe->demodulator_priv; 590 struct zl10353_state *state = fe->demodulator_priv;
591 u8 val = 0x0a; 591 u8 val = 0x0a;
592 592
593 if (state->config.no_tuner) { 593 if (state->config.disable_i2c_gate_ctrl) {
594 /* No tuner attached to the internal I2C bus */ 594 /* No tuner attached to the internal I2C bus */
595 /* If set enable I2C bridge, the main I2C bus stopped hardly */ 595 /* If set enable I2C bridge, the main I2C bus stopped hardly */
596 return 0; 596 return 0;
diff --git a/drivers/media/dvb/frontends/zl10353.h b/drivers/media/dvb/frontends/zl10353.h
index fdbb88ff75fe..2287bac46243 100644
--- a/drivers/media/dvb/frontends/zl10353.h
+++ b/drivers/media/dvb/frontends/zl10353.h
@@ -38,6 +38,9 @@ struct zl10353_config
38 38
39 /* set if parallel ts output is required */ 39 /* set if parallel ts output is required */
40 int parallel_ts; 40 int parallel_ts;
41
42 /* set if i2c_gate_ctrl disable is required */
43 u8 disable_i2c_gate_ctrl:1;
41}; 44};
42 45
43#if defined(CONFIG_DVB_ZL10353) || (defined(CONFIG_DVB_ZL10353_MODULE) && defined(MODULE)) 46#if defined(CONFIG_DVB_ZL10353) || (defined(CONFIG_DVB_ZL10353_MODULE) && defined(MODULE))
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
index e564a61a72d7..48892b5715d5 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
+++ b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
@@ -102,7 +102,11 @@ int s5k4aa_probe(struct sd *sd)
102 } 102 }
103 103
104 /* Test some registers, but we don't know their exact meaning yet */ 104 /* Test some registers, but we don't know their exact meaning yet */
105 if (m5602_read_sensor(sd, 0x00, prod_id, sizeof(prod_id))) 105 if (m5602_read_sensor(sd, 0x00, prod_id, 2))
106 return -ENODEV;
107 if (m5602_read_sensor(sd, 0x02, prod_id+2, 2))
108 return -ENODEV;
109 if (m5602_read_sensor(sd, 0x04, prod_id+4, 2))
106 return -ENODEV; 110 return -ENODEV;
107 111
108 if (memcmp(prod_id, expected_prod_id, sizeof(prod_id))) 112 if (memcmp(prod_id, expected_prod_id, sizeof(prod_id)))
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c
index 0776ecf56d27..b5370b3e1a3d 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -860,6 +860,7 @@ static struct zl10353_config behold_h6_config = {
860 .demod_address = 0x1e>>1, 860 .demod_address = 0x1e>>1,
861 .no_tuner = 1, 861 .no_tuner = 1,
862 .parallel_ts = 1, 862 .parallel_ts = 1,
863 .disable_i2c_gate_ctrl = 1,
863}; 864};
864 865
865/* ================================================================== 866/* ==================================================================
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index 5aeccb301cea..076ed5bf48b1 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -54,7 +54,7 @@ MODULE_LICENSE("GPL");
54/* ---------------------------------------------------------------------- */ 54/* ---------------------------------------------------------------------- */
55/* our structs */ 55/* our structs */
56 56
57#define MAXREGS 64 57#define MAXREGS 256
58 58
59struct CHIPSTATE; 59struct CHIPSTATE;
60typedef int (*getvalue)(int); 60typedef int (*getvalue)(int);
diff --git a/drivers/media/video/zoran/Kconfig b/drivers/media/video/zoran/Kconfig
index 4ea5fa71de89..8666e19f31a7 100644
--- a/drivers/media/video/zoran/Kconfig
+++ b/drivers/media/video/zoran/Kconfig
@@ -68,6 +68,7 @@ config VIDEO_ZORAN_AVS6EYES
68 tristate "AverMedia 6 Eyes support (EXPERIMENTAL)" 68 tristate "AverMedia 6 Eyes support (EXPERIMENTAL)"
69 depends on VIDEO_ZORAN_ZR36060 && EXPERIMENTAL && VIDEO_V4L1 69 depends on VIDEO_ZORAN_ZR36060 && EXPERIMENTAL && VIDEO_V4L1
70 select VIDEO_BT856 if VIDEO_HELPER_CHIPS_AUTO 70 select VIDEO_BT856 if VIDEO_HELPER_CHIPS_AUTO
71 select VIDEO_BT866 if VIDEO_HELPER_CHIPS_AUTO
71 select VIDEO_KS0127 if VIDEO_HELPER_CHIPS_AUTO 72 select VIDEO_KS0127 if VIDEO_HELPER_CHIPS_AUTO
72 help 73 help
73 Support for the AverMedia 6 Eyes video surveillance card. 74 Support for the AverMedia 6 Eyes video surveillance card.
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index d539d9df88e7..bb5a1c9597cb 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -479,7 +479,7 @@ dino_card_setup(struct pci_bus *bus, void __iomem *base_addr)
479 res = &dino_dev->hba.lmmio_space; 479 res = &dino_dev->hba.lmmio_space;
480 res->flags = IORESOURCE_MEM; 480 res->flags = IORESOURCE_MEM;
481 size = scnprintf(name, sizeof(name), "Dino LMMIO (%s)", 481 size = scnprintf(name, sizeof(name), "Dino LMMIO (%s)",
482 bus->bridge->bus_id); 482 dev_name(bus->bridge));
483 res->name = kmalloc(size+1, GFP_KERNEL); 483 res->name = kmalloc(size+1, GFP_KERNEL);
484 if(res->name) 484 if(res->name)
485 strcpy((char *)res->name, name); 485 strcpy((char *)res->name, name);
@@ -493,7 +493,7 @@ dino_card_setup(struct pci_bus *bus, void __iomem *base_addr)
493 struct list_head *ln, *tmp_ln; 493 struct list_head *ln, *tmp_ln;
494 494
495 printk(KERN_ERR "Dino: cannot attach bus %s\n", 495 printk(KERN_ERR "Dino: cannot attach bus %s\n",
496 bus->bridge->bus_id); 496 dev_name(bus->bridge));
497 /* kill the bus, we can't do anything with it */ 497 /* kill the bus, we can't do anything with it */
498 list_for_each_safe(ln, tmp_ln, &bus->devices) { 498 list_for_each_safe(ln, tmp_ln, &bus->devices) {
499 struct pci_dev *dev = pci_dev_b(ln); 499 struct pci_dev *dev = pci_dev_b(ln);
@@ -587,7 +587,7 @@ dino_fixup_bus(struct pci_bus *bus)
587 bus->resource[i+1] = &res[i]; 587 bus->resource[i+1] = &res[i];
588 } 588 }
589 589
590 } else if(bus->self) { 590 } else if (bus->parent) {
591 int i; 591 int i;
592 592
593 pci_read_bridge_bases(bus); 593 pci_read_bridge_bases(bus);
@@ -611,12 +611,12 @@ dino_fixup_bus(struct pci_bus *bus)
611 } 611 }
612 612
613 DBG("DEBUG %s assigning %d [0x%lx,0x%lx]\n", 613 DBG("DEBUG %s assigning %d [0x%lx,0x%lx]\n",
614 bus->self->dev.bus_id, i, 614 dev_name(&bus->self->dev), i,
615 bus->self->resource[i].start, 615 bus->self->resource[i].start,
616 bus->self->resource[i].end); 616 bus->self->resource[i].end);
617 pci_assign_resource(bus->self, i); 617 pci_assign_resource(bus->self, i);
618 DBG("DEBUG %s after assign %d [0x%lx,0x%lx]\n", 618 DBG("DEBUG %s after assign %d [0x%lx,0x%lx]\n",
619 bus->self->dev.bus_id, i, 619 dev_name(&bus->self->dev), i,
620 bus->self->resource[i].start, 620 bus->self->resource[i].start,
621 bus->self->resource[i].end); 621 bus->self->resource[i].end);
622 } 622 }
@@ -1026,7 +1026,8 @@ static int __init dino_probe(struct parisc_device *dev)
1026 dino_current_bus = bus->subordinate + 1; 1026 dino_current_bus = bus->subordinate + 1;
1027 pci_bus_assign_resources(bus); 1027 pci_bus_assign_resources(bus);
1028 } else { 1028 } else {
1029 printk(KERN_ERR "ERROR: failed to scan PCI bus on %s (probably duplicate bus number %d)\n", dev->dev.bus_id, dino_current_bus); 1029 printk(KERN_ERR "ERROR: failed to scan PCI bus on %s (probably duplicate bus number %d)\n",
1030 dev_name(&dev->dev), dino_current_bus);
1030 /* increment the bus number in case of duplicates */ 1031 /* increment the bus number in case of duplicates */
1031 dino_current_bus++; 1032 dino_current_bus++;
1032 } 1033 }
diff --git a/drivers/parisc/gsc.c b/drivers/parisc/gsc.c
index e76db9e4d504..d33632917696 100644
--- a/drivers/parisc/gsc.c
+++ b/drivers/parisc/gsc.c
@@ -186,29 +186,34 @@ void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp)
186 *irqp = irq; 186 *irqp = irq;
187} 187}
188 188
189static struct device *next_device(struct klist_iter *i) 189struct gsc_fixup_struct {
190 void (*choose_irq)(struct parisc_device *, void *);
191 void *ctrl;
192};
193
194static int gsc_fixup_irqs_callback(struct device *dev, void *data)
190{ 195{
191 struct klist_node * n = klist_next(i); 196 struct parisc_device *padev = to_parisc_device(dev);
192 return n ? container_of(n, struct device, knode_parent) : NULL; 197 struct gsc_fixup_struct *gf = data;
198
199 /* work-around for 715/64 and others which have parent
200 at path [5] and children at path [5/0/x] */
201 if (padev->id.hw_type == HPHW_FAULTY)
202 gsc_fixup_irqs(padev, gf->ctrl, gf->choose_irq);
203 gf->choose_irq(padev, gf->ctrl);
204
205 return 0;
193} 206}
194 207
195void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, 208void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
196 void (*choose_irq)(struct parisc_device *, void *)) 209 void (*choose_irq)(struct parisc_device *, void *))
197{ 210{
198 struct device *dev; 211 struct gsc_fixup_struct data = {
199 struct klist_iter i; 212 .choose_irq = choose_irq,
200 213 .ctrl = ctrl,
201 klist_iter_init(&parent->dev.klist_children, &i); 214 };
202 while ((dev = next_device(&i))) { 215
203 struct parisc_device *padev = to_parisc_device(dev); 216 device_for_each_child(&parent->dev, &data, gsc_fixup_irqs_callback);
204
205 /* work-around for 715/64 and others which have parent
206 at path [5] and children at path [5/0/x] */
207 if (padev->id.hw_type == HPHW_FAULTY)
208 return gsc_fixup_irqs(padev, ctrl, choose_irq);
209 choose_irq(padev, ctrl);
210 }
211 klist_iter_exit(&i);
212} 217}
213 218
214int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic) 219int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic)
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
index 0797659ee016..501aaf1f253f 100644
--- a/drivers/parisc/iosapic.c
+++ b/drivers/parisc/iosapic.c
@@ -487,7 +487,7 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev)
487 } 487 }
488 488
489 /* Check if pcidev behind a PPB */ 489 /* Check if pcidev behind a PPB */
490 if (NULL != pcidev->bus->self) { 490 if (pcidev->bus->parent) {
491 /* Convert pcidev INTR_PIN into something we 491 /* Convert pcidev INTR_PIN into something we
492 ** can lookup in the IRT. 492 ** can lookup in the IRT.
493 */ 493 */
@@ -523,10 +523,9 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev)
523#endif /* PCI_BRIDGE_FUNCS */ 523#endif /* PCI_BRIDGE_FUNCS */
524 524
525 /* 525 /*
526 ** Locate the host slot the PPB nearest the Host bus 526 * Locate the host slot of the PPB.
527 ** adapter. 527 */
528 */ 528 while (p->parent->parent)
529 while (NULL != p->parent->self)
530 p = p->parent; 529 p = p->parent;
531 530
532 intr_slot = PCI_SLOT(p->self->devfn); 531 intr_slot = PCI_SLOT(p->self->devfn);
@@ -709,11 +708,14 @@ static void iosapic_set_affinity_irq(unsigned int irq,
709 struct vector_info *vi = iosapic_get_vector(irq); 708 struct vector_info *vi = iosapic_get_vector(irq);
710 u32 d0, d1, dummy_d0; 709 u32 d0, d1, dummy_d0;
711 unsigned long flags; 710 unsigned long flags;
711 int dest_cpu;
712 712
713 if (cpu_check_affinity(irq, dest)) 713 dest_cpu = cpu_check_affinity(irq, dest);
714 if (dest_cpu < 0)
714 return; 715 return;
715 716
716 vi->txn_addr = txn_affinity_addr(irq, cpumask_first(dest)); 717 irq_desc[irq].affinity = cpumask_of_cpu(dest_cpu);
718 vi->txn_addr = txn_affinity_addr(irq, dest_cpu);
717 719
718 spin_lock_irqsave(&iosapic_lock, flags); 720 spin_lock_irqsave(&iosapic_lock, flags);
719 /* d1 contains the destination CPU, so only want to set that 721 /* d1 contains the destination CPU, so only want to set that
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c
index d8233de8c75d..59fbbf128365 100644
--- a/drivers/parisc/lba_pci.c
+++ b/drivers/parisc/lba_pci.c
@@ -644,7 +644,7 @@ lba_fixup_bus(struct pci_bus *bus)
644 ** Properly Setup MMIO resources for this bus. 644 ** Properly Setup MMIO resources for this bus.
645 ** pci_alloc_primary_bus() mangles this. 645 ** pci_alloc_primary_bus() mangles this.
646 */ 646 */
647 if (bus->self) { 647 if (bus->parent) {
648 int i; 648 int i;
649 /* PCI-PCI Bridge */ 649 /* PCI-PCI Bridge */
650 pci_read_bridge_bases(bus); 650 pci_read_bridge_bases(bus);
@@ -802,7 +802,7 @@ lba_fixup_bus(struct pci_bus *bus)
802** Can't fixup here anyway....garr... 802** Can't fixup here anyway....garr...
803*/ 803*/
804 if (fbb_enable) { 804 if (fbb_enable) {
805 if (bus->self) { 805 if (bus->parent) {
806 u8 control; 806 u8 control;
807 /* enable on PPB */ 807 /* enable on PPB */
808 (void) pci_read_config_byte(bus->self, PCI_BRIDGE_CONTROL, &control); 808 (void) pci_read_config_byte(bus->self, PCI_BRIDGE_CONTROL, &control);
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index a70cf16ee1ad..e5999c4cedc8 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -1206,30 +1206,48 @@ sba_alloc_pdir(unsigned int pdir_size)
1206 return (void *) pdir_base; 1206 return (void *) pdir_base;
1207} 1207}
1208 1208
1209static struct device *next_device(struct klist_iter *i) 1209struct ibase_data_struct {
1210 struct ioc *ioc;
1211 int ioc_num;
1212};
1213
1214static int setup_ibase_imask_callback(struct device *dev, void *data)
1210{ 1215{
1211 struct klist_node * n = klist_next(i); 1216 /* lba_set_iregs() is in drivers/parisc/lba_pci.c */
1212 return n ? container_of(n, struct device, knode_parent) : NULL; 1217 extern void lba_set_iregs(struct parisc_device *, u32, u32);
1218 struct parisc_device *lba = to_parisc_device(dev);
1219 struct ibase_data_struct *ibd = data;
1220 int rope_num = (lba->hpa.start >> 13) & 0xf;
1221 if (rope_num >> 3 == ibd->ioc_num)
1222 lba_set_iregs(lba, ibd->ioc->ibase, ibd->ioc->imask);
1223 return 0;
1213} 1224}
1214 1225
1215/* setup Mercury or Elroy IBASE/IMASK registers. */ 1226/* setup Mercury or Elroy IBASE/IMASK registers. */
1216static void 1227static void
1217setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num) 1228setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
1218{ 1229{
1219 /* lba_set_iregs() is in drivers/parisc/lba_pci.c */ 1230 struct ibase_data_struct ibase_data = {
1220 extern void lba_set_iregs(struct parisc_device *, u32, u32); 1231 .ioc = ioc,
1221 struct device *dev; 1232 .ioc_num = ioc_num,
1222 struct klist_iter i; 1233 };
1223 1234
1224 klist_iter_init(&sba->dev.klist_children, &i); 1235 device_for_each_child(&sba->dev, &ibase_data,
1225 while ((dev = next_device(&i))) { 1236 setup_ibase_imask_callback);
1226 struct parisc_device *lba = to_parisc_device(dev); 1237}
1227 int rope_num = (lba->hpa.start >> 13) & 0xf; 1238
1228 if (rope_num >> 3 == ioc_num) 1239#ifdef SBA_AGP_SUPPORT
1229 lba_set_iregs(lba, ioc->ibase, ioc->imask); 1240static int
1230 } 1241sba_ioc_find_quicksilver(struct device *dev, void *data)
1231 klist_iter_exit(&i); 1242{
1243 int *agp_found = data;
1244 struct parisc_device *lba = to_parisc_device(dev);
1245
1246 if (IS_QUICKSILVER(lba))
1247 *agp_found = 1;
1248 return 0;
1232} 1249}
1250#endif
1233 1251
1234static void 1252static void
1235sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) 1253sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
@@ -1332,9 +1350,6 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
1332 WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM); 1350 WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM);
1333 1351
1334#ifdef SBA_AGP_SUPPORT 1352#ifdef SBA_AGP_SUPPORT
1335{
1336 struct klist_iter i;
1337 struct device *dev = NULL;
1338 1353
1339 /* 1354 /*
1340 ** If an AGP device is present, only use half of the IOV space 1355 ** If an AGP device is present, only use half of the IOV space
@@ -1344,13 +1359,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
1344 ** We program the next pdir index after we stop w/ a key for 1359 ** We program the next pdir index after we stop w/ a key for
1345 ** the GART code to handshake on. 1360 ** the GART code to handshake on.
1346 */ 1361 */
1347 klist_iter_init(&sba->dev.klist_children, &i); 1362 device_for_each_child(&sba->dev, &agp_found, sba_ioc_find_quicksilver);
1348 while ((dev = next_device(&i))) {
1349 struct parisc_device *lba = to_parisc_device(dev);
1350 if (IS_QUICKSILVER(lba))
1351 agp_found = 1;
1352 }
1353 klist_iter_exit(&i);
1354 1363
1355 if (agp_found && sba_reserve_agpgart) { 1364 if (agp_found && sba_reserve_agpgart) {
1356 printk(KERN_INFO "%s: reserving %dMb of IOVA space for agpgart\n", 1365 printk(KERN_INFO "%s: reserving %dMb of IOVA space for agpgart\n",
@@ -1358,9 +1367,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
1358 ioc->pdir_size /= 2; 1367 ioc->pdir_size /= 2;
1359 ioc->pdir_base[PDIR_INDEX(iova_space_size/2)] = SBA_AGPGART_COOKIE; 1368 ioc->pdir_base[PDIR_INDEX(iova_space_size/2)] = SBA_AGPGART_COOKIE;
1360 } 1369 }
1361}
1362#endif /*SBA_AGP_SUPPORT*/ 1370#endif /*SBA_AGP_SUPPORT*/
1363
1364} 1371}
1365 1372
1366static void 1373static void
diff --git a/drivers/scsi/fcoe/fc_transport_fcoe.c b/drivers/scsi/fcoe/fc_transport_fcoe.c
index bf7fe6fc0820..8862758006c0 100644
--- a/drivers/scsi/fcoe/fc_transport_fcoe.c
+++ b/drivers/scsi/fcoe/fc_transport_fcoe.c
@@ -33,19 +33,19 @@ static LIST_HEAD(fcoe_transports);
33static DEFINE_MUTEX(fcoe_transports_lock); 33static DEFINE_MUTEX(fcoe_transports_lock);
34 34
35/** 35/**
36 * fcoe_transport_default - returns ptr to the default transport fcoe_sw 36 * fcoe_transport_default() - Returns ptr to the default transport fcoe_sw
37 **/ 37 */
38struct fcoe_transport *fcoe_transport_default(void) 38struct fcoe_transport *fcoe_transport_default(void)
39{ 39{
40 return &fcoe_sw_transport; 40 return &fcoe_sw_transport;
41} 41}
42 42
43/** 43/**
44 * fcoe_transport_to_pcidev - get the pci dev from a netdev 44 * fcoe_transport_to_pcidev() - get the pci dev from a netdev
45 * @netdev: the netdev that pci dev will be retrived from 45 * @netdev: the netdev that pci dev will be retrived from
46 * 46 *
47 * Returns: NULL or the corrsponding pci_dev 47 * Returns: NULL or the corrsponding pci_dev
48 **/ 48 */
49struct pci_dev *fcoe_transport_pcidev(const struct net_device *netdev) 49struct pci_dev *fcoe_transport_pcidev(const struct net_device *netdev)
50{ 50{
51 if (!netdev->dev.parent) 51 if (!netdev->dev.parent)
@@ -54,18 +54,17 @@ struct pci_dev *fcoe_transport_pcidev(const struct net_device *netdev)
54} 54}
55 55
56/** 56/**
57 * fcoe_transport_device_lookup - find out netdev is managed by the 57 * fcoe_transport_device_lookup() - Lookup a transport
58 * transport
59 * assign a transport to a device
60 * @netdev: the netdev the transport to be attached to 58 * @netdev: the netdev the transport to be attached to
61 * 59 *
62 * This will look for existing offload driver, if not found, it falls back to 60 * This will look for existing offload driver, if not found, it falls back to
63 * the default sw hba (fcoe_sw) as its fcoe transport. 61 * the default sw hba (fcoe_sw) as its fcoe transport.
64 * 62 *
65 * Returns: 0 for success 63 * Returns: 0 for success
66 **/ 64 */
67static struct fcoe_transport_internal *fcoe_transport_device_lookup( 65static struct fcoe_transport_internal *
68 struct fcoe_transport *t, struct net_device *netdev) 66fcoe_transport_device_lookup(struct fcoe_transport *t,
67 struct net_device *netdev)
69{ 68{
70 struct fcoe_transport_internal *ti; 69 struct fcoe_transport_internal *ti;
71 70
@@ -81,14 +80,14 @@ static struct fcoe_transport_internal *fcoe_transport_device_lookup(
81 return NULL; 80 return NULL;
82} 81}
83/** 82/**
84 * fcoe_transport_device_add - assign a transport to a device 83 * fcoe_transport_device_add() - Assign a transport to a device
85 * @netdev: the netdev the transport to be attached to 84 * @netdev: the netdev the transport to be attached to
86 * 85 *
87 * This will look for existing offload driver, if not found, it falls back to 86 * This will look for existing offload driver, if not found, it falls back to
88 * the default sw hba (fcoe_sw) as its fcoe transport. 87 * the default sw hba (fcoe_sw) as its fcoe transport.
89 * 88 *
90 * Returns: 0 for success 89 * Returns: 0 for success
91 **/ 90 */
92static int fcoe_transport_device_add(struct fcoe_transport *t, 91static int fcoe_transport_device_add(struct fcoe_transport *t,
93 struct net_device *netdev) 92 struct net_device *netdev)
94{ 93{
@@ -123,14 +122,14 @@ static int fcoe_transport_device_add(struct fcoe_transport *t,
123} 122}
124 123
125/** 124/**
126 * fcoe_transport_device_remove - remove a device from its transport 125 * fcoe_transport_device_remove() - Remove a device from its transport
127 * @netdev: the netdev the transport to be attached to 126 * @netdev: the netdev the transport to be attached to
128 * 127 *
129 * this removes the device from the transport so the given transport will 128 * This removes the device from the transport so the given transport will
130 * not manage this device any more 129 * not manage this device any more
131 * 130 *
132 * Returns: 0 for success 131 * Returns: 0 for success
133 **/ 132 */
134static int fcoe_transport_device_remove(struct fcoe_transport *t, 133static int fcoe_transport_device_remove(struct fcoe_transport *t,
135 struct net_device *netdev) 134 struct net_device *netdev)
136{ 135{
@@ -155,13 +154,13 @@ static int fcoe_transport_device_remove(struct fcoe_transport *t,
155} 154}
156 155
157/** 156/**
158 * fcoe_transport_device_remove_all - remove all from transport devlist 157 * fcoe_transport_device_remove_all() - Remove all from transport devlist
159 * 158 *
160 * this removes the device from the transport so the given transport will 159 * This removes the device from the transport so the given transport will
161 * not manage this device any more 160 * not manage this device any more
162 * 161 *
163 * Returns: 0 for success 162 * Returns: 0 for success
164 **/ 163 */
165static void fcoe_transport_device_remove_all(struct fcoe_transport *t) 164static void fcoe_transport_device_remove_all(struct fcoe_transport *t)
166{ 165{
167 struct fcoe_transport_internal *ti, *tmp; 166 struct fcoe_transport_internal *ti, *tmp;
@@ -175,18 +174,18 @@ static void fcoe_transport_device_remove_all(struct fcoe_transport *t)
175} 174}
176 175
177/** 176/**
178 * fcoe_transport_match - use the bus device match function to match the hw 177 * fcoe_transport_match() - Use the bus device match function to match the hw
179 * @t: the fcoe transport 178 * @t: The fcoe transport to check
180 * @netdev: 179 * @netdev: The netdev to match against
181 * 180 *
182 * This function is used to check if the givne transport wants to manage the 181 * This function is used to check if the given transport wants to manage the
183 * input netdev. if the transports implements the match function, it will be 182 * input netdev. if the transports implements the match function, it will be
184 * called, o.w. we just compare the pci vendor and device id. 183 * called, o.w. we just compare the pci vendor and device id.
185 * 184 *
186 * Returns: true for match up 185 * Returns: true for match up
187 **/ 186 */
188static bool fcoe_transport_match(struct fcoe_transport *t, 187static bool fcoe_transport_match(struct fcoe_transport *t,
189 struct net_device *netdev) 188 struct net_device *netdev)
190{ 189{
191 /* match transport by vendor and device id */ 190 /* match transport by vendor and device id */
192 struct pci_dev *pci; 191 struct pci_dev *pci;
@@ -210,17 +209,17 @@ static bool fcoe_transport_match(struct fcoe_transport *t,
210} 209}
211 210
212/** 211/**
213 * fcoe_transport_lookup - check if the transport is already registered 212 * fcoe_transport_lookup() - Check if the transport is already registered
214 * @t: the transport to be looked up 213 * @t: the transport to be looked up
215 * 214 *
216 * This compares the parent device (pci) vendor and device id 215 * This compares the parent device (pci) vendor and device id
217 * 216 *
218 * Returns: NULL if not found 217 * Returns: NULL if not found
219 * 218 *
220 * TODO - return default sw transport if no other transport is found 219 * TODO: return default sw transport if no other transport is found
221 **/ 220 */
222static struct fcoe_transport *fcoe_transport_lookup( 221static struct fcoe_transport *
223 struct net_device *netdev) 222fcoe_transport_lookup(struct net_device *netdev)
224{ 223{
225 struct fcoe_transport *t; 224 struct fcoe_transport *t;
226 225
@@ -239,11 +238,11 @@ static struct fcoe_transport *fcoe_transport_lookup(
239} 238}
240 239
241/** 240/**
242 * fcoe_transport_register - adds a fcoe transport to the fcoe transports list 241 * fcoe_transport_register() - Adds a fcoe transport to the fcoe transports list
243 * @t: ptr to the fcoe transport to be added 242 * @t: ptr to the fcoe transport to be added
244 * 243 *
245 * Returns: 0 for success 244 * Returns: 0 for success
246 **/ 245 */
247int fcoe_transport_register(struct fcoe_transport *t) 246int fcoe_transport_register(struct fcoe_transport *t)
248{ 247{
249 struct fcoe_transport *tt; 248 struct fcoe_transport *tt;
@@ -259,9 +258,6 @@ int fcoe_transport_register(struct fcoe_transport *t)
259 list_add_tail(&t->list, &fcoe_transports); 258 list_add_tail(&t->list, &fcoe_transports);
260 mutex_unlock(&fcoe_transports_lock); 259 mutex_unlock(&fcoe_transports_lock);
261 260
262 mutex_init(&t->devlock);
263 INIT_LIST_HEAD(&t->devlist);
264
265 printk(KERN_DEBUG "fcoe_transport_register:%s\n", t->name); 261 printk(KERN_DEBUG "fcoe_transport_register:%s\n", t->name);
266 262
267 return 0; 263 return 0;
@@ -269,11 +265,11 @@ int fcoe_transport_register(struct fcoe_transport *t)
269EXPORT_SYMBOL_GPL(fcoe_transport_register); 265EXPORT_SYMBOL_GPL(fcoe_transport_register);
270 266
271/** 267/**
272 * fcoe_transport_unregister - remove the tranport fro the fcoe transports list 268 * fcoe_transport_unregister() - Remove the tranport fro the fcoe transports list
273 * @t: ptr to the fcoe transport to be removed 269 * @t: ptr to the fcoe transport to be removed
274 * 270 *
275 * Returns: 0 for success 271 * Returns: 0 for success
276 **/ 272 */
277int fcoe_transport_unregister(struct fcoe_transport *t) 273int fcoe_transport_unregister(struct fcoe_transport *t)
278{ 274{
279 struct fcoe_transport *tt, *tmp; 275 struct fcoe_transport *tt, *tmp;
@@ -294,8 +290,8 @@ int fcoe_transport_unregister(struct fcoe_transport *t)
294} 290}
295EXPORT_SYMBOL_GPL(fcoe_transport_unregister); 291EXPORT_SYMBOL_GPL(fcoe_transport_unregister);
296 292
297/* 293/**
298 * fcoe_load_transport_driver - load an offload driver by alias name 294 * fcoe_load_transport_driver() - Load an offload driver by alias name
299 * @netdev: the target net device 295 * @netdev: the target net device
300 * 296 *
301 * Requests for an offload driver module as the fcoe transport, if fails, it 297 * Requests for an offload driver module as the fcoe transport, if fails, it
@@ -307,7 +303,7 @@ EXPORT_SYMBOL_GPL(fcoe_transport_unregister);
307 * 3. pure hw fcoe hba may not have netdev 303 * 3. pure hw fcoe hba may not have netdev
308 * 304 *
309 * Returns: 0 for success 305 * Returns: 0 for success
310 **/ 306 */
311int fcoe_load_transport_driver(struct net_device *netdev) 307int fcoe_load_transport_driver(struct net_device *netdev)
312{ 308{
313 struct pci_dev *pci; 309 struct pci_dev *pci;
@@ -335,14 +331,14 @@ int fcoe_load_transport_driver(struct net_device *netdev)
335EXPORT_SYMBOL_GPL(fcoe_load_transport_driver); 331EXPORT_SYMBOL_GPL(fcoe_load_transport_driver);
336 332
337/** 333/**
338 * fcoe_transport_attach - load transport to fcoe 334 * fcoe_transport_attach() - Load transport to fcoe
339 * @netdev: the netdev the transport to be attached to 335 * @netdev: the netdev the transport to be attached to
340 * 336 *
341 * This will look for existing offload driver, if not found, it falls back to 337 * This will look for existing offload driver, if not found, it falls back to
342 * the default sw hba (fcoe_sw) as its fcoe transport. 338 * the default sw hba (fcoe_sw) as its fcoe transport.
343 * 339 *
344 * Returns: 0 for success 340 * Returns: 0 for success
345 **/ 341 */
346int fcoe_transport_attach(struct net_device *netdev) 342int fcoe_transport_attach(struct net_device *netdev)
347{ 343{
348 struct fcoe_transport *t; 344 struct fcoe_transport *t;
@@ -373,11 +369,11 @@ int fcoe_transport_attach(struct net_device *netdev)
373EXPORT_SYMBOL_GPL(fcoe_transport_attach); 369EXPORT_SYMBOL_GPL(fcoe_transport_attach);
374 370
375/** 371/**
376 * fcoe_transport_release - unload transport from fcoe 372 * fcoe_transport_release() - Unload transport from fcoe
377 * @netdev: the net device on which fcoe is to be released 373 * @netdev: the net device on which fcoe is to be released
378 * 374 *
379 * Returns: 0 for success 375 * Returns: 0 for success
380 **/ 376 */
381int fcoe_transport_release(struct net_device *netdev) 377int fcoe_transport_release(struct net_device *netdev)
382{ 378{
383 struct fcoe_transport *t; 379 struct fcoe_transport *t;
@@ -410,12 +406,12 @@ int fcoe_transport_release(struct net_device *netdev)
410EXPORT_SYMBOL_GPL(fcoe_transport_release); 406EXPORT_SYMBOL_GPL(fcoe_transport_release);
411 407
412/** 408/**
413 * fcoe_transport_init - initializes fcoe transport layer 409 * fcoe_transport_init() - Initializes fcoe transport layer
414 * 410 *
415 * This prepares for the fcoe transport layer 411 * This prepares for the fcoe transport layer
416 * 412 *
417 * Returns: none 413 * Returns: none
418 **/ 414 */
419int __init fcoe_transport_init(void) 415int __init fcoe_transport_init(void)
420{ 416{
421 INIT_LIST_HEAD(&fcoe_transports); 417 INIT_LIST_HEAD(&fcoe_transports);
@@ -424,12 +420,13 @@ int __init fcoe_transport_init(void)
424} 420}
425 421
426/** 422/**
427 * fcoe_transport_exit - cleans up the fcoe transport layer 423 * fcoe_transport_exit() - Cleans up the fcoe transport layer
424 *
428 * This cleans up the fcoe transport layer. removing any transport on the list, 425 * This cleans up the fcoe transport layer. removing any transport on the list,
429 * note that the transport destroy func is not called here. 426 * note that the transport destroy func is not called here.
430 * 427 *
431 * Returns: none 428 * Returns: none
432 **/ 429 */
433int __exit fcoe_transport_exit(void) 430int __exit fcoe_transport_exit(void)
434{ 431{
435 struct fcoe_transport *t, *tmp; 432 struct fcoe_transport *t, *tmp;
diff --git a/drivers/scsi/fcoe/fcoe_sw.c b/drivers/scsi/fcoe/fcoe_sw.c
index dc4cd5e25760..da210eba1941 100644
--- a/drivers/scsi/fcoe/fcoe_sw.c
+++ b/drivers/scsi/fcoe/fcoe_sw.c
@@ -104,19 +104,19 @@ static struct scsi_host_template fcoe_sw_shost_template = {
104 .max_sectors = 0xffff, 104 .max_sectors = 0xffff,
105}; 105};
106 106
107/* 107/**
108 * fcoe_sw_lport_config - sets up the fc_lport 108 * fcoe_sw_lport_config() - sets up the fc_lport
109 * @lp: ptr to the fc_lport 109 * @lp: ptr to the fc_lport
110 * @shost: ptr to the parent scsi host 110 * @shost: ptr to the parent scsi host
111 * 111 *
112 * Returns: 0 for success 112 * Returns: 0 for success
113 *
114 */ 113 */
115static int fcoe_sw_lport_config(struct fc_lport *lp) 114static int fcoe_sw_lport_config(struct fc_lport *lp)
116{ 115{
117 int i = 0; 116 int i = 0;
118 117
119 lp->link_status = 0; 118 lp->link_up = 0;
119 lp->qfull = 0;
120 lp->max_retry_count = 3; 120 lp->max_retry_count = 3;
121 lp->e_d_tov = 2 * 1000; /* FC-FS default */ 121 lp->e_d_tov = 2 * 1000; /* FC-FS default */
122 lp->r_a_tov = 2 * 2 * 1000; 122 lp->r_a_tov = 2 * 2 * 1000;
@@ -136,16 +136,14 @@ static int fcoe_sw_lport_config(struct fc_lport *lp)
136 return 0; 136 return 0;
137} 137}
138 138
139/* 139/**
140 * fcoe_sw_netdev_config - sets up fcoe_softc for lport and network 140 * fcoe_sw_netdev_config() - Set up netdev for SW FCoE
141 * related properties
142 * @lp : ptr to the fc_lport 141 * @lp : ptr to the fc_lport
143 * @netdev : ptr to the associated netdevice struct 142 * @netdev : ptr to the associated netdevice struct
144 * 143 *
145 * Must be called after fcoe_sw_lport_config() as it will use lport mutex 144 * Must be called after fcoe_sw_lport_config() as it will use lport mutex
146 * 145 *
147 * Returns : 0 for success 146 * Returns : 0 for success
148 *
149 */ 147 */
150static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev) 148static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev)
151{ 149{
@@ -181,9 +179,8 @@ static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev)
181 if (fc_set_mfs(lp, mfs)) 179 if (fc_set_mfs(lp, mfs))
182 return -EINVAL; 180 return -EINVAL;
183 181
184 lp->link_status = ~FC_PAUSE & ~FC_LINK_UP;
185 if (!fcoe_link_ok(lp)) 182 if (!fcoe_link_ok(lp))
186 lp->link_status |= FC_LINK_UP; 183 lp->link_up = 1;
187 184
188 /* offload features support */ 185 /* offload features support */
189 if (fc->real_dev->features & NETIF_F_SG) 186 if (fc->real_dev->features & NETIF_F_SG)
@@ -191,6 +188,7 @@ static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev)
191 188
192 189
193 skb_queue_head_init(&fc->fcoe_pending_queue); 190 skb_queue_head_init(&fc->fcoe_pending_queue);
191 fc->fcoe_pending_queue_active = 0;
194 192
195 /* setup Source Mac Address */ 193 /* setup Source Mac Address */
196 memcpy(fc->ctl_src_addr, fc->real_dev->dev_addr, 194 memcpy(fc->ctl_src_addr, fc->real_dev->dev_addr,
@@ -224,16 +222,15 @@ static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev)
224 return 0; 222 return 0;
225} 223}
226 224
227/* 225/**
228 * fcoe_sw_shost_config - sets up fc_lport->host 226 * fcoe_sw_shost_config() - Sets up fc_lport->host
229 * @lp : ptr to the fc_lport 227 * @lp : ptr to the fc_lport
230 * @shost : ptr to the associated scsi host 228 * @shost : ptr to the associated scsi host
231 * @dev : device associated to scsi host 229 * @dev : device associated to scsi host
232 * 230 *
233 * Must be called after fcoe_sw_lport_config) and fcoe_sw_netdev_config() 231 * Must be called after fcoe_sw_lport_config() and fcoe_sw_netdev_config()
234 * 232 *
235 * Returns : 0 for success 233 * Returns : 0 for success
236 *
237 */ 234 */
238static int fcoe_sw_shost_config(struct fc_lport *lp, struct Scsi_Host *shost, 235static int fcoe_sw_shost_config(struct fc_lport *lp, struct Scsi_Host *shost,
239 struct device *dev) 236 struct device *dev)
@@ -261,8 +258,8 @@ static int fcoe_sw_shost_config(struct fc_lport *lp, struct Scsi_Host *shost,
261 return 0; 258 return 0;
262} 259}
263 260
264/* 261/**
265 * fcoe_sw_em_config - allocates em for this lport 262 * fcoe_sw_em_config() - allocates em for this lport
266 * @lp: the port that em is to allocated for 263 * @lp: the port that em is to allocated for
267 * 264 *
268 * Returns : 0 on success 265 * Returns : 0 on success
@@ -279,8 +276,8 @@ static inline int fcoe_sw_em_config(struct fc_lport *lp)
279 return 0; 276 return 0;
280} 277}
281 278
282/* 279/**
283 * fcoe_sw_destroy - FCoE software HBA tear-down function 280 * fcoe_sw_destroy() - FCoE software HBA tear-down function
284 * @netdev: ptr to the associated net_device 281 * @netdev: ptr to the associated net_device
285 * 282 *
286 * Returns: 0 if link is OK for use by FCoE. 283 * Returns: 0 if link is OK for use by FCoE.
@@ -301,7 +298,7 @@ static int fcoe_sw_destroy(struct net_device *netdev)
301 if (!lp) 298 if (!lp)
302 return -ENODEV; 299 return -ENODEV;
303 300
304 fc = fcoe_softc(lp); 301 fc = lport_priv(lp);
305 302
306 /* Logout of the fabric */ 303 /* Logout of the fabric */
307 fc_fabric_logoff(lp); 304 fc_fabric_logoff(lp);
@@ -353,8 +350,8 @@ static struct libfc_function_template fcoe_sw_libfc_fcn_templ = {
353 .frame_send = fcoe_xmit, 350 .frame_send = fcoe_xmit,
354}; 351};
355 352
356/* 353/**
357 * fcoe_sw_create - this function creates the fcoe interface 354 * fcoe_sw_create() - this function creates the fcoe interface
358 * @netdev: pointer the associated netdevice 355 * @netdev: pointer the associated netdevice
359 * 356 *
360 * Creates fc_lport struct and scsi_host for lport, configures lport 357 * Creates fc_lport struct and scsi_host for lport, configures lport
@@ -440,8 +437,8 @@ out_host_put:
440 return rc; 437 return rc;
441} 438}
442 439
443/* 440/**
444 * fcoe_sw_match - the fcoe sw transport match function 441 * fcoe_sw_match() - The FCoE SW transport match function
445 * 442 *
446 * Returns : false always 443 * Returns : false always
447 */ 444 */
@@ -461,8 +458,8 @@ struct fcoe_transport fcoe_sw_transport = {
461 .device = 0xffff, 458 .device = 0xffff,
462}; 459};
463 460
464/* 461/**
465 * fcoe_sw_init - registers fcoe_sw_transport 462 * fcoe_sw_init() - Registers fcoe_sw_transport
466 * 463 *
467 * Returns : 0 on success 464 * Returns : 0 on success
468 */ 465 */
@@ -471,17 +468,22 @@ int __init fcoe_sw_init(void)
471 /* attach to scsi transport */ 468 /* attach to scsi transport */
472 scsi_transport_fcoe_sw = 469 scsi_transport_fcoe_sw =
473 fc_attach_transport(&fcoe_sw_transport_function); 470 fc_attach_transport(&fcoe_sw_transport_function);
471
474 if (!scsi_transport_fcoe_sw) { 472 if (!scsi_transport_fcoe_sw) {
475 printk(KERN_ERR "fcoe_sw_init:fc_attach_transport() failed\n"); 473 printk(KERN_ERR "fcoe_sw_init:fc_attach_transport() failed\n");
476 return -ENODEV; 474 return -ENODEV;
477 } 475 }
476
477 mutex_init(&fcoe_sw_transport.devlock);
478 INIT_LIST_HEAD(&fcoe_sw_transport.devlist);
479
478 /* register sw transport */ 480 /* register sw transport */
479 fcoe_transport_register(&fcoe_sw_transport); 481 fcoe_transport_register(&fcoe_sw_transport);
480 return 0; 482 return 0;
481} 483}
482 484
483/* 485/**
484 * fcoe_sw_exit - unregisters fcoe_sw_transport 486 * fcoe_sw_exit() - Unregisters fcoe_sw_transport
485 * 487 *
486 * Returns : 0 on success 488 * Returns : 0 on success
487 */ 489 */
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c
index e419f486cdb3..5548bf3bb58b 100644
--- a/drivers/scsi/fcoe/libfcoe.c
+++ b/drivers/scsi/fcoe/libfcoe.c
@@ -49,6 +49,7 @@
49static int debug_fcoe; 49static int debug_fcoe;
50 50
51#define FCOE_MAX_QUEUE_DEPTH 256 51#define FCOE_MAX_QUEUE_DEPTH 256
52#define FCOE_LOW_QUEUE_DEPTH 32
52 53
53/* destination address mode */ 54/* destination address mode */
54#define FCOE_GW_ADDR_MODE 0x00 55#define FCOE_GW_ADDR_MODE 0x00
@@ -69,8 +70,6 @@ struct fcoe_percpu_s *fcoe_percpu[NR_CPUS];
69 70
70/* Function Prototyes */ 71/* Function Prototyes */
71static int fcoe_check_wait_queue(struct fc_lport *); 72static int fcoe_check_wait_queue(struct fc_lport *);
72static void fcoe_insert_wait_queue_head(struct fc_lport *, struct sk_buff *);
73static void fcoe_insert_wait_queue(struct fc_lport *, struct sk_buff *);
74static void fcoe_recv_flogi(struct fcoe_softc *, struct fc_frame *, u8 *); 73static void fcoe_recv_flogi(struct fcoe_softc *, struct fc_frame *, u8 *);
75#ifdef CONFIG_HOTPLUG_CPU 74#ifdef CONFIG_HOTPLUG_CPU
76static int fcoe_cpu_callback(struct notifier_block *, ulong, void *); 75static int fcoe_cpu_callback(struct notifier_block *, ulong, void *);
@@ -91,13 +90,13 @@ static struct notifier_block fcoe_cpu_notifier = {
91}; 90};
92 91
93/** 92/**
94 * fcoe_create_percpu_data - creates the associated cpu data 93 * fcoe_create_percpu_data() - creates the associated cpu data
95 * @cpu: index for the cpu where fcoe cpu data will be created 94 * @cpu: index for the cpu where fcoe cpu data will be created
96 * 95 *
97 * create percpu stats block, from cpu add notifier 96 * create percpu stats block, from cpu add notifier
98 * 97 *
99 * Returns: none 98 * Returns: none
100 **/ 99 */
101static void fcoe_create_percpu_data(int cpu) 100static void fcoe_create_percpu_data(int cpu)
102{ 101{
103 struct fc_lport *lp; 102 struct fc_lport *lp;
@@ -115,13 +114,13 @@ static void fcoe_create_percpu_data(int cpu)
115} 114}
116 115
117/** 116/**
118 * fcoe_destroy_percpu_data - destroys the associated cpu data 117 * fcoe_destroy_percpu_data() - destroys the associated cpu data
119 * @cpu: index for the cpu where fcoe cpu data will destroyed 118 * @cpu: index for the cpu where fcoe cpu data will destroyed
120 * 119 *
121 * destroy percpu stats block called by cpu add/remove notifier 120 * destroy percpu stats block called by cpu add/remove notifier
122 * 121 *
123 * Retuns: none 122 * Retuns: none
124 **/ 123 */
125static void fcoe_destroy_percpu_data(int cpu) 124static void fcoe_destroy_percpu_data(int cpu)
126{ 125{
127 struct fc_lport *lp; 126 struct fc_lport *lp;
@@ -137,7 +136,7 @@ static void fcoe_destroy_percpu_data(int cpu)
137} 136}
138 137
139/** 138/**
140 * fcoe_cpu_callback - fcoe cpu hotplug event callback 139 * fcoe_cpu_callback() - fcoe cpu hotplug event callback
141 * @nfb: callback data block 140 * @nfb: callback data block
142 * @action: event triggering the callback 141 * @action: event triggering the callback
143 * @hcpu: index for the cpu of this event 142 * @hcpu: index for the cpu of this event
@@ -145,7 +144,7 @@ static void fcoe_destroy_percpu_data(int cpu)
145 * this creates or destroys per cpu data for fcoe 144 * this creates or destroys per cpu data for fcoe
146 * 145 *
147 * Returns NOTIFY_OK always. 146 * Returns NOTIFY_OK always.
148 **/ 147 */
149static int fcoe_cpu_callback(struct notifier_block *nfb, unsigned long action, 148static int fcoe_cpu_callback(struct notifier_block *nfb, unsigned long action,
150 void *hcpu) 149 void *hcpu)
151{ 150{
@@ -166,7 +165,7 @@ static int fcoe_cpu_callback(struct notifier_block *nfb, unsigned long action,
166#endif /* CONFIG_HOTPLUG_CPU */ 165#endif /* CONFIG_HOTPLUG_CPU */
167 166
168/** 167/**
169 * fcoe_rcv - this is the fcoe receive function called by NET_RX_SOFTIRQ 168 * fcoe_rcv() - this is the fcoe receive function called by NET_RX_SOFTIRQ
170 * @skb: the receive skb 169 * @skb: the receive skb
171 * @dev: associated net device 170 * @dev: associated net device
172 * @ptype: context 171 * @ptype: context
@@ -175,7 +174,7 @@ static int fcoe_cpu_callback(struct notifier_block *nfb, unsigned long action,
175 * this function will receive the packet and build fc frame and pass it up 174 * this function will receive the packet and build fc frame and pass it up
176 * 175 *
177 * Returns: 0 for success 176 * Returns: 0 for success
178 **/ 177 */
179int fcoe_rcv(struct sk_buff *skb, struct net_device *dev, 178int fcoe_rcv(struct sk_buff *skb, struct net_device *dev,
180 struct packet_type *ptype, struct net_device *olddev) 179 struct packet_type *ptype, struct net_device *olddev)
181{ 180{
@@ -265,11 +264,11 @@ err2:
265EXPORT_SYMBOL_GPL(fcoe_rcv); 264EXPORT_SYMBOL_GPL(fcoe_rcv);
266 265
267/** 266/**
268 * fcoe_start_io - pass to netdev to start xmit for fcoe 267 * fcoe_start_io() - pass to netdev to start xmit for fcoe
269 * @skb: the skb to be xmitted 268 * @skb: the skb to be xmitted
270 * 269 *
271 * Returns: 0 for success 270 * Returns: 0 for success
272 **/ 271 */
273static inline int fcoe_start_io(struct sk_buff *skb) 272static inline int fcoe_start_io(struct sk_buff *skb)
274{ 273{
275 int rc; 274 int rc;
@@ -283,12 +282,12 @@ static inline int fcoe_start_io(struct sk_buff *skb)
283} 282}
284 283
285/** 284/**
286 * fcoe_get_paged_crc_eof - in case we need alloc a page for crc_eof 285 * fcoe_get_paged_crc_eof() - in case we need alloc a page for crc_eof
287 * @skb: the skb to be xmitted 286 * @skb: the skb to be xmitted
288 * @tlen: total len 287 * @tlen: total len
289 * 288 *
290 * Returns: 0 for success 289 * Returns: 0 for success
291 **/ 290 */
292static int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen) 291static int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen)
293{ 292{
294 struct fcoe_percpu_s *fps; 293 struct fcoe_percpu_s *fps;
@@ -326,13 +325,12 @@ static int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen)
326} 325}
327 326
328/** 327/**
329 * fcoe_fc_crc - calculates FC CRC in this fcoe skb 328 * fcoe_fc_crc() - calculates FC CRC in this fcoe skb
330 * @fp: the fc_frame containg data to be checksummed 329 * @fp: the fc_frame containg data to be checksummed
331 * 330 *
332 * This uses crc32() to calculate the crc for fc frame 331 * This uses crc32() to calculate the crc for fc frame
333 * Return : 32 bit crc 332 * Return : 32 bit crc
334 * 333 */
335 **/
336u32 fcoe_fc_crc(struct fc_frame *fp) 334u32 fcoe_fc_crc(struct fc_frame *fp)
337{ 335{
338 struct sk_buff *skb = fp_skb(fp); 336 struct sk_buff *skb = fp_skb(fp);
@@ -363,13 +361,12 @@ u32 fcoe_fc_crc(struct fc_frame *fp)
363EXPORT_SYMBOL_GPL(fcoe_fc_crc); 361EXPORT_SYMBOL_GPL(fcoe_fc_crc);
364 362
365/** 363/**
366 * fcoe_xmit - FCoE frame transmit function 364 * fcoe_xmit() - FCoE frame transmit function
367 * @lp: the associated local port 365 * @lp: the associated local port
368 * @fp: the fc_frame to be transmitted 366 * @fp: the fc_frame to be transmitted
369 * 367 *
370 * Return : 0 for success 368 * Return : 0 for success
371 * 369 */
372 **/
373int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp) 370int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp)
374{ 371{
375 int wlen, rc = 0; 372 int wlen, rc = 0;
@@ -389,7 +386,7 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp)
389 386
390 WARN_ON((fr_len(fp) % sizeof(u32)) != 0); 387 WARN_ON((fr_len(fp) % sizeof(u32)) != 0);
391 388
392 fc = fcoe_softc(lp); 389 fc = lport_priv(lp);
393 /* 390 /*
394 * if it is a flogi then we need to learn gw-addr 391 * if it is a flogi then we need to learn gw-addr
395 * and my own fcid 392 * and my own fcid
@@ -439,7 +436,7 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp)
439 if (skb_is_nonlinear(skb)) { 436 if (skb_is_nonlinear(skb)) {
440 skb_frag_t *frag; 437 skb_frag_t *frag;
441 if (fcoe_get_paged_crc_eof(skb, tlen)) { 438 if (fcoe_get_paged_crc_eof(skb, tlen)) {
442 kfree(skb); 439 kfree_skb(skb);
443 return -ENOMEM; 440 return -ENOMEM;
444 } 441 }
445 frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1]; 442 frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1];
@@ -502,21 +499,22 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp)
502 rc = fcoe_start_io(skb); 499 rc = fcoe_start_io(skb);
503 500
504 if (rc) { 501 if (rc) {
505 fcoe_insert_wait_queue(lp, skb); 502 spin_lock_bh(&fc->fcoe_pending_queue.lock);
503 __skb_queue_tail(&fc->fcoe_pending_queue, skb);
504 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
506 if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH) 505 if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH)
507 fc_pause(lp); 506 lp->qfull = 1;
508 } 507 }
509 508
510 return 0; 509 return 0;
511} 510}
512EXPORT_SYMBOL_GPL(fcoe_xmit); 511EXPORT_SYMBOL_GPL(fcoe_xmit);
513 512
514/* 513/**
515 * fcoe_percpu_receive_thread - recv thread per cpu 514 * fcoe_percpu_receive_thread() - recv thread per cpu
516 * @arg: ptr to the fcoe per cpu struct 515 * @arg: ptr to the fcoe per cpu struct
517 * 516 *
518 * Return: 0 for success 517 * Return: 0 for success
519 *
520 */ 518 */
521int fcoe_percpu_receive_thread(void *arg) 519int fcoe_percpu_receive_thread(void *arg)
522{ 520{
@@ -533,7 +531,7 @@ int fcoe_percpu_receive_thread(void *arg)
533 struct fcoe_softc *fc; 531 struct fcoe_softc *fc;
534 struct fcoe_hdr *hp; 532 struct fcoe_hdr *hp;
535 533
536 set_user_nice(current, 19); 534 set_user_nice(current, -20);
537 535
538 while (!kthread_should_stop()) { 536 while (!kthread_should_stop()) {
539 537
@@ -658,7 +656,7 @@ int fcoe_percpu_receive_thread(void *arg)
658} 656}
659 657
660/** 658/**
661 * fcoe_recv_flogi - flogi receive function 659 * fcoe_recv_flogi() - flogi receive function
662 * @fc: associated fcoe_softc 660 * @fc: associated fcoe_softc
663 * @fp: the recieved frame 661 * @fp: the recieved frame
664 * @sa: the source address of this flogi 662 * @sa: the source address of this flogi
@@ -667,7 +665,7 @@ int fcoe_percpu_receive_thread(void *arg)
667 * mac address for the initiator, eitehr OUI based or GW based. 665 * mac address for the initiator, eitehr OUI based or GW based.
668 * 666 *
669 * Returns: none 667 * Returns: none
670 **/ 668 */
671static void fcoe_recv_flogi(struct fcoe_softc *fc, struct fc_frame *fp, u8 *sa) 669static void fcoe_recv_flogi(struct fcoe_softc *fc, struct fc_frame *fp, u8 *sa)
672{ 670{
673 struct fc_frame_header *fh; 671 struct fc_frame_header *fh;
@@ -715,32 +713,23 @@ static void fcoe_recv_flogi(struct fcoe_softc *fc, struct fc_frame *fp, u8 *sa)
715} 713}
716 714
717/** 715/**
718 * fcoe_watchdog - fcoe timer callback 716 * fcoe_watchdog() - fcoe timer callback
719 * @vp: 717 * @vp:
720 * 718 *
721 * This checks the pending queue length for fcoe and put fcoe to be paused state 719 * This checks the pending queue length for fcoe and set lport qfull
722 * if the FCOE_MAX_QUEUE_DEPTH is reached. This is done for all fc_lport on the 720 * if the FCOE_MAX_QUEUE_DEPTH is reached. This is done for all fc_lport on the
723 * fcoe_hostlist. 721 * fcoe_hostlist.
724 * 722 *
725 * Returns: 0 for success 723 * Returns: 0 for success
726 **/ 724 */
727void fcoe_watchdog(ulong vp) 725void fcoe_watchdog(ulong vp)
728{ 726{
729 struct fc_lport *lp;
730 struct fcoe_softc *fc; 727 struct fcoe_softc *fc;
731 int paused = 0;
732 728
733 read_lock(&fcoe_hostlist_lock); 729 read_lock(&fcoe_hostlist_lock);
734 list_for_each_entry(fc, &fcoe_hostlist, list) { 730 list_for_each_entry(fc, &fcoe_hostlist, list) {
735 lp = fc->lp; 731 if (fc->lp)
736 if (lp) { 732 fcoe_check_wait_queue(fc->lp);
737 if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH)
738 paused = 1;
739 if (fcoe_check_wait_queue(lp) < FCOE_MAX_QUEUE_DEPTH) {
740 if (paused)
741 fc_unpause(lp);
742 }
743 }
744 } 733 }
745 read_unlock(&fcoe_hostlist_lock); 734 read_unlock(&fcoe_hostlist_lock);
746 735
@@ -750,96 +739,64 @@ void fcoe_watchdog(ulong vp)
750 739
751 740
752/** 741/**
753 * fcoe_check_wait_queue - put the skb into fcoe pending xmit queue 742 * fcoe_check_wait_queue() - put the skb into fcoe pending xmit queue
754 * @lp: the fc_port for this skb 743 * @lp: the fc_port for this skb
755 * @skb: the associated skb to be xmitted 744 * @skb: the associated skb to be xmitted
756 * 745 *
757 * This empties the wait_queue, dequeue the head of the wait_queue queue 746 * This empties the wait_queue, dequeue the head of the wait_queue queue
758 * and calls fcoe_start_io() for each packet, if all skb have been 747 * and calls fcoe_start_io() for each packet, if all skb have been
759 * transmitted, return 0 if a error occurs, then restore wait_queue and 748 * transmitted, return qlen or -1 if a error occurs, then restore
760 * try again later. 749 * wait_queue and try again later.
761 * 750 *
762 * The wait_queue is used when the skb transmit fails. skb will go 751 * The wait_queue is used when the skb transmit fails. skb will go
763 * in the wait_queue which will be emptied by the time function OR 752 * in the wait_queue which will be emptied by the time function OR
764 * by the next skb transmit. 753 * by the next skb transmit.
765 * 754 *
766 * Returns: 0 for success 755 * Returns: 0 for success
767 **/ 756 */
768static int fcoe_check_wait_queue(struct fc_lport *lp) 757static int fcoe_check_wait_queue(struct fc_lport *lp)
769{ 758{
770 int rc, unpause = 0; 759 struct fcoe_softc *fc = lport_priv(lp);
771 int paused = 0;
772 struct sk_buff *skb; 760 struct sk_buff *skb;
773 struct fcoe_softc *fc; 761 int rc = -1;
774 762
775 fc = fcoe_softc(lp);
776 spin_lock_bh(&fc->fcoe_pending_queue.lock); 763 spin_lock_bh(&fc->fcoe_pending_queue.lock);
764 if (fc->fcoe_pending_queue_active)
765 goto out;
766 fc->fcoe_pending_queue_active = 1;
777 767
778 /* 768 while (fc->fcoe_pending_queue.qlen) {
779 * is this interface paused? 769 /* keep qlen > 0 until fcoe_start_io succeeds */
780 */ 770 fc->fcoe_pending_queue.qlen++;
781 if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH) 771 skb = __skb_dequeue(&fc->fcoe_pending_queue);
782 paused = 1;
783 if (fc->fcoe_pending_queue.qlen) {
784 while ((skb = __skb_dequeue(&fc->fcoe_pending_queue)) != NULL) {
785 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
786 rc = fcoe_start_io(skb);
787 if (rc) {
788 fcoe_insert_wait_queue_head(lp, skb);
789 return rc;
790 }
791 spin_lock_bh(&fc->fcoe_pending_queue.lock);
792 }
793 if (fc->fcoe_pending_queue.qlen < FCOE_MAX_QUEUE_DEPTH)
794 unpause = 1;
795 }
796 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
797 if ((unpause) && (paused))
798 fc_unpause(lp);
799 return fc->fcoe_pending_queue.qlen;
800}
801
802/**
803 * fcoe_insert_wait_queue_head - puts skb to fcoe pending queue head
804 * @lp: the fc_port for this skb
805 * @skb: the associated skb to be xmitted
806 *
807 * Returns: none
808 **/
809static void fcoe_insert_wait_queue_head(struct fc_lport *lp,
810 struct sk_buff *skb)
811{
812 struct fcoe_softc *fc;
813 772
814 fc = fcoe_softc(lp); 773 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
815 spin_lock_bh(&fc->fcoe_pending_queue.lock); 774 rc = fcoe_start_io(skb);
816 __skb_queue_head(&fc->fcoe_pending_queue, skb); 775 spin_lock_bh(&fc->fcoe_pending_queue.lock);
817 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
818}
819 776
820/** 777 if (rc) {
821 * fcoe_insert_wait_queue - put the skb into fcoe pending queue tail 778 __skb_queue_head(&fc->fcoe_pending_queue, skb);
822 * @lp: the fc_port for this skb 779 /* undo temporary increment above */
823 * @skb: the associated skb to be xmitted 780 fc->fcoe_pending_queue.qlen--;
824 * 781 break;
825 * Returns: none 782 }
826 **/ 783 /* undo temporary increment above */
827static void fcoe_insert_wait_queue(struct fc_lport *lp, 784 fc->fcoe_pending_queue.qlen--;
828 struct sk_buff *skb) 785 }
829{
830 struct fcoe_softc *fc;
831 786
832 fc = fcoe_softc(lp); 787 if (fc->fcoe_pending_queue.qlen < FCOE_LOW_QUEUE_DEPTH)
833 spin_lock_bh(&fc->fcoe_pending_queue.lock); 788 lp->qfull = 0;
834 __skb_queue_tail(&fc->fcoe_pending_queue, skb); 789 fc->fcoe_pending_queue_active = 0;
790 rc = fc->fcoe_pending_queue.qlen;
791out:
835 spin_unlock_bh(&fc->fcoe_pending_queue.lock); 792 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
793 return rc;
836} 794}
837 795
838/** 796/**
839 * fcoe_dev_setup - setup link change notification interface 797 * fcoe_dev_setup() - setup link change notification interface
840 * 798 */
841 **/ 799static void fcoe_dev_setup()
842static void fcoe_dev_setup(void)
843{ 800{
844 /* 801 /*
845 * here setup a interface specific wd time to 802 * here setup a interface specific wd time to
@@ -849,15 +806,15 @@ static void fcoe_dev_setup(void)
849} 806}
850 807
851/** 808/**
852 * fcoe_dev_setup - cleanup link change notification interface 809 * fcoe_dev_setup() - cleanup link change notification interface
853 **/ 810 */
854static void fcoe_dev_cleanup(void) 811static void fcoe_dev_cleanup(void)
855{ 812{
856 unregister_netdevice_notifier(&fcoe_notifier); 813 unregister_netdevice_notifier(&fcoe_notifier);
857} 814}
858 815
859/** 816/**
860 * fcoe_device_notification - netdev event notification callback 817 * fcoe_device_notification() - netdev event notification callback
861 * @notifier: context of the notification 818 * @notifier: context of the notification
862 * @event: type of event 819 * @event: type of event
863 * @ptr: fixed array for output parsed ifname 820 * @ptr: fixed array for output parsed ifname
@@ -865,7 +822,7 @@ static void fcoe_dev_cleanup(void)
865 * This function is called by the ethernet driver in case of link change event 822 * This function is called by the ethernet driver in case of link change event
866 * 823 *
867 * Returns: 0 for success 824 * Returns: 0 for success
868 **/ 825 */
869static int fcoe_device_notification(struct notifier_block *notifier, 826static int fcoe_device_notification(struct notifier_block *notifier,
870 ulong event, void *ptr) 827 ulong event, void *ptr)
871{ 828{
@@ -873,7 +830,7 @@ static int fcoe_device_notification(struct notifier_block *notifier,
873 struct net_device *real_dev = ptr; 830 struct net_device *real_dev = ptr;
874 struct fcoe_softc *fc; 831 struct fcoe_softc *fc;
875 struct fcoe_dev_stats *stats; 832 struct fcoe_dev_stats *stats;
876 u16 new_status; 833 u32 new_link_up;
877 u32 mfs; 834 u32 mfs;
878 int rc = NOTIFY_OK; 835 int rc = NOTIFY_OK;
879 836
@@ -890,17 +847,15 @@ static int fcoe_device_notification(struct notifier_block *notifier,
890 goto out; 847 goto out;
891 } 848 }
892 849
893 new_status = lp->link_status; 850 new_link_up = lp->link_up;
894 switch (event) { 851 switch (event) {
895 case NETDEV_DOWN: 852 case NETDEV_DOWN:
896 case NETDEV_GOING_DOWN: 853 case NETDEV_GOING_DOWN:
897 new_status &= ~FC_LINK_UP; 854 new_link_up = 0;
898 break; 855 break;
899 case NETDEV_UP: 856 case NETDEV_UP:
900 case NETDEV_CHANGE: 857 case NETDEV_CHANGE:
901 new_status &= ~FC_LINK_UP; 858 new_link_up = !fcoe_link_ok(lp);
902 if (!fcoe_link_ok(lp))
903 new_status |= FC_LINK_UP;
904 break; 859 break;
905 case NETDEV_CHANGEMTU: 860 case NETDEV_CHANGEMTU:
906 mfs = fc->real_dev->mtu - 861 mfs = fc->real_dev->mtu -
@@ -908,17 +863,15 @@ static int fcoe_device_notification(struct notifier_block *notifier,
908 sizeof(struct fcoe_crc_eof)); 863 sizeof(struct fcoe_crc_eof));
909 if (mfs >= FC_MIN_MAX_FRAME) 864 if (mfs >= FC_MIN_MAX_FRAME)
910 fc_set_mfs(lp, mfs); 865 fc_set_mfs(lp, mfs);
911 new_status &= ~FC_LINK_UP; 866 new_link_up = !fcoe_link_ok(lp);
912 if (!fcoe_link_ok(lp))
913 new_status |= FC_LINK_UP;
914 break; 867 break;
915 case NETDEV_REGISTER: 868 case NETDEV_REGISTER:
916 break; 869 break;
917 default: 870 default:
918 FC_DBG("unknown event %ld call", event); 871 FC_DBG("unknown event %ld call", event);
919 } 872 }
920 if (lp->link_status != new_status) { 873 if (lp->link_up != new_link_up) {
921 if ((new_status & FC_LINK_UP) == FC_LINK_UP) 874 if (new_link_up)
922 fc_linkup(lp); 875 fc_linkup(lp);
923 else { 876 else {
924 stats = lp->dev_stats[smp_processor_id()]; 877 stats = lp->dev_stats[smp_processor_id()];
@@ -933,12 +886,12 @@ out:
933} 886}
934 887
935/** 888/**
936 * fcoe_if_to_netdev - parse a name buffer to get netdev 889 * fcoe_if_to_netdev() - parse a name buffer to get netdev
937 * @ifname: fixed array for output parsed ifname 890 * @ifname: fixed array for output parsed ifname
938 * @buffer: incoming buffer to be copied 891 * @buffer: incoming buffer to be copied
939 * 892 *
940 * Returns: NULL or ptr to netdeive 893 * Returns: NULL or ptr to netdeive
941 **/ 894 */
942static struct net_device *fcoe_if_to_netdev(const char *buffer) 895static struct net_device *fcoe_if_to_netdev(const char *buffer)
943{ 896{
944 char *cp; 897 char *cp;
@@ -955,13 +908,13 @@ static struct net_device *fcoe_if_to_netdev(const char *buffer)
955} 908}
956 909
957/** 910/**
958 * fcoe_netdev_to_module_owner - finds out the nic drive moddule of the netdev 911 * fcoe_netdev_to_module_owner() - finds out the nic drive moddule of the netdev
959 * @netdev: the target netdev 912 * @netdev: the target netdev
960 * 913 *
961 * Returns: ptr to the struct module, NULL for failure 914 * Returns: ptr to the struct module, NULL for failure
962 **/ 915 */
963static struct module *fcoe_netdev_to_module_owner( 916static struct module *
964 const struct net_device *netdev) 917fcoe_netdev_to_module_owner(const struct net_device *netdev)
965{ 918{
966 struct device *dev; 919 struct device *dev;
967 920
@@ -979,12 +932,14 @@ static struct module *fcoe_netdev_to_module_owner(
979} 932}
980 933
981/** 934/**
982 * fcoe_ethdrv_get - holds the nic driver module by try_module_get() for 935 * fcoe_ethdrv_get() - Hold the Ethernet driver
983 * the corresponding netdev.
984 * @netdev: the target netdev 936 * @netdev: the target netdev
985 * 937 *
938 * Holds the Ethernet driver module by try_module_get() for
939 * the corresponding netdev.
940 *
986 * Returns: 0 for succsss 941 * Returns: 0 for succsss
987 **/ 942 */
988static int fcoe_ethdrv_get(const struct net_device *netdev) 943static int fcoe_ethdrv_get(const struct net_device *netdev)
989{ 944{
990 struct module *owner; 945 struct module *owner;
@@ -999,12 +954,14 @@ static int fcoe_ethdrv_get(const struct net_device *netdev)
999} 954}
1000 955
1001/** 956/**
1002 * fcoe_ethdrv_get - releases the nic driver module by module_put for 957 * fcoe_ethdrv_put() - Release the Ethernet driver
1003 * the corresponding netdev.
1004 * @netdev: the target netdev 958 * @netdev: the target netdev
1005 * 959 *
960 * Releases the Ethernet driver module by module_put for
961 * the corresponding netdev.
962 *
1006 * Returns: 0 for succsss 963 * Returns: 0 for succsss
1007 **/ 964 */
1008static int fcoe_ethdrv_put(const struct net_device *netdev) 965static int fcoe_ethdrv_put(const struct net_device *netdev)
1009{ 966{
1010 struct module *owner; 967 struct module *owner;
@@ -1020,12 +977,12 @@ static int fcoe_ethdrv_put(const struct net_device *netdev)
1020} 977}
1021 978
1022/** 979/**
1023 * fcoe_destroy- handles the destroy from sysfs 980 * fcoe_destroy() - handles the destroy from sysfs
1024 * @buffer: expcted to be a eth if name 981 * @buffer: expcted to be a eth if name
1025 * @kp: associated kernel param 982 * @kp: associated kernel param
1026 * 983 *
1027 * Returns: 0 for success 984 * Returns: 0 for success
1028 **/ 985 */
1029static int fcoe_destroy(const char *buffer, struct kernel_param *kp) 986static int fcoe_destroy(const char *buffer, struct kernel_param *kp)
1030{ 987{
1031 int rc; 988 int rc;
@@ -1058,12 +1015,12 @@ out_nodev:
1058} 1015}
1059 1016
1060/** 1017/**
1061 * fcoe_create - handles the create call from sysfs 1018 * fcoe_create() - Handles the create call from sysfs
1062 * @buffer: expcted to be a eth if name 1019 * @buffer: expcted to be a eth if name
1063 * @kp: associated kernel param 1020 * @kp: associated kernel param
1064 * 1021 *
1065 * Returns: 0 for success 1022 * Returns: 0 for success
1066 **/ 1023 */
1067static int fcoe_create(const char *buffer, struct kernel_param *kp) 1024static int fcoe_create(const char *buffer, struct kernel_param *kp)
1068{ 1025{
1069 int rc; 1026 int rc;
@@ -1104,8 +1061,8 @@ module_param_call(destroy, fcoe_destroy, NULL, NULL, S_IWUSR);
1104__MODULE_PARM_TYPE(destroy, "string"); 1061__MODULE_PARM_TYPE(destroy, "string");
1105MODULE_PARM_DESC(destroy, "Destroy fcoe port"); 1062MODULE_PARM_DESC(destroy, "Destroy fcoe port");
1106 1063
1107/* 1064/**
1108 * fcoe_link_ok - check if link is ok for the fc_lport 1065 * fcoe_link_ok() - Check if link is ok for the fc_lport
1109 * @lp: ptr to the fc_lport 1066 * @lp: ptr to the fc_lport
1110 * 1067 *
1111 * Any permanently-disqualifying conditions have been previously checked. 1068 * Any permanently-disqualifying conditions have been previously checked.
@@ -1120,7 +1077,7 @@ MODULE_PARM_DESC(destroy, "Destroy fcoe port");
1120 */ 1077 */
1121int fcoe_link_ok(struct fc_lport *lp) 1078int fcoe_link_ok(struct fc_lport *lp)
1122{ 1079{
1123 struct fcoe_softc *fc = fcoe_softc(lp); 1080 struct fcoe_softc *fc = lport_priv(lp);
1124 struct net_device *dev = fc->real_dev; 1081 struct net_device *dev = fc->real_dev;
1125 struct ethtool_cmd ecmd = { ETHTOOL_GSET }; 1082 struct ethtool_cmd ecmd = { ETHTOOL_GSET };
1126 int rc = 0; 1083 int rc = 0;
@@ -1149,9 +1106,8 @@ int fcoe_link_ok(struct fc_lport *lp)
1149} 1106}
1150EXPORT_SYMBOL_GPL(fcoe_link_ok); 1107EXPORT_SYMBOL_GPL(fcoe_link_ok);
1151 1108
1152/* 1109/**
1153 * fcoe_percpu_clean - frees skb of the corresponding lport from the per 1110 * fcoe_percpu_clean() - Clear the pending skbs for an lport
1154 * cpu queue.
1155 * @lp: the fc_lport 1111 * @lp: the fc_lport
1156 */ 1112 */
1157void fcoe_percpu_clean(struct fc_lport *lp) 1113void fcoe_percpu_clean(struct fc_lport *lp)
@@ -1185,11 +1141,11 @@ void fcoe_percpu_clean(struct fc_lport *lp)
1185EXPORT_SYMBOL_GPL(fcoe_percpu_clean); 1141EXPORT_SYMBOL_GPL(fcoe_percpu_clean);
1186 1142
1187/** 1143/**
1188 * fcoe_clean_pending_queue - dequeue skb and free it 1144 * fcoe_clean_pending_queue() - Dequeue a skb and free it
1189 * @lp: the corresponding fc_lport 1145 * @lp: the corresponding fc_lport
1190 * 1146 *
1191 * Returns: none 1147 * Returns: none
1192 **/ 1148 */
1193void fcoe_clean_pending_queue(struct fc_lport *lp) 1149void fcoe_clean_pending_queue(struct fc_lport *lp)
1194{ 1150{
1195 struct fcoe_softc *fc = lport_priv(lp); 1151 struct fcoe_softc *fc = lport_priv(lp);
@@ -1206,21 +1162,21 @@ void fcoe_clean_pending_queue(struct fc_lport *lp)
1206EXPORT_SYMBOL_GPL(fcoe_clean_pending_queue); 1162EXPORT_SYMBOL_GPL(fcoe_clean_pending_queue);
1207 1163
1208/** 1164/**
1209 * libfc_host_alloc - allocate a Scsi_Host with room for the fc_lport 1165 * libfc_host_alloc() - Allocate a Scsi_Host with room for the fc_lport
1210 * @sht: ptr to the scsi host templ 1166 * @sht: ptr to the scsi host templ
1211 * @priv_size: size of private data after fc_lport 1167 * @priv_size: size of private data after fc_lport
1212 * 1168 *
1213 * Returns: ptr to Scsi_Host 1169 * Returns: ptr to Scsi_Host
1214 * TODO - to libfc? 1170 * TODO: to libfc?
1215 */ 1171 */
1216static inline struct Scsi_Host *libfc_host_alloc( 1172static inline struct Scsi_Host *
1217 struct scsi_host_template *sht, int priv_size) 1173libfc_host_alloc(struct scsi_host_template *sht, int priv_size)
1218{ 1174{
1219 return scsi_host_alloc(sht, sizeof(struct fc_lport) + priv_size); 1175 return scsi_host_alloc(sht, sizeof(struct fc_lport) + priv_size);
1220} 1176}
1221 1177
1222/** 1178/**
1223 * fcoe_host_alloc - allocate a Scsi_Host with room for the fcoe_softc 1179 * fcoe_host_alloc() - Allocate a Scsi_Host with room for the fcoe_softc
1224 * @sht: ptr to the scsi host templ 1180 * @sht: ptr to the scsi host templ
1225 * @priv_size: size of private data after fc_lport 1181 * @priv_size: size of private data after fc_lport
1226 * 1182 *
@@ -1232,8 +1188,8 @@ struct Scsi_Host *fcoe_host_alloc(struct scsi_host_template *sht, int priv_size)
1232} 1188}
1233EXPORT_SYMBOL_GPL(fcoe_host_alloc); 1189EXPORT_SYMBOL_GPL(fcoe_host_alloc);
1234 1190
1235/* 1191/**
1236 * fcoe_reset - resets the fcoe 1192 * fcoe_reset() - Resets the fcoe
1237 * @shost: shost the reset is from 1193 * @shost: shost the reset is from
1238 * 1194 *
1239 * Returns: always 0 1195 * Returns: always 0
@@ -1246,8 +1202,8 @@ int fcoe_reset(struct Scsi_Host *shost)
1246} 1202}
1247EXPORT_SYMBOL_GPL(fcoe_reset); 1203EXPORT_SYMBOL_GPL(fcoe_reset);
1248 1204
1249/* 1205/**
1250 * fcoe_wwn_from_mac - converts 48-bit IEEE MAC address to 64-bit FC WWN. 1206 * fcoe_wwn_from_mac() - Converts 48-bit IEEE MAC address to 64-bit FC WWN.
1251 * @mac: mac address 1207 * @mac: mac address
1252 * @scheme: check port 1208 * @scheme: check port
1253 * @port: port indicator for converting 1209 * @port: port indicator for converting
@@ -1286,14 +1242,15 @@ u64 fcoe_wwn_from_mac(unsigned char mac[MAX_ADDR_LEN],
1286 return wwn; 1242 return wwn;
1287} 1243}
1288EXPORT_SYMBOL_GPL(fcoe_wwn_from_mac); 1244EXPORT_SYMBOL_GPL(fcoe_wwn_from_mac);
1289/* 1245
1290 * fcoe_hostlist_lookup_softc - find the corresponding lport by a given device 1246/**
1247 * fcoe_hostlist_lookup_softc() - find the corresponding lport by a given device
1291 * @device: this is currently ptr to net_device 1248 * @device: this is currently ptr to net_device
1292 * 1249 *
1293 * Returns: NULL or the located fcoe_softc 1250 * Returns: NULL or the located fcoe_softc
1294 */ 1251 */
1295static struct fcoe_softc *fcoe_hostlist_lookup_softc( 1252static struct fcoe_softc *
1296 const struct net_device *dev) 1253fcoe_hostlist_lookup_softc(const struct net_device *dev)
1297{ 1254{
1298 struct fcoe_softc *fc; 1255 struct fcoe_softc *fc;
1299 1256
@@ -1308,8 +1265,8 @@ static struct fcoe_softc *fcoe_hostlist_lookup_softc(
1308 return NULL; 1265 return NULL;
1309} 1266}
1310 1267
1311/* 1268/**
1312 * fcoe_hostlist_lookup - find the corresponding lport by netdev 1269 * fcoe_hostlist_lookup() - Find the corresponding lport by netdev
1313 * @netdev: ptr to net_device 1270 * @netdev: ptr to net_device
1314 * 1271 *
1315 * Returns: 0 for success 1272 * Returns: 0 for success
@@ -1324,8 +1281,8 @@ struct fc_lport *fcoe_hostlist_lookup(const struct net_device *netdev)
1324} 1281}
1325EXPORT_SYMBOL_GPL(fcoe_hostlist_lookup); 1282EXPORT_SYMBOL_GPL(fcoe_hostlist_lookup);
1326 1283
1327/* 1284/**
1328 * fcoe_hostlist_add - add a lport to lports list 1285 * fcoe_hostlist_add() - Add a lport to lports list
1329 * @lp: ptr to the fc_lport to badded 1286 * @lp: ptr to the fc_lport to badded
1330 * 1287 *
1331 * Returns: 0 for success 1288 * Returns: 0 for success
@@ -1336,7 +1293,7 @@ int fcoe_hostlist_add(const struct fc_lport *lp)
1336 1293
1337 fc = fcoe_hostlist_lookup_softc(fcoe_netdev(lp)); 1294 fc = fcoe_hostlist_lookup_softc(fcoe_netdev(lp));
1338 if (!fc) { 1295 if (!fc) {
1339 fc = fcoe_softc(lp); 1296 fc = lport_priv(lp);
1340 write_lock_bh(&fcoe_hostlist_lock); 1297 write_lock_bh(&fcoe_hostlist_lock);
1341 list_add_tail(&fc->list, &fcoe_hostlist); 1298 list_add_tail(&fc->list, &fcoe_hostlist);
1342 write_unlock_bh(&fcoe_hostlist_lock); 1299 write_unlock_bh(&fcoe_hostlist_lock);
@@ -1345,8 +1302,8 @@ int fcoe_hostlist_add(const struct fc_lport *lp)
1345} 1302}
1346EXPORT_SYMBOL_GPL(fcoe_hostlist_add); 1303EXPORT_SYMBOL_GPL(fcoe_hostlist_add);
1347 1304
1348/* 1305/**
1349 * fcoe_hostlist_remove - remove a lport from lports list 1306 * fcoe_hostlist_remove() - remove a lport from lports list
1350 * @lp: ptr to the fc_lport to badded 1307 * @lp: ptr to the fc_lport to badded
1351 * 1308 *
1352 * Returns: 0 for success 1309 * Returns: 0 for success
@@ -1366,12 +1323,12 @@ int fcoe_hostlist_remove(const struct fc_lport *lp)
1366EXPORT_SYMBOL_GPL(fcoe_hostlist_remove); 1323EXPORT_SYMBOL_GPL(fcoe_hostlist_remove);
1367 1324
1368/** 1325/**
1369 * fcoe_libfc_config - sets up libfc related properties for lport 1326 * fcoe_libfc_config() - sets up libfc related properties for lport
1370 * @lp: ptr to the fc_lport 1327 * @lp: ptr to the fc_lport
1371 * @tt: libfc function template 1328 * @tt: libfc function template
1372 * 1329 *
1373 * Returns : 0 for success 1330 * Returns : 0 for success
1374 **/ 1331 */
1375int fcoe_libfc_config(struct fc_lport *lp, struct libfc_function_template *tt) 1332int fcoe_libfc_config(struct fc_lport *lp, struct libfc_function_template *tt)
1376{ 1333{
1377 /* Set the function pointers set by the LLDD */ 1334 /* Set the function pointers set by the LLDD */
@@ -1389,14 +1346,14 @@ int fcoe_libfc_config(struct fc_lport *lp, struct libfc_function_template *tt)
1389EXPORT_SYMBOL_GPL(fcoe_libfc_config); 1346EXPORT_SYMBOL_GPL(fcoe_libfc_config);
1390 1347
1391/** 1348/**
1392 * fcoe_init - fcoe module loading initialization 1349 * fcoe_init() - fcoe module loading initialization
1393 * 1350 *
1394 * Initialization routine 1351 * Initialization routine
1395 * 1. Will create fc transport software structure 1352 * 1. Will create fc transport software structure
1396 * 2. initialize the link list of port information structure 1353 * 2. initialize the link list of port information structure
1397 * 1354 *
1398 * Returns 0 on success, negative on failure 1355 * Returns 0 on success, negative on failure
1399 **/ 1356 */
1400static int __init fcoe_init(void) 1357static int __init fcoe_init(void)
1401{ 1358{
1402 int cpu; 1359 int cpu;
@@ -1433,7 +1390,6 @@ static int __init fcoe_init(void)
1433 } else { 1390 } else {
1434 fcoe_percpu[cpu] = NULL; 1391 fcoe_percpu[cpu] = NULL;
1435 kfree(p); 1392 kfree(p);
1436
1437 } 1393 }
1438 } 1394 }
1439 } 1395 }
@@ -1443,11 +1399,9 @@ static int __init fcoe_init(void)
1443 */ 1399 */
1444 fcoe_dev_setup(); 1400 fcoe_dev_setup();
1445 1401
1446 init_timer(&fcoe_timer); 1402 setup_timer(&fcoe_timer, fcoe_watchdog, 0);
1447 fcoe_timer.data = 0; 1403
1448 fcoe_timer.function = fcoe_watchdog; 1404 mod_timer(&fcoe_timer, jiffies + (10 * HZ));
1449 fcoe_timer.expires = (jiffies + (10 * HZ));
1450 add_timer(&fcoe_timer);
1451 1405
1452 /* initiatlize the fcoe transport */ 1406 /* initiatlize the fcoe transport */
1453 fcoe_transport_init(); 1407 fcoe_transport_init();
@@ -1459,10 +1413,10 @@ static int __init fcoe_init(void)
1459module_init(fcoe_init); 1413module_init(fcoe_init);
1460 1414
1461/** 1415/**
1462 * fcoe_exit - fcoe module unloading cleanup 1416 * fcoe_exit() - fcoe module unloading cleanup
1463 * 1417 *
1464 * Returns 0 on success, negative on failure 1418 * Returns 0 on success, negative on failure
1465 **/ 1419 */
1466static void __exit fcoe_exit(void) 1420static void __exit fcoe_exit(void)
1467{ 1421{
1468 u32 idx; 1422 u32 idx;
@@ -1483,7 +1437,7 @@ static void __exit fcoe_exit(void)
1483 */ 1437 */
1484 del_timer_sync(&fcoe_timer); 1438 del_timer_sync(&fcoe_timer);
1485 1439
1486 /* releases the assocaited fcoe transport for each lport */ 1440 /* releases the associated fcoe transport for each lport */
1487 list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list) 1441 list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list)
1488 fcoe_transport_release(fc->real_dev); 1442 fcoe_transport_release(fc->real_dev);
1489 1443
diff --git a/drivers/scsi/lasi700.c b/drivers/scsi/lasi700.c
index 4a4e6954ec79..f23c4ca9a2ee 100644
--- a/drivers/scsi/lasi700.c
+++ b/drivers/scsi/lasi700.c
@@ -103,7 +103,7 @@ lasi700_probe(struct parisc_device *dev)
103 103
104 hostdata = kzalloc(sizeof(*hostdata), GFP_KERNEL); 104 hostdata = kzalloc(sizeof(*hostdata), GFP_KERNEL);
105 if (!hostdata) { 105 if (!hostdata) {
106 dev_printk(KERN_ERR, dev, "Failed to allocate host data\n"); 106 dev_printk(KERN_ERR, &dev->dev, "Failed to allocate host data\n");
107 return -ENOMEM; 107 return -ENOMEM;
108 } 108 }
109 109
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
index dd1564c9e04a..e57556ea5b48 100644
--- a/drivers/scsi/libfc/fc_disc.c
+++ b/drivers/scsi/libfc/fc_disc.c
@@ -64,7 +64,7 @@ static void fc_disc_single(struct fc_disc *, struct fc_disc_port *);
64static void fc_disc_restart(struct fc_disc *); 64static void fc_disc_restart(struct fc_disc *);
65 65
66/** 66/**
67 * fc_disc_lookup_rport - lookup a remote port by port_id 67 * fc_disc_lookup_rport() - lookup a remote port by port_id
68 * @lport: Fibre Channel host port instance 68 * @lport: Fibre Channel host port instance
69 * @port_id: remote port port_id to match 69 * @port_id: remote port port_id to match
70 */ 70 */
@@ -92,7 +92,7 @@ struct fc_rport *fc_disc_lookup_rport(const struct fc_lport *lport,
92} 92}
93 93
94/** 94/**
95 * fc_disc_stop_rports - delete all the remote ports associated with the lport 95 * fc_disc_stop_rports() - delete all the remote ports associated with the lport
96 * @disc: The discovery job to stop rports on 96 * @disc: The discovery job to stop rports on
97 * 97 *
98 * Locking Note: This function expects that the lport mutex is locked before 98 * Locking Note: This function expects that the lport mutex is locked before
@@ -117,7 +117,7 @@ void fc_disc_stop_rports(struct fc_disc *disc)
117} 117}
118 118
119/** 119/**
120 * fc_disc_rport_callback - Event handler for rport events 120 * fc_disc_rport_callback() - Event handler for rport events
121 * @lport: The lport which is receiving the event 121 * @lport: The lport which is receiving the event
122 * @rport: The rport which the event has occured on 122 * @rport: The rport which the event has occured on
123 * @event: The event that occured 123 * @event: The event that occured
@@ -151,7 +151,7 @@ static void fc_disc_rport_callback(struct fc_lport *lport,
151} 151}
152 152
153/** 153/**
154 * fc_disc_recv_rscn_req - Handle Registered State Change Notification (RSCN) 154 * fc_disc_recv_rscn_req() - Handle Registered State Change Notification (RSCN)
155 * @sp: Current sequence of the RSCN exchange 155 * @sp: Current sequence of the RSCN exchange
156 * @fp: RSCN Frame 156 * @fp: RSCN Frame
157 * @lport: Fibre Channel host port instance 157 * @lport: Fibre Channel host port instance
@@ -246,7 +246,7 @@ static void fc_disc_recv_rscn_req(struct fc_seq *sp, struct fc_frame *fp,
246 list_del(&dp->peers); 246 list_del(&dp->peers);
247 rport = lport->tt.rport_lookup(lport, dp->ids.port_id); 247 rport = lport->tt.rport_lookup(lport, dp->ids.port_id);
248 if (rport) { 248 if (rport) {
249 rdata = RPORT_TO_PRIV(rport); 249 rdata = rport->dd_data;
250 list_del(&rdata->peers); 250 list_del(&rdata->peers);
251 lport->tt.rport_logoff(rport); 251 lport->tt.rport_logoff(rport);
252 } 252 }
@@ -265,7 +265,7 @@ reject:
265} 265}
266 266
267/** 267/**
268 * fc_disc_recv_req - Handle incoming requests 268 * fc_disc_recv_req() - Handle incoming requests
269 * @sp: Current sequence of the request exchange 269 * @sp: Current sequence of the request exchange
270 * @fp: The frame 270 * @fp: The frame
271 * @lport: The FC local port 271 * @lport: The FC local port
@@ -294,7 +294,7 @@ static void fc_disc_recv_req(struct fc_seq *sp, struct fc_frame *fp,
294} 294}
295 295
296/** 296/**
297 * fc_disc_restart - Restart discovery 297 * fc_disc_restart() - Restart discovery
298 * @lport: FC discovery context 298 * @lport: FC discovery context
299 * 299 *
300 * Locking Note: This function expects that the disc mutex 300 * Locking Note: This function expects that the disc mutex
@@ -322,7 +322,7 @@ static void fc_disc_restart(struct fc_disc *disc)
322} 322}
323 323
324/** 324/**
325 * fc_disc_start - Fibre Channel Target discovery 325 * fc_disc_start() - Fibre Channel Target discovery
326 * @lport: FC local port 326 * @lport: FC local port
327 * 327 *
328 * Returns non-zero if discovery cannot be started. 328 * Returns non-zero if discovery cannot be started.
@@ -383,7 +383,7 @@ static struct fc_rport_operations fc_disc_rport_ops = {
383}; 383};
384 384
385/** 385/**
386 * fc_disc_new_target - Handle new target found by discovery 386 * fc_disc_new_target() - Handle new target found by discovery
387 * @lport: FC local port 387 * @lport: FC local port
388 * @rport: The previous FC remote port (NULL if new remote port) 388 * @rport: The previous FC remote port (NULL if new remote port)
389 * @ids: Identifiers for the new FC remote port 389 * @ids: Identifiers for the new FC remote port
@@ -396,7 +396,7 @@ static int fc_disc_new_target(struct fc_disc *disc,
396 struct fc_rport_identifiers *ids) 396 struct fc_rport_identifiers *ids)
397{ 397{
398 struct fc_lport *lport = disc->lport; 398 struct fc_lport *lport = disc->lport;
399 struct fc_rport_libfc_priv *rp; 399 struct fc_rport_libfc_priv *rdata;
400 int error = 0; 400 int error = 0;
401 401
402 if (rport && ids->port_name) { 402 if (rport && ids->port_name) {
@@ -430,15 +430,15 @@ static int fc_disc_new_target(struct fc_disc *disc,
430 dp.ids.port_name = ids->port_name; 430 dp.ids.port_name = ids->port_name;
431 dp.ids.node_name = ids->node_name; 431 dp.ids.node_name = ids->node_name;
432 dp.ids.roles = ids->roles; 432 dp.ids.roles = ids->roles;
433 rport = fc_rport_rogue_create(&dp); 433 rport = lport->tt.rport_create(&dp);
434 } 434 }
435 if (!rport) 435 if (!rport)
436 error = -ENOMEM; 436 error = -ENOMEM;
437 } 437 }
438 if (rport) { 438 if (rport) {
439 rp = rport->dd_data; 439 rdata = rport->dd_data;
440 rp->ops = &fc_disc_rport_ops; 440 rdata->ops = &fc_disc_rport_ops;
441 rp->rp_state = RPORT_ST_INIT; 441 rdata->rp_state = RPORT_ST_INIT;
442 lport->tt.rport_login(rport); 442 lport->tt.rport_login(rport);
443 } 443 }
444 } 444 }
@@ -446,20 +446,20 @@ static int fc_disc_new_target(struct fc_disc *disc,
446} 446}
447 447
448/** 448/**
449 * fc_disc_del_target - Delete a target 449 * fc_disc_del_target() - Delete a target
450 * @disc: FC discovery context 450 * @disc: FC discovery context
451 * @rport: The remote port to be removed 451 * @rport: The remote port to be removed
452 */ 452 */
453static void fc_disc_del_target(struct fc_disc *disc, struct fc_rport *rport) 453static void fc_disc_del_target(struct fc_disc *disc, struct fc_rport *rport)
454{ 454{
455 struct fc_lport *lport = disc->lport; 455 struct fc_lport *lport = disc->lport;
456 struct fc_rport_libfc_priv *rdata = RPORT_TO_PRIV(rport); 456 struct fc_rport_libfc_priv *rdata = rport->dd_data;
457 list_del(&rdata->peers); 457 list_del(&rdata->peers);
458 lport->tt.rport_logoff(rport); 458 lport->tt.rport_logoff(rport);
459} 459}
460 460
461/** 461/**
462 * fc_disc_done - Discovery has been completed 462 * fc_disc_done() - Discovery has been completed
463 * @disc: FC discovery context 463 * @disc: FC discovery context
464 */ 464 */
465static void fc_disc_done(struct fc_disc *disc) 465static void fc_disc_done(struct fc_disc *disc)
@@ -479,7 +479,7 @@ static void fc_disc_done(struct fc_disc *disc)
479} 479}
480 480
481/** 481/**
482 * fc_disc_error - Handle error on dNS request 482 * fc_disc_error() - Handle error on dNS request
483 * @disc: FC discovery context 483 * @disc: FC discovery context
484 * @fp: The frame pointer 484 * @fp: The frame pointer
485 */ 485 */
@@ -519,7 +519,7 @@ static void fc_disc_error(struct fc_disc *disc, struct fc_frame *fp)
519} 519}
520 520
521/** 521/**
522 * fc_disc_gpn_ft_req - Send Get Port Names by FC-4 type (GPN_FT) request 522 * fc_disc_gpn_ft_req() - Send Get Port Names by FC-4 type (GPN_FT) request
523 * @lport: FC discovery context 523 * @lport: FC discovery context
524 * 524 *
525 * Locking Note: This function expects that the disc_mutex is locked 525 * Locking Note: This function expects that the disc_mutex is locked
@@ -553,7 +553,7 @@ err:
553} 553}
554 554
555/** 555/**
556 * fc_disc_gpn_ft_parse - Parse the list of IDs and names resulting from a request 556 * fc_disc_gpn_ft_parse() - Parse the list of IDs and names resulting from a request
557 * @lport: Fibre Channel host port instance 557 * @lport: Fibre Channel host port instance
558 * @buf: GPN_FT response buffer 558 * @buf: GPN_FT response buffer
559 * @len: size of response buffer 559 * @len: size of response buffer
@@ -617,7 +617,7 @@ static int fc_disc_gpn_ft_parse(struct fc_disc *disc, void *buf, size_t len)
617 617
618 if ((dp.ids.port_id != fc_host_port_id(lport->host)) && 618 if ((dp.ids.port_id != fc_host_port_id(lport->host)) &&
619 (dp.ids.port_name != lport->wwpn)) { 619 (dp.ids.port_name != lport->wwpn)) {
620 rport = fc_rport_rogue_create(&dp); 620 rport = lport->tt.rport_create(&dp);
621 if (rport) { 621 if (rport) {
622 rdata = rport->dd_data; 622 rdata = rport->dd_data;
623 rdata->ops = &fc_disc_rport_ops; 623 rdata->ops = &fc_disc_rport_ops;
@@ -658,7 +658,10 @@ static int fc_disc_gpn_ft_parse(struct fc_disc *disc, void *buf, size_t len)
658 return error; 658 return error;
659} 659}
660 660
661/* 661/**
662 * fc_disc_timeout() - Retry handler for the disc component
663 * @work: Structure holding disc obj that needs retry discovery
664 *
662 * Handle retry of memory allocation for remote ports. 665 * Handle retry of memory allocation for remote ports.
663 */ 666 */
664static void fc_disc_timeout(struct work_struct *work) 667static void fc_disc_timeout(struct work_struct *work)
@@ -673,7 +676,7 @@ static void fc_disc_timeout(struct work_struct *work)
673} 676}
674 677
675/** 678/**
676 * fc_disc_gpn_ft_resp - Handle a response frame from Get Port Names (GPN_FT) 679 * fc_disc_gpn_ft_resp() - Handle a response frame from Get Port Names (GPN_FT)
677 * @sp: Current sequence of GPN_FT exchange 680 * @sp: Current sequence of GPN_FT exchange
678 * @fp: response frame 681 * @fp: response frame
679 * @lp_arg: Fibre Channel host port instance 682 * @lp_arg: Fibre Channel host port instance
@@ -712,9 +715,7 @@ static void fc_disc_gpn_ft_resp(struct fc_seq *sp, struct fc_frame *fp,
712 fr_len(fp)); 715 fr_len(fp));
713 } else if (ntohs(cp->ct_cmd) == FC_FS_ACC) { 716 } else if (ntohs(cp->ct_cmd) == FC_FS_ACC) {
714 717
715 /* 718 /* Accepted, parse the response. */
716 * Accepted. Parse response.
717 */
718 buf = cp + 1; 719 buf = cp + 1;
719 len -= sizeof(*cp); 720 len -= sizeof(*cp);
720 } else if (ntohs(cp->ct_cmd) == FC_FS_RJT) { 721 } else if (ntohs(cp->ct_cmd) == FC_FS_RJT) {
@@ -746,7 +747,7 @@ static void fc_disc_gpn_ft_resp(struct fc_seq *sp, struct fc_frame *fp,
746} 747}
747 748
748/** 749/**
749 * fc_disc_single - Discover the directory information for a single target 750 * fc_disc_single() - Discover the directory information for a single target
750 * @lport: FC local port 751 * @lport: FC local port
751 * @dp: The port to rediscover 752 * @dp: The port to rediscover
752 * 753 *
@@ -769,7 +770,7 @@ static void fc_disc_single(struct fc_disc *disc, struct fc_disc_port *dp)
769 if (rport) 770 if (rport)
770 fc_disc_del_target(disc, rport); 771 fc_disc_del_target(disc, rport);
771 772
772 new_rport = fc_rport_rogue_create(dp); 773 new_rport = lport->tt.rport_create(dp);
773 if (new_rport) { 774 if (new_rport) {
774 rdata = new_rport->dd_data; 775 rdata = new_rport->dd_data;
775 rdata->ops = &fc_disc_rport_ops; 776 rdata->ops = &fc_disc_rport_ops;
@@ -782,7 +783,7 @@ out:
782} 783}
783 784
784/** 785/**
785 * fc_disc_stop - Stop discovery for a given lport 786 * fc_disc_stop() - Stop discovery for a given lport
786 * @lport: The lport that discovery should stop for 787 * @lport: The lport that discovery should stop for
787 */ 788 */
788void fc_disc_stop(struct fc_lport *lport) 789void fc_disc_stop(struct fc_lport *lport)
@@ -796,7 +797,7 @@ void fc_disc_stop(struct fc_lport *lport)
796} 797}
797 798
798/** 799/**
799 * fc_disc_stop_final - Stop discovery for a given lport 800 * fc_disc_stop_final() - Stop discovery for a given lport
800 * @lport: The lport that discovery should stop for 801 * @lport: The lport that discovery should stop for
801 * 802 *
802 * This function will block until discovery has been 803 * This function will block until discovery has been
@@ -809,7 +810,7 @@ void fc_disc_stop_final(struct fc_lport *lport)
809} 810}
810 811
811/** 812/**
812 * fc_disc_init - Initialize the discovery block 813 * fc_disc_init() - Initialize the discovery block
813 * @lport: FC local port 814 * @lport: FC local port
814 */ 815 */
815int fc_disc_init(struct fc_lport *lport) 816int fc_disc_init(struct fc_lport *lport)
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index 66db08a5f27f..505825b6124d 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -32,8 +32,6 @@
32#include <scsi/libfc.h> 32#include <scsi/libfc.h>
33#include <scsi/fc_encode.h> 33#include <scsi/fc_encode.h>
34 34
35#define FC_DEF_R_A_TOV (10 * 1000) /* resource allocation timeout */
36
37/* 35/*
38 * fc_exch_debug can be set in debugger or at compile time to get more logs. 36 * fc_exch_debug can be set in debugger or at compile time to get more logs.
39 */ 37 */
@@ -627,7 +625,6 @@ static struct fc_exch *fc_exch_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
627{ 625{
628 struct fc_exch *ep; 626 struct fc_exch *ep;
629 struct fc_frame_header *fh; 627 struct fc_frame_header *fh;
630 u16 rxid;
631 628
632 ep = mp->lp->tt.exch_get(mp->lp, fp); 629 ep = mp->lp->tt.exch_get(mp->lp, fp);
633 if (ep) { 630 if (ep) {
@@ -654,18 +651,6 @@ static struct fc_exch *fc_exch_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
654 if ((ntoh24(fh->fh_f_ctl) & FC_FC_SEQ_INIT) == 0) 651 if ((ntoh24(fh->fh_f_ctl) & FC_FC_SEQ_INIT) == 0)
655 ep->esb_stat &= ~ESB_ST_SEQ_INIT; 652 ep->esb_stat &= ~ESB_ST_SEQ_INIT;
656 653
657 /*
658 * Set the responder ID in the frame header.
659 * The old one should've been 0xffff.
660 * If it isn't, don't assign one.
661 * Incoming basic link service frames may specify
662 * a referenced RX_ID.
663 */
664 if (fh->fh_type != FC_TYPE_BLS) {
665 rxid = ntohs(fh->fh_rx_id);
666 WARN_ON(rxid != FC_XID_UNKNOWN);
667 fh->fh_rx_id = htons(ep->rxid);
668 }
669 fc_exch_hold(ep); /* hold for caller */ 654 fc_exch_hold(ep); /* hold for caller */
670 spin_unlock_bh(&ep->ex_lock); /* lock from exch_get */ 655 spin_unlock_bh(&ep->ex_lock); /* lock from exch_get */
671 } 656 }
@@ -677,8 +662,8 @@ static struct fc_exch *fc_exch_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
677 * If fc_pf_rjt_reason is FC_RJT_NONE then this function will have a hold 662 * If fc_pf_rjt_reason is FC_RJT_NONE then this function will have a hold
678 * on the ep that should be released by the caller. 663 * on the ep that should be released by the caller.
679 */ 664 */
680static enum fc_pf_rjt_reason 665static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_exch_mgr *mp,
681fc_seq_lookup_recip(struct fc_exch_mgr *mp, struct fc_frame *fp) 666 struct fc_frame *fp)
682{ 667{
683 struct fc_frame_header *fh = fc_frame_header_get(fp); 668 struct fc_frame_header *fh = fc_frame_header_get(fp);
684 struct fc_exch *ep = NULL; 669 struct fc_exch *ep = NULL;
@@ -996,9 +981,9 @@ static void fc_seq_send_ack(struct fc_seq *sp, const struct fc_frame *rx_fp)
996 * Send BLS Reject. 981 * Send BLS Reject.
997 * This is for rejecting BA_ABTS only. 982 * This is for rejecting BA_ABTS only.
998 */ 983 */
999static void 984static void fc_exch_send_ba_rjt(struct fc_frame *rx_fp,
1000fc_exch_send_ba_rjt(struct fc_frame *rx_fp, enum fc_ba_rjt_reason reason, 985 enum fc_ba_rjt_reason reason,
1001 enum fc_ba_rjt_explan explan) 986 enum fc_ba_rjt_explan explan)
1002{ 987{
1003 struct fc_frame *fp; 988 struct fc_frame *fp;
1004 struct fc_frame_header *rx_fh; 989 struct fc_frame_header *rx_fh;
@@ -1096,7 +1081,7 @@ static void fc_exch_recv_abts(struct fc_exch *ep, struct fc_frame *rx_fp)
1096 ap->ba_high_seq_cnt = fh->fh_seq_cnt; 1081 ap->ba_high_seq_cnt = fh->fh_seq_cnt;
1097 ap->ba_low_seq_cnt = htons(sp->cnt); 1082 ap->ba_low_seq_cnt = htons(sp->cnt);
1098 } 1083 }
1099 sp = fc_seq_start_next(sp); 1084 sp = fc_seq_start_next_locked(sp);
1100 spin_unlock_bh(&ep->ex_lock); 1085 spin_unlock_bh(&ep->ex_lock);
1101 fc_seq_send_last(sp, fp, FC_RCTL_BA_ACC, FC_TYPE_BLS); 1086 fc_seq_send_last(sp, fp, FC_RCTL_BA_ACC, FC_TYPE_BLS);
1102 fc_frame_free(rx_fp); 1087 fc_frame_free(rx_fp);
@@ -1480,10 +1465,11 @@ static void fc_exch_reset(struct fc_exch *ep)
1480 * If sid is non-zero, reset only exchanges we source from that FID. 1465 * If sid is non-zero, reset only exchanges we source from that FID.
1481 * If did is non-zero, reset only exchanges destined to that FID. 1466 * If did is non-zero, reset only exchanges destined to that FID.
1482 */ 1467 */
1483void fc_exch_mgr_reset(struct fc_exch_mgr *mp, u32 sid, u32 did) 1468void fc_exch_mgr_reset(struct fc_lport *lp, u32 sid, u32 did)
1484{ 1469{
1485 struct fc_exch *ep; 1470 struct fc_exch *ep;
1486 struct fc_exch *next; 1471 struct fc_exch *next;
1472 struct fc_exch_mgr *mp = lp->emp;
1487 1473
1488 spin_lock_bh(&mp->em_lock); 1474 spin_lock_bh(&mp->em_lock);
1489restart: 1475restart:
@@ -1607,7 +1593,7 @@ static void fc_exch_rrq_resp(struct fc_seq *sp, struct fc_frame *fp, void *arg)
1607 if (IS_ERR(fp)) { 1593 if (IS_ERR(fp)) {
1608 int err = PTR_ERR(fp); 1594 int err = PTR_ERR(fp);
1609 1595
1610 if (err == -FC_EX_CLOSED) 1596 if (err == -FC_EX_CLOSED || err == -FC_EX_TIMEOUT)
1611 goto cleanup; 1597 goto cleanup;
1612 FC_DBG("Cannot process RRQ, because of frame error %d\n", err); 1598 FC_DBG("Cannot process RRQ, because of frame error %d\n", err);
1613 return; 1599 return;
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 404e63ff46b8..2a631d7dbcec 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -161,7 +161,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lp, gfp_t gfp)
161} 161}
162 162
163/** 163/**
164 * fc_fcp_pkt_release - release hold on scsi_pkt packet 164 * fc_fcp_pkt_release() - release hold on scsi_pkt packet
165 * @fsp: fcp packet struct 165 * @fsp: fcp packet struct
166 * 166 *
167 * This is used by upper layer scsi driver. 167 * This is used by upper layer scsi driver.
@@ -183,8 +183,7 @@ static void fc_fcp_pkt_hold(struct fc_fcp_pkt *fsp)
183} 183}
184 184
185/** 185/**
186 * fc_fcp_pkt_destory - release hold on scsi_pkt packet 186 * fc_fcp_pkt_destory() - release hold on scsi_pkt packet
187 *
188 * @seq: exchange sequence 187 * @seq: exchange sequence
189 * @fsp: fcp packet struct 188 * @fsp: fcp packet struct
190 * 189 *
@@ -199,7 +198,7 @@ static void fc_fcp_pkt_destroy(struct fc_seq *seq, void *fsp)
199} 198}
200 199
201/** 200/**
202 * fc_fcp_lock_pkt - lock a packet and get a ref to it. 201 * fc_fcp_lock_pkt() - lock a packet and get a ref to it.
203 * @fsp: fcp packet 202 * @fsp: fcp packet
204 * 203 *
205 * We should only return error if we return a command to scsi-ml before 204 * We should only return error if we return a command to scsi-ml before
@@ -291,9 +290,7 @@ static void fc_fcp_recv_data(struct fc_fcp_pkt *fsp, struct fc_frame *fp)
291 buf = fc_frame_payload_get(fp, 0); 290 buf = fc_frame_payload_get(fp, 0);
292 291
293 if (offset + len > fsp->data_len) { 292 if (offset + len > fsp->data_len) {
294 /* 293 /* this should never happen */
295 * this should never happen
296 */
297 if ((fr_flags(fp) & FCPHF_CRC_UNCHECKED) && 294 if ((fr_flags(fp) & FCPHF_CRC_UNCHECKED) &&
298 fc_frame_crc_check(fp)) 295 fc_frame_crc_check(fp))
299 goto crc_err; 296 goto crc_err;
@@ -387,8 +384,8 @@ crc_err:
387 fc_fcp_complete_locked(fsp); 384 fc_fcp_complete_locked(fsp);
388} 385}
389 386
390/* 387/**
391 * fc_fcp_send_data - Send SCSI data to target. 388 * fc_fcp_send_data() - Send SCSI data to target.
392 * @fsp: ptr to fc_fcp_pkt 389 * @fsp: ptr to fc_fcp_pkt
393 * @sp: ptr to this sequence 390 * @sp: ptr to this sequence
394 * @offset: starting offset for this data request 391 * @offset: starting offset for this data request
@@ -610,8 +607,8 @@ static void fc_fcp_abts_resp(struct fc_fcp_pkt *fsp, struct fc_frame *fp)
610 } 607 }
611} 608}
612 609
613/* 610/**
614 * fc_fcp_reduce_can_queue - drop can_queue 611 * fc_fcp_reduce_can_queue() - drop can_queue
615 * @lp: lport to drop queueing for 612 * @lp: lport to drop queueing for
616 * 613 *
617 * If we are getting memory allocation failures, then we may 614 * If we are getting memory allocation failures, then we may
@@ -642,9 +639,11 @@ done:
642 spin_unlock_irqrestore(lp->host->host_lock, flags); 639 spin_unlock_irqrestore(lp->host->host_lock, flags);
643} 640}
644 641
645/* 642/**
646 * exch mgr calls this routine to process scsi 643 * fc_fcp_recv() - Reveive FCP frames
647 * exchanges. 644 * @seq: The sequence the frame is on
645 * @fp: The FC frame
646 * @arg: The related FCP packet
648 * 647 *
649 * Return : None 648 * Return : None
650 * Context : called from Soft IRQ context 649 * Context : called from Soft IRQ context
@@ -832,7 +831,7 @@ err:
832} 831}
833 832
834/** 833/**
835 * fc_fcp_complete_locked - complete processing of a fcp packet 834 * fc_fcp_complete_locked() - complete processing of a fcp packet
836 * @fsp: fcp packet 835 * @fsp: fcp packet
837 * 836 *
838 * This function may sleep if a timer is pending. The packet lock must be 837 * This function may sleep if a timer is pending. The packet lock must be
@@ -900,7 +899,7 @@ static void fc_fcp_cleanup_cmd(struct fc_fcp_pkt *fsp, int error)
900} 899}
901 900
902/** 901/**
903 * fc_fcp_cleanup_each_cmd - run fn on each active command 902 * fc_fcp_cleanup_each_cmd() - Cleanup active commads
904 * @lp: logical port 903 * @lp: logical port
905 * @id: target id 904 * @id: target id
906 * @lun: lun 905 * @lun: lun
@@ -952,7 +951,7 @@ static void fc_fcp_abort_io(struct fc_lport *lp)
952} 951}
953 952
954/** 953/**
955 * fc_fcp_pkt_send - send a fcp packet to the lower level. 954 * fc_fcp_pkt_send() - send a fcp packet to the lower level.
956 * @lp: fc lport 955 * @lp: fc lport
957 * @fsp: fc packet. 956 * @fsp: fc packet.
958 * 957 *
@@ -1621,7 +1620,7 @@ out:
1621static inline int fc_fcp_lport_queue_ready(struct fc_lport *lp) 1620static inline int fc_fcp_lport_queue_ready(struct fc_lport *lp)
1622{ 1621{
1623 /* lock ? */ 1622 /* lock ? */
1624 return (lp->state == LPORT_ST_READY) && (lp->link_status & FC_LINK_UP); 1623 return (lp->state == LPORT_ST_READY) && lp->link_up && !lp->qfull;
1625} 1624}
1626 1625
1627/** 1626/**
@@ -1727,7 +1726,7 @@ out:
1727EXPORT_SYMBOL(fc_queuecommand); 1726EXPORT_SYMBOL(fc_queuecommand);
1728 1727
1729/** 1728/**
1730 * fc_io_compl - Handle responses for completed commands 1729 * fc_io_compl() - Handle responses for completed commands
1731 * @fsp: scsi packet 1730 * @fsp: scsi packet
1732 * 1731 *
1733 * Translates a error to a Linux SCSI error. 1732 * Translates a error to a Linux SCSI error.
@@ -1810,12 +1809,12 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
1810 sc_cmd->result = DID_ERROR << 16; 1809 sc_cmd->result = DID_ERROR << 16;
1811 break; 1810 break;
1812 case FC_DATA_UNDRUN: 1811 case FC_DATA_UNDRUN:
1813 if (fsp->cdb_status == 0) { 1812 if ((fsp->cdb_status == 0) && !(fsp->req_flags & FC_SRB_READ)) {
1814 /* 1813 /*
1815 * scsi status is good but transport level 1814 * scsi status is good but transport level
1816 * underrun. for read it should be an error?? 1815 * underrun.
1817 */ 1816 */
1818 sc_cmd->result = (DID_OK << 16) | fsp->cdb_status; 1817 sc_cmd->result = DID_OK << 16;
1819 } else { 1818 } else {
1820 /* 1819 /*
1821 * scsi got underrun, this is an error 1820 * scsi got underrun, this is an error
@@ -1857,7 +1856,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
1857} 1856}
1858 1857
1859/** 1858/**
1860 * fc_fcp_complete - complete processing of a fcp packet 1859 * fc_fcp_complete() - complete processing of a fcp packet
1861 * @fsp: fcp packet 1860 * @fsp: fcp packet
1862 * 1861 *
1863 * This function may sleep if a fsp timer is pending. 1862 * This function may sleep if a fsp timer is pending.
@@ -1874,9 +1873,10 @@ void fc_fcp_complete(struct fc_fcp_pkt *fsp)
1874EXPORT_SYMBOL(fc_fcp_complete); 1873EXPORT_SYMBOL(fc_fcp_complete);
1875 1874
1876/** 1875/**
1877 * fc_eh_abort - Abort a command...from scsi host template 1876 * fc_eh_abort() - Abort a command
1878 * @sc_cmd: scsi command to abort 1877 * @sc_cmd: scsi command to abort
1879 * 1878 *
1879 * From scsi host template.
1880 * send ABTS to the target device and wait for the response 1880 * send ABTS to the target device and wait for the response
1881 * sc_cmd is the pointer to the command to be aborted. 1881 * sc_cmd is the pointer to the command to be aborted.
1882 */ 1882 */
@@ -1890,7 +1890,7 @@ int fc_eh_abort(struct scsi_cmnd *sc_cmd)
1890 lp = shost_priv(sc_cmd->device->host); 1890 lp = shost_priv(sc_cmd->device->host);
1891 if (lp->state != LPORT_ST_READY) 1891 if (lp->state != LPORT_ST_READY)
1892 return rc; 1892 return rc;
1893 else if (!(lp->link_status & FC_LINK_UP)) 1893 else if (!lp->link_up)
1894 return rc; 1894 return rc;
1895 1895
1896 spin_lock_irqsave(lp->host->host_lock, flags); 1896 spin_lock_irqsave(lp->host->host_lock, flags);
@@ -1920,7 +1920,7 @@ release_pkt:
1920EXPORT_SYMBOL(fc_eh_abort); 1920EXPORT_SYMBOL(fc_eh_abort);
1921 1921
1922/** 1922/**
1923 * fc_eh_device_reset: Reset a single LUN 1923 * fc_eh_device_reset() Reset a single LUN
1924 * @sc_cmd: scsi command 1924 * @sc_cmd: scsi command
1925 * 1925 *
1926 * Set from scsi host template to send tm cmd to the target and wait for the 1926 * Set from scsi host template to send tm cmd to the target and wait for the
@@ -1973,7 +1973,7 @@ out:
1973EXPORT_SYMBOL(fc_eh_device_reset); 1973EXPORT_SYMBOL(fc_eh_device_reset);
1974 1974
1975/** 1975/**
1976 * fc_eh_host_reset - The reset function will reset the ports on the host. 1976 * fc_eh_host_reset() - The reset function will reset the ports on the host.
1977 * @sc_cmd: scsi command 1977 * @sc_cmd: scsi command
1978 */ 1978 */
1979int fc_eh_host_reset(struct scsi_cmnd *sc_cmd) 1979int fc_eh_host_reset(struct scsi_cmnd *sc_cmd)
@@ -1999,7 +1999,7 @@ int fc_eh_host_reset(struct scsi_cmnd *sc_cmd)
1999EXPORT_SYMBOL(fc_eh_host_reset); 1999EXPORT_SYMBOL(fc_eh_host_reset);
2000 2000
2001/** 2001/**
2002 * fc_slave_alloc - configure queue depth 2002 * fc_slave_alloc() - configure queue depth
2003 * @sdev: scsi device 2003 * @sdev: scsi device
2004 * 2004 *
2005 * Configures queue depth based on host's cmd_per_len. If not set 2005 * Configures queue depth based on host's cmd_per_len. If not set
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index 0b9bdb1fb807..2ae50a1188e6 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -139,7 +139,7 @@ static int fc_frame_drop(struct fc_lport *lport, struct fc_frame *fp)
139} 139}
140 140
141/** 141/**
142 * fc_lport_rport_callback - Event handler for rport events 142 * fc_lport_rport_callback() - Event handler for rport events
143 * @lport: The lport which is receiving the event 143 * @lport: The lport which is receiving the event
144 * @rport: The rport which the event has occured on 144 * @rport: The rport which the event has occured on
145 * @event: The event that occured 145 * @event: The event that occured
@@ -195,7 +195,7 @@ static void fc_lport_rport_callback(struct fc_lport *lport,
195} 195}
196 196
197/** 197/**
198 * fc_lport_state - Return a string which represents the lport's state 198 * fc_lport_state() - Return a string which represents the lport's state
199 * @lport: The lport whose state is to converted to a string 199 * @lport: The lport whose state is to converted to a string
200 */ 200 */
201static const char *fc_lport_state(struct fc_lport *lport) 201static const char *fc_lport_state(struct fc_lport *lport)
@@ -209,7 +209,7 @@ static const char *fc_lport_state(struct fc_lport *lport)
209} 209}
210 210
211/** 211/**
212 * fc_lport_ptp_setup - Create an rport for point-to-point mode 212 * fc_lport_ptp_setup() - Create an rport for point-to-point mode
213 * @lport: The lport to attach the ptp rport to 213 * @lport: The lport to attach the ptp rport to
214 * @fid: The FID of the ptp rport 214 * @fid: The FID of the ptp rport
215 * @remote_wwpn: The WWPN of the ptp rport 215 * @remote_wwpn: The WWPN of the ptp rport
@@ -232,7 +232,7 @@ static void fc_lport_ptp_setup(struct fc_lport *lport,
232 lport->ptp_rp = NULL; 232 lport->ptp_rp = NULL;
233 } 233 }
234 234
235 lport->ptp_rp = fc_rport_rogue_create(&dp); 235 lport->ptp_rp = lport->tt.rport_create(&dp);
236 236
237 lport->tt.rport_login(lport->ptp_rp); 237 lport->tt.rport_login(lport->ptp_rp);
238 238
@@ -250,7 +250,7 @@ void fc_get_host_port_state(struct Scsi_Host *shost)
250{ 250{
251 struct fc_lport *lp = shost_priv(shost); 251 struct fc_lport *lp = shost_priv(shost);
252 252
253 if ((lp->link_status & FC_LINK_UP) == FC_LINK_UP) 253 if (lp->link_up)
254 fc_host_port_state(shost) = FC_PORTSTATE_ONLINE; 254 fc_host_port_state(shost) = FC_PORTSTATE_ONLINE;
255 else 255 else
256 fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE; 256 fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE;
@@ -351,7 +351,7 @@ static void fc_lport_add_fc4_type(struct fc_lport *lport, enum fc_fh_type type)
351} 351}
352 352
353/** 353/**
354 * fc_lport_recv_rlir_req - Handle received Registered Link Incident Report. 354 * fc_lport_recv_rlir_req() - Handle received Registered Link Incident Report.
355 * @lport: Fibre Channel local port recieving the RLIR 355 * @lport: Fibre Channel local port recieving the RLIR
356 * @sp: current sequence in the RLIR exchange 356 * @sp: current sequence in the RLIR exchange
357 * @fp: RLIR request frame 357 * @fp: RLIR request frame
@@ -370,7 +370,7 @@ static void fc_lport_recv_rlir_req(struct fc_seq *sp, struct fc_frame *fp,
370} 370}
371 371
372/** 372/**
373 * fc_lport_recv_echo_req - Handle received ECHO request 373 * fc_lport_recv_echo_req() - Handle received ECHO request
374 * @lport: Fibre Channel local port recieving the ECHO 374 * @lport: Fibre Channel local port recieving the ECHO
375 * @sp: current sequence in the ECHO exchange 375 * @sp: current sequence in the ECHO exchange
376 * @fp: ECHO request frame 376 * @fp: ECHO request frame
@@ -412,7 +412,7 @@ static void fc_lport_recv_echo_req(struct fc_seq *sp, struct fc_frame *in_fp,
412} 412}
413 413
414/** 414/**
415 * fc_lport_recv_echo_req - Handle received Request Node ID data request 415 * fc_lport_recv_echo_req() - Handle received Request Node ID data request
416 * @lport: Fibre Channel local port recieving the RNID 416 * @lport: Fibre Channel local port recieving the RNID
417 * @sp: current sequence in the RNID exchange 417 * @sp: current sequence in the RNID exchange
418 * @fp: RNID request frame 418 * @fp: RNID request frame
@@ -479,7 +479,7 @@ static void fc_lport_recv_rnid_req(struct fc_seq *sp, struct fc_frame *in_fp,
479} 479}
480 480
481/** 481/**
482 * fc_lport_recv_adisc_req - Handle received Address Discovery Request 482 * fc_lport_recv_adisc_req() - Handle received Address Discovery Request
483 * @lport: Fibre Channel local port recieving the ADISC 483 * @lport: Fibre Channel local port recieving the ADISC
484 * @sp: current sequence in the ADISC exchange 484 * @sp: current sequence in the ADISC exchange
485 * @fp: ADISC request frame 485 * @fp: ADISC request frame
@@ -529,7 +529,7 @@ static void fc_lport_recv_adisc_req(struct fc_seq *sp, struct fc_frame *in_fp,
529} 529}
530 530
531/** 531/**
532 * fc_lport_recv_logo_req - Handle received fabric LOGO request 532 * fc_lport_recv_logo_req() - Handle received fabric LOGO request
533 * @lport: Fibre Channel local port recieving the LOGO 533 * @lport: Fibre Channel local port recieving the LOGO
534 * @sp: current sequence in the LOGO exchange 534 * @sp: current sequence in the LOGO exchange
535 * @fp: LOGO request frame 535 * @fp: LOGO request frame
@@ -546,7 +546,7 @@ static void fc_lport_recv_logo_req(struct fc_seq *sp, struct fc_frame *fp,
546} 546}
547 547
548/** 548/**
549 * fc_fabric_login - Start the lport state machine 549 * fc_fabric_login() - Start the lport state machine
550 * @lport: The lport that should log into the fabric 550 * @lport: The lport that should log into the fabric
551 * 551 *
552 * Locking Note: This function should not be called 552 * Locking Note: This function should not be called
@@ -568,7 +568,7 @@ int fc_fabric_login(struct fc_lport *lport)
568EXPORT_SYMBOL(fc_fabric_login); 568EXPORT_SYMBOL(fc_fabric_login);
569 569
570/** 570/**
571 * fc_linkup - Handler for transport linkup events 571 * fc_linkup() - Handler for transport linkup events
572 * @lport: The lport whose link is up 572 * @lport: The lport whose link is up
573 */ 573 */
574void fc_linkup(struct fc_lport *lport) 574void fc_linkup(struct fc_lport *lport)
@@ -577,8 +577,8 @@ void fc_linkup(struct fc_lport *lport)
577 fc_host_port_id(lport->host)); 577 fc_host_port_id(lport->host));
578 578
579 mutex_lock(&lport->lp_mutex); 579 mutex_lock(&lport->lp_mutex);
580 if ((lport->link_status & FC_LINK_UP) != FC_LINK_UP) { 580 if (!lport->link_up) {
581 lport->link_status |= FC_LINK_UP; 581 lport->link_up = 1;
582 582
583 if (lport->state == LPORT_ST_RESET) 583 if (lport->state == LPORT_ST_RESET)
584 fc_lport_enter_flogi(lport); 584 fc_lport_enter_flogi(lport);
@@ -588,7 +588,7 @@ void fc_linkup(struct fc_lport *lport)
588EXPORT_SYMBOL(fc_linkup); 588EXPORT_SYMBOL(fc_linkup);
589 589
590/** 590/**
591 * fc_linkdown - Handler for transport linkdown events 591 * fc_linkdown() - Handler for transport linkdown events
592 * @lport: The lport whose link is down 592 * @lport: The lport whose link is down
593 */ 593 */
594void fc_linkdown(struct fc_lport *lport) 594void fc_linkdown(struct fc_lport *lport)
@@ -597,8 +597,8 @@ void fc_linkdown(struct fc_lport *lport)
597 FC_DEBUG_LPORT("Link is down for port (%6x)\n", 597 FC_DEBUG_LPORT("Link is down for port (%6x)\n",
598 fc_host_port_id(lport->host)); 598 fc_host_port_id(lport->host));
599 599
600 if ((lport->link_status & FC_LINK_UP) == FC_LINK_UP) { 600 if (lport->link_up) {
601 lport->link_status &= ~(FC_LINK_UP); 601 lport->link_up = 0;
602 fc_lport_enter_reset(lport); 602 fc_lport_enter_reset(lport);
603 lport->tt.fcp_cleanup(lport); 603 lport->tt.fcp_cleanup(lport);
604 } 604 }
@@ -607,48 +607,25 @@ void fc_linkdown(struct fc_lport *lport)
607EXPORT_SYMBOL(fc_linkdown); 607EXPORT_SYMBOL(fc_linkdown);
608 608
609/** 609/**
610 * fc_pause - Pause the flow of frames 610 * fc_fabric_logoff() - Logout of the fabric
611 * @lport: The lport to be paused
612 */
613void fc_pause(struct fc_lport *lport)
614{
615 mutex_lock(&lport->lp_mutex);
616 lport->link_status |= FC_PAUSE;
617 mutex_unlock(&lport->lp_mutex);
618}
619EXPORT_SYMBOL(fc_pause);
620
621/**
622 * fc_unpause - Unpause the flow of frames
623 * @lport: The lport to be unpaused
624 */
625void fc_unpause(struct fc_lport *lport)
626{
627 mutex_lock(&lport->lp_mutex);
628 lport->link_status &= ~(FC_PAUSE);
629 mutex_unlock(&lport->lp_mutex);
630}
631EXPORT_SYMBOL(fc_unpause);
632
633/**
634 * fc_fabric_logoff - Logout of the fabric
635 * @lport: fc_lport pointer to logoff the fabric 611 * @lport: fc_lport pointer to logoff the fabric
636 * 612 *
637 * Return value: 613 * Return value:
638 * 0 for success, -1 for failure 614 * 0 for success, -1 for failure
639 **/ 615 */
640int fc_fabric_logoff(struct fc_lport *lport) 616int fc_fabric_logoff(struct fc_lport *lport)
641{ 617{
642 lport->tt.disc_stop_final(lport); 618 lport->tt.disc_stop_final(lport);
643 mutex_lock(&lport->lp_mutex); 619 mutex_lock(&lport->lp_mutex);
644 fc_lport_enter_logo(lport); 620 fc_lport_enter_logo(lport);
645 mutex_unlock(&lport->lp_mutex); 621 mutex_unlock(&lport->lp_mutex);
622 cancel_delayed_work_sync(&lport->retry_work);
646 return 0; 623 return 0;
647} 624}
648EXPORT_SYMBOL(fc_fabric_logoff); 625EXPORT_SYMBOL(fc_fabric_logoff);
649 626
650/** 627/**
651 * fc_lport_destroy - unregister a fc_lport 628 * fc_lport_destroy() - unregister a fc_lport
652 * @lport: fc_lport pointer to unregister 629 * @lport: fc_lport pointer to unregister
653 * 630 *
654 * Return value: 631 * Return value:
@@ -658,26 +635,25 @@ EXPORT_SYMBOL(fc_fabric_logoff);
658 * clean-up all the allocated memory 635 * clean-up all the allocated memory
659 * and free up other system resources. 636 * and free up other system resources.
660 * 637 *
661 **/ 638 */
662int fc_lport_destroy(struct fc_lport *lport) 639int fc_lport_destroy(struct fc_lport *lport)
663{ 640{
664 lport->tt.frame_send = fc_frame_drop; 641 lport->tt.frame_send = fc_frame_drop;
665 lport->tt.fcp_abort_io(lport); 642 lport->tt.fcp_abort_io(lport);
666 lport->tt.exch_mgr_reset(lport->emp, 0, 0); 643 lport->tt.exch_mgr_reset(lport, 0, 0);
667 return 0; 644 return 0;
668} 645}
669EXPORT_SYMBOL(fc_lport_destroy); 646EXPORT_SYMBOL(fc_lport_destroy);
670 647
671/** 648/**
672 * fc_set_mfs - sets up the mfs for the corresponding fc_lport 649 * fc_set_mfs() - sets up the mfs for the corresponding fc_lport
673 * @lport: fc_lport pointer to unregister 650 * @lport: fc_lport pointer to unregister
674 * @mfs: the new mfs for fc_lport 651 * @mfs: the new mfs for fc_lport
675 * 652 *
676 * Set mfs for the given fc_lport to the new mfs. 653 * Set mfs for the given fc_lport to the new mfs.
677 * 654 *
678 * Return: 0 for success 655 * Return: 0 for success
679 * 656 */
680 **/
681int fc_set_mfs(struct fc_lport *lport, u32 mfs) 657int fc_set_mfs(struct fc_lport *lport, u32 mfs)
682{ 658{
683 unsigned int old_mfs; 659 unsigned int old_mfs;
@@ -706,7 +682,7 @@ int fc_set_mfs(struct fc_lport *lport, u32 mfs)
706EXPORT_SYMBOL(fc_set_mfs); 682EXPORT_SYMBOL(fc_set_mfs);
707 683
708/** 684/**
709 * fc_lport_disc_callback - Callback for discovery events 685 * fc_lport_disc_callback() - Callback for discovery events
710 * @lport: FC local port 686 * @lport: FC local port
711 * @event: The discovery event 687 * @event: The discovery event
712 */ 688 */
@@ -731,7 +707,7 @@ void fc_lport_disc_callback(struct fc_lport *lport, enum fc_disc_event event)
731} 707}
732 708
733/** 709/**
734 * fc_rport_enter_ready - Enter the ready state and start discovery 710 * fc_rport_enter_ready() - Enter the ready state and start discovery
735 * @lport: Fibre Channel local port that is ready 711 * @lport: Fibre Channel local port that is ready
736 * 712 *
737 * Locking Note: The lport lock is expected to be held before calling 713 * Locking Note: The lport lock is expected to be held before calling
@@ -748,7 +724,7 @@ static void fc_lport_enter_ready(struct fc_lport *lport)
748} 724}
749 725
750/** 726/**
751 * fc_lport_recv_flogi_req - Receive a FLOGI request 727 * fc_lport_recv_flogi_req() - Receive a FLOGI request
752 * @sp_in: The sequence the FLOGI is on 728 * @sp_in: The sequence the FLOGI is on
753 * @rx_fp: The frame the FLOGI is in 729 * @rx_fp: The frame the FLOGI is in
754 * @lport: The lport that recieved the request 730 * @lport: The lport that recieved the request
@@ -838,7 +814,7 @@ out:
838} 814}
839 815
840/** 816/**
841 * fc_lport_recv_req - The generic lport request handler 817 * fc_lport_recv_req() - The generic lport request handler
842 * @lport: The lport that received the request 818 * @lport: The lport that received the request
843 * @sp: The sequence the request is on 819 * @sp: The sequence the request is on
844 * @fp: The frame the request is in 820 * @fp: The frame the request is in
@@ -934,7 +910,7 @@ static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
934} 910}
935 911
936/** 912/**
937 * fc_lport_reset - Reset an lport 913 * fc_lport_reset() - Reset an lport
938 * @lport: The lport which should be reset 914 * @lport: The lport which should be reset
939 * 915 *
940 * Locking Note: This functions should not be called with the 916 * Locking Note: This functions should not be called with the
@@ -942,6 +918,7 @@ static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
942 */ 918 */
943int fc_lport_reset(struct fc_lport *lport) 919int fc_lport_reset(struct fc_lport *lport)
944{ 920{
921 cancel_delayed_work_sync(&lport->retry_work);
945 mutex_lock(&lport->lp_mutex); 922 mutex_lock(&lport->lp_mutex);
946 fc_lport_enter_reset(lport); 923 fc_lport_enter_reset(lport);
947 mutex_unlock(&lport->lp_mutex); 924 mutex_unlock(&lport->lp_mutex);
@@ -950,7 +927,7 @@ int fc_lport_reset(struct fc_lport *lport)
950EXPORT_SYMBOL(fc_lport_reset); 927EXPORT_SYMBOL(fc_lport_reset);
951 928
952/** 929/**
953 * fc_rport_enter_reset - Reset the local port 930 * fc_rport_enter_reset() - Reset the local port
954 * @lport: Fibre Channel local port to be reset 931 * @lport: Fibre Channel local port to be reset
955 * 932 *
956 * Locking Note: The lport lock is expected to be held before calling 933 * Locking Note: The lport lock is expected to be held before calling
@@ -973,16 +950,16 @@ static void fc_lport_enter_reset(struct fc_lport *lport)
973 950
974 lport->tt.disc_stop(lport); 951 lport->tt.disc_stop(lport);
975 952
976 lport->tt.exch_mgr_reset(lport->emp, 0, 0); 953 lport->tt.exch_mgr_reset(lport, 0, 0);
977 fc_host_fabric_name(lport->host) = 0; 954 fc_host_fabric_name(lport->host) = 0;
978 fc_host_port_id(lport->host) = 0; 955 fc_host_port_id(lport->host) = 0;
979 956
980 if ((lport->link_status & FC_LINK_UP) == FC_LINK_UP) 957 if (lport->link_up)
981 fc_lport_enter_flogi(lport); 958 fc_lport_enter_flogi(lport);
982} 959}
983 960
984/** 961/**
985 * fc_lport_error - Handler for any errors 962 * fc_lport_error() - Handler for any errors
986 * @lport: The fc_lport object 963 * @lport: The fc_lport object
987 * @fp: The frame pointer 964 * @fp: The frame pointer
988 * 965 *
@@ -1029,8 +1006,8 @@ static void fc_lport_error(struct fc_lport *lport, struct fc_frame *fp)
1029} 1006}
1030 1007
1031/** 1008/**
1032 * fc_lport_rft_id_resp - Handle response to Register Fibre 1009 * fc_lport_rft_id_resp() - Handle response to Register Fibre
1033 * Channel Types by ID (RPN_ID) request 1010 * Channel Types by ID (RPN_ID) request
1034 * @sp: current sequence in RPN_ID exchange 1011 * @sp: current sequence in RPN_ID exchange
1035 * @fp: response frame 1012 * @fp: response frame
1036 * @lp_arg: Fibre Channel host port instance 1013 * @lp_arg: Fibre Channel host port instance
@@ -1053,17 +1030,17 @@ static void fc_lport_rft_id_resp(struct fc_seq *sp, struct fc_frame *fp,
1053 1030
1054 FC_DEBUG_LPORT("Received a RFT_ID response\n"); 1031 FC_DEBUG_LPORT("Received a RFT_ID response\n");
1055 1032
1033 if (IS_ERR(fp)) {
1034 fc_lport_error(lport, fp);
1035 goto err;
1036 }
1037
1056 if (lport->state != LPORT_ST_RFT_ID) { 1038 if (lport->state != LPORT_ST_RFT_ID) {
1057 FC_DBG("Received a RFT_ID response, but in state %s\n", 1039 FC_DBG("Received a RFT_ID response, but in state %s\n",
1058 fc_lport_state(lport)); 1040 fc_lport_state(lport));
1059 goto out; 1041 goto out;
1060 } 1042 }
1061 1043
1062 if (IS_ERR(fp)) {
1063 fc_lport_error(lport, fp);
1064 goto err;
1065 }
1066
1067 fh = fc_frame_header_get(fp); 1044 fh = fc_frame_header_get(fp);
1068 ct = fc_frame_payload_get(fp, sizeof(*ct)); 1045 ct = fc_frame_payload_get(fp, sizeof(*ct));
1069 1046
@@ -1081,8 +1058,8 @@ err:
1081} 1058}
1082 1059
1083/** 1060/**
1084 * fc_lport_rpn_id_resp - Handle response to Register Port 1061 * fc_lport_rpn_id_resp() - Handle response to Register Port
1085 * Name by ID (RPN_ID) request 1062 * Name by ID (RPN_ID) request
1086 * @sp: current sequence in RPN_ID exchange 1063 * @sp: current sequence in RPN_ID exchange
1087 * @fp: response frame 1064 * @fp: response frame
1088 * @lp_arg: Fibre Channel host port instance 1065 * @lp_arg: Fibre Channel host port instance
@@ -1105,17 +1082,17 @@ static void fc_lport_rpn_id_resp(struct fc_seq *sp, struct fc_frame *fp,
1105 1082
1106 FC_DEBUG_LPORT("Received a RPN_ID response\n"); 1083 FC_DEBUG_LPORT("Received a RPN_ID response\n");
1107 1084
1085 if (IS_ERR(fp)) {
1086 fc_lport_error(lport, fp);
1087 goto err;
1088 }
1089
1108 if (lport->state != LPORT_ST_RPN_ID) { 1090 if (lport->state != LPORT_ST_RPN_ID) {
1109 FC_DBG("Received a RPN_ID response, but in state %s\n", 1091 FC_DBG("Received a RPN_ID response, but in state %s\n",
1110 fc_lport_state(lport)); 1092 fc_lport_state(lport));
1111 goto out; 1093 goto out;
1112 } 1094 }
1113 1095
1114 if (IS_ERR(fp)) {
1115 fc_lport_error(lport, fp);
1116 goto err;
1117 }
1118
1119 fh = fc_frame_header_get(fp); 1096 fh = fc_frame_header_get(fp);
1120 ct = fc_frame_payload_get(fp, sizeof(*ct)); 1097 ct = fc_frame_payload_get(fp, sizeof(*ct));
1121 if (fh && ct && fh->fh_type == FC_TYPE_CT && 1098 if (fh && ct && fh->fh_type == FC_TYPE_CT &&
@@ -1133,7 +1110,7 @@ err:
1133} 1110}
1134 1111
1135/** 1112/**
1136 * fc_lport_scr_resp - Handle response to State Change Register (SCR) request 1113 * fc_lport_scr_resp() - Handle response to State Change Register (SCR) request
1137 * @sp: current sequence in SCR exchange 1114 * @sp: current sequence in SCR exchange
1138 * @fp: response frame 1115 * @fp: response frame
1139 * @lp_arg: Fibre Channel lport port instance that sent the registration request 1116 * @lp_arg: Fibre Channel lport port instance that sent the registration request
@@ -1155,17 +1132,17 @@ static void fc_lport_scr_resp(struct fc_seq *sp, struct fc_frame *fp,
1155 1132
1156 FC_DEBUG_LPORT("Received a SCR response\n"); 1133 FC_DEBUG_LPORT("Received a SCR response\n");
1157 1134
1135 if (IS_ERR(fp)) {
1136 fc_lport_error(lport, fp);
1137 goto err;
1138 }
1139
1158 if (lport->state != LPORT_ST_SCR) { 1140 if (lport->state != LPORT_ST_SCR) {
1159 FC_DBG("Received a SCR response, but in state %s\n", 1141 FC_DBG("Received a SCR response, but in state %s\n",
1160 fc_lport_state(lport)); 1142 fc_lport_state(lport));
1161 goto out; 1143 goto out;
1162 } 1144 }
1163 1145
1164 if (IS_ERR(fp)) {
1165 fc_lport_error(lport, fp);
1166 goto err;
1167 }
1168
1169 op = fc_frame_payload_op(fp); 1146 op = fc_frame_payload_op(fp);
1170 if (op == ELS_LS_ACC) 1147 if (op == ELS_LS_ACC)
1171 fc_lport_enter_ready(lport); 1148 fc_lport_enter_ready(lport);
@@ -1179,7 +1156,7 @@ err:
1179} 1156}
1180 1157
1181/** 1158/**
1182 * fc_lport_enter_scr - Send a State Change Register (SCR) request 1159 * fc_lport_enter_scr() - Send a State Change Register (SCR) request
1183 * @lport: Fibre Channel local port to register for state changes 1160 * @lport: Fibre Channel local port to register for state changes
1184 * 1161 *
1185 * Locking Note: The lport lock is expected to be held before calling 1162 * Locking Note: The lport lock is expected to be held before calling
@@ -1206,7 +1183,7 @@ static void fc_lport_enter_scr(struct fc_lport *lport)
1206} 1183}
1207 1184
1208/** 1185/**
1209 * fc_lport_enter_rft_id - Register FC4-types with the name server 1186 * fc_lport_enter_rft_id() - Register FC4-types with the name server
1210 * @lport: Fibre Channel local port to register 1187 * @lport: Fibre Channel local port to register
1211 * 1188 *
1212 * Locking Note: The lport lock is expected to be held before calling 1189 * Locking Note: The lport lock is expected to be held before calling
@@ -1248,7 +1225,7 @@ static void fc_lport_enter_rft_id(struct fc_lport *lport)
1248} 1225}
1249 1226
1250/** 1227/**
1251 * fc_rport_enter_rft_id - Register port name with the name server 1228 * fc_rport_enter_rft_id() - Register port name with the name server
1252 * @lport: Fibre Channel local port to register 1229 * @lport: Fibre Channel local port to register
1253 * 1230 *
1254 * Locking Note: The lport lock is expected to be held before calling 1231 * Locking Note: The lport lock is expected to be held before calling
@@ -1281,7 +1258,7 @@ static struct fc_rport_operations fc_lport_rport_ops = {
1281}; 1258};
1282 1259
1283/** 1260/**
1284 * fc_rport_enter_dns - Create a rport to the name server 1261 * fc_rport_enter_dns() - Create a rport to the name server
1285 * @lport: Fibre Channel local port requesting a rport for the name server 1262 * @lport: Fibre Channel local port requesting a rport for the name server
1286 * 1263 *
1287 * Locking Note: The lport lock is expected to be held before calling 1264 * Locking Note: The lport lock is expected to be held before calling
@@ -1304,7 +1281,7 @@ static void fc_lport_enter_dns(struct fc_lport *lport)
1304 1281
1305 fc_lport_state_enter(lport, LPORT_ST_DNS); 1282 fc_lport_state_enter(lport, LPORT_ST_DNS);
1306 1283
1307 rport = fc_rport_rogue_create(&dp); 1284 rport = lport->tt.rport_create(&dp);
1308 if (!rport) 1285 if (!rport)
1309 goto err; 1286 goto err;
1310 1287
@@ -1318,7 +1295,7 @@ err:
1318} 1295}
1319 1296
1320/** 1297/**
1321 * fc_lport_timeout - Handler for the retry_work timer. 1298 * fc_lport_timeout() - Handler for the retry_work timer.
1322 * @work: The work struct of the fc_lport 1299 * @work: The work struct of the fc_lport
1323 */ 1300 */
1324static void fc_lport_timeout(struct work_struct *work) 1301static void fc_lport_timeout(struct work_struct *work)
@@ -1359,7 +1336,7 @@ static void fc_lport_timeout(struct work_struct *work)
1359} 1336}
1360 1337
1361/** 1338/**
1362 * fc_lport_logo_resp - Handle response to LOGO request 1339 * fc_lport_logo_resp() - Handle response to LOGO request
1363 * @sp: current sequence in LOGO exchange 1340 * @sp: current sequence in LOGO exchange
1364 * @fp: response frame 1341 * @fp: response frame
1365 * @lp_arg: Fibre Channel lport port instance that sent the LOGO request 1342 * @lp_arg: Fibre Channel lport port instance that sent the LOGO request
@@ -1381,17 +1358,17 @@ static void fc_lport_logo_resp(struct fc_seq *sp, struct fc_frame *fp,
1381 1358
1382 FC_DEBUG_LPORT("Received a LOGO response\n"); 1359 FC_DEBUG_LPORT("Received a LOGO response\n");
1383 1360
1361 if (IS_ERR(fp)) {
1362 fc_lport_error(lport, fp);
1363 goto err;
1364 }
1365
1384 if (lport->state != LPORT_ST_LOGO) { 1366 if (lport->state != LPORT_ST_LOGO) {
1385 FC_DBG("Received a LOGO response, but in state %s\n", 1367 FC_DBG("Received a LOGO response, but in state %s\n",
1386 fc_lport_state(lport)); 1368 fc_lport_state(lport));
1387 goto out; 1369 goto out;
1388 } 1370 }
1389 1371
1390 if (IS_ERR(fp)) {
1391 fc_lport_error(lport, fp);
1392 goto err;
1393 }
1394
1395 op = fc_frame_payload_op(fp); 1372 op = fc_frame_payload_op(fp);
1396 if (op == ELS_LS_ACC) 1373 if (op == ELS_LS_ACC)
1397 fc_lport_enter_reset(lport); 1374 fc_lport_enter_reset(lport);
@@ -1405,7 +1382,7 @@ err:
1405} 1382}
1406 1383
1407/** 1384/**
1408 * fc_rport_enter_logo - Logout of the fabric 1385 * fc_rport_enter_logo() - Logout of the fabric
1409 * @lport: Fibre Channel local port to be logged out 1386 * @lport: Fibre Channel local port to be logged out
1410 * 1387 *
1411 * Locking Note: The lport lock is expected to be held before calling 1388 * Locking Note: The lport lock is expected to be held before calling
@@ -1437,7 +1414,7 @@ static void fc_lport_enter_logo(struct fc_lport *lport)
1437} 1414}
1438 1415
1439/** 1416/**
1440 * fc_lport_flogi_resp - Handle response to FLOGI request 1417 * fc_lport_flogi_resp() - Handle response to FLOGI request
1441 * @sp: current sequence in FLOGI exchange 1418 * @sp: current sequence in FLOGI exchange
1442 * @fp: response frame 1419 * @fp: response frame
1443 * @lp_arg: Fibre Channel lport port instance that sent the FLOGI request 1420 * @lp_arg: Fibre Channel lport port instance that sent the FLOGI request
@@ -1465,17 +1442,17 @@ static void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
1465 1442
1466 FC_DEBUG_LPORT("Received a FLOGI response\n"); 1443 FC_DEBUG_LPORT("Received a FLOGI response\n");
1467 1444
1445 if (IS_ERR(fp)) {
1446 fc_lport_error(lport, fp);
1447 goto err;
1448 }
1449
1468 if (lport->state != LPORT_ST_FLOGI) { 1450 if (lport->state != LPORT_ST_FLOGI) {
1469 FC_DBG("Received a FLOGI response, but in state %s\n", 1451 FC_DBG("Received a FLOGI response, but in state %s\n",
1470 fc_lport_state(lport)); 1452 fc_lport_state(lport));
1471 goto out; 1453 goto out;
1472 } 1454 }
1473 1455
1474 if (IS_ERR(fp)) {
1475 fc_lport_error(lport, fp);
1476 goto err;
1477 }
1478
1479 fh = fc_frame_header_get(fp); 1456 fh = fc_frame_header_get(fp);
1480 did = ntoh24(fh->fh_d_id); 1457 did = ntoh24(fh->fh_d_id);
1481 if (fc_frame_payload_op(fp) == ELS_LS_ACC && did != 0) { 1458 if (fc_frame_payload_op(fp) == ELS_LS_ACC && did != 0) {
@@ -1532,7 +1509,7 @@ err:
1532} 1509}
1533 1510
1534/** 1511/**
1535 * fc_rport_enter_flogi - Send a FLOGI request to the fabric manager 1512 * fc_rport_enter_flogi() - Send a FLOGI request to the fabric manager
1536 * @lport: Fibre Channel local port to be logged in to the fabric 1513 * @lport: Fibre Channel local port to be logged in to the fabric
1537 * 1514 *
1538 * Locking Note: The lport lock is expected to be held before calling 1515 * Locking Note: The lport lock is expected to be held before calling
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index e780d8caf70e..dae65133a833 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -81,6 +81,7 @@ static void fc_rport_recv_logo_req(struct fc_rport *,
81 struct fc_seq *, struct fc_frame *); 81 struct fc_seq *, struct fc_frame *);
82static void fc_rport_timeout(struct work_struct *); 82static void fc_rport_timeout(struct work_struct *);
83static void fc_rport_error(struct fc_rport *, struct fc_frame *); 83static void fc_rport_error(struct fc_rport *, struct fc_frame *);
84static void fc_rport_error_retry(struct fc_rport *, struct fc_frame *);
84static void fc_rport_work(struct work_struct *); 85static void fc_rport_work(struct work_struct *);
85 86
86static const char *fc_rport_state_names[] = { 87static const char *fc_rport_state_names[] = {
@@ -145,7 +146,7 @@ struct fc_rport *fc_rport_rogue_create(struct fc_disc_port *dp)
145} 146}
146 147
147/** 148/**
148 * fc_rport_state - return a string for the state the rport is in 149 * fc_rport_state() - return a string for the state the rport is in
149 * @rport: The rport whose state we want to get a string for 150 * @rport: The rport whose state we want to get a string for
150 */ 151 */
151static const char *fc_rport_state(struct fc_rport *rport) 152static const char *fc_rport_state(struct fc_rport *rport)
@@ -160,7 +161,7 @@ static const char *fc_rport_state(struct fc_rport *rport)
160} 161}
161 162
162/** 163/**
163 * fc_set_rport_loss_tmo - Set the remote port loss timeout in seconds. 164 * fc_set_rport_loss_tmo() - Set the remote port loss timeout in seconds.
164 * @rport: Pointer to Fibre Channel remote port structure 165 * @rport: Pointer to Fibre Channel remote port structure
165 * @timeout: timeout in seconds 166 * @timeout: timeout in seconds
166 */ 167 */
@@ -174,12 +175,12 @@ void fc_set_rport_loss_tmo(struct fc_rport *rport, u32 timeout)
174EXPORT_SYMBOL(fc_set_rport_loss_tmo); 175EXPORT_SYMBOL(fc_set_rport_loss_tmo);
175 176
176/** 177/**
177 * fc_plogi_get_maxframe - Get max payload from the common service parameters 178 * fc_plogi_get_maxframe() - Get max payload from the common service parameters
178 * @flp: FLOGI payload structure 179 * @flp: FLOGI payload structure
179 * @maxval: upper limit, may be less than what is in the service parameters 180 * @maxval: upper limit, may be less than what is in the service parameters
180 */ 181 */
181static unsigned int 182static unsigned int fc_plogi_get_maxframe(struct fc_els_flogi *flp,
182fc_plogi_get_maxframe(struct fc_els_flogi *flp, unsigned int maxval) 183 unsigned int maxval)
183{ 184{
184 unsigned int mfs; 185 unsigned int mfs;
185 186
@@ -197,7 +198,7 @@ fc_plogi_get_maxframe(struct fc_els_flogi *flp, unsigned int maxval)
197} 198}
198 199
199/** 200/**
200 * fc_rport_state_enter - Change the rport's state 201 * fc_rport_state_enter() - Change the rport's state
201 * @rport: The rport whose state should change 202 * @rport: The rport whose state should change
202 * @new: The new state of the rport 203 * @new: The new state of the rport
203 * 204 *
@@ -214,6 +215,7 @@ static void fc_rport_state_enter(struct fc_rport *rport,
214 215
215static void fc_rport_work(struct work_struct *work) 216static void fc_rport_work(struct work_struct *work)
216{ 217{
218 u32 port_id;
217 struct fc_rport_libfc_priv *rdata = 219 struct fc_rport_libfc_priv *rdata =
218 container_of(work, struct fc_rport_libfc_priv, event_work); 220 container_of(work, struct fc_rport_libfc_priv, event_work);
219 enum fc_rport_event event; 221 enum fc_rport_event event;
@@ -279,14 +281,18 @@ static void fc_rport_work(struct work_struct *work)
279 rport_ops->event_callback(lport, rport, event); 281 rport_ops->event_callback(lport, rport, event);
280 if (trans_state == FC_PORTSTATE_ROGUE) 282 if (trans_state == FC_PORTSTATE_ROGUE)
281 put_device(&rport->dev); 283 put_device(&rport->dev);
282 else 284 else {
285 port_id = rport->port_id;
283 fc_remote_port_delete(rport); 286 fc_remote_port_delete(rport);
287 lport->tt.exch_mgr_reset(lport, 0, port_id);
288 lport->tt.exch_mgr_reset(lport, port_id, 0);
289 }
284 } else 290 } else
285 mutex_unlock(&rdata->rp_mutex); 291 mutex_unlock(&rdata->rp_mutex);
286} 292}
287 293
288/** 294/**
289 * fc_rport_login - Start the remote port login state machine 295 * fc_rport_login() - Start the remote port login state machine
290 * @rport: Fibre Channel remote port 296 * @rport: Fibre Channel remote port
291 * 297 *
292 * Locking Note: Called without the rport lock held. This 298 * Locking Note: Called without the rport lock held. This
@@ -309,7 +315,7 @@ int fc_rport_login(struct fc_rport *rport)
309} 315}
310 316
311/** 317/**
312 * fc_rport_logoff - Logoff and remove an rport 318 * fc_rport_logoff() - Logoff and remove an rport
313 * @rport: Fibre Channel remote port to be removed 319 * @rport: Fibre Channel remote port to be removed
314 * 320 *
315 * Locking Note: Called without the rport lock held. This 321 * Locking Note: Called without the rport lock held. This
@@ -347,7 +353,7 @@ int fc_rport_logoff(struct fc_rport *rport)
347} 353}
348 354
349/** 355/**
350 * fc_rport_enter_ready - The rport is ready 356 * fc_rport_enter_ready() - The rport is ready
351 * @rport: Fibre Channel remote port that is ready 357 * @rport: Fibre Channel remote port that is ready
352 * 358 *
353 * Locking Note: The rport lock is expected to be held before calling 359 * Locking Note: The rport lock is expected to be held before calling
@@ -366,7 +372,7 @@ static void fc_rport_enter_ready(struct fc_rport *rport)
366} 372}
367 373
368/** 374/**
369 * fc_rport_timeout - Handler for the retry_work timer. 375 * fc_rport_timeout() - Handler for the retry_work timer.
370 * @work: The work struct of the fc_rport_libfc_priv 376 * @work: The work struct of the fc_rport_libfc_priv
371 * 377 *
372 * Locking Note: Called without the rport lock held. This 378 * Locking Note: Called without the rport lock held. This
@@ -405,59 +411,75 @@ static void fc_rport_timeout(struct work_struct *work)
405} 411}
406 412
407/** 413/**
408 * fc_rport_error - Handler for any errors 414 * fc_rport_error() - Error handler, called once retries have been exhausted
409 * @rport: The fc_rport object 415 * @rport: The fc_rport object
410 * @fp: The frame pointer 416 * @fp: The frame pointer
411 * 417 *
412 * If the error was caused by a resource allocation failure
413 * then wait for half a second and retry, otherwise retry
414 * immediately.
415 *
416 * Locking Note: The rport lock is expected to be held before 418 * Locking Note: The rport lock is expected to be held before
417 * calling this routine 419 * calling this routine
418 */ 420 */
419static void fc_rport_error(struct fc_rport *rport, struct fc_frame *fp) 421static void fc_rport_error(struct fc_rport *rport, struct fc_frame *fp)
420{ 422{
421 struct fc_rport_libfc_priv *rdata = rport->dd_data; 423 struct fc_rport_libfc_priv *rdata = rport->dd_data;
422 unsigned long delay = 0;
423 424
424 FC_DEBUG_RPORT("Error %ld in state %s, retries %d\n", 425 FC_DEBUG_RPORT("Error %ld in state %s, retries %d\n",
425 PTR_ERR(fp), fc_rport_state(rport), rdata->retries); 426 PTR_ERR(fp), fc_rport_state(rport), rdata->retries);
426 427
427 if (!fp || PTR_ERR(fp) == -FC_EX_TIMEOUT) { 428 switch (rdata->rp_state) {
428 /* 429 case RPORT_ST_PLOGI:
429 * Memory allocation failure, or the exchange timed out. 430 case RPORT_ST_PRLI:
430 * Retry after delay 431 case RPORT_ST_LOGO:
431 */ 432 rdata->event = RPORT_EV_FAILED;
432 if (rdata->retries < rdata->local_port->max_retry_count) { 433 queue_work(rport_event_queue,
433 rdata->retries++; 434 &rdata->event_work);
434 if (!fp) 435 break;
435 delay = msecs_to_jiffies(500); 436 case RPORT_ST_RTV:
436 get_device(&rport->dev); 437 fc_rport_enter_ready(rport);
437 schedule_delayed_work(&rdata->retry_work, delay); 438 break;
438 } else { 439 case RPORT_ST_NONE:
439 switch (rdata->rp_state) { 440 case RPORT_ST_READY:
440 case RPORT_ST_PLOGI: 441 case RPORT_ST_INIT:
441 case RPORT_ST_PRLI: 442 break;
442 case RPORT_ST_LOGO:
443 rdata->event = RPORT_EV_FAILED;
444 queue_work(rport_event_queue,
445 &rdata->event_work);
446 break;
447 case RPORT_ST_RTV:
448 fc_rport_enter_ready(rport);
449 break;
450 case RPORT_ST_NONE:
451 case RPORT_ST_READY:
452 case RPORT_ST_INIT:
453 break;
454 }
455 }
456 } 443 }
457} 444}
458 445
459/** 446/**
460 * fc_rport_plogi_recv_resp - Handle incoming ELS PLOGI response 447 * fc_rport_error_retry() - Error handler when retries are desired
448 * @rport: The fc_rport object
449 * @fp: The frame pointer
450 *
451 * If the error was an exchange timeout retry immediately,
452 * otherwise wait for E_D_TOV.
453 *
454 * Locking Note: The rport lock is expected to be held before
455 * calling this routine
456 */
457static void fc_rport_error_retry(struct fc_rport *rport, struct fc_frame *fp)
458{
459 struct fc_rport_libfc_priv *rdata = rport->dd_data;
460 unsigned long delay = FC_DEF_E_D_TOV;
461
462 /* make sure this isn't an FC_EX_CLOSED error, never retry those */
463 if (PTR_ERR(fp) == -FC_EX_CLOSED)
464 return fc_rport_error(rport, fp);
465
466 if (rdata->retries < rdata->local_port->max_retry_count) {
467 FC_DEBUG_RPORT("Error %ld in state %s, retrying\n",
468 PTR_ERR(fp), fc_rport_state(rport));
469 rdata->retries++;
470 /* no additional delay on exchange timeouts */
471 if (PTR_ERR(fp) == -FC_EX_TIMEOUT)
472 delay = 0;
473 get_device(&rport->dev);
474 schedule_delayed_work(&rdata->retry_work, delay);
475 return;
476 }
477
478 return fc_rport_error(rport, fp);
479}
480
481/**
482 * fc_rport_plogi_recv_resp() - Handle incoming ELS PLOGI response
461 * @sp: current sequence in the PLOGI exchange 483 * @sp: current sequence in the PLOGI exchange
462 * @fp: response frame 484 * @fp: response frame
463 * @rp_arg: Fibre Channel remote port 485 * @rp_arg: Fibre Channel remote port
@@ -483,17 +505,17 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, struct fc_frame *fp,
483 FC_DEBUG_RPORT("Received a PLOGI response from port (%6x)\n", 505 FC_DEBUG_RPORT("Received a PLOGI response from port (%6x)\n",
484 rport->port_id); 506 rport->port_id);
485 507
508 if (IS_ERR(fp)) {
509 fc_rport_error_retry(rport, fp);
510 goto err;
511 }
512
486 if (rdata->rp_state != RPORT_ST_PLOGI) { 513 if (rdata->rp_state != RPORT_ST_PLOGI) {
487 FC_DBG("Received a PLOGI response, but in state %s\n", 514 FC_DBG("Received a PLOGI response, but in state %s\n",
488 fc_rport_state(rport)); 515 fc_rport_state(rport));
489 goto out; 516 goto out;
490 } 517 }
491 518
492 if (IS_ERR(fp)) {
493 fc_rport_error(rport, fp);
494 goto err;
495 }
496
497 op = fc_frame_payload_op(fp); 519 op = fc_frame_payload_op(fp);
498 if (op == ELS_LS_ACC && 520 if (op == ELS_LS_ACC &&
499 (plp = fc_frame_payload_get(fp, sizeof(*plp))) != NULL) { 521 (plp = fc_frame_payload_get(fp, sizeof(*plp))) != NULL) {
@@ -522,7 +544,7 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, struct fc_frame *fp,
522 else 544 else
523 fc_rport_enter_prli(rport); 545 fc_rport_enter_prli(rport);
524 } else 546 } else
525 fc_rport_error(rport, fp); 547 fc_rport_error_retry(rport, fp);
526 548
527out: 549out:
528 fc_frame_free(fp); 550 fc_frame_free(fp);
@@ -532,7 +554,7 @@ err:
532} 554}
533 555
534/** 556/**
535 * fc_rport_enter_plogi - Send Port Login (PLOGI) request to peer 557 * fc_rport_enter_plogi() - Send Port Login (PLOGI) request to peer
536 * @rport: Fibre Channel remote port to send PLOGI to 558 * @rport: Fibre Channel remote port to send PLOGI to
537 * 559 *
538 * Locking Note: The rport lock is expected to be held before calling 560 * Locking Note: The rport lock is expected to be held before calling
@@ -552,20 +574,20 @@ static void fc_rport_enter_plogi(struct fc_rport *rport)
552 rport->maxframe_size = FC_MIN_MAX_PAYLOAD; 574 rport->maxframe_size = FC_MIN_MAX_PAYLOAD;
553 fp = fc_frame_alloc(lport, sizeof(struct fc_els_flogi)); 575 fp = fc_frame_alloc(lport, sizeof(struct fc_els_flogi));
554 if (!fp) { 576 if (!fp) {
555 fc_rport_error(rport, fp); 577 fc_rport_error_retry(rport, fp);
556 return; 578 return;
557 } 579 }
558 rdata->e_d_tov = lport->e_d_tov; 580 rdata->e_d_tov = lport->e_d_tov;
559 581
560 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PLOGI, 582 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PLOGI,
561 fc_rport_plogi_resp, rport, lport->e_d_tov)) 583 fc_rport_plogi_resp, rport, lport->e_d_tov))
562 fc_rport_error(rport, fp); 584 fc_rport_error_retry(rport, fp);
563 else 585 else
564 get_device(&rport->dev); 586 get_device(&rport->dev);
565} 587}
566 588
567/** 589/**
568 * fc_rport_prli_resp - Process Login (PRLI) response handler 590 * fc_rport_prli_resp() - Process Login (PRLI) response handler
569 * @sp: current sequence in the PRLI exchange 591 * @sp: current sequence in the PRLI exchange
570 * @fp: response frame 592 * @fp: response frame
571 * @rp_arg: Fibre Channel remote port 593 * @rp_arg: Fibre Channel remote port
@@ -592,17 +614,17 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
592 FC_DEBUG_RPORT("Received a PRLI response from port (%6x)\n", 614 FC_DEBUG_RPORT("Received a PRLI response from port (%6x)\n",
593 rport->port_id); 615 rport->port_id);
594 616
617 if (IS_ERR(fp)) {
618 fc_rport_error_retry(rport, fp);
619 goto err;
620 }
621
595 if (rdata->rp_state != RPORT_ST_PRLI) { 622 if (rdata->rp_state != RPORT_ST_PRLI) {
596 FC_DBG("Received a PRLI response, but in state %s\n", 623 FC_DBG("Received a PRLI response, but in state %s\n",
597 fc_rport_state(rport)); 624 fc_rport_state(rport));
598 goto out; 625 goto out;
599 } 626 }
600 627
601 if (IS_ERR(fp)) {
602 fc_rport_error(rport, fp);
603 goto err;
604 }
605
606 op = fc_frame_payload_op(fp); 628 op = fc_frame_payload_op(fp);
607 if (op == ELS_LS_ACC) { 629 if (op == ELS_LS_ACC) {
608 pp = fc_frame_payload_get(fp, sizeof(*pp)); 630 pp = fc_frame_payload_get(fp, sizeof(*pp));
@@ -635,7 +657,7 @@ err:
635} 657}
636 658
637/** 659/**
638 * fc_rport_logo_resp - Logout (LOGO) response handler 660 * fc_rport_logo_resp() - Logout (LOGO) response handler
639 * @sp: current sequence in the LOGO exchange 661 * @sp: current sequence in the LOGO exchange
640 * @fp: response frame 662 * @fp: response frame
641 * @rp_arg: Fibre Channel remote port 663 * @rp_arg: Fibre Channel remote port
@@ -657,7 +679,7 @@ static void fc_rport_logo_resp(struct fc_seq *sp, struct fc_frame *fp,
657 rport->port_id); 679 rport->port_id);
658 680
659 if (IS_ERR(fp)) { 681 if (IS_ERR(fp)) {
660 fc_rport_error(rport, fp); 682 fc_rport_error_retry(rport, fp);
661 goto err; 683 goto err;
662 } 684 }
663 685
@@ -684,7 +706,7 @@ err:
684} 706}
685 707
686/** 708/**
687 * fc_rport_enter_prli - Send Process Login (PRLI) request to peer 709 * fc_rport_enter_prli() - Send Process Login (PRLI) request to peer
688 * @rport: Fibre Channel remote port to send PRLI to 710 * @rport: Fibre Channel remote port to send PRLI to
689 * 711 *
690 * Locking Note: The rport lock is expected to be held before calling 712 * Locking Note: The rport lock is expected to be held before calling
@@ -707,19 +729,19 @@ static void fc_rport_enter_prli(struct fc_rport *rport)
707 729
708 fp = fc_frame_alloc(lport, sizeof(*pp)); 730 fp = fc_frame_alloc(lport, sizeof(*pp));
709 if (!fp) { 731 if (!fp) {
710 fc_rport_error(rport, fp); 732 fc_rport_error_retry(rport, fp);
711 return; 733 return;
712 } 734 }
713 735
714 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PRLI, 736 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PRLI,
715 fc_rport_prli_resp, rport, lport->e_d_tov)) 737 fc_rport_prli_resp, rport, lport->e_d_tov))
716 fc_rport_error(rport, fp); 738 fc_rport_error_retry(rport, fp);
717 else 739 else
718 get_device(&rport->dev); 740 get_device(&rport->dev);
719} 741}
720 742
721/** 743/**
722 * fc_rport_els_rtv_resp - Request Timeout Value response handler 744 * fc_rport_els_rtv_resp() - Request Timeout Value response handler
723 * @sp: current sequence in the RTV exchange 745 * @sp: current sequence in the RTV exchange
724 * @fp: response frame 746 * @fp: response frame
725 * @rp_arg: Fibre Channel remote port 747 * @rp_arg: Fibre Channel remote port
@@ -742,17 +764,17 @@ static void fc_rport_rtv_resp(struct fc_seq *sp, struct fc_frame *fp,
742 FC_DEBUG_RPORT("Received a RTV response from port (%6x)\n", 764 FC_DEBUG_RPORT("Received a RTV response from port (%6x)\n",
743 rport->port_id); 765 rport->port_id);
744 766
767 if (IS_ERR(fp)) {
768 fc_rport_error(rport, fp);
769 goto err;
770 }
771
745 if (rdata->rp_state != RPORT_ST_RTV) { 772 if (rdata->rp_state != RPORT_ST_RTV) {
746 FC_DBG("Received a RTV response, but in state %s\n", 773 FC_DBG("Received a RTV response, but in state %s\n",
747 fc_rport_state(rport)); 774 fc_rport_state(rport));
748 goto out; 775 goto out;
749 } 776 }
750 777
751 if (IS_ERR(fp)) {
752 fc_rport_error(rport, fp);
753 goto err;
754 }
755
756 op = fc_frame_payload_op(fp); 778 op = fc_frame_payload_op(fp);
757 if (op == ELS_LS_ACC) { 779 if (op == ELS_LS_ACC) {
758 struct fc_els_rtv_acc *rtv; 780 struct fc_els_rtv_acc *rtv;
@@ -785,7 +807,7 @@ err:
785} 807}
786 808
787/** 809/**
788 * fc_rport_enter_rtv - Send Request Timeout Value (RTV) request to peer 810 * fc_rport_enter_rtv() - Send Request Timeout Value (RTV) request to peer
789 * @rport: Fibre Channel remote port to send RTV to 811 * @rport: Fibre Channel remote port to send RTV to
790 * 812 *
791 * Locking Note: The rport lock is expected to be held before calling 813 * Locking Note: The rport lock is expected to be held before calling
@@ -804,19 +826,19 @@ static void fc_rport_enter_rtv(struct fc_rport *rport)
804 826
805 fp = fc_frame_alloc(lport, sizeof(struct fc_els_rtv)); 827 fp = fc_frame_alloc(lport, sizeof(struct fc_els_rtv));
806 if (!fp) { 828 if (!fp) {
807 fc_rport_error(rport, fp); 829 fc_rport_error_retry(rport, fp);
808 return; 830 return;
809 } 831 }
810 832
811 if (!lport->tt.elsct_send(lport, rport, fp, ELS_RTV, 833 if (!lport->tt.elsct_send(lport, rport, fp, ELS_RTV,
812 fc_rport_rtv_resp, rport, lport->e_d_tov)) 834 fc_rport_rtv_resp, rport, lport->e_d_tov))
813 fc_rport_error(rport, fp); 835 fc_rport_error_retry(rport, fp);
814 else 836 else
815 get_device(&rport->dev); 837 get_device(&rport->dev);
816} 838}
817 839
818/** 840/**
819 * fc_rport_enter_logo - Send Logout (LOGO) request to peer 841 * fc_rport_enter_logo() - Send Logout (LOGO) request to peer
820 * @rport: Fibre Channel remote port to send LOGO to 842 * @rport: Fibre Channel remote port to send LOGO to
821 * 843 *
822 * Locking Note: The rport lock is expected to be held before calling 844 * Locking Note: The rport lock is expected to be held before calling
@@ -835,20 +857,20 @@ static void fc_rport_enter_logo(struct fc_rport *rport)
835 857
836 fp = fc_frame_alloc(lport, sizeof(struct fc_els_logo)); 858 fp = fc_frame_alloc(lport, sizeof(struct fc_els_logo));
837 if (!fp) { 859 if (!fp) {
838 fc_rport_error(rport, fp); 860 fc_rport_error_retry(rport, fp);
839 return; 861 return;
840 } 862 }
841 863
842 if (!lport->tt.elsct_send(lport, rport, fp, ELS_LOGO, 864 if (!lport->tt.elsct_send(lport, rport, fp, ELS_LOGO,
843 fc_rport_logo_resp, rport, lport->e_d_tov)) 865 fc_rport_logo_resp, rport, lport->e_d_tov))
844 fc_rport_error(rport, fp); 866 fc_rport_error_retry(rport, fp);
845 else 867 else
846 get_device(&rport->dev); 868 get_device(&rport->dev);
847} 869}
848 870
849 871
850/** 872/**
851 * fc_rport_recv_req - Receive a request from a rport 873 * fc_rport_recv_req() - Receive a request from a rport
852 * @sp: current sequence in the PLOGI exchange 874 * @sp: current sequence in the PLOGI exchange
853 * @fp: response frame 875 * @fp: response frame
854 * @rp_arg: Fibre Channel remote port 876 * @rp_arg: Fibre Channel remote port
@@ -909,7 +931,7 @@ void fc_rport_recv_req(struct fc_seq *sp, struct fc_frame *fp,
909} 931}
910 932
911/** 933/**
912 * fc_rport_recv_plogi_req - Handle incoming Port Login (PLOGI) request 934 * fc_rport_recv_plogi_req() - Handle incoming Port Login (PLOGI) request
913 * @rport: Fibre Channel remote port that initiated PLOGI 935 * @rport: Fibre Channel remote port that initiated PLOGI
914 * @sp: current sequence in the PLOGI exchange 936 * @sp: current sequence in the PLOGI exchange
915 * @fp: PLOGI request frame 937 * @fp: PLOGI request frame
@@ -1031,7 +1053,7 @@ static void fc_rport_recv_plogi_req(struct fc_rport *rport,
1031} 1053}
1032 1054
1033/** 1055/**
1034 * fc_rport_recv_prli_req - Handle incoming Process Login (PRLI) request 1056 * fc_rport_recv_prli_req() - Handle incoming Process Login (PRLI) request
1035 * @rport: Fibre Channel remote port that initiated PRLI 1057 * @rport: Fibre Channel remote port that initiated PRLI
1036 * @sp: current sequence in the PRLI exchange 1058 * @sp: current sequence in the PRLI exchange
1037 * @fp: PRLI request frame 1059 * @fp: PRLI request frame
@@ -1182,7 +1204,7 @@ static void fc_rport_recv_prli_req(struct fc_rport *rport,
1182} 1204}
1183 1205
1184/** 1206/**
1185 * fc_rport_recv_prlo_req - Handle incoming Process Logout (PRLO) request 1207 * fc_rport_recv_prlo_req() - Handle incoming Process Logout (PRLO) request
1186 * @rport: Fibre Channel remote port that initiated PRLO 1208 * @rport: Fibre Channel remote port that initiated PRLO
1187 * @sp: current sequence in the PRLO exchange 1209 * @sp: current sequence in the PRLO exchange
1188 * @fp: PRLO request frame 1210 * @fp: PRLO request frame
@@ -1213,7 +1235,7 @@ static void fc_rport_recv_prlo_req(struct fc_rport *rport, struct fc_seq *sp,
1213} 1235}
1214 1236
1215/** 1237/**
1216 * fc_rport_recv_logo_req - Handle incoming Logout (LOGO) request 1238 * fc_rport_recv_logo_req() - Handle incoming Logout (LOGO) request
1217 * @rport: Fibre Channel remote port that initiated LOGO 1239 * @rport: Fibre Channel remote port that initiated LOGO
1218 * @sp: current sequence in the LOGO exchange 1240 * @sp: current sequence in the LOGO exchange
1219 * @fp: LOGO request frame 1241 * @fp: LOGO request frame
@@ -1249,6 +1271,9 @@ static void fc_rport_flush_queue(void)
1249 1271
1250int fc_rport_init(struct fc_lport *lport) 1272int fc_rport_init(struct fc_lport *lport)
1251{ 1273{
1274 if (!lport->tt.rport_create)
1275 lport->tt.rport_create = fc_rport_rogue_create;
1276
1252 if (!lport->tt.rport_login) 1277 if (!lport->tt.rport_login)
1253 lport->tt.rport_login = fc_rport_login; 1278 lport->tt.rport_login = fc_rport_login;
1254 1279
@@ -1285,7 +1310,7 @@ void fc_rport_terminate_io(struct fc_rport *rport)
1285 struct fc_rport_libfc_priv *rdata = rport->dd_data; 1310 struct fc_rport_libfc_priv *rdata = rport->dd_data;
1286 struct fc_lport *lport = rdata->local_port; 1311 struct fc_lport *lport = rdata->local_port;
1287 1312
1288 lport->tt.exch_mgr_reset(lport->emp, 0, rport->port_id); 1313 lport->tt.exch_mgr_reset(lport, 0, rport->port_id);
1289 lport->tt.exch_mgr_reset(lport->emp, rport->port_id, 0); 1314 lport->tt.exch_mgr_reset(lport, rport->port_id, 0);
1290} 1315}
1291EXPORT_SYMBOL(fc_rport_terminate_io); 1316EXPORT_SYMBOL(fc_rport_terminate_io);
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index f4c57227ec18..ee9d40152430 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -244,12 +244,6 @@ qla2x00_sysfs_write_optrom_ctl(struct kobject *kobj,
244 if (ha->optrom_state != QLA_SWAITING) 244 if (ha->optrom_state != QLA_SWAITING)
245 break; 245 break;
246 246
247 if (start & 0xfff) {
248 qla_printk(KERN_WARNING, ha,
249 "Invalid start region 0x%x/0x%x.\n", start, size);
250 return -EINVAL;
251 }
252
253 ha->optrom_region_start = start; 247 ha->optrom_region_start = start;
254 ha->optrom_region_size = start + size > ha->optrom_size ? 248 ha->optrom_region_size = start + size > ha->optrom_size ?
255 ha->optrom_size - start : size; 249 ha->optrom_size - start : size;
@@ -303,8 +297,7 @@ qla2x00_sysfs_write_optrom_ctl(struct kobject *kobj,
303 else if (start == (ha->flt_region_boot * 4) || 297 else if (start == (ha->flt_region_boot * 4) ||
304 start == (ha->flt_region_fw * 4)) 298 start == (ha->flt_region_fw * 4))
305 valid = 1; 299 valid = 1;
306 else if ((IS_QLA25XX(ha) || IS_QLA81XX(ha)) && 300 else if (IS_QLA25XX(ha) || IS_QLA81XX(ha))
307 start == (ha->flt_region_vpd_nvram * 4))
308 valid = 1; 301 valid = 1;
309 if (!valid) { 302 if (!valid) {
310 qla_printk(KERN_WARNING, ha, 303 qla_printk(KERN_WARNING, ha,
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 986501759ad4..87f9abc71460 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1308,8 +1308,12 @@ qla2x00_init_rings(scsi_qla_host_t *vha)
1308 1308
1309 DEBUG(printk("scsi(%ld): Issue init firmware.\n", vha->host_no)); 1309 DEBUG(printk("scsi(%ld): Issue init firmware.\n", vha->host_no));
1310 1310
1311 if (ha->flags.npiv_supported) 1311 if (ha->flags.npiv_supported) {
1312 if (ha->operating_mode == LOOP)
1313 ha->max_npiv_vports = MIN_MULTI_ID_FABRIC - 1;
1312 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports); 1314 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports);
1315 }
1316
1313 1317
1314 mid_init_cb->options = __constant_cpu_to_le16(BIT_1); 1318 mid_init_cb->options = __constant_cpu_to_le16(BIT_1);
1315 1319
@@ -2610,6 +2614,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
2610 port_id_t wrap, nxt_d_id; 2614 port_id_t wrap, nxt_d_id;
2611 struct qla_hw_data *ha = vha->hw; 2615 struct qla_hw_data *ha = vha->hw;
2612 struct scsi_qla_host *vp, *base_vha = pci_get_drvdata(ha->pdev); 2616 struct scsi_qla_host *vp, *base_vha = pci_get_drvdata(ha->pdev);
2617 struct scsi_qla_host *tvp;
2613 2618
2614 rval = QLA_SUCCESS; 2619 rval = QLA_SUCCESS;
2615 2620
@@ -2709,7 +2714,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
2709 /* Bypass virtual ports of the same host. */ 2714 /* Bypass virtual ports of the same host. */
2710 found = 0; 2715 found = 0;
2711 if (ha->num_vhosts) { 2716 if (ha->num_vhosts) {
2712 list_for_each_entry(vp, &ha->vp_list, list) { 2717 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
2713 if (new_fcport->d_id.b24 == vp->d_id.b24) { 2718 if (new_fcport->d_id.b24 == vp->d_id.b24) {
2714 found = 1; 2719 found = 1;
2715 break; 2720 break;
@@ -2832,6 +2837,7 @@ qla2x00_find_new_loop_id(scsi_qla_host_t *vha, fc_port_t *dev)
2832 uint16_t first_loop_id; 2837 uint16_t first_loop_id;
2833 struct qla_hw_data *ha = vha->hw; 2838 struct qla_hw_data *ha = vha->hw;
2834 struct scsi_qla_host *vp; 2839 struct scsi_qla_host *vp;
2840 struct scsi_qla_host *tvp;
2835 2841
2836 rval = QLA_SUCCESS; 2842 rval = QLA_SUCCESS;
2837 2843
@@ -2856,7 +2862,7 @@ qla2x00_find_new_loop_id(scsi_qla_host_t *vha, fc_port_t *dev)
2856 /* Check for loop ID being already in use. */ 2862 /* Check for loop ID being already in use. */
2857 found = 0; 2863 found = 0;
2858 fcport = NULL; 2864 fcport = NULL;
2859 list_for_each_entry(vp, &ha->vp_list, list) { 2865 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
2860 list_for_each_entry(fcport, &vp->vp_fcports, list) { 2866 list_for_each_entry(fcport, &vp->vp_fcports, list) {
2861 if (fcport->loop_id == dev->loop_id && 2867 if (fcport->loop_id == dev->loop_id &&
2862 fcport != dev) { 2868 fcport != dev) {
@@ -3291,6 +3297,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
3291 uint8_t status = 0; 3297 uint8_t status = 0;
3292 struct qla_hw_data *ha = vha->hw; 3298 struct qla_hw_data *ha = vha->hw;
3293 struct scsi_qla_host *vp; 3299 struct scsi_qla_host *vp;
3300 struct scsi_qla_host *tvp;
3294 struct req_que *req = ha->req_q_map[0]; 3301 struct req_que *req = ha->req_q_map[0];
3295 3302
3296 if (vha->flags.online) { 3303 if (vha->flags.online) {
@@ -3306,7 +3313,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
3306 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { 3313 if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
3307 atomic_set(&vha->loop_state, LOOP_DOWN); 3314 atomic_set(&vha->loop_state, LOOP_DOWN);
3308 qla2x00_mark_all_devices_lost(vha, 0); 3315 qla2x00_mark_all_devices_lost(vha, 0);
3309 list_for_each_entry(vp, &ha->vp_list, list) 3316 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list)
3310 qla2x00_mark_all_devices_lost(vp, 0); 3317 qla2x00_mark_all_devices_lost(vp, 0);
3311 } else { 3318 } else {
3312 if (!atomic_read(&vha->loop_down_timer)) 3319 if (!atomic_read(&vha->loop_down_timer))
@@ -3403,7 +3410,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
3403 DEBUG(printk(KERN_INFO 3410 DEBUG(printk(KERN_INFO
3404 "qla2x00_abort_isp(%ld): succeeded.\n", 3411 "qla2x00_abort_isp(%ld): succeeded.\n",
3405 vha->host_no)); 3412 vha->host_no));
3406 list_for_each_entry(vp, &ha->vp_list, list) { 3413 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
3407 if (vp->vp_idx) 3414 if (vp->vp_idx)
3408 qla2x00_vp_abort_isp(vp); 3415 qla2x00_vp_abort_isp(vp);
3409 } 3416 }
@@ -3428,7 +3435,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
3428static int 3435static int
3429qla2x00_restart_isp(scsi_qla_host_t *vha) 3436qla2x00_restart_isp(scsi_qla_host_t *vha)
3430{ 3437{
3431 uint8_t status = 0; 3438 int status = 0;
3432 uint32_t wait_time; 3439 uint32_t wait_time;
3433 struct qla_hw_data *ha = vha->hw; 3440 struct qla_hw_data *ha = vha->hw;
3434 struct req_que *req = ha->req_q_map[0]; 3441 struct req_que *req = ha->req_q_map[0];
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 4c7504cb3990..4aab7acf7525 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -2685,6 +2685,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha,
2685 uint16_t stat = le16_to_cpu(rptid_entry->vp_idx); 2685 uint16_t stat = le16_to_cpu(rptid_entry->vp_idx);
2686 struct qla_hw_data *ha = vha->hw; 2686 struct qla_hw_data *ha = vha->hw;
2687 scsi_qla_host_t *vp; 2687 scsi_qla_host_t *vp;
2688 scsi_qla_host_t *tvp;
2688 2689
2689 if (rptid_entry->entry_status != 0) 2690 if (rptid_entry->entry_status != 0)
2690 return; 2691 return;
@@ -2710,7 +2711,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha,
2710 if (MSB(stat) == 1) 2711 if (MSB(stat) == 1)
2711 return; 2712 return;
2712 2713
2713 list_for_each_entry(vp, &ha->vp_list, list) 2714 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list)
2714 if (vp_idx == vp->vp_idx) 2715 if (vp_idx == vp->vp_idx)
2715 break; 2716 break;
2716 if (!vp) 2717 if (!vp)
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
index 3f23932210c4..785c61279e6e 100644
--- a/drivers/scsi/qla2xxx/qla_mid.c
+++ b/drivers/scsi/qla2xxx/qla_mid.c
@@ -69,9 +69,10 @@ static scsi_qla_host_t *
69qla24xx_find_vhost_by_name(struct qla_hw_data *ha, uint8_t *port_name) 69qla24xx_find_vhost_by_name(struct qla_hw_data *ha, uint8_t *port_name)
70{ 70{
71 scsi_qla_host_t *vha; 71 scsi_qla_host_t *vha;
72 struct scsi_qla_host *tvha;
72 73
73 /* Locate matching device in database. */ 74 /* Locate matching device in database. */
74 list_for_each_entry(vha, &ha->vp_list, list) { 75 list_for_each_entry_safe(vha, tvha, &ha->vp_list, list) {
75 if (!memcmp(port_name, vha->port_name, WWN_SIZE)) 76 if (!memcmp(port_name, vha->port_name, WWN_SIZE))
76 return vha; 77 return vha;
77 } 78 }
@@ -194,11 +195,11 @@ qla24xx_configure_vp(scsi_qla_host_t *vha)
194void 195void
195qla2x00_alert_all_vps(struct rsp_que *rsp, uint16_t *mb) 196qla2x00_alert_all_vps(struct rsp_que *rsp, uint16_t *mb)
196{ 197{
197 scsi_qla_host_t *vha; 198 scsi_qla_host_t *vha, *tvha;
198 struct qla_hw_data *ha = rsp->hw; 199 struct qla_hw_data *ha = rsp->hw;
199 int i = 0; 200 int i = 0;
200 201
201 list_for_each_entry(vha, &ha->vp_list, list) { 202 list_for_each_entry_safe(vha, tvha, &ha->vp_list, list) {
202 if (vha->vp_idx) { 203 if (vha->vp_idx) {
203 switch (mb[0]) { 204 switch (mb[0]) {
204 case MBA_LIP_OCCURRED: 205 case MBA_LIP_OCCURRED:
@@ -300,6 +301,7 @@ qla2x00_do_dpc_all_vps(scsi_qla_host_t *vha)
300 int ret; 301 int ret;
301 struct qla_hw_data *ha = vha->hw; 302 struct qla_hw_data *ha = vha->hw;
302 scsi_qla_host_t *vp; 303 scsi_qla_host_t *vp;
304 struct scsi_qla_host *tvp;
303 305
304 if (vha->vp_idx) 306 if (vha->vp_idx)
305 return; 307 return;
@@ -308,7 +310,7 @@ qla2x00_do_dpc_all_vps(scsi_qla_host_t *vha)
308 310
309 clear_bit(VP_DPC_NEEDED, &vha->dpc_flags); 311 clear_bit(VP_DPC_NEEDED, &vha->dpc_flags);
310 312
311 list_for_each_entry(vp, &ha->vp_list, list) { 313 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
312 if (vp->vp_idx) 314 if (vp->vp_idx)
313 ret = qla2x00_do_dpc_vp(vp); 315 ret = qla2x00_do_dpc_vp(vp);
314 } 316 }
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 2f5f72531e23..3ddfa889e949 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2222,10 +2222,6 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
2222{ 2222{
2223 char name[16]; 2223 char name[16];
2224 2224
2225 ha->init_cb_size = sizeof(init_cb_t);
2226 if (IS_QLA2XXX_MIDTYPE(ha))
2227 ha->init_cb_size = sizeof(struct mid_init_cb_24xx);
2228
2229 ha->init_cb = dma_alloc_coherent(&ha->pdev->dev, ha->init_cb_size, 2225 ha->init_cb = dma_alloc_coherent(&ha->pdev->dev, ha->init_cb_size,
2230 &ha->init_cb_dma, GFP_KERNEL); 2226 &ha->init_cb_dma, GFP_KERNEL);
2231 if (!ha->init_cb) 2227 if (!ha->init_cb)
@@ -2568,7 +2564,7 @@ qla2x00_do_work(struct scsi_qla_host *vha)
2568void qla2x00_relogin(struct scsi_qla_host *vha) 2564void qla2x00_relogin(struct scsi_qla_host *vha)
2569{ 2565{
2570 fc_port_t *fcport; 2566 fc_port_t *fcport;
2571 uint8_t status; 2567 int status;
2572 uint16_t next_loopid = 0; 2568 uint16_t next_loopid = 0;
2573 struct qla_hw_data *ha = vha->hw; 2569 struct qla_hw_data *ha = vha->hw;
2574 2570
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index 79f7053da99b..a772eab2f0ea 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
7/* 7/*
8 * Driver version 8 * Driver version
9 */ 9 */
10#define QLA2XXX_VERSION "8.03.00-k3" 10#define QLA2XXX_VERSION "8.03.00-k4"
11 11
12#define QLA_DRIVER_MAJOR_VER 8 12#define QLA_DRIVER_MAJOR_VER 8
13#define QLA_DRIVER_MINOR_VER 3 13#define QLA_DRIVER_MINOR_VER 3
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 55310dbc10a6..4970ae4a62d6 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1167,23 +1167,19 @@ sd_spinup_disk(struct scsi_disk *sdkp)
1167 /* 1167 /*
1168 * The device does not want the automatic start to be issued. 1168 * The device does not want the automatic start to be issued.
1169 */ 1169 */
1170 if (sdkp->device->no_start_on_add) { 1170 if (sdkp->device->no_start_on_add)
1171 break; 1171 break;
1172 }
1173
1174 /*
1175 * If manual intervention is required, or this is an
1176 * absent USB storage device, a spinup is meaningless.
1177 */
1178 if (sense_valid &&
1179 sshdr.sense_key == NOT_READY &&
1180 sshdr.asc == 4 && sshdr.ascq == 3) {
1181 break; /* manual intervention required */
1182 1172
1183 /* 1173 if (sense_valid && sshdr.sense_key == NOT_READY) {
1184 * Issue command to spin up drive when not ready 1174 if (sshdr.asc == 4 && sshdr.ascq == 3)
1185 */ 1175 break; /* manual intervention required */
1186 } else if (sense_valid && sshdr.sense_key == NOT_READY) { 1176 if (sshdr.asc == 4 && sshdr.ascq == 0xb)
1177 break; /* standby */
1178 if (sshdr.asc == 4 && sshdr.ascq == 0xc)
1179 break; /* unavailable */
1180 /*
1181 * Issue command to spin up drive when not ready
1182 */
1187 if (!spintime) { 1183 if (!spintime) {
1188 sd_printk(KERN_NOTICE, sdkp, "Spinning up disk..."); 1184 sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");
1189 cmd[0] = START_STOP; 1185 cmd[0] = START_STOP;
diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c
index a8d61a62522e..97f3158fa7b5 100644
--- a/drivers/scsi/zalon.c
+++ b/drivers/scsi/zalon.c
@@ -137,7 +137,7 @@ zalon_probe(struct parisc_device *dev)
137 goto fail; 137 goto fail;
138 138
139 if (request_irq(dev->irq, ncr53c8xx_intr, IRQF_SHARED, "zalon", host)) { 139 if (request_irq(dev->irq, ncr53c8xx_intr, IRQF_SHARED, "zalon", host)) {
140 dev_printk(KERN_ERR, dev, "irq problem with %d, detaching\n ", 140 dev_printk(KERN_ERR, &dev->dev, "irq problem with %d, detaching\n ",
141 dev->irq); 141 dev->irq);
142 goto fail; 142 goto fail;
143 } 143 }
diff --git a/fs/bio-integrity.c b/fs/bio-integrity.c
index 549b0144da11..fe2b1aa2464e 100644
--- a/fs/bio-integrity.c
+++ b/fs/bio-integrity.c
@@ -685,19 +685,20 @@ EXPORT_SYMBOL(bio_integrity_split);
685 * bio_integrity_clone - Callback for cloning bios with integrity metadata 685 * bio_integrity_clone - Callback for cloning bios with integrity metadata
686 * @bio: New bio 686 * @bio: New bio
687 * @bio_src: Original bio 687 * @bio_src: Original bio
688 * @gfp_mask: Memory allocation mask
688 * @bs: bio_set to allocate bip from 689 * @bs: bio_set to allocate bip from
689 * 690 *
690 * Description: Called to allocate a bip when cloning a bio 691 * Description: Called to allocate a bip when cloning a bio
691 */ 692 */
692int bio_integrity_clone(struct bio *bio, struct bio *bio_src, 693int bio_integrity_clone(struct bio *bio, struct bio *bio_src,
693 struct bio_set *bs) 694 gfp_t gfp_mask, struct bio_set *bs)
694{ 695{
695 struct bio_integrity_payload *bip_src = bio_src->bi_integrity; 696 struct bio_integrity_payload *bip_src = bio_src->bi_integrity;
696 struct bio_integrity_payload *bip; 697 struct bio_integrity_payload *bip;
697 698
698 BUG_ON(bip_src == NULL); 699 BUG_ON(bip_src == NULL);
699 700
700 bip = bio_integrity_alloc_bioset(bio, GFP_NOIO, bip_src->bip_vcnt, bs); 701 bip = bio_integrity_alloc_bioset(bio, gfp_mask, bip_src->bip_vcnt, bs);
701 702
702 if (bip == NULL) 703 if (bip == NULL)
703 return -EIO; 704 return -EIO;
diff --git a/fs/bio.c b/fs/bio.c
index 124b95c4d582..d4f06327c810 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -463,10 +463,12 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask)
463 if (bio_integrity(bio)) { 463 if (bio_integrity(bio)) {
464 int ret; 464 int ret;
465 465
466 ret = bio_integrity_clone(b, bio, fs_bio_set); 466 ret = bio_integrity_clone(b, bio, gfp_mask, fs_bio_set);
467 467
468 if (ret < 0) 468 if (ret < 0) {
469 bio_put(b);
469 return NULL; 470 return NULL;
471 }
470 } 472 }
471 473
472 return b; 474 return b;
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index f6caeb1d1106..bdca1f4b3a3e 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -946,6 +946,8 @@ static int ecryptfs_copy_mount_wide_sigs_to_inode_sigs(
946 list_for_each_entry(global_auth_tok, 946 list_for_each_entry(global_auth_tok,
947 &mount_crypt_stat->global_auth_tok_list, 947 &mount_crypt_stat->global_auth_tok_list,
948 mount_crypt_stat_list) { 948 mount_crypt_stat_list) {
949 if (global_auth_tok->flags & ECRYPTFS_AUTH_TOK_FNEK)
950 continue;
949 rc = ecryptfs_add_keysig(crypt_stat, global_auth_tok->sig); 951 rc = ecryptfs_add_keysig(crypt_stat, global_auth_tok->sig);
950 if (rc) { 952 if (rc) {
951 printk(KERN_ERR "Error adding keysig; rc = [%d]\n", rc); 953 printk(KERN_ERR "Error adding keysig; rc = [%d]\n", rc);
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h
index c11fc95714ab..eb2267eca1fe 100644
--- a/fs/ecryptfs/ecryptfs_kernel.h
+++ b/fs/ecryptfs/ecryptfs_kernel.h
@@ -328,6 +328,7 @@ struct ecryptfs_dentry_info {
328 */ 328 */
329struct ecryptfs_global_auth_tok { 329struct ecryptfs_global_auth_tok {
330#define ECRYPTFS_AUTH_TOK_INVALID 0x00000001 330#define ECRYPTFS_AUTH_TOK_INVALID 0x00000001
331#define ECRYPTFS_AUTH_TOK_FNEK 0x00000002
331 u32 flags; 332 u32 flags;
332 struct list_head mount_crypt_stat_list; 333 struct list_head mount_crypt_stat_list;
333 struct key *global_auth_tok_key; 334 struct key *global_auth_tok_key;
@@ -696,7 +697,7 @@ ecryptfs_write_header_metadata(char *virt,
696int ecryptfs_add_keysig(struct ecryptfs_crypt_stat *crypt_stat, char *sig); 697int ecryptfs_add_keysig(struct ecryptfs_crypt_stat *crypt_stat, char *sig);
697int 698int
698ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat, 699ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat,
699 char *sig); 700 char *sig, u32 global_auth_tok_flags);
700int ecryptfs_get_global_auth_tok_for_sig( 701int ecryptfs_get_global_auth_tok_for_sig(
701 struct ecryptfs_global_auth_tok **global_auth_tok, 702 struct ecryptfs_global_auth_tok **global_auth_tok,
702 struct ecryptfs_mount_crypt_stat *mount_crypt_stat, char *sig); 703 struct ecryptfs_mount_crypt_stat *mount_crypt_stat, char *sig);
diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c
index ff539420cc6f..e4a6223c3145 100644
--- a/fs/ecryptfs/keystore.c
+++ b/fs/ecryptfs/keystore.c
@@ -2375,7 +2375,7 @@ struct kmem_cache *ecryptfs_global_auth_tok_cache;
2375 2375
2376int 2376int
2377ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat, 2377ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat,
2378 char *sig) 2378 char *sig, u32 global_auth_tok_flags)
2379{ 2379{
2380 struct ecryptfs_global_auth_tok *new_auth_tok; 2380 struct ecryptfs_global_auth_tok *new_auth_tok;
2381 int rc = 0; 2381 int rc = 0;
@@ -2389,6 +2389,7 @@ ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat,
2389 goto out; 2389 goto out;
2390 } 2390 }
2391 memcpy(new_auth_tok->sig, sig, ECRYPTFS_SIG_SIZE_HEX); 2391 memcpy(new_auth_tok->sig, sig, ECRYPTFS_SIG_SIZE_HEX);
2392 new_auth_tok->flags = global_auth_tok_flags;
2392 new_auth_tok->sig[ECRYPTFS_SIG_SIZE_HEX] = '\0'; 2393 new_auth_tok->sig[ECRYPTFS_SIG_SIZE_HEX] = '\0';
2393 mutex_lock(&mount_crypt_stat->global_auth_tok_list_mutex); 2394 mutex_lock(&mount_crypt_stat->global_auth_tok_list_mutex);
2394 list_add(&new_auth_tok->mount_crypt_stat_list, 2395 list_add(&new_auth_tok->mount_crypt_stat_list,
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index 789cf2e1be1e..aed56c25539b 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -319,7 +319,7 @@ static int ecryptfs_parse_options(struct super_block *sb, char *options)
319 case ecryptfs_opt_ecryptfs_sig: 319 case ecryptfs_opt_ecryptfs_sig:
320 sig_src = args[0].from; 320 sig_src = args[0].from;
321 rc = ecryptfs_add_global_auth_tok(mount_crypt_stat, 321 rc = ecryptfs_add_global_auth_tok(mount_crypt_stat,
322 sig_src); 322 sig_src, 0);
323 if (rc) { 323 if (rc) {
324 printk(KERN_ERR "Error attempting to register " 324 printk(KERN_ERR "Error attempting to register "
325 "global sig; rc = [%d]\n", rc); 325 "global sig; rc = [%d]\n", rc);
@@ -370,7 +370,8 @@ static int ecryptfs_parse_options(struct super_block *sb, char *options)
370 ECRYPTFS_SIG_SIZE_HEX] = '\0'; 370 ECRYPTFS_SIG_SIZE_HEX] = '\0';
371 rc = ecryptfs_add_global_auth_tok( 371 rc = ecryptfs_add_global_auth_tok(
372 mount_crypt_stat, 372 mount_crypt_stat,
373 mount_crypt_stat->global_default_fnek_sig); 373 mount_crypt_stat->global_default_fnek_sig,
374 ECRYPTFS_AUTH_TOK_FNEK);
374 if (rc) { 375 if (rc) {
375 printk(KERN_ERR "Error attempting to register " 376 printk(KERN_ERR "Error attempting to register "
376 "global fnek sig [%s]; rc = [%d]\n", 377 "global fnek sig [%s]; rc = [%d]\n",
diff --git a/fs/lockd/clntlock.c b/fs/lockd/clntlock.c
index 1f3b0fc0d351..aedc47a264c1 100644
--- a/fs/lockd/clntlock.c
+++ b/fs/lockd/clntlock.c
@@ -139,6 +139,55 @@ int nlmclnt_block(struct nlm_wait *block, struct nlm_rqst *req, long timeout)
139 return 0; 139 return 0;
140} 140}
141 141
142#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
143static const struct in6_addr *nlmclnt_map_v4addr(const struct sockaddr *sap,
144 struct in6_addr *addr_mapped)
145{
146 const struct sockaddr_in *sin = (const struct sockaddr_in *)sap;
147
148 switch (sap->sa_family) {
149 case AF_INET6:
150 return &((const struct sockaddr_in6 *)sap)->sin6_addr;
151 case AF_INET:
152 ipv6_addr_set_v4mapped(sin->sin_addr.s_addr, addr_mapped);
153 return addr_mapped;
154 }
155
156 return NULL;
157}
158
159/*
160 * If lockd is using a PF_INET6 listener, all incoming requests appear
161 * to come from AF_INET6 remotes. The address of AF_INET remotes are
162 * mapped to AF_INET6 automatically by the network layer. In case the
163 * user passed an AF_INET server address at mount time, ensure both
164 * addresses are AF_INET6 before comparing them.
165 */
166static int nlmclnt_cmp_addr(const struct nlm_host *host,
167 const struct sockaddr *sap)
168{
169 const struct in6_addr *addr1;
170 const struct in6_addr *addr2;
171 struct in6_addr addr1_mapped;
172 struct in6_addr addr2_mapped;
173
174 addr1 = nlmclnt_map_v4addr(nlm_addr(host), &addr1_mapped);
175 if (likely(addr1 != NULL)) {
176 addr2 = nlmclnt_map_v4addr(sap, &addr2_mapped);
177 if (likely(addr2 != NULL))
178 return ipv6_addr_equal(addr1, addr2);
179 }
180
181 return 0;
182}
183#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
184static int nlmclnt_cmp_addr(const struct nlm_host *host,
185 const struct sockaddr *sap)
186{
187 return nlm_cmp_addr(nlm_addr(host), sap);
188}
189#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
190
142/* 191/*
143 * The server lockd has called us back to tell us the lock was granted 192 * The server lockd has called us back to tell us the lock was granted
144 */ 193 */
@@ -166,7 +215,7 @@ __be32 nlmclnt_grant(const struct sockaddr *addr, const struct nlm_lock *lock)
166 */ 215 */
167 if (fl_blocked->fl_u.nfs_fl.owner->pid != lock->svid) 216 if (fl_blocked->fl_u.nfs_fl.owner->pid != lock->svid)
168 continue; 217 continue;
169 if (!nlm_cmp_addr(nlm_addr(block->b_host), addr)) 218 if (!nlmclnt_cmp_addr(block->b_host, addr))
170 continue; 219 continue;
171 if (nfs_compare_fh(NFS_FH(fl_blocked->fl_file->f_path.dentry->d_inode) ,fh) != 0) 220 if (nfs_compare_fh(NFS_FH(fl_blocked->fl_file->f_path.dentry->d_inode) ,fh) != 0)
172 continue; 221 continue;
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 9b728f3565a1..574158ae2398 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -255,6 +255,32 @@ static int nfs_sockaddr_match_ipaddr(const struct sockaddr *sa1,
255 } 255 }
256 return 0; 256 return 0;
257} 257}
258
259/*
260 * Test if two ip6 socket addresses refer to the same socket by
261 * comparing relevant fields. The padding bytes specifically, are not
262 * compared. sin6_flowinfo is not compared because it only affects QoS
263 * and sin6_scope_id is only compared if the address is "link local"
264 * because "link local" addresses need only be unique to a specific
265 * link. Conversely, ordinary unicast addresses might have different
266 * sin6_scope_id.
267 *
268 * The caller should ensure both socket addresses are AF_INET6.
269 */
270static int nfs_sockaddr_cmp_ip6(const struct sockaddr *sa1,
271 const struct sockaddr *sa2)
272{
273 const struct sockaddr_in6 *saddr1 = (const struct sockaddr_in6 *)sa1;
274 const struct sockaddr_in6 *saddr2 = (const struct sockaddr_in6 *)sa2;
275
276 if (!ipv6_addr_equal(&saddr1->sin6_addr,
277 &saddr1->sin6_addr))
278 return 0;
279 if (ipv6_addr_scope(&saddr1->sin6_addr) == IPV6_ADDR_SCOPE_LINKLOCAL &&
280 saddr1->sin6_scope_id != saddr2->sin6_scope_id)
281 return 0;
282 return saddr1->sin6_port == saddr2->sin6_port;
283}
258#else 284#else
259static int nfs_sockaddr_match_ipaddr4(const struct sockaddr_in *sa1, 285static int nfs_sockaddr_match_ipaddr4(const struct sockaddr_in *sa1,
260 const struct sockaddr_in *sa2) 286 const struct sockaddr_in *sa2)
@@ -270,9 +296,52 @@ static int nfs_sockaddr_match_ipaddr(const struct sockaddr *sa1,
270 return nfs_sockaddr_match_ipaddr4((const struct sockaddr_in *)sa1, 296 return nfs_sockaddr_match_ipaddr4((const struct sockaddr_in *)sa1,
271 (const struct sockaddr_in *)sa2); 297 (const struct sockaddr_in *)sa2);
272} 298}
299
300static int nfs_sockaddr_cmp_ip6(const struct sockaddr * sa1,
301 const struct sockaddr * sa2)
302{
303 return 0;
304}
273#endif 305#endif
274 306
275/* 307/*
308 * Test if two ip4 socket addresses refer to the same socket, by
309 * comparing relevant fields. The padding bytes specifically, are
310 * not compared.
311 *
312 * The caller should ensure both socket addresses are AF_INET.
313 */
314static int nfs_sockaddr_cmp_ip4(const struct sockaddr *sa1,
315 const struct sockaddr *sa2)
316{
317 const struct sockaddr_in *saddr1 = (const struct sockaddr_in *)sa1;
318 const struct sockaddr_in *saddr2 = (const struct sockaddr_in *)sa2;
319
320 if (saddr1->sin_addr.s_addr != saddr2->sin_addr.s_addr)
321 return 0;
322 return saddr1->sin_port == saddr2->sin_port;
323}
324
325/*
326 * Test if two socket addresses represent the same actual socket,
327 * by comparing (only) relevant fields.
328 */
329static int nfs_sockaddr_cmp(const struct sockaddr *sa1,
330 const struct sockaddr *sa2)
331{
332 if (sa1->sa_family != sa2->sa_family)
333 return 0;
334
335 switch (sa1->sa_family) {
336 case AF_INET:
337 return nfs_sockaddr_cmp_ip4(sa1, sa2);
338 case AF_INET6:
339 return nfs_sockaddr_cmp_ip6(sa1, sa2);
340 }
341 return 0;
342}
343
344/*
276 * Find a client by IP address and protocol version 345 * Find a client by IP address and protocol version
277 * - returns NULL if no such client 346 * - returns NULL if no such client
278 */ 347 */
@@ -344,8 +413,10 @@ struct nfs_client *nfs_find_client_next(struct nfs_client *clp)
344static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *data) 413static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *data)
345{ 414{
346 struct nfs_client *clp; 415 struct nfs_client *clp;
416 const struct sockaddr *sap = data->addr;
347 417
348 list_for_each_entry(clp, &nfs_client_list, cl_share_link) { 418 list_for_each_entry(clp, &nfs_client_list, cl_share_link) {
419 const struct sockaddr *clap = (struct sockaddr *)&clp->cl_addr;
349 /* Don't match clients that failed to initialise properly */ 420 /* Don't match clients that failed to initialise properly */
350 if (clp->cl_cons_state < 0) 421 if (clp->cl_cons_state < 0)
351 continue; 422 continue;
@@ -358,7 +429,7 @@ static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *dat
358 continue; 429 continue;
359 430
360 /* Match the full socket address */ 431 /* Match the full socket address */
361 if (memcmp(&clp->cl_addr, data->addr, sizeof(clp->cl_addr)) != 0) 432 if (!nfs_sockaddr_cmp(sap, clap))
362 continue; 433 continue;
363 434
364 atomic_inc(&clp->cl_count); 435 atomic_inc(&clp->cl_count);
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index e35c8199f82f..672368f865ca 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1892,8 +1892,14 @@ static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)
1892 cache.cred = cred; 1892 cache.cred = cred;
1893 cache.jiffies = jiffies; 1893 cache.jiffies = jiffies;
1894 status = NFS_PROTO(inode)->access(inode, &cache); 1894 status = NFS_PROTO(inode)->access(inode, &cache);
1895 if (status != 0) 1895 if (status != 0) {
1896 if (status == -ESTALE) {
1897 nfs_zap_caches(inode);
1898 if (!S_ISDIR(inode->i_mode))
1899 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);
1900 }
1896 return status; 1901 return status;
1902 }
1897 nfs_access_add_cache(inode, &cache); 1903 nfs_access_add_cache(inode, &cache);
1898out: 1904out:
1899 if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0) 1905 if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0)
diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c
index cef62557c87d..6bbf0e6daad2 100644
--- a/fs/nfs/nfs3acl.c
+++ b/fs/nfs/nfs3acl.c
@@ -292,7 +292,7 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
292{ 292{
293 struct nfs_server *server = NFS_SERVER(inode); 293 struct nfs_server *server = NFS_SERVER(inode);
294 struct nfs_fattr fattr; 294 struct nfs_fattr fattr;
295 struct page *pages[NFSACL_MAXPAGES] = { }; 295 struct page *pages[NFSACL_MAXPAGES];
296 struct nfs3_setaclargs args = { 296 struct nfs3_setaclargs args = {
297 .inode = inode, 297 .inode = inode,
298 .mask = NFS_ACL, 298 .mask = NFS_ACL,
@@ -303,7 +303,7 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
303 .rpc_argp = &args, 303 .rpc_argp = &args,
304 .rpc_resp = &fattr, 304 .rpc_resp = &fattr,
305 }; 305 };
306 int status, count; 306 int status;
307 307
308 status = -EOPNOTSUPP; 308 status = -EOPNOTSUPP;
309 if (!nfs_server_capable(inode, NFS_CAP_ACLS)) 309 if (!nfs_server_capable(inode, NFS_CAP_ACLS))
@@ -319,6 +319,20 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
319 if (S_ISDIR(inode->i_mode)) { 319 if (S_ISDIR(inode->i_mode)) {
320 args.mask |= NFS_DFACL; 320 args.mask |= NFS_DFACL;
321 args.acl_default = dfacl; 321 args.acl_default = dfacl;
322 args.len = nfsacl_size(acl, dfacl);
323 } else
324 args.len = nfsacl_size(acl, NULL);
325
326 if (args.len > NFS_ACL_INLINE_BUFSIZE) {
327 unsigned int npages = 1 + ((args.len - 1) >> PAGE_SHIFT);
328
329 status = -ENOMEM;
330 do {
331 args.pages[args.npages] = alloc_page(GFP_KERNEL);
332 if (args.pages[args.npages] == NULL)
333 goto out_freepages;
334 args.npages++;
335 } while (args.npages < npages);
322 } 336 }
323 337
324 dprintk("NFS call setacl\n"); 338 dprintk("NFS call setacl\n");
@@ -329,10 +343,6 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
329 nfs_zap_acl_cache(inode); 343 nfs_zap_acl_cache(inode);
330 dprintk("NFS reply setacl: %d\n", status); 344 dprintk("NFS reply setacl: %d\n", status);
331 345
332 /* pages may have been allocated at the xdr layer. */
333 for (count = 0; count < NFSACL_MAXPAGES && args.pages[count]; count++)
334 __free_page(args.pages[count]);
335
336 switch (status) { 346 switch (status) {
337 case 0: 347 case 0:
338 status = nfs_refresh_inode(inode, &fattr); 348 status = nfs_refresh_inode(inode, &fattr);
@@ -346,6 +356,11 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
346 case -ENOTSUPP: 356 case -ENOTSUPP:
347 status = -EOPNOTSUPP; 357 status = -EOPNOTSUPP;
348 } 358 }
359out_freepages:
360 while (args.npages != 0) {
361 args.npages--;
362 __free_page(args.pages[args.npages]);
363 }
349out: 364out:
350 return status; 365 return status;
351} 366}
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index 11cdddec1432..6cdeacffde46 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -82,8 +82,10 @@
82#define NFS3_commitres_sz (1+NFS3_wcc_data_sz+2) 82#define NFS3_commitres_sz (1+NFS3_wcc_data_sz+2)
83 83
84#define ACL3_getaclargs_sz (NFS3_fh_sz+1) 84#define ACL3_getaclargs_sz (NFS3_fh_sz+1)
85#define ACL3_setaclargs_sz (NFS3_fh_sz+1+2*(2+5*3)) 85#define ACL3_setaclargs_sz (NFS3_fh_sz+1+ \
86#define ACL3_getaclres_sz (1+NFS3_post_op_attr_sz+1+2*(2+5*3)) 86 XDR_QUADLEN(NFS_ACL_INLINE_BUFSIZE))
87#define ACL3_getaclres_sz (1+NFS3_post_op_attr_sz+1+ \
88 XDR_QUADLEN(NFS_ACL_INLINE_BUFSIZE))
87#define ACL3_setaclres_sz (1+NFS3_post_op_attr_sz) 89#define ACL3_setaclres_sz (1+NFS3_post_op_attr_sz)
88 90
89/* 91/*
@@ -703,28 +705,18 @@ nfs3_xdr_setaclargs(struct rpc_rqst *req, __be32 *p,
703 struct nfs3_setaclargs *args) 705 struct nfs3_setaclargs *args)
704{ 706{
705 struct xdr_buf *buf = &req->rq_snd_buf; 707 struct xdr_buf *buf = &req->rq_snd_buf;
706 unsigned int base, len_in_head, len = nfsacl_size( 708 unsigned int base;
707 (args->mask & NFS_ACL) ? args->acl_access : NULL, 709 int err;
708 (args->mask & NFS_DFACL) ? args->acl_default : NULL);
709 int count, err;
710 710
711 p = xdr_encode_fhandle(p, NFS_FH(args->inode)); 711 p = xdr_encode_fhandle(p, NFS_FH(args->inode));
712 *p++ = htonl(args->mask); 712 *p++ = htonl(args->mask);
713 base = (char *)p - (char *)buf->head->iov_base; 713 req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
714 /* put as much of the acls into head as possible. */ 714 base = req->rq_slen;
715 len_in_head = min_t(unsigned int, buf->head->iov_len - base, len); 715
716 len -= len_in_head; 716 if (args->npages != 0)
717 req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + (len_in_head >> 2)); 717 xdr_encode_pages(buf, args->pages, 0, args->len);
718 718 else
719 for (count = 0; (count << PAGE_SHIFT) < len; count++) { 719 req->rq_slen += args->len;
720 args->pages[count] = alloc_page(GFP_KERNEL);
721 if (!args->pages[count]) {
722 while (count)
723 __free_page(args->pages[--count]);
724 return -ENOMEM;
725 }
726 }
727 xdr_encode_pages(buf, args->pages, 0, len);
728 720
729 err = nfsacl_encode(buf, base, args->inode, 721 err = nfsacl_encode(buf, base, args->inode,
730 (args->mask & NFS_ACL) ? 722 (args->mask & NFS_ACL) ?
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c
index 30befc39b3c6..2a2a0a7143ad 100644
--- a/fs/nfs/nfs4namespace.c
+++ b/fs/nfs/nfs4namespace.c
@@ -21,7 +21,9 @@
21#define NFSDBG_FACILITY NFSDBG_VFS 21#define NFSDBG_FACILITY NFSDBG_VFS
22 22
23/* 23/*
24 * Check if fs_root is valid 24 * Convert the NFSv4 pathname components into a standard posix path.
25 *
26 * Note that the resulting string will be placed at the end of the buffer
25 */ 27 */
26static inline char *nfs4_pathname_string(const struct nfs4_pathname *pathname, 28static inline char *nfs4_pathname_string(const struct nfs4_pathname *pathname,
27 char *buffer, ssize_t buflen) 29 char *buffer, ssize_t buflen)
@@ -99,21 +101,20 @@ static struct vfsmount *try_location(struct nfs_clone_mount *mountdata,
99{ 101{
100 struct vfsmount *mnt = ERR_PTR(-ENOENT); 102 struct vfsmount *mnt = ERR_PTR(-ENOENT);
101 char *mnt_path; 103 char *mnt_path;
102 int page2len; 104 unsigned int maxbuflen;
103 unsigned int s; 105 unsigned int s;
104 106
105 mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE); 107 mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE);
106 if (IS_ERR(mnt_path)) 108 if (IS_ERR(mnt_path))
107 return mnt; 109 return mnt;
108 mountdata->mnt_path = mnt_path; 110 mountdata->mnt_path = mnt_path;
109 page2 += strlen(mnt_path) + 1; 111 maxbuflen = mnt_path - 1 - page2;
110 page2len = PAGE_SIZE - strlen(mnt_path) - 1;
111 112
112 for (s = 0; s < location->nservers; s++) { 113 for (s = 0; s < location->nservers; s++) {
113 const struct nfs4_string *buf = &location->servers[s]; 114 const struct nfs4_string *buf = &location->servers[s];
114 struct sockaddr_storage addr; 115 struct sockaddr_storage addr;
115 116
116 if (buf->len <= 0 || buf->len >= PAGE_SIZE) 117 if (buf->len <= 0 || buf->len >= maxbuflen)
117 continue; 118 continue;
118 119
119 mountdata->addr = (struct sockaddr *)&addr; 120 mountdata->addr = (struct sockaddr *)&addr;
@@ -126,8 +127,8 @@ static struct vfsmount *try_location(struct nfs_clone_mount *mountdata,
126 continue; 127 continue;
127 nfs_set_port(mountdata->addr, NFS_PORT); 128 nfs_set_port(mountdata->addr, NFS_PORT);
128 129
129 strncpy(page2, buf->data, page2len); 130 memcpy(page2, buf->data, buf->len);
130 page2[page2len] = '\0'; 131 page2[buf->len] = '\0';
131 mountdata->hostname = page2; 132 mountdata->hostname = page2;
132 133
133 snprintf(page, PAGE_SIZE, "%s:%s", 134 snprintf(page, PAGE_SIZE, "%s:%s",
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index 3a9e5deed74d..19e3a96aa02c 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -176,7 +176,8 @@ static int ocfs2_dinode_insert_check(struct inode *inode,
176 176
177 BUG_ON(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL); 177 BUG_ON(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL);
178 mlog_bug_on_msg(!ocfs2_sparse_alloc(osb) && 178 mlog_bug_on_msg(!ocfs2_sparse_alloc(osb) &&
179 (OCFS2_I(inode)->ip_clusters != rec->e_cpos), 179 (OCFS2_I(inode)->ip_clusters !=
180 le32_to_cpu(rec->e_cpos)),
180 "Device %s, asking for sparse allocation: inode %llu, " 181 "Device %s, asking for sparse allocation: inode %llu, "
181 "cpos %u, clusters %u\n", 182 "cpos %u, clusters %u\n",
182 osb->dev_str, 183 osb->dev_str,
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index a067a6cffb01..8e1709a679b7 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -227,7 +227,7 @@ int ocfs2_read_inline_data(struct inode *inode, struct page *page,
227 size = i_size_read(inode); 227 size = i_size_read(inode);
228 228
229 if (size > PAGE_CACHE_SIZE || 229 if (size > PAGE_CACHE_SIZE ||
230 size > ocfs2_max_inline_data(inode->i_sb)) { 230 size > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) {
231 ocfs2_error(inode->i_sb, 231 ocfs2_error(inode->i_sb,
232 "Inode %llu has with inline data has bad size: %Lu", 232 "Inode %llu has with inline data has bad size: %Lu",
233 (unsigned long long)OCFS2_I(inode)->ip_blkno, 233 (unsigned long long)OCFS2_I(inode)->ip_blkno,
@@ -1555,6 +1555,7 @@ static int ocfs2_try_to_write_inline_data(struct address_space *mapping,
1555 int ret, written = 0; 1555 int ret, written = 0;
1556 loff_t end = pos + len; 1556 loff_t end = pos + len;
1557 struct ocfs2_inode_info *oi = OCFS2_I(inode); 1557 struct ocfs2_inode_info *oi = OCFS2_I(inode);
1558 struct ocfs2_dinode *di = NULL;
1558 1559
1559 mlog(0, "Inode %llu, write of %u bytes at off %llu. features: 0x%x\n", 1560 mlog(0, "Inode %llu, write of %u bytes at off %llu. features: 0x%x\n",
1560 (unsigned long long)oi->ip_blkno, len, (unsigned long long)pos, 1561 (unsigned long long)oi->ip_blkno, len, (unsigned long long)pos,
@@ -1587,7 +1588,9 @@ static int ocfs2_try_to_write_inline_data(struct address_space *mapping,
1587 /* 1588 /*
1588 * Check whether the write can fit. 1589 * Check whether the write can fit.
1589 */ 1590 */
1590 if (mmap_page || end > ocfs2_max_inline_data(inode->i_sb)) 1591 di = (struct ocfs2_dinode *)wc->w_di_bh->b_data;
1592 if (mmap_page ||
1593 end > ocfs2_max_inline_data_with_xattr(inode->i_sb, di))
1591 return 0; 1594 return 0;
1592 1595
1593do_inline_write: 1596do_inline_write:
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index 084aba86c3b2..4b11762f249e 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -532,7 +532,8 @@ static int ocfs2_mknod_locked(struct ocfs2_super *osb,
532 532
533 fe->i_dyn_features = cpu_to_le16(feat | OCFS2_INLINE_DATA_FL); 533 fe->i_dyn_features = cpu_to_le16(feat | OCFS2_INLINE_DATA_FL);
534 534
535 fe->id2.i_data.id_count = cpu_to_le16(ocfs2_max_inline_data(osb->sb)); 535 fe->id2.i_data.id_count = cpu_to_le16(
536 ocfs2_max_inline_data_with_xattr(osb->sb, fe));
536 } else { 537 } else {
537 fel = &fe->id2.i_list; 538 fel = &fe->id2.i_list;
538 fel->l_tree_depth = 0; 539 fel->l_tree_depth = 0;
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index c7ae45aaa36c..2332ef740f4f 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -1070,12 +1070,6 @@ static inline int ocfs2_fast_symlink_chars(struct super_block *sb)
1070 offsetof(struct ocfs2_dinode, id2.i_symlink); 1070 offsetof(struct ocfs2_dinode, id2.i_symlink);
1071} 1071}
1072 1072
1073static inline int ocfs2_max_inline_data(struct super_block *sb)
1074{
1075 return sb->s_blocksize -
1076 offsetof(struct ocfs2_dinode, id2.i_data.id_data);
1077}
1078
1079static inline int ocfs2_max_inline_data_with_xattr(struct super_block *sb, 1073static inline int ocfs2_max_inline_data_with_xattr(struct super_block *sb,
1080 struct ocfs2_dinode *di) 1074 struct ocfs2_dinode *di)
1081{ 1075{
diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index 4ddd788add67..2563df89fc2a 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -547,8 +547,12 @@ int ocfs2_calc_xattr_init(struct inode *dir,
547 * when blocksize = 512, may reserve one more cluser for 547 * when blocksize = 512, may reserve one more cluser for
548 * xattr bucket, otherwise reserve one metadata block 548 * xattr bucket, otherwise reserve one metadata block
549 * for them is ok. 549 * for them is ok.
550 * If this is a new directory with inline data,
551 * we choose to reserve the entire inline area for
552 * directory contents and force an external xattr block.
550 */ 553 */
551 if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE || 554 if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE ||
555 (S_ISDIR(mode) && ocfs2_supports_inline_data(osb)) ||
552 (s_size + a_size) > OCFS2_XATTR_FREE_IN_IBODY) { 556 (s_size + a_size) > OCFS2_XATTR_FREE_IN_IBODY) {
553 ret = ocfs2_reserve_new_metadata_blocks(osb, 1, xattr_ac); 557 ret = ocfs2_reserve_new_metadata_blocks(osb, 1, xattr_ac);
554 if (ret) { 558 if (ret) {
@@ -4791,19 +4795,33 @@ static int ocfs2_xattr_bucket_set_value_outside(struct inode *inode,
4791 char *val, 4795 char *val,
4792 int value_len) 4796 int value_len)
4793{ 4797{
4794 int offset; 4798 int ret, offset, block_off;
4795 struct ocfs2_xattr_value_root *xv; 4799 struct ocfs2_xattr_value_root *xv;
4796 struct ocfs2_xattr_entry *xe = xs->here; 4800 struct ocfs2_xattr_entry *xe = xs->here;
4801 struct ocfs2_xattr_header *xh = bucket_xh(xs->bucket);
4802 void *base;
4797 4803
4798 BUG_ON(!xs->base || !xe || ocfs2_xattr_is_local(xe)); 4804 BUG_ON(!xs->base || !xe || ocfs2_xattr_is_local(xe));
4799 4805
4800 offset = le16_to_cpu(xe->xe_name_offset) + 4806 ret = ocfs2_xattr_bucket_get_name_value(inode, xh,
4801 OCFS2_XATTR_SIZE(xe->xe_name_len); 4807 xe - xh->xh_entries,
4808 &block_off,
4809 &offset);
4810 if (ret) {
4811 mlog_errno(ret);
4812 goto out;
4813 }
4802 4814
4803 xv = (struct ocfs2_xattr_value_root *)(xs->base + offset); 4815 base = bucket_block(xs->bucket, block_off);
4816 xv = (struct ocfs2_xattr_value_root *)(base + offset +
4817 OCFS2_XATTR_SIZE(xe->xe_name_len));
4804 4818
4805 return __ocfs2_xattr_set_value_outside(inode, handle, 4819 ret = __ocfs2_xattr_set_value_outside(inode, handle,
4806 xv, val, value_len); 4820 xv, val, value_len);
4821 if (ret)
4822 mlog_errno(ret);
4823out:
4824 return ret;
4807} 4825}
4808 4826
4809static int ocfs2_rm_xattr_cluster(struct inode *inode, 4827static int ocfs2_rm_xattr_cluster(struct inode *inode,
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
index b9b567a28376..5d7c7ececa64 100644
--- a/fs/ramfs/file-nommu.c
+++ b/fs/ramfs/file-nommu.c
@@ -114,6 +114,9 @@ int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
114 if (!pagevec_add(&lru_pvec, page)) 114 if (!pagevec_add(&lru_pvec, page))
115 __pagevec_lru_add_file(&lru_pvec); 115 __pagevec_lru_add_file(&lru_pvec);
116 116
117 /* prevent the page from being discarded on memory pressure */
118 SetPageDirty(page);
119
117 unlock_page(page); 120 unlock_page(page);
118 } 121 }
119 122
@@ -126,6 +129,7 @@ int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
126 return -EFBIG; 129 return -EFBIG;
127 130
128 add_error: 131 add_error:
132 pagevec_lru_add_file(&lru_pvec);
129 page_cache_release(pages + loop); 133 page_cache_release(pages + loop);
130 for (loop++; loop < npages; loop++) 134 for (loop++; loop < npages; loop++)
131 __free_page(pages + loop); 135 __free_page(pages + loop);
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 0e0f39be6c8b..d3bc3c86df6a 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -77,6 +77,14 @@
77#define TRACE_PRINTKS() 77#define TRACE_PRINTKS()
78#endif 78#endif
79 79
80#ifdef CONFIG_FTRACE_SYSCALLS
81#define TRACE_SYSCALLS() VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \
82 *(__syscalls_metadata) \
83 VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
84#else
85#define TRACE_SYSCALLS()
86#endif
87
80/* .data section */ 88/* .data section */
81#define DATA_DATA \ 89#define DATA_DATA \
82 *(.data) \ 90 *(.data) \
@@ -99,7 +107,8 @@
99 LIKELY_PROFILE() \ 107 LIKELY_PROFILE() \
100 BRANCH_PROFILE() \ 108 BRANCH_PROFILE() \
101 TRACE_PRINTKS() \ 109 TRACE_PRINTKS() \
102 FTRACE_EVENTS() 110 FTRACE_EVENTS() \
111 TRACE_SYSCALLS()
103 112
104#define RO_DATA(align) \ 113#define RO_DATA(align) \
105 . = ALIGN((align)); \ 114 . = ALIGN((align)); \
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 1b16108a5417..d8bd43bfdcf5 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -531,7 +531,7 @@ extern void bio_integrity_endio(struct bio *, int);
531extern void bio_integrity_advance(struct bio *, unsigned int); 531extern void bio_integrity_advance(struct bio *, unsigned int);
532extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int); 532extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
533extern void bio_integrity_split(struct bio *, struct bio_pair *, int); 533extern void bio_integrity_split(struct bio *, struct bio_pair *, int);
534extern int bio_integrity_clone(struct bio *, struct bio *, struct bio_set *); 534extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t, struct bio_set *);
535extern int bioset_integrity_create(struct bio_set *, int); 535extern int bioset_integrity_create(struct bio_set *, int);
536extern void bioset_integrity_free(struct bio_set *); 536extern void bioset_integrity_free(struct bio_set *);
537extern void bio_integrity_init_slab(void); 537extern void bio_integrity_init_slab(void);
@@ -542,7 +542,7 @@ extern void bio_integrity_init_slab(void);
542#define bioset_integrity_create(a, b) (0) 542#define bioset_integrity_create(a, b) (0)
543#define bio_integrity_prep(a) (0) 543#define bio_integrity_prep(a) (0)
544#define bio_integrity_enabled(a) (0) 544#define bio_integrity_enabled(a) (0)
545#define bio_integrity_clone(a, b, c) (0) 545#define bio_integrity_clone(a, b, c,d ) (0)
546#define bioset_integrity_free(a) do { } while (0) 546#define bioset_integrity_free(a) do { } while (0)
547#define bio_integrity_free(a, b) do { } while (0) 547#define bio_integrity_free(a, b) do { } while (0)
548#define bio_integrity_endio(a, b) do { } while (0) 548#define bio_integrity_endio(a, b) do { } while (0)
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 1514d534deeb..a3ed7cb8ca34 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -52,7 +52,15 @@
52#define __deprecated __attribute__((deprecated)) 52#define __deprecated __attribute__((deprecated))
53#define __packed __attribute__((packed)) 53#define __packed __attribute__((packed))
54#define __weak __attribute__((weak)) 54#define __weak __attribute__((weak))
55#define __naked __attribute__((naked)) 55
56/*
57 * it doesn't make sense on ARM (currently the only user of __naked) to trace
58 * naked functions because then mcount is called without stack and frame pointer
59 * being set up and there is no chance to restore the lr register to the value
60 * before mcount was called.
61 */
62#define __naked __attribute__((naked)) notrace
63
56#define __noreturn __attribute__((noreturn)) 64#define __noreturn __attribute__((noreturn))
57 65
58/* 66/*
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 9d598bbf28a6..db3fed630db3 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -505,13 +505,21 @@ static inline void trace_hw_branch_oops(void) {}
505/* 505/*
506 * A syscall entry in the ftrace syscalls array. 506 * A syscall entry in the ftrace syscalls array.
507 * 507 *
508 * @syscall_nr: syscall number 508 * @name: name of the syscall
509 * @nb_args: number of parameters it takes
510 * @types: list of types as strings
511 * @args: list of args as strings (args[i] matches types[i])
509 */ 512 */
510struct syscall_trace_entry { 513struct syscall_metadata {
511 int syscall_nr; 514 const char *name;
515 int nb_args;
516 const char **types;
517 const char **args;
512}; 518};
513 519
514#ifdef CONFIG_FTRACE_SYSCALLS 520#ifdef CONFIG_FTRACE_SYSCALLS
521extern void arch_init_ftrace_syscalls(void);
522extern struct syscall_metadata *syscall_nr_to_meta(int nr);
515extern void start_ftrace_syscalls(void); 523extern void start_ftrace_syscalls(void);
516extern void stop_ftrace_syscalls(void); 524extern void stop_ftrace_syscalls(void);
517extern void ftrace_syscall_enter(struct pt_regs *regs); 525extern void ftrace_syscall_enter(struct pt_regs *regs);
diff --git a/include/linux/ide.h b/include/linux/ide.h
index e0cedfe9fad4..25087aead657 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -797,6 +797,7 @@ typedef struct hwif_s {
797 struct scatterlist *sg_table; 797 struct scatterlist *sg_table;
798 int sg_max_nents; /* Maximum number of entries in it */ 798 int sg_max_nents; /* Maximum number of entries in it */
799 int sg_nents; /* Current number of entries in it */ 799 int sg_nents; /* Current number of entries in it */
800 int orig_sg_nents;
800 int sg_dma_direction; /* dma transfer direction */ 801 int sg_dma_direction; /* dma transfer direction */
801 802
802 /* data phase of the active command (currently only valid for PIO/DMA) */ 803 /* data phase of the active command (currently only valid for PIO/DMA) */
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
index aa6fe7026de7..51855dfd8adb 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -346,6 +346,7 @@ static inline int __nlm_cmp_addr4(const struct sockaddr *sap1,
346 return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr; 346 return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr;
347} 347}
348 348
349#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
349static inline int __nlm_cmp_addr6(const struct sockaddr *sap1, 350static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
350 const struct sockaddr *sap2) 351 const struct sockaddr *sap2)
351{ 352{
@@ -353,6 +354,13 @@ static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
353 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2; 354 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
354 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr); 355 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
355} 356}
357#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
358static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
359 const struct sockaddr *sap2)
360{
361 return 0;
362}
363#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
356 364
357/* 365/*
358 * Compare two host addresses 366 * Compare two host addresses
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index a550b528319f..2e5f00066afd 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -406,6 +406,8 @@ struct nfs3_setaclargs {
406 int mask; 406 int mask;
407 struct posix_acl * acl_access; 407 struct posix_acl * acl_access;
408 struct posix_acl * acl_default; 408 struct posix_acl * acl_default;
409 size_t len;
410 unsigned int npages;
409 struct page ** pages; 411 struct page ** pages;
410}; 412};
411 413
diff --git a/include/linux/nfsacl.h b/include/linux/nfsacl.h
index 54487a99beb8..43011b69297c 100644
--- a/include/linux/nfsacl.h
+++ b/include/linux/nfsacl.h
@@ -37,6 +37,9 @@
37#define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \ 37#define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \
38 >> PAGE_SHIFT) 38 >> PAGE_SHIFT)
39 39
40#define NFS_ACL_MAX_ENTRIES_INLINE (5)
41#define NFS_ACL_INLINE_BUFSIZE ((2*(2+3*NFS_ACL_MAX_ENTRIES_INLINE)) << 2)
42
40static inline unsigned int 43static inline unsigned int
41nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default) 44nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default)
42{ 45{
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index f9f900cfd066..0cff9bb80b02 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -65,6 +65,7 @@ struct old_linux_dirent;
65#include <asm/signal.h> 65#include <asm/signal.h>
66#include <linux/quota.h> 66#include <linux/quota.h>
67#include <linux/key.h> 67#include <linux/key.h>
68#include <linux/ftrace.h>
68 69
69#define __SC_DECL1(t1, a1) t1 a1 70#define __SC_DECL1(t1, a1) t1 a1
70#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__) 71#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
@@ -95,7 +96,46 @@ struct old_linux_dirent;
95#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__) 96#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
96#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) 97#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
97 98
99#ifdef CONFIG_FTRACE_SYSCALLS
100#define __SC_STR_ADECL1(t, a) #a
101#define __SC_STR_ADECL2(t, a, ...) #a, __SC_STR_ADECL1(__VA_ARGS__)
102#define __SC_STR_ADECL3(t, a, ...) #a, __SC_STR_ADECL2(__VA_ARGS__)
103#define __SC_STR_ADECL4(t, a, ...) #a, __SC_STR_ADECL3(__VA_ARGS__)
104#define __SC_STR_ADECL5(t, a, ...) #a, __SC_STR_ADECL4(__VA_ARGS__)
105#define __SC_STR_ADECL6(t, a, ...) #a, __SC_STR_ADECL5(__VA_ARGS__)
106
107#define __SC_STR_TDECL1(t, a) #t
108#define __SC_STR_TDECL2(t, a, ...) #t, __SC_STR_TDECL1(__VA_ARGS__)
109#define __SC_STR_TDECL3(t, a, ...) #t, __SC_STR_TDECL2(__VA_ARGS__)
110#define __SC_STR_TDECL4(t, a, ...) #t, __SC_STR_TDECL3(__VA_ARGS__)
111#define __SC_STR_TDECL5(t, a, ...) #t, __SC_STR_TDECL4(__VA_ARGS__)
112#define __SC_STR_TDECL6(t, a, ...) #t, __SC_STR_TDECL5(__VA_ARGS__)
113
114#define SYSCALL_METADATA(sname, nb) \
115 static const struct syscall_metadata __used \
116 __attribute__((__aligned__(4))) \
117 __attribute__((section("__syscalls_metadata"))) \
118 __syscall_meta_##sname = { \
119 .name = "sys"#sname, \
120 .nb_args = nb, \
121 .types = types_##sname, \
122 .args = args_##sname, \
123 }
124
125#define SYSCALL_DEFINE0(sname) \
126 static const struct syscall_metadata __used \
127 __attribute__((__aligned__(4))) \
128 __attribute__((section("__syscalls_metadata"))) \
129 __syscall_meta_##sname = { \
130 .name = "sys_"#sname, \
131 .nb_args = 0, \
132 }; \
133 asmlinkage long sys_##sname(void)
134
135#else
98#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void) 136#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
137#endif
138
99#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) 139#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
100#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) 140#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
101#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) 141#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
@@ -117,10 +157,26 @@ struct old_linux_dirent;
117#endif 157#endif
118#endif 158#endif
119 159
160#ifdef CONFIG_FTRACE_SYSCALLS
161#define SYSCALL_DEFINEx(x, sname, ...) \
162 static const char *types_##sname[] = { \
163 __SC_STR_TDECL##x(__VA_ARGS__) \
164 }; \
165 static const char *args_##sname[] = { \
166 __SC_STR_ADECL##x(__VA_ARGS__) \
167 }; \
168 SYSCALL_METADATA(sname, x); \
169 __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
170#else
171#define SYSCALL_DEFINEx(x, sname, ...) \
172 __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
173#endif
174
120#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS 175#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
121 176
122#define SYSCALL_DEFINE(name) static inline long SYSC_##name 177#define SYSCALL_DEFINE(name) static inline long SYSC_##name
123#define SYSCALL_DEFINEx(x, name, ...) \ 178
179#define __SYSCALL_DEFINEx(x, name, ...) \
124 asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)); \ 180 asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)); \
125 static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)); \ 181 static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)); \
126 asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__)) \ 182 asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__)) \
@@ -134,7 +190,7 @@ struct old_linux_dirent;
134#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */ 190#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
135 191
136#define SYSCALL_DEFINE(name) asmlinkage long sys_##name 192#define SYSCALL_DEFINE(name) asmlinkage long sys_##name
137#define SYSCALL_DEFINEx(x, name, ...) \ 193#define __SYSCALL_DEFINEx(x, name, ...) \
138 asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)) 194 asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__))
139 195
140#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */ 196#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
diff --git a/include/scsi/fc/fc_fcoe.h b/include/scsi/fc/fc_fcoe.h
index 57aaa8f0d613..f271d9cc0fc2 100644
--- a/include/scsi/fc/fc_fcoe.h
+++ b/include/scsi/fc/fc_fcoe.h
@@ -31,10 +31,6 @@
31#define ETH_P_FCOE 0x8906 /* FCOE ether type */ 31#define ETH_P_FCOE 0x8906 /* FCOE ether type */
32#endif 32#endif
33 33
34#ifndef ETH_P_8021Q
35#define ETH_P_8021Q 0x8100
36#endif
37
38/* 34/*
39 * FC_FCOE_OUI hasn't been standardized yet. XXX TBD. 35 * FC_FCOE_OUI hasn't been standardized yet. XXX TBD.
40 */ 36 */
diff --git a/include/scsi/fc/fc_fs.h b/include/scsi/fc/fc_fs.h
index 3e4801d2bdbb..1b7af3a64c7c 100644
--- a/include/scsi/fc/fc_fs.h
+++ b/include/scsi/fc/fc_fs.h
@@ -337,4 +337,9 @@ enum fc_pf_rjt_reason {
337 FC_RJT_VENDOR = 0xff, /* vendor specific reject */ 337 FC_RJT_VENDOR = 0xff, /* vendor specific reject */
338}; 338};
339 339
340/* default timeout values */
341
342#define FC_DEF_E_D_TOV 2000UL
343#define FC_DEF_R_A_TOV 10000UL
344
340#endif /* _FC_FS_H_ */ 345#endif /* _FC_FS_H_ */
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index 9f2876397dda..a2e126b86e3e 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -68,9 +68,6 @@
68/* 68/*
69 * FC HBA status 69 * FC HBA status
70 */ 70 */
71#define FC_PAUSE (1 << 1)
72#define FC_LINK_UP (1 << 0)
73
74enum fc_lport_state { 71enum fc_lport_state {
75 LPORT_ST_NONE = 0, 72 LPORT_ST_NONE = 0,
76 LPORT_ST_FLOGI, 73 LPORT_ST_FLOGI,
@@ -339,31 +336,17 @@ struct fc_exch {
339 336
340struct libfc_function_template { 337struct libfc_function_template {
341 338
342 /**
343 * Mandatory Fields
344 *
345 * These handlers must be implemented by the LLD.
346 */
347
348 /* 339 /*
349 * Interface to send a FC frame 340 * Interface to send a FC frame
350 */
351 int (*frame_send)(struct fc_lport *lp, struct fc_frame *fp);
352
353 /**
354 * Optional Fields
355 * 341 *
356 * The LLD may choose to implement any of the following handlers. 342 * STATUS: REQUIRED
357 * If LLD doesn't specify hander and leaves its pointer NULL then
358 * the default libfc function will be used for that handler.
359 */
360
361 /**
362 * ELS/CT interfaces
363 */ 343 */
344 int (*frame_send)(struct fc_lport *lp, struct fc_frame *fp);
364 345
365 /* 346 /*
366 * elsct_send - sends ELS/CT frame 347 * Interface to send ELS/CT frames
348 *
349 * STATUS: OPTIONAL
367 */ 350 */
368 struct fc_seq *(*elsct_send)(struct fc_lport *lport, 351 struct fc_seq *(*elsct_send)(struct fc_lport *lport,
369 struct fc_rport *rport, 352 struct fc_rport *rport,
@@ -373,9 +356,6 @@ struct libfc_function_template {
373 struct fc_frame *fp, 356 struct fc_frame *fp,
374 void *arg), 357 void *arg),
375 void *arg, u32 timer_msec); 358 void *arg, u32 timer_msec);
376 /**
377 * Exhance Manager interfaces
378 */
379 359
380 /* 360 /*
381 * Send the FC frame payload using a new exchange and sequence. 361 * Send the FC frame payload using a new exchange and sequence.
@@ -407,6 +387,8 @@ struct libfc_function_template {
407 * timer_msec argument is specified. The timer is canceled when 387 * timer_msec argument is specified. The timer is canceled when
408 * it fires or when the exchange is done. The exchange timeout handler 388 * it fires or when the exchange is done. The exchange timeout handler
409 * is registered by EM layer. 389 * is registered by EM layer.
390 *
391 * STATUS: OPTIONAL
410 */ 392 */
411 struct fc_seq *(*exch_seq_send)(struct fc_lport *lp, 393 struct fc_seq *(*exch_seq_send)(struct fc_lport *lp,
412 struct fc_frame *fp, 394 struct fc_frame *fp,
@@ -418,14 +400,18 @@ struct libfc_function_template {
418 void *arg, unsigned int timer_msec); 400 void *arg, unsigned int timer_msec);
419 401
420 /* 402 /*
421 * send a frame using existing sequence and exchange. 403 * Send a frame using an existing sequence and exchange.
404 *
405 * STATUS: OPTIONAL
422 */ 406 */
423 int (*seq_send)(struct fc_lport *lp, struct fc_seq *sp, 407 int (*seq_send)(struct fc_lport *lp, struct fc_seq *sp,
424 struct fc_frame *fp); 408 struct fc_frame *fp);
425 409
426 /* 410 /*
427 * Send ELS response using mainly infomation 411 * Send an ELS response using infomation from a previous
428 * in exchange and sequence in EM layer. 412 * exchange and sequence.
413 *
414 * STATUS: OPTIONAL
429 */ 415 */
430 void (*seq_els_rsp_send)(struct fc_seq *sp, enum fc_els_cmd els_cmd, 416 void (*seq_els_rsp_send)(struct fc_seq *sp, enum fc_els_cmd els_cmd,
431 struct fc_seq_els_data *els_data); 417 struct fc_seq_els_data *els_data);
@@ -437,6 +423,8 @@ struct libfc_function_template {
437 * A timer_msec can be specified for abort timeout, if non-zero 423 * A timer_msec can be specified for abort timeout, if non-zero
438 * timer_msec value is specified then exchange resp handler 424 * timer_msec value is specified then exchange resp handler
439 * will be called with timeout error if no response to abort. 425 * will be called with timeout error if no response to abort.
426 *
427 * STATUS: OPTIONAL
440 */ 428 */
441 int (*seq_exch_abort)(const struct fc_seq *req_sp, 429 int (*seq_exch_abort)(const struct fc_seq *req_sp,
442 unsigned int timer_msec); 430 unsigned int timer_msec);
@@ -444,6 +432,8 @@ struct libfc_function_template {
444 /* 432 /*
445 * Indicate that an exchange/sequence tuple is complete and the memory 433 * Indicate that an exchange/sequence tuple is complete and the memory
446 * allocated for the related objects may be freed. 434 * allocated for the related objects may be freed.
435 *
436 * STATUS: OPTIONAL
447 */ 437 */
448 void (*exch_done)(struct fc_seq *sp); 438 void (*exch_done)(struct fc_seq *sp);
449 439
@@ -451,6 +441,8 @@ struct libfc_function_template {
451 * Assigns a EM and a free XID for an new exchange and then 441 * Assigns a EM and a free XID for an new exchange and then
452 * allocates a new exchange and sequence pair. 442 * allocates a new exchange and sequence pair.
453 * The fp can be used to determine free XID. 443 * The fp can be used to determine free XID.
444 *
445 * STATUS: OPTIONAL
454 */ 446 */
455 struct fc_exch *(*exch_get)(struct fc_lport *lp, struct fc_frame *fp); 447 struct fc_exch *(*exch_get)(struct fc_lport *lp, struct fc_frame *fp);
456 448
@@ -458,12 +450,16 @@ struct libfc_function_template {
458 * Release previously assigned XID by exch_get API. 450 * Release previously assigned XID by exch_get API.
459 * The LLD may implement this if XID is assigned by LLD 451 * The LLD may implement this if XID is assigned by LLD
460 * in exch_get(). 452 * in exch_get().
453 *
454 * STATUS: OPTIONAL
461 */ 455 */
462 void (*exch_put)(struct fc_lport *lp, struct fc_exch_mgr *mp, 456 void (*exch_put)(struct fc_lport *lp, struct fc_exch_mgr *mp,
463 u16 ex_id); 457 u16 ex_id);
464 458
465 /* 459 /*
466 * Start a new sequence on the same exchange/sequence tuple. 460 * Start a new sequence on the same exchange/sequence tuple.
461 *
462 * STATUS: OPTIONAL
467 */ 463 */
468 struct fc_seq *(*seq_start_next)(struct fc_seq *sp); 464 struct fc_seq *(*seq_start_next)(struct fc_seq *sp);
469 465
@@ -471,26 +467,38 @@ struct libfc_function_template {
471 * Reset an exchange manager, completing all sequences and exchanges. 467 * Reset an exchange manager, completing all sequences and exchanges.
472 * If s_id is non-zero, reset only exchanges originating from that FID. 468 * If s_id is non-zero, reset only exchanges originating from that FID.
473 * If d_id is non-zero, reset only exchanges sending to that FID. 469 * If d_id is non-zero, reset only exchanges sending to that FID.
470 *
471 * STATUS: OPTIONAL
474 */ 472 */
475 void (*exch_mgr_reset)(struct fc_exch_mgr *, 473 void (*exch_mgr_reset)(struct fc_lport *,
476 u32 s_id, u32 d_id); 474 u32 s_id, u32 d_id);
477 475
478 void (*rport_flush_queue)(void); 476 /*
479 /** 477 * Flush the rport work queue. Generally used before shutdown.
480 * Local Port interfaces 478 *
479 * STATUS: OPTIONAL
481 */ 480 */
481 void (*rport_flush_queue)(void);
482 482
483 /* 483 /*
484 * Receive a frame to a local port. 484 * Receive a frame for a local port.
485 *
486 * STATUS: OPTIONAL
485 */ 487 */
486 void (*lport_recv)(struct fc_lport *lp, struct fc_seq *sp, 488 void (*lport_recv)(struct fc_lport *lp, struct fc_seq *sp,
487 struct fc_frame *fp); 489 struct fc_frame *fp);
488 490
491 /*
492 * Reset the local port.
493 *
494 * STATUS: OPTIONAL
495 */
489 int (*lport_reset)(struct fc_lport *); 496 int (*lport_reset)(struct fc_lport *);
490 497
491 /** 498 /*
492 * Remote Port interfaces 499 * Create a remote port
493 */ 500 */
501 struct fc_rport *(*rport_create)(struct fc_disc_port *);
494 502
495 /* 503 /*
496 * Initiates the RP state machine. It is called from the LP module. 504 * Initiates the RP state machine. It is called from the LP module.
@@ -500,26 +508,33 @@ struct libfc_function_template {
500 * - PLOGI 508 * - PLOGI
501 * - PRLI 509 * - PRLI
502 * - RTV 510 * - RTV
511 *
512 * STATUS: OPTIONAL
503 */ 513 */
504 int (*rport_login)(struct fc_rport *rport); 514 int (*rport_login)(struct fc_rport *rport);
505 515
506 /* 516 /*
507 * Logoff, and remove the rport from the transport if 517 * Logoff, and remove the rport from the transport if
508 * it had been added. This will send a LOGO to the target. 518 * it had been added. This will send a LOGO to the target.
519 *
520 * STATUS: OPTIONAL
509 */ 521 */
510 int (*rport_logoff)(struct fc_rport *rport); 522 int (*rport_logoff)(struct fc_rport *rport);
511 523
512 /* 524 /*
513 * Recieve a request from a remote port. 525 * Recieve a request from a remote port.
526 *
527 * STATUS: OPTIONAL
514 */ 528 */
515 void (*rport_recv_req)(struct fc_seq *, struct fc_frame *, 529 void (*rport_recv_req)(struct fc_seq *, struct fc_frame *,
516 struct fc_rport *); 530 struct fc_rport *);
517 531
518 struct fc_rport *(*rport_lookup)(const struct fc_lport *, u32); 532 /*
519 533 * lookup an rport by it's port ID.
520 /** 534 *
521 * FCP interfaces 535 * STATUS: OPTIONAL
522 */ 536 */
537 struct fc_rport *(*rport_lookup)(const struct fc_lport *, u32);
523 538
524 /* 539 /*
525 * Send a fcp cmd from fsp pkt. 540 * Send a fcp cmd from fsp pkt.
@@ -527,30 +542,38 @@ struct libfc_function_template {
527 * 542 *
528 * The resp handler is called when FCP_RSP received. 543 * The resp handler is called when FCP_RSP received.
529 * 544 *
545 * STATUS: OPTIONAL
530 */ 546 */
531 int (*fcp_cmd_send)(struct fc_lport *lp, struct fc_fcp_pkt *fsp, 547 int (*fcp_cmd_send)(struct fc_lport *lp, struct fc_fcp_pkt *fsp,
532 void (*resp)(struct fc_seq *, struct fc_frame *fp, 548 void (*resp)(struct fc_seq *, struct fc_frame *fp,
533 void *arg)); 549 void *arg));
534 550
535 /* 551 /*
536 * Used at least durring linkdown and reset 552 * Cleanup the FCP layer, used durring link down and reset
553 *
554 * STATUS: OPTIONAL
537 */ 555 */
538 void (*fcp_cleanup)(struct fc_lport *lp); 556 void (*fcp_cleanup)(struct fc_lport *lp);
539 557
540 /* 558 /*
541 * Abort all I/O on a local port 559 * Abort all I/O on a local port
560 *
561 * STATUS: OPTIONAL
542 */ 562 */
543 void (*fcp_abort_io)(struct fc_lport *lp); 563 void (*fcp_abort_io)(struct fc_lport *lp);
544 564
545 /** 565 /*
546 * Discovery interfaces 566 * Receive a request for the discovery layer.
567 *
568 * STATUS: OPTIONAL
547 */ 569 */
548
549 void (*disc_recv_req)(struct fc_seq *, 570 void (*disc_recv_req)(struct fc_seq *,
550 struct fc_frame *, struct fc_lport *); 571 struct fc_frame *, struct fc_lport *);
551 572
552 /* 573 /*
553 * Start discovery for a local port. 574 * Start discovery for a local port.
575 *
576 * STATUS: OPTIONAL
554 */ 577 */
555 void (*disc_start)(void (*disc_callback)(struct fc_lport *, 578 void (*disc_start)(void (*disc_callback)(struct fc_lport *,
556 enum fc_disc_event), 579 enum fc_disc_event),
@@ -559,6 +582,8 @@ struct libfc_function_template {
559 /* 582 /*
560 * Stop discovery for a given lport. This will remove 583 * Stop discovery for a given lport. This will remove
561 * all discovered rports 584 * all discovered rports
585 *
586 * STATUS: OPTIONAL
562 */ 587 */
563 void (*disc_stop) (struct fc_lport *); 588 void (*disc_stop) (struct fc_lport *);
564 589
@@ -566,6 +591,8 @@ struct libfc_function_template {
566 * Stop discovery for a given lport. This will block 591 * Stop discovery for a given lport. This will block
567 * until all discovered rports are deleted from the 592 * until all discovered rports are deleted from the
568 * FC transport class 593 * FC transport class
594 *
595 * STATUS: OPTIONAL
569 */ 596 */
570 void (*disc_stop_final) (struct fc_lport *); 597 void (*disc_stop_final) (struct fc_lport *);
571}; 598};
@@ -603,7 +630,8 @@ struct fc_lport {
603 630
604 /* Operational Information */ 631 /* Operational Information */
605 struct libfc_function_template tt; 632 struct libfc_function_template tt;
606 u16 link_status; 633 u8 link_up;
634 u8 qfull;
607 enum fc_lport_state state; 635 enum fc_lport_state state;
608 unsigned long boot_time; 636 unsigned long boot_time;
609 637
@@ -637,7 +665,7 @@ struct fc_lport {
637 struct delayed_work disc_work; 665 struct delayed_work disc_work;
638}; 666};
639 667
640/** 668/*
641 * FC_LPORT HELPER FUNCTIONS 669 * FC_LPORT HELPER FUNCTIONS
642 *****************************/ 670 *****************************/
643static inline void *lport_priv(const struct fc_lport *lp) 671static inline void *lport_priv(const struct fc_lport *lp)
@@ -669,7 +697,7 @@ static inline void fc_lport_state_enter(struct fc_lport *lp,
669} 697}
670 698
671 699
672/** 700/*
673 * LOCAL PORT LAYER 701 * LOCAL PORT LAYER
674 *****************************/ 702 *****************************/
675int fc_lport_init(struct fc_lport *lp); 703int fc_lport_init(struct fc_lport *lp);
@@ -704,12 +732,6 @@ void fc_linkup(struct fc_lport *);
704void fc_linkdown(struct fc_lport *); 732void fc_linkdown(struct fc_lport *);
705 733
706/* 734/*
707 * Pause and unpause traffic.
708 */
709void fc_pause(struct fc_lport *);
710void fc_unpause(struct fc_lport *);
711
712/*
713 * Configure the local port. 735 * Configure the local port.
714 */ 736 */
715int fc_lport_config(struct fc_lport *); 737int fc_lport_config(struct fc_lport *);
@@ -725,19 +747,19 @@ int fc_lport_reset(struct fc_lport *);
725int fc_set_mfs(struct fc_lport *lp, u32 mfs); 747int fc_set_mfs(struct fc_lport *lp, u32 mfs);
726 748
727 749
728/** 750/*
729 * REMOTE PORT LAYER 751 * REMOTE PORT LAYER
730 *****************************/ 752 *****************************/
731int fc_rport_init(struct fc_lport *lp); 753int fc_rport_init(struct fc_lport *lp);
732void fc_rport_terminate_io(struct fc_rport *rp); 754void fc_rport_terminate_io(struct fc_rport *rp);
733 755
734/** 756/*
735 * DISCOVERY LAYER 757 * DISCOVERY LAYER
736 *****************************/ 758 *****************************/
737int fc_disc_init(struct fc_lport *lp); 759int fc_disc_init(struct fc_lport *lp);
738 760
739 761
740/** 762/*
741 * SCSI LAYER 763 * SCSI LAYER
742 *****************************/ 764 *****************************/
743/* 765/*
@@ -798,7 +820,7 @@ int fc_change_queue_type(struct scsi_device *sdev, int tag_type);
798 */ 820 */
799void fc_fcp_destroy(struct fc_lport *); 821void fc_fcp_destroy(struct fc_lport *);
800 822
801/** 823/*
802 * ELS/CT interface 824 * ELS/CT interface
803 *****************************/ 825 *****************************/
804/* 826/*
@@ -807,7 +829,7 @@ void fc_fcp_destroy(struct fc_lport *);
807int fc_elsct_init(struct fc_lport *lp); 829int fc_elsct_init(struct fc_lport *lp);
808 830
809 831
810/** 832/*
811 * EXCHANGE MANAGER LAYER 833 * EXCHANGE MANAGER LAYER
812 *****************************/ 834 *****************************/
813/* 835/*
@@ -916,7 +938,7 @@ struct fc_seq *fc_seq_start_next(struct fc_seq *sp);
916 * If s_id is non-zero, reset only exchanges originating from that FID. 938 * If s_id is non-zero, reset only exchanges originating from that FID.
917 * If d_id is non-zero, reset only exchanges sending to that FID. 939 * If d_id is non-zero, reset only exchanges sending to that FID.
918 */ 940 */
919void fc_exch_mgr_reset(struct fc_exch_mgr *, u32 s_id, u32 d_id); 941void fc_exch_mgr_reset(struct fc_lport *, u32 s_id, u32 d_id);
920 942
921/* 943/*
922 * Functions for fc_functions_template 944 * Functions for fc_functions_template
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h
index 89fdbb9a6a1b..941818f29f59 100644
--- a/include/scsi/libfcoe.h
+++ b/include/scsi/libfcoe.h
@@ -46,6 +46,7 @@ struct fcoe_softc {
46 struct net_device *phys_dev; /* device with ethtool_ops */ 46 struct net_device *phys_dev; /* device with ethtool_ops */
47 struct packet_type fcoe_packet_type; 47 struct packet_type fcoe_packet_type;
48 struct sk_buff_head fcoe_pending_queue; 48 struct sk_buff_head fcoe_pending_queue;
49 u8 fcoe_pending_queue_active;
49 50
50 u8 dest_addr[ETH_ALEN]; 51 u8 dest_addr[ETH_ALEN];
51 u8 ctl_src_addr[ETH_ALEN]; 52 u8 ctl_src_addr[ETH_ALEN];
@@ -58,16 +59,10 @@ struct fcoe_softc {
58 u8 address_mode; 59 u8 address_mode;
59}; 60};
60 61
61static inline struct fcoe_softc *fcoe_softc(
62 const struct fc_lport *lp)
63{
64 return (struct fcoe_softc *)lport_priv(lp);
65}
66
67static inline struct net_device *fcoe_netdev( 62static inline struct net_device *fcoe_netdev(
68 const struct fc_lport *lp) 63 const struct fc_lport *lp)
69{ 64{
70 return fcoe_softc(lp)->real_dev; 65 return ((struct fcoe_softc *)lport_priv(lp))->real_dev;
71} 66}
72 67
73static inline struct fcoe_hdr *skb_fcoe_header(const struct sk_buff *skb) 68static inline struct fcoe_hdr *skb_fcoe_header(const struct sk_buff *skb)
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 56ce34d90b03..f56162806f50 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -202,6 +202,19 @@ struct kmemtrace_free_entry {
202 const void *ptr; 202 const void *ptr;
203}; 203};
204 204
205struct syscall_trace_enter {
206 struct trace_entry ent;
207 int nr;
208 unsigned long args[];
209};
210
211struct syscall_trace_exit {
212 struct trace_entry ent;
213 int nr;
214 unsigned long ret;
215};
216
217
205/* 218/*
206 * trace_flag_type is an enumeration that holds different 219 * trace_flag_type is an enumeration that holds different
207 * states when a trace occurs. These are: 220 * states when a trace occurs. These are:
@@ -315,6 +328,10 @@ extern void __ftrace_bad_type(void);
315 TRACE_KMEM_ALLOC); \ 328 TRACE_KMEM_ALLOC); \
316 IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \ 329 IF_ASSIGN(var, ent, struct kmemtrace_free_entry, \
317 TRACE_KMEM_FREE); \ 330 TRACE_KMEM_FREE); \
331 IF_ASSIGN(var, ent, struct syscall_trace_enter, \
332 TRACE_SYSCALL_ENTER); \
333 IF_ASSIGN(var, ent, struct syscall_trace_exit, \
334 TRACE_SYSCALL_EXIT); \
318 __ftrace_bad_type(); \ 335 __ftrace_bad_type(); \
319 } while (0) 336 } while (0)
320 337
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index 66cf97449af3..c72e599230ff 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -1,6 +1,5 @@
1#include <linux/ftrace.h>
2#include <linux/kernel.h> 1#include <linux/kernel.h>
3 2#include <linux/ftrace.h>
4#include <asm/syscall.h> 3#include <asm/syscall.h>
5 4
6#include "trace_output.h" 5#include "trace_output.h"
@@ -8,6 +7,90 @@
8 7
9static atomic_t refcount; 8static atomic_t refcount;
10 9
10/* Our two options */
11enum {
12 TRACE_SYSCALLS_OPT_TYPES = 0x1,
13};
14
15static struct tracer_opt syscalls_opts[] = {
16 { TRACER_OPT(syscall_arg_type, TRACE_SYSCALLS_OPT_TYPES) },
17 { }
18};
19
20static struct tracer_flags syscalls_flags = {
21 .val = 0, /* By default: no args types */
22 .opts = syscalls_opts
23};
24
25enum print_line_t
26print_syscall_enter(struct trace_iterator *iter, int flags)
27{
28 struct trace_seq *s = &iter->seq;
29 struct trace_entry *ent = iter->ent;
30 struct syscall_trace_enter *trace;
31 struct syscall_metadata *entry;
32 int i, ret, syscall;
33
34 trace_assign_type(trace, ent);
35
36 syscall = trace->nr;
37
38 entry = syscall_nr_to_meta(syscall);
39 if (!entry)
40 goto end;
41
42 ret = trace_seq_printf(s, "%s(", entry->name);
43 if (!ret)
44 return TRACE_TYPE_PARTIAL_LINE;
45
46 for (i = 0; i < entry->nb_args; i++) {
47 /* parameter types */
48 if (syscalls_flags.val & TRACE_SYSCALLS_OPT_TYPES) {
49 ret = trace_seq_printf(s, "%s ", entry->types[i]);
50 if (!ret)
51 return TRACE_TYPE_PARTIAL_LINE;
52 }
53 /* parameter values */
54 ret = trace_seq_printf(s, "%s: %lx%s ", entry->args[i],
55 trace->args[i],
56 i == entry->nb_args - 1 ? ")" : ",");
57 if (!ret)
58 return TRACE_TYPE_PARTIAL_LINE;
59 }
60
61end:
62 trace_seq_printf(s, "\n");
63 return TRACE_TYPE_HANDLED;
64}
65
66enum print_line_t
67print_syscall_exit(struct trace_iterator *iter, int flags)
68{
69 struct trace_seq *s = &iter->seq;
70 struct trace_entry *ent = iter->ent;
71 struct syscall_trace_exit *trace;
72 int syscall;
73 struct syscall_metadata *entry;
74 int ret;
75
76 trace_assign_type(trace, ent);
77
78 syscall = trace->nr;
79
80 entry = syscall_nr_to_meta(syscall);
81 if (!entry) {
82 trace_seq_printf(s, "\n");
83 return TRACE_TYPE_HANDLED;
84 }
85
86 ret = trace_seq_printf(s, "%s -> 0x%lx\n", entry->name,
87 trace->ret);
88 if (!ret)
89 return TRACE_TYPE_PARTIAL_LINE;
90
91 return TRACE_TYPE_HANDLED;
92}
93
11void start_ftrace_syscalls(void) 94void start_ftrace_syscalls(void)
12{ 95{
13 unsigned long flags; 96 unsigned long flags;
@@ -16,6 +99,7 @@ void start_ftrace_syscalls(void)
16 if (atomic_inc_return(&refcount) != 1) 99 if (atomic_inc_return(&refcount) != 1)
17 goto out; 100 goto out;
18 101
102 arch_init_ftrace_syscalls();
19 read_lock_irqsave(&tasklist_lock, flags); 103 read_lock_irqsave(&tasklist_lock, flags);
20 104
21 do_each_thread(g, t) { 105 do_each_thread(g, t) {
@@ -48,20 +132,63 @@ out:
48 132
49void ftrace_syscall_enter(struct pt_regs *regs) 133void ftrace_syscall_enter(struct pt_regs *regs)
50{ 134{
135 struct syscall_trace_enter *entry;
136 struct syscall_metadata *sys_data;
137 struct ring_buffer_event *event;
138 int size;
51 int syscall_nr; 139 int syscall_nr;
140 int cpu;
52 141
53 syscall_nr = syscall_get_nr(current, regs); 142 syscall_nr = syscall_get_nr(current, regs);
54 143
55 trace_printk("syscall %d enter\n", syscall_nr); 144 cpu = raw_smp_processor_id();
145
146 sys_data = syscall_nr_to_meta(syscall_nr);
147 if (!sys_data)
148 return;
149
150 size = sizeof(*entry) + sizeof(unsigned long) * sys_data->nb_args;
151
152 event = trace_current_buffer_lock_reserve(TRACE_SYSCALL_ENTER, size,
153 0, 0);
154 if (!event)
155 return;
156
157 entry = ring_buffer_event_data(event);
158 entry->nr = syscall_nr;
159 syscall_get_arguments(current, regs, 0, sys_data->nb_args, entry->args);
160
161 trace_current_buffer_unlock_commit(event, 0, 0);
162 trace_wake_up();
56} 163}
57 164
58void ftrace_syscall_exit(struct pt_regs *regs) 165void ftrace_syscall_exit(struct pt_regs *regs)
59{ 166{
167 struct syscall_trace_exit *entry;
168 struct syscall_metadata *sys_data;
169 struct ring_buffer_event *event;
60 int syscall_nr; 170 int syscall_nr;
171 int cpu;
61 172
62 syscall_nr = syscall_get_nr(current, regs); 173 syscall_nr = syscall_get_nr(current, regs);
63 174
64 trace_printk("syscall %d exit\n", syscall_nr); 175 cpu = raw_smp_processor_id();
176
177 sys_data = syscall_nr_to_meta(syscall_nr);
178 if (!sys_data)
179 return;
180
181 event = trace_current_buffer_lock_reserve(TRACE_SYSCALL_EXIT,
182 sizeof(*entry), 0, 0);
183 if (!event)
184 return;
185
186 entry = ring_buffer_event_data(event);
187 entry->nr = syscall_nr;
188 entry->ret = syscall_get_return_value(current, regs);
189
190 trace_current_buffer_unlock_commit(event, 0, 0);
191 trace_wake_up();
65} 192}
66 193
67static int init_syscall_tracer(struct trace_array *tr) 194static int init_syscall_tracer(struct trace_array *tr)
@@ -77,17 +204,20 @@ static void reset_syscall_tracer(struct trace_array *tr)
77} 204}
78 205
79static struct trace_event syscall_enter_event = { 206static struct trace_event syscall_enter_event = {
80 .type = TRACE_SYSCALL_ENTER, 207 .type = TRACE_SYSCALL_ENTER,
208 .trace = print_syscall_enter,
81}; 209};
82 210
83static struct trace_event syscall_exit_event = { 211static struct trace_event syscall_exit_event = {
84 .type = TRACE_SYSCALL_EXIT, 212 .type = TRACE_SYSCALL_EXIT,
213 .trace = print_syscall_exit,
85}; 214};
86 215
87static struct tracer syscall_tracer __read_mostly = { 216static struct tracer syscall_tracer __read_mostly = {
88 .name = "syscall", 217 .name = "syscall",
89 .init = init_syscall_tracer, 218 .init = init_syscall_tracer,
90 .reset = reset_syscall_tracer 219 .reset = reset_syscall_tracer,
220 .flags = &syscalls_flags,
91}; 221};
92 222
93__init int register_ftrace_syscalls(void) 223__init int register_ftrace_syscalls(void)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 79adbd7e21ae..479e46719394 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1262,7 +1262,6 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1262 * Move the pages to the [file or anon] inactive list. 1262 * Move the pages to the [file or anon] inactive list.
1263 */ 1263 */
1264 pagevec_init(&pvec, 1); 1264 pagevec_init(&pvec, 1);
1265 pgmoved = 0;
1266 lru = LRU_BASE + file * LRU_FILE; 1265 lru = LRU_BASE + file * LRU_FILE;
1267 1266
1268 spin_lock_irq(&zone->lru_lock); 1267 spin_lock_irq(&zone->lru_lock);
@@ -1274,6 +1273,7 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1274 */ 1273 */
1275 reclaim_stat->recent_rotated[!!file] += pgmoved; 1274 reclaim_stat->recent_rotated[!!file] += pgmoved;
1276 1275
1276 pgmoved = 0;
1277 while (!list_empty(&l_inactive)) { 1277 while (!list_empty(&l_inactive)) {
1278 page = lru_to_page(&l_inactive); 1278 page = lru_to_page(&l_inactive);
1279 prefetchw_prev_lru_page(page, &l_inactive, flags); 1279 prefetchw_prev_lru_page(page, &l_inactive, flags);
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index 385f427bedad..ff50a0546865 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -293,11 +293,6 @@ static void rpc_make_runnable(struct rpc_task *task)
293 rpc_clear_queued(task); 293 rpc_clear_queued(task);
294 if (rpc_test_and_set_running(task)) 294 if (rpc_test_and_set_running(task))
295 return; 295 return;
296 /* We might have raced */
297 if (RPC_IS_QUEUED(task)) {
298 rpc_clear_running(task);
299 return;
300 }
301 if (RPC_IS_ASYNC(task)) { 296 if (RPC_IS_ASYNC(task)) {
302 int status; 297 int status;
303 298
@@ -607,7 +602,9 @@ void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata)
607 */ 602 */
608static void __rpc_execute(struct rpc_task *task) 603static void __rpc_execute(struct rpc_task *task)
609{ 604{
610 int status = 0; 605 struct rpc_wait_queue *queue;
606 int task_is_async = RPC_IS_ASYNC(task);
607 int status = 0;
611 608
612 dprintk("RPC: %5u __rpc_execute flags=0x%x\n", 609 dprintk("RPC: %5u __rpc_execute flags=0x%x\n",
613 task->tk_pid, task->tk_flags); 610 task->tk_pid, task->tk_flags);
@@ -647,15 +644,25 @@ static void __rpc_execute(struct rpc_task *task)
647 */ 644 */
648 if (!RPC_IS_QUEUED(task)) 645 if (!RPC_IS_QUEUED(task))
649 continue; 646 continue;
650 rpc_clear_running(task); 647 /*
651 if (RPC_IS_ASYNC(task)) { 648 * The queue->lock protects against races with
652 /* Careful! we may have raced... */ 649 * rpc_make_runnable().
653 if (RPC_IS_QUEUED(task)) 650 *
654 return; 651 * Note that once we clear RPC_TASK_RUNNING on an asynchronous
655 if (rpc_test_and_set_running(task)) 652 * rpc_task, rpc_make_runnable() can assign it to a
656 return; 653 * different workqueue. We therefore cannot assume that the
654 * rpc_task pointer may still be dereferenced.
655 */
656 queue = task->tk_waitqueue;
657 spin_lock_bh(&queue->lock);
658 if (!RPC_IS_QUEUED(task)) {
659 spin_unlock_bh(&queue->lock);
657 continue; 660 continue;
658 } 661 }
662 rpc_clear_running(task);
663 spin_unlock_bh(&queue->lock);
664 if (task_is_async)
665 return;
659 666
660 /* sync task: sleep here */ 667 /* sync task: sleep here */
661 dprintk("RPC: %5u sync task going to sleep\n", task->tk_pid); 668 dprintk("RPC: %5u sync task going to sleep\n", task->tk_pid);
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index 29e401bb612e..62098d101a1f 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -663,7 +663,7 @@ void xprt_connect(struct rpc_task *task)
663 xprt, (xprt_connected(xprt) ? "is" : "is not")); 663 xprt, (xprt_connected(xprt) ? "is" : "is not"));
664 664
665 if (!xprt_bound(xprt)) { 665 if (!xprt_bound(xprt)) {
666 task->tk_status = -EIO; 666 task->tk_status = -EAGAIN;
667 return; 667 return;
668 } 668 }
669 if (!xprt_lock_write(xprt, task)) 669 if (!xprt_lock_write(xprt, task))
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 5cbb404c4cdf..29c71e645b27 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -467,7 +467,7 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen,
467 int err, sent = 0; 467 int err, sent = 0;
468 468
469 if (unlikely(!sock)) 469 if (unlikely(!sock))
470 return -ENOTCONN; 470 return -ENOTSOCK;
471 471
472 clear_bit(SOCK_ASYNC_NOSPACE, &sock->flags); 472 clear_bit(SOCK_ASYNC_NOSPACE, &sock->flags);
473 if (base != 0) { 473 if (base != 0) {
@@ -577,6 +577,8 @@ static int xs_udp_send_request(struct rpc_task *task)
577 req->rq_svec->iov_base, 577 req->rq_svec->iov_base,
578 req->rq_svec->iov_len); 578 req->rq_svec->iov_len);
579 579
580 if (!xprt_bound(xprt))
581 return -ENOTCONN;
580 status = xs_sendpages(transport->sock, 582 status = xs_sendpages(transport->sock,
581 xs_addr(xprt), 583 xs_addr(xprt),
582 xprt->addrlen, xdr, 584 xprt->addrlen, xdr,
@@ -594,6 +596,10 @@ static int xs_udp_send_request(struct rpc_task *task)
594 } 596 }
595 597
596 switch (status) { 598 switch (status) {
599 case -ENOTSOCK:
600 status = -ENOTCONN;
601 /* Should we call xs_close() here? */
602 break;
597 case -EAGAIN: 603 case -EAGAIN:
598 xs_nospace(task); 604 xs_nospace(task);
599 break; 605 break;
@@ -693,6 +699,10 @@ static int xs_tcp_send_request(struct rpc_task *task)
693 } 699 }
694 700
695 switch (status) { 701 switch (status) {
702 case -ENOTSOCK:
703 status = -ENOTCONN;
704 /* Should we call xs_close() here? */
705 break;
696 case -EAGAIN: 706 case -EAGAIN:
697 xs_nospace(task); 707 xs_nospace(task);
698 break; 708 break;
@@ -1523,7 +1533,7 @@ static void xs_udp_connect_worker4(struct work_struct *work)
1523 struct socket *sock = transport->sock; 1533 struct socket *sock = transport->sock;
1524 int err, status = -EIO; 1534 int err, status = -EIO;
1525 1535
1526 if (xprt->shutdown || !xprt_bound(xprt)) 1536 if (xprt->shutdown)
1527 goto out; 1537 goto out;
1528 1538
1529 /* Start by resetting any existing state */ 1539 /* Start by resetting any existing state */
@@ -1564,7 +1574,7 @@ static void xs_udp_connect_worker6(struct work_struct *work)
1564 struct socket *sock = transport->sock; 1574 struct socket *sock = transport->sock;
1565 int err, status = -EIO; 1575 int err, status = -EIO;
1566 1576
1567 if (xprt->shutdown || !xprt_bound(xprt)) 1577 if (xprt->shutdown)
1568 goto out; 1578 goto out;
1569 1579
1570 /* Start by resetting any existing state */ 1580 /* Start by resetting any existing state */
@@ -1648,6 +1658,9 @@ static int xs_tcp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
1648 write_unlock_bh(&sk->sk_callback_lock); 1658 write_unlock_bh(&sk->sk_callback_lock);
1649 } 1659 }
1650 1660
1661 if (!xprt_bound(xprt))
1662 return -ENOTCONN;
1663
1651 /* Tell the socket layer to start connecting... */ 1664 /* Tell the socket layer to start connecting... */
1652 xprt->stat.connect_count++; 1665 xprt->stat.connect_count++;
1653 xprt->stat.connect_start = jiffies; 1666 xprt->stat.connect_start = jiffies;
@@ -1668,7 +1681,7 @@ static void xs_tcp_connect_worker4(struct work_struct *work)
1668 struct socket *sock = transport->sock; 1681 struct socket *sock = transport->sock;
1669 int err, status = -EIO; 1682 int err, status = -EIO;
1670 1683
1671 if (xprt->shutdown || !xprt_bound(xprt)) 1684 if (xprt->shutdown)
1672 goto out; 1685 goto out;
1673 1686
1674 if (!sock) { 1687 if (!sock) {
@@ -1728,7 +1741,7 @@ static void xs_tcp_connect_worker6(struct work_struct *work)
1728 struct socket *sock = transport->sock; 1741 struct socket *sock = transport->sock;
1729 int err, status = -EIO; 1742 int err, status = -EIO;
1730 1743
1731 if (xprt->shutdown || !xprt_bound(xprt)) 1744 if (xprt->shutdown)
1732 goto out; 1745 goto out;
1733 1746
1734 if (!sock) { 1747 if (!sock) {